diff --git a/README.md b/README.md index 16f958d..ea3d4b3 100644 --- a/README.md +++ b/README.md @@ -133,6 +133,7 @@ Save 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms Options: --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step) --cache-map The map of actions source to container destination paths for the cache paths + --dockerfile The Dockerfile to use for the auto-discovery of cache-map. Default: 'Dockerfile' --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch' --skip-extraction Skip the extraction of the cache from the docker container --builder The name of the buildx builder. Default: 'default' diff --git a/action.yml b/action.yml index 2ec08d9..0553852 100644 --- a/action.yml +++ b/action.yml @@ -2,8 +2,10 @@ name: Inject/Extract Cache description: "Injects the cached data into the docker build(x|kit) process" inputs: cache-map: - required: true - description: "The map of actions source paths to container destination paths or mount arguments" + description: "The map of actions source paths to container destination paths or mount arguments. If not provided, the Dockerfile will be used to determine the cache paths." + dockerfile: + description: "The Dockerfile to use for the auto-discovery of cache-map. Default: `Dockerfile`" + default: "Dockerfile" cache-source: deprecationMessage: "Use `cache-map` instead" description: "Where the cache is stored in the calling workspace. Default: `cache`" diff --git a/dist/index.js b/dist/index.js index 2bc052d..7d2cfd2 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,4 +1,4 @@ -import * as $evV72$fs from "fs"; +import $evV72$fs, * as $evV72$fs1 from "fs"; import $evV72$fspromises from "fs/promises"; import $evV72$os, * as $evV72$os1 from "os"; import $evV72$path, * as $evV72$path1 from "path"; @@ -49,8 +49,8 @@ $9ef5aef4681a6fb1$var$isexe.sync = $9ef5aef4681a6fb1$var$sync; function $9ef5aef4681a6fb1$var$checkPathExt(path, options) { var pathext = options.pathExt !== undefined ? options.pathExt : process.env.PATHEXT; if (!pathext) return true; - pathext = pathext.split(";"); - if (pathext.indexOf("") !== -1) return true; + pathext = pathext.split(';'); + if (pathext.indexOf('') !== -1) return true; for(var i = 0; i < pathext.length; i++){ var p = pathext[i].toLowerCase(); if (p && path.substr(-p.length).toLowerCase() === p) return true; @@ -93,9 +93,9 @@ function $3cdc9f651a760b03$var$checkMode(stat, options) { var gid = stat.gid; var myUid = options.uid !== undefined ? options.uid : process.getuid && process.getuid(); var myGid = options.gid !== undefined ? options.gid : process.getgid && process.getgid(); - var u = parseInt("100", 8); - var g = parseInt("010", 8); - var o = parseInt("001", 8); + var u = parseInt('100', 8); + var g = parseInt('010', 8); + var o = parseInt('001', 8); var ug = u | g; var ret = mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0; return ret; @@ -113,7 +113,7 @@ function $ec42a3295e12ea98$var$toArr(any) { ]; } function $ec42a3295e12ea98$var$toVal(out, key, val, opts) { - var x, old = out[key], nxt = !!~opts.string.indexOf(key) ? val == null || val === true ? "" : String(val) : typeof val === "boolean" ? val : !!~opts.boolean.indexOf(key) ? val === "false" ? false : val === "true" || (out._.push((x = +val, x * 0 === 0) ? x : val), !!val) : (x = +val, x * 0 === 0) ? x : val; + var x, old = out[key], nxt = !!~opts.string.indexOf(key) ? val == null || val === true ? '' : String(val) : typeof val === 'boolean' ? val : !!~opts.boolean.indexOf(key) ? val === 'false' ? false : val === 'true' || (out._.push((x = +val, x * 0 === 0) ? x : val), !!val) : (x = +val, x * 0 === 0) ? x : val; out[key] = old == null ? nxt : Array.isArray(old) ? old.concat(nxt) : [ old, nxt @@ -155,7 +155,7 @@ function $ec42a3295e12ea98$export$2e2bcd8739ae039(args, opts) { const keys = strict ? Object.keys(opts.alias) : []; for(i = 0; i < len; i++){ arg = args[i]; - if (arg === "--") { + if (arg === '--') { out._ = out._.concat(args.slice(++i)); break; } @@ -163,7 +163,7 @@ function $ec42a3295e12ea98$export$2e2bcd8739ae039(args, opts) { if (arg.charCodeAt(j) !== 45) break; // "-" } if (j === 0) out._.push(arg); - else if (arg.substring(j, j + 3) === "no-") { + else if (arg.substring(j, j + 3) === 'no-') { name = arg.substring(j + 3); if (strict && !~keys.indexOf(name)) return opts.unknown(arg); out[name] = false; @@ -172,13 +172,13 @@ function $ec42a3295e12ea98$export$2e2bcd8739ae039(args, opts) { if (arg.charCodeAt(idx) === 61) break; // "=" } name = arg.substring(j, idx); - val = arg.substring(++idx) || i + 1 === len || ("" + args[i + 1]).charCodeAt(0) === 45 || args[++i]; + val = arg.substring(++idx) || i + 1 === len || ('' + args[i + 1]).charCodeAt(0) === 45 || args[++i]; arr = j === 2 ? [ name ] : name; for(idx = 0; idx < arr.length; idx++){ name = arr[idx]; - if (strict && !~keys.indexOf(name)) return opts.unknown("-".repeat(j) + name); + if (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name); $ec42a3295e12ea98$var$toVal(out, name, idx + 1 < arr.length || val, opts); } } @@ -194,6 +194,7 @@ function $ec42a3295e12ea98$export$2e2bcd8739ae039(args, opts) { } + var $bbb9dac42384d004$exports = {}; "use strict"; var $bbb9dac42384d004$var$__createBinding = $bbb9dac42384d004$exports && $bbb9dac42384d004$exports.__createBinding || (Object.create ? function(o, m, k, k2) { @@ -304,8 +305,8 @@ $1f87556d0f647bcd$exports.toCommandProperties = $1f87556d0f647bcd$exports.toComm * Sanitizes an input into a string so it can be passed into issueCommand safely * @param input input to sanitize into a string */ function $1f87556d0f647bcd$var$toCommandValue(input) { - if (input === null || input === undefined) return ""; - else if (typeof input === "string" || input instanceof String) return input; + if (input === null || input === undefined) return ''; + else if (typeof input === 'string' || input instanceof String) return input; return JSON.stringify(input); } $1f87556d0f647bcd$exports.toCommandValue = $1f87556d0f647bcd$var$toCommandValue; @@ -341,14 +342,14 @@ $1f87556d0f647bcd$exports.toCommandProperties = $1f87556d0f647bcd$var$toCommandP process.stdout.write(cmd.toString() + $6aa988ea1669fe85$var$os.EOL); } $6aa988ea1669fe85$exports.issueCommand = $6aa988ea1669fe85$var$issueCommand; -function $6aa988ea1669fe85$var$issue(name, message = "") { +function $6aa988ea1669fe85$var$issue(name, message = '') { $6aa988ea1669fe85$var$issueCommand(name, {}, message); } $6aa988ea1669fe85$exports.issue = $6aa988ea1669fe85$var$issue; -const $6aa988ea1669fe85$var$CMD_STRING = "::"; +const $6aa988ea1669fe85$var$CMD_STRING = '::'; class $6aa988ea1669fe85$var$Command { constructor(command, properties, message){ - if (!command) command = "missing.command"; + if (!command) command = 'missing.command'; this.command = command; this.properties = properties; this.message = message; @@ -356,13 +357,13 @@ class $6aa988ea1669fe85$var$Command { toString() { let cmdStr = $6aa988ea1669fe85$var$CMD_STRING + this.command; if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += " "; + cmdStr += ' '; let first = true; for(const key in this.properties)if (this.properties.hasOwnProperty(key)) { const val = this.properties[key]; if (val) { if (first) first = false; - else cmdStr += ","; + else cmdStr += ','; cmdStr += `${key}=${$6aa988ea1669fe85$var$escapeProperty(val)}`; } } @@ -372,10 +373,10 @@ class $6aa988ea1669fe85$var$Command { } } function $6aa988ea1669fe85$var$escapeData(s) { - return $1f87556d0f647bcd$exports.toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A"); + return $1f87556d0f647bcd$exports.toCommandValue(s).replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A'); } function $6aa988ea1669fe85$var$escapeProperty(s) { - return $1f87556d0f647bcd$exports.toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/:/g, "%3A").replace(/,/g, "%2C"); + return $1f87556d0f647bcd$exports.toCommandValue(s).replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A').replace(/:/g, '%3A').replace(/,/g, '%2C'); } @@ -417,7 +418,7 @@ Object.defineProperty($71d1c579b85cee7b$exports, "__esModule", { $71d1c579b85cee7b$exports.issueCommand = void 0; // We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ const $71d1c579b85cee7b$var$fs = $71d1c579b85cee7b$var$__importStar($evV72$fs); +/* eslint-disable @typescript-eslint/no-explicit-any */ const $71d1c579b85cee7b$var$fs = $71d1c579b85cee7b$var$__importStar($evV72$fs1); const $71d1c579b85cee7b$var$os = $71d1c579b85cee7b$var$__importStar($evV72$os1); @@ -426,7 +427,7 @@ function $71d1c579b85cee7b$var$issueCommand(command, message) { if (!filePath) throw new Error(`Unable to find environment variable for file command ${command}`); if (!$71d1c579b85cee7b$var$fs.existsSync(filePath)) throw new Error(`Missing file at path: ${filePath}`); $71d1c579b85cee7b$var$fs.appendFileSync(filePath, `${$1f87556d0f647bcd$exports.toCommandValue(message)}${$71d1c579b85cee7b$var$os.EOL}`, { - encoding: "utf8" + encoding: 'utf8' }); } $71d1c579b85cee7b$exports.issueCommand = $71d1c579b85cee7b$var$issueCommand; @@ -459,12 +460,12 @@ const $bbb9dac42384d004$var$path = $bbb9dac42384d004$var$__importStar($evV72$pat function $bbb9dac42384d004$var$exportVariable(name, val) { const convertedVal = $1f87556d0f647bcd$exports.toCommandValue(val); process.env[name] = convertedVal; - const filePath = process.env["GITHUB_ENV"] || ""; + const filePath = process.env['GITHUB_ENV'] || ''; if (filePath) { - const delimiter = "_GitHubActionsFileCommandDelimeter_"; + const delimiter = '_GitHubActionsFileCommandDelimeter_'; const commandValue = `${name}<<${delimiter}${$bbb9dac42384d004$var$os.EOL}${convertedVal}${$bbb9dac42384d004$var$os.EOL}${delimiter}`; - $71d1c579b85cee7b$exports.issueCommand("ENV", commandValue); - } else $6aa988ea1669fe85$exports.issueCommand("set-env", { + $71d1c579b85cee7b$exports.issueCommand('ENV', commandValue); + } else $6aa988ea1669fe85$exports.issueCommand('set-env', { name: name }, convertedVal); } @@ -473,17 +474,17 @@ $bbb9dac42384d004$exports.exportVariable = $bbb9dac42384d004$var$exportVariable; * Registers a secret which will get masked from logs * @param secret value of the secret */ function $bbb9dac42384d004$var$setSecret(secret) { - $6aa988ea1669fe85$exports.issueCommand("add-mask", {}, secret); + $6aa988ea1669fe85$exports.issueCommand('add-mask', {}, secret); } $bbb9dac42384d004$exports.setSecret = $bbb9dac42384d004$var$setSecret; /** * Prepends inputPath to the PATH (for this action and future actions) * @param inputPath */ function $bbb9dac42384d004$var$addPath(inputPath) { - const filePath = process.env["GITHUB_PATH"] || ""; - if (filePath) $71d1c579b85cee7b$exports.issueCommand("PATH", inputPath); - else $6aa988ea1669fe85$exports.issueCommand("add-path", {}, inputPath); - process.env["PATH"] = `${inputPath}${$bbb9dac42384d004$var$path.delimiter}${process.env["PATH"]}`; + const filePath = process.env['GITHUB_PATH'] || ''; + if (filePath) $71d1c579b85cee7b$exports.issueCommand('PATH', inputPath); + else $6aa988ea1669fe85$exports.issueCommand('add-path', {}, inputPath); + process.env['PATH'] = `${inputPath}${$bbb9dac42384d004$var$path.delimiter}${process.env['PATH']}`; } $bbb9dac42384d004$exports.addPath = $bbb9dac42384d004$var$addPath; /** @@ -495,7 +496,7 @@ $bbb9dac42384d004$exports.addPath = $bbb9dac42384d004$var$addPath; * @param options optional. See InputOptions. * @returns string */ function $bbb9dac42384d004$var$getInput(name, options) { - const val = process.env[`INPUT_${name.replace(/ /g, "_").toUpperCase()}`] || ""; + const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; if (options && options.required && !val) throw new Error(`Input required and not supplied: ${name}`); if (options && options.trimWhitespace === false) return val; return val.trim(); @@ -509,7 +510,7 @@ $bbb9dac42384d004$exports.getInput = $bbb9dac42384d004$var$getInput; * @returns string[] * */ function $bbb9dac42384d004$var$getMultilineInput(name, options) { - const inputs = $bbb9dac42384d004$var$getInput(name, options).split("\n").filter((x)=>x !== ""); + const inputs = $bbb9dac42384d004$var$getInput(name, options).split('\n').filter((x)=>x !== ''); return inputs; } $bbb9dac42384d004$exports.getMultilineInput = $bbb9dac42384d004$var$getMultilineInput; @@ -524,14 +525,14 @@ $bbb9dac42384d004$exports.getMultilineInput = $bbb9dac42384d004$var$getMultiline * @returns boolean */ function $bbb9dac42384d004$var$getBooleanInput(name, options) { const trueValue = [ - "true", - "True", - "TRUE" + 'true', + 'True', + 'TRUE' ]; const falseValue = [ - "false", - "False", - "FALSE" + 'false', + 'False', + 'FALSE' ]; const val = $bbb9dac42384d004$var$getInput(name, options); if (trueValue.includes(val)) return true; @@ -547,7 +548,7 @@ $bbb9dac42384d004$exports.getBooleanInput = $bbb9dac42384d004$var$getBooleanInpu */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function $bbb9dac42384d004$var$setOutput(name, value) { process.stdout.write($bbb9dac42384d004$var$os.EOL); - $6aa988ea1669fe85$exports.issueCommand("set-output", { + $6aa988ea1669fe85$exports.issueCommand('set-output', { name: name }, value); } @@ -557,7 +558,7 @@ $bbb9dac42384d004$exports.setOutput = $bbb9dac42384d004$var$setOutput; * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. * */ function $bbb9dac42384d004$var$setCommandEcho(enabled) { - $6aa988ea1669fe85$exports.issue("echo", enabled ? "on" : "off"); + $6aa988ea1669fe85$exports.issue('echo', enabled ? 'on' : 'off'); } $bbb9dac42384d004$exports.setCommandEcho = $bbb9dac42384d004$var$setCommandEcho; //----------------------------------------------------------------------- @@ -578,14 +579,14 @@ $bbb9dac42384d004$exports.setFailed = $bbb9dac42384d004$var$setFailed; /** * Gets whether Actions Step Debug is on or not */ function $bbb9dac42384d004$var$isDebug() { - return process.env["RUNNER_DEBUG"] === "1"; + return process.env['RUNNER_DEBUG'] === '1'; } $bbb9dac42384d004$exports.isDebug = $bbb9dac42384d004$var$isDebug; /** * Writes debug message to user log * @param message debug message */ function $bbb9dac42384d004$var$debug(message) { - $6aa988ea1669fe85$exports.issueCommand("debug", {}, message); + $6aa988ea1669fe85$exports.issueCommand('debug', {}, message); } $bbb9dac42384d004$exports.debug = $bbb9dac42384d004$var$debug; /** @@ -593,7 +594,7 @@ $bbb9dac42384d004$exports.debug = $bbb9dac42384d004$var$debug; * @param message error issue message. Errors will be converted to string via toString() * @param properties optional properties to add to the annotation. */ function $bbb9dac42384d004$var$error(message, properties = {}) { - $6aa988ea1669fe85$exports.issueCommand("error", $1f87556d0f647bcd$exports.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + $6aa988ea1669fe85$exports.issueCommand('error', $1f87556d0f647bcd$exports.toCommandProperties(properties), message instanceof Error ? message.toString() : message); } $bbb9dac42384d004$exports.error = $bbb9dac42384d004$var$error; /** @@ -601,7 +602,7 @@ $bbb9dac42384d004$exports.error = $bbb9dac42384d004$var$error; * @param message warning issue message. Errors will be converted to string via toString() * @param properties optional properties to add to the annotation. */ function $bbb9dac42384d004$var$warning(message, properties = {}) { - $6aa988ea1669fe85$exports.issueCommand("warning", $1f87556d0f647bcd$exports.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + $6aa988ea1669fe85$exports.issueCommand('warning', $1f87556d0f647bcd$exports.toCommandProperties(properties), message instanceof Error ? message.toString() : message); } $bbb9dac42384d004$exports.warning = $bbb9dac42384d004$var$warning; /** @@ -609,7 +610,7 @@ $bbb9dac42384d004$exports.warning = $bbb9dac42384d004$var$warning; * @param message notice issue message. Errors will be converted to string via toString() * @param properties optional properties to add to the annotation. */ function $bbb9dac42384d004$var$notice(message, properties = {}) { - $6aa988ea1669fe85$exports.issueCommand("notice", $1f87556d0f647bcd$exports.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + $6aa988ea1669fe85$exports.issueCommand('notice', $1f87556d0f647bcd$exports.toCommandProperties(properties), message instanceof Error ? message.toString() : message); } $bbb9dac42384d004$exports.notice = $bbb9dac42384d004$var$notice; /** @@ -626,13 +627,13 @@ $bbb9dac42384d004$exports.info = $bbb9dac42384d004$var$info; * * @param name The name of the output group */ function $bbb9dac42384d004$var$startGroup(name) { - $6aa988ea1669fe85$exports.issue("group", name); + $6aa988ea1669fe85$exports.issue('group', name); } $bbb9dac42384d004$exports.startGroup = $bbb9dac42384d004$var$startGroup; /** * End an output group. */ function $bbb9dac42384d004$var$endGroup() { - $6aa988ea1669fe85$exports.issue("endgroup"); + $6aa988ea1669fe85$exports.issue('endgroup'); } $bbb9dac42384d004$exports.endGroup = $bbb9dac42384d004$var$endGroup; /** @@ -665,7 +666,7 @@ $bbb9dac42384d004$exports.group = $bbb9dac42384d004$var$group; * @param value value to store. Non-string values will be converted to a string via JSON.stringify */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function $bbb9dac42384d004$var$saveState(name, value) { - $6aa988ea1669fe85$exports.issueCommand("save-state", { + $6aa988ea1669fe85$exports.issueCommand('save-state', { name: name }, value); } @@ -676,397 +677,6261 @@ $bbb9dac42384d004$exports.saveState = $bbb9dac42384d004$var$saveState; * @param name name of the state to get * @returns string */ function $bbb9dac42384d004$var$getState(name) { - return process.env[`STATE_${name}`] || ""; + return process.env[`STATE_${name}`] || ''; } $bbb9dac42384d004$exports.getState = $bbb9dac42384d004$var$getState; -function $76d06fcdc9bff1f5$export$77714ac6976d0316(args) { - const opts = (0, $ec42a3295e12ea98$export$2e2bcd8739ae039)(args, { - default: { - "cache-map": (0, $bbb9dac42384d004$exports.getInput)("cache-map") || "{}", - "scratch-dir": (0, $bbb9dac42384d004$exports.getInput)("scratch-dir") || "scratch", - "skip-extraction": ((0, $bbb9dac42384d004$exports.getInput)("skip-extraction") || "false") === "true", - "extract": process.env[`STATE_POST`] !== undefined, - "utility-image": (0, $bbb9dac42384d004$exports.getInput)("utility-image") || "ghcr.io/containerd/busybox:latest", - "builder": (0, $bbb9dac42384d004$exports.getInput)("builder") || "default", - "help": false - }, - string: [ - "cache-map", - "scratch-dir", - "cache-source", - "cache-target", - "utility-image", - "builder" - ], - boolean: [ - "skip-extraction", - "help", - "extract" - ], - alias: { - "help": [ - "h" - ] - } - }); - if (opts["cache-source"] && opts["cache-target"]) { - (0, $bbb9dac42384d004$exports.warning)("The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead."); - opts["cache-map"] = JSON.stringify({ - [opts["cache-source"]]: opts["cache-target"] - }); +var $54b0c2f7fc5ba86a$exports = {}; +"use strict"; +Object.defineProperty($54b0c2f7fc5ba86a$exports, "__esModule", { + value: true +}); +$54b0c2f7fc5ba86a$exports.DockerfileParser = $54b0c2f7fc5ba86a$exports.DefaultVariables = $54b0c2f7fc5ba86a$exports.Directive = $54b0c2f7fc5ba86a$exports.Keyword = $54b0c2f7fc5ba86a$exports.Workdir = $54b0c2f7fc5ba86a$exports.Volume = $54b0c2f7fc5ba86a$exports.User = $54b0c2f7fc5ba86a$exports.Stopsignal = $54b0c2f7fc5ba86a$exports.Shell = $54b0c2f7fc5ba86a$exports.Run = $54b0c2f7fc5ba86a$exports.PropertyInstruction = $54b0c2f7fc5ba86a$exports.Onbuild = $54b0c2f7fc5ba86a$exports.ModifiableInstruction = $54b0c2f7fc5ba86a$exports.Label = $54b0c2f7fc5ba86a$exports.JSONInstruction = $54b0c2f7fc5ba86a$exports.Heredoc = $54b0c2f7fc5ba86a$exports.Healthcheck = $54b0c2f7fc5ba86a$exports.From = $54b0c2f7fc5ba86a$exports.Env = $54b0c2f7fc5ba86a$exports.Entrypoint = $54b0c2f7fc5ba86a$exports.Copy = $54b0c2f7fc5ba86a$exports.Cmd = $54b0c2f7fc5ba86a$exports.Arg = $54b0c2f7fc5ba86a$exports.Add = $54b0c2f7fc5ba86a$exports.Variable = $54b0c2f7fc5ba86a$exports.Property = $54b0c2f7fc5ba86a$exports.ParserDirective = $54b0c2f7fc5ba86a$exports.Line = $54b0c2f7fc5ba86a$exports.Instruction = $54b0c2f7fc5ba86a$exports.Flag = $54b0c2f7fc5ba86a$exports.Comment = $54b0c2f7fc5ba86a$exports.JSONArgument = $54b0c2f7fc5ba86a$exports.Argument = void 0; +var $fd8464c2f2e17cdd$exports = {}; +"use strict"; +Object.defineProperty($fd8464c2f2e17cdd$exports, "__esModule", { + value: true +}); +$fd8464c2f2e17cdd$exports.Argument = void 0; +class $fd8464c2f2e17cdd$var$Argument { + constructor(value, range){ + this.value = value; + this.range = range; } - return opts; -} -function $76d06fcdc9bff1f5$export$34512e3b2db52a4e() { - console.log(`build-cache-dance [options] -Save 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms - -Options: - --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step) - --cache-map The map of actions source paths to container destination paths or mount arguments - --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch' - --skip-extraction Skip the extraction of the cache from the docker container - --utility-image The container image to use for injecting and extracting the cache. Default: 'ghcr.io/containerd/busybox:latest' - --builder The name of the buildx builder to use for the cache injection - --help Show this help -`); -} -function $76d06fcdc9bff1f5$export$8550a4d7282a21d0(opts) { - try { - return JSON.parse(opts["cache-map"]); - } catch (e) { - throw new Error(`Failed to parse cache map. Expected JSON, got:\n${opts["cache-map"]}\n${e}`); + toString() { + return this.value; } -} -function $76d06fcdc9bff1f5$export$febacabd0d01c81(cacheOptions) { - if (typeof cacheOptions === "string") // only the target path is provided - return cacheOptions; - else { - // object is provided - if ("target" in cacheOptions) return cacheOptions.target; - else throw new Error(`Expected the 'target' key in the cache options, got:\n${cacheOptions}`); + getRange() { + return this.range; } -} -function $76d06fcdc9bff1f5$export$6d2b3473b0986646(cacheOptions) { - if (typeof cacheOptions === "string") // only the target path is provided - return ""; - else { - // object is provided - if ("uid" in cacheOptions && cacheOptions.uid !== undefined) return cacheOptions.uid.toString(); - else return ""; + getValue() { + return this.value; } -} -function $76d06fcdc9bff1f5$export$4e7da3a92c2dad69(cacheOptions) { - if (typeof cacheOptions === "string") // only the target path is provided - return ""; - else { - // object is provided - if ("gid" in cacheOptions && cacheOptions.gid !== undefined) return cacheOptions.gid.toString(); - else return ""; + isAfter(position) { + if (this.range.end.line < position.line) return false; + return this.range.start.line > position.line ? true : this.range.start.character > position.character; } -} -function $76d06fcdc9bff1f5$export$238315f403b84074(cacheOptions) { - if (typeof cacheOptions === "string") // only the target path is provided - return `type=cache,target=${cacheOptions}`; - else { - // other options are provided - const otherOptions = Object.entries(cacheOptions).map(([key, value])=>`${key}=${value}`).join(","); - return `type=cache,${otherOptions}`; + isBefore(position) { + if (this.range.start.line < position.line) return true; + return this.range.end.line > position.line ? false : this.range.end.character < position.character; } } -function $76d06fcdc9bff1f5$export$932deacb99c42350(opts) { - return opts["builder"] == null || opts["builder"] == "" ? "default" : opts["builder"]; -} - - -var $03c48d50d9d7039f$exports = {}; -var $92de28abfb9027ac$exports = {}; -"use strict"; +$fd8464c2f2e17cdd$exports.Argument = $fd8464c2f2e17cdd$var$Argument; -var $9f07a96c8577f666$exports = {}; -"use strict"; -var $37f30101baa1381d$exports = {}; +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Argument", { + enumerable: true, + get: function() { + return $fd8464c2f2e17cdd$exports.Argument; + } +}); +var $4d211a562ff7ccb2$exports = {}; "use strict"; +Object.defineProperty($4d211a562ff7ccb2$exports, "__esModule", { + value: true +}); +$4d211a562ff7ccb2$exports.JSONArgument = void 0; -var $10bb1950eec72619$exports = {}; -const $10bb1950eec72619$var$isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys"; - -const $10bb1950eec72619$var$COLON = $10bb1950eec72619$var$isWindows ? ";" : ":"; -var $0b1af7ee1bc1c627$exports = {}; - -var $0b1af7ee1bc1c627$var$core; - - -if (process.platform === "win32" || $parcel$global.TESTING_WINDOWS) $0b1af7ee1bc1c627$var$core = (parcelRequire("dE8Bn")); -else $0b1af7ee1bc1c627$var$core = (parcelRequire("5dXTc")); -$0b1af7ee1bc1c627$exports = $0b1af7ee1bc1c627$var$isexe; -$0b1af7ee1bc1c627$var$isexe.sync = $0b1af7ee1bc1c627$var$sync; -function $0b1af7ee1bc1c627$var$isexe(path, options, cb) { - if (typeof options === "function") { - cb = options; - options = {}; +class $4d211a562ff7ccb2$var$JSONArgument extends $fd8464c2f2e17cdd$exports.Argument { + constructor(value, range, jsonRange){ + super(value, range); + this.jsonRange = jsonRange; } - if (!cb) { - if (typeof Promise !== "function") throw new TypeError("callback not provided"); - return new Promise(function(resolve, reject) { - $0b1af7ee1bc1c627$var$isexe(path, options || {}, function(er, is) { - if (er) reject(er); - else resolve(is); - }); - }); + getJSONRange() { + return this.jsonRange; } - $0b1af7ee1bc1c627$var$core(path, options || {}, function(er, is) { - // ignore EACCES because that just means we aren't allowed to run it - if (er) { - if (er.code === "EACCES" || options && options.ignoreErrors) { - er = null; - is = false; - } - } - cb(er, is); - }); -} -function $0b1af7ee1bc1c627$var$sync(path, options) { - // my kingdom for a filtered catch - try { - return $0b1af7ee1bc1c627$var$core.sync(path, options || {}); - } catch (er) { - if (options && options.ignoreErrors || er.code === "EACCES") return false; - else throw er; + getJSONValue() { + let value = super.getValue(); + value = value.substring(1, value.length - 1); + return value; } } +$4d211a562ff7ccb2$exports.JSONArgument = $4d211a562ff7ccb2$var$JSONArgument; -const $10bb1950eec72619$var$getNotFoundError = (cmd)=>Object.assign(new Error(`not found: ${cmd}`), { - code: "ENOENT" - }); -const $10bb1950eec72619$var$getPathInfo = (cmd, opt)=>{ - const colon = opt.colon || $10bb1950eec72619$var$COLON; - // If it has a slash, then we don't bother searching the pathenv. - // just check the file itself, and that's it. - const pathEnv = cmd.match(/\//) || $10bb1950eec72619$var$isWindows && cmd.match(/\\/) ? [ - "" - ] : [ - // windows always checks the cwd first - ...$10bb1950eec72619$var$isWindows ? [ - process.cwd() - ] : [], - ...(opt.path || process.env.PATH || /* istanbul ignore next: very unusual */ "").split(colon) - ]; - const pathExtExe = $10bb1950eec72619$var$isWindows ? opt.pathExt || process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM" : ""; - const pathExt = $10bb1950eec72619$var$isWindows ? pathExtExe.split(colon) : [ - "" - ]; - if ($10bb1950eec72619$var$isWindows) { - if (cmd.indexOf(".") !== -1 && pathExt[0] !== "") pathExt.unshift(""); - } - return { - pathEnv: pathEnv, - pathExt: pathExt, - pathExtExe: pathExtExe - }; -}; -const $10bb1950eec72619$var$which = (cmd, opt, cb)=>{ - if (typeof opt === "function") { - cb = opt; - opt = {}; - } - if (!opt) opt = {}; - const { pathEnv: pathEnv, pathExt: pathExt, pathExtExe: pathExtExe } = $10bb1950eec72619$var$getPathInfo(cmd, opt); - const found = []; - const step = (i)=>new Promise((resolve, reject)=>{ - if (i === pathEnv.length) return opt.all && found.length ? resolve(found) : reject($10bb1950eec72619$var$getNotFoundError(cmd)); - const ppRaw = pathEnv[i]; - const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; - const pCmd = $evV72$join(pathPart, cmd); - const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd; - resolve(subStep(p, i, 0)); - }); - const subStep = (p, i, ii)=>new Promise((resolve, reject)=>{ - if (ii === pathExt.length) return resolve(step(i + 1)); - const ext = pathExt[ii]; - $0b1af7ee1bc1c627$exports(p + ext, { - pathExt: pathExtExe - }, (er, is)=>{ - if (!er && is) { - if (opt.all) found.push(p + ext); - else return resolve(p + ext); - } - return resolve(subStep(p, i, ii + 1)); - }); - }); - return cb ? step(0).then((res)=>cb(null, res), cb) : step(0); -}; -const $10bb1950eec72619$var$whichSync = (cmd, opt)=>{ - opt = opt || {}; - const { pathEnv: pathEnv, pathExt: pathExt, pathExtExe: pathExtExe } = $10bb1950eec72619$var$getPathInfo(cmd, opt); - const found = []; - for(let i = 0; i < pathEnv.length; i++){ - const ppRaw = pathEnv[i]; - const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; - const pCmd = $evV72$join(pathPart, cmd); - const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd; - for(let j = 0; j < pathExt.length; j++){ - const cur = p + pathExt[j]; - try { - const is = $0b1af7ee1bc1c627$exports.sync(cur, { - pathExt: pathExtExe - }); - if (is) { - if (opt.all) found.push(cur); - else return cur; - } - } catch (ex) {} - } +Object.defineProperty($54b0c2f7fc5ba86a$exports, "JSONArgument", { + enumerable: true, + get: function() { + return $4d211a562ff7ccb2$exports.JSONArgument; } - if (opt.all && found.length) return found; - if (opt.nothrow) return null; - throw $10bb1950eec72619$var$getNotFoundError(cmd); -}; -$10bb1950eec72619$exports = $10bb1950eec72619$var$which; -$10bb1950eec72619$var$which.sync = $10bb1950eec72619$var$whichSync; - - -var $3487f7b8c16699fc$exports = {}; +}); +var $56b05761038f14db$exports = {}; "use strict"; -const $3487f7b8c16699fc$var$pathKey = (options = {})=>{ - const environment = options.env || process.env; - const platform = options.platform || process.platform; - if (platform !== "win32") return "PATH"; - return Object.keys(environment).reverse().find((key)=>key.toUpperCase() === "PATH") || "Path"; -}; -$3487f7b8c16699fc$exports = $3487f7b8c16699fc$var$pathKey; -// TODO: Remove this for the next major release -$3487f7b8c16699fc$exports.default = $3487f7b8c16699fc$var$pathKey; - - -function $37f30101baa1381d$var$resolveCommandAttempt(parsed, withoutPathExt) { - const env = parsed.options.env || process.env; - const cwd = process.cwd(); - const hasCustomCwd = parsed.options.cwd != null; - // Worker threads do not have process.chdir() - const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled; - // If a custom `cwd` was specified, we need to change the process cwd - // because `which` will do stat calls but does not support a custom cwd - if (shouldSwitchCwd) try { - process.chdir(parsed.options.cwd); - } catch (err) { - /* Empty */ } - let resolved; - try { - resolved = $10bb1950eec72619$exports.sync(parsed.command, { - path: env[$3487f7b8c16699fc$exports({ - env: env - })], - pathExt: withoutPathExt ? $evV72$delimiter : undefined - }); - } catch (e) { +Object.defineProperty($56b05761038f14db$exports, "__esModule", { + value: true +}); +$56b05761038f14db$exports.Comment = void 0; +var $06cc642bc3981461$exports = {}; +(function(factory) { + if (typeof $06cc642bc3981461$exports === "object") { + var v = factory(undefined, $06cc642bc3981461$exports); + if (v !== undefined) $06cc642bc3981461$exports = v; + } else if (typeof define === "function" && define.amd) define([ + "require", + "exports" + ], factory); +})(function(require1, exports1) { + /* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ 'use strict'; + Object.defineProperty(exports1, "__esModule", { + value: true + }); + exports1.TextDocument = exports1.EOL = exports1.WorkspaceFolder = exports1.InlineCompletionContext = exports1.SelectedCompletionInfo = exports1.InlineCompletionTriggerKind = exports1.InlineCompletionList = exports1.InlineCompletionItem = exports1.StringValue = exports1.InlayHint = exports1.InlayHintLabelPart = exports1.InlayHintKind = exports1.InlineValueContext = exports1.InlineValueEvaluatableExpression = exports1.InlineValueVariableLookup = exports1.InlineValueText = exports1.SemanticTokens = exports1.SemanticTokenModifiers = exports1.SemanticTokenTypes = exports1.SelectionRange = exports1.DocumentLink = exports1.FormattingOptions = exports1.CodeLens = exports1.CodeAction = exports1.CodeActionContext = exports1.CodeActionTriggerKind = exports1.CodeActionKind = exports1.DocumentSymbol = exports1.WorkspaceSymbol = exports1.SymbolInformation = exports1.SymbolTag = exports1.SymbolKind = exports1.DocumentHighlight = exports1.DocumentHighlightKind = exports1.SignatureInformation = exports1.ParameterInformation = exports1.Hover = exports1.MarkedString = exports1.CompletionList = exports1.CompletionItem = exports1.CompletionItemLabelDetails = exports1.InsertTextMode = exports1.InsertReplaceEdit = exports1.CompletionItemTag = exports1.InsertTextFormat = exports1.CompletionItemKind = exports1.MarkupContent = exports1.MarkupKind = exports1.TextDocumentItem = exports1.OptionalVersionedTextDocumentIdentifier = exports1.VersionedTextDocumentIdentifier = exports1.TextDocumentIdentifier = exports1.WorkspaceChange = exports1.WorkspaceEdit = exports1.DeleteFile = exports1.RenameFile = exports1.CreateFile = exports1.TextDocumentEdit = exports1.AnnotatedTextEdit = exports1.ChangeAnnotationIdentifier = exports1.ChangeAnnotation = exports1.TextEdit = exports1.Command = exports1.Diagnostic = exports1.CodeDescription = exports1.DiagnosticTag = exports1.DiagnosticSeverity = exports1.DiagnosticRelatedInformation = exports1.FoldingRange = exports1.FoldingRangeKind = exports1.ColorPresentation = exports1.ColorInformation = exports1.Color = exports1.LocationLink = exports1.Location = exports1.Range = exports1.Position = exports1.uinteger = exports1.integer = exports1.URI = exports1.DocumentUri = void 0; + var DocumentUri; + (function(DocumentUri) { + function is(value) { + return typeof value === 'string'; + } + DocumentUri.is = is; + })(DocumentUri || (exports1.DocumentUri = DocumentUri = {})); + var URI; + (function(URI) { + function is(value) { + return typeof value === 'string'; + } + URI.is = is; + })(URI || (exports1.URI = URI = {})); + var integer; + (function(integer) { + integer.MIN_VALUE = -2147483648; + integer.MAX_VALUE = 2147483647; + function is(value) { + return typeof value === 'number' && integer.MIN_VALUE <= value && value <= integer.MAX_VALUE; + } + integer.is = is; + })(integer || (exports1.integer = integer = {})); + var uinteger; + (function(uinteger) { + uinteger.MIN_VALUE = 0; + uinteger.MAX_VALUE = 2147483647; + function is(value) { + return typeof value === 'number' && uinteger.MIN_VALUE <= value && value <= uinteger.MAX_VALUE; + } + uinteger.is = is; + })(uinteger || (exports1.uinteger = uinteger = {})); + /** + * The Position namespace provides helper functions to work with + * {@link Position} literals. + */ var Position; + (function(Position) { + /** + * Creates a new Position literal from the given line and character. + * @param line The position's line. + * @param character The position's character. + */ function create(line, character) { + if (line === Number.MAX_VALUE) line = uinteger.MAX_VALUE; + if (character === Number.MAX_VALUE) character = uinteger.MAX_VALUE; + return { + line: line, + character: character + }; + } + Position.create = create; + /** + * Checks whether the given literal conforms to the {@link Position} interface. + */ function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character); + } + Position.is = is; + })(Position || (exports1.Position = Position = {})); + /** + * The Range namespace provides helper functions to work with + * {@link Range} literals. + */ var Range; + (function(Range) { + function create(one, two, three, four) { + if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) return { + start: Position.create(one, two), + end: Position.create(three, four) + }; + else if (Position.is(one) && Position.is(two)) return { + start: one, + end: two + }; + else throw new Error("Range#create called with invalid arguments[".concat(one, ", ").concat(two, ", ").concat(three, ", ").concat(four, "]")); + } + Range.create = create; + /** + * Checks whether the given literal conforms to the {@link Range} interface. + */ function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end); + } + Range.is = is; + })(Range || (exports1.Range = Range = {})); + /** + * The Location namespace provides helper functions to work with + * {@link Location} literals. + */ var Location; + (function(Location) { + /** + * Creates a Location literal. + * @param uri The location's uri. + * @param range The location's range. + */ function create(uri, range) { + return { + uri: uri, + range: range + }; + } + Location.create = create; + /** + * Checks whether the given literal conforms to the {@link Location} interface. + */ function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri)); + } + Location.is = is; + })(Location || (exports1.Location = Location = {})); + /** + * The LocationLink namespace provides helper functions to work with + * {@link LocationLink} literals. + */ var LocationLink; + (function(LocationLink) { + /** + * Creates a LocationLink literal. + * @param targetUri The definition's uri. + * @param targetRange The full range of the definition. + * @param targetSelectionRange The span of the symbol definition at the target. + * @param originSelectionRange The span of the symbol being defined in the originating source file. + */ function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) { + return { + targetUri: targetUri, + targetRange: targetRange, + targetSelectionRange: targetSelectionRange, + originSelectionRange: originSelectionRange + }; + } + LocationLink.create = create; + /** + * Checks whether the given literal conforms to the {@link LocationLink} interface. + */ function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri) && Range.is(candidate.targetSelectionRange) && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange)); + } + LocationLink.is = is; + })(LocationLink || (exports1.LocationLink = LocationLink = {})); + /** + * The Color namespace provides helper functions to work with + * {@link Color} literals. + */ var Color; + (function(Color) { + /** + * Creates a new Color literal. + */ function create(red, green, blue, alpha) { + return { + red: red, + green: green, + blue: blue, + alpha: alpha + }; + } + Color.create = create; + /** + * Checks whether the given literal conforms to the {@link Color} interface. + */ function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Is.numberRange(candidate.red, 0, 1) && Is.numberRange(candidate.green, 0, 1) && Is.numberRange(candidate.blue, 0, 1) && Is.numberRange(candidate.alpha, 0, 1); + } + Color.is = is; + })(Color || (exports1.Color = Color = {})); + /** + * The ColorInformation namespace provides helper functions to work with + * {@link ColorInformation} literals. + */ var ColorInformation; + (function(ColorInformation) { + /** + * Creates a new ColorInformation literal. + */ function create(range, color) { + return { + range: range, + color: color + }; + } + ColorInformation.create = create; + /** + * Checks whether the given literal conforms to the {@link ColorInformation} interface. + */ function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Range.is(candidate.range) && Color.is(candidate.color); + } + ColorInformation.is = is; + })(ColorInformation || (exports1.ColorInformation = ColorInformation = {})); + /** + * The Color namespace provides helper functions to work with + * {@link ColorPresentation} literals. + */ var ColorPresentation; + (function(ColorPresentation) { + /** + * Creates a new ColorInformation literal. + */ function create(label, textEdit, additionalTextEdits) { + return { + label: label, + textEdit: textEdit, + additionalTextEdits: additionalTextEdits + }; + } + ColorPresentation.create = create; + /** + * Checks whether the given literal conforms to the {@link ColorInformation} interface. + */ function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate)) && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is)); + } + ColorPresentation.is = is; + })(ColorPresentation || (exports1.ColorPresentation = ColorPresentation = {})); + /** + * A set of predefined range kinds. + */ var FoldingRangeKind; + (function(FoldingRangeKind) { + /** + * Folding range for a comment + */ FoldingRangeKind.Comment = 'comment'; + /** + * Folding range for an import or include + */ FoldingRangeKind.Imports = 'imports'; + /** + * Folding range for a region (e.g. `#region`) + */ FoldingRangeKind.Region = 'region'; + })(FoldingRangeKind || (exports1.FoldingRangeKind = FoldingRangeKind = {})); + /** + * The folding range namespace provides helper functions to work with + * {@link FoldingRange} literals. + */ var FoldingRange; + (function(FoldingRange) { + /** + * Creates a new FoldingRange literal. + */ function create(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) { + var result = { + startLine: startLine, + endLine: endLine + }; + if (Is.defined(startCharacter)) result.startCharacter = startCharacter; + if (Is.defined(endCharacter)) result.endCharacter = endCharacter; + if (Is.defined(kind)) result.kind = kind; + if (Is.defined(collapsedText)) result.collapsedText = collapsedText; + return result; + } + FoldingRange.create = create; + /** + * Checks whether the given literal conforms to the {@link FoldingRange} interface. + */ function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine) && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter)) && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter)) && (Is.undefined(candidate.kind) || Is.string(candidate.kind)); + } + FoldingRange.is = is; + })(FoldingRange || (exports1.FoldingRange = FoldingRange = {})); + /** + * The DiagnosticRelatedInformation namespace provides helper functions to work with + * {@link DiagnosticRelatedInformation} literals. + */ var DiagnosticRelatedInformation; + (function(DiagnosticRelatedInformation) { + /** + * Creates a new DiagnosticRelatedInformation literal. + */ function create(location, message) { + return { + location: location, + message: message + }; + } + DiagnosticRelatedInformation.create = create; + /** + * Checks whether the given literal conforms to the {@link DiagnosticRelatedInformation} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message); + } + DiagnosticRelatedInformation.is = is; + })(DiagnosticRelatedInformation || (exports1.DiagnosticRelatedInformation = DiagnosticRelatedInformation = {})); + /** + * The diagnostic's severity. + */ var DiagnosticSeverity; + (function(DiagnosticSeverity) { + /** + * Reports an error. + */ DiagnosticSeverity.Error = 1; + /** + * Reports a warning. + */ DiagnosticSeverity.Warning = 2; + /** + * Reports an information. + */ DiagnosticSeverity.Information = 3; + /** + * Reports a hint. + */ DiagnosticSeverity.Hint = 4; + })(DiagnosticSeverity || (exports1.DiagnosticSeverity = DiagnosticSeverity = {})); + /** + * The diagnostic tags. + * + * @since 3.15.0 + */ var DiagnosticTag; + (function(DiagnosticTag) { + /** + * Unused or unnecessary code. + * + * Clients are allowed to render diagnostics with this tag faded out instead of having + * an error squiggle. + */ DiagnosticTag.Unnecessary = 1; + /** + * Deprecated or obsolete code. + * + * Clients are allowed to rendered diagnostics with this tag strike through. + */ DiagnosticTag.Deprecated = 2; + })(DiagnosticTag || (exports1.DiagnosticTag = DiagnosticTag = {})); + /** + * The CodeDescription namespace provides functions to deal with descriptions for diagnostic codes. + * + * @since 3.16.0 + */ var CodeDescription; + (function(CodeDescription) { + function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Is.string(candidate.href); + } + CodeDescription.is = is; + })(CodeDescription || (exports1.CodeDescription = CodeDescription = {})); + /** + * The Diagnostic namespace provides helper functions to work with + * {@link Diagnostic} literals. + */ var Diagnostic; + (function(Diagnostic) { + /** + * Creates a new Diagnostic literal. + */ function create(range, message, severity, code, source, relatedInformation) { + var result = { + range: range, + message: message + }; + if (Is.defined(severity)) result.severity = severity; + if (Is.defined(code)) result.code = code; + if (Is.defined(source)) result.source = source; + if (Is.defined(relatedInformation)) result.relatedInformation = relatedInformation; + return result; + } + Diagnostic.create = create; + /** + * Checks whether the given literal conforms to the {@link Diagnostic} interface. + */ function is(value) { + var _a; + var candidate = value; + return Is.defined(candidate) && Range.is(candidate.range) && Is.string(candidate.message) && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) && (Is.undefined(candidate.codeDescription) || Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)) && (Is.string(candidate.source) || Is.undefined(candidate.source)) && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is)); + } + Diagnostic.is = is; + })(Diagnostic || (exports1.Diagnostic = Diagnostic = {})); + /** + * The Command namespace provides helper functions to work with + * {@link Command} literals. + */ var Command; + (function(Command) { + /** + * Creates a new Command literal. + */ function create(title, command) { + var args = []; + for(var _i = 2; _i < arguments.length; _i++)args[_i - 2] = arguments[_i]; + var result = { + title: title, + command: command + }; + if (Is.defined(args) && args.length > 0) result.arguments = args; + return result; + } + Command.create = create; + /** + * Checks whether the given literal conforms to the {@link Command} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command); + } + Command.is = is; + })(Command || (exports1.Command = Command = {})); + /** + * The TextEdit namespace provides helper function to create replace, + * insert and delete edits more easily. + */ var TextEdit; + (function(TextEdit) { + /** + * Creates a replace text edit. + * @param range The range of text to be replaced. + * @param newText The new text. + */ function replace(range, newText) { + return { + range: range, + newText: newText + }; + } + TextEdit.replace = replace; + /** + * Creates an insert text edit. + * @param position The position to insert the text at. + * @param newText The text to be inserted. + */ function insert(position, newText) { + return { + range: { + start: position, + end: position + }, + newText: newText + }; + } + TextEdit.insert = insert; + /** + * Creates a delete text edit. + * @param range The range of text to be deleted. + */ function del(range) { + return { + range: range, + newText: '' + }; + } + TextEdit.del = del; + function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range.is(candidate.range); + } + TextEdit.is = is; + })(TextEdit || (exports1.TextEdit = TextEdit = {})); + var ChangeAnnotation; + (function(ChangeAnnotation) { + function create(label, needsConfirmation, description) { + var result = { + label: label + }; + if (needsConfirmation !== undefined) result.needsConfirmation = needsConfirmation; + if (description !== undefined) result.description = description; + return result; + } + ChangeAnnotation.create = create; + function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === undefined) && (Is.string(candidate.description) || candidate.description === undefined); + } + ChangeAnnotation.is = is; + })(ChangeAnnotation || (exports1.ChangeAnnotation = ChangeAnnotation = {})); + var ChangeAnnotationIdentifier; + (function(ChangeAnnotationIdentifier) { + function is(value) { + var candidate = value; + return Is.string(candidate); + } + ChangeAnnotationIdentifier.is = is; + })(ChangeAnnotationIdentifier || (exports1.ChangeAnnotationIdentifier = ChangeAnnotationIdentifier = {})); + var AnnotatedTextEdit; + (function(AnnotatedTextEdit) { + /** + * Creates an annotated replace text edit. + * + * @param range The range of text to be replaced. + * @param newText The new text. + * @param annotation The annotation. + */ function replace(range, newText, annotation) { + return { + range: range, + newText: newText, + annotationId: annotation + }; + } + AnnotatedTextEdit.replace = replace; + /** + * Creates an annotated insert text edit. + * + * @param position The position to insert the text at. + * @param newText The text to be inserted. + * @param annotation The annotation. + */ function insert(position, newText, annotation) { + return { + range: { + start: position, + end: position + }, + newText: newText, + annotationId: annotation + }; + } + AnnotatedTextEdit.insert = insert; + /** + * Creates an annotated delete text edit. + * + * @param range The range of text to be deleted. + * @param annotation The annotation. + */ function del(range, annotation) { + return { + range: range, + newText: '', + annotationId: annotation + }; + } + AnnotatedTextEdit.del = del; + function is(value) { + var candidate = value; + return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + AnnotatedTextEdit.is = is; + })(AnnotatedTextEdit || (exports1.AnnotatedTextEdit = AnnotatedTextEdit = {})); + /** + * The TextDocumentEdit namespace provides helper function to create + * an edit that manipulates a text document. + */ var TextDocumentEdit; + (function(TextDocumentEdit) { + /** + * Creates a new `TextDocumentEdit` + */ function create(textDocument, edits) { + return { + textDocument: textDocument, + edits: edits + }; + } + TextDocumentEdit.create = create; + function is(value) { + var candidate = value; + return Is.defined(candidate) && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits); + } + TextDocumentEdit.is = is; + })(TextDocumentEdit || (exports1.TextDocumentEdit = TextDocumentEdit = {})); + var CreateFile; + (function(CreateFile) { + function create(uri, options, annotation) { + var result = { + kind: 'create', + uri: uri + }; + if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) result.options = options; + if (annotation !== undefined) result.annotationId = annotation; + return result; + } + CreateFile.create = create; + function is(value) { + var candidate = value; + return candidate && candidate.kind === 'create' && Is.string(candidate.uri) && (candidate.options === undefined || (candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + CreateFile.is = is; + })(CreateFile || (exports1.CreateFile = CreateFile = {})); + var RenameFile; + (function(RenameFile) { + function create(oldUri, newUri, options, annotation) { + var result = { + kind: 'rename', + oldUri: oldUri, + newUri: newUri + }; + if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) result.options = options; + if (annotation !== undefined) result.annotationId = annotation; + return result; + } + RenameFile.create = create; + function is(value) { + var candidate = value; + return candidate && candidate.kind === 'rename' && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === undefined || (candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + RenameFile.is = is; + })(RenameFile || (exports1.RenameFile = RenameFile = {})); + var DeleteFile; + (function(DeleteFile) { + function create(uri, options, annotation) { + var result = { + kind: 'delete', + uri: uri + }; + if (options !== undefined && (options.recursive !== undefined || options.ignoreIfNotExists !== undefined)) result.options = options; + if (annotation !== undefined) result.annotationId = annotation; + return result; + } + DeleteFile.create = create; + function is(value) { + var candidate = value; + return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) && (candidate.options === undefined || (candidate.options.recursive === undefined || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === undefined || Is.boolean(candidate.options.ignoreIfNotExists))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + DeleteFile.is = is; + })(DeleteFile || (exports1.DeleteFile = DeleteFile = {})); + var WorkspaceEdit; + (function(WorkspaceEdit) { + function is(value) { + var candidate = value; + return candidate && (candidate.changes !== undefined || candidate.documentChanges !== undefined) && (candidate.documentChanges === undefined || candidate.documentChanges.every(function(change) { + if (Is.string(change.kind)) return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change); + else return TextDocumentEdit.is(change); + })); + } + WorkspaceEdit.is = is; + })(WorkspaceEdit || (exports1.WorkspaceEdit = WorkspaceEdit = {})); + var TextEditChangeImpl = /** @class */ function() { + function TextEditChangeImpl(edits, changeAnnotations) { + this.edits = edits; + this.changeAnnotations = changeAnnotations; + } + TextEditChangeImpl.prototype.insert = function(position, newText, annotation) { + var edit; + var id; + if (annotation === undefined) edit = TextEdit.insert(position, newText); + else if (ChangeAnnotationIdentifier.is(annotation)) { + id = annotation; + edit = AnnotatedTextEdit.insert(position, newText, annotation); + } else { + this.assertChangeAnnotations(this.changeAnnotations); + id = this.changeAnnotations.manage(annotation); + edit = AnnotatedTextEdit.insert(position, newText, id); + } + this.edits.push(edit); + if (id !== undefined) return id; + }; + TextEditChangeImpl.prototype.replace = function(range, newText, annotation) { + var edit; + var id; + if (annotation === undefined) edit = TextEdit.replace(range, newText); + else if (ChangeAnnotationIdentifier.is(annotation)) { + id = annotation; + edit = AnnotatedTextEdit.replace(range, newText, annotation); + } else { + this.assertChangeAnnotations(this.changeAnnotations); + id = this.changeAnnotations.manage(annotation); + edit = AnnotatedTextEdit.replace(range, newText, id); + } + this.edits.push(edit); + if (id !== undefined) return id; + }; + TextEditChangeImpl.prototype.delete = function(range, annotation) { + var edit; + var id; + if (annotation === undefined) edit = TextEdit.del(range); + else if (ChangeAnnotationIdentifier.is(annotation)) { + id = annotation; + edit = AnnotatedTextEdit.del(range, annotation); + } else { + this.assertChangeAnnotations(this.changeAnnotations); + id = this.changeAnnotations.manage(annotation); + edit = AnnotatedTextEdit.del(range, id); + } + this.edits.push(edit); + if (id !== undefined) return id; + }; + TextEditChangeImpl.prototype.add = function(edit) { + this.edits.push(edit); + }; + TextEditChangeImpl.prototype.all = function() { + return this.edits; + }; + TextEditChangeImpl.prototype.clear = function() { + this.edits.splice(0, this.edits.length); + }; + TextEditChangeImpl.prototype.assertChangeAnnotations = function(value) { + if (value === undefined) throw new Error("Text edit change is not configured to manage change annotations."); + }; + return TextEditChangeImpl; + }(); + /** + * A helper class + */ var ChangeAnnotations = /** @class */ function() { + function ChangeAnnotations(annotations) { + this._annotations = annotations === undefined ? Object.create(null) : annotations; + this._counter = 0; + this._size = 0; + } + ChangeAnnotations.prototype.all = function() { + return this._annotations; + }; + Object.defineProperty(ChangeAnnotations.prototype, "size", { + get: function() { + return this._size; + }, + enumerable: false, + configurable: true + }); + ChangeAnnotations.prototype.manage = function(idOrAnnotation, annotation) { + var id; + if (ChangeAnnotationIdentifier.is(idOrAnnotation)) id = idOrAnnotation; + else { + id = this.nextId(); + annotation = idOrAnnotation; + } + if (this._annotations[id] !== undefined) throw new Error("Id ".concat(id, " is already in use.")); + if (annotation === undefined) throw new Error("No annotation provided for id ".concat(id)); + this._annotations[id] = annotation; + this._size++; + return id; + }; + ChangeAnnotations.prototype.nextId = function() { + this._counter++; + return this._counter.toString(); + }; + return ChangeAnnotations; + }(); + /** + * A workspace change helps constructing changes to a workspace. + */ var WorkspaceChange = /** @class */ function() { + function WorkspaceChange(workspaceEdit) { + var _this = this; + this._textEditChanges = Object.create(null); + if (workspaceEdit !== undefined) { + this._workspaceEdit = workspaceEdit; + if (workspaceEdit.documentChanges) { + this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations); + workspaceEdit.changeAnnotations = this._changeAnnotations.all(); + workspaceEdit.documentChanges.forEach(function(change) { + if (TextDocumentEdit.is(change)) { + var textEditChange = new TextEditChangeImpl(change.edits, _this._changeAnnotations); + _this._textEditChanges[change.textDocument.uri] = textEditChange; + } + }); + } else if (workspaceEdit.changes) Object.keys(workspaceEdit.changes).forEach(function(key) { + var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]); + _this._textEditChanges[key] = textEditChange; + }); + } else this._workspaceEdit = {}; + } + Object.defineProperty(WorkspaceChange.prototype, "edit", { + /** + * Returns the underlying {@link WorkspaceEdit} literal + * use to be returned from a workspace edit operation like rename. + */ get: function() { + this.initDocumentChanges(); + if (this._changeAnnotations !== undefined) { + if (this._changeAnnotations.size === 0) this._workspaceEdit.changeAnnotations = undefined; + else this._workspaceEdit.changeAnnotations = this._changeAnnotations.all(); + } + return this._workspaceEdit; + }, + enumerable: false, + configurable: true + }); + WorkspaceChange.prototype.getTextEditChange = function(key) { + if (OptionalVersionedTextDocumentIdentifier.is(key)) { + this.initDocumentChanges(); + if (this._workspaceEdit.documentChanges === undefined) throw new Error('Workspace edit is not configured for document changes.'); + var textDocument = { + uri: key.uri, + version: key.version + }; + var result = this._textEditChanges[textDocument.uri]; + if (!result) { + var edits = []; + var textDocumentEdit = { + textDocument: textDocument, + edits: edits + }; + this._workspaceEdit.documentChanges.push(textDocumentEdit); + result = new TextEditChangeImpl(edits, this._changeAnnotations); + this._textEditChanges[textDocument.uri] = result; + } + return result; + } else { + this.initChanges(); + if (this._workspaceEdit.changes === undefined) throw new Error('Workspace edit is not configured for normal text edit changes.'); + var result = this._textEditChanges[key]; + if (!result) { + var edits = []; + this._workspaceEdit.changes[key] = edits; + result = new TextEditChangeImpl(edits); + this._textEditChanges[key] = result; + } + return result; + } + }; + WorkspaceChange.prototype.initDocumentChanges = function() { + if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) { + this._changeAnnotations = new ChangeAnnotations(); + this._workspaceEdit.documentChanges = []; + this._workspaceEdit.changeAnnotations = this._changeAnnotations.all(); + } + }; + WorkspaceChange.prototype.initChanges = function() { + if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) this._workspaceEdit.changes = Object.create(null); + }; + WorkspaceChange.prototype.createFile = function(uri, optionsOrAnnotation, options) { + this.initDocumentChanges(); + if (this._workspaceEdit.documentChanges === undefined) throw new Error('Workspace edit is not configured for document changes.'); + var annotation; + if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) annotation = optionsOrAnnotation; + else options = optionsOrAnnotation; + var operation; + var id; + if (annotation === undefined) operation = CreateFile.create(uri, options); + else { + id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation); + operation = CreateFile.create(uri, options, id); + } + this._workspaceEdit.documentChanges.push(operation); + if (id !== undefined) return id; + }; + WorkspaceChange.prototype.renameFile = function(oldUri, newUri, optionsOrAnnotation, options) { + this.initDocumentChanges(); + if (this._workspaceEdit.documentChanges === undefined) throw new Error('Workspace edit is not configured for document changes.'); + var annotation; + if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) annotation = optionsOrAnnotation; + else options = optionsOrAnnotation; + var operation; + var id; + if (annotation === undefined) operation = RenameFile.create(oldUri, newUri, options); + else { + id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation); + operation = RenameFile.create(oldUri, newUri, options, id); + } + this._workspaceEdit.documentChanges.push(operation); + if (id !== undefined) return id; + }; + WorkspaceChange.prototype.deleteFile = function(uri, optionsOrAnnotation, options) { + this.initDocumentChanges(); + if (this._workspaceEdit.documentChanges === undefined) throw new Error('Workspace edit is not configured for document changes.'); + var annotation; + if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) annotation = optionsOrAnnotation; + else options = optionsOrAnnotation; + var operation; + var id; + if (annotation === undefined) operation = DeleteFile.create(uri, options); + else { + id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation); + operation = DeleteFile.create(uri, options, id); + } + this._workspaceEdit.documentChanges.push(operation); + if (id !== undefined) return id; + }; + return WorkspaceChange; + }(); + exports1.WorkspaceChange = WorkspaceChange; + /** + * The TextDocumentIdentifier namespace provides helper functions to work with + * {@link TextDocumentIdentifier} literals. + */ var TextDocumentIdentifier; + (function(TextDocumentIdentifier) { + /** + * Creates a new TextDocumentIdentifier literal. + * @param uri The document's uri. + */ function create(uri) { + return { + uri: uri + }; + } + TextDocumentIdentifier.create = create; + /** + * Checks whether the given literal conforms to the {@link TextDocumentIdentifier} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri); + } + TextDocumentIdentifier.is = is; + })(TextDocumentIdentifier || (exports1.TextDocumentIdentifier = TextDocumentIdentifier = {})); + /** + * The VersionedTextDocumentIdentifier namespace provides helper functions to work with + * {@link VersionedTextDocumentIdentifier} literals. + */ var VersionedTextDocumentIdentifier; + (function(VersionedTextDocumentIdentifier) { + /** + * Creates a new VersionedTextDocumentIdentifier literal. + * @param uri The document's uri. + * @param version The document's version. + */ function create(uri, version) { + return { + uri: uri, + version: version + }; + } + VersionedTextDocumentIdentifier.create = create; + /** + * Checks whether the given literal conforms to the {@link VersionedTextDocumentIdentifier} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version); + } + VersionedTextDocumentIdentifier.is = is; + })(VersionedTextDocumentIdentifier || (exports1.VersionedTextDocumentIdentifier = VersionedTextDocumentIdentifier = {})); + /** + * The OptionalVersionedTextDocumentIdentifier namespace provides helper functions to work with + * {@link OptionalVersionedTextDocumentIdentifier} literals. + */ var OptionalVersionedTextDocumentIdentifier; + (function(OptionalVersionedTextDocumentIdentifier) { + /** + * Creates a new OptionalVersionedTextDocumentIdentifier literal. + * @param uri The document's uri. + * @param version The document's version. + */ function create(uri, version) { + return { + uri: uri, + version: version + }; + } + OptionalVersionedTextDocumentIdentifier.create = create; + /** + * Checks whether the given literal conforms to the {@link OptionalVersionedTextDocumentIdentifier} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version)); + } + OptionalVersionedTextDocumentIdentifier.is = is; + })(OptionalVersionedTextDocumentIdentifier || (exports1.OptionalVersionedTextDocumentIdentifier = OptionalVersionedTextDocumentIdentifier = {})); + /** + * The TextDocumentItem namespace provides helper functions to work with + * {@link TextDocumentItem} literals. + */ var TextDocumentItem; + (function(TextDocumentItem) { + /** + * Creates a new TextDocumentItem literal. + * @param uri The document's uri. + * @param languageId The document's language identifier. + * @param version The document's version number. + * @param text The document's text. + */ function create(uri, languageId, version, text) { + return { + uri: uri, + languageId: languageId, + version: version, + text: text + }; + } + TextDocumentItem.create = create; + /** + * Checks whether the given literal conforms to the {@link TextDocumentItem} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text); + } + TextDocumentItem.is = is; + })(TextDocumentItem || (exports1.TextDocumentItem = TextDocumentItem = {})); + /** + * Describes the content type that a client supports in various + * result literals like `Hover`, `ParameterInfo` or `CompletionItem`. + * + * Please note that `MarkupKinds` must not start with a `$`. This kinds + * are reserved for internal usage. + */ var MarkupKind; + (function(MarkupKind) { + /** + * Plain text is supported as a content format + */ MarkupKind.PlainText = 'plaintext'; + /** + * Markdown is supported as a content format + */ MarkupKind.Markdown = 'markdown'; + /** + * Checks whether the given value is a value of the {@link MarkupKind} type. + */ function is(value) { + var candidate = value; + return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown; + } + MarkupKind.is = is; + })(MarkupKind || (exports1.MarkupKind = MarkupKind = {})); + var MarkupContent; + (function(MarkupContent) { + /** + * Checks whether the given value conforms to the {@link MarkupContent} interface. + */ function is(value) { + var candidate = value; + return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value); + } + MarkupContent.is = is; + })(MarkupContent || (exports1.MarkupContent = MarkupContent = {})); + /** + * The kind of a completion entry. + */ var CompletionItemKind; + (function(CompletionItemKind) { + CompletionItemKind.Text = 1; + CompletionItemKind.Method = 2; + CompletionItemKind.Function = 3; + CompletionItemKind.Constructor = 4; + CompletionItemKind.Field = 5; + CompletionItemKind.Variable = 6; + CompletionItemKind.Class = 7; + CompletionItemKind.Interface = 8; + CompletionItemKind.Module = 9; + CompletionItemKind.Property = 10; + CompletionItemKind.Unit = 11; + CompletionItemKind.Value = 12; + CompletionItemKind.Enum = 13; + CompletionItemKind.Keyword = 14; + CompletionItemKind.Snippet = 15; + CompletionItemKind.Color = 16; + CompletionItemKind.File = 17; + CompletionItemKind.Reference = 18; + CompletionItemKind.Folder = 19; + CompletionItemKind.EnumMember = 20; + CompletionItemKind.Constant = 21; + CompletionItemKind.Struct = 22; + CompletionItemKind.Event = 23; + CompletionItemKind.Operator = 24; + CompletionItemKind.TypeParameter = 25; + })(CompletionItemKind || (exports1.CompletionItemKind = CompletionItemKind = {})); + /** + * Defines whether the insert text in a completion item should be interpreted as + * plain text or a snippet. + */ var InsertTextFormat; + (function(InsertTextFormat) { + /** + * The primary text to be inserted is treated as a plain string. + */ InsertTextFormat.PlainText = 1; + /** + * The primary text to be inserted is treated as a snippet. + * + * A snippet can define tab stops and placeholders with `$1`, `$2` + * and `${3:foo}`. `$0` defines the final tab stop, it defaults to + * the end of the snippet. Placeholders with equal identifiers are linked, + * that is typing in one will update others too. + * + * See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax + */ InsertTextFormat.Snippet = 2; + })(InsertTextFormat || (exports1.InsertTextFormat = InsertTextFormat = {})); + /** + * Completion item tags are extra annotations that tweak the rendering of a completion + * item. + * + * @since 3.15.0 + */ var CompletionItemTag; + (function(CompletionItemTag) { + /** + * Render a completion as obsolete, usually using a strike-out. + */ CompletionItemTag.Deprecated = 1; + })(CompletionItemTag || (exports1.CompletionItemTag = CompletionItemTag = {})); + /** + * The InsertReplaceEdit namespace provides functions to deal with insert / replace edits. + * + * @since 3.16.0 + */ var InsertReplaceEdit; + (function(InsertReplaceEdit) { + /** + * Creates a new insert / replace edit + */ function create(newText, insert, replace) { + return { + newText: newText, + insert: insert, + replace: replace + }; + } + InsertReplaceEdit.create = create; + /** + * Checks whether the given literal conforms to the {@link InsertReplaceEdit} interface. + */ function is(value) { + var candidate = value; + return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace); + } + InsertReplaceEdit.is = is; + })(InsertReplaceEdit || (exports1.InsertReplaceEdit = InsertReplaceEdit = {})); + /** + * How whitespace and indentation is handled during completion + * item insertion. + * + * @since 3.16.0 + */ var InsertTextMode; + (function(InsertTextMode) { + /** + * The insertion or replace strings is taken as it is. If the + * value is multi line the lines below the cursor will be + * inserted using the indentation defined in the string value. + * The client will not apply any kind of adjustments to the + * string. + */ InsertTextMode.asIs = 1; + /** + * The editor adjusts leading whitespace of new lines so that + * they match the indentation up to the cursor of the line for + * which the item is accepted. + * + * Consider a line like this: <2tabs><3tabs>foo. Accepting a + * multi line completion item is indented using 2 tabs and all + * following lines inserted will be indented using 2 tabs as well. + */ InsertTextMode.adjustIndentation = 2; + })(InsertTextMode || (exports1.InsertTextMode = InsertTextMode = {})); + var CompletionItemLabelDetails; + (function(CompletionItemLabelDetails) { + function is(value) { + var candidate = value; + return candidate && (Is.string(candidate.detail) || candidate.detail === undefined) && (Is.string(candidate.description) || candidate.description === undefined); + } + CompletionItemLabelDetails.is = is; + })(CompletionItemLabelDetails || (exports1.CompletionItemLabelDetails = CompletionItemLabelDetails = {})); + /** + * The CompletionItem namespace provides functions to deal with + * completion items. + */ var CompletionItem; + (function(CompletionItem) { + /** + * Create a completion item and seed it with a label. + * @param label The completion item's label + */ function create(label) { + return { + label: label + }; + } + CompletionItem.create = create; + })(CompletionItem || (exports1.CompletionItem = CompletionItem = {})); + /** + * The CompletionList namespace provides functions to deal with + * completion lists. + */ var CompletionList; + (function(CompletionList) { + /** + * Creates a new completion list. + * + * @param items The completion items. + * @param isIncomplete The list is not complete. + */ function create(items, isIncomplete) { + return { + items: items ? items : [], + isIncomplete: !!isIncomplete + }; + } + CompletionList.create = create; + })(CompletionList || (exports1.CompletionList = CompletionList = {})); + var MarkedString; + (function(MarkedString) { + /** + * Creates a marked string from plain text. + * + * @param plainText The plain text. + */ function fromPlainText(plainText) { + return plainText.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash + } + MarkedString.fromPlainText = fromPlainText; + /** + * Checks whether the given value conforms to the {@link MarkedString} type. + */ function is(value) { + var candidate = value; + return Is.string(candidate) || Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value); + } + MarkedString.is = is; + })(MarkedString || (exports1.MarkedString = MarkedString = {})); + var Hover; + (function(Hover) { + /** + * Checks whether the given value conforms to the {@link Hover} interface. + */ function is(value) { + var candidate = value; + return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) || MarkedString.is(candidate.contents) || Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === undefined || Range.is(value.range)); + } + Hover.is = is; + })(Hover || (exports1.Hover = Hover = {})); + /** + * The ParameterInformation namespace provides helper functions to work with + * {@link ParameterInformation} literals. + */ var ParameterInformation; + (function(ParameterInformation) { + /** + * Creates a new parameter information literal. + * + * @param label A label string. + * @param documentation A doc string. + */ function create(label, documentation) { + return documentation ? { + label: label, + documentation: documentation + } : { + label: label + }; + } + ParameterInformation.create = create; + })(ParameterInformation || (exports1.ParameterInformation = ParameterInformation = {})); + /** + * The SignatureInformation namespace provides helper functions to work with + * {@link SignatureInformation} literals. + */ var SignatureInformation; + (function(SignatureInformation) { + function create(label, documentation) { + var parameters = []; + for(var _i = 2; _i < arguments.length; _i++)parameters[_i - 2] = arguments[_i]; + var result = { + label: label + }; + if (Is.defined(documentation)) result.documentation = documentation; + if (Is.defined(parameters)) result.parameters = parameters; + else result.parameters = []; + return result; + } + SignatureInformation.create = create; + })(SignatureInformation || (exports1.SignatureInformation = SignatureInformation = {})); + /** + * A document highlight kind. + */ var DocumentHighlightKind; + (function(DocumentHighlightKind) { + /** + * A textual occurrence. + */ DocumentHighlightKind.Text = 1; + /** + * Read-access of a symbol, like reading a variable. + */ DocumentHighlightKind.Read = 2; + /** + * Write-access of a symbol, like writing to a variable. + */ DocumentHighlightKind.Write = 3; + })(DocumentHighlightKind || (exports1.DocumentHighlightKind = DocumentHighlightKind = {})); + /** + * DocumentHighlight namespace to provide helper functions to work with + * {@link DocumentHighlight} literals. + */ var DocumentHighlight; + (function(DocumentHighlight) { + /** + * Create a DocumentHighlight object. + * @param range The range the highlight applies to. + * @param kind The highlight kind + */ function create(range, kind) { + var result = { + range: range + }; + if (Is.number(kind)) result.kind = kind; + return result; + } + DocumentHighlight.create = create; + })(DocumentHighlight || (exports1.DocumentHighlight = DocumentHighlight = {})); + /** + * A symbol kind. + */ var SymbolKind; + (function(SymbolKind) { + SymbolKind.File = 1; + SymbolKind.Module = 2; + SymbolKind.Namespace = 3; + SymbolKind.Package = 4; + SymbolKind.Class = 5; + SymbolKind.Method = 6; + SymbolKind.Property = 7; + SymbolKind.Field = 8; + SymbolKind.Constructor = 9; + SymbolKind.Enum = 10; + SymbolKind.Interface = 11; + SymbolKind.Function = 12; + SymbolKind.Variable = 13; + SymbolKind.Constant = 14; + SymbolKind.String = 15; + SymbolKind.Number = 16; + SymbolKind.Boolean = 17; + SymbolKind.Array = 18; + SymbolKind.Object = 19; + SymbolKind.Key = 20; + SymbolKind.Null = 21; + SymbolKind.EnumMember = 22; + SymbolKind.Struct = 23; + SymbolKind.Event = 24; + SymbolKind.Operator = 25; + SymbolKind.TypeParameter = 26; + })(SymbolKind || (exports1.SymbolKind = SymbolKind = {})); + /** + * Symbol tags are extra annotations that tweak the rendering of a symbol. + * + * @since 3.16 + */ var SymbolTag; + (function(SymbolTag) { + /** + * Render a symbol as obsolete, usually using a strike-out. + */ SymbolTag.Deprecated = 1; + })(SymbolTag || (exports1.SymbolTag = SymbolTag = {})); + var SymbolInformation; + (function(SymbolInformation) { + /** + * Creates a new symbol information literal. + * + * @param name The name of the symbol. + * @param kind The kind of the symbol. + * @param range The range of the location of the symbol. + * @param uri The resource of the location of symbol. + * @param containerName The name of the symbol containing the symbol. + */ function create(name, kind, range, uri, containerName) { + var result = { + name: name, + kind: kind, + location: { + uri: uri, + range: range + } + }; + if (containerName) result.containerName = containerName; + return result; + } + SymbolInformation.create = create; + })(SymbolInformation || (exports1.SymbolInformation = SymbolInformation = {})); + var WorkspaceSymbol; + (function(WorkspaceSymbol) { + /** + * Create a new workspace symbol. + * + * @param name The name of the symbol. + * @param kind The kind of the symbol. + * @param uri The resource of the location of the symbol. + * @param range An options range of the location. + * @returns A WorkspaceSymbol. + */ function create(name, kind, uri, range) { + return range !== undefined ? { + name: name, + kind: kind, + location: { + uri: uri, + range: range + } + } : { + name: name, + kind: kind, + location: { + uri: uri + } + }; + } + WorkspaceSymbol.create = create; + })(WorkspaceSymbol || (exports1.WorkspaceSymbol = WorkspaceSymbol = {})); + var DocumentSymbol; + (function(DocumentSymbol) { + /** + * Creates a new symbol information literal. + * + * @param name The name of the symbol. + * @param detail The detail of the symbol. + * @param kind The kind of the symbol. + * @param range The range of the symbol. + * @param selectionRange The selectionRange of the symbol. + * @param children Children of the symbol. + */ function create(name, detail, kind, range, selectionRange, children) { + var result = { + name: name, + detail: detail, + kind: kind, + range: range, + selectionRange: selectionRange + }; + if (children !== undefined) result.children = children; + return result; + } + DocumentSymbol.create = create; + /** + * Checks whether the given literal conforms to the {@link DocumentSymbol} interface. + */ function is(value) { + var candidate = value; + return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range.is(candidate.range) && Range.is(candidate.selectionRange) && (candidate.detail === undefined || Is.string(candidate.detail)) && (candidate.deprecated === undefined || Is.boolean(candidate.deprecated)) && (candidate.children === undefined || Array.isArray(candidate.children)) && (candidate.tags === undefined || Array.isArray(candidate.tags)); + } + DocumentSymbol.is = is; + })(DocumentSymbol || (exports1.DocumentSymbol = DocumentSymbol = {})); + /** + * A set of predefined code action kinds + */ var CodeActionKind; + (function(CodeActionKind) { + /** + * Empty kind. + */ CodeActionKind.Empty = ''; + /** + * Base kind for quickfix actions: 'quickfix' + */ CodeActionKind.QuickFix = 'quickfix'; + /** + * Base kind for refactoring actions: 'refactor' + */ CodeActionKind.Refactor = 'refactor'; + /** + * Base kind for refactoring extraction actions: 'refactor.extract' + * + * Example extract actions: + * + * - Extract method + * - Extract function + * - Extract variable + * - Extract interface from class + * - ... + */ CodeActionKind.RefactorExtract = 'refactor.extract'; + /** + * Base kind for refactoring inline actions: 'refactor.inline' + * + * Example inline actions: + * + * - Inline function + * - Inline variable + * - Inline constant + * - ... + */ CodeActionKind.RefactorInline = 'refactor.inline'; + /** + * Base kind for refactoring rewrite actions: 'refactor.rewrite' + * + * Example rewrite actions: + * + * - Convert JavaScript function to class + * - Add or remove parameter + * - Encapsulate field + * - Make method static + * - Move method to base class + * - ... + */ CodeActionKind.RefactorRewrite = 'refactor.rewrite'; + /** + * Base kind for source actions: `source` + * + * Source code actions apply to the entire file. + */ CodeActionKind.Source = 'source'; + /** + * Base kind for an organize imports source action: `source.organizeImports` + */ CodeActionKind.SourceOrganizeImports = 'source.organizeImports'; + /** + * Base kind for auto-fix source actions: `source.fixAll`. + * + * Fix all actions automatically fix errors that have a clear fix that do not require user input. + * They should not suppress errors or perform unsafe fixes such as generating new types or classes. + * + * @since 3.15.0 + */ CodeActionKind.SourceFixAll = 'source.fixAll'; + })(CodeActionKind || (exports1.CodeActionKind = CodeActionKind = {})); + /** + * The reason why code actions were requested. + * + * @since 3.17.0 + */ var CodeActionTriggerKind; + (function(CodeActionTriggerKind) { + /** + * Code actions were explicitly requested by the user or by an extension. + */ CodeActionTriggerKind.Invoked = 1; + /** + * Code actions were requested automatically. + * + * This typically happens when current selection in a file changes, but can + * also be triggered when file content changes. + */ CodeActionTriggerKind.Automatic = 2; + })(CodeActionTriggerKind || (exports1.CodeActionTriggerKind = CodeActionTriggerKind = {})); + /** + * The CodeActionContext namespace provides helper functions to work with + * {@link CodeActionContext} literals. + */ var CodeActionContext; + (function(CodeActionContext) { + /** + * Creates a new CodeActionContext literal. + */ function create(diagnostics, only, triggerKind) { + var result = { + diagnostics: diagnostics + }; + if (only !== undefined && only !== null) result.only = only; + if (triggerKind !== undefined && triggerKind !== null) result.triggerKind = triggerKind; + return result; + } + CodeActionContext.create = create; + /** + * Checks whether the given literal conforms to the {@link CodeActionContext} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === undefined || Is.typedArray(candidate.only, Is.string)) && (candidate.triggerKind === undefined || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic); + } + CodeActionContext.is = is; + })(CodeActionContext || (exports1.CodeActionContext = CodeActionContext = {})); + var CodeAction; + (function(CodeAction) { + function create(title, kindOrCommandOrEdit, kind) { + var result = { + title: title + }; + var checkKind = true; + if (typeof kindOrCommandOrEdit === 'string') { + checkKind = false; + result.kind = kindOrCommandOrEdit; + } else if (Command.is(kindOrCommandOrEdit)) result.command = kindOrCommandOrEdit; + else result.edit = kindOrCommandOrEdit; + if (checkKind && kind !== undefined) result.kind = kind; + return result; + } + CodeAction.create = create; + function is(value) { + var candidate = value; + return candidate && Is.string(candidate.title) && (candidate.diagnostics === undefined || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && (candidate.kind === undefined || Is.string(candidate.kind)) && (candidate.edit !== undefined || candidate.command !== undefined) && (candidate.command === undefined || Command.is(candidate.command)) && (candidate.isPreferred === undefined || Is.boolean(candidate.isPreferred)) && (candidate.edit === undefined || WorkspaceEdit.is(candidate.edit)); + } + CodeAction.is = is; + })(CodeAction || (exports1.CodeAction = CodeAction = {})); + /** + * The CodeLens namespace provides helper functions to work with + * {@link CodeLens} literals. + */ var CodeLens; + (function(CodeLens) { + /** + * Creates a new CodeLens literal. + */ function create(range, data) { + var result = { + range: range + }; + if (Is.defined(data)) result.data = data; + return result; + } + CodeLens.create = create; + /** + * Checks whether the given literal conforms to the {@link CodeLens} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command)); + } + CodeLens.is = is; + })(CodeLens || (exports1.CodeLens = CodeLens = {})); + /** + * The FormattingOptions namespace provides helper functions to work with + * {@link FormattingOptions} literals. + */ var FormattingOptions; + (function(FormattingOptions) { + /** + * Creates a new FormattingOptions literal. + */ function create(tabSize, insertSpaces) { + return { + tabSize: tabSize, + insertSpaces: insertSpaces + }; + } + FormattingOptions.create = create; + /** + * Checks whether the given literal conforms to the {@link FormattingOptions} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces); + } + FormattingOptions.is = is; + })(FormattingOptions || (exports1.FormattingOptions = FormattingOptions = {})); + /** + * The DocumentLink namespace provides helper functions to work with + * {@link DocumentLink} literals. + */ var DocumentLink; + (function(DocumentLink) { + /** + * Creates a new DocumentLink literal. + */ function create(range, target, data) { + return { + range: range, + target: target, + data: data + }; + } + DocumentLink.create = create; + /** + * Checks whether the given literal conforms to the {@link DocumentLink} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target)); + } + DocumentLink.is = is; + })(DocumentLink || (exports1.DocumentLink = DocumentLink = {})); + /** + * The SelectionRange namespace provides helper function to work with + * SelectionRange literals. + */ var SelectionRange; + (function(SelectionRange) { + /** + * Creates a new SelectionRange + * @param range the range. + * @param parent an optional parent. + */ function create(range, parent) { + return { + range: range, + parent: parent + }; + } + SelectionRange.create = create; + function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent)); + } + SelectionRange.is = is; + })(SelectionRange || (exports1.SelectionRange = SelectionRange = {})); + /** + * A set of predefined token types. This set is not fixed + * an clients can specify additional token types via the + * corresponding client capabilities. + * + * @since 3.16.0 + */ var SemanticTokenTypes; + (function(SemanticTokenTypes) { + SemanticTokenTypes["namespace"] = "namespace"; + /** + * Represents a generic type. Acts as a fallback for types which can't be mapped to + * a specific type like class or enum. + */ SemanticTokenTypes["type"] = "type"; + SemanticTokenTypes["class"] = "class"; + SemanticTokenTypes["enum"] = "enum"; + SemanticTokenTypes["interface"] = "interface"; + SemanticTokenTypes["struct"] = "struct"; + SemanticTokenTypes["typeParameter"] = "typeParameter"; + SemanticTokenTypes["parameter"] = "parameter"; + SemanticTokenTypes["variable"] = "variable"; + SemanticTokenTypes["property"] = "property"; + SemanticTokenTypes["enumMember"] = "enumMember"; + SemanticTokenTypes["event"] = "event"; + SemanticTokenTypes["function"] = "function"; + SemanticTokenTypes["method"] = "method"; + SemanticTokenTypes["macro"] = "macro"; + SemanticTokenTypes["keyword"] = "keyword"; + SemanticTokenTypes["modifier"] = "modifier"; + SemanticTokenTypes["comment"] = "comment"; + SemanticTokenTypes["string"] = "string"; + SemanticTokenTypes["number"] = "number"; + SemanticTokenTypes["regexp"] = "regexp"; + SemanticTokenTypes["operator"] = "operator"; + /** + * @since 3.17.0 + */ SemanticTokenTypes["decorator"] = "decorator"; + })(SemanticTokenTypes || (exports1.SemanticTokenTypes = SemanticTokenTypes = {})); + /** + * A set of predefined token modifiers. This set is not fixed + * an clients can specify additional token types via the + * corresponding client capabilities. + * + * @since 3.16.0 + */ var SemanticTokenModifiers; + (function(SemanticTokenModifiers) { + SemanticTokenModifiers["declaration"] = "declaration"; + SemanticTokenModifiers["definition"] = "definition"; + SemanticTokenModifiers["readonly"] = "readonly"; + SemanticTokenModifiers["static"] = "static"; + SemanticTokenModifiers["deprecated"] = "deprecated"; + SemanticTokenModifiers["abstract"] = "abstract"; + SemanticTokenModifiers["async"] = "async"; + SemanticTokenModifiers["modification"] = "modification"; + SemanticTokenModifiers["documentation"] = "documentation"; + SemanticTokenModifiers["defaultLibrary"] = "defaultLibrary"; + })(SemanticTokenModifiers || (exports1.SemanticTokenModifiers = SemanticTokenModifiers = {})); + /** + * @since 3.16.0 + */ var SemanticTokens; + (function(SemanticTokens) { + function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && (candidate.resultId === undefined || typeof candidate.resultId === 'string') && Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === 'number'); + } + SemanticTokens.is = is; + })(SemanticTokens || (exports1.SemanticTokens = SemanticTokens = {})); + /** + * The InlineValueText namespace provides functions to deal with InlineValueTexts. + * + * @since 3.17.0 + */ var InlineValueText; + (function(InlineValueText) { + /** + * Creates a new InlineValueText literal. + */ function create(range, text) { + return { + range: range, + text: text + }; + } + InlineValueText.create = create; + function is(value) { + var candidate = value; + return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text); + } + InlineValueText.is = is; + })(InlineValueText || (exports1.InlineValueText = InlineValueText = {})); + /** + * The InlineValueVariableLookup namespace provides functions to deal with InlineValueVariableLookups. + * + * @since 3.17.0 + */ var InlineValueVariableLookup; + (function(InlineValueVariableLookup) { + /** + * Creates a new InlineValueText literal. + */ function create(range, variableName, caseSensitiveLookup) { + return { + range: range, + variableName: variableName, + caseSensitiveLookup: caseSensitiveLookup + }; + } + InlineValueVariableLookup.create = create; + function is(value) { + var candidate = value; + return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup) && (Is.string(candidate.variableName) || candidate.variableName === undefined); + } + InlineValueVariableLookup.is = is; + })(InlineValueVariableLookup || (exports1.InlineValueVariableLookup = InlineValueVariableLookup = {})); + /** + * The InlineValueEvaluatableExpression namespace provides functions to deal with InlineValueEvaluatableExpression. + * + * @since 3.17.0 + */ var InlineValueEvaluatableExpression; + (function(InlineValueEvaluatableExpression) { + /** + * Creates a new InlineValueEvaluatableExpression literal. + */ function create(range, expression) { + return { + range: range, + expression: expression + }; + } + InlineValueEvaluatableExpression.create = create; + function is(value) { + var candidate = value; + return candidate !== undefined && candidate !== null && Range.is(candidate.range) && (Is.string(candidate.expression) || candidate.expression === undefined); + } + InlineValueEvaluatableExpression.is = is; + })(InlineValueEvaluatableExpression || (exports1.InlineValueEvaluatableExpression = InlineValueEvaluatableExpression = {})); + /** + * The InlineValueContext namespace provides helper functions to work with + * {@link InlineValueContext} literals. + * + * @since 3.17.0 + */ var InlineValueContext; + (function(InlineValueContext) { + /** + * Creates a new InlineValueContext literal. + */ function create(frameId, stoppedLocation) { + return { + frameId: frameId, + stoppedLocation: stoppedLocation + }; + } + InlineValueContext.create = create; + /** + * Checks whether the given literal conforms to the {@link InlineValueContext} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Range.is(value.stoppedLocation); + } + InlineValueContext.is = is; + })(InlineValueContext || (exports1.InlineValueContext = InlineValueContext = {})); + /** + * Inlay hint kinds. + * + * @since 3.17.0 + */ var InlayHintKind; + (function(InlayHintKind) { + /** + * An inlay hint that for a type annotation. + */ InlayHintKind.Type = 1; + /** + * An inlay hint that is for a parameter. + */ InlayHintKind.Parameter = 2; + function is(value) { + return value === 1 || value === 2; + } + InlayHintKind.is = is; + })(InlayHintKind || (exports1.InlayHintKind = InlayHintKind = {})); + var InlayHintLabelPart; + (function(InlayHintLabelPart) { + function create(value) { + return { + value: value + }; + } + InlayHintLabelPart.create = create; + function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.location === undefined || Location.is(candidate.location)) && (candidate.command === undefined || Command.is(candidate.command)); + } + InlayHintLabelPart.is = is; + })(InlayHintLabelPart || (exports1.InlayHintLabelPart = InlayHintLabelPart = {})); + var InlayHint; + (function(InlayHint) { + function create(position, label, kind) { + var result = { + position: position, + label: label + }; + if (kind !== undefined) result.kind = kind; + return result; + } + InlayHint.create = create; + function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Position.is(candidate.position) && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is)) && (candidate.kind === undefined || InlayHintKind.is(candidate.kind)) && candidate.textEdits === undefined || Is.typedArray(candidate.textEdits, TextEdit.is) && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.paddingLeft === undefined || Is.boolean(candidate.paddingLeft)) && (candidate.paddingRight === undefined || Is.boolean(candidate.paddingRight)); + } + InlayHint.is = is; + })(InlayHint || (exports1.InlayHint = InlayHint = {})); + var StringValue; + (function(StringValue) { + function createSnippet(value) { + return { + kind: 'snippet', + value: value + }; + } + StringValue.createSnippet = createSnippet; + })(StringValue || (exports1.StringValue = StringValue = {})); + var InlineCompletionItem; + (function(InlineCompletionItem) { + function create(insertText, filterText, range, command) { + return { + insertText: insertText, + filterText: filterText, + range: range, + command: command + }; + } + InlineCompletionItem.create = create; + })(InlineCompletionItem || (exports1.InlineCompletionItem = InlineCompletionItem = {})); + var InlineCompletionList; + (function(InlineCompletionList) { + function create(items) { + return { + items: items + }; + } + InlineCompletionList.create = create; + })(InlineCompletionList || (exports1.InlineCompletionList = InlineCompletionList = {})); + /** + * Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered. + * + * @since 3.18.0 + * @proposed + */ var InlineCompletionTriggerKind; + (function(InlineCompletionTriggerKind) { + /** + * Completion was triggered explicitly by a user gesture. + */ InlineCompletionTriggerKind.Invoked = 0; + /** + * Completion was triggered automatically while editing. + */ InlineCompletionTriggerKind.Automatic = 1; + })(InlineCompletionTriggerKind || (exports1.InlineCompletionTriggerKind = InlineCompletionTriggerKind = {})); + var SelectedCompletionInfo; + (function(SelectedCompletionInfo) { + function create(range, text) { + return { + range: range, + text: text + }; + } + SelectedCompletionInfo.create = create; + })(SelectedCompletionInfo || (exports1.SelectedCompletionInfo = SelectedCompletionInfo = {})); + var InlineCompletionContext; + (function(InlineCompletionContext) { + function create(triggerKind, selectedCompletionInfo) { + return { + triggerKind: triggerKind, + selectedCompletionInfo: selectedCompletionInfo + }; + } + InlineCompletionContext.create = create; + })(InlineCompletionContext || (exports1.InlineCompletionContext = InlineCompletionContext = {})); + var WorkspaceFolder; + (function(WorkspaceFolder) { + function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name); + } + WorkspaceFolder.is = is; + })(WorkspaceFolder || (exports1.WorkspaceFolder = WorkspaceFolder = {})); + exports1.EOL = [ + '\n', + '\r\n', + '\r' + ]; + /** + * @deprecated Use the text document from the new vscode-languageserver-textdocument package. + */ var TextDocument; + (function(TextDocument) { + /** + * Creates a new ITextDocument literal from the given uri and content. + * @param uri The document's uri. + * @param languageId The document's language Id. + * @param version The document's version. + * @param content The document's content. + */ function create(uri, languageId, version, content) { + return new FullTextDocument(uri, languageId, version, content); + } + TextDocument.create = create; + /** + * Checks whether the given literal conforms to the {@link ITextDocument} interface. + */ function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false; + } + TextDocument.is = is; + function applyEdits(document, edits) { + var text = document.getText(); + var sortedEdits = mergeSort(edits, function(a, b) { + var diff = a.range.start.line - b.range.start.line; + if (diff === 0) return a.range.start.character - b.range.start.character; + return diff; + }); + var lastModifiedOffset = text.length; + for(var i = sortedEdits.length - 1; i >= 0; i--){ + var e = sortedEdits[i]; + var startOffset = document.offsetAt(e.range.start); + var endOffset = document.offsetAt(e.range.end); + if (endOffset <= lastModifiedOffset) text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length); + else throw new Error('Overlapping edit'); + lastModifiedOffset = startOffset; + } + return text; + } + TextDocument.applyEdits = applyEdits; + function mergeSort(data, compare) { + if (data.length <= 1) // sorted + return data; + var p = data.length / 2 | 0; + var left = data.slice(0, p); + var right = data.slice(p); + mergeSort(left, compare); + mergeSort(right, compare); + var leftIdx = 0; + var rightIdx = 0; + var i = 0; + while(leftIdx < left.length && rightIdx < right.length){ + var ret = compare(left[leftIdx], right[rightIdx]); + if (ret <= 0) // smaller_equal -> take left to preserve order + data[i++] = left[leftIdx++]; + else // greater -> take right + data[i++] = right[rightIdx++]; + } + while(leftIdx < left.length)data[i++] = left[leftIdx++]; + while(rightIdx < right.length)data[i++] = right[rightIdx++]; + return data; + } + })(TextDocument || (exports1.TextDocument = TextDocument = {})); + /** + * @deprecated Use the text document from the new vscode-languageserver-textdocument package. + */ var FullTextDocument = /** @class */ function() { + function FullTextDocument(uri, languageId, version, content) { + this._uri = uri; + this._languageId = languageId; + this._version = version; + this._content = content; + this._lineOffsets = undefined; + } + Object.defineProperty(FullTextDocument.prototype, "uri", { + get: function() { + return this._uri; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(FullTextDocument.prototype, "languageId", { + get: function() { + return this._languageId; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(FullTextDocument.prototype, "version", { + get: function() { + return this._version; + }, + enumerable: false, + configurable: true + }); + FullTextDocument.prototype.getText = function(range) { + if (range) { + var start = this.offsetAt(range.start); + var end = this.offsetAt(range.end); + return this._content.substring(start, end); + } + return this._content; + }; + FullTextDocument.prototype.update = function(event, version) { + this._content = event.text; + this._version = version; + this._lineOffsets = undefined; + }; + FullTextDocument.prototype.getLineOffsets = function() { + if (this._lineOffsets === undefined) { + var lineOffsets = []; + var text = this._content; + var isLineStart = true; + for(var i = 0; i < text.length; i++){ + if (isLineStart) { + lineOffsets.push(i); + isLineStart = false; + } + var ch = text.charAt(i); + isLineStart = ch === '\r' || ch === '\n'; + if (ch === '\r' && i + 1 < text.length && text.charAt(i + 1) === '\n') i++; + } + if (isLineStart && text.length > 0) lineOffsets.push(text.length); + this._lineOffsets = lineOffsets; + } + return this._lineOffsets; + }; + FullTextDocument.prototype.positionAt = function(offset) { + offset = Math.max(Math.min(offset, this._content.length), 0); + var lineOffsets = this.getLineOffsets(); + var low = 0, high = lineOffsets.length; + if (high === 0) return Position.create(0, offset); + while(low < high){ + var mid = Math.floor((low + high) / 2); + if (lineOffsets[mid] > offset) high = mid; + else low = mid + 1; + } + // low is the least x for which the line offset is larger than the current offset + // or array.length if no line offset is larger than the current offset + var line = low - 1; + return Position.create(line, offset - lineOffsets[line]); + }; + FullTextDocument.prototype.offsetAt = function(position) { + var lineOffsets = this.getLineOffsets(); + if (position.line >= lineOffsets.length) return this._content.length; + else if (position.line < 0) return 0; + var lineOffset = lineOffsets[position.line]; + var nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length; + return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset); + }; + Object.defineProperty(FullTextDocument.prototype, "lineCount", { + get: function() { + return this.getLineOffsets().length; + }, + enumerable: false, + configurable: true + }); + return FullTextDocument; + }(); + var Is; + (function(Is) { + var toString = Object.prototype.toString; + function defined(value) { + return typeof value !== 'undefined'; + } + Is.defined = defined; + function undefined1(value) { + return typeof value === 'undefined'; + } + Is.undefined = undefined1; + function boolean(value) { + return value === true || value === false; + } + Is.boolean = boolean; + function string(value) { + return toString.call(value) === '[object String]'; + } + Is.string = string; + function number(value) { + return toString.call(value) === '[object Number]'; + } + Is.number = number; + function numberRange(value, min, max) { + return toString.call(value) === '[object Number]' && min <= value && value <= max; + } + Is.numberRange = numberRange; + function integer(value) { + return toString.call(value) === '[object Number]' && -2147483648 <= value && value <= 2147483647; + } + Is.integer = integer; + function uinteger(value) { + return toString.call(value) === '[object Number]' && 0 <= value && value <= 2147483647; + } + Is.uinteger = uinteger; + function func(value) { + return toString.call(value) === '[object Function]'; + } + Is.func = func; + function objectLiteral(value) { + // Strictly speaking class instances pass this check as well. Since the LSP + // doesn't use classes we ignore this for now. If we do we need to add something + // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null` + return value !== null && typeof value === 'object'; + } + Is.objectLiteral = objectLiteral; + function typedArray(value, check) { + return Array.isArray(value) && value.every(check); + } + Is.typedArray = typedArray; + })(Is || (Is = {})); +}); + + +var $20f51f7aa637c181$exports = {}; +"use strict"; +Object.defineProperty($20f51f7aa637c181$exports, "__esModule", { + value: true +}); +$20f51f7aa637c181$exports.Line = void 0; +class $20f51f7aa637c181$var$Line { + constructor(document, range){ + this.document = document; + this.range = range; + } + getRange() { + return this.range; + } + getTextContent() { + return this.document.getText().substring(this.document.offsetAt(this.range.start), this.document.offsetAt(this.range.end)); + } + isAfter(line) { + return this.range.start.line > line.range.start.line; + } + isBefore(line) { + return this.range.start.line < line; + } +} +$20f51f7aa637c181$exports.Line = $20f51f7aa637c181$var$Line; + + +var $bbec610f07beb4be$exports = {}; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Remy Suen. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ 'use strict'; +Object.defineProperty($bbec610f07beb4be$exports, "__esModule", { + value: true +}); +$bbec610f07beb4be$exports.Util = void 0; +class $bbec610f07beb4be$var$Util { + static isUTF8BOM(char) { + const uintArray = Uint8Array.from(Buffer.from(char, "UTF-8")); + return uintArray[0] === 0xEF && uintArray[1] == 0xBB && uintArray[2] == 0xBF; + } + static isWhitespace(char) { + return char === ' ' || char === '\t' || $bbec610f07beb4be$var$Util.isNewline(char); + } + static isNewline(char) { + return char === '\r' || char === '\n'; + } + static findLeadingNonWhitespace(content, escapeChar) { + whitespaceCheck: for(let i = 0; i < content.length; i++)switch(content.charAt(i)){ + case ' ': + case '\t': + continue; + case escapeChar: + escapeCheck: for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){ + case ' ': + case '\t': + continue; + case '\r': + // offset one more for \r\n + i = j + 1; + continue whitespaceCheck; + case '\n': + i = j; + continue whitespaceCheck; + default: + break escapeCheck; + } + // found an escape character and then reached EOF + return -1; + default: + return i; + } + // only possible if the content is the empty string + return -1; + } + /** + * Determines if the given position is contained within the given range. + * + * @param position the position to check + * @param range the range to see if the position is inside of + */ static isInsideRange(position, range) { + if (range.start.line === range.end.line) return range.start.line === position.line && range.start.character <= position.character && position.character <= range.end.character; + else if (range.start.line === position.line) return range.start.character <= position.character; + else if (range.end.line === position.line) return position.character <= range.end.character; + return range.start.line < position.line && position.line < range.end.line; + } + static parseHeredocName(value) { + value = value.substring(2); + if (value.charAt(0) === '-') value = value.substring(1); + if (value.charAt(0) === '"') { + if (value.charAt(value.length - 1) !== '"') return null; + value = value.substring(1, value.length - 1); + } + if (value.charAt(0) === '\'') { + if (value.charAt(value.length - 1) !== '\'') return null; + value = value.substring(1, value.length - 1); + } + if (value.charAt(0) === "<") return null; + return value; + } +} +$bbec610f07beb4be$exports.Util = $bbec610f07beb4be$var$Util; + + +class $56b05761038f14db$var$Comment extends $20f51f7aa637c181$exports.Line { + constructor(document, range){ + super(document, range); + } + toString() { + const content = this.getContent(); + if (content) return "# " + content; + return "#"; + } + /** + * Returns the content of this comment. This excludes leading and + * trailing whitespace as well as the # symbol. If the comment only + * consists of whitespace, the empty string will be returned. + */ getContent() { + let range = this.getContentRange(); + if (range === null) return ""; + return this.document.getText().substring(this.document.offsetAt(range.start), this.document.offsetAt(range.end)); + } + /** + * Returns a range that includes the content of the comment + * excluding any leading and trailing whitespace as well as the # + * symbol. May return null if the comment only consists of whitespace + * characters. + */ getContentRange() { + let range = this.getRange(); + const startOffset = this.document.offsetAt(range.start); + let raw = this.document.getText().substring(startOffset, this.document.offsetAt(range.end)); + let start = -1; + let end = -1; + // skip the first # symbol + for(let i = 1; i < raw.length; i++)if (!$bbec610f07beb4be$exports.Util.isWhitespace(raw.charAt(i))) { + start = i; + break; + } + if (start === -1) return null; + // go backwards up to the first # symbol + for(let i = raw.length - 1; i >= 1; i--)if (!$bbec610f07beb4be$exports.Util.isWhitespace(raw.charAt(i))) { + end = i + 1; + break; + } + return $06cc642bc3981461$exports.Range.create(this.document.positionAt(startOffset + start), this.document.positionAt(startOffset + end)); + } +} +$56b05761038f14db$exports.Comment = $56b05761038f14db$var$Comment; + + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Comment", { + enumerable: true, + get: function() { + return $56b05761038f14db$exports.Comment; + } +}); +var $256398e441c094f1$exports = {}; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Remy Suen. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ 'use strict'; +Object.defineProperty($256398e441c094f1$exports, "__esModule", { + value: true +}); +$256398e441c094f1$exports.Parser = void 0; +var $af5dbdd39a2d358f$exports = {}; +var $af5dbdd39a2d358f$var$__spreadArray = $af5dbdd39a2d358f$exports && $af5dbdd39a2d358f$exports.__spreadArray || function(to, from, pack) { + if (pack || arguments.length === 2) { + for(var i = 0, l = from.length, ar; i < l; i++)if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +(function(factory) { + if (typeof $af5dbdd39a2d358f$exports === "object") { + var v = factory(undefined, $af5dbdd39a2d358f$exports); + if (v !== undefined) $af5dbdd39a2d358f$exports = v; + } else if (typeof define === "function" && define.amd) define([ + "require", + "exports" + ], factory); +})(function(require1, exports1) { + /* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ 'use strict'; + Object.defineProperty(exports1, "__esModule", { + value: true + }); + exports1.TextDocument = void 0; + var FullTextDocument = /** @class */ function() { + function FullTextDocument(uri, languageId, version, content) { + this._uri = uri; + this._languageId = languageId; + this._version = version; + this._content = content; + this._lineOffsets = undefined; + } + Object.defineProperty(FullTextDocument.prototype, "uri", { + get: function() { + return this._uri; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(FullTextDocument.prototype, "languageId", { + get: function() { + return this._languageId; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(FullTextDocument.prototype, "version", { + get: function() { + return this._version; + }, + enumerable: false, + configurable: true + }); + FullTextDocument.prototype.getText = function(range) { + if (range) { + var start = this.offsetAt(range.start); + var end = this.offsetAt(range.end); + return this._content.substring(start, end); + } + return this._content; + }; + FullTextDocument.prototype.update = function(changes, version) { + for(var _i = 0, changes_1 = changes; _i < changes_1.length; _i++){ + var change = changes_1[_i]; + if (FullTextDocument.isIncremental(change)) { + // makes sure start is before end + var range = getWellformedRange(change.range); + // update content + var startOffset = this.offsetAt(range.start); + var endOffset = this.offsetAt(range.end); + this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length); + // update the offsets + var startLine = Math.max(range.start.line, 0); + var endLine = Math.max(range.end.line, 0); + var lineOffsets = this._lineOffsets; + var addedLineOffsets = computeLineOffsets(change.text, false, startOffset); + if (endLine - startLine === addedLineOffsets.length) for(var i = 0, len = addedLineOffsets.length; i < len; i++)lineOffsets[i + startLine + 1] = addedLineOffsets[i]; + else if (addedLineOffsets.length < 10000) lineOffsets.splice.apply(lineOffsets, $af5dbdd39a2d358f$var$__spreadArray([ + startLine + 1, + endLine - startLine + ], addedLineOffsets, false)); + else this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1)); + var diff = change.text.length - (endOffset - startOffset); + if (diff !== 0) for(var i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++)lineOffsets[i] = lineOffsets[i] + diff; + } else if (FullTextDocument.isFull(change)) { + this._content = change.text; + this._lineOffsets = undefined; + } else throw new Error('Unknown change event received'); + } + this._version = version; + }; + FullTextDocument.prototype.getLineOffsets = function() { + if (this._lineOffsets === undefined) this._lineOffsets = computeLineOffsets(this._content, true); + return this._lineOffsets; + }; + FullTextDocument.prototype.positionAt = function(offset) { + offset = Math.max(Math.min(offset, this._content.length), 0); + var lineOffsets = this.getLineOffsets(); + var low = 0, high = lineOffsets.length; + if (high === 0) return { + line: 0, + character: offset + }; + while(low < high){ + var mid = Math.floor((low + high) / 2); + if (lineOffsets[mid] > offset) high = mid; + else low = mid + 1; + } + // low is the least x for which the line offset is larger than the current offset + // or array.length if no line offset is larger than the current offset + var line = low - 1; + offset = this.ensureBeforeEOL(offset, lineOffsets[line]); + return { + line: line, + character: offset - lineOffsets[line] + }; + }; + FullTextDocument.prototype.offsetAt = function(position) { + var lineOffsets = this.getLineOffsets(); + if (position.line >= lineOffsets.length) return this._content.length; + else if (position.line < 0) return 0; + var lineOffset = lineOffsets[position.line]; + if (position.character <= 0) return lineOffset; + var nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length; + var offset = Math.min(lineOffset + position.character, nextLineOffset); + return this.ensureBeforeEOL(offset, lineOffset); + }; + FullTextDocument.prototype.ensureBeforeEOL = function(offset, lineOffset) { + while(offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1)))offset--; + return offset; + }; + Object.defineProperty(FullTextDocument.prototype, "lineCount", { + get: function() { + return this.getLineOffsets().length; + }, + enumerable: false, + configurable: true + }); + FullTextDocument.isIncremental = function(event) { + var candidate = event; + return candidate !== undefined && candidate !== null && typeof candidate.text === 'string' && candidate.range !== undefined && (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number'); + }; + FullTextDocument.isFull = function(event) { + var candidate = event; + return candidate !== undefined && candidate !== null && typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined; + }; + return FullTextDocument; + }(); + var TextDocument; + (function(TextDocument) { + /** + * Creates a new text document. + * + * @param uri The document's uri. + * @param languageId The document's language Id. + * @param version The document's initial version number. + * @param content The document's content. + */ function create(uri, languageId, version, content) { + return new FullTextDocument(uri, languageId, version, content); + } + TextDocument.create = create; + /** + * Updates a TextDocument by modifying its content. + * + * @param document the document to update. Only documents created by TextDocument.create are valid inputs. + * @param changes the changes to apply to the document. + * @param version the changes version for the document. + * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter. + * + */ function update(document, changes, version) { + if (document instanceof FullTextDocument) { + document.update(changes, version); + return document; + } else throw new Error('TextDocument.update: document must be created by TextDocument.create'); + } + TextDocument.update = update; + function applyEdits(document, edits) { + var text = document.getText(); + var sortedEdits = mergeSort(edits.map(getWellformedEdit), function(a, b) { + var diff = a.range.start.line - b.range.start.line; + if (diff === 0) return a.range.start.character - b.range.start.character; + return diff; + }); + var lastModifiedOffset = 0; + var spans = []; + for(var _i = 0, sortedEdits_1 = sortedEdits; _i < sortedEdits_1.length; _i++){ + var e = sortedEdits_1[_i]; + var startOffset = document.offsetAt(e.range.start); + if (startOffset < lastModifiedOffset) throw new Error('Overlapping edit'); + else if (startOffset > lastModifiedOffset) spans.push(text.substring(lastModifiedOffset, startOffset)); + if (e.newText.length) spans.push(e.newText); + lastModifiedOffset = document.offsetAt(e.range.end); + } + spans.push(text.substr(lastModifiedOffset)); + return spans.join(''); + } + TextDocument.applyEdits = applyEdits; + })(TextDocument || (exports1.TextDocument = TextDocument = {})); + function mergeSort(data, compare) { + if (data.length <= 1) // sorted + return data; + var p = data.length / 2 | 0; + var left = data.slice(0, p); + var right = data.slice(p); + mergeSort(left, compare); + mergeSort(right, compare); + var leftIdx = 0; + var rightIdx = 0; + var i = 0; + while(leftIdx < left.length && rightIdx < right.length){ + var ret = compare(left[leftIdx], right[rightIdx]); + if (ret <= 0) // smaller_equal -> take left to preserve order + data[i++] = left[leftIdx++]; + else // greater -> take right + data[i++] = right[rightIdx++]; + } + while(leftIdx < left.length)data[i++] = left[leftIdx++]; + while(rightIdx < right.length)data[i++] = right[rightIdx++]; + return data; + } + function computeLineOffsets(text, isAtLineStart, textOffset) { + if (textOffset === void 0) textOffset = 0; + var result = isAtLineStart ? [ + textOffset + ] : []; + for(var i = 0; i < text.length; i++){ + var ch = text.charCodeAt(i); + if (isEOL(ch)) { + if (ch === 13 /* CharCode.CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* CharCode.LineFeed */ ) i++; + result.push(textOffset + i + 1); + } + } + return result; + } + function isEOL(char) { + return char === 13 /* CharCode.CarriageReturn */ || char === 10 /* CharCode.LineFeed */ ; + } + function getWellformedRange(range) { + var start = range.start; + var end = range.end; + if (start.line > end.line || start.line === end.line && start.character > end.character) return { + start: end, + end: start + }; + return range; + } + function getWellformedEdit(textEdit) { + var range = getWellformedRange(textEdit.range); + if (range !== textEdit.range) return { + newText: textEdit.newText, + range: range + }; + return textEdit; + } +}); + + + + +var $68331fc9b733e06e$exports = {}; +"use strict"; +Object.defineProperty($68331fc9b733e06e$exports, "__esModule", { + value: true +}); +$68331fc9b733e06e$exports.ParserDirective = void 0; + + +class $68331fc9b733e06e$var$ParserDirective extends $20f51f7aa637c181$exports.Line { + constructor(document, range, nameRange, valueRange){ + super(document, range); + this.nameRange = nameRange; + this.valueRange = valueRange; + } + toString() { + return "# " + this.getName() + '=' + this.getValue(); + } + getNameRange() { + return this.nameRange; + } + getValueRange() { + return this.valueRange; + } + getName() { + return this.document.getText().substring(this.document.offsetAt(this.nameRange.start), this.document.offsetAt(this.nameRange.end)); + } + getValue() { + return this.document.getText().substring(this.document.offsetAt(this.valueRange.start), this.document.offsetAt(this.valueRange.end)); + } + getDirective() { + const directive = $54b0c2f7fc5ba86a$exports.Directive[this.getName().toLowerCase()]; + return directive === undefined ? null : directive; + } +} +$68331fc9b733e06e$exports.ParserDirective = $68331fc9b733e06e$var$ParserDirective; + + +var $dbcf927cc6c66108$exports = {}; +"use strict"; +Object.defineProperty($dbcf927cc6c66108$exports, "__esModule", { + value: true +}); +$dbcf927cc6c66108$exports.Instruction = void 0; + + + + +var $cb038d86fd1b3cbb$exports = {}; +"use strict"; +Object.defineProperty($cb038d86fd1b3cbb$exports, "__esModule", { + value: true +}); +$cb038d86fd1b3cbb$exports.Heredoc = void 0; +/** + * Heredoc represents a here-document that has been embedded in a + * Dockerfile. + * + * This API is experimental and subject to change. + */ class $cb038d86fd1b3cbb$var$Heredoc { + constructor(startRange, name, nameRange, contentRange, endRange){ + this.startRange = startRange; + this.name = name; + this.nameRange = nameRange; + this.contentRange = contentRange; + this.endRange = endRange; + } + /** + * Returns the name of the here-document. + * + * This API is experimental and subject to change. + */ getName() { + return this.name; + } + /** + * Returns the range of the start operator and the name. If the + * here-document is initialized with <= 0; i--){ + if (envs[i].isBefore(line)) for (let property of envs[i].getProperties()){ + if (property.getName() === variable) return false; + } + } + let args = image.getARGs(); + for(let i = args.length - 1; i >= 0; i--)if (args[i].isBefore(line)) { + let property = args[i].getProperty(); + if (property && property.getName() === variable) return true; + } + return undefined; + } + createSingleLineHeredocs(args) { + const heredocs = []; + // instruction only on one line, if heredocs exist they would be incomplete + for (const arg of args){ + const value = arg.getValue(); + if (value.startsWith("<<") && $bbec610f07beb4be$exports.Util.parseHeredocName(value) !== null) { + const startRange = arg.getRange(); + const nameRange = this.getNameRange(startRange); + const name = this.getName(nameRange); + heredocs.push(new $cb038d86fd1b3cbb$exports.Heredoc(startRange, name, nameRange, null, null)); + } + } + return heredocs; + } + getName(nameRange) { + const content = this.document.getText(nameRange); + let escaping = false; + let name = ""; + nameLoop: for(let i = 0; i < content.length; i++){ + const ch = content.charAt(i); + switch(ch){ + case this.escapeChar: + escaping = true; + for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){ + case ' ': + case '\t': + break; + case '\r': + i = j + 1; + continue nameLoop; + case '\n': + i = j; + continue nameLoop; + default: + name += content.charAt(j); + i = j; + continue nameLoop; + } + break; + case '#': + if (escaping) for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){ + case '\n': + i = j; + continue nameLoop; + } + case ' ': + case '\t': + case '\r': + case '\n': + if (escaping) break; + default: + name += ch; + break; + } + } + return name; + } + getNameRange(startRange) { + const content = this.document.getText(startRange); + let endFound = false; + let searchHyphen = false; + let start = -1; + let end = -1; + let escaping = false; + let quote = null; + contentLoop: for(let i = 0; i < content.length; i++){ + const ch = content.charAt(i); + switch(ch){ + case '"': + case '\'': + if (quote === ch) break contentLoop; + quote = ch; + continue; + case this.escapeChar: + for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){ + case '\n': + escaping = true; + j = i; + continue contentLoop; + } + break; + case ' ': + case '\t': + case '\r': + case '\n': + break; + case '<': + if (endFound) searchHyphen = true; + else endFound = true; + break; + case '-': + if (searchHyphen) { + searchHyphen = false; + break; + } + case '#': + if (escaping) for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){ + case '\n': + i = j; + continue contentLoop; + } + default: + if (start === -1) start = i; + if (quote !== null) { + end = i + 1; + break; + } + break contentLoop; + } + } + if (start === -1) return $06cc642bc3981461$exports.Range.create(startRange.end, startRange.end); + const nameStart = this.document.positionAt(this.document.offsetAt(startRange.start) + start); + const nameEnd = quote !== null ? this.document.positionAt(this.document.offsetAt(startRange.start) + end) : startRange.end; + return $06cc642bc3981461$exports.Range.create(nameStart, nameEnd); + } + getHeredocs() { + const args = this.getArguments(); + if (args.length === 0) return []; + const heredocs = []; + const range = this.getRange(); + if (range.start.line === range.end.line) // instruction only on one line, if heredocs exist they would be incomplete + return this.createSingleLineHeredocs(args); + const heredocDefinitions = []; + let heredocsProcessed = false; + let escaping = false; + let contentStart = -1; + let contentEnd = -1; + let lineStart = -1; + let currentHeredoc = 0; + const startOffset = this.document.offsetAt(args[0].getRange().start); + const content = this.getRangeContent($06cc642bc3981461$exports.Range.create(args[0].getRange().start, this.getRange().end)); + contentLoop: for(let i = 0; i < content.length; i++)switch(content.charAt(i)){ + case this.escapeChar: + escaping = true; + for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){ + case ' ': + case '\t': + break; + case '\r': + j++; + case '\n': + i = j; + continue contentLoop; + default: + i = j; + continue contentLoop; + } + break; + case '\r': + break; + case '\n': + if (escaping) break; + if (heredocsProcessed) { + if (contentStart === -1) contentStart = i; + contentEnd = i; + const arg = heredocDefinitions[currentHeredoc]; + const startRange = arg.getRange(); + const nameRange = this.getNameRange(startRange); + const name = this.getName(nameRange); + const delimiterRange = this.getDelimiterRange(arg, name, $06cc642bc3981461$exports.Range.create(this.document.positionAt(startOffset + lineStart), this.document.positionAt(startOffset + i))); + if (delimiterRange !== null) { + const contentRange = $06cc642bc3981461$exports.Range.create(this.document.positionAt(startOffset + contentStart), this.document.positionAt(startOffset + lineStart - 1)); + heredocs.push(new $cb038d86fd1b3cbb$exports.Heredoc(startRange, name, nameRange, contentRange, delimiterRange)); + contentStart = -1; + currentHeredoc++; + } + lineStart = -1; + } else { + // found a newline that hasn't been escaped, + // must be in a heredoc + const offsetLimit = startOffset + i; + for (const arg of args){ + // check if this argument is on the initial line of the instruction, + // note that it may not all be on the same line due to escaped newlines, + // because of that we need to use offset checks instead of line checks + // as an argument being on a different line in the document does not + // imply it is on a different line from the Dockerfile's point of view + if (this.document.offsetAt(arg.getRange().start) < offsetLimit) { + if (arg.getValue().startsWith("<<")) heredocDefinitions.push(arg); + } else break; + } + heredocsProcessed = true; + lineStart = -1; + continue contentLoop; + } + break; + case ' ': + case '\t': + if (escaping) break; + case '#': + if (escaping) for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){ + case '\n': + i = j; + continue contentLoop; + } + default: + if (escaping) escaping = false; + if (heredocsProcessed) { + if (contentStart === -1) contentStart = i; + if (lineStart === -1) lineStart = i; + } + break; + } + if (heredocsProcessed) { + const arg = heredocDefinitions[currentHeredoc]; + const startRange = arg.getRange(); + const nameRange = this.getNameRange(startRange); + const name = this.getName(nameRange); + let contentRange = null; + // check if the last line of this instruction matches the name of the last heredoc + const delimiterRange = this.getDelimiterRange(arg, name, $06cc642bc3981461$exports.Range.create(this.document.positionAt(startOffset + lineStart), range.end)); + if (delimiterRange === null) contentRange = $06cc642bc3981461$exports.Range.create(this.document.positionAt(startOffset + contentStart), range.end); + else if (contentEnd !== -1) contentRange = $06cc642bc3981461$exports.Range.create(this.document.positionAt(startOffset + contentStart), this.document.positionAt(startOffset + contentEnd)); + heredocs.push(new $cb038d86fd1b3cbb$exports.Heredoc(startRange, name, nameRange, contentRange, delimiterRange)); + currentHeredoc++; + for(let i = currentHeredoc; i < heredocDefinitions.length; i++){ + const arg = heredocDefinitions[currentHeredoc]; + const startRange = arg.getRange(); + const nameRange = this.getNameRange(startRange); + const name = this.getName(nameRange); + heredocs.push(new $cb038d86fd1b3cbb$exports.Heredoc(startRange, name, nameRange, null, null)); + currentHeredoc++; + } + } else // instruction only on one line, if heredocs exist they would be incomplete + return this.createSingleLineHeredocs(args); + return heredocs; + } + getDelimiterRange(startArg, name, candidateRange) { + const text = this.document.getText(candidateRange); + if (startArg.getValue().startsWith("<<-")) { + // remove tabs in the front + let index = 0; + while(text.charAt(index) === '\t')index++; + if (text.substring(index) === name) return $06cc642bc3981461$exports.Range.create($06cc642bc3981461$exports.Position.create(candidateRange.start.line, index), candidateRange.end); + return null; + } + return text === name ? candidateRange : null; + } +} +$dbcf927cc6c66108$exports.Instruction = $dbcf927cc6c66108$var$Instruction; + + +var $e74091221b948ca0$exports = {}; +"use strict"; +Object.defineProperty($e74091221b948ca0$exports, "__esModule", { + value: true +}); +$e74091221b948ca0$exports.Add = void 0; +var $3b4228194c2eb101$exports = {}; +"use strict"; +Object.defineProperty($3b4228194c2eb101$exports, "__esModule", { + value: true +}); +$3b4228194c2eb101$exports.JSONInstruction = void 0; + + + +var $49f4c57b99c16419$exports = {}; +"use strict"; +Object.defineProperty($49f4c57b99c16419$exports, "__esModule", { + value: true +}); +$49f4c57b99c16419$exports.ModifiableInstruction = void 0; + +var $d4e9108e9cb28d40$exports = {}; +"use strict"; +Object.defineProperty($d4e9108e9cb28d40$exports, "__esModule", { + value: true +}); +$d4e9108e9cb28d40$exports.Flag = void 0; + +var $bd3c4b94a4da5f9d$exports = {}; +"use strict"; +Object.defineProperty($bd3c4b94a4da5f9d$exports, "__esModule", { + value: true +}); +$bd3c4b94a4da5f9d$exports.FlagOption = void 0; +class $bd3c4b94a4da5f9d$var$FlagOption { + constructor(range, name, nameRange, value, valueRange){ + this.range = range; + this.name = name; + this.nameRange = nameRange; + this.value = value; + this.valueRange = valueRange; + } + toString() { + if (this.valueRange !== null) return this.name + "=" + this.value; + return this.name; + } + getRange() { + return this.range; + } + getName() { + return this.name; + } + getNameRange() { + return this.nameRange; + } + getValue() { + return this.value; + } + getValueRange() { + return this.valueRange; + } +} +$bd3c4b94a4da5f9d$exports.FlagOption = $bd3c4b94a4da5f9d$var$FlagOption; + + +class $d4e9108e9cb28d40$var$Flag { + constructor(document, range, name, nameRange, value, valueRange){ + this.options = []; + this.range = range; + this.name = name; + this.nameRange = nameRange; + this.value = value; + this.valueRange = valueRange; + if (this.value !== null) { + let offset = document.offsetAt(valueRange.start); + let nameStart = -1; + let valueStart = -1; + let hasOptions = false; + for(let i = 0; i < value.length; i++)switch(value.charAt(i)){ + case '=': + hasOptions = true; + if (valueStart === -1) { + valueStart = i + 1; + break; + } + break; + case ',': + this.options.push(this.createFlagOption(document, value, offset, nameStart, valueStart, i)); + nameStart = -1; + valueStart = -1; + break; + default: + if (nameStart === -1) nameStart = i; + break; + } + if (hasOptions && nameStart !== -1) this.options.push(this.createFlagOption(document, value, offset, nameStart, valueStart, value.length)); + } + } + createFlagOption(document, content, documentOffset, nameStart, valueStart, valueEnd) { + const optionRange = $06cc642bc3981461$exports.Range.create(document.positionAt(documentOffset + nameStart), document.positionAt(documentOffset + valueEnd)); + if (valueStart === -1) return new $bd3c4b94a4da5f9d$exports.FlagOption(optionRange, content.substring(nameStart, valueEnd), optionRange, null, null); + return new $bd3c4b94a4da5f9d$exports.FlagOption(optionRange, content.substring(nameStart, valueStart - 1), $06cc642bc3981461$exports.Range.create(document.positionAt(documentOffset + nameStart), document.positionAt(documentOffset + valueStart - 1)), content.substring(valueStart, valueEnd), $06cc642bc3981461$exports.Range.create(document.positionAt(documentOffset + valueStart), document.positionAt(documentOffset + valueEnd))); + } + toString() { + if (this.valueRange) return "--" + this.name + "=" + this.value; + return "--" + this.name; + } + /** + * Returns the range that encompasses this entire flag. This includes the + * -- prefix in the beginning to the last character of the flag's value (if + * it has been defined). + * + * @return the entire range of this flag + */ getRange() { + return this.range; + } + /** + * Returns the name of this flag. The name does not include the -- prefix. + * Thus, for HEALTHCHECK's --interval flag, interval is the flag's name and + * not --interval. + * + * @return this flag's name + */ getName() { + return this.name; + } + /** + * Returns the range that encompasses the flag's name + * + * @return the range containing the flag's name + */ getNameRange() { + return this.nameRange; + } + /** + * Returns the value that has been set to this flag. May be null if the + * flag is invalid and has no value set like a --start-period. If the flag + * is instead a --start-period= with an equals sign then the flag's value + * is the empty string. + * + * @return this flag's value if it has been defined, null otherwise + */ getValue() { + return this.value; + } + /** + * Returns the range that encompasses this flag's value. If no value has + * been set then null will be returned. + * + * @return the range containing this flag's value, or null if the flag + * has no value defined + */ getValueRange() { + return this.valueRange; + } + getOption(name) { + for (const option of this.options){ + if (option.getName() === name) return option; + } + return null; + } + getOptions() { + return this.options; + } + hasOptions() { + return this.options.length > 0; + } +} +$d4e9108e9cb28d40$exports.Flag = $d4e9108e9cb28d40$var$Flag; + + + +class $49f4c57b99c16419$var$ModifiableInstruction extends $dbcf927cc6c66108$exports.Instruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } + getFlags() { + if (!this.flags) { + this.flags = []; + for (let arg of this.getArguments()){ + let value = arg.getValue(); + if (this.stopSearchingForFlags(value)) return this.flags; + else if (value.indexOf("--") === 0) { + let range = arg.getRange(); + let rawValue = this.document.getText().substring(this.document.offsetAt(range.start), this.document.offsetAt(range.end)); + let nameIndex = value.indexOf('='); + let index = rawValue.indexOf('='); + let firstMatch = false; + let secondMatch = false; + let startIndex = -1; + nameSearchLoop: for(let i = 0; i < rawValue.length; i++)switch(rawValue.charAt(i)){ + case '\\': + case ' ': + case '\t': + case '\r': + case '\n': + break; + case '-': + if (secondMatch) { + startIndex = i; + break nameSearchLoop; + } else if (firstMatch) secondMatch = true; + else firstMatch = true; + break; + default: + startIndex = i; + break nameSearchLoop; + } + let nameStart = this.document.positionAt(this.document.offsetAt(range.start) + startIndex); + if (index === -1) this.flags.push(new $d4e9108e9cb28d40$exports.Flag(this.document, range, value.substring(2), $06cc642bc3981461$exports.Range.create(nameStart, range.end), null, null)); + else if (index === value.length - 1) { + let nameEnd = this.document.positionAt(this.document.offsetAt(range.start) + index); + this.flags.push(new $d4e9108e9cb28d40$exports.Flag(this.document, range, value.substring(2, index), $06cc642bc3981461$exports.Range.create(nameStart, nameEnd), "", $06cc642bc3981461$exports.Range.create(range.end, range.end))); + } else { + let nameEnd = this.document.positionAt(this.document.offsetAt(range.start) + index); + this.flags.push(new $d4e9108e9cb28d40$exports.Flag(this.document, range, value.substring(2, nameIndex), $06cc642bc3981461$exports.Range.create(nameStart, nameEnd), value.substring(nameIndex + 1), $06cc642bc3981461$exports.Range.create(this.document.positionAt(this.document.offsetAt(range.start) + index + 1), range.end))); + } + } + } + } + return this.flags; + } + getArguments() { + const args = super.getArguments(); + const flags = this.getFlags(); + if (flags.length === 0) return args; + for(let i = 0; i < flags.length; i++)args.shift(); + return args; + } +} +$49f4c57b99c16419$exports.ModifiableInstruction = $49f4c57b99c16419$var$ModifiableInstruction; + + +class $3b4228194c2eb101$var$JSONInstruction extends $49f4c57b99c16419$exports.ModifiableInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + this.openingBracket = null; + this.closingBracket = null; + this.jsonStrings = []; + const argsContent = this.getRawArgumentsContent(); + if (argsContent === null) return; + const args = this.getArguments(); + if (args.length === 1 && args[0].getValue() === "[]") { + let argRange = args[0].getRange(); + this.openingBracket = new $fd8464c2f2e17cdd$exports.Argument("[", $06cc642bc3981461$exports.Range.create(argRange.start.line, argRange.start.character, argRange.start.line, argRange.start.character + 1)); + this.closingBracket = new $fd8464c2f2e17cdd$exports.Argument("]", $06cc642bc3981461$exports.Range.create(argRange.start.line, argRange.start.character + 1, argRange.end.line, argRange.end.character)); + return; + } else if (args.length === 2 && args[0].getValue() === '[' && args[1].getValue() === ']') { + this.openingBracket = args[0]; + this.closingBracket = args[1]; + return; + } + const argsOffset = document.offsetAt(this.getArgumentsRange().start); + let start = -1; + let last = ""; + let quoted = false; + let escapedArg = ""; + argsCheck: for(let i = 0; i < argsContent.length; i++){ + let char = argsContent.charAt(i); + switch(char){ + case '[': + if (last === "") { + this.openingBracket = new $fd8464c2f2e17cdd$exports.Argument("[", $06cc642bc3981461$exports.Range.create(document.positionAt(argsOffset + i), document.positionAt(argsOffset + i + 1))); + last = '['; + } else if (quoted) escapedArg = escapedArg + char; + else break argsCheck; + break; + case '"': + if (last === '[' || last === ',') { + start = i; + quoted = true; + last = '"'; + escapedArg = escapedArg + char; + continue; + } else if (last === '"') { + if (quoted) { + escapedArg = escapedArg + char; + // quoted string done + quoted = false; + this.jsonStrings.push(new $4d211a562ff7ccb2$exports.JSONArgument(escapedArg, $06cc642bc3981461$exports.Range.create(document.positionAt(argsOffset + start), document.positionAt(argsOffset + i + 1)), $06cc642bc3981461$exports.Range.create(document.positionAt(argsOffset + start + 1), document.positionAt(argsOffset + i)))); + escapedArg = ""; + } else break argsCheck; + } else break argsCheck; + break; + case ',': + if (quoted) escapedArg = escapedArg + char; + else { + if (last === '"') last = ','; + else break argsCheck; + } + break; + case ']': + if (quoted) escapedArg = escapedArg + char; + else if (last !== "") { + this.closingBracket = new $fd8464c2f2e17cdd$exports.Argument("]", $06cc642bc3981461$exports.Range.create(document.positionAt(argsOffset + i), document.positionAt(argsOffset + i + 1))); + break argsCheck; + } + break; + case ' ': + case '\t': + break; + case '\\': + if (quoted) switch(argsContent.charAt(i + 1)){ + case '"': + case '\\': + escapedArg = escapedArg + argsContent.charAt(i + 1); + i++; + continue; + case ' ': + case '\t': + escapeCheck: for(let j = i + 2; j < argsContent.length; j++)switch(argsContent.charAt(j)){ + case '\r': + // offset one more for \r\n + j++; + case '\n': + i = j; + continue argsCheck; + case ' ': + case '\t': + break; + default: + break escapeCheck; + } + break; + case '\r': + // offset one more for \r\n + i++; + default: + i++; + continue; + } + else escapeCheck: for(let j = i + 1; j < argsContent.length; j++)switch(argsContent.charAt(j)){ + case '\r': + // offset one more for \r\n + j++; + case '\n': + i = j; + continue argsCheck; + case ' ': + case '\t': + break; + default: + break escapeCheck; + } + break argsCheck; + default: + if (!quoted) break argsCheck; + escapedArg = escapedArg + char; + break; + } + } + } + stopSearchingForFlags(_value) { + return true; + } + getOpeningBracket() { + return this.openingBracket; + } + getJSONStrings() { + return this.jsonStrings; + } + getClosingBracket() { + return this.closingBracket; + } +} +$3b4228194c2eb101$exports.JSONInstruction = $3b4228194c2eb101$var$JSONInstruction; + + +class $e74091221b948ca0$var$Add extends $3b4228194c2eb101$exports.JSONInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } + stopSearchingForFlags(argument) { + return argument.indexOf("--") === -1; + } +} +$e74091221b948ca0$exports.Add = $e74091221b948ca0$var$Add; + + +var $5a76935495422f85$exports = {}; +"use strict"; +Object.defineProperty($5a76935495422f85$exports, "__esModule", { + value: true +}); +$5a76935495422f85$exports.Arg = void 0; +var $7409057aad957c3f$exports = {}; +"use strict"; +Object.defineProperty($7409057aad957c3f$exports, "__esModule", { + value: true +}); +$7409057aad957c3f$exports.Property = void 0; + + +class $7409057aad957c3f$var$Property { + constructor(document, escapeChar, arg, arg2){ + this.assignmentOperatorRange = null; + this.assignmentOperator = null; + this.valueRange = null; + this.value = null; + this.document = document; + this.escapeChar = escapeChar; + this.nameRange = $7409057aad957c3f$var$Property.getNameRange(document, arg); + let value = document.getText().substring(document.offsetAt(this.nameRange.start), document.offsetAt(this.nameRange.end)); + this.name = $7409057aad957c3f$var$Property.getValue(value, escapeChar); + if (arg2) { + this.valueRange = arg2.getRange(); + value = document.getText().substring(document.offsetAt(this.valueRange.start), document.offsetAt(this.valueRange.end)); + this.value = $7409057aad957c3f$var$Property.getValue(value, escapeChar); + this.range = $06cc642bc3981461$exports.Range.create(this.nameRange.start, this.valueRange.end); + } else { + let argRange = arg.getRange(); + if (this.nameRange.start.line === argRange.start.line && this.nameRange.start.character === argRange.start.character && this.nameRange.end.line === argRange.end.line && this.nameRange.end.character === argRange.end.character) ; + else { + this.valueRange = $7409057aad957c3f$var$Property.getValueRange(document, arg); + value = document.getText().substring(document.offsetAt(this.valueRange.start), document.offsetAt(this.valueRange.end)); + this.value = $7409057aad957c3f$var$Property.getValue(value, escapeChar); + this.assignmentOperatorRange = $06cc642bc3981461$exports.Range.create(this.nameRange.end, this.valueRange.start); + this.assignmentOperator = "="; + } + this.range = argRange; + } + } + getRange() { + return this.range; + } + getName() { + return this.name; + } + getNameRange() { + return this.nameRange; + } + getValue() { + return this.value; + } + getValueRange() { + return this.valueRange; + } + /** + * Retrieves the operator used for delimiting between the name and + * value of this property. This will either be the "=" character + * or null if a character was not used or if this property has no + * value defined. + */ getAssignmentOperator() { + return this.assignmentOperator; + } + getAssignmentOperatorRange() { + return this.assignmentOperatorRange; + } + /** + * Returns the value of this property including any enclosing + * single or double quotes and relevant escape characters. + * Escaped newlines and its associated contiguous whitespace + * characters however will not be returned as they are deemed to + * be uninteresting to clients trying to return a Dockerfile. + * + * @return the unescaped value of this property or null if this + * property has no associated value + */ getUnescapedValue() { + if (this.valueRange === null) return null; + let escaped = false; + let rawValue = ""; + let value = this.document.getText().substring(this.document.offsetAt(this.valueRange.start), this.document.offsetAt(this.valueRange.end)); + rawLoop: for(let i = 0; i < value.length; i++){ + let char = value.charAt(i); + switch(char){ + case this.escapeChar: + for(let j = i + 1; j < value.length; j++)switch(value.charAt(j)){ + case '\r': + j++; + case '\n': + escaped = true; + i = j; + continue rawLoop; + case ' ': + case '\t': + break; + default: + rawValue = rawValue + char; + continue rawLoop; + } + // this happens if there's only whitespace after the escape character + rawValue = rawValue + char; + break; + case '\r': + case '\n': + break; + case ' ': + case '\t': + if (!escaped) rawValue = rawValue + char; + break; + case '#': + if (escaped) for(let j = i + 1; j < value.length; j++)switch(value.charAt(j)){ + case '\r': + j++; + case '\n': + i = j; + continue rawLoop; + } + else rawValue = rawValue + char; + break; + default: + rawValue = rawValue + char; + escaped = false; + break; + } + } + return rawValue; + } + static getNameRange(document, arg) { + let value = arg.getValue(); + let index = value.indexOf('='); + if (index !== -1) { + let initial = value.charAt(0); + let before = value.charAt(index - 1); + // check if content before the equals sign are in quotes + // "var"=value + // 'var'=value + // otherwise, just assume it's a standard definition + // var=value + if (initial === '"' && before === '"' || initial === '\'' && before === '\'' || initial !== '"' && initial !== '\'') return $06cc642bc3981461$exports.Range.create(arg.getRange().start, document.positionAt(document.offsetAt(arg.getRange().start) + index)); + } + // no '=' found, just defined the property's name + return arg.getRange(); + } + static getValueRange(document, arg) { + return $06cc642bc3981461$exports.Range.create(document.positionAt(document.offsetAt(arg.getRange().start) + arg.getValue().indexOf('=') + 1), document.positionAt(document.offsetAt(arg.getRange().end))); + } + /** + * Returns the actual value of this key-value pair. The value will + * have its escape characters removed if applicable. If the value + * spans multiple lines and there are comments nested within the + * lines, they too will be removed. + * + * @return the value that this key-value pair will actually be, may + * be null if no value is defined, may be the empty string + * if the value only consists of whitespace + */ static getValue(value, escapeChar) { + let escaped = false; + const skip = $bbec610f07beb4be$exports.Util.findLeadingNonWhitespace(value, escapeChar); + if (skip !== 0 && value.charAt(skip) === '#') // need to skip over comments + escaped = true; + value = value.substring(skip); + let first = value.charAt(0); + let last = value.charAt(value.length - 1); + let literal = first === '\'' || first === '"'; + let inSingle = first === '\'' && last === '\''; + let inDouble = false; + if (first === '"') for(let i = 1; i < value.length; i++){ + if (value.charAt(i) === escapeChar) i++; + else if (value.charAt(i) === '"' && i === value.length - 1) inDouble = true; + } + if (inSingle || inDouble) value = value.substring(1, value.length - 1); + let commentCheck = -1; + let escapedValue = ""; + let start = 0; + parseValue: for(let i = 0; i < value.length; i++){ + let char = value.charAt(i); + switch(char){ + case escapeChar: + if (i + 1 === value.length) { + escapedValue = escapedValue + escapeChar; + break parseValue; + } + char = value.charAt(i + 1); + if (char === ' ' || char === '\t') whitespaceCheck: for(let j = i + 2; j < value.length; j++){ + let char2 = value.charAt(j); + switch(char2){ + case ' ': + case '\t': + break; + case '\r': + j++; + case '\n': + escaped = true; + i = j; + continue parseValue; + default: + if (!inDouble && !inSingle && !literal) { + if (char2 === escapeChar) { + // add the escaped character + escapedValue = escapedValue + char; + // now start parsing from the next escape character + i = i + 1; + } else { + // the expectation is that this j = i + 2 here + escapedValue = escapedValue + char + char2; + i = j; + } + continue parseValue; + } + break whitespaceCheck; + } + } + if (inDouble) { + if (char === '\r') { + escaped = true; + i = i + 2; + } else if (char === '\n') { + escaped = true; + i++; + } else if (char !== '"') { + if (char === escapeChar) i++; + escapedValue = escapedValue + escapeChar; + } + continue parseValue; + } else if (inSingle || literal) { + if (char === '\r') { + escaped = true; + i = i + 2; + } else if (char === '\n') { + escaped = true; + i++; + } else escapedValue = escapedValue + escapeChar; + continue parseValue; + } else if (char === escapeChar) { + // double escape, append one and move on + escapedValue = escapedValue + escapeChar; + i++; + } else if (char === '\r') { + escaped = true; + // offset one more for \r\n + i = i + 2; + } else if (char === '\n') { + escaped = true; + i++; + start = i; + } else { + // any other escapes are simply ignored + escapedValue = escapedValue + char; + i++; + } + break; + case ' ': + case '\t': + if (escaped && commentCheck === -1) commentCheck = i; + escapedValue = escapedValue + char; + break; + case '\r': + i++; + case '\n': + if (escaped && commentCheck !== -1) { + // rollback and remove the whitespace that was previously appended + escapedValue = escapedValue.substring(0, escapedValue.length - (i - commentCheck - 1)); + commentCheck = -1; + } + break; + case '#': + // a newline was escaped and now there's a comment + if (escaped) { + if (commentCheck !== -1) { + // rollback and remove the whitespace that was previously appended + escapedValue = escapedValue.substring(0, escapedValue.length - (i - commentCheck)); + commentCheck = -1; + } + newlineCheck: for(let j = i + 1; j < value.length; j++)switch(value.charAt(j)){ + case '\r': + j++; + case '\n': + i = j; + break newlineCheck; + } + continue parseValue; + } + default: + if (escaped) { + escaped = false; + commentCheck = -1; + } + escapedValue = escapedValue + char; + break; + } + } + return escapedValue; + } +} +$7409057aad957c3f$exports.Property = $7409057aad957c3f$var$Property; + + +var $2ca485aa86c8977f$exports = {}; +"use strict"; +Object.defineProperty($2ca485aa86c8977f$exports, "__esModule", { + value: true +}); +$2ca485aa86c8977f$exports.PropertyInstruction = void 0; + + + + + +class $2ca485aa86c8977f$var$PropertyInstruction extends $dbcf927cc6c66108$exports.Instruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + this.properties = undefined; + } + getProperties() { + if (this.properties === undefined) { + let args = this.getPropertyArguments(); + if (args.length === 0) this.properties = []; + else if (args.length === 1) this.properties = [ + new $7409057aad957c3f$exports.Property(this.document, this.escapeChar, args[0]) + ]; + else if (args.length === 2) { + if (args[0].getValue().indexOf('=') === -1) this.properties = [ + new $7409057aad957c3f$exports.Property(this.document, this.escapeChar, args[0], args[1]) + ]; + else this.properties = [ + new $7409057aad957c3f$exports.Property(this.document, this.escapeChar, args[0]), + new $7409057aad957c3f$exports.Property(this.document, this.escapeChar, args[1]) + ]; + } else if (args[0].getValue().indexOf('=') === -1) { + let text = this.document.getText(); + let start = args[1].getRange().start; + let end = args[args.length - 1].getRange().end; + text = text.substring(this.document.offsetAt(start), this.document.offsetAt(end)); + this.properties = [ + new $7409057aad957c3f$exports.Property(this.document, this.escapeChar, args[0], new $fd8464c2f2e17cdd$exports.Argument(text, $06cc642bc3981461$exports.Range.create(args[1].getRange().start, args[args.length - 1].getRange().end))) + ]; + } else { + this.properties = []; + for(let i = 0; i < args.length; i++)this.properties.push(new $7409057aad957c3f$exports.Property(this.document, this.escapeChar, args[i])); + } + } + return this.properties; + } + /** + * Goes from the back of the string and returns the first + * non-whitespace character that is found. If an escape character + * is found with newline characters, the escape character will + * not be considered a non-whitespace character and its index in + * the string will not be returned. + * + * @param content the string to search through + * @return the index in the string for the first non-whitespace + * character when searching from the end of the string + */ findTrailingNonWhitespace(content) { + // loop back to find the first non-whitespace character + let index = content.length; + whitespaceCheck: for(let i = content.length - 1; i >= 0; i--)switch(content.charAt(i)){ + case ' ': + case '\t': + continue; + case '\n': + if (content.charAt(i - 1) === '\r') i = i - 1; + case '\r': + newlineCheck: for(let j = i - 1; j >= 0; j--)switch(content.charAt(j)){ + case ' ': + case '\t': + case '\r': + case '\n': + case this.escapeChar: + continue; + default: + index = j; + break newlineCheck; + } + break whitespaceCheck; + default: + index = i; + break whitespaceCheck; + } + return index; + } + getPropertyArguments() { + const args = []; + let range = this.getInstructionRange(); + let instructionNameEndOffset = this.document.offsetAt(range.end); + let extra = instructionNameEndOffset - this.document.offsetAt(range.start); + let content = this.getTextContent(); + let fullArgs = content.substring(extra); + let start = $bbec610f07beb4be$exports.Util.findLeadingNonWhitespace(fullArgs, this.escapeChar); + if (start === -1) // only whitespace found, no arguments + return []; + const startPosition = this.document.positionAt(instructionNameEndOffset + start); + // records whether the parser has just processed an escaped newline or not, + // if our starting position is not on the same line as the instruction then + // the start of the content is already on an escaped line + let escaped = range.start.line !== startPosition.line; + // flag to track if the last character was an escape character + let endingEscape = false; + // position before the first escape character was hit + let mark = -1; + let end = this.findTrailingNonWhitespace(fullArgs); + content = fullArgs.substring(start, end + 1); + let argStart = escaped ? -1 : 0; + let spaced = false; + argumentLoop: for(let i = 0; i < content.length; i++){ + let char = content.charAt(i); + switch(char){ + case this.escapeChar: + if (i + 1 === content.length) { + endingEscape = true; + break argumentLoop; + } + if (!escaped) mark = i; + switch(content.charAt(i + 1)){ + case ' ': + case '\t': + if (!$bbec610f07beb4be$exports.Util.isWhitespace(content.charAt(i + 2))) { + // space was escaped, continue as normal + i = i + 1; + continue argumentLoop; + } + // whitespace encountered, need to figure out if it extends to EOL + whitespaceCheck: for(let j = i + 2; j < content.length; j++)switch(content.charAt(j)){ + case '\r': + // offset one more for \r\n + j++; + case '\n': + // whitespace only, safe to skip + escaped = true; + i = j; + continue argumentLoop; + case ' ': + case '\t': + break; + default: + // whitespace doesn't extend to EOL, create an argument + args.push(new $fd8464c2f2e17cdd$exports.Argument(content.substring(argStart, i), $06cc642bc3981461$exports.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + i + 2)))); + argStart = j; + break whitespaceCheck; + } + // go back and start processing the encountered non-whitespace character + i = argStart - 1; + continue argumentLoop; + case '\r': + // offset one more for \r\n + i++; + case '\n': + // immediately followed by a newline, skip the newline + escaped = true; + i = i + 1; + continue argumentLoop; + case this.escapeChar: + // double escape found, skip it and move on + if (argStart === -1) argStart = i; + i = i + 1; + continue argumentLoop; + default: + if (argStart === -1) argStart = i; + continue argumentLoop; + } + case '\'': + case '"': + if (spaced) { + this.createSpacedArgument(argStart, args, content, mark, instructionNameEndOffset, start); + // reset to start a new argument + argStart = i; + spaced = false; + } + if (argStart === -1) argStart = i; + for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){ + case char: + if (content.charAt(j + 1) !== ' ' && content.charAt(j + 1) !== '') { + // there is more content after this quote, + // continue so that it is all processed as + // one single argument + i = j; + continue argumentLoop; + } + args.push(new $fd8464c2f2e17cdd$exports.Argument(content.substring(argStart, j + 1), $06cc642bc3981461$exports.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + j + 1)))); + i = j; + argStart = -1; + continue argumentLoop; + case this.escapeChar: + j++; + break; + } + break argumentLoop; + case ' ': + case '\t': + if (escaped) // consider there to be a space only if an argument + // is not spanning multiple lines + { + if (argStart !== -1) spaced = true; + } else if (argStart !== -1) { + args.push(new $fd8464c2f2e17cdd$exports.Argument(content.substring(argStart, i), $06cc642bc3981461$exports.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + i)))); + argStart = -1; + } + break; + case '\r': + // offset one more for \r\n + i++; + case '\n': + spaced = false; + break; + case '#': + if (escaped) { + // a newline was escaped and now there's a comment + for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){ + case '\r': + j++; + case '\n': + i = j; + spaced = false; + continue argumentLoop; + } + // went to the end without finding a newline, + // the comment was the last line in the instruction, + // just stop parsing, create an argument if needed + if (argStart !== -1) { + let value = content.substring(argStart, mark); + args.push(new $fd8464c2f2e17cdd$exports.Argument(value, $06cc642bc3981461$exports.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + mark)))); + argStart = -1; + } + break argumentLoop; + } else if (argStart === -1) argStart = i; + break; + default: + if (spaced) { + this.createSpacedArgument(argStart, args, content, mark, instructionNameEndOffset, start); + // reset to start a new argument + argStart = i; + spaced = false; + } + escaped = false; + if (argStart === -1) argStart = i; + // variable detected + if (char === '$' && content.charAt(i + 1) === '{') { + let singleQuotes = false; + let doubleQuotes = false; + let escaped = false; + for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){ + case this.escapeChar: + escaped = true; + break; + case '\r': + case '\n': + break; + case '\'': + singleQuotes = !singleQuotes; + escaped = false; + break; + case '"': + doubleQuotes = !doubleQuotes; + escaped = false; + break; + case ' ': + case '\t': + if (escaped || singleQuotes || doubleQuotes) break; + i = j - 1; + continue argumentLoop; + case '}': + i = j; + continue argumentLoop; + default: + escaped = false; + break; + } + break argumentLoop; + } + break; + } + } + if (argStart !== -1 && argStart !== content.length) { + let end = endingEscape ? content.length - 1 : content.length; + let value = content.substring(argStart, end); + args.push(new $fd8464c2f2e17cdd$exports.Argument(value, $06cc642bc3981461$exports.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + end)))); + } + return args; + } + createSpacedArgument(argStart, args, content, mark, instructionNameEndOffset, start) { + if (argStart !== -1) args.push(new $fd8464c2f2e17cdd$exports.Argument(content.substring(argStart, mark), $06cc642bc3981461$exports.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + mark)))); + } +} +$2ca485aa86c8977f$exports.PropertyInstruction = $2ca485aa86c8977f$var$PropertyInstruction; + + +class $5a76935495422f85$var$Arg extends $2ca485aa86c8977f$exports.PropertyInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + this.property = null; + const args = this.getPropertyArguments(); + if (args.length === 1) this.property = new $7409057aad957c3f$exports.Property(this.document, this.escapeChar, args[0]); + else this.property = null; + } + /** + * Returns the variable defined by this ARG. This may be null if + * this ARG instruction is malformed and has no variable + * declaration. + */ getProperty() { + return this.property; + } +} +$5a76935495422f85$exports.Arg = $5a76935495422f85$var$Arg; + + +var $0649f3355b6da887$exports = {}; +"use strict"; +Object.defineProperty($0649f3355b6da887$exports, "__esModule", { + value: true +}); +$0649f3355b6da887$exports.Cmd = void 0; + +class $0649f3355b6da887$var$Cmd extends $3b4228194c2eb101$exports.JSONInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } +} +$0649f3355b6da887$exports.Cmd = $0649f3355b6da887$var$Cmd; + + +var $2c229c09a496385b$exports = {}; +"use strict"; +Object.defineProperty($2c229c09a496385b$exports, "__esModule", { + value: true +}); +$2c229c09a496385b$exports.Copy = void 0; + +class $2c229c09a496385b$var$Copy extends $3b4228194c2eb101$exports.JSONInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } + stopSearchingForFlags(argument) { + return argument.indexOf("--") === -1; + } + getFromFlag() { + let flags = super.getFlags(); + return flags.length === 1 && flags[0].getName() === "from" ? flags[0] : null; + } + /** + * Returns there here-documents that are defined in this RUN + * instruction. + * + * This API is experimental and subject to change. + */ getHeredocs() { + return super.getHeredocs(); + } +} +$2c229c09a496385b$exports.Copy = $2c229c09a496385b$var$Copy; + + +var $3d346d2ed0971cf2$exports = {}; +"use strict"; +Object.defineProperty($3d346d2ed0971cf2$exports, "__esModule", { + value: true +}); +$3d346d2ed0971cf2$exports.Env = void 0; + +class $3d346d2ed0971cf2$var$Env extends $2ca485aa86c8977f$exports.PropertyInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } + getProperties() { + return super.getProperties(); + } +} +$3d346d2ed0971cf2$exports.Env = $3d346d2ed0971cf2$var$Env; + + +var $b050b63cb7583129$exports = {}; +"use strict"; +Object.defineProperty($b050b63cb7583129$exports, "__esModule", { + value: true +}); +$b050b63cb7583129$exports.Entrypoint = void 0; + +class $b050b63cb7583129$var$Entrypoint extends $3b4228194c2eb101$exports.JSONInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } +} +$b050b63cb7583129$exports.Entrypoint = $b050b63cb7583129$var$Entrypoint; + + +var $85dc5fc1deed3858$exports = {}; +"use strict"; +Object.defineProperty($85dc5fc1deed3858$exports, "__esModule", { + value: true +}); +$85dc5fc1deed3858$exports.From = void 0; + + +class $85dc5fc1deed3858$var$From extends $49f4c57b99c16419$exports.ModifiableInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } + stopSearchingForFlags(argument) { + return argument.indexOf("--") === -1; + } + getImage() { + return this.getRangeContent(this.getImageRange()); + } + /** + * Returns the name of the image that will be used as the base image. + * + * @return the base image's name, or null if unspecified + */ getImageName() { + return this.getRangeContent(this.getImageNameRange()); + } + /** + * Returns the range that covers the name of the image used by + * this instruction. + * + * @return the range of the name of this instruction's argument, + * or null if no image has been specified + */ getImageNameRange() { + let range = this.getImageRange(); + if (range) { + let registryRange = this.getRegistryRange(); + if (registryRange) range.start = this.document.positionAt(this.document.offsetAt(registryRange.end) + 1); + let tagRange = this.getImageTagRange(); + let digestRange = this.getImageDigestRange(); + if (tagRange === null) { + if (digestRange !== null) range.end = this.document.positionAt(this.document.offsetAt(digestRange.start) - 1); + } else range.end = this.document.positionAt(this.document.offsetAt(tagRange.start) - 1); + return range; + } + return null; + } + /** + * Returns the range that covers the image argument of this + * instruction. This includes the tag or digest of the image if + * it has been specified by the instruction. + * + * @return the range of the image argument, or null if no image + * has been specified + */ getImageRange() { + let args = this.getArguments(); + return args.length !== 0 ? args[0].getRange() : null; + } + getImageTag() { + return this.getRangeContent(this.getImageTagRange()); + } + /** + * Returns the range in the document that the tag of the base + * image encompasses. + * + * @return the base image's tag's range in the document, or null + * if no tag has been specified + */ getImageTagRange() { + const range = this.getImageRange(); + if (range) { + const rangeStartOffset = this.document.offsetAt(range.start); + const content = this.getRangeContent(range); + const atIndex = this.indexOf(rangeStartOffset, content, '@'); + const slashIndex = content.indexOf('/'); + if (atIndex === -1) { + const colonIndex = this.lastIndexOf(rangeStartOffset, content, ':'); + if (colonIndex > slashIndex) return $06cc642bc3981461$exports.Range.create(range.start.line, range.start.character + colonIndex + 1, range.end.line, range.end.character); + } + const subcontent = content.substring(0, atIndex); + const subcolonIndex = subcontent.indexOf(':'); + if (subcolonIndex === -1) return null; + if (slashIndex === -1) // slash not found suggests no registry and no namespace defined + return $06cc642bc3981461$exports.Range.create(this.document.positionAt(rangeStartOffset + subcolonIndex + 1), this.document.positionAt(rangeStartOffset + atIndex)); + // both colon and slash found, check if it is a port + if (subcolonIndex < slashIndex) return null; + return $06cc642bc3981461$exports.Range.create(this.document.positionAt(rangeStartOffset + subcolonIndex + 1), this.document.positionAt(rangeStartOffset + subcontent.length)); + } + return null; + } + getImageDigest() { + return this.getRangeContent(this.getImageDigestRange()); + } + /** + * Returns the range in the document that the digest of the base + * image encompasses. + * + * @return the base image's digest's range in the document, or null + * if no digest has been specified + */ getImageDigestRange() { + let range = this.getImageRange(); + if (range) { + let content = this.getRangeContent(range); + let index = this.lastIndexOf(this.document.offsetAt(range.start), content, '@'); + if (index !== -1) return $06cc642bc3981461$exports.Range.create(range.start.line, range.start.character + index + 1, range.end.line, range.end.character); + } + return null; + } + indexOf(documentOffset, content, searchString) { + let index = content.indexOf(searchString); + const variables = this.getVariables(); + for(let i = 0; i < variables.length; i++){ + const position = documentOffset + index; + const variableRange = variables[i].getRange(); + if (this.document.offsetAt(variableRange.start) < position && position < this.document.offsetAt(variableRange.end)) { + const offset = this.document.offsetAt(variableRange.end) - documentOffset; + const substring = content.substring(offset); + const subIndex = substring.indexOf(searchString); + if (subIndex === -1) return -1; + index = subIndex + offset; + i = -1; + continue; + } + } + return index; + } + lastIndexOf(documentOffset, content, searchString) { + let index = content.lastIndexOf(searchString); + const variables = this.getVariables(); + for(let i = 0; i < variables.length; i++){ + const position = documentOffset + index; + const variableRange = variables[i].getRange(); + if (this.document.offsetAt(variableRange.start) < position && position < this.document.offsetAt(variableRange.end)) { + index = content.substring(0, index).lastIndexOf(searchString); + if (index === -1) return -1; + i = -1; + continue; + } + } + return index; + } + getRegistry() { + return this.getRangeContent(this.getRegistryRange()); + } + getRegistryRange() { + const range = this.getImageRange(); + if (range) { + const tagRange = this.getImageTagRange(); + const digestRange = this.getImageDigestRange(); + if (tagRange === null) { + if (digestRange !== null) range.end = this.document.positionAt(this.document.offsetAt(digestRange.start) - 1); + } else range.end = this.document.positionAt(this.document.offsetAt(tagRange.start) - 1); + const content = this.getRangeContent(range); + const rangeStart = this.document.offsetAt(range.start); + const startingSlashIndex = this.indexOf(rangeStart, content, '/'); + if (startingSlashIndex === -1) return null; + const portIndex = this.indexOf(rangeStart, content, ':'); + const dotIndex = this.indexOf(rangeStart, content, '.'); + // hostname detected + if (portIndex !== -1 || dotIndex !== -1) return $06cc642bc3981461$exports.Range.create(range.start, this.document.positionAt(rangeStart + startingSlashIndex)); + const registry = content.substring(0, startingSlashIndex); + // localhost registry detected + if (registry === 'localhost') return $06cc642bc3981461$exports.Range.create(range.start, this.document.positionAt(rangeStart + startingSlashIndex)); + } + return null; + } + getBuildStage() { + let range = this.getBuildStageRange(); + return range === null ? null : this.getRangeContent(range); + } + getBuildStageRange() { + let args = this.getArguments(); + if (args.length > 2 && args[1].getValue().toUpperCase() === "AS") return args[2].getRange(); + return null; + } + getPlatformFlag() { + let flags = super.getFlags(); + return flags.length === 1 && flags[0].getName() === "platform" ? flags[0] : null; + } +} +$85dc5fc1deed3858$exports.From = $85dc5fc1deed3858$var$From; + + +var $42116fe91fad7e91$exports = {}; +"use strict"; +Object.defineProperty($42116fe91fad7e91$exports, "__esModule", { + value: true +}); +$42116fe91fad7e91$exports.Healthcheck = void 0; + +class $42116fe91fad7e91$var$Healthcheck extends $49f4c57b99c16419$exports.ModifiableInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } + stopSearchingForFlags(argument) { + argument = argument.toUpperCase(); + return argument === "CMD" || argument === "NONE"; + } + getSubcommand() { + let args = this.getArguments(); + return args.length !== 0 ? args[0] : null; + } +} +$42116fe91fad7e91$exports.Healthcheck = $42116fe91fad7e91$var$Healthcheck; + + +var $22b9fcf785f8455d$exports = {}; +"use strict"; +Object.defineProperty($22b9fcf785f8455d$exports, "__esModule", { + value: true +}); +$22b9fcf785f8455d$exports.Label = void 0; + + +class $22b9fcf785f8455d$var$Label extends $2ca485aa86c8977f$exports.PropertyInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } + getVariables() { + const variables = super.getVariables(); + const properties = this.getProperties(); + // iterate over all of this LABEL's properties + for (const property of properties){ + const value = property.getUnescapedValue(); + // check if the value is contained in single quotes, + // single quotes would indicate a literal value + if (value !== null && value.length > 2 && value.charAt(0) === '\'' && value.charAt(value.length - 1) === '\'') { + const range = property.getValueRange(); + for(let i = 0; i < variables.length; i++)// if a variable is in a single quote, remove it from the list + if ($bbec610f07beb4be$exports.Util.isInsideRange(variables[i].getRange().start, range)) { + variables.splice(i, 1); + i--; + } + } + } + return variables; + } + getProperties() { + return super.getProperties(); + } +} +$22b9fcf785f8455d$exports.Label = $22b9fcf785f8455d$var$Label; + + +var $41207e33912a07be$exports = {}; +"use strict"; +Object.defineProperty($41207e33912a07be$exports, "__esModule", { + value: true +}); +$41207e33912a07be$exports.Onbuild = void 0; + + + +class $41207e33912a07be$var$Onbuild extends $dbcf927cc6c66108$exports.Instruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } + getTrigger() { + let trigger = this.getTriggerWord(); + return trigger === null ? null : trigger.toUpperCase(); + } + getTriggerWord() { + return this.getRangeContent(this.getTriggerRange()); + } + getTriggerRange() { + let args = this.getArguments(); + return args.length > 0 ? args[0].getRange() : null; + } + getTriggerInstruction() { + let triggerRange = this.getTriggerRange(); + if (triggerRange === null) return null; + let args = this.getArguments(); + return $256398e441c094f1$exports.Parser.createInstruction(this.document, this.dockerfile, this.escapeChar, $06cc642bc3981461$exports.Range.create(args[0].getRange().start, this.getRange().end), this.getTriggerWord(), triggerRange); + } +} +$41207e33912a07be$exports.Onbuild = $41207e33912a07be$var$Onbuild; + + +var $c91ee04cc9874545$exports = {}; +"use strict"; +Object.defineProperty($c91ee04cc9874545$exports, "__esModule", { + value: true +}); +$c91ee04cc9874545$exports.Run = void 0; + +class $c91ee04cc9874545$var$Run extends $3b4228194c2eb101$exports.JSONInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } + stopSearchingForFlags(argument) { + return argument.indexOf("--") === -1; + } + /** + * Returns there here-documents that are defined in this RUN + * instruction. + * + * This API is experimental and subject to change. + */ getHeredocs() { + return super.getHeredocs(); + } +} +$c91ee04cc9874545$exports.Run = $c91ee04cc9874545$var$Run; + + +var $7aeadbd8c3d6679b$exports = {}; +"use strict"; +Object.defineProperty($7aeadbd8c3d6679b$exports, "__esModule", { + value: true +}); +$7aeadbd8c3d6679b$exports.Shell = void 0; + +class $7aeadbd8c3d6679b$var$Shell extends $3b4228194c2eb101$exports.JSONInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } +} +$7aeadbd8c3d6679b$exports.Shell = $7aeadbd8c3d6679b$var$Shell; + + +var $ff5aeb8c074730af$exports = {}; +"use strict"; +Object.defineProperty($ff5aeb8c074730af$exports, "__esModule", { + value: true +}); +$ff5aeb8c074730af$exports.Stopsignal = void 0; + +class $ff5aeb8c074730af$var$Stopsignal extends $dbcf927cc6c66108$exports.Instruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } +} +$ff5aeb8c074730af$exports.Stopsignal = $ff5aeb8c074730af$var$Stopsignal; + + +var $8cb1c98967cfcc95$exports = {}; +"use strict"; +Object.defineProperty($8cb1c98967cfcc95$exports, "__esModule", { + value: true +}); +$8cb1c98967cfcc95$exports.Workdir = void 0; + +class $8cb1c98967cfcc95$var$Workdir extends $dbcf927cc6c66108$exports.Instruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } + /** + * Returns the path that has been defined. Note that this path may + * be absolute or relative depending on what was written in the + * instruction. + * + * @return the working directory's path, or null if this + * instruction has no arguments + */ getPath() { + return this.getArgumentsContent(); + } + /** + * Returns the absolute path that this instruction resolves to. The + * function will inspect prior WORKDIR instructions in the current + * image or another build stage in the Dockerfile to try to + * determine this. + * + * @return the absolute path of the working directory, or null if + * this instruction has no arguments, or undefined if it + * cannot be determined because only relative paths could be + * found + */ getAbsolutePath() { + const path = this.getPath(); + if (path === null || path.startsWith("/")) return path; + const startLine = this.getRange().start.line; + const hierarchy = this.dockerfile.getStageHierarchy(startLine); + for(let i = hierarchy.length - 1; i >= 0; i--){ + const workdirs = hierarchy[i].getWORKDIRs(); + for(let j = workdirs.length - 1; j >= 0; j--)if (workdirs[j].getRange().start.line < startLine) { + const parent = workdirs[j].getAbsolutePath(); + if (parent === undefined || parent === null) return undefined; + return parent.endsWith("/") ? parent + path : parent + "/" + path; + } + } + return undefined; + } +} +$8cb1c98967cfcc95$exports.Workdir = $8cb1c98967cfcc95$var$Workdir; + + +var $a7b0ede9dd0dae28$exports = {}; +"use strict"; +Object.defineProperty($a7b0ede9dd0dae28$exports, "__esModule", { + value: true +}); +$a7b0ede9dd0dae28$exports.User = void 0; + +class $a7b0ede9dd0dae28$var$User extends $dbcf927cc6c66108$exports.Instruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } +} +$a7b0ede9dd0dae28$exports.User = $a7b0ede9dd0dae28$var$User; + + +var $10b381ecc702b5cf$exports = {}; +"use strict"; +Object.defineProperty($10b381ecc702b5cf$exports, "__esModule", { + value: true +}); +$10b381ecc702b5cf$exports.Volume = void 0; + +class $10b381ecc702b5cf$var$Volume extends $3b4228194c2eb101$exports.JSONInstruction { + constructor(document, range, dockerfile, escapeChar, instruction, instructionRange){ + super(document, range, dockerfile, escapeChar, instruction, instructionRange); + } +} +$10b381ecc702b5cf$exports.Volume = $10b381ecc702b5cf$var$Volume; + + +var $53dd7a59ad4b3887$exports = {}; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Remy Suen. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ 'use strict'; +Object.defineProperty($53dd7a59ad4b3887$exports, "__esModule", { + value: true +}); +$53dd7a59ad4b3887$exports.Dockerfile = void 0; + + +var $319e196289bc5b12$exports = {}; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Remy Suen. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ 'use strict'; +Object.defineProperty($319e196289bc5b12$exports, "__esModule", { + value: true +}); +$319e196289bc5b12$exports.ImageTemplate = void 0; + + + + + + + + + + + +class $319e196289bc5b12$var$ImageTemplate { + constructor(){ + this.comments = []; + this.instructions = []; + } + addComment(comment) { + this.comments.push(comment); + } + getComments() { + return this.comments; + } + addInstruction(instruction) { + this.instructions.push(instruction); + } + getInstructions() { + return this.instructions; + } + getInstructionAt(line) { + for (let instruction of this.instructions){ + if ($bbec610f07beb4be$exports.Util.isInsideRange($06cc642bc3981461$exports.Position.create(line, 0), instruction.getRange())) return instruction; + } + return null; + } + /** + * Gets all the ARG instructions that are defined in this image. + */ getARGs() { + let args = []; + for (let instruction of this.instructions)if (instruction instanceof $5a76935495422f85$exports.Arg) args.push(instruction); + return args; + } + /** + * Gets all the CMD instructions that are defined in this image. + */ getCMDs() { + let cmds = []; + for (let instruction of this.instructions)if (instruction instanceof $0649f3355b6da887$exports.Cmd) cmds.push(instruction); + return cmds; + } + /** + * Gets all the COPY instructions that are defined in this image. + */ getCOPYs() { + let copies = []; + for (let instruction of this.instructions)if (instruction instanceof $2c229c09a496385b$exports.Copy) copies.push(instruction); + return copies; + } + /** + * Gets all the ENTRYPOINT instructions that are defined in this image. + */ getENTRYPOINTs() { + let froms = []; + for (let instruction of this.instructions)if (instruction instanceof $b050b63cb7583129$exports.Entrypoint) froms.push(instruction); + return froms; + } + /** + * Gets all the ENV instructions that are defined in this image. + */ getENVs() { + let args = []; + for (let instruction of this.instructions)if (instruction instanceof $3d346d2ed0971cf2$exports.Env) args.push(instruction); + return args; + } + getFROM() { + for (const instruction of this.instructions){ + if (instruction instanceof $85dc5fc1deed3858$exports.From) return instruction; + } + return null; + } + /** + * Gets all the FROM instructions that are defined in this image. + */ getFROMs() { + let froms = []; + for (let instruction of this.instructions)if (instruction instanceof $85dc5fc1deed3858$exports.From) froms.push(instruction); + return froms; + } + /** + * Gets all the HEALTHCHECK instructions that are defined in this image. + */ getHEALTHCHECKs() { + let froms = []; + for (let instruction of this.instructions)if (instruction instanceof $42116fe91fad7e91$exports.Healthcheck) froms.push(instruction); + return froms; + } + getWORKDIRs() { + const workdirs = []; + for (const instruction of this.instructions)if (instruction instanceof $8cb1c98967cfcc95$exports.Workdir) workdirs.push(instruction); + return workdirs; + } + getOnbuildTriggers() { + let triggers = []; + for (let instruction of this.instructions)if (instruction instanceof $41207e33912a07be$exports.Onbuild) { + let trigger = instruction.getTriggerInstruction(); + if (trigger) triggers.push(trigger); + } + return triggers; + } + getAvailableVariables(currentLine) { + const variables = []; + for (const arg of this.getARGs())if (arg.isBefore(currentLine)) { + const property = arg.getProperty(); + if (property) { + const variable = property.getName(); + if (variables.indexOf(variable) === -1) variables.push(variable); + } + } + for (const env of this.getENVs()){ + if (env.isBefore(currentLine)) for (const property of env.getProperties()){ + const variable = property.getName(); + if (variables.indexOf(variable) === -1) variables.push(variable); + } + } + return variables; + } + /** + * Resolves a variable with the given name at the specified line + * to its value. If null is returned, then the variable has been + * defined but no value was given. If undefined is returned, then + * a variable with the given name has not been defined yet as of + * the given line. + * + * @param variable the name of the variable to resolve + * @param line the line number that the variable is on, zero-based + * @return the value of the variable as defined by an ARG or ENV + * instruction, or null if no value has been specified, or + * undefined if a variable with the given name has not + * been defined + */ resolveVariable(variable, line) { + let envs = this.getENVs(); + for(let i = envs.length - 1; i >= 0; i--){ + if (envs[i].isBefore(line)) for (let property of envs[i].getProperties()){ + if (property.getName() === variable) return property.getValue(); + } + } + let args = this.getARGs(); + for(let i = args.length - 1; i >= 0; i--)if (args[i].isBefore(line)) { + let property = args[i].getProperty(); + if (property && property.getName() === variable) return property.getValue(); + } + return undefined; + } + getRange() { + const instructions = this.getInstructions(); + if (instructions.length === 0) // all templates should have instructions, this only happens for + // the initial set of instruction + return $06cc642bc3981461$exports.Range.create(0, 0, 0, 0); + const instructionStart = instructions[0].getRange().start; + const instructionEnd = instructions[instructions.length - 1].getRange().end; + return $06cc642bc3981461$exports.Range.create(instructionStart, instructionEnd); + } + contains(position) { + const range = this.getRange(); + if (range === null) return false; + return $bbec610f07beb4be$exports.Util.isInsideRange(position, range); + } +} +$319e196289bc5b12$exports.ImageTemplate = $319e196289bc5b12$var$ImageTemplate; + + + + + +class $53dd7a59ad4b3887$var$Dockerfile extends $319e196289bc5b12$exports.ImageTemplate { + constructor(document){ + super(); + this.initialInstructions = new $319e196289bc5b12$exports.ImageTemplate(); + this.buildStages = []; + this.directives = []; + /** + * Whether a FROM instruction has been added to this Dockerfile or not. + */ this.foundFrom = false; + this.document = document; + } + getEscapeCharacter() { + for (const directive of this.directives)if (directive.getDirective() === $54b0c2f7fc5ba86a$exports.Directive.escape) { + const value = directive.getValue(); + if (value === '\\' || value === '`') return value; + } + return '\\'; + } + getInitialARGs() { + return this.initialInstructions.getARGs(); + } + getContainingImage(position) { + let range = $06cc642bc3981461$exports.Range.create($06cc642bc3981461$exports.Position.create(0, 0), this.document.positionAt(this.document.getText().length)); + if (!$bbec610f07beb4be$exports.Util.isInsideRange(position, range)) // not inside the document, invalid position + return null; + if (this.initialInstructions.getComments().length > 0 || this.initialInstructions.getInstructions().length > 0) { + if ($bbec610f07beb4be$exports.Util.isInsideRange(position, this.initialInstructions.getRange())) return this.initialInstructions; + } + for (const buildStage of this.buildStages){ + if ($bbec610f07beb4be$exports.Util.isInsideRange(position, buildStage.getRange())) return buildStage; + } + return this; + } + addInstruction(instruction) { + if (instruction.getKeyword() === $54b0c2f7fc5ba86a$exports.Keyword.FROM) { + this.currentBuildStage = new $319e196289bc5b12$exports.ImageTemplate(); + this.buildStages.push(this.currentBuildStage); + this.foundFrom = true; + } else if (!this.foundFrom) this.initialInstructions.addInstruction(instruction); + if (this.foundFrom) this.currentBuildStage.addInstruction(instruction); + super.addInstruction(instruction); + } + setDirectives(directives) { + this.directives = directives; + } + getDirective() { + return this.directives.length === 0 ? null : this.directives[0]; + } + getDirectives() { + return this.directives; + } + resolveVariable(variable, line) { + for (let from of this.getFROMs()){ + let range = from.getRange(); + if (range.start.line <= line && line <= range.end.line) { + // resolve the FROM variable against the initial ARGs + let initialARGs = new $319e196289bc5b12$exports.ImageTemplate(); + for (let instruction of this.initialInstructions.getARGs())initialARGs.addInstruction(instruction); + return initialARGs.resolveVariable(variable, line); + } + } + let image = this.getContainingImage($06cc642bc3981461$exports.Position.create(line, 0)); + if (image === null) return undefined; + let resolvedVariable = image.resolveVariable(variable, line); + if (resolvedVariable === null) { + // refers to an uninitialized ARG variable, + // try resolving it against the initial ARGs then + let initialARGs = new $319e196289bc5b12$exports.ImageTemplate(); + for (let instruction of this.initialInstructions.getARGs())initialARGs.addInstruction(instruction); + return initialARGs.resolveVariable(variable, line); + } + return resolvedVariable; + } + getAvailableVariables(currentLine) { + if (this.getInstructionAt(currentLine) instanceof $85dc5fc1deed3858$exports.From) { + let variables = []; + for (let arg of this.getInitialARGs()){ + let property = arg.getProperty(); + if (property) variables.push(property.getName()); + } + return variables; + } + let image = this.getContainingImage($06cc642bc3981461$exports.Position.create(currentLine, 0)); + return image ? image.getAvailableVariables(currentLine) : []; + } + getParentStage(image) { + const templateFrom = image.getFROM(); + const imageName = templateFrom === null ? null : templateFrom.getImageName(); + if (imageName === null) return null; + for (const from of this.getFROMs())if (from.getBuildStage() === imageName) { + const range = from.getRange(); + // on the same line then it's an image that shares the name as the build stage + if (range.start.line === templateFrom.getRange().start.line) return null; + return this.getContainingImage(range.start); + } + return null; + } + getStageHierarchy(line) { + const image = this.getContainingImage($06cc642bc3981461$exports.Position.create(line, 0)); + if (image === null) return []; + const stages = [ + image + ]; + let stage = this.getParentStage(image); + while(stage !== null){ + stages.splice(0, 0, stage); + stage = this.getParentStage(stage); + } + return stages; + } + getAvailableWorkingDirectories(line) { + const availableDirectories = new Set(); + for (const image of this.getStageHierarchy(line)){ + for (const workdir of image.getWORKDIRs())if (workdir.getRange().end.line < line) { + let directory = workdir.getAbsolutePath(); + if (directory !== undefined && directory !== null) { + if (!directory.endsWith("/")) directory += "/"; + availableDirectories.add(directory); + } + } + } + return Array.from(availableDirectories); + } + /** + * Internally reorganize the comments in the Dockerfile and allocate + * them to the relevant build stages that they belong to. + */ organizeComments() { + const comments = this.getComments(); + for(let i = 0; i < comments.length; i++)if ($bbec610f07beb4be$exports.Util.isInsideRange(comments[i].getRange().end, this.initialInstructions.getRange())) this.initialInstructions.addComment(comments[i]); + else { + for (const buildStage of this.buildStages)if ($bbec610f07beb4be$exports.Util.isInsideRange(comments[i].getRange().start, buildStage.getRange())) buildStage.addComment(comments[i]); + } + } + getRange() { + const comments = this.getComments(); + const instructions = this.getInstructions(); + let range = null; + if (comments.length === 0) { + if (instructions.length > 0) range = $06cc642bc3981461$exports.Range.create(instructions[0].getRange().start, instructions[instructions.length - 1].getRange().end); + } else if (instructions.length === 0) range = $06cc642bc3981461$exports.Range.create(comments[0].getRange().start, comments[comments.length - 1].getRange().end); + else { + const commentStart = comments[0].getRange().start; + const commentEnd = comments[comments.length - 1].getRange().end; + const instructionStart = instructions[0].getRange().start; + const instructionEnd = instructions[instructions.length - 1].getRange().end; + if (commentStart.line < instructionStart.line) { + if (commentEnd.line < instructionEnd.line) range = $06cc642bc3981461$exports.Range.create(commentStart, instructionEnd); + range = $06cc642bc3981461$exports.Range.create(commentStart, commentEnd); + } else if (commentEnd.line < instructionEnd.line) range = $06cc642bc3981461$exports.Range.create(instructionStart, instructionEnd); + else range = $06cc642bc3981461$exports.Range.create(instructionStart, commentEnd); + } + if (range === null) { + if (this.directives.length === 0) return null; + return this.directives[0].getRange(); + } else if (this.directives.length === 0) return range; + return $06cc642bc3981461$exports.Range.create(this.directives[0].getRange().start, range.end); + } +} +$53dd7a59ad4b3887$exports.Dockerfile = $53dd7a59ad4b3887$var$Dockerfile; + + + + +class $256398e441c094f1$var$Parser { + constructor(){ + this.escapeChar = null; + } + static createInstruction(document, dockerfile, escapeChar, lineRange, instruction, instructionRange) { + switch(instruction.toUpperCase()){ + case "ADD": + return new $e74091221b948ca0$exports.Add(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "ARG": + return new $5a76935495422f85$exports.Arg(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "CMD": + return new $0649f3355b6da887$exports.Cmd(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "COPY": + return new $2c229c09a496385b$exports.Copy(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "ENTRYPOINT": + return new $b050b63cb7583129$exports.Entrypoint(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "ENV": + return new $3d346d2ed0971cf2$exports.Env(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "FROM": + return new $85dc5fc1deed3858$exports.From(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "HEALTHCHECK": + return new $42116fe91fad7e91$exports.Healthcheck(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "LABEL": + return new $22b9fcf785f8455d$exports.Label(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "ONBUILD": + return new $41207e33912a07be$exports.Onbuild(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "RUN": + return new $c91ee04cc9874545$exports.Run(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "SHELL": + return new $7aeadbd8c3d6679b$exports.Shell(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "STOPSIGNAL": + return new $ff5aeb8c074730af$exports.Stopsignal(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "WORKDIR": + return new $8cb1c98967cfcc95$exports.Workdir(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "USER": + return new $a7b0ede9dd0dae28$exports.User(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + case "VOLUME": + return new $10b381ecc702b5cf$exports.Volume(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + } + return new $dbcf927cc6c66108$exports.Instruction(document, lineRange, dockerfile, escapeChar, instruction, instructionRange); + } + getParserDirectives(document, buffer) { + // reset the escape directive in between runs + const directives = []; + this.escapeChar = ''; + const offset = $bbec610f07beb4be$exports.Util.isUTF8BOM(buffer.substring(0, 1)) ? 1 : 0; + directiveCheck: for(let i = offset; i < buffer.length; i++)switch(buffer.charAt(i)){ + case ' ': + case '\t': + break; + case '\r': + case '\n': + break directiveCheck; + case '#': + let directiveStart = -1; + let directiveEnd = -1; + for(let j = i + 1; j < buffer.length; j++){ + let char = buffer.charAt(j); + switch(char){ + case ' ': + case '\t': + if (directiveStart !== -1 && directiveEnd === -1) directiveEnd = j; + break; + case '\r': + case '\n': + break directiveCheck; + case '=': + let valueStart = -1; + let valueEnd = -1; + if (directiveEnd === -1) directiveEnd = j; + // assume the line ends with the file + let lineEnd = buffer.length; + directiveValue: for(let k = j + 1; k < buffer.length; k++){ + char = buffer.charAt(k); + switch(char){ + case '\r': + case '\n': + if (valueStart !== -1 && valueEnd === -1) valueEnd = k; + // line break found, reset + lineEnd = k; + break directiveValue; + case '\t': + case ' ': + if (valueStart !== -1 && valueEnd === -1) valueEnd = k; + continue; + default: + if (valueStart === -1) valueStart = k; + break; + } + } + if (directiveStart === -1) break directiveCheck; + if (valueStart === -1) { + // no non-whitespace characters found, highlight all the characters then + valueStart = j + 1; + valueEnd = lineEnd; + } else if (valueEnd === -1) // reached EOF + valueEnd = buffer.length; + const lineRange = $06cc642bc3981461$exports.Range.create(document.positionAt(i), document.positionAt(lineEnd)); + const nameRange = $06cc642bc3981461$exports.Range.create(document.positionAt(directiveStart), document.positionAt(directiveEnd)); + const valueRange = $06cc642bc3981461$exports.Range.create(document.positionAt(valueStart), document.positionAt(valueEnd)); + directives.push(new $68331fc9b733e06e$exports.ParserDirective(document, lineRange, nameRange, valueRange)); + directiveStart = -1; + if (buffer.charAt(valueEnd) === '\r') // skip over the \r + i = valueEnd + 1; + else i = valueEnd; + continue directiveCheck; + default: + if (directiveStart === -1) directiveStart = j; + break; + } + } + break; + default: + break directiveCheck; + } + return directives; + } + parse(buffer) { + this.document = $af5dbdd39a2d358f$exports.TextDocument.create("", "", 0, buffer); + this.buffer = buffer; + let dockerfile = new $53dd7a59ad4b3887$exports.Dockerfile(this.document); + let directives = this.getParserDirectives(this.document, this.buffer); + let offset = 0; + this.escapeChar = '\\'; + if (directives.length > 0) { + dockerfile.setDirectives(directives); + this.escapeChar = dockerfile.getEscapeCharacter(); + // start parsing after the directives + offset = this.document.offsetAt($06cc642bc3981461$exports.Position.create(directives.length, 0)); + } else if ($bbec610f07beb4be$exports.Util.isUTF8BOM(buffer.substring(0, 1))) offset = 1; + for(let i = offset; i < this.buffer.length; i++){ + const char = this.buffer.charAt(i); + switch(char){ + case ' ': + case '\t': + case '\r': + case '\n': + break; + case '#': + i = this.processComment(dockerfile, i); + break; + default: + i = this.processInstruction(dockerfile, char, i); + break; + } + } + dockerfile.organizeComments(); + return dockerfile; + } + processInstruction(dockerfile, char, start) { + let instruction = char; + let instructionEnd = -1; + let escapedInstruction = false; + instructionCheck: for(let i = start + 1; i < this.buffer.length; i++){ + char = this.buffer.charAt(i); + switch(char){ + case this.escapeChar: + escapedInstruction = true; + char = this.buffer.charAt(i + 1); + if (char === '\r' || char === '\n') { + if (instructionEnd === -1) instructionEnd = i; + i++; + } else if (char === ' ' || char === '\t') { + for(let j = i + 2; j < this.buffer.length; j++)switch(this.buffer.charAt(j)){ + case ' ': + case '\t': + break; + case '\r': + case '\n': + i = j; + continue instructionCheck; + default: + // found an argument, mark end of instruction + instructionEnd = i + 1; + instruction = instruction + this.escapeChar; + i = j - 2; + continue instructionCheck; + } + // reached EOF + instructionEnd = i + 1; + instruction = instruction + this.escapeChar; + break instructionCheck; + } else { + instructionEnd = i + 1; + instruction = instruction + this.escapeChar; + // reset and consider it as one contiguous word + escapedInstruction = false; + } + break; + case ' ': + case '\t': + if (escapedInstruction) { + // on an escaped newline, need to search for non-whitespace + escapeCheck: for(let j = i + 1; j < this.buffer.length; j++)switch(this.buffer.charAt(j)){ + case ' ': + case '\t': + break; + case '\r': + case '\n': + i = j; + continue instructionCheck; + default: + break escapeCheck; + } + escapedInstruction = false; + } + if (instructionEnd === -1) instructionEnd = i; + i = this.processArguments(dockerfile, instruction, instructionEnd, start, i); + dockerfile.addInstruction(this.createInstruction(dockerfile, instruction, start, instructionEnd, i)); + return i; + case '\r': + case '\n': + if (escapedInstruction) continue; + if (instructionEnd === -1) instructionEnd = i; + dockerfile.addInstruction(this.createInstruction(dockerfile, instruction, start, i, i)); + return i; + case '#': + if (escapedInstruction) continue; + default: + instructionEnd = i + 1; + instruction = instruction + char; + escapedInstruction = false; + break; + } + } + // reached EOF + if (instructionEnd === -1) instructionEnd = this.buffer.length; + dockerfile.addInstruction(this.createInstruction(dockerfile, instruction, start, instructionEnd, this.buffer.length)); + return this.buffer.length; + } + processHeredocs(instruction, offset) { + let keyword = instruction.getKeyword(); + if (keyword === $54b0c2f7fc5ba86a$exports.Keyword.ONBUILD) { + instruction = instruction.getTriggerInstruction(); + if (instruction === null) return offset; + keyword = instruction.getKeyword(); + } + if (keyword !== $54b0c2f7fc5ba86a$exports.Keyword.ADD && keyword !== $54b0c2f7fc5ba86a$exports.Keyword.COPY && keyword !== $54b0c2f7fc5ba86a$exports.Keyword.RUN) return offset; + const heredocs = []; + for (const arg of instruction.getArguments()){ + const value = arg.getValue(); + if (value.startsWith("<<") && value.length > 2) { + const name = $bbec610f07beb4be$exports.Util.parseHeredocName(value); + if (name !== null) heredocs.push(name); + } + } + if (heredocs.length > 0) for (const heredoc of heredocs)offset = this.parseHeredoc(heredoc, offset); + return offset; + } + processArguments(dockerfile, instruction, instructionEnd, start, offset) { + let escaped = false; + argumentsCheck: for(let i = offset + 1; i < this.buffer.length; i++)switch(this.buffer.charAt(i)){ + case '\r': + case '\n': + if (escaped) continue; + return this.processHeredocs(this.createInstruction(dockerfile, instruction, start, instructionEnd, i), i); + case this.escapeChar: + const next = this.buffer.charAt(i + 1); + if (next === '\n' || next === '\r') { + escaped = true; + i++; + } else if (next === ' ' || next === '\t') { + for(let j = i + 2; j < this.buffer.length; j++)switch(this.buffer.charAt(j)){ + case ' ': + case '\t': + break; + case '\r': + case '\n': + escaped = true; + default: + i = j; + continue argumentsCheck; + } + // reached EOF + return this.buffer.length; + } + continue; + case '#': + if (escaped) { + i = this.processComment(dockerfile, i); + continue argumentsCheck; + } + break; + case ' ': + case '\t': + break; + default: + if (escaped) escaped = false; + break; + } + return this.buffer.length; + } + processComment(dockerfile, start) { + let end = this.buffer.length; + commentLoop: for(let i = start + 1; i < this.buffer.length; i++)switch(this.buffer.charAt(i)){ + case '\r': + case '\n': + end = i; + break commentLoop; + } + const range = $06cc642bc3981461$exports.Range.create(this.document.positionAt(start), this.document.positionAt(end)); + dockerfile.addComment(new $56b05761038f14db$exports.Comment(this.document, range)); + return end; + } + parseHeredoc(heredocName, offset) { + let startWord = -1; + let lineStart = true; + for(let i = offset; i < this.buffer.length; i++)switch(this.buffer.charAt(i)){ + case ' ': + case '\t': + lineStart = false; + break; + case '\r': + case '\n': + if (startWord !== -1 && heredocName === this.buffer.substring(startWord, i)) return i; + startWord = -1; + lineStart = true; + break; + default: + if (lineStart) { + startWord = i; + lineStart = false; + } + break; + } + return this.buffer.length; + } + createInstruction(dockerfile, instruction, start, instructionEnd, end) { + const startPosition = this.document.positionAt(start); + const instructionRange = $06cc642bc3981461$exports.Range.create(startPosition, this.document.positionAt(instructionEnd)); + const lineRange = $06cc642bc3981461$exports.Range.create(startPosition, this.document.positionAt(end)); + return $256398e441c094f1$var$Parser.createInstruction(this.document, dockerfile, this.escapeChar, lineRange, instruction, instructionRange); + } +} +$256398e441c094f1$exports.Parser = $256398e441c094f1$var$Parser; + + + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Flag", { + enumerable: true, + get: function() { + return $d4e9108e9cb28d40$exports.Flag; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Instruction", { + enumerable: true, + get: function() { + return $dbcf927cc6c66108$exports.Instruction; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Line", { + enumerable: true, + get: function() { + return $20f51f7aa637c181$exports.Line; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "ParserDirective", { + enumerable: true, + get: function() { + return $68331fc9b733e06e$exports.ParserDirective; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Property", { + enumerable: true, + get: function() { + return $7409057aad957c3f$exports.Property; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Variable", { + enumerable: true, + get: function() { + return $5dece0b9c7342528$exports.Variable; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Add", { + enumerable: true, + get: function() { + return $e74091221b948ca0$exports.Add; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Arg", { + enumerable: true, + get: function() { + return $5a76935495422f85$exports.Arg; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Cmd", { + enumerable: true, + get: function() { + return $0649f3355b6da887$exports.Cmd; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Copy", { + enumerable: true, + get: function() { + return $2c229c09a496385b$exports.Copy; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Entrypoint", { + enumerable: true, + get: function() { + return $b050b63cb7583129$exports.Entrypoint; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Env", { + enumerable: true, + get: function() { + return $3d346d2ed0971cf2$exports.Env; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "From", { + enumerable: true, + get: function() { + return $85dc5fc1deed3858$exports.From; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Healthcheck", { + enumerable: true, + get: function() { + return $42116fe91fad7e91$exports.Healthcheck; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Heredoc", { + enumerable: true, + get: function() { + return $cb038d86fd1b3cbb$exports.Heredoc; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "JSONInstruction", { + enumerable: true, + get: function() { + return $3b4228194c2eb101$exports.JSONInstruction; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Label", { + enumerable: true, + get: function() { + return $22b9fcf785f8455d$exports.Label; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "ModifiableInstruction", { + enumerable: true, + get: function() { + return $49f4c57b99c16419$exports.ModifiableInstruction; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Onbuild", { + enumerable: true, + get: function() { + return $41207e33912a07be$exports.Onbuild; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "PropertyInstruction", { + enumerable: true, + get: function() { + return $2ca485aa86c8977f$exports.PropertyInstruction; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Run", { + enumerable: true, + get: function() { + return $c91ee04cc9874545$exports.Run; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Shell", { + enumerable: true, + get: function() { + return $7aeadbd8c3d6679b$exports.Shell; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Stopsignal", { + enumerable: true, + get: function() { + return $ff5aeb8c074730af$exports.Stopsignal; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "User", { + enumerable: true, + get: function() { + return $a7b0ede9dd0dae28$exports.User; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Volume", { + enumerable: true, + get: function() { + return $10b381ecc702b5cf$exports.Volume; + } +}); + +Object.defineProperty($54b0c2f7fc5ba86a$exports, "Workdir", { + enumerable: true, + get: function() { + return $8cb1c98967cfcc95$exports.Workdir; + } +}); +var $54b0c2f7fc5ba86a$var$Keyword; +(function(Keyword) { + Keyword["ADD"] = "ADD"; + Keyword["ARG"] = "ARG"; + Keyword["CMD"] = "CMD"; + Keyword["COPY"] = "COPY"; + Keyword["ENTRYPOINT"] = "ENTRYPOINT"; + Keyword["ENV"] = "ENV"; + Keyword["EXPOSE"] = "EXPOSE"; + Keyword["FROM"] = "FROM"; + Keyword["HEALTHCHECK"] = "HEALTHCHECK"; + Keyword["LABEL"] = "LABEL"; + Keyword["MAINTAINER"] = "MAINTAINER"; + Keyword["ONBUILD"] = "ONBUILD"; + Keyword["RUN"] = "RUN"; + Keyword["SHELL"] = "SHELL"; + Keyword["STOPSIGNAL"] = "STOPSIGNAL"; + Keyword["USER"] = "USER"; + Keyword["VOLUME"] = "VOLUME"; + Keyword["WORKDIR"] = "WORKDIR"; +})($54b0c2f7fc5ba86a$var$Keyword || ($54b0c2f7fc5ba86a$exports.Keyword = $54b0c2f7fc5ba86a$var$Keyword = {})); +var $54b0c2f7fc5ba86a$var$Directive; +(function(Directive) { + Directive["escape"] = "escape"; + Directive["syntax"] = "syntax"; +})($54b0c2f7fc5ba86a$var$Directive || ($54b0c2f7fc5ba86a$exports.Directive = $54b0c2f7fc5ba86a$var$Directive = {})); +$54b0c2f7fc5ba86a$exports.DefaultVariables = [ + "ALL_PROXY", + "all_proxy", + "FTP_PROXY", + "ftp_proxy", + "HTTP_PROXY", + "http_proxy", + "HTTPS_PROXY", + "https_proxy", + "NO_PROXY", + "no_proxy" +]; +var $54b0c2f7fc5ba86a$var$DockerfileParser; +(function(DockerfileParser) { + function parse(content) { + let parser = new $256398e441c094f1$exports.Parser(); + return parser.parse(content); + } + DockerfileParser.parse = parse; +})($54b0c2f7fc5ba86a$var$DockerfileParser || ($54b0c2f7fc5ba86a$exports.DockerfileParser = $54b0c2f7fc5ba86a$var$DockerfileParser = {})); + + +function $76d06fcdc9bff1f5$export$77714ac6976d0316(args) { + const opts = (0, $ec42a3295e12ea98$export$2e2bcd8739ae039)(args, { + default: { + "cache-map": (0, $bbb9dac42384d004$exports.getInput)("cache-map") || "{}", + "dockerfile": (0, $bbb9dac42384d004$exports.getInput)("dockerfile") || "Dockerfile", + "scratch-dir": (0, $bbb9dac42384d004$exports.getInput)("scratch-dir") || "scratch", + "skip-extraction": ((0, $bbb9dac42384d004$exports.getInput)("skip-extraction") || "false") === "true", + "extract": process.env[`STATE_POST`] !== undefined, + "utility-image": (0, $bbb9dac42384d004$exports.getInput)("utility-image") || "ghcr.io/containerd/busybox:latest", + "builder": (0, $bbb9dac42384d004$exports.getInput)("builder") || "default", + "help": false + }, + string: [ + "cache-map", + "dockerfile", + "scratch-dir", + "cache-source", + "cache-target", + "utility-image", + "builder" + ], + boolean: [ + "skip-extraction", + "help", + "extract" + ], + alias: { + "help": [ + "h" + ] + } + }); + if (opts["cache-source"] && opts["cache-target"]) { + (0, $bbb9dac42384d004$exports.warning)("The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead."); + opts["cache-map"] = JSON.stringify({ + [opts["cache-source"]]: opts["cache-target"] + }); + } + return opts; +} +function $76d06fcdc9bff1f5$export$34512e3b2db52a4e() { + console.log(`build-cache-dance [options] +Save 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms + +Options: + --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step) + --cache-map The map of actions source paths to container destination paths or mount arguments + --dockerfile The Dockerfile to use for the auto-discovery of cache-map. Default: 'Dockerfile' + --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch' + --skip-extraction Skip the extraction of the cache from the docker container + --utility-image The container image to use for injecting and extracting the cache. Default: 'ghcr.io/containerd/busybox:latest' + --builder The name of the buildx builder to use for the cache injection + --help Show this help +`); +} +function $76d06fcdc9bff1f5$var$getCacheMapFromDockerfile(dockerfilePath) { + const dockerfileContent = (0, $evV72$fs).readFileSync(dockerfilePath, "utf-8"); + const dockerfile = (0, $54b0c2f7fc5ba86a$exports.DockerfileParser).parse(dockerfileContent); + const cacheMap = {}; + const runInstructions = dockerfile.getInstructions().filter((i)=>i.getKeyword() == 'RUN'); + for (const run of runInstructions){ + for (const flag of run.getFlags())if (flag.getName() == 'mount' && flag.getOption('type')?.getValue() == 'cache') { + // Extract the `id` flag which defaults to `target` when `id` is not set + // https://docs.docker.com/reference/dockerfile/#run---mounttypecache + const id = flag.getOption('id')?.getValue() || flag.getOption('target')?.getValue(); + if (id == null) throw new Error('cache mount must define id or target: ' + flag.toString() + ' in ' + run.toString()); + // The target in this action does not matter as long as it is + // different than /var/dance-cache of course + const target = "/var/cache-target"; + cacheMap[id] = { + id: id, + target: target + }; + } + } + return cacheMap; +} +function $76d06fcdc9bff1f5$export$8550a4d7282a21d0(opts) { + try { + const cacheMap = JSON.parse(opts["cache-map"]); + if (Object.keys(cacheMap).length !== 0) return cacheMap; + console.log(`No cache map provided. Trying to parse the Dockerfile to find the cache mount instructions...`); + const cacheMapFromDockerfile = $76d06fcdc9bff1f5$var$getCacheMapFromDockerfile(opts["dockerfile"]); + console.log(`Cache map parsed from Dockerfile: ${JSON.stringify(cacheMapFromDockerfile)}`); + return cacheMapFromDockerfile; + } catch (e) { + throw new Error(`Failed to parse cache map. Expected JSON, got:\n${opts["cache-map"]}\n${e}`); + } +} +function $76d06fcdc9bff1f5$export$febacabd0d01c81(cacheOptions) { + if (typeof cacheOptions === "string") // only the target path is provided + return cacheOptions; + else { + // object is provided + if ("target" in cacheOptions) return cacheOptions.target; + else throw new Error(`Expected the 'target' key in the cache options, got:\n${cacheOptions}`); + } +} +function $76d06fcdc9bff1f5$export$6d2b3473b0986646(cacheOptions) { + if (typeof cacheOptions === "string") // only the target path is provided + return ""; + else { + // object is provided + if ("uid" in cacheOptions && cacheOptions.uid !== undefined) return cacheOptions.uid.toString(); + else return ""; + } +} +function $76d06fcdc9bff1f5$export$4e7da3a92c2dad69(cacheOptions) { + if (typeof cacheOptions === "string") // only the target path is provided + return ""; + else { + // object is provided + if ("gid" in cacheOptions && cacheOptions.gid !== undefined) return cacheOptions.gid.toString(); + else return ""; + } +} +function $76d06fcdc9bff1f5$export$238315f403b84074(cacheOptions) { + if (typeof cacheOptions === "string") // only the target path is provided + return `type=cache,target=${cacheOptions}`; + else { + // other options are provided + const otherOptions = Object.entries(cacheOptions).map(([key, value])=>`${key}=${value}`).join(","); + return `type=cache,${otherOptions}`; + } +} +function $76d06fcdc9bff1f5$export$932deacb99c42350(opts) { + return opts["builder"] == null || opts["builder"] == "" ? "default" : opts["builder"]; +} + + +var $03c48d50d9d7039f$exports = {}; +var $89bc486561c4bcbd$exports = {}; +'use strict'; + +var $a374b65288da9789$exports = {}; +'use strict'; + +var $10eed8306e544906$exports = {}; +'use strict'; + +var $10bb1950eec72619$exports = {}; +const $10bb1950eec72619$var$isWindows = process.platform === 'win32' || process.env.OSTYPE === 'cygwin' || process.env.OSTYPE === 'msys'; + +const $10bb1950eec72619$var$COLON = $10bb1950eec72619$var$isWindows ? ';' : ':'; +var $0b1af7ee1bc1c627$exports = {}; + +var $0b1af7ee1bc1c627$var$core; + + +if (process.platform === 'win32' || $parcel$global.TESTING_WINDOWS) $0b1af7ee1bc1c627$var$core = (parcelRequire("dE8Bn")); +else $0b1af7ee1bc1c627$var$core = (parcelRequire("5dXTc")); +$0b1af7ee1bc1c627$exports = $0b1af7ee1bc1c627$var$isexe; +$0b1af7ee1bc1c627$var$isexe.sync = $0b1af7ee1bc1c627$var$sync; +function $0b1af7ee1bc1c627$var$isexe(path, options, cb) { + if (typeof options === 'function') { + cb = options; + options = {}; + } + if (!cb) { + if (typeof Promise !== 'function') throw new TypeError('callback not provided'); + return new Promise(function(resolve, reject) { + $0b1af7ee1bc1c627$var$isexe(path, options || {}, function(er, is) { + if (er) reject(er); + else resolve(is); + }); + }); + } + $0b1af7ee1bc1c627$var$core(path, options || {}, function(er, is) { + // ignore EACCES because that just means we aren't allowed to run it + if (er) { + if (er.code === 'EACCES' || options && options.ignoreErrors) { + er = null; + is = false; + } + } + cb(er, is); + }); +} +function $0b1af7ee1bc1c627$var$sync(path, options) { + // my kingdom for a filtered catch + try { + return $0b1af7ee1bc1c627$var$core.sync(path, options || {}); + } catch (er) { + if (options && options.ignoreErrors || er.code === 'EACCES') return false; + else throw er; + } +} + + +const $10bb1950eec72619$var$getNotFoundError = (cmd)=>Object.assign(new Error(`not found: ${cmd}`), { + code: 'ENOENT' + }); +const $10bb1950eec72619$var$getPathInfo = (cmd, opt)=>{ + const colon = opt.colon || $10bb1950eec72619$var$COLON; + // If it has a slash, then we don't bother searching the pathenv. + // just check the file itself, and that's it. + const pathEnv = cmd.match(/\//) || $10bb1950eec72619$var$isWindows && cmd.match(/\\/) ? [ + '' + ] : [ + // windows always checks the cwd first + ...$10bb1950eec72619$var$isWindows ? [ + process.cwd() + ] : [], + ...(opt.path || process.env.PATH || /* istanbul ignore next: very unusual */ '').split(colon) + ]; + const pathExtExe = $10bb1950eec72619$var$isWindows ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM' : ''; + const pathExt = $10bb1950eec72619$var$isWindows ? pathExtExe.split(colon) : [ + '' + ]; + if ($10bb1950eec72619$var$isWindows) { + if (cmd.indexOf('.') !== -1 && pathExt[0] !== '') pathExt.unshift(''); + } + return { + pathEnv: pathEnv, + pathExt: pathExt, + pathExtExe: pathExtExe + }; +}; +const $10bb1950eec72619$var$which = (cmd, opt, cb)=>{ + if (typeof opt === 'function') { + cb = opt; + opt = {}; + } + if (!opt) opt = {}; + const { pathEnv: pathEnv, pathExt: pathExt, pathExtExe: pathExtExe } = $10bb1950eec72619$var$getPathInfo(cmd, opt); + const found = []; + const step = (i)=>new Promise((resolve, reject)=>{ + if (i === pathEnv.length) return opt.all && found.length ? resolve(found) : reject($10bb1950eec72619$var$getNotFoundError(cmd)); + const ppRaw = pathEnv[i]; + const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; + const pCmd = $evV72$join(pathPart, cmd); + const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd; + resolve(subStep(p, i, 0)); + }); + const subStep = (p, i, ii)=>new Promise((resolve, reject)=>{ + if (ii === pathExt.length) return resolve(step(i + 1)); + const ext = pathExt[ii]; + $0b1af7ee1bc1c627$exports(p + ext, { + pathExt: pathExtExe + }, (er, is)=>{ + if (!er && is) { + if (opt.all) found.push(p + ext); + else return resolve(p + ext); + } + return resolve(subStep(p, i, ii + 1)); + }); + }); + return cb ? step(0).then((res)=>cb(null, res), cb) : step(0); +}; +const $10bb1950eec72619$var$whichSync = (cmd, opt)=>{ + opt = opt || {}; + const { pathEnv: pathEnv, pathExt: pathExt, pathExtExe: pathExtExe } = $10bb1950eec72619$var$getPathInfo(cmd, opt); + const found = []; + for(let i = 0; i < pathEnv.length; i++){ + const ppRaw = pathEnv[i]; + const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; + const pCmd = $evV72$join(pathPart, cmd); + const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd; + for(let j = 0; j < pathExt.length; j++){ + const cur = p + pathExt[j]; + try { + const is = $0b1af7ee1bc1c627$exports.sync(cur, { + pathExt: pathExtExe + }); + if (is) { + if (opt.all) found.push(cur); + else return cur; + } + } catch (ex) {} + } + } + if (opt.all && found.length) return found; + if (opt.nothrow) return null; + throw $10bb1950eec72619$var$getNotFoundError(cmd); +}; +$10bb1950eec72619$exports = $10bb1950eec72619$var$which; +$10bb1950eec72619$var$which.sync = $10bb1950eec72619$var$whichSync; + + +var $3487f7b8c16699fc$exports = {}; +'use strict'; +const $3487f7b8c16699fc$var$pathKey = (options = {})=>{ + const environment = options.env || process.env; + const platform = options.platform || process.platform; + if (platform !== 'win32') return 'PATH'; + return Object.keys(environment).reverse().find((key)=>key.toUpperCase() === 'PATH') || 'Path'; +}; +$3487f7b8c16699fc$exports = $3487f7b8c16699fc$var$pathKey; +// TODO: Remove this for the next major release +$3487f7b8c16699fc$exports.default = $3487f7b8c16699fc$var$pathKey; + + +function $10eed8306e544906$var$resolveCommandAttempt(parsed, withoutPathExt) { + const env = parsed.options.env || process.env; + const cwd = process.cwd(); + const hasCustomCwd = parsed.options.cwd != null; + // Worker threads do not have process.chdir() + const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled; + // If a custom `cwd` was specified, we need to change the process cwd + // because `which` will do stat calls but does not support a custom cwd + if (shouldSwitchCwd) try { + process.chdir(parsed.options.cwd); + } catch (err) { + /* Empty */ } + let resolved; + try { + resolved = $10bb1950eec72619$exports.sync(parsed.command, { + path: env[$3487f7b8c16699fc$exports({ + env: env + })], + pathExt: withoutPathExt ? $evV72$delimiter : undefined + }); + } catch (e) { /* Empty */ } finally{ if (shouldSwitchCwd) process.chdir(cwd); } // If we successfully resolved, ensure that an absolute path is returned // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it - if (resolved) resolved = $evV72$resolve(hasCustomCwd ? parsed.options.cwd : "", resolved); + if (resolved) resolved = $evV72$resolve(hasCustomCwd ? parsed.options.cwd : '', resolved); return resolved; } -function $37f30101baa1381d$var$resolveCommand(parsed) { - return $37f30101baa1381d$var$resolveCommandAttempt(parsed) || $37f30101baa1381d$var$resolveCommandAttempt(parsed, true); +function $10eed8306e544906$var$resolveCommand(parsed) { + return $10eed8306e544906$var$resolveCommandAttempt(parsed) || $10eed8306e544906$var$resolveCommandAttempt(parsed, true); } -$37f30101baa1381d$exports = $37f30101baa1381d$var$resolveCommand; +$10eed8306e544906$exports = $10eed8306e544906$var$resolveCommand; -var $cbf6c9fb7b5a3003$export$ae50443ffc990749; -var $cbf6c9fb7b5a3003$export$6ea29ee575e3f5ff; -"use strict"; +var $276813fd40f11aff$export$ae50443ffc990749; +var $276813fd40f11aff$export$6ea29ee575e3f5ff; +'use strict'; // See http://www.robvanderwoude.com/escapechars.php -const $cbf6c9fb7b5a3003$var$metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; -function $cbf6c9fb7b5a3003$var$escapeCommand(arg) { +const $276813fd40f11aff$var$metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; +function $276813fd40f11aff$var$escapeCommand(arg) { // Escape meta chars - arg = arg.replace($cbf6c9fb7b5a3003$var$metaCharsRegExp, "^$1"); + arg = arg.replace($276813fd40f11aff$var$metaCharsRegExp, '^$1'); return arg; } -function $cbf6c9fb7b5a3003$var$escapeArgument(arg, doubleEscapeMetaChars) { +function $276813fd40f11aff$var$escapeArgument(arg, doubleEscapeMetaChars) { // Convert to string arg = `${arg}`; // Algorithm below is based on https://qntm.org/cmd + // It's slightly altered to disable JS backtracking to avoid hanging on specially crafted input + // Please see https://github.com/moxystudio/node-cross-spawn/pull/160 for more information // Sequence of backslashes followed by a double quote: // double up all the backslashes and escape the double quote - arg = arg.replace(/(\\*)"/g, '$1$1\\"'); + arg = arg.replace(/(?=(\\+?)?)\1"/g, '$1$1\\"'); // Sequence of backslashes followed by the end of the string // (which will become a double quote later): // double up all the backslashes - arg = arg.replace(/(\\*)$/, "$1$1"); + arg = arg.replace(/(?=(\\+?)?)\1$/, '$1$1'); // All other backslashes occur literally // Quote the whole thing: arg = `"${arg}"`; // Escape meta chars - arg = arg.replace($cbf6c9fb7b5a3003$var$metaCharsRegExp, "^$1"); + arg = arg.replace($276813fd40f11aff$var$metaCharsRegExp, '^$1'); // Double escape meta chars if necessary - if (doubleEscapeMetaChars) arg = arg.replace($cbf6c9fb7b5a3003$var$metaCharsRegExp, "^$1"); + if (doubleEscapeMetaChars) arg = arg.replace($276813fd40f11aff$var$metaCharsRegExp, '^$1'); return arg; } -$cbf6c9fb7b5a3003$export$ae50443ffc990749 = $cbf6c9fb7b5a3003$var$escapeCommand; -$cbf6c9fb7b5a3003$export$6ea29ee575e3f5ff = $cbf6c9fb7b5a3003$var$escapeArgument; +$276813fd40f11aff$export$ae50443ffc990749 = $276813fd40f11aff$var$escapeCommand; +$276813fd40f11aff$export$6ea29ee575e3f5ff = $276813fd40f11aff$var$escapeArgument; -var $4bfe3bff3b3eb488$exports = {}; -"use strict"; +var $a35e2c2e4ef102e3$exports = {}; +'use strict'; var $550cee7733391e8f$exports = {}; -"use strict"; +'use strict'; var $41ec2024f8465164$exports = {}; -"use strict"; +'use strict'; $41ec2024f8465164$exports = /^#!(.*)/; -$550cee7733391e8f$exports = (string = "")=>{ +$550cee7733391e8f$exports = (string = '')=>{ const match = string.match($41ec2024f8465164$exports); if (!match) return null; - const [path, argument] = match[0].replace(/#! ?/, "").split(" "); - const binary = path.split("/").pop(); - if (binary === "env") return argument; + const [path, argument] = match[0].replace(/#! ?/, '').split(' '); + const binary = path.split('/').pop(); + if (binary === 'env') return argument; return argument ? `${binary} ${argument}` : binary; }; -function $4bfe3bff3b3eb488$var$readShebang(command) { +function $a35e2c2e4ef102e3$var$readShebang(command) { // Read the first 150 bytes from the file const size = 150; const buffer = Buffer.alloc(size); let fd; try { - fd = $evV72$openSync(command, "r"); + fd = $evV72$openSync(command, 'r'); $evV72$readSync(fd, buffer, 0, size, 0); $evV72$closeSync(fd); } catch (e) {} // Attempt to extract shebang (null is returned if not a shebang) return $550cee7733391e8f$exports(buffer.toString()); } -$4bfe3bff3b3eb488$exports = $4bfe3bff3b3eb488$var$readShebang; +$a35e2c2e4ef102e3$exports = $a35e2c2e4ef102e3$var$readShebang; -const $9f07a96c8577f666$var$isWin = process.platform === "win32"; -const $9f07a96c8577f666$var$isExecutableRegExp = /\.(?:com|exe)$/i; -const $9f07a96c8577f666$var$isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i; -function $9f07a96c8577f666$var$detectShebang(parsed) { - parsed.file = $37f30101baa1381d$exports(parsed); - const shebang = parsed.file && $4bfe3bff3b3eb488$exports(parsed.file); +const $a374b65288da9789$var$isWin = process.platform === 'win32'; +const $a374b65288da9789$var$isExecutableRegExp = /\.(?:com|exe)$/i; +const $a374b65288da9789$var$isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i; +function $a374b65288da9789$var$detectShebang(parsed) { + parsed.file = $10eed8306e544906$exports(parsed); + const shebang = parsed.file && $a35e2c2e4ef102e3$exports(parsed.file); if (shebang) { parsed.args.unshift(parsed.file); parsed.command = shebang; - return $37f30101baa1381d$exports(parsed); + return $10eed8306e544906$exports(parsed); } return parsed.file; } -function $9f07a96c8577f666$var$parseNonShell(parsed) { - if (!$9f07a96c8577f666$var$isWin) return parsed; +function $a374b65288da9789$var$parseNonShell(parsed) { + if (!$a374b65288da9789$var$isWin) return parsed; // Detect & add support for shebangs - const commandFile = $9f07a96c8577f666$var$detectShebang(parsed); + const commandFile = $a374b65288da9789$var$detectShebang(parsed); // We don't need a shell if the command filename is an executable - const needsShell = !$9f07a96c8577f666$var$isExecutableRegExp.test(commandFile); + const needsShell = !$a374b65288da9789$var$isExecutableRegExp.test(commandFile); // If a shell is required, use cmd.exe and take care of escaping everything correctly // Note that `forceShell` is an hidden option used only in tests if (parsed.options.forceShell || needsShell) { @@ -1074,28 +6939,28 @@ function $9f07a96c8577f666$var$parseNonShell(parsed) { // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called, // we need to double escape them - const needsDoubleEscapeMetaChars = $9f07a96c8577f666$var$isCmdShimRegExp.test(commandFile); + const needsDoubleEscapeMetaChars = $a374b65288da9789$var$isCmdShimRegExp.test(commandFile); // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\bar) // This is necessary otherwise it will always fail with ENOENT in those cases parsed.command = $evV72$normalize(parsed.command); // Escape command & arguments - parsed.command = $cbf6c9fb7b5a3003$export$ae50443ffc990749(parsed.command); - parsed.args = parsed.args.map((arg)=>$cbf6c9fb7b5a3003$export$6ea29ee575e3f5ff(arg, needsDoubleEscapeMetaChars)); + parsed.command = $276813fd40f11aff$export$ae50443ffc990749(parsed.command); + parsed.args = parsed.args.map((arg)=>$276813fd40f11aff$export$6ea29ee575e3f5ff(arg, needsDoubleEscapeMetaChars)); const shellCommand = [ parsed.command - ].concat(parsed.args).join(" "); + ].concat(parsed.args).join(' '); parsed.args = [ - "/d", - "/s", - "/c", + '/d', + '/s', + '/c', `"${shellCommand}"` ]; - parsed.command = process.env.comspec || "cmd.exe"; + parsed.command = process.env.comspec || 'cmd.exe'; parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped } return parsed; } -function $9f07a96c8577f666$var$parse(command, args, options) { +function $a374b65288da9789$var$parse(command, args, options) { // Normalize arguments, similar to nodejs if (args && !Array.isArray(args)) { options = args; @@ -1115,77 +6980,77 @@ function $9f07a96c8577f666$var$parse(command, args, options) { } }; // Delegate further parsing to shell or non-shell - return options.shell ? parsed : $9f07a96c8577f666$var$parseNonShell(parsed); + return options.shell ? parsed : $a374b65288da9789$var$parseNonShell(parsed); } -$9f07a96c8577f666$exports = $9f07a96c8577f666$var$parse; +$a374b65288da9789$exports = $a374b65288da9789$var$parse; -var $1ef36613317ba37d$exports = {}; -"use strict"; -const $1ef36613317ba37d$var$isWin = process.platform === "win32"; -function $1ef36613317ba37d$var$notFoundError(original, syscall) { +var $723ba8c7f07c78f6$exports = {}; +'use strict'; +const $723ba8c7f07c78f6$var$isWin = process.platform === 'win32'; +function $723ba8c7f07c78f6$var$notFoundError(original, syscall) { return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), { - code: "ENOENT", - errno: "ENOENT", + code: 'ENOENT', + errno: 'ENOENT', syscall: `${syscall} ${original.command}`, path: original.command, spawnargs: original.args }); } -function $1ef36613317ba37d$var$hookChildProcess(cp, parsed) { - if (!$1ef36613317ba37d$var$isWin) return; +function $723ba8c7f07c78f6$var$hookChildProcess(cp, parsed) { + if (!$723ba8c7f07c78f6$var$isWin) return; const originalEmit = cp.emit; cp.emit = function(name, arg1) { // If emitting "exit" event and exit code is 1, we need to check if // the command exists and emit an "error" instead // See https://github.com/IndigoUnited/node-cross-spawn/issues/16 - if (name === "exit") { - const err = $1ef36613317ba37d$var$verifyENOENT(arg1, parsed, "spawn"); - if (err) return originalEmit.call(cp, "error", err); + if (name === 'exit') { + const err = $723ba8c7f07c78f6$var$verifyENOENT(arg1, parsed); + if (err) return originalEmit.call(cp, 'error', err); } return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params }; } -function $1ef36613317ba37d$var$verifyENOENT(status, parsed) { - if ($1ef36613317ba37d$var$isWin && status === 1 && !parsed.file) return $1ef36613317ba37d$var$notFoundError(parsed.original, "spawn"); +function $723ba8c7f07c78f6$var$verifyENOENT(status, parsed) { + if ($723ba8c7f07c78f6$var$isWin && status === 1 && !parsed.file) return $723ba8c7f07c78f6$var$notFoundError(parsed.original, 'spawn'); return null; } -function $1ef36613317ba37d$var$verifyENOENTSync(status, parsed) { - if ($1ef36613317ba37d$var$isWin && status === 1 && !parsed.file) return $1ef36613317ba37d$var$notFoundError(parsed.original, "spawnSync"); +function $723ba8c7f07c78f6$var$verifyENOENTSync(status, parsed) { + if ($723ba8c7f07c78f6$var$isWin && status === 1 && !parsed.file) return $723ba8c7f07c78f6$var$notFoundError(parsed.original, 'spawnSync'); return null; } -$1ef36613317ba37d$exports = { - hookChildProcess: $1ef36613317ba37d$var$hookChildProcess, - verifyENOENT: $1ef36613317ba37d$var$verifyENOENT, - verifyENOENTSync: $1ef36613317ba37d$var$verifyENOENTSync, - notFoundError: $1ef36613317ba37d$var$notFoundError +$723ba8c7f07c78f6$exports = { + hookChildProcess: $723ba8c7f07c78f6$var$hookChildProcess, + verifyENOENT: $723ba8c7f07c78f6$var$verifyENOENT, + verifyENOENTSync: $723ba8c7f07c78f6$var$verifyENOENTSync, + notFoundError: $723ba8c7f07c78f6$var$notFoundError }; -function $92de28abfb9027ac$var$spawn(command, args, options) { +function $89bc486561c4bcbd$var$spawn(command, args, options) { // Parse the arguments - const parsed = $9f07a96c8577f666$exports(command, args, options); + const parsed = $a374b65288da9789$exports(command, args, options); // Spawn the child process const spawned = $evV72$spawn(parsed.command, parsed.args, parsed.options); // Hook into child process "exit" event to emit an error if the command // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 - $1ef36613317ba37d$exports.hookChildProcess(spawned, parsed); + $723ba8c7f07c78f6$exports.hookChildProcess(spawned, parsed); return spawned; } -function $92de28abfb9027ac$var$spawnSync(command, args, options) { +function $89bc486561c4bcbd$var$spawnSync(command, args, options) { // Parse the arguments - const parsed = $9f07a96c8577f666$exports(command, args, options); + const parsed = $a374b65288da9789$exports(command, args, options); // Spawn the child process const result = $evV72$spawnSync(parsed.command, parsed.args, parsed.options); // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 - result.error = result.error || $1ef36613317ba37d$exports.verifyENOENTSync(result.status, parsed); + result.error = result.error || $723ba8c7f07c78f6$exports.verifyENOENTSync(result.status, parsed); return result; } -$92de28abfb9027ac$exports = $92de28abfb9027ac$var$spawn; -$92de28abfb9027ac$exports.spawn = $92de28abfb9027ac$var$spawn; -$92de28abfb9027ac$exports.sync = $92de28abfb9027ac$var$spawnSync; -$92de28abfb9027ac$exports._parse = $9f07a96c8577f666$exports; -$92de28abfb9027ac$exports._enoent = $1ef36613317ba37d$exports; +$89bc486561c4bcbd$exports = $89bc486561c4bcbd$var$spawn; +$89bc486561c4bcbd$exports.spawn = $89bc486561c4bcbd$var$spawn; +$89bc486561c4bcbd$exports.sync = $89bc486561c4bcbd$var$spawnSync; +$89bc486561c4bcbd$exports._parse = $a374b65288da9789$exports; +$89bc486561c4bcbd$exports._enoent = $723ba8c7f07c78f6$exports; /** Spawns a child process, as long as you ask nicely. @@ -1198,22 +7063,22 @@ $92de28abfb9027ac$exports._enoent = $1ef36613317ba37d$exports; */ const $03c48d50d9d7039f$var$spawnPlease = (command, args, options = {}, spawnOptions = {})=>{ // defaults if (options.rejectOnError === undefined) options.rejectOnError = true; - let stdout = ""; - let stderr = ""; - const child = $92de28abfb9027ac$exports(command, args, spawnOptions); + let stdout = ''; + let stderr = ''; + const child = $89bc486561c4bcbd$exports(command, args, spawnOptions); return new Promise((resolve, reject)=>{ if (options.stdin !== undefined && options.stdin != null) child.stdin.write(options.stdin); child.stdin.end(); - child.stdout.on("data", (data)=>{ + child.stdout.on('data', (data)=>{ stdout += data; if (options.stdout) options.stdout(data); }); - child.stderr.on("data", (data)=>{ + child.stderr.on('data', (data)=>{ stderr += data; if (options.stderr) options.stderr(data); }); - if (options.rejectOnError) child.addListener("error", reject); - child.on("close", (code)=>{ + if (options.rejectOnError) child.addListener('error', reject); + child.on('close', (code)=>{ if (code !== 0 && options.rejectOnError) reject(stderr); else resolve({ stdout: stdout, @@ -1230,23 +7095,23 @@ async function $4c028fad90f63861$export$889ea624f2cb2c57(command, args) { try { return await (0, (/*@__PURE__*/$parcel$interopDefault($03c48d50d9d7039f$exports)))(command, args); } catch (error) { - console.error(`Error running command: ${command} ${args.join(" ")}`); + console.error(`Error running command: ${command} ${args.join(' ')}`); throw error; } } async function $4c028fad90f63861$export$214213e2e11c62ae([command1, args1], [command2, args2]) { const cp1 = (0, $evV72$child_process).spawn(command1, args1, { stdio: [ - "inherit", - "pipe", - "inherit" + 'inherit', + 'pipe', + 'inherit' ] }); const cp2 = (0, $evV72$child_process).spawn(command2, args2, { stdio: [ - "pipe", - "inherit", - "inherit" + 'pipe', + 'inherit', + 'inherit' ] }); cp1.stdout.pipe(cp2.stdin); @@ -1257,10 +7122,10 @@ async function $4c028fad90f63861$export$214213e2e11c62ae([command1, args1], [com } function $4c028fad90f63861$var$assertSuccess(cp) { return new Promise((resolve, reject)=>{ - cp.on("error", (error)=>{ + cp.on('error', (error)=>{ reject(error); }); - cp.on("close", (code)=>{ + cp.on('close', (code)=>{ if (code !== 0) reject(new Error(`process exited with code ${code}`)); resolve(); }); @@ -1284,7 +7149,7 @@ async function $bd1d73aff0732146$var$injectCache(cacheSource, cacheOptions, scra }); // Prepare Timestamp for Layer Cache Busting const date = new Date().toISOString(); - await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(cacheSource, "buildstamp"), date); + await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(cacheSource, 'buildstamp'), date); const targetPath = (0, $76d06fcdc9bff1f5$export$febacabd0d01c81)(cacheOptions); const mountArgs = (0, $76d06fcdc9bff1f5$export$238315f403b84074)(cacheOptions); // If UID OR GID are set, then add chown to restore files ownership. @@ -1300,18 +7165,18 @@ RUN --mount=${mountArgs} \ --mount=type=bind,source=.,target=/var/dance-cache \ cp -p -R /var/dance-cache/. ${targetPath} ${ownershipCommand} || true `; - await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(scratchDir, "Dancefile.inject"), dancefileContent); + await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(scratchDir, 'Dancefile.inject'), dancefileContent); console.log(dancefileContent); // Inject Data into Docker Cache - await (0, $4c028fad90f63861$export$889ea624f2cb2c57)("docker", [ - "buildx", - "build", - "--builder", + await (0, $4c028fad90f63861$export$889ea624f2cb2c57)('docker', [ + 'buildx', + 'build', + '--builder', builder, - "-f", - (0, $evV72$path).join(scratchDir, "Dancefile.inject"), - "--tag", - "dance:inject", + '-f', + (0, $evV72$path).join(scratchDir, 'Dancefile.inject'), + '--tag', + 'dance:inject', cacheSource ]); // Clean Directories @@ -1327,8 +7192,8 @@ RUN --mount=${mountArgs} \ } async function $bd1d73aff0732146$export$38c65e9f06d3d433(opts) { const cacheMap = (0, $76d06fcdc9bff1f5$export$8550a4d7282a21d0)(opts); - const scratchDir = opts["scratch-dir"]; - const containerImage = opts["utility-image"]; + const scratchDir = opts['scratch-dir']; + const containerImage = opts['utility-image']; const builder = (0, $76d06fcdc9bff1f5$export$932deacb99c42350)(opts); // Inject Caches for each source-target pair for (const [cacheSource, cacheOptions] of Object.entries(cacheMap))await $bd1d73aff0732146$var$injectCache(cacheSource, cacheOptions, scratchDir, containerImage, builder); @@ -1345,7 +7210,7 @@ async function $8d40300f3635b768$var$extractCache(cacheSource, cacheOptions, scr await (0, $evV72$fspromises).mkdir(scratchDir, { recursive: true }); - await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(scratchDir, "buildstamp"), date); + await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(scratchDir, 'buildstamp'), date); // Prepare Dancefile to Access Caches const targetPath = (0, $76d06fcdc9bff1f5$export$febacabd0d01c81)(cacheOptions); const mountArgs = (0, $76d06fcdc9bff1f5$export$238315f403b84074)(cacheOptions); @@ -1356,64 +7221,64 @@ RUN --mount=${mountArgs} \ mkdir -p /var/dance-cache/ \ && cp -p -R ${targetPath}/. /var/dance-cache/ || true `; - await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(scratchDir, "Dancefile.extract"), dancefileContent); + await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(scratchDir, 'Dancefile.extract'), dancefileContent); console.log(dancefileContent); // Extract Data into Docker Image - await (0, $4c028fad90f63861$export$889ea624f2cb2c57)("docker", [ - "buildx", - "build", - "--builder", + await (0, $4c028fad90f63861$export$889ea624f2cb2c57)('docker', [ + 'buildx', + 'build', + '--builder', builder, - "-f", - (0, $evV72$path).join(scratchDir, "Dancefile.extract"), - "--tag", - "dance:extract", - "--load", + '-f', + (0, $evV72$path).join(scratchDir, 'Dancefile.extract'), + '--tag', + 'dance:extract', + '--load', scratchDir ]); // Create Extraction Image try { - await (0, $4c028fad90f63861$export$889ea624f2cb2c57)("docker", [ - "rm", - "-f", - "cache-container" + await (0, $4c028fad90f63861$export$889ea624f2cb2c57)('docker', [ + 'rm', + '-f', + 'cache-container' ]); } catch (error) { // Ignore error if container does not exist } - await (0, $4c028fad90f63861$export$889ea624f2cb2c57)("docker", [ - "create", - "-ti", - "--name", - "cache-container", - "dance:extract" + await (0, $4c028fad90f63861$export$889ea624f2cb2c57)('docker', [ + 'create', + '-ti', + '--name', + 'cache-container', + 'dance:extract' ]); // Unpack Docker Image into Scratch await (0, $4c028fad90f63861$export$214213e2e11c62ae)([ - "docker", + 'docker', [ - "cp", - "-L", - "cache-container:/var/dance-cache", - "-" + 'cp', + '-L', + 'cache-container:/var/dance-cache', + '-' ] ], [ - "tar", + 'tar', [ - "-H", - "posix", - "-x", - "-C", + '-H', + 'posix', + '-x', + '-C', scratchDir ] ]); // Move Cache into Its Place - await (0, $4c028fad90f63861$export$889ea624f2cb2c57)("sudo", [ - "rm", - "-rf", + await (0, $4c028fad90f63861$export$889ea624f2cb2c57)('sudo', [ + 'rm', + '-rf', cacheSource ]); - await (0, $evV72$fspromises).rename((0, $evV72$path).join(scratchDir, "dance-cache"), cacheSource); + await (0, $evV72$fspromises).rename((0, $evV72$path).join(scratchDir, 'dance-cache'), cacheSource); } async function $8d40300f3635b768$export$bd3cfa0c41fc7012(opts) { if (opts["skip-extraction"]) { @@ -1421,8 +7286,8 @@ async function $8d40300f3635b768$export$bd3cfa0c41fc7012(opts) { return; } const cacheMap = (0, $76d06fcdc9bff1f5$export$8550a4d7282a21d0)(opts); - const scratchDir = opts["scratch-dir"]; - const containerImage = opts["utility-image"]; + const scratchDir = opts['scratch-dir']; + const containerImage = opts['utility-image']; const builder = (0, $76d06fcdc9bff1f5$export$932deacb99c42350)(opts); // Extract Caches for each source-target pair for (const [cacheSource, cacheOptions] of Object.entries(cacheMap))await $8d40300f3635b768$var$extractCache(cacheSource, cacheOptions, scratchDir, containerImage, builder); diff --git a/dist/index.js.map b/dist/index.js.map index f815ec9..4e53fba 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"mappings":"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;QACd,MAAM,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE;QACzB,MAAO,IAAI,MAAM,GAAG,EACnB,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;IAE3B;IAGD,OAAO;AACR;;;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,I,kC,A,6B,0B,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;A,O,c,C,2B,c;I,O;A;A,0B,Q,G,0B,S,G,0B,K,G,0B,Q,G,0B,U,G,0B,I,G,0B,M,G,0B,O,G,0B,K,G,0B,K,G,0B,O,G,0B,S,G,0B,c,G,0B,S,G,0B,e,G,0B,iB,G,0B,Q,G,0B,O,G,0B,S,G,0B,c,G,0B,Q,G,K;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,K,G,0B,Y,G,K;;AItHA,MAAA,2BAAA,mCAAA;;A;AEAA,mCAAmC;AACnC,qDAAA,G,O,c,C,2B,c;I,O;A;A,0B,mB,G,0B,c,G,K;AAKA;;;CAGG,GACH,SAAgB,qCAAe,KAAU;IACvC,IAAI,UAAU,QAAQ,UAAU,WAC9B,OAAO;SACF,IAAI,OAAO,UAAU,YAAY,iBAAiB,QACvD,OAAO;IAET,OAAO,KAAK,SAAS,CAAC;AACxB;AAPA,0BAAA,cAAA,GAAA;AASA;;;;;CAKG,GACH,SAAgB,0CACd,oBAA0C;IAE1C,IAAI,CAAC,OAAO,IAAI,CAAC,sBAAsB,MAAM,EAC3C,OAAO,CAAA;IAGT,OAAO;QACL,OAAO,qBAAqB,KAAK;QACjC,MAAM,qBAAqB,SAAS;QACpC,SAAS,qBAAqB,OAAO;QACrC,KAAK,qBAAqB,WAAW;QACrC,WAAW,qBAAqB,SAAS;IAC1C;AACH;AAdA,0BAAA,mBAAA,GAAA;;;AFbA;;;;;;;;;CASG,GACH,SAAgB,mCACd,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,MAAM,IAAI,8BAAQ,SAAS,YAAY;IAC7C,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,KAAK,yBAAG,GAAG;AAC9C;AAPA,0BAAA,YAAA,GAAA;AASA,SAAgB,4BAAM,IAAY,EAAE,UAAU,EAAE;IAC9C,mCAAa,MAAM,CAAA,GAAI;AACzB;AAFA,0BAAA,KAAA,GAAA;AAIA,MAAM,mCAAa;AAEnB,MAAM;IAKJ,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe,CAA3E;QACE,IAAI,CAAC,SACH,UAAU;QAGZ,IAAI,CAAC,OAAO,GAAG;QACf,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,OAAO,GAAG;IACjB;IAEA,WAAA;QACE,IAAI,SAAS,mCAAa,IAAI,CAAC,OAAO;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG;YAC9D,UAAU;YACV,IAAI,QAAQ;YACZ,IAAK,MAAM,OAAO,IAAI,CAAC,UAAU,CAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM;gBACvC,MAAM,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI;gBAChC,IAAI,KAAK;oBACP,IAAI,OACF,QAAQ;yBAER,UAAU;oBAGZ,UAAU,CAAA,EAAG,IAAG,CAAA,EAAI,qCAAe,KAAI,CAAE;gBAC1C;YACF;QAEJ;QAED,UAAU,CAAA,EAAG,iCAAU,EAAG,iCAAW,IAAI,CAAC,OAAO,EAAC,CAAE;QACpD,OAAO;IACT;AACD;AAED,SAAS,iCAAW,CAAM;IACxB,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO;AACpB;AAEA,SAAS,qCAAe,CAAM;IAC5B,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,MAAM;AACnB;;;;A;AI7FA,uCAAuC;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,Y,G,K;;AAEvC,mCAAmC;AACnC,qDAAA,GAEA,MAAA,2BAAA,mCAAA;;AACA,MAAA,2BAAA,mCAAA;;AAGA,SAAgB,mCAAa,OAAe,EAAE,OAAY;IACxD,MAAM,WAAW,QAAQ,GAAG,CAAC,CAAA,OAAA,EAAU,QAAO,CAAE,CAAC;IACjD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,CAAA,qDAAA,EAAwD,QAAO,CAAE;IAGrE,IAAI,CAAC,yBAAG,UAAU,CAAC,WACjB,MAAM,IAAI,MAAM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","sources":["node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","src/index.ts","src/inject-cache.ts","src/opts.ts","node_modules/.pnpm/mri@1.2.0/node_modules/mri/lib/index.mjs","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/core.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/core.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/command.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/utils.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/utils.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/file-command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/file-command.ts","src/run.ts","node_modules/.pnpm/spawn-please@3.0.0/node_modules/spawn-please/src/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js","node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js","node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js","src/extract-cache.ts"],"sourcesContent":["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","import fs from \"fs/promises\";\nimport os from \"os\";\nimport { injectCaches } from \"./inject-cache.js\";\nimport { extractCaches } from \"./extract-cache.js\";\nimport { help, parseOpts } from \"./opts.js\";\n\nasync function main(args: string[]) {\n const opts = parseOpts(args);\n\n if (opts.help) {\n return help();\n }\n\n if (opts.extract) {\n // Run the post step\n await extractCaches(opts);\n } else {\n // Otherwise, this is the main step\n if (process.env.GITHUB_STATE !== undefined) {\n await fs.appendFile(process.env.GITHUB_STATE, `POST=true${os.EOL}`);\n }\n await injectCaches(opts);\n }\n}\n\ntry {\n await main(process.argv);\n} catch (err) {\n console.error(err);\n if (err instanceof Error) {\n console.error(err.stack);\n }\n process.exit(1);\n}\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath, getUID, getGID, getBuilder } from './opts.js';\nimport { run } from './run.js';\nimport { notice } from '@actions/core';\n\nasync function injectCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string, containerImage: string, builder: string) {\n // Clean Scratch Directory\n await fs.rm(scratchDir, { recursive: true, force: true });\n await fs.mkdir(scratchDir, { recursive: true });\n\n // Prepare Cache Source Directory\n await fs.mkdir(cacheSource, { recursive: true });\n\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(cacheSource, 'buildstamp'), date);\n\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n // If UID OR GID are set, then add chown to restore files ownership.\n let ownershipCommand = \"\";\n const uid = getUID(cacheOptions);\n const gid = getGID(cacheOptions);\n if (uid !== \"\" || gid !== \"\") {\n ownershipCommand = `&& chown -R ${uid}:${gid} ${targetPath}`\n }\n\n // Prepare Dancefile to Access Caches\n const dancefileContent = `\nFROM ${containerImage}\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n --mount=type=bind,source=.,target=/var/dance-cache \\\n cp -p -R /var/dance-cache/. ${targetPath} ${ownershipCommand} || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.inject'), dancefileContent);\n console.log(dancefileContent);\n\n // Inject Data into Docker Cache\n await run('docker', ['buildx', 'build', '--builder', builder ,'-f', path.join(scratchDir, 'Dancefile.inject'), '--tag', 'dance:inject', cacheSource]);\n\n // Clean Directories\n try {\n await fs.rm(cacheSource, { recursive: true, force: true });\n } catch (err) {\n // Ignore Cleaning Errors\n notice(`Error while cleaning cache source directory: ${err}. Ignoring...`);\n }\n}\n\n\nexport async function injectCaches(opts: Opts) {\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n const containerImage = opts['utility-image'];\n\n const builder = getBuilder(opts);\n // Inject Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await injectCache(cacheSource, cacheOptions, scratchDir, containerImage, builder);\n }\n}\n","import mri from 'mri';\nimport { getInput, warning } from '@actions/core';\n\nexport type Opts = {\n \"extract\": boolean\n \"cache-map\": string\n \"scratch-dir\": string\n \"skip-extraction\": boolean\n \"utility-image\": string\n \"builder\"?: string\n help: boolean\n /** @deprecated Use `cache-map` instead */\n \"cache-source\"?: string\n /** @deprecated Use `cache-map` instead */\n \"cache-target\"?: string\n}\n\nexport function parseOpts(args: string[]): mri.Argv {\n const opts = mri(args, {\n default: {\n \"cache-map\": getInput(\"cache-map\") || \"{}\",\n \"scratch-dir\": getInput(\"scratch-dir\") || \"scratch\",\n \"skip-extraction\": (getInput(\"skip-extraction\") || \"false\") === \"true\",\n \"extract\": process.env[`STATE_POST`] !== undefined,\n \"utility-image\": getInput(\"utility-image\") || \"ghcr.io/containerd/busybox:latest\",\n \"builder\": getInput(\"builder\") || \"default\",\n \"help\": false,\n },\n string: [\"cache-map\", \"scratch-dir\", \"cache-source\", \"cache-target\", \"utility-image\", \"builder\"],\n boolean: [\"skip-extraction\", \"help\", \"extract\"],\n alias: {\n \"help\": [\"h\"],\n },\n })\n\n if (opts[\"cache-source\"] && opts[\"cache-target\"]) {\n warning(\"The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead.\")\n\n opts[\"cache-map\"] = JSON.stringify({\n [opts[\"cache-source\"]]: opts[\"cache-target\"],\n });\n }\n\n return opts;\n}\n\nexport function help() {\n console.log(`build-cache-dance [options]\nSave 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms\n\nOptions:\n --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step)\n --cache-map The map of actions source paths to container destination paths or mount arguments\n --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch'\n --skip-extraction Skip the extraction of the cache from the docker container\n --utility-image The container image to use for injecting and extracting the cache. Default: 'ghcr.io/containerd/busybox:latest'\n --builder The name of the buildx builder to use for the cache injection\n --help Show this help\n`);\n}\n\nexport type SourcePath = string\nexport type TargetPath = string\nexport type ToStringable = {\n toString(): string;\n}\nexport type CacheOptions = TargetPath | { target: TargetPath } & Record\nexport type CacheMap = Record\n\nexport function getCacheMap(opts: Opts): CacheMap {\n try {\n return JSON.parse(opts[\"cache-map\"]) as CacheMap;\n } catch (e) {\n throw new Error(`Failed to parse cache map. Expected JSON, got:\\n${opts[\"cache-map\"]}\\n${e}`);\n }\n}\n\nexport function getTargetPath(cacheOptions: CacheOptions): TargetPath {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return cacheOptions;\n } else {\n // object is provided\n if (\"target\" in cacheOptions) {\n return cacheOptions.target;\n } else {\n throw new Error(`Expected the 'target' key in the cache options, got:\\n${cacheOptions}`);\n }\n }\n}\n\nexport function getUID(cacheOptions: CacheOptions): string {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return \"\";\n } else {\n // object is provided\n if (\"uid\" in cacheOptions && cacheOptions.uid !== undefined) {\n return cacheOptions.uid.toString();\n } else {\n return \"\";\n }\n }\n}\n\nexport function getGID(cacheOptions: CacheOptions): string {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return \"\";\n } else {\n // object is provided\n if (\"gid\" in cacheOptions && cacheOptions.gid !== undefined) {\n return cacheOptions.gid.toString();\n } else {\n return \"\";\n }\n }\n}\n\n/**\n * Convert a cache options to a string that is passed to --mount=\n * @param CacheOptions The cache options to convert to a string\n */\nexport function getMountArgsString(cacheOptions: CacheOptions): string {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return `type=cache,target=${cacheOptions}`;\n } else {\n // other options are provided\n const otherOptions = Object.entries(cacheOptions).map(([key, value]) => `${key}=${value}`).join(\",\");\n return `type=cache,${otherOptions}`;\n }\n}\n\nexport function getBuilder(opts: Opts): string {\n return opts[\"builder\"] == null || opts[\"builder\"] == \"\" ? \"default\" : opts[\"builder\"];\n}\n","function toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nexport default function (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n",null,null,null,null,null,null,null,null,"import spawnPlease from 'spawn-please'\nimport cp, { type ChildProcess } from 'child_process';\n\nexport async function run(command: string, args: string[]) {\n try {\n return await spawnPlease(command, args);\n } catch (error) {\n console.error(`Error running command: ${command} ${args.join(' ')}`);\n throw error;\n }\n}\n\nexport async function runPiped([command1, args1]: [string, string[]], [command2, args2]: [string, string[]]) {\n const cp1 = cp.spawn(command1, args1, { stdio: ['inherit', 'pipe', 'inherit'] });\n const cp2 = cp.spawn(command2, args2, { stdio: ['pipe', 'inherit', 'inherit'] });\n\n cp1.stdout.pipe(cp2.stdin);\n\n await Promise.all([assertSuccess(cp1), assertSuccess(cp2)]);\n}\n\nfunction assertSuccess(cp: ChildProcess) {\n return new Promise((resolve, reject) => {\n cp.on('error', (error) => {\n reject(error);\n });\n cp.on('close', (code) => {\n if (code !== 0) {\n reject(new Error(`process exited with code ${code}`));\n }\n resolve();\n });\n });\n}\n","const spawn = require('cross-spawn')\n\n/** Spawns a child process, as long as you ask nicely.\n * \n * @param {string} command - The shell command to execute.\n * @param {string[]} [args] - An array of arguments that are given after the command.\n * @param {{ rejectOnError?: boolean, stdin?: string, stderr?: (data: string) => void, stdout?: (data: string) => void }} [options] - Options.\n * @param {any} [spawnOptions] - Options that are passed directly to child_process.spawn. Also supports stdin: string.\n * @returns {Promise<{ stdout: string, stderr: string }>}\n */\nconst spawnPlease = (command, args, options={}, spawnOptions={}) => {\n // defaults\n if (options.rejectOnError === undefined) {\n options.rejectOnError = true\n }\n\n let stdout = ''\n let stderr = ''\n const child = spawn(command, args, spawnOptions)\n\n return new Promise((resolve, reject) => {\n if (options.stdin !== undefined && options.stdin != null) {\n child.stdin.write(options.stdin)\n }\n child.stdin.end()\n\n child.stdout.on('data', data => {\n stdout += data\n if (options.stdout) options.stdout(data)\n })\n\n child.stderr.on('data', data => {\n stderr += data\n if (options.stderr) options.stderr(data)\n })\n\n if (options.rejectOnError) {\n child.addListener('error', reject)\n }\n\n child.on('close', code => {\n if (code !== 0 && options.rejectOnError) {\n reject(stderr)\n } else {\n resolve({ stdout, stderr })\n }\n })\n })\n}\n\nmodule.exports = spawnPlease\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","import fs from 'fs/promises';\nimport path from 'path';\nimport {CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath, getBuilder} from './opts.js';\nimport { run, runPiped } from './run.js';\n\nasync function extractCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string, containerImage: string, builder: string) {\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n\n await fs.mkdir(scratchDir, { recursive: true });\n await fs.writeFile(path.join(scratchDir, 'buildstamp'), date);\n\n // Prepare Dancefile to Access Caches\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n const dancefileContent = `\nFROM ${containerImage}\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n mkdir -p /var/dance-cache/ \\\n && cp -p -R ${targetPath}/. /var/dance-cache/ || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.extract'), dancefileContent);\n console.log(dancefileContent);\n\n // Extract Data into Docker Image\n await run('docker', ['buildx', 'build', '--builder', builder, '-f', path.join(scratchDir, 'Dancefile.extract'), '--tag', 'dance:extract', '--load', scratchDir]);\n\n // Create Extraction Image\n try {\n await run('docker', ['rm', '-f', 'cache-container']);\n } catch (error) {\n // Ignore error if container does not exist\n }\n await run('docker', ['create', '-ti', '--name', 'cache-container', 'dance:extract']);\n\n // Unpack Docker Image into Scratch\n await runPiped(\n ['docker', ['cp', '-L', 'cache-container:/var/dance-cache', '-']],\n ['tar', ['-H', 'posix', '-x', '-C', scratchDir]]\n );\n\n // Move Cache into Its Place\n await run('sudo', ['rm', '-rf', cacheSource]);\n await fs.rename(path.join(scratchDir, 'dance-cache'), cacheSource);\n}\n\nexport async function extractCaches(opts: Opts) {\n if (opts[\"skip-extraction\"]) {\n console.log(\"skip-extraction is set. Skipping extraction step...\");\n return;\n }\n\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n const containerImage = opts['utility-image'];\n const builder = getBuilder(opts);\n\n // Extract Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await extractCache(cacheSource, cacheOptions, scratchDir, containerImage, builder);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file +{"mappings":"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;QACd,MAAM,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE;QACzB,MAAO,IAAI,MAAM,GAAG,EACnB,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;IAE3B;IAGD,OAAO;AACR;;;;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,I,kC,A,6B,0B,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;A,O,c,C,2B,c;I,O;A;A,0B,Q,G,0B,S,G,0B,K,G,0B,Q,G,0B,U,G,0B,I,G,0B,M,G,0B,O,G,0B,K,G,0B,K,G,0B,O,G,0B,S,G,0B,c,G,0B,S,G,0B,e,G,0B,iB,G,0B,Q,G,0B,O,G,0B,S,G,0B,c,G,0B,Q,G,K;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,K,G,0B,Y,G,K;;AItHA,MAAA,2BAAA,mCAAA;;A;AEAA,mCAAmC;AACnC,qDAAA,G,O,c,C,2B,c;I,O;A;A,0B,mB,G,0B,c,G,K;AAKA;;;CAGG,GACH,SAAgB,qCAAe,KAAU;IACvC,IAAI,UAAU,QAAQ,UAAU,WAC9B,OAAO;SACF,IAAI,OAAO,UAAU,YAAY,iBAAiB,QACvD,OAAO;IAET,OAAO,KAAK,SAAS,CAAC;AACxB;AAPA,0BAAA,cAAA,GAAA;AASA;;;;;CAKG,GACH,SAAgB,0CACd,oBAA0C;IAE1C,IAAI,CAAC,OAAO,IAAI,CAAC,sBAAsB,MAAM,EAC3C,OAAO,CAAA;IAGT,OAAO;QACL,OAAO,qBAAqB,KAAK;QACjC,MAAM,qBAAqB,SAAS;QACpC,SAAS,qBAAqB,OAAO;QACrC,KAAK,qBAAqB,WAAW;QACrC,WAAW,qBAAqB,SAAS;IAC1C;AACH;AAdA,0BAAA,mBAAA,GAAA;;;AFbA;;;;;;;;;CASG,GACH,SAAgB,mCACd,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,MAAM,IAAI,8BAAQ,SAAS,YAAY;IAC7C,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,KAAK,yBAAG,GAAG;AAC9C;AAPA,0BAAA,YAAA,GAAA;AASA,SAAgB,4BAAM,IAAY,EAAE,UAAU,EAAE;IAC9C,mCAAa,MAAM,CAAA,GAAI;AACzB;AAFA,0BAAA,KAAA,GAAA;AAIA,MAAM,mCAAa;AAEnB,MAAM;IAKJ,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe,CAA3E;QACE,IAAI,CAAC,SACH,UAAU;QAGZ,IAAI,CAAC,OAAO,GAAG;QACf,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,OAAO,GAAG;IACjB;IAEA,WAAA;QACE,IAAI,SAAS,mCAAa,IAAI,CAAC,OAAO;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG;YAC9D,UAAU;YACV,IAAI,QAAQ;YACZ,IAAK,MAAM,OAAO,IAAI,CAAC,UAAU,CAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM;gBACvC,MAAM,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI;gBAChC,IAAI,KAAK;oBACP,IAAI,OACF,QAAQ;yBAER,UAAU;oBAGZ,UAAU,GAAG,IAAG,CAAA,EAAI,qCAAe,MAAM;gBAC1C;YACF;QAEJ;QAED,UAAU,GAAG,mCAAa,iCAAW,IAAI,CAAC,OAAO,GAAG;QACpD,OAAO;IACT;AACD;AAED,SAAS,iCAAW,CAAM;IACxB,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO;AACpB;AAEA,SAAS,qCAAe,CAAM;IAC5B,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,MAAM;AACnB;;;;A;AI7FA,uCAAuC;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,Y,G,K;;AAEvC,mCAAmC;AACnC,qDAAA,GAEA,MAAA,2BAAA,mCAAA;;AACA,MAAA,2BAAA,mCAAA;;AAGA,SAAgB,mCAAa,OAAe,EAAE,OAAY;IACxD,MAAM,WAAW,QAAQ,GAAG,CAAC,CAAA,OAAA,EAAU,SAAS,CAAC;IACjD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,CAAA,qDAAA,EAAwD,SAAS;IAGrE,IAAI,CAAC,yBAAG,UAAU,CAAC,WACjB,MAAM,IAAI,MAAM,CAAA,sBAAA,EAAyB,UAAU;IAGrD,yBAAG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","sources":["node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","src/index.ts","src/inject-cache.ts","src/opts.ts","node_modules/.pnpm/mri@1.2.0/node_modules/mri/lib/index.mjs","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/core.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/core.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/command.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/utils.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/utils.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/file-command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/file-command.ts","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/main.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/argument.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/jsonArgument.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/comment.js","node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/umd/main.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/line.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/util.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/parser.js","node_modules/.pnpm/vscode-languageserver-textdocument@1.0.12/node_modules/vscode-languageserver-textdocument/lib/umd/main.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/parserDirective.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instruction.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/heredoc.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/variable.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/add.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/jsonInstruction.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/modifiableInstruction.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/flag.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/flagOption.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/arg.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/property.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/propertyInstruction.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/cmd.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/copy.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/env.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/entrypoint.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/from.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/healthcheck.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/label.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/onbuild.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/run.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/shell.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/stopsignal.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/workdir.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/user.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/instructions/volume.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/dockerfile.js","node_modules/.pnpm/dockerfile-ast@0.7.0/node_modules/dockerfile-ast/lib/imageTemplate.js","src/run.ts","node_modules/.pnpm/spawn-please@3.0.0/node_modules/spawn-please/src/index.js","node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js","node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js","node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js","node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js","node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js","node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js","src/extract-cache.ts"],"sourcesContent":["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","import fs from \"fs/promises\";\nimport os from \"os\";\nimport { injectCaches } from \"./inject-cache.js\";\nimport { extractCaches } from \"./extract-cache.js\";\nimport { help, parseOpts } from \"./opts.js\";\n\nasync function main(args: string[]) {\n const opts = parseOpts(args);\n\n if (opts.help) {\n return help();\n }\n\n if (opts.extract) {\n // Run the post step\n await extractCaches(opts);\n } else {\n // Otherwise, this is the main step\n if (process.env.GITHUB_STATE !== undefined) {\n await fs.appendFile(process.env.GITHUB_STATE, `POST=true${os.EOL}`);\n }\n await injectCaches(opts);\n }\n}\n\ntry {\n await main(process.argv);\n} catch (err) {\n console.error(err);\n if (err instanceof Error) {\n console.error(err.stack);\n }\n process.exit(1);\n}\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath, getUID, getGID, getBuilder } from './opts.js';\nimport { run } from './run.js';\nimport { notice } from '@actions/core';\n\nasync function injectCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string, containerImage: string, builder: string) {\n // Clean Scratch Directory\n await fs.rm(scratchDir, { recursive: true, force: true });\n await fs.mkdir(scratchDir, { recursive: true });\n\n // Prepare Cache Source Directory\n await fs.mkdir(cacheSource, { recursive: true });\n\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(cacheSource, 'buildstamp'), date);\n\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n // If UID OR GID are set, then add chown to restore files ownership.\n let ownershipCommand = \"\";\n const uid = getUID(cacheOptions);\n const gid = getGID(cacheOptions);\n if (uid !== \"\" || gid !== \"\") {\n ownershipCommand = `&& chown -R ${uid}:${gid} ${targetPath}`\n }\n\n // Prepare Dancefile to Access Caches\n const dancefileContent = `\nFROM ${containerImage}\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n --mount=type=bind,source=.,target=/var/dance-cache \\\n cp -p -R /var/dance-cache/. ${targetPath} ${ownershipCommand} || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.inject'), dancefileContent);\n console.log(dancefileContent);\n\n // Inject Data into Docker Cache\n await run('docker', ['buildx', 'build', '--builder', builder ,'-f', path.join(scratchDir, 'Dancefile.inject'), '--tag', 'dance:inject', cacheSource]);\n\n // Clean Directories\n try {\n await fs.rm(cacheSource, { recursive: true, force: true });\n } catch (err) {\n // Ignore Cleaning Errors\n notice(`Error while cleaning cache source directory: ${err}. Ignoring...`);\n }\n}\n\n\nexport async function injectCaches(opts: Opts) {\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n const containerImage = opts['utility-image'];\n\n const builder = getBuilder(opts);\n // Inject Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await injectCache(cacheSource, cacheOptions, scratchDir, containerImage, builder);\n }\n}\n","import mri from 'mri';\nimport fs from 'fs';\nimport { getInput, warning } from '@actions/core';\nimport { DockerfileParser, ModifiableInstruction } from 'dockerfile-ast';\n\nexport type Opts = {\n \"extract\": boolean\n \"cache-map\": string\n \"dockerfile\": string\n \"scratch-dir\": string\n \"skip-extraction\": boolean\n \"utility-image\": string\n \"builder\"?: string\n help: boolean\n /** @deprecated Use `cache-map` instead */\n \"cache-source\"?: string\n /** @deprecated Use `cache-map` instead */\n \"cache-target\"?: string\n}\n\nexport function parseOpts(args: string[]): mri.Argv {\n const opts = mri(args, {\n default: {\n \"cache-map\": getInput(\"cache-map\") || \"{}\",\n \"dockerfile\": getInput(\"dockerfile\") || \"Dockerfile\",\n \"scratch-dir\": getInput(\"scratch-dir\") || \"scratch\",\n \"skip-extraction\": (getInput(\"skip-extraction\") || \"false\") === \"true\",\n \"extract\": process.env[`STATE_POST`] !== undefined,\n \"utility-image\": getInput(\"utility-image\") || \"ghcr.io/containerd/busybox:latest\",\n \"builder\": getInput(\"builder\") || \"default\",\n \"help\": false,\n },\n string: [\"cache-map\", \"dockerfile\", \"scratch-dir\", \"cache-source\", \"cache-target\", \"utility-image\", \"builder\"],\n boolean: [\"skip-extraction\", \"help\", \"extract\"],\n alias: {\n \"help\": [\"h\"],\n },\n })\n\n if (opts[\"cache-source\"] && opts[\"cache-target\"]) {\n warning(\"The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead.\")\n\n opts[\"cache-map\"] = JSON.stringify({\n [opts[\"cache-source\"]]: opts[\"cache-target\"],\n });\n }\n\n return opts;\n}\n\nexport function help() {\n console.log(`build-cache-dance [options]\nSave 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms\n\nOptions:\n --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step)\n --cache-map The map of actions source paths to container destination paths or mount arguments\n --dockerfile The Dockerfile to use for the auto-discovery of cache-map. Default: 'Dockerfile'\n --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch'\n --skip-extraction Skip the extraction of the cache from the docker container\n --utility-image The container image to use for injecting and extracting the cache. Default: 'ghcr.io/containerd/busybox:latest'\n --builder The name of the buildx builder to use for the cache injection\n --help Show this help\n`);\n}\n\nexport type SourcePath = string\nexport type TargetPath = string\nexport type ToStringable = {\n toString(): string;\n}\nexport type CacheOptions = TargetPath | { target: TargetPath } & Record\nexport type CacheMap = Record\n\nfunction getCacheMapFromDockerfile(dockerfilePath: string): CacheMap {\n const dockerfileContent = fs.readFileSync(dockerfilePath, \"utf-8\");\n const dockerfile = DockerfileParser.parse(dockerfileContent);\n\n const cacheMap: CacheMap = {};\n\n const runInstructions = dockerfile.getInstructions().filter(i => i.getKeyword() == 'RUN') as Array;\n for (const run of runInstructions) {\n for (const flag of run.getFlags()) {\n if (flag.getName() == 'mount' && flag.getOption('type')?.getValue() == 'cache') {\n // Extract the `id` flag which defaults to `target` when `id` is not set\n // https://docs.docker.com/reference/dockerfile/#run---mounttypecache\n const id = flag.getOption('id')?.getValue() || flag.getOption('target')?.getValue();\n if (id == null) {\n throw new Error('cache mount must define id or target: ' + flag.toString() + ' in ' + run.toString());\n }\n\n // The target in this action does not matter as long as it is\n // different than /var/dance-cache of course\n const target = \"/var/cache-target\";\n\n cacheMap[id] = {\n id,\n target,\n };\n }\n }\n }\n\n return cacheMap;\n}\n\nexport function getCacheMap(opts: Opts): CacheMap {\n try {\n const cacheMap = JSON.parse(opts[\"cache-map\"]) as CacheMap;\n if (Object.keys(cacheMap).length !== 0) {\n return cacheMap;\n }\n\n console.log(`No cache map provided. Trying to parse the Dockerfile to find the cache mount instructions...`);\n const cacheMapFromDockerfile = getCacheMapFromDockerfile(opts[\"dockerfile\"]);\n console.log(`Cache map parsed from Dockerfile: ${JSON.stringify(cacheMapFromDockerfile)}`);\n return cacheMapFromDockerfile;\n } catch (e) {\n throw new Error(`Failed to parse cache map. Expected JSON, got:\\n${opts[\"cache-map\"]}\\n${e}`);\n }\n}\n\nexport function getTargetPath(cacheOptions: CacheOptions): TargetPath {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return cacheOptions;\n } else {\n // object is provided\n if (\"target\" in cacheOptions) {\n return cacheOptions.target;\n } else {\n throw new Error(`Expected the 'target' key in the cache options, got:\\n${cacheOptions}`);\n }\n }\n}\n\nexport function getUID(cacheOptions: CacheOptions): string {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return \"\";\n } else {\n // object is provided\n if (\"uid\" in cacheOptions && cacheOptions.uid !== undefined) {\n return cacheOptions.uid.toString();\n } else {\n return \"\";\n }\n }\n}\n\nexport function getGID(cacheOptions: CacheOptions): string {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return \"\";\n } else {\n // object is provided\n if (\"gid\" in cacheOptions && cacheOptions.gid !== undefined) {\n return cacheOptions.gid.toString();\n } else {\n return \"\";\n }\n }\n}\n\n/**\n * Convert a cache options to a string that is passed to --mount=\n * @param CacheOptions The cache options to convert to a string\n */\nexport function getMountArgsString(cacheOptions: CacheOptions): string {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return `type=cache,target=${cacheOptions}`;\n } else {\n // other options are provided\n const otherOptions = Object.entries(cacheOptions).map(([key, value]) => `${key}=${value}`).join(\",\");\n return `type=cache,${otherOptions}`;\n }\n}\n\nexport function getBuilder(opts: Opts): string {\n return opts[\"builder\"] == null || opts[\"builder\"] == \"\" ? \"default\" : opts[\"builder\"];\n}\n","function toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nexport default function (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n",null,null,null,null,null,null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DockerfileParser = exports.DefaultVariables = exports.Directive = exports.Keyword = exports.Workdir = exports.Volume = exports.User = exports.Stopsignal = exports.Shell = exports.Run = exports.PropertyInstruction = exports.Onbuild = exports.ModifiableInstruction = exports.Label = exports.JSONInstruction = exports.Heredoc = exports.Healthcheck = exports.From = exports.Env = exports.Entrypoint = exports.Copy = exports.Cmd = exports.Arg = exports.Add = exports.Variable = exports.Property = exports.ParserDirective = exports.Line = exports.Instruction = exports.Flag = exports.Comment = exports.JSONArgument = exports.Argument = void 0;\nvar argument_1 = require(\"./argument\");\nObject.defineProperty(exports, \"Argument\", { enumerable: true, get: function () { return argument_1.Argument; } });\nvar jsonArgument_1 = require(\"./jsonArgument\");\nObject.defineProperty(exports, \"JSONArgument\", { enumerable: true, get: function () { return jsonArgument_1.JSONArgument; } });\nconst comment_1 = require(\"./comment\");\nObject.defineProperty(exports, \"Comment\", { enumerable: true, get: function () { return comment_1.Comment; } });\nconst parser_1 = require(\"./parser\");\nvar flag_1 = require(\"./flag\");\nObject.defineProperty(exports, \"Flag\", { enumerable: true, get: function () { return flag_1.Flag; } });\nconst instruction_1 = require(\"./instruction\");\nObject.defineProperty(exports, \"Instruction\", { enumerable: true, get: function () { return instruction_1.Instruction; } });\nvar line_1 = require(\"./line\");\nObject.defineProperty(exports, \"Line\", { enumerable: true, get: function () { return line_1.Line; } });\nconst parserDirective_1 = require(\"./parserDirective\");\nObject.defineProperty(exports, \"ParserDirective\", { enumerable: true, get: function () { return parserDirective_1.ParserDirective; } });\nvar property_1 = require(\"./property\");\nObject.defineProperty(exports, \"Property\", { enumerable: true, get: function () { return property_1.Property; } });\nvar variable_1 = require(\"./variable\");\nObject.defineProperty(exports, \"Variable\", { enumerable: true, get: function () { return variable_1.Variable; } });\nvar add_1 = require(\"./instructions/add\");\nObject.defineProperty(exports, \"Add\", { enumerable: true, get: function () { return add_1.Add; } });\nconst arg_1 = require(\"./instructions/arg\");\nObject.defineProperty(exports, \"Arg\", { enumerable: true, get: function () { return arg_1.Arg; } });\nconst cmd_1 = require(\"./instructions/cmd\");\nObject.defineProperty(exports, \"Cmd\", { enumerable: true, get: function () { return cmd_1.Cmd; } });\nconst copy_1 = require(\"./instructions/copy\");\nObject.defineProperty(exports, \"Copy\", { enumerable: true, get: function () { return copy_1.Copy; } });\nconst entrypoint_1 = require(\"./instructions/entrypoint\");\nObject.defineProperty(exports, \"Entrypoint\", { enumerable: true, get: function () { return entrypoint_1.Entrypoint; } });\nconst env_1 = require(\"./instructions/env\");\nObject.defineProperty(exports, \"Env\", { enumerable: true, get: function () { return env_1.Env; } });\nconst from_1 = require(\"./instructions/from\");\nObject.defineProperty(exports, \"From\", { enumerable: true, get: function () { return from_1.From; } });\nconst healthcheck_1 = require(\"./instructions/healthcheck\");\nObject.defineProperty(exports, \"Healthcheck\", { enumerable: true, get: function () { return healthcheck_1.Healthcheck; } });\nvar heredoc_1 = require(\"./heredoc\");\nObject.defineProperty(exports, \"Heredoc\", { enumerable: true, get: function () { return heredoc_1.Heredoc; } });\nvar jsonInstruction_1 = require(\"./jsonInstruction\");\nObject.defineProperty(exports, \"JSONInstruction\", { enumerable: true, get: function () { return jsonInstruction_1.JSONInstruction; } });\nvar label_1 = require(\"./instructions/label\");\nObject.defineProperty(exports, \"Label\", { enumerable: true, get: function () { return label_1.Label; } });\nvar modifiableInstruction_1 = require(\"./modifiableInstruction\");\nObject.defineProperty(exports, \"ModifiableInstruction\", { enumerable: true, get: function () { return modifiableInstruction_1.ModifiableInstruction; } });\nvar onbuild_1 = require(\"./instructions/onbuild\");\nObject.defineProperty(exports, \"Onbuild\", { enumerable: true, get: function () { return onbuild_1.Onbuild; } });\nvar propertyInstruction_1 = require(\"./propertyInstruction\");\nObject.defineProperty(exports, \"PropertyInstruction\", { enumerable: true, get: function () { return propertyInstruction_1.PropertyInstruction; } });\nvar run_1 = require(\"./instructions/run\");\nObject.defineProperty(exports, \"Run\", { enumerable: true, get: function () { return run_1.Run; } });\nvar shell_1 = require(\"./instructions/shell\");\nObject.defineProperty(exports, \"Shell\", { enumerable: true, get: function () { return shell_1.Shell; } });\nvar stopsignal_1 = require(\"./instructions/stopsignal\");\nObject.defineProperty(exports, \"Stopsignal\", { enumerable: true, get: function () { return stopsignal_1.Stopsignal; } });\nvar user_1 = require(\"./instructions/user\");\nObject.defineProperty(exports, \"User\", { enumerable: true, get: function () { return user_1.User; } });\nvar volume_1 = require(\"./instructions/volume\");\nObject.defineProperty(exports, \"Volume\", { enumerable: true, get: function () { return volume_1.Volume; } });\nconst workdir_1 = require(\"./instructions/workdir\");\nObject.defineProperty(exports, \"Workdir\", { enumerable: true, get: function () { return workdir_1.Workdir; } });\nvar Keyword;\n(function (Keyword) {\n Keyword[\"ADD\"] = \"ADD\";\n Keyword[\"ARG\"] = \"ARG\";\n Keyword[\"CMD\"] = \"CMD\";\n Keyword[\"COPY\"] = \"COPY\";\n Keyword[\"ENTRYPOINT\"] = \"ENTRYPOINT\";\n Keyword[\"ENV\"] = \"ENV\";\n Keyword[\"EXPOSE\"] = \"EXPOSE\";\n Keyword[\"FROM\"] = \"FROM\";\n Keyword[\"HEALTHCHECK\"] = \"HEALTHCHECK\";\n Keyword[\"LABEL\"] = \"LABEL\";\n Keyword[\"MAINTAINER\"] = \"MAINTAINER\";\n Keyword[\"ONBUILD\"] = \"ONBUILD\";\n Keyword[\"RUN\"] = \"RUN\";\n Keyword[\"SHELL\"] = \"SHELL\";\n Keyword[\"STOPSIGNAL\"] = \"STOPSIGNAL\";\n Keyword[\"USER\"] = \"USER\";\n Keyword[\"VOLUME\"] = \"VOLUME\";\n Keyword[\"WORKDIR\"] = \"WORKDIR\";\n})(Keyword || (exports.Keyword = Keyword = {}));\nvar Directive;\n(function (Directive) {\n Directive[\"escape\"] = \"escape\";\n Directive[\"syntax\"] = \"syntax\";\n})(Directive || (exports.Directive = Directive = {}));\nexports.DefaultVariables = [\n \"ALL_PROXY\", \"all_proxy\",\n \"FTP_PROXY\", \"ftp_proxy\",\n \"HTTP_PROXY\", \"http_proxy\",\n \"HTTPS_PROXY\", \"https_proxy\",\n \"NO_PROXY\", \"no_proxy\"\n];\nvar DockerfileParser;\n(function (DockerfileParser) {\n function parse(content) {\n let parser = new parser_1.Parser();\n return parser.parse(content);\n }\n DockerfileParser.parse = parse;\n})(DockerfileParser || (exports.DockerfileParser = DockerfileParser = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Argument = void 0;\nclass Argument {\n constructor(value, range) {\n this.value = value;\n this.range = range;\n }\n toString() {\n return this.value;\n }\n getRange() {\n return this.range;\n }\n getValue() {\n return this.value;\n }\n isAfter(position) {\n if (this.range.end.line < position.line) {\n return false;\n }\n return this.range.start.line > position.line ? true : this.range.start.character > position.character;\n }\n isBefore(position) {\n if (this.range.start.line < position.line) {\n return true;\n }\n return this.range.end.line > position.line ? false : this.range.end.character < position.character;\n }\n}\nexports.Argument = Argument;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONArgument = void 0;\nconst argument_1 = require(\"./argument\");\nclass JSONArgument extends argument_1.Argument {\n constructor(value, range, jsonRange) {\n super(value, range);\n this.jsonRange = jsonRange;\n }\n getJSONRange() {\n return this.jsonRange;\n }\n getJSONValue() {\n let value = super.getValue();\n value = value.substring(1, value.length - 1);\n return value;\n }\n}\nexports.JSONArgument = JSONArgument;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Comment = void 0;\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst line_1 = require(\"./line\");\nconst util_1 = require(\"./util\");\nclass Comment extends line_1.Line {\n constructor(document, range) {\n super(document, range);\n }\n toString() {\n const content = this.getContent();\n if (content) {\n return \"# \" + content;\n }\n return \"#\";\n }\n /**\n * Returns the content of this comment. This excludes leading and\n * trailing whitespace as well as the # symbol. If the comment only\n * consists of whitespace, the empty string will be returned.\n */\n getContent() {\n let range = this.getContentRange();\n if (range === null) {\n return \"\";\n }\n return this.document.getText().substring(this.document.offsetAt(range.start), this.document.offsetAt(range.end));\n }\n /**\n * Returns a range that includes the content of the comment\n * excluding any leading and trailing whitespace as well as the #\n * symbol. May return null if the comment only consists of whitespace\n * characters.\n */\n getContentRange() {\n let range = this.getRange();\n const startOffset = this.document.offsetAt(range.start);\n let raw = this.document.getText().substring(startOffset, this.document.offsetAt(range.end));\n let start = -1;\n let end = -1;\n // skip the first # symbol\n for (let i = 1; i < raw.length; i++) {\n if (!util_1.Util.isWhitespace(raw.charAt(i))) {\n start = i;\n break;\n }\n }\n if (start === -1) {\n return null;\n }\n // go backwards up to the first # symbol\n for (let i = raw.length - 1; i >= 1; i--) {\n if (!util_1.Util.isWhitespace(raw.charAt(i))) {\n end = i + 1;\n break;\n }\n }\n return vscode_languageserver_types_1.Range.create(this.document.positionAt(startOffset + start), this.document.positionAt(startOffset + end));\n }\n}\nexports.Comment = Comment;\n","(function (factory) {\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n var v = factory(require, exports);\n if (v !== undefined) module.exports = v;\n }\n else if (typeof define === \"function\" && define.amd) {\n define([\"require\", \"exports\"], factory);\n }\n})(function (require, exports) {\n /* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n 'use strict';\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TextDocument = exports.EOL = exports.WorkspaceFolder = exports.InlineCompletionContext = exports.SelectedCompletionInfo = exports.InlineCompletionTriggerKind = exports.InlineCompletionList = exports.InlineCompletionItem = exports.StringValue = exports.InlayHint = exports.InlayHintLabelPart = exports.InlayHintKind = exports.InlineValueContext = exports.InlineValueEvaluatableExpression = exports.InlineValueVariableLookup = exports.InlineValueText = exports.SemanticTokens = exports.SemanticTokenModifiers = exports.SemanticTokenTypes = exports.SelectionRange = exports.DocumentLink = exports.FormattingOptions = exports.CodeLens = exports.CodeAction = exports.CodeActionContext = exports.CodeActionTriggerKind = exports.CodeActionKind = exports.DocumentSymbol = exports.WorkspaceSymbol = exports.SymbolInformation = exports.SymbolTag = exports.SymbolKind = exports.DocumentHighlight = exports.DocumentHighlightKind = exports.SignatureInformation = exports.ParameterInformation = exports.Hover = exports.MarkedString = exports.CompletionList = exports.CompletionItem = exports.CompletionItemLabelDetails = exports.InsertTextMode = exports.InsertReplaceEdit = exports.CompletionItemTag = exports.InsertTextFormat = exports.CompletionItemKind = exports.MarkupContent = exports.MarkupKind = exports.TextDocumentItem = exports.OptionalVersionedTextDocumentIdentifier = exports.VersionedTextDocumentIdentifier = exports.TextDocumentIdentifier = exports.WorkspaceChange = exports.WorkspaceEdit = exports.DeleteFile = exports.RenameFile = exports.CreateFile = exports.TextDocumentEdit = exports.AnnotatedTextEdit = exports.ChangeAnnotationIdentifier = exports.ChangeAnnotation = exports.TextEdit = exports.Command = exports.Diagnostic = exports.CodeDescription = exports.DiagnosticTag = exports.DiagnosticSeverity = exports.DiagnosticRelatedInformation = exports.FoldingRange = exports.FoldingRangeKind = exports.ColorPresentation = exports.ColorInformation = exports.Color = exports.LocationLink = exports.Location = exports.Range = exports.Position = exports.uinteger = exports.integer = exports.URI = exports.DocumentUri = void 0;\n var DocumentUri;\n (function (DocumentUri) {\n function is(value) {\n return typeof value === 'string';\n }\n DocumentUri.is = is;\n })(DocumentUri || (exports.DocumentUri = DocumentUri = {}));\n var URI;\n (function (URI) {\n function is(value) {\n return typeof value === 'string';\n }\n URI.is = is;\n })(URI || (exports.URI = URI = {}));\n var integer;\n (function (integer) {\n integer.MIN_VALUE = -2147483648;\n integer.MAX_VALUE = 2147483647;\n function is(value) {\n return typeof value === 'number' && integer.MIN_VALUE <= value && value <= integer.MAX_VALUE;\n }\n integer.is = is;\n })(integer || (exports.integer = integer = {}));\n var uinteger;\n (function (uinteger) {\n uinteger.MIN_VALUE = 0;\n uinteger.MAX_VALUE = 2147483647;\n function is(value) {\n return typeof value === 'number' && uinteger.MIN_VALUE <= value && value <= uinteger.MAX_VALUE;\n }\n uinteger.is = is;\n })(uinteger || (exports.uinteger = uinteger = {}));\n /**\n * The Position namespace provides helper functions to work with\n * {@link Position} literals.\n */\n var Position;\n (function (Position) {\n /**\n * Creates a new Position literal from the given line and character.\n * @param line The position's line.\n * @param character The position's character.\n */\n function create(line, character) {\n if (line === Number.MAX_VALUE) {\n line = uinteger.MAX_VALUE;\n }\n if (character === Number.MAX_VALUE) {\n character = uinteger.MAX_VALUE;\n }\n return { line: line, character: character };\n }\n Position.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Position} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);\n }\n Position.is = is;\n })(Position || (exports.Position = Position = {}));\n /**\n * The Range namespace provides helper functions to work with\n * {@link Range} literals.\n */\n var Range;\n (function (Range) {\n function create(one, two, three, four) {\n if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) {\n return { start: Position.create(one, two), end: Position.create(three, four) };\n }\n else if (Position.is(one) && Position.is(two)) {\n return { start: one, end: two };\n }\n else {\n throw new Error(\"Range#create called with invalid arguments[\".concat(one, \", \").concat(two, \", \").concat(three, \", \").concat(four, \"]\"));\n }\n }\n Range.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Range} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\n }\n Range.is = is;\n })(Range || (exports.Range = Range = {}));\n /**\n * The Location namespace provides helper functions to work with\n * {@link Location} literals.\n */\n var Location;\n (function (Location) {\n /**\n * Creates a Location literal.\n * @param uri The location's uri.\n * @param range The location's range.\n */\n function create(uri, range) {\n return { uri: uri, range: range };\n }\n Location.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Location} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\n }\n Location.is = is;\n })(Location || (exports.Location = Location = {}));\n /**\n * The LocationLink namespace provides helper functions to work with\n * {@link LocationLink} literals.\n */\n var LocationLink;\n (function (LocationLink) {\n /**\n * Creates a LocationLink literal.\n * @param targetUri The definition's uri.\n * @param targetRange The full range of the definition.\n * @param targetSelectionRange The span of the symbol definition at the target.\n * @param originSelectionRange The span of the symbol being defined in the originating source file.\n */\n function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\n return { targetUri: targetUri, targetRange: targetRange, targetSelectionRange: targetSelectionRange, originSelectionRange: originSelectionRange };\n }\n LocationLink.create = create;\n /**\n * Checks whether the given literal conforms to the {@link LocationLink} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri)\n && Range.is(candidate.targetSelectionRange)\n && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\n }\n LocationLink.is = is;\n })(LocationLink || (exports.LocationLink = LocationLink = {}));\n /**\n * The Color namespace provides helper functions to work with\n * {@link Color} literals.\n */\n var Color;\n (function (Color) {\n /**\n * Creates a new Color literal.\n */\n function create(red, green, blue, alpha) {\n return {\n red: red,\n green: green,\n blue: blue,\n alpha: alpha,\n };\n }\n Color.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Color} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.numberRange(candidate.red, 0, 1)\n && Is.numberRange(candidate.green, 0, 1)\n && Is.numberRange(candidate.blue, 0, 1)\n && Is.numberRange(candidate.alpha, 0, 1);\n }\n Color.is = is;\n })(Color || (exports.Color = Color = {}));\n /**\n * The ColorInformation namespace provides helper functions to work with\n * {@link ColorInformation} literals.\n */\n var ColorInformation;\n (function (ColorInformation) {\n /**\n * Creates a new ColorInformation literal.\n */\n function create(range, color) {\n return {\n range: range,\n color: color,\n };\n }\n ColorInformation.create = create;\n /**\n * Checks whether the given literal conforms to the {@link ColorInformation} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && Color.is(candidate.color);\n }\n ColorInformation.is = is;\n })(ColorInformation || (exports.ColorInformation = ColorInformation = {}));\n /**\n * The Color namespace provides helper functions to work with\n * {@link ColorPresentation} literals.\n */\n var ColorPresentation;\n (function (ColorPresentation) {\n /**\n * Creates a new ColorInformation literal.\n */\n function create(label, textEdit, additionalTextEdits) {\n return {\n label: label,\n textEdit: textEdit,\n additionalTextEdits: additionalTextEdits,\n };\n }\n ColorPresentation.create = create;\n /**\n * Checks whether the given literal conforms to the {@link ColorInformation} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.label)\n && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate))\n && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\n }\n ColorPresentation.is = is;\n })(ColorPresentation || (exports.ColorPresentation = ColorPresentation = {}));\n /**\n * A set of predefined range kinds.\n */\n var FoldingRangeKind;\n (function (FoldingRangeKind) {\n /**\n * Folding range for a comment\n */\n FoldingRangeKind.Comment = 'comment';\n /**\n * Folding range for an import or include\n */\n FoldingRangeKind.Imports = 'imports';\n /**\n * Folding range for a region (e.g. `#region`)\n */\n FoldingRangeKind.Region = 'region';\n })(FoldingRangeKind || (exports.FoldingRangeKind = FoldingRangeKind = {}));\n /**\n * The folding range namespace provides helper functions to work with\n * {@link FoldingRange} literals.\n */\n var FoldingRange;\n (function (FoldingRange) {\n /**\n * Creates a new FoldingRange literal.\n */\n function create(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) {\n var result = {\n startLine: startLine,\n endLine: endLine\n };\n if (Is.defined(startCharacter)) {\n result.startCharacter = startCharacter;\n }\n if (Is.defined(endCharacter)) {\n result.endCharacter = endCharacter;\n }\n if (Is.defined(kind)) {\n result.kind = kind;\n }\n if (Is.defined(collapsedText)) {\n result.collapsedText = collapsedText;\n }\n return result;\n }\n FoldingRange.create = create;\n /**\n * Checks whether the given literal conforms to the {@link FoldingRange} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine)\n && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter))\n && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter))\n && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\n }\n FoldingRange.is = is;\n })(FoldingRange || (exports.FoldingRange = FoldingRange = {}));\n /**\n * The DiagnosticRelatedInformation namespace provides helper functions to work with\n * {@link DiagnosticRelatedInformation} literals.\n */\n var DiagnosticRelatedInformation;\n (function (DiagnosticRelatedInformation) {\n /**\n * Creates a new DiagnosticRelatedInformation literal.\n */\n function create(location, message) {\n return {\n location: location,\n message: message\n };\n }\n DiagnosticRelatedInformation.create = create;\n /**\n * Checks whether the given literal conforms to the {@link DiagnosticRelatedInformation} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\n }\n DiagnosticRelatedInformation.is = is;\n })(DiagnosticRelatedInformation || (exports.DiagnosticRelatedInformation = DiagnosticRelatedInformation = {}));\n /**\n * The diagnostic's severity.\n */\n var DiagnosticSeverity;\n (function (DiagnosticSeverity) {\n /**\n * Reports an error.\n */\n DiagnosticSeverity.Error = 1;\n /**\n * Reports a warning.\n */\n DiagnosticSeverity.Warning = 2;\n /**\n * Reports an information.\n */\n DiagnosticSeverity.Information = 3;\n /**\n * Reports a hint.\n */\n DiagnosticSeverity.Hint = 4;\n })(DiagnosticSeverity || (exports.DiagnosticSeverity = DiagnosticSeverity = {}));\n /**\n * The diagnostic tags.\n *\n * @since 3.15.0\n */\n var DiagnosticTag;\n (function (DiagnosticTag) {\n /**\n * Unused or unnecessary code.\n *\n * Clients are allowed to render diagnostics with this tag faded out instead of having\n * an error squiggle.\n */\n DiagnosticTag.Unnecessary = 1;\n /**\n * Deprecated or obsolete code.\n *\n * Clients are allowed to rendered diagnostics with this tag strike through.\n */\n DiagnosticTag.Deprecated = 2;\n })(DiagnosticTag || (exports.DiagnosticTag = DiagnosticTag = {}));\n /**\n * The CodeDescription namespace provides functions to deal with descriptions for diagnostic codes.\n *\n * @since 3.16.0\n */\n var CodeDescription;\n (function (CodeDescription) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.href);\n }\n CodeDescription.is = is;\n })(CodeDescription || (exports.CodeDescription = CodeDescription = {}));\n /**\n * The Diagnostic namespace provides helper functions to work with\n * {@link Diagnostic} literals.\n */\n var Diagnostic;\n (function (Diagnostic) {\n /**\n * Creates a new Diagnostic literal.\n */\n function create(range, message, severity, code, source, relatedInformation) {\n var result = { range: range, message: message };\n if (Is.defined(severity)) {\n result.severity = severity;\n }\n if (Is.defined(code)) {\n result.code = code;\n }\n if (Is.defined(source)) {\n result.source = source;\n }\n if (Is.defined(relatedInformation)) {\n result.relatedInformation = relatedInformation;\n }\n return result;\n }\n Diagnostic.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Diagnostic} interface.\n */\n function is(value) {\n var _a;\n var candidate = value;\n return Is.defined(candidate)\n && Range.is(candidate.range)\n && Is.string(candidate.message)\n && (Is.number(candidate.severity) || Is.undefined(candidate.severity))\n && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code))\n && (Is.undefined(candidate.codeDescription) || (Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)))\n && (Is.string(candidate.source) || Is.undefined(candidate.source))\n && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\n }\n Diagnostic.is = is;\n })(Diagnostic || (exports.Diagnostic = Diagnostic = {}));\n /**\n * The Command namespace provides helper functions to work with\n * {@link Command} literals.\n */\n var Command;\n (function (Command) {\n /**\n * Creates a new Command literal.\n */\n function create(title, command) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var result = { title: title, command: command };\n if (Is.defined(args) && args.length > 0) {\n result.arguments = args;\n }\n return result;\n }\n Command.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Command} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\n }\n Command.is = is;\n })(Command || (exports.Command = Command = {}));\n /**\n * The TextEdit namespace provides helper function to create replace,\n * insert and delete edits more easily.\n */\n var TextEdit;\n (function (TextEdit) {\n /**\n * Creates a replace text edit.\n * @param range The range of text to be replaced.\n * @param newText The new text.\n */\n function replace(range, newText) {\n return { range: range, newText: newText };\n }\n TextEdit.replace = replace;\n /**\n * Creates an insert text edit.\n * @param position The position to insert the text at.\n * @param newText The text to be inserted.\n */\n function insert(position, newText) {\n return { range: { start: position, end: position }, newText: newText };\n }\n TextEdit.insert = insert;\n /**\n * Creates a delete text edit.\n * @param range The range of text to be deleted.\n */\n function del(range) {\n return { range: range, newText: '' };\n }\n TextEdit.del = del;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate)\n && Is.string(candidate.newText)\n && Range.is(candidate.range);\n }\n TextEdit.is = is;\n })(TextEdit || (exports.TextEdit = TextEdit = {}));\n var ChangeAnnotation;\n (function (ChangeAnnotation) {\n function create(label, needsConfirmation, description) {\n var result = { label: label };\n if (needsConfirmation !== undefined) {\n result.needsConfirmation = needsConfirmation;\n }\n if (description !== undefined) {\n result.description = description;\n }\n return result;\n }\n ChangeAnnotation.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.label) &&\n (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === undefined) &&\n (Is.string(candidate.description) || candidate.description === undefined);\n }\n ChangeAnnotation.is = is;\n })(ChangeAnnotation || (exports.ChangeAnnotation = ChangeAnnotation = {}));\n var ChangeAnnotationIdentifier;\n (function (ChangeAnnotationIdentifier) {\n function is(value) {\n var candidate = value;\n return Is.string(candidate);\n }\n ChangeAnnotationIdentifier.is = is;\n })(ChangeAnnotationIdentifier || (exports.ChangeAnnotationIdentifier = ChangeAnnotationIdentifier = {}));\n var AnnotatedTextEdit;\n (function (AnnotatedTextEdit) {\n /**\n * Creates an annotated replace text edit.\n *\n * @param range The range of text to be replaced.\n * @param newText The new text.\n * @param annotation The annotation.\n */\n function replace(range, newText, annotation) {\n return { range: range, newText: newText, annotationId: annotation };\n }\n AnnotatedTextEdit.replace = replace;\n /**\n * Creates an annotated insert text edit.\n *\n * @param position The position to insert the text at.\n * @param newText The text to be inserted.\n * @param annotation The annotation.\n */\n function insert(position, newText, annotation) {\n return { range: { start: position, end: position }, newText: newText, annotationId: annotation };\n }\n AnnotatedTextEdit.insert = insert;\n /**\n * Creates an annotated delete text edit.\n *\n * @param range The range of text to be deleted.\n * @param annotation The annotation.\n */\n function del(range, annotation) {\n return { range: range, newText: '', annotationId: annotation };\n }\n AnnotatedTextEdit.del = del;\n function is(value) {\n var candidate = value;\n return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n AnnotatedTextEdit.is = is;\n })(AnnotatedTextEdit || (exports.AnnotatedTextEdit = AnnotatedTextEdit = {}));\n /**\n * The TextDocumentEdit namespace provides helper function to create\n * an edit that manipulates a text document.\n */\n var TextDocumentEdit;\n (function (TextDocumentEdit) {\n /**\n * Creates a new `TextDocumentEdit`\n */\n function create(textDocument, edits) {\n return { textDocument: textDocument, edits: edits };\n }\n TextDocumentEdit.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate)\n && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument)\n && Array.isArray(candidate.edits);\n }\n TextDocumentEdit.is = is;\n })(TextDocumentEdit || (exports.TextDocumentEdit = TextDocumentEdit = {}));\n var CreateFile;\n (function (CreateFile) {\n function create(uri, options, annotation) {\n var result = {\n kind: 'create',\n uri: uri\n };\n if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n CreateFile.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === 'create' && Is.string(candidate.uri) && (candidate.options === undefined ||\n ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n CreateFile.is = is;\n })(CreateFile || (exports.CreateFile = CreateFile = {}));\n var RenameFile;\n (function (RenameFile) {\n function create(oldUri, newUri, options, annotation) {\n var result = {\n kind: 'rename',\n oldUri: oldUri,\n newUri: newUri\n };\n if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n RenameFile.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === 'rename' && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === undefined ||\n ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n RenameFile.is = is;\n })(RenameFile || (exports.RenameFile = RenameFile = {}));\n var DeleteFile;\n (function (DeleteFile) {\n function create(uri, options, annotation) {\n var result = {\n kind: 'delete',\n uri: uri\n };\n if (options !== undefined && (options.recursive !== undefined || options.ignoreIfNotExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n DeleteFile.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) && (candidate.options === undefined ||\n ((candidate.options.recursive === undefined || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === undefined || Is.boolean(candidate.options.ignoreIfNotExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n DeleteFile.is = is;\n })(DeleteFile || (exports.DeleteFile = DeleteFile = {}));\n var WorkspaceEdit;\n (function (WorkspaceEdit) {\n function is(value) {\n var candidate = value;\n return candidate &&\n (candidate.changes !== undefined || candidate.documentChanges !== undefined) &&\n (candidate.documentChanges === undefined || candidate.documentChanges.every(function (change) {\n if (Is.string(change.kind)) {\n return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\n }\n else {\n return TextDocumentEdit.is(change);\n }\n }));\n }\n WorkspaceEdit.is = is;\n })(WorkspaceEdit || (exports.WorkspaceEdit = WorkspaceEdit = {}));\n var TextEditChangeImpl = /** @class */ (function () {\n function TextEditChangeImpl(edits, changeAnnotations) {\n this.edits = edits;\n this.changeAnnotations = changeAnnotations;\n }\n TextEditChangeImpl.prototype.insert = function (position, newText, annotation) {\n var edit;\n var id;\n if (annotation === undefined) {\n edit = TextEdit.insert(position, newText);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.insert(position, newText, annotation);\n }\n else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.insert(position, newText, id);\n }\n this.edits.push(edit);\n if (id !== undefined) {\n return id;\n }\n };\n TextEditChangeImpl.prototype.replace = function (range, newText, annotation) {\n var edit;\n var id;\n if (annotation === undefined) {\n edit = TextEdit.replace(range, newText);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.replace(range, newText, annotation);\n }\n else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.replace(range, newText, id);\n }\n this.edits.push(edit);\n if (id !== undefined) {\n return id;\n }\n };\n TextEditChangeImpl.prototype.delete = function (range, annotation) {\n var edit;\n var id;\n if (annotation === undefined) {\n edit = TextEdit.del(range);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.del(range, annotation);\n }\n else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.del(range, id);\n }\n this.edits.push(edit);\n if (id !== undefined) {\n return id;\n }\n };\n TextEditChangeImpl.prototype.add = function (edit) {\n this.edits.push(edit);\n };\n TextEditChangeImpl.prototype.all = function () {\n return this.edits;\n };\n TextEditChangeImpl.prototype.clear = function () {\n this.edits.splice(0, this.edits.length);\n };\n TextEditChangeImpl.prototype.assertChangeAnnotations = function (value) {\n if (value === undefined) {\n throw new Error(\"Text edit change is not configured to manage change annotations.\");\n }\n };\n return TextEditChangeImpl;\n }());\n /**\n * A helper class\n */\n var ChangeAnnotations = /** @class */ (function () {\n function ChangeAnnotations(annotations) {\n this._annotations = annotations === undefined ? Object.create(null) : annotations;\n this._counter = 0;\n this._size = 0;\n }\n ChangeAnnotations.prototype.all = function () {\n return this._annotations;\n };\n Object.defineProperty(ChangeAnnotations.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: false,\n configurable: true\n });\n ChangeAnnotations.prototype.manage = function (idOrAnnotation, annotation) {\n var id;\n if (ChangeAnnotationIdentifier.is(idOrAnnotation)) {\n id = idOrAnnotation;\n }\n else {\n id = this.nextId();\n annotation = idOrAnnotation;\n }\n if (this._annotations[id] !== undefined) {\n throw new Error(\"Id \".concat(id, \" is already in use.\"));\n }\n if (annotation === undefined) {\n throw new Error(\"No annotation provided for id \".concat(id));\n }\n this._annotations[id] = annotation;\n this._size++;\n return id;\n };\n ChangeAnnotations.prototype.nextId = function () {\n this._counter++;\n return this._counter.toString();\n };\n return ChangeAnnotations;\n }());\n /**\n * A workspace change helps constructing changes to a workspace.\n */\n var WorkspaceChange = /** @class */ (function () {\n function WorkspaceChange(workspaceEdit) {\n var _this = this;\n this._textEditChanges = Object.create(null);\n if (workspaceEdit !== undefined) {\n this._workspaceEdit = workspaceEdit;\n if (workspaceEdit.documentChanges) {\n this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations);\n workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n workspaceEdit.documentChanges.forEach(function (change) {\n if (TextDocumentEdit.is(change)) {\n var textEditChange = new TextEditChangeImpl(change.edits, _this._changeAnnotations);\n _this._textEditChanges[change.textDocument.uri] = textEditChange;\n }\n });\n }\n else if (workspaceEdit.changes) {\n Object.keys(workspaceEdit.changes).forEach(function (key) {\n var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\n _this._textEditChanges[key] = textEditChange;\n });\n }\n }\n else {\n this._workspaceEdit = {};\n }\n }\n Object.defineProperty(WorkspaceChange.prototype, \"edit\", {\n /**\n * Returns the underlying {@link WorkspaceEdit} literal\n * use to be returned from a workspace edit operation like rename.\n */\n get: function () {\n this.initDocumentChanges();\n if (this._changeAnnotations !== undefined) {\n if (this._changeAnnotations.size === 0) {\n this._workspaceEdit.changeAnnotations = undefined;\n }\n else {\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n }\n return this._workspaceEdit;\n },\n enumerable: false,\n configurable: true\n });\n WorkspaceChange.prototype.getTextEditChange = function (key) {\n if (OptionalVersionedTextDocumentIdentifier.is(key)) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n var textDocument = { uri: key.uri, version: key.version };\n var result = this._textEditChanges[textDocument.uri];\n if (!result) {\n var edits = [];\n var textDocumentEdit = {\n textDocument: textDocument,\n edits: edits\n };\n this._workspaceEdit.documentChanges.push(textDocumentEdit);\n result = new TextEditChangeImpl(edits, this._changeAnnotations);\n this._textEditChanges[textDocument.uri] = result;\n }\n return result;\n }\n else {\n this.initChanges();\n if (this._workspaceEdit.changes === undefined) {\n throw new Error('Workspace edit is not configured for normal text edit changes.');\n }\n var result = this._textEditChanges[key];\n if (!result) {\n var edits = [];\n this._workspaceEdit.changes[key] = edits;\n result = new TextEditChangeImpl(edits);\n this._textEditChanges[key] = result;\n }\n return result;\n }\n };\n WorkspaceChange.prototype.initDocumentChanges = function () {\n if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) {\n this._changeAnnotations = new ChangeAnnotations();\n this._workspaceEdit.documentChanges = [];\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n };\n WorkspaceChange.prototype.initChanges = function () {\n if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) {\n this._workspaceEdit.changes = Object.create(null);\n }\n };\n WorkspaceChange.prototype.createFile = function (uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === undefined) {\n operation = CreateFile.create(uri, options);\n }\n else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = CreateFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== undefined) {\n return id;\n }\n };\n WorkspaceChange.prototype.renameFile = function (oldUri, newUri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === undefined) {\n operation = RenameFile.create(oldUri, newUri, options);\n }\n else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = RenameFile.create(oldUri, newUri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== undefined) {\n return id;\n }\n };\n WorkspaceChange.prototype.deleteFile = function (uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === undefined) {\n operation = DeleteFile.create(uri, options);\n }\n else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = DeleteFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== undefined) {\n return id;\n }\n };\n return WorkspaceChange;\n }());\n exports.WorkspaceChange = WorkspaceChange;\n /**\n * The TextDocumentIdentifier namespace provides helper functions to work with\n * {@link TextDocumentIdentifier} literals.\n */\n var TextDocumentIdentifier;\n (function (TextDocumentIdentifier) {\n /**\n * Creates a new TextDocumentIdentifier literal.\n * @param uri The document's uri.\n */\n function create(uri) {\n return { uri: uri };\n }\n TextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link TextDocumentIdentifier} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri);\n }\n TextDocumentIdentifier.is = is;\n })(TextDocumentIdentifier || (exports.TextDocumentIdentifier = TextDocumentIdentifier = {}));\n /**\n * The VersionedTextDocumentIdentifier namespace provides helper functions to work with\n * {@link VersionedTextDocumentIdentifier} literals.\n */\n var VersionedTextDocumentIdentifier;\n (function (VersionedTextDocumentIdentifier) {\n /**\n * Creates a new VersionedTextDocumentIdentifier literal.\n * @param uri The document's uri.\n * @param version The document's version.\n */\n function create(uri, version) {\n return { uri: uri, version: version };\n }\n VersionedTextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link VersionedTextDocumentIdentifier} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);\n }\n VersionedTextDocumentIdentifier.is = is;\n })(VersionedTextDocumentIdentifier || (exports.VersionedTextDocumentIdentifier = VersionedTextDocumentIdentifier = {}));\n /**\n * The OptionalVersionedTextDocumentIdentifier namespace provides helper functions to work with\n * {@link OptionalVersionedTextDocumentIdentifier} literals.\n */\n var OptionalVersionedTextDocumentIdentifier;\n (function (OptionalVersionedTextDocumentIdentifier) {\n /**\n * Creates a new OptionalVersionedTextDocumentIdentifier literal.\n * @param uri The document's uri.\n * @param version The document's version.\n */\n function create(uri, version) {\n return { uri: uri, version: version };\n }\n OptionalVersionedTextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link OptionalVersionedTextDocumentIdentifier} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version));\n }\n OptionalVersionedTextDocumentIdentifier.is = is;\n })(OptionalVersionedTextDocumentIdentifier || (exports.OptionalVersionedTextDocumentIdentifier = OptionalVersionedTextDocumentIdentifier = {}));\n /**\n * The TextDocumentItem namespace provides helper functions to work with\n * {@link TextDocumentItem} literals.\n */\n var TextDocumentItem;\n (function (TextDocumentItem) {\n /**\n * Creates a new TextDocumentItem literal.\n * @param uri The document's uri.\n * @param languageId The document's language identifier.\n * @param version The document's version number.\n * @param text The document's text.\n */\n function create(uri, languageId, version, text) {\n return { uri: uri, languageId: languageId, version: version, text: text };\n }\n TextDocumentItem.create = create;\n /**\n * Checks whether the given literal conforms to the {@link TextDocumentItem} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text);\n }\n TextDocumentItem.is = is;\n })(TextDocumentItem || (exports.TextDocumentItem = TextDocumentItem = {}));\n /**\n * Describes the content type that a client supports in various\n * result literals like `Hover`, `ParameterInfo` or `CompletionItem`.\n *\n * Please note that `MarkupKinds` must not start with a `$`. This kinds\n * are reserved for internal usage.\n */\n var MarkupKind;\n (function (MarkupKind) {\n /**\n * Plain text is supported as a content format\n */\n MarkupKind.PlainText = 'plaintext';\n /**\n * Markdown is supported as a content format\n */\n MarkupKind.Markdown = 'markdown';\n /**\n * Checks whether the given value is a value of the {@link MarkupKind} type.\n */\n function is(value) {\n var candidate = value;\n return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown;\n }\n MarkupKind.is = is;\n })(MarkupKind || (exports.MarkupKind = MarkupKind = {}));\n var MarkupContent;\n (function (MarkupContent) {\n /**\n * Checks whether the given value conforms to the {@link MarkupContent} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\n }\n MarkupContent.is = is;\n })(MarkupContent || (exports.MarkupContent = MarkupContent = {}));\n /**\n * The kind of a completion entry.\n */\n var CompletionItemKind;\n (function (CompletionItemKind) {\n CompletionItemKind.Text = 1;\n CompletionItemKind.Method = 2;\n CompletionItemKind.Function = 3;\n CompletionItemKind.Constructor = 4;\n CompletionItemKind.Field = 5;\n CompletionItemKind.Variable = 6;\n CompletionItemKind.Class = 7;\n CompletionItemKind.Interface = 8;\n CompletionItemKind.Module = 9;\n CompletionItemKind.Property = 10;\n CompletionItemKind.Unit = 11;\n CompletionItemKind.Value = 12;\n CompletionItemKind.Enum = 13;\n CompletionItemKind.Keyword = 14;\n CompletionItemKind.Snippet = 15;\n CompletionItemKind.Color = 16;\n CompletionItemKind.File = 17;\n CompletionItemKind.Reference = 18;\n CompletionItemKind.Folder = 19;\n CompletionItemKind.EnumMember = 20;\n CompletionItemKind.Constant = 21;\n CompletionItemKind.Struct = 22;\n CompletionItemKind.Event = 23;\n CompletionItemKind.Operator = 24;\n CompletionItemKind.TypeParameter = 25;\n })(CompletionItemKind || (exports.CompletionItemKind = CompletionItemKind = {}));\n /**\n * Defines whether the insert text in a completion item should be interpreted as\n * plain text or a snippet.\n */\n var InsertTextFormat;\n (function (InsertTextFormat) {\n /**\n * The primary text to be inserted is treated as a plain string.\n */\n InsertTextFormat.PlainText = 1;\n /**\n * The primary text to be inserted is treated as a snippet.\n *\n * A snippet can define tab stops and placeholders with `$1`, `$2`\n * and `${3:foo}`. `$0` defines the final tab stop, it defaults to\n * the end of the snippet. Placeholders with equal identifiers are linked,\n * that is typing in one will update others too.\n *\n * See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax\n */\n InsertTextFormat.Snippet = 2;\n })(InsertTextFormat || (exports.InsertTextFormat = InsertTextFormat = {}));\n /**\n * Completion item tags are extra annotations that tweak the rendering of a completion\n * item.\n *\n * @since 3.15.0\n */\n var CompletionItemTag;\n (function (CompletionItemTag) {\n /**\n * Render a completion as obsolete, usually using a strike-out.\n */\n CompletionItemTag.Deprecated = 1;\n })(CompletionItemTag || (exports.CompletionItemTag = CompletionItemTag = {}));\n /**\n * The InsertReplaceEdit namespace provides functions to deal with insert / replace edits.\n *\n * @since 3.16.0\n */\n var InsertReplaceEdit;\n (function (InsertReplaceEdit) {\n /**\n * Creates a new insert / replace edit\n */\n function create(newText, insert, replace) {\n return { newText: newText, insert: insert, replace: replace };\n }\n InsertReplaceEdit.create = create;\n /**\n * Checks whether the given literal conforms to the {@link InsertReplaceEdit} interface.\n */\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace);\n }\n InsertReplaceEdit.is = is;\n })(InsertReplaceEdit || (exports.InsertReplaceEdit = InsertReplaceEdit = {}));\n /**\n * How whitespace and indentation is handled during completion\n * item insertion.\n *\n * @since 3.16.0\n */\n var InsertTextMode;\n (function (InsertTextMode) {\n /**\n * The insertion or replace strings is taken as it is. If the\n * value is multi line the lines below the cursor will be\n * inserted using the indentation defined in the string value.\n * The client will not apply any kind of adjustments to the\n * string.\n */\n InsertTextMode.asIs = 1;\n /**\n * The editor adjusts leading whitespace of new lines so that\n * they match the indentation up to the cursor of the line for\n * which the item is accepted.\n *\n * Consider a line like this: <2tabs><3tabs>foo. Accepting a\n * multi line completion item is indented using 2 tabs and all\n * following lines inserted will be indented using 2 tabs as well.\n */\n InsertTextMode.adjustIndentation = 2;\n })(InsertTextMode || (exports.InsertTextMode = InsertTextMode = {}));\n var CompletionItemLabelDetails;\n (function (CompletionItemLabelDetails) {\n function is(value) {\n var candidate = value;\n return candidate && (Is.string(candidate.detail) || candidate.detail === undefined) &&\n (Is.string(candidate.description) || candidate.description === undefined);\n }\n CompletionItemLabelDetails.is = is;\n })(CompletionItemLabelDetails || (exports.CompletionItemLabelDetails = CompletionItemLabelDetails = {}));\n /**\n * The CompletionItem namespace provides functions to deal with\n * completion items.\n */\n var CompletionItem;\n (function (CompletionItem) {\n /**\n * Create a completion item and seed it with a label.\n * @param label The completion item's label\n */\n function create(label) {\n return { label: label };\n }\n CompletionItem.create = create;\n })(CompletionItem || (exports.CompletionItem = CompletionItem = {}));\n /**\n * The CompletionList namespace provides functions to deal with\n * completion lists.\n */\n var CompletionList;\n (function (CompletionList) {\n /**\n * Creates a new completion list.\n *\n * @param items The completion items.\n * @param isIncomplete The list is not complete.\n */\n function create(items, isIncomplete) {\n return { items: items ? items : [], isIncomplete: !!isIncomplete };\n }\n CompletionList.create = create;\n })(CompletionList || (exports.CompletionList = CompletionList = {}));\n var MarkedString;\n (function (MarkedString) {\n /**\n * Creates a marked string from plain text.\n *\n * @param plainText The plain text.\n */\n function fromPlainText(plainText) {\n return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, '\\\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\n }\n MarkedString.fromPlainText = fromPlainText;\n /**\n * Checks whether the given value conforms to the {@link MarkedString} type.\n */\n function is(value) {\n var candidate = value;\n return Is.string(candidate) || (Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value));\n }\n MarkedString.is = is;\n })(MarkedString || (exports.MarkedString = MarkedString = {}));\n var Hover;\n (function (Hover) {\n /**\n * Checks whether the given value conforms to the {@link Hover} interface.\n */\n function is(value) {\n var candidate = value;\n return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) ||\n MarkedString.is(candidate.contents) ||\n Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === undefined || Range.is(value.range));\n }\n Hover.is = is;\n })(Hover || (exports.Hover = Hover = {}));\n /**\n * The ParameterInformation namespace provides helper functions to work with\n * {@link ParameterInformation} literals.\n */\n var ParameterInformation;\n (function (ParameterInformation) {\n /**\n * Creates a new parameter information literal.\n *\n * @param label A label string.\n * @param documentation A doc string.\n */\n function create(label, documentation) {\n return documentation ? { label: label, documentation: documentation } : { label: label };\n }\n ParameterInformation.create = create;\n })(ParameterInformation || (exports.ParameterInformation = ParameterInformation = {}));\n /**\n * The SignatureInformation namespace provides helper functions to work with\n * {@link SignatureInformation} literals.\n */\n var SignatureInformation;\n (function (SignatureInformation) {\n function create(label, documentation) {\n var parameters = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n parameters[_i - 2] = arguments[_i];\n }\n var result = { label: label };\n if (Is.defined(documentation)) {\n result.documentation = documentation;\n }\n if (Is.defined(parameters)) {\n result.parameters = parameters;\n }\n else {\n result.parameters = [];\n }\n return result;\n }\n SignatureInformation.create = create;\n })(SignatureInformation || (exports.SignatureInformation = SignatureInformation = {}));\n /**\n * A document highlight kind.\n */\n var DocumentHighlightKind;\n (function (DocumentHighlightKind) {\n /**\n * A textual occurrence.\n */\n DocumentHighlightKind.Text = 1;\n /**\n * Read-access of a symbol, like reading a variable.\n */\n DocumentHighlightKind.Read = 2;\n /**\n * Write-access of a symbol, like writing to a variable.\n */\n DocumentHighlightKind.Write = 3;\n })(DocumentHighlightKind || (exports.DocumentHighlightKind = DocumentHighlightKind = {}));\n /**\n * DocumentHighlight namespace to provide helper functions to work with\n * {@link DocumentHighlight} literals.\n */\n var DocumentHighlight;\n (function (DocumentHighlight) {\n /**\n * Create a DocumentHighlight object.\n * @param range The range the highlight applies to.\n * @param kind The highlight kind\n */\n function create(range, kind) {\n var result = { range: range };\n if (Is.number(kind)) {\n result.kind = kind;\n }\n return result;\n }\n DocumentHighlight.create = create;\n })(DocumentHighlight || (exports.DocumentHighlight = DocumentHighlight = {}));\n /**\n * A symbol kind.\n */\n var SymbolKind;\n (function (SymbolKind) {\n SymbolKind.File = 1;\n SymbolKind.Module = 2;\n SymbolKind.Namespace = 3;\n SymbolKind.Package = 4;\n SymbolKind.Class = 5;\n SymbolKind.Method = 6;\n SymbolKind.Property = 7;\n SymbolKind.Field = 8;\n SymbolKind.Constructor = 9;\n SymbolKind.Enum = 10;\n SymbolKind.Interface = 11;\n SymbolKind.Function = 12;\n SymbolKind.Variable = 13;\n SymbolKind.Constant = 14;\n SymbolKind.String = 15;\n SymbolKind.Number = 16;\n SymbolKind.Boolean = 17;\n SymbolKind.Array = 18;\n SymbolKind.Object = 19;\n SymbolKind.Key = 20;\n SymbolKind.Null = 21;\n SymbolKind.EnumMember = 22;\n SymbolKind.Struct = 23;\n SymbolKind.Event = 24;\n SymbolKind.Operator = 25;\n SymbolKind.TypeParameter = 26;\n })(SymbolKind || (exports.SymbolKind = SymbolKind = {}));\n /**\n * Symbol tags are extra annotations that tweak the rendering of a symbol.\n *\n * @since 3.16\n */\n var SymbolTag;\n (function (SymbolTag) {\n /**\n * Render a symbol as obsolete, usually using a strike-out.\n */\n SymbolTag.Deprecated = 1;\n })(SymbolTag || (exports.SymbolTag = SymbolTag = {}));\n var SymbolInformation;\n (function (SymbolInformation) {\n /**\n * Creates a new symbol information literal.\n *\n * @param name The name of the symbol.\n * @param kind The kind of the symbol.\n * @param range The range of the location of the symbol.\n * @param uri The resource of the location of symbol.\n * @param containerName The name of the symbol containing the symbol.\n */\n function create(name, kind, range, uri, containerName) {\n var result = {\n name: name,\n kind: kind,\n location: { uri: uri, range: range }\n };\n if (containerName) {\n result.containerName = containerName;\n }\n return result;\n }\n SymbolInformation.create = create;\n })(SymbolInformation || (exports.SymbolInformation = SymbolInformation = {}));\n var WorkspaceSymbol;\n (function (WorkspaceSymbol) {\n /**\n * Create a new workspace symbol.\n *\n * @param name The name of the symbol.\n * @param kind The kind of the symbol.\n * @param uri The resource of the location of the symbol.\n * @param range An options range of the location.\n * @returns A WorkspaceSymbol.\n */\n function create(name, kind, uri, range) {\n return range !== undefined\n ? { name: name, kind: kind, location: { uri: uri, range: range } }\n : { name: name, kind: kind, location: { uri: uri } };\n }\n WorkspaceSymbol.create = create;\n })(WorkspaceSymbol || (exports.WorkspaceSymbol = WorkspaceSymbol = {}));\n var DocumentSymbol;\n (function (DocumentSymbol) {\n /**\n * Creates a new symbol information literal.\n *\n * @param name The name of the symbol.\n * @param detail The detail of the symbol.\n * @param kind The kind of the symbol.\n * @param range The range of the symbol.\n * @param selectionRange The selectionRange of the symbol.\n * @param children Children of the symbol.\n */\n function create(name, detail, kind, range, selectionRange, children) {\n var result = {\n name: name,\n detail: detail,\n kind: kind,\n range: range,\n selectionRange: selectionRange\n };\n if (children !== undefined) {\n result.children = children;\n }\n return result;\n }\n DocumentSymbol.create = create;\n /**\n * Checks whether the given literal conforms to the {@link DocumentSymbol} interface.\n */\n function is(value) {\n var candidate = value;\n return candidate &&\n Is.string(candidate.name) && Is.number(candidate.kind) &&\n Range.is(candidate.range) && Range.is(candidate.selectionRange) &&\n (candidate.detail === undefined || Is.string(candidate.detail)) &&\n (candidate.deprecated === undefined || Is.boolean(candidate.deprecated)) &&\n (candidate.children === undefined || Array.isArray(candidate.children)) &&\n (candidate.tags === undefined || Array.isArray(candidate.tags));\n }\n DocumentSymbol.is = is;\n })(DocumentSymbol || (exports.DocumentSymbol = DocumentSymbol = {}));\n /**\n * A set of predefined code action kinds\n */\n var CodeActionKind;\n (function (CodeActionKind) {\n /**\n * Empty kind.\n */\n CodeActionKind.Empty = '';\n /**\n * Base kind for quickfix actions: 'quickfix'\n */\n CodeActionKind.QuickFix = 'quickfix';\n /**\n * Base kind for refactoring actions: 'refactor'\n */\n CodeActionKind.Refactor = 'refactor';\n /**\n * Base kind for refactoring extraction actions: 'refactor.extract'\n *\n * Example extract actions:\n *\n * - Extract method\n * - Extract function\n * - Extract variable\n * - Extract interface from class\n * - ...\n */\n CodeActionKind.RefactorExtract = 'refactor.extract';\n /**\n * Base kind for refactoring inline actions: 'refactor.inline'\n *\n * Example inline actions:\n *\n * - Inline function\n * - Inline variable\n * - Inline constant\n * - ...\n */\n CodeActionKind.RefactorInline = 'refactor.inline';\n /**\n * Base kind for refactoring rewrite actions: 'refactor.rewrite'\n *\n * Example rewrite actions:\n *\n * - Convert JavaScript function to class\n * - Add or remove parameter\n * - Encapsulate field\n * - Make method static\n * - Move method to base class\n * - ...\n */\n CodeActionKind.RefactorRewrite = 'refactor.rewrite';\n /**\n * Base kind for source actions: `source`\n *\n * Source code actions apply to the entire file.\n */\n CodeActionKind.Source = 'source';\n /**\n * Base kind for an organize imports source action: `source.organizeImports`\n */\n CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\n /**\n * Base kind for auto-fix source actions: `source.fixAll`.\n *\n * Fix all actions automatically fix errors that have a clear fix that do not require user input.\n * They should not suppress errors or perform unsafe fixes such as generating new types or classes.\n *\n * @since 3.15.0\n */\n CodeActionKind.SourceFixAll = 'source.fixAll';\n })(CodeActionKind || (exports.CodeActionKind = CodeActionKind = {}));\n /**\n * The reason why code actions were requested.\n *\n * @since 3.17.0\n */\n var CodeActionTriggerKind;\n (function (CodeActionTriggerKind) {\n /**\n * Code actions were explicitly requested by the user or by an extension.\n */\n CodeActionTriggerKind.Invoked = 1;\n /**\n * Code actions were requested automatically.\n *\n * This typically happens when current selection in a file changes, but can\n * also be triggered when file content changes.\n */\n CodeActionTriggerKind.Automatic = 2;\n })(CodeActionTriggerKind || (exports.CodeActionTriggerKind = CodeActionTriggerKind = {}));\n /**\n * The CodeActionContext namespace provides helper functions to work with\n * {@link CodeActionContext} literals.\n */\n var CodeActionContext;\n (function (CodeActionContext) {\n /**\n * Creates a new CodeActionContext literal.\n */\n function create(diagnostics, only, triggerKind) {\n var result = { diagnostics: diagnostics };\n if (only !== undefined && only !== null) {\n result.only = only;\n }\n if (triggerKind !== undefined && triggerKind !== null) {\n result.triggerKind = triggerKind;\n }\n return result;\n }\n CodeActionContext.create = create;\n /**\n * Checks whether the given literal conforms to the {@link CodeActionContext} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is)\n && (candidate.only === undefined || Is.typedArray(candidate.only, Is.string))\n && (candidate.triggerKind === undefined || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic);\n }\n CodeActionContext.is = is;\n })(CodeActionContext || (exports.CodeActionContext = CodeActionContext = {}));\n var CodeAction;\n (function (CodeAction) {\n function create(title, kindOrCommandOrEdit, kind) {\n var result = { title: title };\n var checkKind = true;\n if (typeof kindOrCommandOrEdit === 'string') {\n checkKind = false;\n result.kind = kindOrCommandOrEdit;\n }\n else if (Command.is(kindOrCommandOrEdit)) {\n result.command = kindOrCommandOrEdit;\n }\n else {\n result.edit = kindOrCommandOrEdit;\n }\n if (checkKind && kind !== undefined) {\n result.kind = kind;\n }\n return result;\n }\n CodeAction.create = create;\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.title) &&\n (candidate.diagnostics === undefined || Is.typedArray(candidate.diagnostics, Diagnostic.is)) &&\n (candidate.kind === undefined || Is.string(candidate.kind)) &&\n (candidate.edit !== undefined || candidate.command !== undefined) &&\n (candidate.command === undefined || Command.is(candidate.command)) &&\n (candidate.isPreferred === undefined || Is.boolean(candidate.isPreferred)) &&\n (candidate.edit === undefined || WorkspaceEdit.is(candidate.edit));\n }\n CodeAction.is = is;\n })(CodeAction || (exports.CodeAction = CodeAction = {}));\n /**\n * The CodeLens namespace provides helper functions to work with\n * {@link CodeLens} literals.\n */\n var CodeLens;\n (function (CodeLens) {\n /**\n * Creates a new CodeLens literal.\n */\n function create(range, data) {\n var result = { range: range };\n if (Is.defined(data)) {\n result.data = data;\n }\n return result;\n }\n CodeLens.create = create;\n /**\n * Checks whether the given literal conforms to the {@link CodeLens} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\n }\n CodeLens.is = is;\n })(CodeLens || (exports.CodeLens = CodeLens = {}));\n /**\n * The FormattingOptions namespace provides helper functions to work with\n * {@link FormattingOptions} literals.\n */\n var FormattingOptions;\n (function (FormattingOptions) {\n /**\n * Creates a new FormattingOptions literal.\n */\n function create(tabSize, insertSpaces) {\n return { tabSize: tabSize, insertSpaces: insertSpaces };\n }\n FormattingOptions.create = create;\n /**\n * Checks whether the given literal conforms to the {@link FormattingOptions} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n }\n FormattingOptions.is = is;\n })(FormattingOptions || (exports.FormattingOptions = FormattingOptions = {}));\n /**\n * The DocumentLink namespace provides helper functions to work with\n * {@link DocumentLink} literals.\n */\n var DocumentLink;\n (function (DocumentLink) {\n /**\n * Creates a new DocumentLink literal.\n */\n function create(range, target, data) {\n return { range: range, target: target, data: data };\n }\n DocumentLink.create = create;\n /**\n * Checks whether the given literal conforms to the {@link DocumentLink} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\n }\n DocumentLink.is = is;\n })(DocumentLink || (exports.DocumentLink = DocumentLink = {}));\n /**\n * The SelectionRange namespace provides helper function to work with\n * SelectionRange literals.\n */\n var SelectionRange;\n (function (SelectionRange) {\n /**\n * Creates a new SelectionRange\n * @param range the range.\n * @param parent an optional parent.\n */\n function create(range, parent) {\n return { range: range, parent: parent };\n }\n SelectionRange.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent));\n }\n SelectionRange.is = is;\n })(SelectionRange || (exports.SelectionRange = SelectionRange = {}));\n /**\n * A set of predefined token types. This set is not fixed\n * an clients can specify additional token types via the\n * corresponding client capabilities.\n *\n * @since 3.16.0\n */\n var SemanticTokenTypes;\n (function (SemanticTokenTypes) {\n SemanticTokenTypes[\"namespace\"] = \"namespace\";\n /**\n * Represents a generic type. Acts as a fallback for types which can't be mapped to\n * a specific type like class or enum.\n */\n SemanticTokenTypes[\"type\"] = \"type\";\n SemanticTokenTypes[\"class\"] = \"class\";\n SemanticTokenTypes[\"enum\"] = \"enum\";\n SemanticTokenTypes[\"interface\"] = \"interface\";\n SemanticTokenTypes[\"struct\"] = \"struct\";\n SemanticTokenTypes[\"typeParameter\"] = \"typeParameter\";\n SemanticTokenTypes[\"parameter\"] = \"parameter\";\n SemanticTokenTypes[\"variable\"] = \"variable\";\n SemanticTokenTypes[\"property\"] = \"property\";\n SemanticTokenTypes[\"enumMember\"] = \"enumMember\";\n SemanticTokenTypes[\"event\"] = \"event\";\n SemanticTokenTypes[\"function\"] = \"function\";\n SemanticTokenTypes[\"method\"] = \"method\";\n SemanticTokenTypes[\"macro\"] = \"macro\";\n SemanticTokenTypes[\"keyword\"] = \"keyword\";\n SemanticTokenTypes[\"modifier\"] = \"modifier\";\n SemanticTokenTypes[\"comment\"] = \"comment\";\n SemanticTokenTypes[\"string\"] = \"string\";\n SemanticTokenTypes[\"number\"] = \"number\";\n SemanticTokenTypes[\"regexp\"] = \"regexp\";\n SemanticTokenTypes[\"operator\"] = \"operator\";\n /**\n * @since 3.17.0\n */\n SemanticTokenTypes[\"decorator\"] = \"decorator\";\n })(SemanticTokenTypes || (exports.SemanticTokenTypes = SemanticTokenTypes = {}));\n /**\n * A set of predefined token modifiers. This set is not fixed\n * an clients can specify additional token types via the\n * corresponding client capabilities.\n *\n * @since 3.16.0\n */\n var SemanticTokenModifiers;\n (function (SemanticTokenModifiers) {\n SemanticTokenModifiers[\"declaration\"] = \"declaration\";\n SemanticTokenModifiers[\"definition\"] = \"definition\";\n SemanticTokenModifiers[\"readonly\"] = \"readonly\";\n SemanticTokenModifiers[\"static\"] = \"static\";\n SemanticTokenModifiers[\"deprecated\"] = \"deprecated\";\n SemanticTokenModifiers[\"abstract\"] = \"abstract\";\n SemanticTokenModifiers[\"async\"] = \"async\";\n SemanticTokenModifiers[\"modification\"] = \"modification\";\n SemanticTokenModifiers[\"documentation\"] = \"documentation\";\n SemanticTokenModifiers[\"defaultLibrary\"] = \"defaultLibrary\";\n })(SemanticTokenModifiers || (exports.SemanticTokenModifiers = SemanticTokenModifiers = {}));\n /**\n * @since 3.16.0\n */\n var SemanticTokens;\n (function (SemanticTokens) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && (candidate.resultId === undefined || typeof candidate.resultId === 'string') &&\n Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === 'number');\n }\n SemanticTokens.is = is;\n })(SemanticTokens || (exports.SemanticTokens = SemanticTokens = {}));\n /**\n * The InlineValueText namespace provides functions to deal with InlineValueTexts.\n *\n * @since 3.17.0\n */\n var InlineValueText;\n (function (InlineValueText) {\n /**\n * Creates a new InlineValueText literal.\n */\n function create(range, text) {\n return { range: range, text: text };\n }\n InlineValueText.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text);\n }\n InlineValueText.is = is;\n })(InlineValueText || (exports.InlineValueText = InlineValueText = {}));\n /**\n * The InlineValueVariableLookup namespace provides functions to deal with InlineValueVariableLookups.\n *\n * @since 3.17.0\n */\n var InlineValueVariableLookup;\n (function (InlineValueVariableLookup) {\n /**\n * Creates a new InlineValueText literal.\n */\n function create(range, variableName, caseSensitiveLookup) {\n return { range: range, variableName: variableName, caseSensitiveLookup: caseSensitiveLookup };\n }\n InlineValueVariableLookup.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup)\n && (Is.string(candidate.variableName) || candidate.variableName === undefined);\n }\n InlineValueVariableLookup.is = is;\n })(InlineValueVariableLookup || (exports.InlineValueVariableLookup = InlineValueVariableLookup = {}));\n /**\n * The InlineValueEvaluatableExpression namespace provides functions to deal with InlineValueEvaluatableExpression.\n *\n * @since 3.17.0\n */\n var InlineValueEvaluatableExpression;\n (function (InlineValueEvaluatableExpression) {\n /**\n * Creates a new InlineValueEvaluatableExpression literal.\n */\n function create(range, expression) {\n return { range: range, expression: expression };\n }\n InlineValueEvaluatableExpression.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== undefined && candidate !== null && Range.is(candidate.range)\n && (Is.string(candidate.expression) || candidate.expression === undefined);\n }\n InlineValueEvaluatableExpression.is = is;\n })(InlineValueEvaluatableExpression || (exports.InlineValueEvaluatableExpression = InlineValueEvaluatableExpression = {}));\n /**\n * The InlineValueContext namespace provides helper functions to work with\n * {@link InlineValueContext} literals.\n *\n * @since 3.17.0\n */\n var InlineValueContext;\n (function (InlineValueContext) {\n /**\n * Creates a new InlineValueContext literal.\n */\n function create(frameId, stoppedLocation) {\n return { frameId: frameId, stoppedLocation: stoppedLocation };\n }\n InlineValueContext.create = create;\n /**\n * Checks whether the given literal conforms to the {@link InlineValueContext} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(value.stoppedLocation);\n }\n InlineValueContext.is = is;\n })(InlineValueContext || (exports.InlineValueContext = InlineValueContext = {}));\n /**\n * Inlay hint kinds.\n *\n * @since 3.17.0\n */\n var InlayHintKind;\n (function (InlayHintKind) {\n /**\n * An inlay hint that for a type annotation.\n */\n InlayHintKind.Type = 1;\n /**\n * An inlay hint that is for a parameter.\n */\n InlayHintKind.Parameter = 2;\n function is(value) {\n return value === 1 || value === 2;\n }\n InlayHintKind.is = is;\n })(InlayHintKind || (exports.InlayHintKind = InlayHintKind = {}));\n var InlayHintLabelPart;\n (function (InlayHintLabelPart) {\n function create(value) {\n return { value: value };\n }\n InlayHintLabelPart.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate)\n && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip))\n && (candidate.location === undefined || Location.is(candidate.location))\n && (candidate.command === undefined || Command.is(candidate.command));\n }\n InlayHintLabelPart.is = is;\n })(InlayHintLabelPart || (exports.InlayHintLabelPart = InlayHintLabelPart = {}));\n var InlayHint;\n (function (InlayHint) {\n function create(position, label, kind) {\n var result = { position: position, label: label };\n if (kind !== undefined) {\n result.kind = kind;\n }\n return result;\n }\n InlayHint.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.position)\n && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is))\n && (candidate.kind === undefined || InlayHintKind.is(candidate.kind))\n && (candidate.textEdits === undefined) || Is.typedArray(candidate.textEdits, TextEdit.is)\n && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip))\n && (candidate.paddingLeft === undefined || Is.boolean(candidate.paddingLeft))\n && (candidate.paddingRight === undefined || Is.boolean(candidate.paddingRight));\n }\n InlayHint.is = is;\n })(InlayHint || (exports.InlayHint = InlayHint = {}));\n var StringValue;\n (function (StringValue) {\n function createSnippet(value) {\n return { kind: 'snippet', value: value };\n }\n StringValue.createSnippet = createSnippet;\n })(StringValue || (exports.StringValue = StringValue = {}));\n var InlineCompletionItem;\n (function (InlineCompletionItem) {\n function create(insertText, filterText, range, command) {\n return { insertText: insertText, filterText: filterText, range: range, command: command };\n }\n InlineCompletionItem.create = create;\n })(InlineCompletionItem || (exports.InlineCompletionItem = InlineCompletionItem = {}));\n var InlineCompletionList;\n (function (InlineCompletionList) {\n function create(items) {\n return { items: items };\n }\n InlineCompletionList.create = create;\n })(InlineCompletionList || (exports.InlineCompletionList = InlineCompletionList = {}));\n /**\n * Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered.\n *\n * @since 3.18.0\n * @proposed\n */\n var InlineCompletionTriggerKind;\n (function (InlineCompletionTriggerKind) {\n /**\n * Completion was triggered explicitly by a user gesture.\n */\n InlineCompletionTriggerKind.Invoked = 0;\n /**\n * Completion was triggered automatically while editing.\n */\n InlineCompletionTriggerKind.Automatic = 1;\n })(InlineCompletionTriggerKind || (exports.InlineCompletionTriggerKind = InlineCompletionTriggerKind = {}));\n var SelectedCompletionInfo;\n (function (SelectedCompletionInfo) {\n function create(range, text) {\n return { range: range, text: text };\n }\n SelectedCompletionInfo.create = create;\n })(SelectedCompletionInfo || (exports.SelectedCompletionInfo = SelectedCompletionInfo = {}));\n var InlineCompletionContext;\n (function (InlineCompletionContext) {\n function create(triggerKind, selectedCompletionInfo) {\n return { triggerKind: triggerKind, selectedCompletionInfo: selectedCompletionInfo };\n }\n InlineCompletionContext.create = create;\n })(InlineCompletionContext || (exports.InlineCompletionContext = InlineCompletionContext = {}));\n var WorkspaceFolder;\n (function (WorkspaceFolder) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name);\n }\n WorkspaceFolder.is = is;\n })(WorkspaceFolder || (exports.WorkspaceFolder = WorkspaceFolder = {}));\n exports.EOL = ['\\n', '\\r\\n', '\\r'];\n /**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n */\n var TextDocument;\n (function (TextDocument) {\n /**\n * Creates a new ITextDocument literal from the given uri and content.\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's version.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Checks whether the given literal conforms to the {@link ITextDocument} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount)\n && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n }\n TextDocument.is = is;\n function applyEdits(document, edits) {\n var text = document.getText();\n var sortedEdits = mergeSort(edits, function (a, b) {\n var diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n var lastModifiedOffset = text.length;\n for (var i = sortedEdits.length - 1; i >= 0; i--) {\n var e = sortedEdits[i];\n var startOffset = document.offsetAt(e.range.start);\n var endOffset = document.offsetAt(e.range.end);\n if (endOffset <= lastModifiedOffset) {\n text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\n }\n else {\n throw new Error('Overlapping edit');\n }\n lastModifiedOffset = startOffset;\n }\n return text;\n }\n TextDocument.applyEdits = applyEdits;\n function mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n var p = (data.length / 2) | 0;\n var left = data.slice(0, p);\n var right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n var leftIdx = 0;\n var rightIdx = 0;\n var i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n var ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n }\n })(TextDocument || (exports.TextDocument = TextDocument = {}));\n /**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n */\n var FullTextDocument = /** @class */ (function () {\n function FullTextDocument(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n Object.defineProperty(FullTextDocument.prototype, \"uri\", {\n get: function () {\n return this._uri;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\n get: function () {\n return this._languageId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"version\", {\n get: function () {\n return this._version;\n },\n enumerable: false,\n configurable: true\n });\n FullTextDocument.prototype.getText = function (range) {\n if (range) {\n var start = this.offsetAt(range.start);\n var end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n };\n FullTextDocument.prototype.update = function (event, version) {\n this._content = event.text;\n this._version = version;\n this._lineOffsets = undefined;\n };\n FullTextDocument.prototype.getLineOffsets = function () {\n if (this._lineOffsets === undefined) {\n var lineOffsets = [];\n var text = this._content;\n var isLineStart = true;\n for (var i = 0; i < text.length; i++) {\n if (isLineStart) {\n lineOffsets.push(i);\n isLineStart = false;\n }\n var ch = text.charAt(i);\n isLineStart = (ch === '\\r' || ch === '\\n');\n if (ch === '\\r' && i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n i++;\n }\n }\n if (isLineStart && text.length > 0) {\n lineOffsets.push(text.length);\n }\n this._lineOffsets = lineOffsets;\n }\n return this._lineOffsets;\n };\n FullTextDocument.prototype.positionAt = function (offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n var lineOffsets = this.getLineOffsets();\n var low = 0, high = lineOffsets.length;\n if (high === 0) {\n return Position.create(0, offset);\n }\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n var line = low - 1;\n return Position.create(line, offset - lineOffsets[line]);\n };\n FullTextDocument.prototype.offsetAt = function (position) {\n var lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\n else if (position.line < 0) {\n return 0;\n }\n var lineOffset = lineOffsets[position.line];\n var nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n };\n Object.defineProperty(FullTextDocument.prototype, \"lineCount\", {\n get: function () {\n return this.getLineOffsets().length;\n },\n enumerable: false,\n configurable: true\n });\n return FullTextDocument;\n }());\n var Is;\n (function (Is) {\n var toString = Object.prototype.toString;\n function defined(value) {\n return typeof value !== 'undefined';\n }\n Is.defined = defined;\n function undefined(value) {\n return typeof value === 'undefined';\n }\n Is.undefined = undefined;\n function boolean(value) {\n return value === true || value === false;\n }\n Is.boolean = boolean;\n function string(value) {\n return toString.call(value) === '[object String]';\n }\n Is.string = string;\n function number(value) {\n return toString.call(value) === '[object Number]';\n }\n Is.number = number;\n function numberRange(value, min, max) {\n return toString.call(value) === '[object Number]' && min <= value && value <= max;\n }\n Is.numberRange = numberRange;\n function integer(value) {\n return toString.call(value) === '[object Number]' && -2147483648 <= value && value <= 2147483647;\n }\n Is.integer = integer;\n function uinteger(value) {\n return toString.call(value) === '[object Number]' && 0 <= value && value <= 2147483647;\n }\n Is.uinteger = uinteger;\n function func(value) {\n return toString.call(value) === '[object Function]';\n }\n Is.func = func;\n function objectLiteral(value) {\n // Strictly speaking class instances pass this check as well. Since the LSP\n // doesn't use classes we ignore this for now. If we do we need to add something\n // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\n return value !== null && typeof value === 'object';\n }\n Is.objectLiteral = objectLiteral;\n function typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n }\n Is.typedArray = typedArray;\n })(Is || (Is = {}));\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Line = void 0;\nclass Line {\n constructor(document, range) {\n this.document = document;\n this.range = range;\n }\n getRange() {\n return this.range;\n }\n getTextContent() {\n return this.document.getText().substring(this.document.offsetAt(this.range.start), this.document.offsetAt(this.range.end));\n }\n isAfter(line) {\n return this.range.start.line > line.range.start.line;\n }\n isBefore(line) {\n return this.range.start.line < line;\n }\n}\nexports.Line = Line;\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Remy Suen. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = void 0;\nclass Util {\n static isUTF8BOM(char) {\n const uintArray = Uint8Array.from(Buffer.from(char, \"UTF-8\"));\n return uintArray[0] === 0xEF && uintArray[1] == 0xBB && uintArray[2] == 0xBF;\n }\n static isWhitespace(char) {\n return char === ' ' || char === '\\t' || Util.isNewline(char);\n }\n static isNewline(char) {\n return char === '\\r' || char === '\\n';\n }\n static findLeadingNonWhitespace(content, escapeChar) {\n whitespaceCheck: for (let i = 0; i < content.length; i++) {\n switch (content.charAt(i)) {\n case ' ':\n case '\\t':\n continue;\n case escapeChar:\n escapeCheck: for (let j = i + 1; j < content.length; j++) {\n switch (content.charAt(j)) {\n case ' ':\n case '\\t':\n continue;\n case '\\r':\n // offset one more for \\r\\n\n i = j + 1;\n continue whitespaceCheck;\n case '\\n':\n i = j;\n continue whitespaceCheck;\n default:\n break escapeCheck;\n }\n }\n // found an escape character and then reached EOF\n return -1;\n default:\n return i;\n }\n }\n // only possible if the content is the empty string\n return -1;\n }\n /**\n * Determines if the given position is contained within the given range.\n *\n * @param position the position to check\n * @param range the range to see if the position is inside of\n */\n static isInsideRange(position, range) {\n if (range.start.line === range.end.line) {\n return range.start.line === position.line\n && range.start.character <= position.character\n && position.character <= range.end.character;\n }\n else if (range.start.line === position.line) {\n return range.start.character <= position.character;\n }\n else if (range.end.line === position.line) {\n return position.character <= range.end.character;\n }\n return range.start.line < position.line && position.line < range.end.line;\n }\n static parseHeredocName(value) {\n value = value.substring(2);\n if (value.charAt(0) === '-') {\n value = value.substring(1);\n }\n if (value.charAt(0) === '\"') {\n if (value.charAt(value.length - 1) !== '\"') {\n return null;\n }\n value = value.substring(1, value.length - 1);\n }\n if (value.charAt(0) === '\\'') {\n if (value.charAt(value.length - 1) !== '\\'') {\n return null;\n }\n value = value.substring(1, value.length - 1);\n }\n if (value.charAt(0) === \"<\") {\n return null;\n }\n return value;\n }\n}\nexports.Util = Util;\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Remy Suen. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Parser = void 0;\nconst vscode_languageserver_textdocument_1 = require(\"vscode-languageserver-textdocument\");\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst comment_1 = require(\"./comment\");\nconst parserDirective_1 = require(\"./parserDirective\");\nconst instruction_1 = require(\"./instruction\");\nconst add_1 = require(\"./instructions/add\");\nconst arg_1 = require(\"./instructions/arg\");\nconst cmd_1 = require(\"./instructions/cmd\");\nconst copy_1 = require(\"./instructions/copy\");\nconst env_1 = require(\"./instructions/env\");\nconst entrypoint_1 = require(\"./instructions/entrypoint\");\nconst from_1 = require(\"./instructions/from\");\nconst healthcheck_1 = require(\"./instructions/healthcheck\");\nconst label_1 = require(\"./instructions/label\");\nconst onbuild_1 = require(\"./instructions/onbuild\");\nconst run_1 = require(\"./instructions/run\");\nconst shell_1 = require(\"./instructions/shell\");\nconst stopsignal_1 = require(\"./instructions/stopsignal\");\nconst workdir_1 = require(\"./instructions/workdir\");\nconst user_1 = require(\"./instructions/user\");\nconst volume_1 = require(\"./instructions/volume\");\nconst dockerfile_1 = require(\"./dockerfile\");\nconst util_1 = require(\"./util\");\nconst main_1 = require(\"./main\");\nclass Parser {\n constructor() {\n this.escapeChar = null;\n }\n static createInstruction(document, dockerfile, escapeChar, lineRange, instruction, instructionRange) {\n switch (instruction.toUpperCase()) {\n case \"ADD\":\n return new add_1.Add(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"ARG\":\n return new arg_1.Arg(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"CMD\":\n return new cmd_1.Cmd(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"COPY\":\n return new copy_1.Copy(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"ENTRYPOINT\":\n return new entrypoint_1.Entrypoint(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"ENV\":\n return new env_1.Env(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"FROM\":\n return new from_1.From(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"HEALTHCHECK\":\n return new healthcheck_1.Healthcheck(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"LABEL\":\n return new label_1.Label(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"ONBUILD\":\n return new onbuild_1.Onbuild(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"RUN\":\n return new run_1.Run(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"SHELL\":\n return new shell_1.Shell(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"STOPSIGNAL\":\n return new stopsignal_1.Stopsignal(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"WORKDIR\":\n return new workdir_1.Workdir(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"USER\":\n return new user_1.User(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n case \"VOLUME\":\n return new volume_1.Volume(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n }\n return new instruction_1.Instruction(document, lineRange, dockerfile, escapeChar, instruction, instructionRange);\n }\n getParserDirectives(document, buffer) {\n // reset the escape directive in between runs\n const directives = [];\n this.escapeChar = '';\n const offset = util_1.Util.isUTF8BOM(buffer.substring(0, 1)) ? 1 : 0;\n directiveCheck: for (let i = offset; i < buffer.length; i++) {\n switch (buffer.charAt(i)) {\n case ' ':\n case '\\t':\n break;\n case '\\r':\n case '\\n':\n // blank lines stop the parsing of directives immediately\n break directiveCheck;\n case '#':\n let directiveStart = -1;\n let directiveEnd = -1;\n for (let j = i + 1; j < buffer.length; j++) {\n let char = buffer.charAt(j);\n switch (char) {\n case ' ':\n case '\\t':\n if (directiveStart !== -1 && directiveEnd === -1) {\n directiveEnd = j;\n }\n break;\n case '\\r':\n case '\\n':\n break directiveCheck;\n case '=':\n let valueStart = -1;\n let valueEnd = -1;\n if (directiveEnd === -1) {\n directiveEnd = j;\n }\n // assume the line ends with the file\n let lineEnd = buffer.length;\n directiveValue: for (let k = j + 1; k < buffer.length; k++) {\n char = buffer.charAt(k);\n switch (char) {\n case '\\r':\n case '\\n':\n if (valueStart !== -1 && valueEnd === -1) {\n valueEnd = k;\n }\n // line break found, reset\n lineEnd = k;\n break directiveValue;\n case '\\t':\n case ' ':\n if (valueStart !== -1 && valueEnd === -1) {\n valueEnd = k;\n }\n continue;\n default:\n if (valueStart === -1) {\n valueStart = k;\n }\n break;\n }\n }\n if (directiveStart === -1) {\n // no directive, it's a regular comment\n break directiveCheck;\n }\n if (valueStart === -1) {\n // no non-whitespace characters found, highlight all the characters then\n valueStart = j + 1;\n valueEnd = lineEnd;\n }\n else if (valueEnd === -1) {\n // reached EOF\n valueEnd = buffer.length;\n }\n const lineRange = vscode_languageserver_types_1.Range.create(document.positionAt(i), document.positionAt(lineEnd));\n const nameRange = vscode_languageserver_types_1.Range.create(document.positionAt(directiveStart), document.positionAt(directiveEnd));\n const valueRange = vscode_languageserver_types_1.Range.create(document.positionAt(valueStart), document.positionAt(valueEnd));\n directives.push(new parserDirective_1.ParserDirective(document, lineRange, nameRange, valueRange));\n directiveStart = -1;\n if (buffer.charAt(valueEnd) === '\\r') {\n // skip over the \\r\n i = valueEnd + 1;\n }\n else {\n i = valueEnd;\n }\n continue directiveCheck;\n default:\n if (directiveStart === -1) {\n directiveStart = j;\n }\n break;\n }\n }\n break;\n default:\n break directiveCheck;\n }\n }\n return directives;\n }\n parse(buffer) {\n this.document = vscode_languageserver_textdocument_1.TextDocument.create(\"\", \"\", 0, buffer);\n this.buffer = buffer;\n let dockerfile = new dockerfile_1.Dockerfile(this.document);\n let directives = this.getParserDirectives(this.document, this.buffer);\n let offset = 0;\n this.escapeChar = '\\\\';\n if (directives.length > 0) {\n dockerfile.setDirectives(directives);\n this.escapeChar = dockerfile.getEscapeCharacter();\n // start parsing after the directives\n offset = this.document.offsetAt(vscode_languageserver_types_1.Position.create(directives.length, 0));\n }\n else if (util_1.Util.isUTF8BOM(buffer.substring(0, 1))) {\n offset = 1;\n }\n for (let i = offset; i < this.buffer.length; i++) {\n const char = this.buffer.charAt(i);\n switch (char) {\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n break;\n case '#':\n i = this.processComment(dockerfile, i);\n break;\n default:\n i = this.processInstruction(dockerfile, char, i);\n break;\n }\n }\n dockerfile.organizeComments();\n return dockerfile;\n }\n processInstruction(dockerfile, char, start) {\n let instruction = char;\n let instructionEnd = -1;\n let escapedInstruction = false;\n instructionCheck: for (let i = start + 1; i < this.buffer.length; i++) {\n char = this.buffer.charAt(i);\n switch (char) {\n case this.escapeChar:\n escapedInstruction = true;\n char = this.buffer.charAt(i + 1);\n if (char === '\\r' || char === '\\n') {\n if (instructionEnd === -1) {\n instructionEnd = i;\n }\n i++;\n }\n else if (char === ' ' || char === '\\t') {\n for (let j = i + 2; j < this.buffer.length; j++) {\n switch (this.buffer.charAt(j)) {\n case ' ':\n case '\\t':\n break;\n case '\\r':\n case '\\n':\n i = j;\n continue instructionCheck;\n default:\n // found an argument, mark end of instruction\n instructionEnd = i + 1;\n instruction = instruction + this.escapeChar;\n i = j - 2;\n continue instructionCheck;\n }\n }\n // reached EOF\n instructionEnd = i + 1;\n instruction = instruction + this.escapeChar;\n break instructionCheck;\n }\n else {\n instructionEnd = i + 1;\n instruction = instruction + this.escapeChar;\n // reset and consider it as one contiguous word\n escapedInstruction = false;\n }\n break;\n case ' ':\n case '\\t':\n if (escapedInstruction) {\n // on an escaped newline, need to search for non-whitespace\n escapeCheck: for (let j = i + 1; j < this.buffer.length; j++) {\n switch (this.buffer.charAt(j)) {\n case ' ':\n case '\\t':\n break;\n case '\\r':\n case '\\n':\n i = j;\n continue instructionCheck;\n default:\n break escapeCheck;\n }\n }\n escapedInstruction = false;\n }\n if (instructionEnd === -1) {\n instructionEnd = i;\n }\n i = this.processArguments(dockerfile, instruction, instructionEnd, start, i);\n dockerfile.addInstruction(this.createInstruction(dockerfile, instruction, start, instructionEnd, i));\n return i;\n case '\\r':\n case '\\n':\n if (escapedInstruction) {\n continue;\n }\n if (instructionEnd === -1) {\n instructionEnd = i;\n }\n dockerfile.addInstruction(this.createInstruction(dockerfile, instruction, start, i, i));\n return i;\n case '#':\n if (escapedInstruction) {\n continue;\n }\n default:\n instructionEnd = i + 1;\n instruction = instruction + char;\n escapedInstruction = false;\n break;\n }\n }\n // reached EOF\n if (instructionEnd === -1) {\n instructionEnd = this.buffer.length;\n }\n dockerfile.addInstruction(this.createInstruction(dockerfile, instruction, start, instructionEnd, this.buffer.length));\n return this.buffer.length;\n }\n processHeredocs(instruction, offset) {\n let keyword = instruction.getKeyword();\n if (keyword === main_1.Keyword.ONBUILD) {\n instruction = instruction.getTriggerInstruction();\n if (instruction === null) {\n return offset;\n }\n keyword = instruction.getKeyword();\n }\n if (keyword !== main_1.Keyword.ADD && keyword !== main_1.Keyword.COPY && keyword !== main_1.Keyword.RUN) {\n return offset;\n }\n const heredocs = [];\n for (const arg of instruction.getArguments()) {\n const value = arg.getValue();\n if (value.startsWith(\"<<\") && value.length > 2) {\n const name = util_1.Util.parseHeredocName(value);\n if (name !== null) {\n heredocs.push(name);\n }\n }\n }\n if (heredocs.length > 0) {\n for (const heredoc of heredocs) {\n offset = this.parseHeredoc(heredoc, offset);\n }\n }\n return offset;\n }\n processArguments(dockerfile, instruction, instructionEnd, start, offset) {\n let escaped = false;\n argumentsCheck: for (let i = offset + 1; i < this.buffer.length; i++) {\n switch (this.buffer.charAt(i)) {\n case '\\r':\n case '\\n':\n if (escaped) {\n continue;\n }\n return this.processHeredocs(this.createInstruction(dockerfile, instruction, start, instructionEnd, i), i);\n case this.escapeChar:\n const next = this.buffer.charAt(i + 1);\n if (next === '\\n' || next === '\\r') {\n escaped = true;\n i++;\n }\n else if (next === ' ' || next === '\\t') {\n for (let j = i + 2; j < this.buffer.length; j++) {\n switch (this.buffer.charAt(j)) {\n case ' ':\n case '\\t':\n break;\n case '\\r':\n case '\\n':\n escaped = true;\n default:\n i = j;\n continue argumentsCheck;\n }\n }\n // reached EOF\n return this.buffer.length;\n }\n continue;\n case '#':\n if (escaped) {\n i = this.processComment(dockerfile, i);\n continue argumentsCheck;\n }\n break;\n case ' ':\n case '\\t':\n break;\n default:\n if (escaped) {\n escaped = false;\n }\n break;\n }\n }\n return this.buffer.length;\n }\n processComment(dockerfile, start) {\n let end = this.buffer.length;\n commentLoop: for (let i = start + 1; i < this.buffer.length; i++) {\n switch (this.buffer.charAt(i)) {\n case '\\r':\n case '\\n':\n end = i;\n break commentLoop;\n }\n }\n const range = vscode_languageserver_types_1.Range.create(this.document.positionAt(start), this.document.positionAt(end));\n dockerfile.addComment(new comment_1.Comment(this.document, range));\n return end;\n }\n parseHeredoc(heredocName, offset) {\n let startWord = -1;\n let lineStart = true;\n for (let i = offset; i < this.buffer.length; i++) {\n switch (this.buffer.charAt(i)) {\n case ' ':\n case '\\t':\n lineStart = false;\n break;\n case '\\r':\n case '\\n':\n if (startWord !== -1 && heredocName === this.buffer.substring(startWord, i)) {\n return i;\n }\n startWord = -1;\n lineStart = true;\n break;\n default:\n if (lineStart) {\n startWord = i;\n lineStart = false;\n }\n break;\n }\n }\n return this.buffer.length;\n }\n createInstruction(dockerfile, instruction, start, instructionEnd, end) {\n const startPosition = this.document.positionAt(start);\n const instructionRange = vscode_languageserver_types_1.Range.create(startPosition, this.document.positionAt(instructionEnd));\n const lineRange = vscode_languageserver_types_1.Range.create(startPosition, this.document.positionAt(end));\n return Parser.createInstruction(this.document, dockerfile, this.escapeChar, lineRange, instruction, instructionRange);\n }\n}\nexports.Parser = Parser;\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n(function (factory) {\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n var v = factory(require, exports);\n if (v !== undefined) module.exports = v;\n }\n else if (typeof define === \"function\" && define.amd) {\n define([\"require\", \"exports\"], factory);\n }\n})(function (require, exports) {\n /* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n 'use strict';\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TextDocument = void 0;\n var FullTextDocument = /** @class */ (function () {\n function FullTextDocument(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n Object.defineProperty(FullTextDocument.prototype, \"uri\", {\n get: function () {\n return this._uri;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\n get: function () {\n return this._languageId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"version\", {\n get: function () {\n return this._version;\n },\n enumerable: false,\n configurable: true\n });\n FullTextDocument.prototype.getText = function (range) {\n if (range) {\n var start = this.offsetAt(range.start);\n var end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n };\n FullTextDocument.prototype.update = function (changes, version) {\n for (var _i = 0, changes_1 = changes; _i < changes_1.length; _i++) {\n var change = changes_1[_i];\n if (FullTextDocument.isIncremental(change)) {\n // makes sure start is before end\n var range = getWellformedRange(change.range);\n // update content\n var startOffset = this.offsetAt(range.start);\n var endOffset = this.offsetAt(range.end);\n this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length);\n // update the offsets\n var startLine = Math.max(range.start.line, 0);\n var endLine = Math.max(range.end.line, 0);\n var lineOffsets = this._lineOffsets;\n var addedLineOffsets = computeLineOffsets(change.text, false, startOffset);\n if (endLine - startLine === addedLineOffsets.length) {\n for (var i = 0, len = addedLineOffsets.length; i < len; i++) {\n lineOffsets[i + startLine + 1] = addedLineOffsets[i];\n }\n }\n else {\n if (addedLineOffsets.length < 10000) {\n lineOffsets.splice.apply(lineOffsets, __spreadArray([startLine + 1, endLine - startLine], addedLineOffsets, false));\n }\n else { // avoid too many arguments for splice\n this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1));\n }\n }\n var diff = change.text.length - (endOffset - startOffset);\n if (diff !== 0) {\n for (var i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) {\n lineOffsets[i] = lineOffsets[i] + diff;\n }\n }\n }\n else if (FullTextDocument.isFull(change)) {\n this._content = change.text;\n this._lineOffsets = undefined;\n }\n else {\n throw new Error('Unknown change event received');\n }\n }\n this._version = version;\n };\n FullTextDocument.prototype.getLineOffsets = function () {\n if (this._lineOffsets === undefined) {\n this._lineOffsets = computeLineOffsets(this._content, true);\n }\n return this._lineOffsets;\n };\n FullTextDocument.prototype.positionAt = function (offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n var lineOffsets = this.getLineOffsets();\n var low = 0, high = lineOffsets.length;\n if (high === 0) {\n return { line: 0, character: offset };\n }\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n var line = low - 1;\n offset = this.ensureBeforeEOL(offset, lineOffsets[line]);\n return { line: line, character: offset - lineOffsets[line] };\n };\n FullTextDocument.prototype.offsetAt = function (position) {\n var lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\n else if (position.line < 0) {\n return 0;\n }\n var lineOffset = lineOffsets[position.line];\n if (position.character <= 0) {\n return lineOffset;\n }\n var nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n var offset = Math.min(lineOffset + position.character, nextLineOffset);\n return this.ensureBeforeEOL(offset, lineOffset);\n };\n FullTextDocument.prototype.ensureBeforeEOL = function (offset, lineOffset) {\n while (offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1))) {\n offset--;\n }\n return offset;\n };\n Object.defineProperty(FullTextDocument.prototype, \"lineCount\", {\n get: function () {\n return this.getLineOffsets().length;\n },\n enumerable: false,\n configurable: true\n });\n FullTextDocument.isIncremental = function (event) {\n var candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range !== undefined &&\n (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n };\n FullTextDocument.isFull = function (event) {\n var candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n };\n return FullTextDocument;\n }());\n var TextDocument;\n (function (TextDocument) {\n /**\n * Creates a new text document.\n *\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's initial version number.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Updates a TextDocument by modifying its content.\n *\n * @param document the document to update. Only documents created by TextDocument.create are valid inputs.\n * @param changes the changes to apply to the document.\n * @param version the changes version for the document.\n * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter.\n *\n */\n function update(document, changes, version) {\n if (document instanceof FullTextDocument) {\n document.update(changes, version);\n return document;\n }\n else {\n throw new Error('TextDocument.update: document must be created by TextDocument.create');\n }\n }\n TextDocument.update = update;\n function applyEdits(document, edits) {\n var text = document.getText();\n var sortedEdits = mergeSort(edits.map(getWellformedEdit), function (a, b) {\n var diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n var lastModifiedOffset = 0;\n var spans = [];\n for (var _i = 0, sortedEdits_1 = sortedEdits; _i < sortedEdits_1.length; _i++) {\n var e = sortedEdits_1[_i];\n var startOffset = document.offsetAt(e.range.start);\n if (startOffset < lastModifiedOffset) {\n throw new Error('Overlapping edit');\n }\n else if (startOffset > lastModifiedOffset) {\n spans.push(text.substring(lastModifiedOffset, startOffset));\n }\n if (e.newText.length) {\n spans.push(e.newText);\n }\n lastModifiedOffset = document.offsetAt(e.range.end);\n }\n spans.push(text.substr(lastModifiedOffset));\n return spans.join('');\n }\n TextDocument.applyEdits = applyEdits;\n })(TextDocument || (exports.TextDocument = TextDocument = {}));\n function mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n var p = (data.length / 2) | 0;\n var left = data.slice(0, p);\n var right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n var leftIdx = 0;\n var rightIdx = 0;\n var i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n var ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n }\n function computeLineOffsets(text, isAtLineStart, textOffset) {\n if (textOffset === void 0) { textOffset = 0; }\n var result = isAtLineStart ? [textOffset] : [];\n for (var i = 0; i < text.length; i++) {\n var ch = text.charCodeAt(i);\n if (isEOL(ch)) {\n if (ch === 13 /* CharCode.CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* CharCode.LineFeed */) {\n i++;\n }\n result.push(textOffset + i + 1);\n }\n }\n return result;\n }\n function isEOL(char) {\n return char === 13 /* CharCode.CarriageReturn */ || char === 10 /* CharCode.LineFeed */;\n }\n function getWellformedRange(range) {\n var start = range.start;\n var end = range.end;\n if (start.line > end.line || (start.line === end.line && start.character > end.character)) {\n return { start: end, end: start };\n }\n return range;\n }\n function getWellformedEdit(textEdit) {\n var range = getWellformedRange(textEdit.range);\n if (range !== textEdit.range) {\n return { newText: textEdit.newText, range: range };\n }\n return textEdit;\n }\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParserDirective = void 0;\nconst main_1 = require(\"./main\");\nconst line_1 = require(\"./line\");\nclass ParserDirective extends line_1.Line {\n constructor(document, range, nameRange, valueRange) {\n super(document, range);\n this.nameRange = nameRange;\n this.valueRange = valueRange;\n }\n toString() {\n return \"# \" + this.getName() + '=' + this.getValue();\n }\n getNameRange() {\n return this.nameRange;\n }\n getValueRange() {\n return this.valueRange;\n }\n getName() {\n return this.document.getText().substring(this.document.offsetAt(this.nameRange.start), this.document.offsetAt(this.nameRange.end));\n }\n getValue() {\n return this.document.getText().substring(this.document.offsetAt(this.valueRange.start), this.document.offsetAt(this.valueRange.end));\n }\n getDirective() {\n const directive = main_1.Directive[this.getName().toLowerCase()];\n return directive === undefined ? null : directive;\n }\n}\nexports.ParserDirective = ParserDirective;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Instruction = void 0;\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst util_1 = require(\"./util\");\nconst line_1 = require(\"./line\");\nconst argument_1 = require(\"./argument\");\nconst heredoc_1 = require(\"./heredoc\");\nconst variable_1 = require(\"./variable\");\nconst main_1 = require(\"./main\");\nclass Instruction extends line_1.Line {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range);\n this.dockerfile = dockerfile;\n this.escapeChar = escapeChar;\n this.instruction = instruction;\n this.instructionRange = instructionRange;\n }\n toString() {\n let value = this.getKeyword();\n for (let arg of this.getRawArguments()) {\n value += ' ';\n value += arg.getValue();\n }\n return value;\n }\n getRangeContent(range) {\n if (range === null) {\n return null;\n }\n return this.document.getText().substring(this.document.offsetAt(range.start), this.document.offsetAt(range.end));\n }\n getInstructionRange() {\n return this.instructionRange;\n }\n getInstruction() {\n return this.instruction;\n }\n getKeyword() {\n return this.getInstruction().toUpperCase();\n }\n getArgumentsRange() {\n let args = this.getArguments();\n if (args.length === 0) {\n return null;\n }\n return vscode_languageserver_types_1.Range.create(args[0].getRange().start, args[args.length - 1].getRange().end);\n }\n getArgumentsRanges() {\n let args = this.getArguments();\n if (args.length === 0) {\n return [];\n }\n if (args[0].getRange().start.line === args[args.length - 1].getRange().end.line) {\n return [vscode_languageserver_types_1.Range.create(args[0].getRange().start, args[args.length - 1].getRange().end)];\n }\n let ranges = [];\n let end = -1;\n let startPosition = args[0].getRange().start;\n let range = this.getInstructionRange();\n let extra = this.document.offsetAt(startPosition) - this.document.offsetAt(range.start);\n let content = this.getTextContent();\n let fullArgs = content.substring(extra, this.document.offsetAt(args[args.length - 1].getRange().end) - this.document.offsetAt(range.start));\n let offset = this.document.offsetAt(range.start) + extra;\n let start = false;\n let comment = false;\n for (let i = 0; i < fullArgs.length; i++) {\n let char = fullArgs.charAt(i);\n if (char === this.escapeChar) {\n let next = fullArgs.charAt(i + 1);\n if (next === ' ' || next === '\\t') {\n whitespaceCheck: for (let j = i + 2; j < fullArgs.length; j++) {\n switch (fullArgs.charAt(j)) {\n case ' ':\n case '\\t':\n continue;\n case '\\r':\n j++;\n case '\\n':\n if (startPosition !== null) {\n ranges.push(vscode_languageserver_types_1.Range.create(startPosition, this.document.positionAt(offset + end + 1)));\n }\n startPosition = null;\n start = true;\n comment = false;\n i = j;\n break whitespaceCheck;\n default:\n break whitespaceCheck;\n }\n }\n }\n else if (next === '\\r') {\n if (startPosition !== null) {\n ranges.push(vscode_languageserver_types_1.Range.create(startPosition, this.document.positionAt(offset + end + 1)));\n startPosition = null;\n }\n start = true;\n comment = false;\n i += 2;\n }\n else if (next === '\\n') {\n if (startPosition !== null) {\n ranges.push(vscode_languageserver_types_1.Range.create(startPosition, this.document.positionAt(offset + end + 1)));\n }\n startPosition = null;\n start = true;\n comment = false;\n i++;\n }\n else {\n i++;\n }\n }\n else if (util_1.Util.isNewline(char)) {\n if (comment) {\n startPosition = null;\n start = true;\n comment = false;\n }\n }\n else {\n if (!comment) {\n if (startPosition === null) {\n if (char === '#') {\n comment = true;\n continue;\n }\n let position = this.document.positionAt(offset + i);\n if (position.character !== 0) {\n startPosition = vscode_languageserver_types_1.Position.create(position.line, 0);\n }\n }\n end = i;\n }\n }\n }\n if (startPosition === null) {\n // should only happen if the last argument is on its own line with\n // no leading whitespace\n ranges.push(vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + end), this.document.positionAt(offset + end + 1)));\n }\n else {\n ranges.push(vscode_languageserver_types_1.Range.create(startPosition, this.document.positionAt(offset + end + 1)));\n }\n return ranges;\n }\n getRawArgumentsContent() {\n let args = this.getArguments();\n if (args.length === 0) {\n return null;\n }\n return this.getRangeContent(vscode_languageserver_types_1.Range.create(args[0].getRange().start, args[args.length - 1].getRange().end));\n }\n getArgumentsContent() {\n let args = this.getArguments();\n if (args.length === 0) {\n return null;\n }\n let content = \"\";\n let ranges = this.getArgumentsRanges();\n let documentText = this.document.getText();\n for (let range of ranges) {\n content += documentText.substring(this.document.offsetAt(range.start), this.document.offsetAt(range.end));\n }\n return content;\n }\n getArguments() {\n return this.getRawArguments();\n }\n getRawArguments() {\n let args = [];\n let range = this.getInstructionRange();\n let extra = this.document.offsetAt(range.end) - this.document.offsetAt(range.start);\n let content = this.getTextContent();\n let fullArgs = content.substring(extra);\n let offset = this.document.offsetAt(range.start) + extra;\n let start = false;\n let comment = false;\n let found = -1;\n // determines whether the parser has found a space or tab\n // whitespace character that's a part of an escaped newline sequence\n let escapedWhitespaceDetected = false;\n // determines if the parser is currently in an escaped newline sequence\n let escaping = false;\n let escapeMarker = -1;\n let escapedArg = \"\";\n for (let i = 0; i < fullArgs.length; i++) {\n let char = fullArgs.charAt(i);\n if (util_1.Util.isWhitespace(char)) {\n if (escaping) {\n escapedWhitespaceDetected = true;\n if (util_1.Util.isNewline(char)) {\n // reached a newline, any previously\n // detected whitespace should be ignored\n escapedWhitespaceDetected = false;\n if (comment) {\n // reached a newline, no longer in a comment\n comment = false;\n start = true;\n }\n }\n continue;\n }\n else if (found !== -1) {\n if (escapeMarker === -1) {\n args.push(new argument_1.Argument(escapedArg, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + found), this.document.positionAt(offset + i))));\n }\n else {\n args.push(new argument_1.Argument(escapedArg, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + found), this.document.positionAt(offset + escapeMarker))));\n }\n escapeMarker = -1;\n escapedArg = \"\";\n found = -1;\n }\n }\n else if (char === this.escapeChar) {\n let next = fullArgs.charAt(i + 1);\n if (next === ' ' || next === '\\t') {\n whitespaceCheck: for (let j = i + 2; j < fullArgs.length; j++) {\n let newlineCheck = fullArgs.charAt(j);\n switch (newlineCheck) {\n case ' ':\n case '\\t':\n continue;\n case '\\r':\n j++;\n case '\\n':\n comment = false;\n escaping = true;\n start = true;\n if (found !== -1) {\n escapeMarker = i;\n }\n i = j;\n break whitespaceCheck;\n default:\n escapeMarker = i;\n if (found === -1) {\n i = j - 1;\n }\n break whitespaceCheck;\n }\n }\n }\n else if (next === '\\r') {\n comment = false;\n escaping = true;\n start = true;\n if (found !== -1 && escapeMarker === -1) {\n escapeMarker = i;\n }\n i += 2;\n }\n else if (next === '\\n') {\n comment = false;\n escaping = true;\n start = true;\n if (found !== -1 && escapeMarker === -1) {\n escapeMarker = i;\n }\n i++;\n }\n else {\n if (escapedWhitespaceDetected && escapeMarker !== -1) {\n args.push(new argument_1.Argument(escapedArg, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + found), this.document.positionAt(offset + escapeMarker))));\n escapedArg = \"\";\n found = -1;\n }\n escapeMarker = -1;\n escapedWhitespaceDetected = false;\n escaping = false;\n if (next === '$') {\n escapedArg = escapedArg + char + next;\n }\n else if (next === '') {\n // reached EOF, stop processing\n break;\n }\n else {\n escapedArg = escapedArg + next;\n }\n if (found === -1) {\n found = i;\n }\n i++;\n }\n }\n else if (!comment) {\n if (start && char === '#') {\n comment = true;\n }\n else {\n if (escapedWhitespaceDetected && escapeMarker !== -1) {\n args.push(new argument_1.Argument(escapedArg, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + found), this.document.positionAt(offset + escapeMarker))));\n escapedArg = \"\";\n found = -1;\n }\n escapedWhitespaceDetected = false;\n escaping = false;\n escapeMarker = -1;\n escapedArg = escapedArg + char;\n if (found === -1) {\n found = i;\n }\n }\n // non-whitespace character detected, reset\n start = false;\n }\n }\n if (found !== -1) {\n if (escapeMarker === -1) {\n args.push(new argument_1.Argument(escapedArg, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + found), this.document.positionAt(offset + fullArgs.length))));\n }\n else {\n args.push(new argument_1.Argument(escapedArg, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + found), this.document.positionAt(offset + escapeMarker))));\n }\n }\n return args;\n }\n getExpandedArguments() {\n let args = this.getArguments();\n for (let i = 0; i < args.length; i++) {\n const argRange = args[i].getRange();\n let offset = this.document.offsetAt(argRange.start);\n const variables = this.parseVariables(offset, args[i].getValue());\n const swaps = [];\n let requiresExpansion = false;\n for (let variable of variables) {\n const value = this.dockerfile.resolveVariable(variable.getName(), variable.getNameRange().start.line);\n swaps.push(value);\n requiresExpansion = requiresExpansion || value !== undefined;\n }\n if (requiresExpansion) {\n let expanded = \"\";\n for (let j = 0; j < swaps.length; j++) {\n const variableRange = variables[j].getRange();\n const start = this.document.offsetAt(variableRange.start);\n const end = this.document.offsetAt(variableRange.end);\n if (swaps[j]) {\n // replace variable with its resolved value\n expanded += this.document.getText().substring(offset, start);\n expanded += swaps[j];\n offset = end;\n }\n else {\n expanded += this.document.getText().substring(offset, end);\n offset = end;\n }\n }\n const argEnd = this.document.offsetAt(argRange.end);\n if (argEnd !== offset) {\n // if the variable's range doesn't match the argument,\n // append the remaining text\n expanded += this.document.getText().substring(offset, argEnd);\n }\n args[i] = new argument_1.Argument(expanded, argRange);\n }\n }\n return args;\n }\n getVariables() {\n const variables = [];\n const args = this.getRawArguments();\n for (const arg of args) {\n let range = arg.getRange();\n let rawValue = this.document.getText().substring(this.document.offsetAt(range.start), this.document.offsetAt(range.end));\n const parsedVariables = this.parseVariables(this.document.offsetAt(arg.getRange().start), rawValue);\n for (const parsedVariable of parsedVariables) {\n variables.push(parsedVariable);\n }\n }\n return variables;\n }\n parseVariables(offset, arg) {\n let variables = [];\n variableLoop: for (let i = 0; i < arg.length; i++) {\n switch (arg.charAt(i)) {\n case this.escapeChar:\n if (arg.charAt(i + 1) === '$') {\n i++;\n }\n break;\n case '$':\n if (arg.charAt(i + 1) === '{') {\n let escapedString = \"${\";\n let escapedName = \"\";\n let nameEnd = -1;\n let escapedSubstitutionParameter = \"\";\n let substitutionStart = -1;\n let substitutionEnd = -1;\n let modifierRead = -1;\n nameLoop: for (let j = i + 2; j < arg.length; j++) {\n let char = arg.charAt(j);\n switch (char) {\n case this.escapeChar:\n for (let k = j + 1; k < arg.length; k++) {\n switch (arg.charAt(k)) {\n case ' ':\n case '\\t':\n case '\\r':\n // ignore whitespace\n continue;\n case '\\n':\n // escape this newline\n j = k;\n continue nameLoop;\n }\n }\n break;\n case '}':\n escapedString += '}';\n let modifier = null;\n let modifierRange = null;\n let substitutionParameter = modifierRead !== -1 ? escapedSubstitutionParameter : null;\n let substitutionRange = null;\n if (nameEnd === -1) {\n nameEnd = j;\n }\n else if (nameEnd + 1 === j) {\n modifier = \"\";\n modifierRange = vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + nameEnd + 1), this.document.positionAt(offset + nameEnd + 1));\n }\n else {\n if (substitutionStart === -1) {\n // no substitution parameter found,\n // but a modifier character existed,\n // just offset the range by 1 from\n // the modifier character\n substitutionStart = modifierRead + 1;\n substitutionEnd = modifierRead + 1;\n }\n else {\n // offset one more from the last\n // character found\n substitutionEnd = substitutionEnd + 1;\n }\n modifier = arg.substring(modifierRead, modifierRead + 1);\n modifierRange = vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + modifierRead), this.document.positionAt(offset + modifierRead + 1));\n substitutionRange = vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + substitutionStart), this.document.positionAt(offset + substitutionEnd));\n }\n let start = this.document.positionAt(offset + i);\n variables.push(new variable_1.Variable(escapedName, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + i + 2), this.document.positionAt(offset + nameEnd)), vscode_languageserver_types_1.Range.create(start, this.document.positionAt(offset + j + 1)), modifier, modifierRange, substitutionParameter, substitutionRange, this.dockerfile.resolveVariable(escapedName, start.line) !== undefined, this.isBuildVariable(escapedName, start.line), escapedString));\n i = j;\n continue variableLoop;\n case ':':\n if (nameEnd === -1) {\n nameEnd = j;\n }\n else if (modifierRead !== -1) {\n if (substitutionStart === -1) {\n substitutionStart = j;\n substitutionEnd = j;\n }\n else {\n substitutionEnd = j;\n }\n escapedSubstitutionParameter += ':';\n }\n else {\n modifierRead = j;\n }\n escapedString += ':';\n break;\n case '\\n':\n case '\\r':\n case ' ':\n case '\\t':\n break;\n default:\n if (nameEnd === -1) {\n escapedName += char;\n }\n else if (modifierRead !== -1) {\n if (substitutionStart === -1) {\n substitutionStart = j;\n substitutionEnd = j;\n }\n else {\n substitutionEnd = j;\n }\n escapedSubstitutionParameter += char;\n }\n else {\n modifierRead = j;\n }\n escapedString += char;\n break;\n }\n }\n // no } found, not a valid variable, stop processing\n break variableLoop;\n }\n else if (util_1.Util.isWhitespace(arg.charAt(i + 1)) || i === arg.length - 1) {\n // $ followed by whitespace or EOF, ignore this variable\n continue;\n }\n else {\n let escapedName = \"\";\n nameLoop: for (let j = i + 1; j < arg.length; j++) {\n let char = arg.charAt(j);\n switch (char) {\n case '\\r':\n case '\\n':\n case ' ':\n case '\\t':\n continue;\n case '$':\n case '\\'':\n case '\"':\n let varStart = this.document.positionAt(offset + i);\n variables.push(new variable_1.Variable(escapedName, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + i + 1), this.document.positionAt(offset + j)), vscode_languageserver_types_1.Range.create(varStart, this.document.positionAt(offset + j)), null, null, null, null, this.dockerfile.resolveVariable(escapedName, varStart.line) !== undefined, this.isBuildVariable(escapedName, varStart.line), '$' + escapedName));\n i = j - 1;\n continue variableLoop;\n case this.escapeChar:\n for (let k = j + 1; k < arg.length; k++) {\n switch (arg.charAt(k)) {\n case ' ':\n case '\\t':\n case '\\r':\n // ignore whitespace\n continue;\n case '\\n':\n // escape this newline\n j = k;\n continue nameLoop;\n }\n }\n // reached EOF after an escape character\n let start = this.document.positionAt(offset + i);\n variables.push(new variable_1.Variable(escapedName, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + i + 1), this.document.positionAt(offset + j)), vscode_languageserver_types_1.Range.create(start, this.document.positionAt(offset + j)), null, null, null, null, this.dockerfile.resolveVariable(escapedName, start.line) !== undefined, this.isBuildVariable(escapedName, start.line), '$' + escapedName));\n break variableLoop;\n }\n if (char.match(/^[a-z0-9_]+$/i) === null) {\n let varStart = this.document.positionAt(offset + i);\n variables.push(new variable_1.Variable(escapedName, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + i + 1), this.document.positionAt(offset + j)), vscode_languageserver_types_1.Range.create(varStart, this.document.positionAt(offset + j)), null, null, null, null, this.dockerfile.resolveVariable(escapedName, varStart.line) !== undefined, this.isBuildVariable(escapedName, varStart.line), '$' + escapedName));\n i = j - 1;\n continue variableLoop;\n }\n escapedName += char;\n }\n let start = this.document.positionAt(offset + i);\n variables.push(new variable_1.Variable(escapedName, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + i + 1), this.document.positionAt(offset + arg.length)), vscode_languageserver_types_1.Range.create(start, this.document.positionAt(offset + arg.length)), null, null, null, null, this.dockerfile.resolveVariable(escapedName, start.line) !== undefined, this.isBuildVariable(escapedName, start.line), '$' + escapedName));\n }\n break variableLoop;\n }\n }\n return variables;\n }\n isBuildVariable(variable, line) {\n if (this.getKeyword() === main_1.Keyword.FROM) {\n for (const initialArg of this.dockerfile.getInitialARGs()) {\n const arg = initialArg;\n const property = arg.getProperty();\n if (property && variable === property.getName()) {\n return true;\n }\n }\n return undefined;\n }\n let image = this.dockerfile.getContainingImage(vscode_languageserver_types_1.Position.create(line, 0));\n let envs = image.getENVs();\n for (let i = envs.length - 1; i >= 0; i--) {\n if (envs[i].isBefore(line)) {\n for (let property of envs[i].getProperties()) {\n if (property.getName() === variable) {\n return false;\n }\n }\n }\n }\n let args = image.getARGs();\n for (let i = args.length - 1; i >= 0; i--) {\n if (args[i].isBefore(line)) {\n let property = args[i].getProperty();\n if (property && property.getName() === variable) {\n return true;\n }\n }\n }\n return undefined;\n }\n createSingleLineHeredocs(args) {\n const heredocs = [];\n // instruction only on one line, if heredocs exist they would be incomplete\n for (const arg of args) {\n const value = arg.getValue();\n if (value.startsWith(\"<<\") && util_1.Util.parseHeredocName(value) !== null) {\n const startRange = arg.getRange();\n const nameRange = this.getNameRange(startRange);\n const name = this.getName(nameRange);\n heredocs.push(new heredoc_1.Heredoc(startRange, name, nameRange, null, null));\n }\n }\n return heredocs;\n }\n getName(nameRange) {\n const content = this.document.getText(nameRange);\n let escaping = false;\n let name = \"\";\n nameLoop: for (let i = 0; i < content.length; i++) {\n const ch = content.charAt(i);\n switch (ch) {\n case this.escapeChar:\n escaping = true;\n for (let j = i + 1; j < content.length; j++) {\n switch (content.charAt(j)) {\n case ' ':\n case '\\t':\n break;\n case '\\r':\n i = j + 1;\n continue nameLoop;\n case '\\n':\n i = j;\n continue nameLoop;\n default:\n name += content.charAt(j);\n i = j;\n continue nameLoop;\n }\n }\n break;\n case '#':\n if (escaping) {\n for (let j = i + 1; j < content.length; j++) {\n switch (content.charAt(j)) {\n case '\\n':\n i = j;\n continue nameLoop;\n }\n }\n }\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n if (escaping) {\n break;\n }\n default:\n name += ch;\n break;\n }\n }\n return name;\n }\n getNameRange(startRange) {\n const content = this.document.getText(startRange);\n let endFound = false;\n let searchHyphen = false;\n let start = -1;\n let end = -1;\n let escaping = false;\n let quote = null;\n contentLoop: for (let i = 0; i < content.length; i++) {\n const ch = content.charAt(i);\n switch (ch) {\n case '\"':\n case '\\'':\n if (quote === ch) {\n break contentLoop;\n }\n quote = ch;\n continue;\n case this.escapeChar:\n for (let j = i + 1; j < content.length; j++) {\n switch (content.charAt(j)) {\n case '\\n':\n escaping = true;\n j = i;\n continue contentLoop;\n }\n }\n break;\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n break;\n case '<':\n if (endFound) {\n searchHyphen = true;\n }\n else {\n endFound = true;\n }\n break;\n case '-':\n if (searchHyphen) {\n searchHyphen = false;\n break;\n }\n case '#':\n if (escaping) {\n for (let j = i + 1; j < content.length; j++) {\n switch (content.charAt(j)) {\n case '\\n':\n i = j;\n continue contentLoop;\n }\n }\n }\n default:\n if (start === -1) {\n start = i;\n }\n if (quote !== null) {\n end = i + 1;\n break;\n }\n break contentLoop;\n }\n }\n if (start === -1) {\n return vscode_languageserver_types_1.Range.create(startRange.end, startRange.end);\n }\n const nameStart = this.document.positionAt(this.document.offsetAt(startRange.start) + start);\n const nameEnd = quote !== null ? this.document.positionAt(this.document.offsetAt(startRange.start) + end) : startRange.end;\n return vscode_languageserver_types_1.Range.create(nameStart, nameEnd);\n }\n getHeredocs() {\n const args = this.getArguments();\n if (args.length === 0) {\n return [];\n }\n const heredocs = [];\n const range = this.getRange();\n if (range.start.line === range.end.line) {\n // instruction only on one line, if heredocs exist they would be incomplete\n return this.createSingleLineHeredocs(args);\n }\n const heredocDefinitions = [];\n let heredocsProcessed = false;\n let escaping = false;\n let contentStart = -1;\n let contentEnd = -1;\n let lineStart = -1;\n let currentHeredoc = 0;\n const startOffset = this.document.offsetAt(args[0].getRange().start);\n const content = this.getRangeContent(vscode_languageserver_types_1.Range.create(args[0].getRange().start, this.getRange().end));\n contentLoop: for (let i = 0; i < content.length; i++) {\n switch (content.charAt(i)) {\n case this.escapeChar:\n escaping = true;\n for (let j = i + 1; j < content.length; j++) {\n switch (content.charAt(j)) {\n case ' ':\n case '\\t':\n break;\n case '\\r':\n j++;\n case '\\n':\n i = j;\n continue contentLoop;\n default:\n i = j;\n continue contentLoop;\n }\n }\n break;\n case '\\r':\n break;\n case '\\n':\n if (escaping) {\n break;\n }\n if (heredocsProcessed) {\n if (contentStart === -1) {\n contentStart = i;\n }\n contentEnd = i;\n const arg = heredocDefinitions[currentHeredoc];\n const startRange = arg.getRange();\n const nameRange = this.getNameRange(startRange);\n const name = this.getName(nameRange);\n const delimiterRange = this.getDelimiterRange(arg, name, vscode_languageserver_types_1.Range.create(this.document.positionAt(startOffset + lineStart), this.document.positionAt(startOffset + i)));\n if (delimiterRange !== null) {\n const contentRange = vscode_languageserver_types_1.Range.create(this.document.positionAt(startOffset + contentStart), this.document.positionAt(startOffset + lineStart - 1));\n heredocs.push(new heredoc_1.Heredoc(startRange, name, nameRange, contentRange, delimiterRange));\n contentStart = -1;\n currentHeredoc++;\n }\n lineStart = -1;\n }\n else {\n // found a newline that hasn't been escaped,\n // must be in a heredoc\n const offsetLimit = startOffset + i;\n for (const arg of args) {\n // check if this argument is on the initial line of the instruction,\n // note that it may not all be on the same line due to escaped newlines,\n // because of that we need to use offset checks instead of line checks\n // as an argument being on a different line in the document does not\n // imply it is on a different line from the Dockerfile's point of view\n if (this.document.offsetAt(arg.getRange().start) < offsetLimit) {\n if (arg.getValue().startsWith(\"<<\")) {\n heredocDefinitions.push(arg);\n }\n }\n else {\n break;\n }\n }\n heredocsProcessed = true;\n lineStart = -1;\n continue contentLoop;\n }\n break;\n case ' ':\n case '\\t':\n if (escaping) {\n break;\n }\n case '#':\n if (escaping) {\n for (let j = i + 1; j < content.length; j++) {\n switch (content.charAt(j)) {\n case '\\n':\n i = j;\n continue contentLoop;\n }\n }\n }\n default:\n if (escaping) {\n escaping = false;\n }\n if (heredocsProcessed) {\n if (contentStart === -1) {\n contentStart = i;\n }\n if (lineStart === -1) {\n lineStart = i;\n }\n }\n break;\n }\n }\n if (heredocsProcessed) {\n const arg = heredocDefinitions[currentHeredoc];\n const startRange = arg.getRange();\n const nameRange = this.getNameRange(startRange);\n const name = this.getName(nameRange);\n let contentRange = null;\n // check if the last line of this instruction matches the name of the last heredoc\n const delimiterRange = this.getDelimiterRange(arg, name, vscode_languageserver_types_1.Range.create(this.document.positionAt(startOffset + lineStart), range.end));\n if (delimiterRange === null) {\n contentRange = vscode_languageserver_types_1.Range.create(this.document.positionAt(startOffset + contentStart), range.end);\n }\n else if (contentEnd !== -1) {\n contentRange = vscode_languageserver_types_1.Range.create(this.document.positionAt(startOffset + contentStart), this.document.positionAt(startOffset + contentEnd));\n }\n heredocs.push(new heredoc_1.Heredoc(startRange, name, nameRange, contentRange, delimiterRange));\n currentHeredoc++;\n for (let i = currentHeredoc; i < heredocDefinitions.length; i++) {\n const arg = heredocDefinitions[currentHeredoc];\n const startRange = arg.getRange();\n const nameRange = this.getNameRange(startRange);\n const name = this.getName(nameRange);\n heredocs.push(new heredoc_1.Heredoc(startRange, name, nameRange, null, null));\n currentHeredoc++;\n }\n }\n else {\n // instruction only on one line, if heredocs exist they would be incomplete\n return this.createSingleLineHeredocs(args);\n }\n return heredocs;\n }\n getDelimiterRange(startArg, name, candidateRange) {\n const text = this.document.getText(candidateRange);\n if (startArg.getValue().startsWith(\"<<-\")) {\n // remove tabs in the front\n let index = 0;\n while (text.charAt(index) === '\\t') {\n index++;\n }\n if (text.substring(index) === name) {\n return vscode_languageserver_types_1.Range.create(vscode_languageserver_types_1.Position.create(candidateRange.start.line, index), candidateRange.end);\n }\n return null;\n }\n return text === name ? candidateRange : null;\n }\n}\nexports.Instruction = Instruction;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Heredoc = void 0;\n/**\n * Heredoc represents a here-document that has been embedded in a\n * Dockerfile.\n *\n * This API is experimental and subject to change.\n */\nclass Heredoc {\n constructor(startRange, name, nameRange, contentRange, endRange) {\n this.startRange = startRange;\n this.name = name;\n this.nameRange = nameRange;\n this.contentRange = contentRange;\n this.endRange = endRange;\n }\n /**\n * Returns the name of the here-document.\n *\n * This API is experimental and subject to change.\n */\n getName() {\n return this.name;\n }\n /**\n * Returns the range of the start operator and the name. If the\n * here-document is initialized with < 0;\n }\n}\nexports.Flag = Flag;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FlagOption = void 0;\nclass FlagOption {\n constructor(range, name, nameRange, value, valueRange) {\n this.range = range;\n this.name = name;\n this.nameRange = nameRange;\n this.value = value;\n this.valueRange = valueRange;\n }\n toString() {\n if (this.valueRange !== null) {\n return this.name + \"=\" + this.value;\n }\n return this.name;\n }\n getRange() {\n return this.range;\n }\n getName() {\n return this.name;\n }\n getNameRange() {\n return this.nameRange;\n }\n getValue() {\n return this.value;\n }\n getValueRange() {\n return this.valueRange;\n }\n}\nexports.FlagOption = FlagOption;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arg = void 0;\nconst property_1 = require(\"../property\");\nconst propertyInstruction_1 = require(\"../propertyInstruction\");\nclass Arg extends propertyInstruction_1.PropertyInstruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n this.property = null;\n const args = this.getPropertyArguments();\n if (args.length === 1) {\n this.property = new property_1.Property(this.document, this.escapeChar, args[0]);\n }\n else {\n this.property = null;\n }\n }\n /**\n * Returns the variable defined by this ARG. This may be null if\n * this ARG instruction is malformed and has no variable\n * declaration.\n */\n getProperty() {\n return this.property;\n }\n}\nexports.Arg = Arg;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Property = void 0;\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst util_1 = require(\"./util\");\nclass Property {\n constructor(document, escapeChar, arg, arg2) {\n this.assignmentOperatorRange = null;\n this.assignmentOperator = null;\n this.valueRange = null;\n this.value = null;\n this.document = document;\n this.escapeChar = escapeChar;\n this.nameRange = Property.getNameRange(document, arg);\n let value = document.getText().substring(document.offsetAt(this.nameRange.start), document.offsetAt(this.nameRange.end));\n this.name = Property.getValue(value, escapeChar);\n if (arg2) {\n this.valueRange = arg2.getRange();\n value = document.getText().substring(document.offsetAt(this.valueRange.start), document.offsetAt(this.valueRange.end));\n this.value = Property.getValue(value, escapeChar);\n this.range = vscode_languageserver_types_1.Range.create(this.nameRange.start, this.valueRange.end);\n }\n else {\n let argRange = arg.getRange();\n if (this.nameRange.start.line === argRange.start.line\n && this.nameRange.start.character === argRange.start.character\n && this.nameRange.end.line === argRange.end.line\n && this.nameRange.end.character === argRange.end.character) {\n }\n else {\n this.valueRange = Property.getValueRange(document, arg);\n value = document.getText().substring(document.offsetAt(this.valueRange.start), document.offsetAt(this.valueRange.end));\n this.value = Property.getValue(value, escapeChar);\n this.assignmentOperatorRange = vscode_languageserver_types_1.Range.create(this.nameRange.end, this.valueRange.start);\n this.assignmentOperator = \"=\";\n }\n this.range = argRange;\n }\n }\n getRange() {\n return this.range;\n }\n getName() {\n return this.name;\n }\n getNameRange() {\n return this.nameRange;\n }\n getValue() {\n return this.value;\n }\n getValueRange() {\n return this.valueRange;\n }\n /**\n * Retrieves the operator used for delimiting between the name and\n * value of this property. This will either be the \"=\" character\n * or null if a character was not used or if this property has no\n * value defined.\n */\n getAssignmentOperator() {\n return this.assignmentOperator;\n }\n getAssignmentOperatorRange() {\n return this.assignmentOperatorRange;\n }\n /**\n * Returns the value of this property including any enclosing\n * single or double quotes and relevant escape characters.\n * Escaped newlines and its associated contiguous whitespace\n * characters however will not be returned as they are deemed to\n * be uninteresting to clients trying to return a Dockerfile.\n *\n * @return the unescaped value of this property or null if this\n * property has no associated value\n */\n getUnescapedValue() {\n if (this.valueRange === null) {\n return null;\n }\n let escaped = false;\n let rawValue = \"\";\n let value = this.document.getText().substring(this.document.offsetAt(this.valueRange.start), this.document.offsetAt(this.valueRange.end));\n rawLoop: for (let i = 0; i < value.length; i++) {\n let char = value.charAt(i);\n switch (char) {\n case this.escapeChar:\n for (let j = i + 1; j < value.length; j++) {\n switch (value.charAt(j)) {\n case '\\r':\n j++;\n case '\\n':\n escaped = true;\n i = j;\n continue rawLoop;\n case ' ':\n case '\\t':\n break;\n default:\n rawValue = rawValue + char;\n continue rawLoop;\n }\n }\n // this happens if there's only whitespace after the escape character\n rawValue = rawValue + char;\n break;\n case '\\r':\n case '\\n':\n break;\n case ' ':\n case '\\t':\n if (!escaped) {\n rawValue = rawValue + char;\n }\n break;\n case '#':\n if (escaped) {\n for (let j = i + 1; j < value.length; j++) {\n switch (value.charAt(j)) {\n case '\\r':\n j++;\n case '\\n':\n i = j;\n continue rawLoop;\n }\n }\n }\n else {\n rawValue = rawValue + char;\n }\n break;\n default:\n rawValue = rawValue + char;\n escaped = false;\n break;\n }\n }\n return rawValue;\n }\n static getNameRange(document, arg) {\n let value = arg.getValue();\n let index = value.indexOf('=');\n if (index !== -1) {\n let initial = value.charAt(0);\n let before = value.charAt(index - 1);\n // check if content before the equals sign are in quotes\n // \"var\"=value\n // 'var'=value\n // otherwise, just assume it's a standard definition\n // var=value\n if ((initial === '\"' && before === '\"') || (initial === '\\'' && before === '\\'') || (initial !== '\"' && initial !== '\\'')) {\n return vscode_languageserver_types_1.Range.create(arg.getRange().start, document.positionAt(document.offsetAt(arg.getRange().start) + index));\n }\n }\n // no '=' found, just defined the property's name\n return arg.getRange();\n }\n static getValueRange(document, arg) {\n return vscode_languageserver_types_1.Range.create(document.positionAt(document.offsetAt(arg.getRange().start) + arg.getValue().indexOf('=') + 1), document.positionAt(document.offsetAt(arg.getRange().end)));\n }\n /**\n * Returns the actual value of this key-value pair. The value will\n * have its escape characters removed if applicable. If the value\n * spans multiple lines and there are comments nested within the\n * lines, they too will be removed.\n *\n * @return the value that this key-value pair will actually be, may\n * be null if no value is defined, may be the empty string\n * if the value only consists of whitespace\n */\n static getValue(value, escapeChar) {\n let escaped = false;\n const skip = util_1.Util.findLeadingNonWhitespace(value, escapeChar);\n if (skip !== 0 && value.charAt(skip) === '#') {\n // need to skip over comments\n escaped = true;\n }\n value = value.substring(skip);\n let first = value.charAt(0);\n let last = value.charAt(value.length - 1);\n let literal = first === '\\'' || first === '\"';\n let inSingle = (first === '\\'' && last === '\\'');\n let inDouble = false;\n if (first === '\"') {\n for (let i = 1; i < value.length; i++) {\n if (value.charAt(i) === escapeChar) {\n i++;\n }\n else if (value.charAt(i) === '\"' && i === value.length - 1) {\n inDouble = true;\n }\n }\n }\n if (inSingle || inDouble) {\n value = value.substring(1, value.length - 1);\n }\n let commentCheck = -1;\n let escapedValue = \"\";\n let start = 0;\n parseValue: for (let i = 0; i < value.length; i++) {\n let char = value.charAt(i);\n switch (char) {\n case escapeChar:\n if (i + 1 === value.length) {\n escapedValue = escapedValue + escapeChar;\n break parseValue;\n }\n char = value.charAt(i + 1);\n if (char === ' ' || char === '\\t') {\n whitespaceCheck: for (let j = i + 2; j < value.length; j++) {\n let char2 = value.charAt(j);\n switch (char2) {\n case ' ':\n case '\\t':\n break;\n case '\\r':\n j++;\n case '\\n':\n escaped = true;\n i = j;\n continue parseValue;\n default:\n if (!inDouble && !inSingle && !literal) {\n if (char2 === escapeChar) {\n // add the escaped character\n escapedValue = escapedValue + char;\n // now start parsing from the next escape character\n i = i + 1;\n }\n else {\n // the expectation is that this j = i + 2 here\n escapedValue = escapedValue + char + char2;\n i = j;\n }\n continue parseValue;\n }\n break whitespaceCheck;\n }\n }\n }\n if (inDouble) {\n if (char === '\\r') {\n escaped = true;\n i = i + 2;\n }\n else if (char === '\\n') {\n escaped = true;\n i++;\n }\n else if (char !== '\"') {\n if (char === escapeChar) {\n i++;\n }\n escapedValue = escapedValue + escapeChar;\n }\n continue parseValue;\n }\n else if (inSingle || literal) {\n if (char === '\\r') {\n escaped = true;\n i = i + 2;\n }\n else if (char === '\\n') {\n escaped = true;\n i++;\n }\n else {\n escapedValue = escapedValue + escapeChar;\n }\n continue parseValue;\n }\n else if (char === escapeChar) {\n // double escape, append one and move on\n escapedValue = escapedValue + escapeChar;\n i++;\n }\n else if (char === '\\r') {\n escaped = true;\n // offset one more for \\r\\n\n i = i + 2;\n }\n else if (char === '\\n') {\n escaped = true;\n i++;\n start = i;\n }\n else {\n // any other escapes are simply ignored\n escapedValue = escapedValue + char;\n i++;\n }\n break;\n case ' ':\n case '\\t':\n if (escaped && commentCheck === -1) {\n commentCheck = i;\n }\n escapedValue = escapedValue + char;\n break;\n case '\\r':\n i++;\n case '\\n':\n if (escaped && commentCheck !== -1) {\n // rollback and remove the whitespace that was previously appended\n escapedValue = escapedValue.substring(0, escapedValue.length - (i - commentCheck - 1));\n commentCheck = -1;\n }\n break;\n case '#':\n // a newline was escaped and now there's a comment\n if (escaped) {\n if (commentCheck !== -1) {\n // rollback and remove the whitespace that was previously appended\n escapedValue = escapedValue.substring(0, escapedValue.length - (i - commentCheck));\n commentCheck = -1;\n }\n newlineCheck: for (let j = i + 1; j < value.length; j++) {\n switch (value.charAt(j)) {\n case '\\r':\n j++;\n case '\\n':\n i = j;\n break newlineCheck;\n }\n }\n continue parseValue;\n }\n default:\n if (escaped) {\n escaped = false;\n commentCheck = -1;\n }\n escapedValue = escapedValue + char;\n break;\n }\n }\n return escapedValue;\n }\n}\nexports.Property = Property;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PropertyInstruction = void 0;\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst instruction_1 = require(\"./instruction\");\nconst property_1 = require(\"./property\");\nconst argument_1 = require(\"./argument\");\nconst util_1 = require(\"./util\");\nclass PropertyInstruction extends instruction_1.Instruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n this.properties = undefined;\n }\n getProperties() {\n if (this.properties === undefined) {\n let args = this.getPropertyArguments();\n if (args.length === 0) {\n this.properties = [];\n }\n else if (args.length === 1) {\n this.properties = [new property_1.Property(this.document, this.escapeChar, args[0])];\n }\n else if (args.length === 2) {\n if (args[0].getValue().indexOf('=') === -1) {\n this.properties = [new property_1.Property(this.document, this.escapeChar, args[0], args[1])];\n }\n else {\n this.properties = [\n new property_1.Property(this.document, this.escapeChar, args[0]),\n new property_1.Property(this.document, this.escapeChar, args[1])\n ];\n }\n }\n else if (args[0].getValue().indexOf('=') === -1) {\n let text = this.document.getText();\n let start = args[1].getRange().start;\n let end = args[args.length - 1].getRange().end;\n text = text.substring(this.document.offsetAt(start), this.document.offsetAt(end));\n this.properties = [new property_1.Property(this.document, this.escapeChar, args[0], new argument_1.Argument(text, vscode_languageserver_types_1.Range.create(args[1].getRange().start, args[args.length - 1].getRange().end)))];\n }\n else {\n this.properties = [];\n for (let i = 0; i < args.length; i++) {\n this.properties.push(new property_1.Property(this.document, this.escapeChar, args[i]));\n }\n }\n }\n return this.properties;\n }\n /**\n * Goes from the back of the string and returns the first\n * non-whitespace character that is found. If an escape character\n * is found with newline characters, the escape character will\n * not be considered a non-whitespace character and its index in\n * the string will not be returned.\n *\n * @param content the string to search through\n * @return the index in the string for the first non-whitespace\n * character when searching from the end of the string\n */\n findTrailingNonWhitespace(content) {\n // loop back to find the first non-whitespace character\n let index = content.length;\n whitespaceCheck: for (let i = content.length - 1; i >= 0; i--) {\n switch (content.charAt(i)) {\n case ' ':\n case '\\t':\n continue;\n case '\\n':\n if (content.charAt(i - 1) === '\\r') {\n i = i - 1;\n }\n case '\\r':\n newlineCheck: for (let j = i - 1; j >= 0; j--) {\n switch (content.charAt(j)) {\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n case this.escapeChar:\n continue;\n default:\n index = j;\n break newlineCheck;\n }\n }\n break whitespaceCheck;\n default:\n index = i;\n break whitespaceCheck;\n }\n }\n return index;\n }\n getPropertyArguments() {\n const args = [];\n let range = this.getInstructionRange();\n let instructionNameEndOffset = this.document.offsetAt(range.end);\n let extra = instructionNameEndOffset - this.document.offsetAt(range.start);\n let content = this.getTextContent();\n let fullArgs = content.substring(extra);\n let start = util_1.Util.findLeadingNonWhitespace(fullArgs, this.escapeChar);\n if (start === -1) {\n // only whitespace found, no arguments\n return [];\n }\n const startPosition = this.document.positionAt(instructionNameEndOffset + start);\n // records whether the parser has just processed an escaped newline or not,\n // if our starting position is not on the same line as the instruction then\n // the start of the content is already on an escaped line\n let escaped = range.start.line !== startPosition.line;\n // flag to track if the last character was an escape character\n let endingEscape = false;\n // position before the first escape character was hit\n let mark = -1;\n let end = this.findTrailingNonWhitespace(fullArgs);\n content = fullArgs.substring(start, end + 1);\n let argStart = escaped ? -1 : 0;\n let spaced = false;\n argumentLoop: for (let i = 0; i < content.length; i++) {\n let char = content.charAt(i);\n switch (char) {\n case this.escapeChar:\n if (i + 1 === content.length) {\n endingEscape = true;\n break argumentLoop;\n }\n if (!escaped) {\n mark = i;\n }\n switch (content.charAt(i + 1)) {\n case ' ':\n case '\\t':\n if (!util_1.Util.isWhitespace(content.charAt(i + 2))) {\n // space was escaped, continue as normal\n i = i + 1;\n continue argumentLoop;\n }\n // whitespace encountered, need to figure out if it extends to EOL\n whitespaceCheck: for (let j = i + 2; j < content.length; j++) {\n switch (content.charAt(j)) {\n case '\\r':\n // offset one more for \\r\\n\n j++;\n case '\\n':\n // whitespace only, safe to skip\n escaped = true;\n i = j;\n continue argumentLoop;\n case ' ':\n case '\\t':\n // ignore whitespace\n break;\n default:\n // whitespace doesn't extend to EOL, create an argument\n args.push(new argument_1.Argument(content.substring(argStart, i), vscode_languageserver_types_1.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + i + 2))));\n argStart = j;\n break whitespaceCheck;\n }\n }\n // go back and start processing the encountered non-whitespace character\n i = argStart - 1;\n continue argumentLoop;\n case '\\r':\n // offset one more for \\r\\n\n i++;\n case '\\n':\n // immediately followed by a newline, skip the newline\n escaped = true;\n i = i + 1;\n continue argumentLoop;\n case this.escapeChar:\n // double escape found, skip it and move on\n if (argStart === -1) {\n argStart = i;\n }\n i = i + 1;\n continue argumentLoop;\n default:\n if (argStart === -1) {\n argStart = i;\n }\n // non-whitespace encountered, skip the escape and process the\n // character normally\n continue argumentLoop;\n }\n case '\\'':\n case '\"':\n if (spaced) {\n this.createSpacedArgument(argStart, args, content, mark, instructionNameEndOffset, start);\n // reset to start a new argument\n argStart = i;\n spaced = false;\n }\n if (argStart === -1) {\n argStart = i;\n }\n for (let j = i + 1; j < content.length; j++) {\n switch (content.charAt(j)) {\n case char:\n if (content.charAt(j + 1) !== ' ' && content.charAt(j + 1) !== '') {\n // there is more content after this quote,\n // continue so that it is all processed as\n // one single argument\n i = j;\n continue argumentLoop;\n }\n args.push(new argument_1.Argument(content.substring(argStart, j + 1), vscode_languageserver_types_1.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + j + 1))));\n i = j;\n argStart = -1;\n continue argumentLoop;\n case this.escapeChar:\n j++;\n break;\n }\n }\n break argumentLoop;\n case ' ':\n case '\\t':\n if (escaped) {\n // consider there to be a space only if an argument\n // is not spanning multiple lines\n if (argStart !== -1) {\n spaced = true;\n }\n }\n else if (argStart !== -1) {\n args.push(new argument_1.Argument(content.substring(argStart, i), vscode_languageserver_types_1.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + i))));\n argStart = -1;\n }\n break;\n case '\\r':\n // offset one more for \\r\\n\n i++;\n case '\\n':\n spaced = false;\n break;\n case '#':\n if (escaped) {\n // a newline was escaped and now there's a comment\n for (let j = i + 1; j < content.length; j++) {\n switch (content.charAt(j)) {\n case '\\r':\n j++;\n case '\\n':\n i = j;\n spaced = false;\n continue argumentLoop;\n }\n }\n // went to the end without finding a newline,\n // the comment was the last line in the instruction,\n // just stop parsing, create an argument if needed\n if (argStart !== -1) {\n let value = content.substring(argStart, mark);\n args.push(new argument_1.Argument(value, vscode_languageserver_types_1.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + mark))));\n argStart = -1;\n }\n break argumentLoop;\n }\n else if (argStart === -1) {\n argStart = i;\n }\n break;\n default:\n if (spaced) {\n this.createSpacedArgument(argStart, args, content, mark, instructionNameEndOffset, start);\n // reset to start a new argument\n argStart = i;\n spaced = false;\n }\n escaped = false;\n if (argStart === -1) {\n argStart = i;\n }\n // variable detected\n if (char === '$' && content.charAt(i + 1) === '{') {\n let singleQuotes = false;\n let doubleQuotes = false;\n let escaped = false;\n for (let j = i + 1; j < content.length; j++) {\n switch (content.charAt(j)) {\n case this.escapeChar:\n escaped = true;\n break;\n case '\\r':\n case '\\n':\n break;\n case '\\'':\n singleQuotes = !singleQuotes;\n escaped = false;\n break;\n case '\"':\n doubleQuotes = !doubleQuotes;\n escaped = false;\n break;\n case ' ':\n case '\\t':\n if (escaped || singleQuotes || doubleQuotes) {\n break;\n }\n i = j - 1;\n continue argumentLoop;\n case '}':\n i = j;\n continue argumentLoop;\n default:\n escaped = false;\n break;\n }\n }\n break argumentLoop;\n }\n break;\n }\n }\n if (argStart !== -1 && argStart !== content.length) {\n let end = endingEscape ? content.length - 1 : content.length;\n let value = content.substring(argStart, end);\n args.push(new argument_1.Argument(value, vscode_languageserver_types_1.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + end))));\n }\n return args;\n }\n createSpacedArgument(argStart, args, content, mark, instructionNameEndOffset, start) {\n if (argStart !== -1) {\n args.push(new argument_1.Argument(content.substring(argStart, mark), vscode_languageserver_types_1.Range.create(this.document.positionAt(instructionNameEndOffset + start + argStart), this.document.positionAt(instructionNameEndOffset + start + mark))));\n }\n }\n}\nexports.PropertyInstruction = PropertyInstruction;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Cmd = void 0;\nconst jsonInstruction_1 = require(\"../jsonInstruction\");\nclass Cmd extends jsonInstruction_1.JSONInstruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n}\nexports.Cmd = Cmd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Copy = void 0;\nconst jsonInstruction_1 = require(\"../jsonInstruction\");\nclass Copy extends jsonInstruction_1.JSONInstruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n stopSearchingForFlags(argument) {\n return argument.indexOf(\"--\") === -1;\n }\n getFromFlag() {\n let flags = super.getFlags();\n return flags.length === 1 && flags[0].getName() === \"from\" ? flags[0] : null;\n }\n /**\n * Returns there here-documents that are defined in this RUN\n * instruction.\n *\n * This API is experimental and subject to change.\n */\n getHeredocs() {\n return super.getHeredocs();\n }\n}\nexports.Copy = Copy;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Env = void 0;\nconst propertyInstruction_1 = require(\"../propertyInstruction\");\nclass Env extends propertyInstruction_1.PropertyInstruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n getProperties() {\n return super.getProperties();\n }\n}\nexports.Env = Env;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Entrypoint = void 0;\nconst jsonInstruction_1 = require(\"../jsonInstruction\");\nclass Entrypoint extends jsonInstruction_1.JSONInstruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n}\nexports.Entrypoint = Entrypoint;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.From = void 0;\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst modifiableInstruction_1 = require(\"../modifiableInstruction\");\nclass From extends modifiableInstruction_1.ModifiableInstruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n stopSearchingForFlags(argument) {\n return argument.indexOf(\"--\") === -1;\n }\n getImage() {\n return this.getRangeContent(this.getImageRange());\n }\n /**\n * Returns the name of the image that will be used as the base image.\n *\n * @return the base image's name, or null if unspecified\n */\n getImageName() {\n return this.getRangeContent(this.getImageNameRange());\n }\n /**\n * Returns the range that covers the name of the image used by\n * this instruction.\n *\n * @return the range of the name of this instruction's argument,\n * or null if no image has been specified\n */\n getImageNameRange() {\n let range = this.getImageRange();\n if (range) {\n let registryRange = this.getRegistryRange();\n if (registryRange) {\n range.start = this.document.positionAt(this.document.offsetAt(registryRange.end) + 1);\n }\n let tagRange = this.getImageTagRange();\n let digestRange = this.getImageDigestRange();\n if (tagRange === null) {\n if (digestRange !== null) {\n range.end = this.document.positionAt(this.document.offsetAt(digestRange.start) - 1);\n }\n }\n else {\n range.end = this.document.positionAt(this.document.offsetAt(tagRange.start) - 1);\n }\n return range;\n }\n return null;\n }\n /**\n * Returns the range that covers the image argument of this\n * instruction. This includes the tag or digest of the image if\n * it has been specified by the instruction.\n *\n * @return the range of the image argument, or null if no image\n * has been specified\n */\n getImageRange() {\n let args = this.getArguments();\n return args.length !== 0 ? args[0].getRange() : null;\n }\n getImageTag() {\n return this.getRangeContent(this.getImageTagRange());\n }\n /**\n * Returns the range in the document that the tag of the base\n * image encompasses.\n *\n * @return the base image's tag's range in the document, or null\n * if no tag has been specified\n */\n getImageTagRange() {\n const range = this.getImageRange();\n if (range) {\n const rangeStartOffset = this.document.offsetAt(range.start);\n const content = this.getRangeContent(range);\n const atIndex = this.indexOf(rangeStartOffset, content, '@');\n const slashIndex = content.indexOf('/');\n if (atIndex === -1) {\n const colonIndex = this.lastIndexOf(rangeStartOffset, content, ':');\n if (colonIndex > slashIndex) {\n return vscode_languageserver_types_1.Range.create(range.start.line, range.start.character + colonIndex + 1, range.end.line, range.end.character);\n }\n }\n const subcontent = content.substring(0, atIndex);\n const subcolonIndex = subcontent.indexOf(':');\n if (subcolonIndex === -1) {\n return null;\n }\n if (slashIndex === -1) {\n // slash not found suggests no registry and no namespace defined\n return vscode_languageserver_types_1.Range.create(this.document.positionAt(rangeStartOffset + subcolonIndex + 1), this.document.positionAt(rangeStartOffset + atIndex));\n }\n // both colon and slash found, check if it is a port\n if (subcolonIndex < slashIndex) {\n return null;\n }\n return vscode_languageserver_types_1.Range.create(this.document.positionAt(rangeStartOffset + subcolonIndex + 1), this.document.positionAt(rangeStartOffset + subcontent.length));\n }\n return null;\n }\n getImageDigest() {\n return this.getRangeContent(this.getImageDigestRange());\n }\n /**\n * Returns the range in the document that the digest of the base\n * image encompasses.\n *\n * @return the base image's digest's range in the document, or null\n * if no digest has been specified\n */\n getImageDigestRange() {\n let range = this.getImageRange();\n if (range) {\n let content = this.getRangeContent(range);\n let index = this.lastIndexOf(this.document.offsetAt(range.start), content, '@');\n if (index !== -1) {\n return vscode_languageserver_types_1.Range.create(range.start.line, range.start.character + index + 1, range.end.line, range.end.character);\n }\n }\n return null;\n }\n indexOf(documentOffset, content, searchString) {\n let index = content.indexOf(searchString);\n const variables = this.getVariables();\n for (let i = 0; i < variables.length; i++) {\n const position = documentOffset + index;\n const variableRange = variables[i].getRange();\n if (this.document.offsetAt(variableRange.start) < position && position < this.document.offsetAt(variableRange.end)) {\n const offset = this.document.offsetAt(variableRange.end) - documentOffset;\n const substring = content.substring(offset);\n const subIndex = substring.indexOf(searchString);\n if (subIndex === -1) {\n return -1;\n }\n index = subIndex + offset;\n i = -1;\n continue;\n }\n }\n return index;\n }\n lastIndexOf(documentOffset, content, searchString) {\n let index = content.lastIndexOf(searchString);\n const variables = this.getVariables();\n for (let i = 0; i < variables.length; i++) {\n const position = documentOffset + index;\n const variableRange = variables[i].getRange();\n if (this.document.offsetAt(variableRange.start) < position && position < this.document.offsetAt(variableRange.end)) {\n index = content.substring(0, index).lastIndexOf(searchString);\n if (index === -1) {\n return -1;\n }\n i = -1;\n continue;\n }\n }\n return index;\n }\n getRegistry() {\n return this.getRangeContent(this.getRegistryRange());\n }\n getRegistryRange() {\n const range = this.getImageRange();\n if (range) {\n const tagRange = this.getImageTagRange();\n const digestRange = this.getImageDigestRange();\n if (tagRange === null) {\n if (digestRange !== null) {\n range.end = this.document.positionAt(this.document.offsetAt(digestRange.start) - 1);\n }\n }\n else {\n range.end = this.document.positionAt(this.document.offsetAt(tagRange.start) - 1);\n }\n const content = this.getRangeContent(range);\n const rangeStart = this.document.offsetAt(range.start);\n const startingSlashIndex = this.indexOf(rangeStart, content, '/');\n if (startingSlashIndex === -1) {\n return null;\n }\n const portIndex = this.indexOf(rangeStart, content, ':');\n const dotIndex = this.indexOf(rangeStart, content, '.');\n // hostname detected\n if (portIndex !== -1 || dotIndex !== -1) {\n return vscode_languageserver_types_1.Range.create(range.start, this.document.positionAt(rangeStart + startingSlashIndex));\n }\n const registry = content.substring(0, startingSlashIndex);\n // localhost registry detected\n if (registry === 'localhost') {\n return vscode_languageserver_types_1.Range.create(range.start, this.document.positionAt(rangeStart + startingSlashIndex));\n }\n }\n return null;\n }\n getBuildStage() {\n let range = this.getBuildStageRange();\n return range === null ? null : this.getRangeContent(range);\n }\n getBuildStageRange() {\n let args = this.getArguments();\n if (args.length > 2 && args[1].getValue().toUpperCase() === \"AS\") {\n return args[2].getRange();\n }\n return null;\n }\n getPlatformFlag() {\n let flags = super.getFlags();\n return flags.length === 1 && flags[0].getName() === \"platform\" ? flags[0] : null;\n }\n}\nexports.From = From;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Healthcheck = void 0;\nconst modifiableInstruction_1 = require(\"../modifiableInstruction\");\nclass Healthcheck extends modifiableInstruction_1.ModifiableInstruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n stopSearchingForFlags(argument) {\n argument = argument.toUpperCase();\n return argument === \"CMD\" || argument === \"NONE\";\n }\n getSubcommand() {\n let args = this.getArguments();\n return args.length !== 0 ? args[0] : null;\n }\n}\nexports.Healthcheck = Healthcheck;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Label = void 0;\nconst propertyInstruction_1 = require(\"../propertyInstruction\");\nconst util_1 = require(\"../util\");\nclass Label extends propertyInstruction_1.PropertyInstruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n getVariables() {\n const variables = super.getVariables();\n const properties = this.getProperties();\n // iterate over all of this LABEL's properties\n for (const property of properties) {\n const value = property.getUnescapedValue();\n // check if the value is contained in single quotes,\n // single quotes would indicate a literal value\n if (value !== null && value.length > 2 && value.charAt(0) === '\\'' && value.charAt(value.length - 1) === '\\'') {\n const range = property.getValueRange();\n for (let i = 0; i < variables.length; i++) {\n // if a variable is in a single quote, remove it from the list\n if (util_1.Util.isInsideRange(variables[i].getRange().start, range)) {\n variables.splice(i, 1);\n i--;\n }\n }\n }\n }\n return variables;\n }\n getProperties() {\n return super.getProperties();\n }\n}\nexports.Label = Label;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Onbuild = void 0;\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst parser_1 = require(\"../parser\");\nconst instruction_1 = require(\"../instruction\");\nclass Onbuild extends instruction_1.Instruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n getTrigger() {\n let trigger = this.getTriggerWord();\n return trigger === null ? null : trigger.toUpperCase();\n }\n getTriggerWord() {\n return this.getRangeContent(this.getTriggerRange());\n }\n getTriggerRange() {\n let args = this.getArguments();\n return args.length > 0 ? args[0].getRange() : null;\n }\n getTriggerInstruction() {\n let triggerRange = this.getTriggerRange();\n if (triggerRange === null) {\n return null;\n }\n let args = this.getArguments();\n return parser_1.Parser.createInstruction(this.document, this.dockerfile, this.escapeChar, vscode_languageserver_types_1.Range.create(args[0].getRange().start, this.getRange().end), this.getTriggerWord(), triggerRange);\n }\n}\nexports.Onbuild = Onbuild;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Run = void 0;\nconst jsonInstruction_1 = require(\"../jsonInstruction\");\nclass Run extends jsonInstruction_1.JSONInstruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n stopSearchingForFlags(argument) {\n return argument.indexOf(\"--\") === -1;\n }\n /**\n * Returns there here-documents that are defined in this RUN\n * instruction.\n *\n * This API is experimental and subject to change.\n */\n getHeredocs() {\n return super.getHeredocs();\n }\n}\nexports.Run = Run;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Shell = void 0;\nconst jsonInstruction_1 = require(\"../jsonInstruction\");\nclass Shell extends jsonInstruction_1.JSONInstruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n}\nexports.Shell = Shell;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Stopsignal = void 0;\nconst instruction_1 = require(\"../instruction\");\nclass Stopsignal extends instruction_1.Instruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n}\nexports.Stopsignal = Stopsignal;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Workdir = void 0;\nconst instruction_1 = require(\"../instruction\");\nclass Workdir extends instruction_1.Instruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n /**\n * Returns the path that has been defined. Note that this path may\n * be absolute or relative depending on what was written in the\n * instruction.\n *\n * @return the working directory's path, or null if this\n * instruction has no arguments\n */\n getPath() {\n return this.getArgumentsContent();\n }\n /**\n * Returns the absolute path that this instruction resolves to. The\n * function will inspect prior WORKDIR instructions in the current\n * image or another build stage in the Dockerfile to try to\n * determine this.\n *\n * @return the absolute path of the working directory, or null if\n * this instruction has no arguments, or undefined if it\n * cannot be determined because only relative paths could be\n * found\n */\n getAbsolutePath() {\n const path = this.getPath();\n if (path === null || path.startsWith(\"/\")) {\n return path;\n }\n const startLine = this.getRange().start.line;\n const hierarchy = this.dockerfile.getStageHierarchy(startLine);\n for (let i = hierarchy.length - 1; i >= 0; i--) {\n const workdirs = hierarchy[i].getWORKDIRs();\n for (let j = workdirs.length - 1; j >= 0; j--) {\n if (workdirs[j].getRange().start.line < startLine) {\n const parent = workdirs[j].getAbsolutePath();\n if (parent === undefined || parent === null) {\n return undefined;\n }\n return parent.endsWith(\"/\") ? parent + path : parent + \"/\" + path;\n }\n }\n }\n return undefined;\n }\n}\nexports.Workdir = Workdir;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.User = void 0;\nconst instruction_1 = require(\"../instruction\");\nclass User extends instruction_1.Instruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n}\nexports.User = User;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Volume = void 0;\nconst jsonInstruction_1 = require(\"../jsonInstruction\");\nclass Volume extends jsonInstruction_1.JSONInstruction {\n constructor(document, range, dockerfile, escapeChar, instruction, instructionRange) {\n super(document, range, dockerfile, escapeChar, instruction, instructionRange);\n }\n}\nexports.Volume = Volume;\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Remy Suen. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Dockerfile = void 0;\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst ast = require(\"./main\");\nconst imageTemplate_1 = require(\"./imageTemplate\");\nconst from_1 = require(\"./instructions/from\");\nconst util_1 = require(\"./util\");\nconst main_1 = require(\"./main\");\nclass Dockerfile extends imageTemplate_1.ImageTemplate {\n constructor(document) {\n super();\n this.initialInstructions = new imageTemplate_1.ImageTemplate();\n this.buildStages = [];\n this.directives = [];\n /**\n * Whether a FROM instruction has been added to this Dockerfile or not.\n */\n this.foundFrom = false;\n this.document = document;\n }\n getEscapeCharacter() {\n for (const directive of this.directives) {\n if (directive.getDirective() === ast.Directive.escape) {\n const value = directive.getValue();\n if (value === '\\\\' || value === '`') {\n return value;\n }\n }\n }\n return '\\\\';\n }\n getInitialARGs() {\n return this.initialInstructions.getARGs();\n }\n getContainingImage(position) {\n let range = vscode_languageserver_types_1.Range.create(vscode_languageserver_types_1.Position.create(0, 0), this.document.positionAt(this.document.getText().length));\n if (!util_1.Util.isInsideRange(position, range)) {\n // not inside the document, invalid position\n return null;\n }\n if (this.initialInstructions.getComments().length > 0 || this.initialInstructions.getInstructions().length > 0) {\n if (util_1.Util.isInsideRange(position, this.initialInstructions.getRange())) {\n return this.initialInstructions;\n }\n }\n for (const buildStage of this.buildStages) {\n if (util_1.Util.isInsideRange(position, buildStage.getRange())) {\n return buildStage;\n }\n }\n return this;\n }\n addInstruction(instruction) {\n if (instruction.getKeyword() === main_1.Keyword.FROM) {\n this.currentBuildStage = new imageTemplate_1.ImageTemplate();\n this.buildStages.push(this.currentBuildStage);\n this.foundFrom = true;\n }\n else if (!this.foundFrom) {\n this.initialInstructions.addInstruction(instruction);\n }\n if (this.foundFrom) {\n this.currentBuildStage.addInstruction(instruction);\n }\n super.addInstruction(instruction);\n }\n setDirectives(directives) {\n this.directives = directives;\n }\n getDirective() {\n return this.directives.length === 0 ? null : this.directives[0];\n }\n getDirectives() {\n return this.directives;\n }\n resolveVariable(variable, line) {\n for (let from of this.getFROMs()) {\n let range = from.getRange();\n if (range.start.line <= line && line <= range.end.line) {\n // resolve the FROM variable against the initial ARGs\n let initialARGs = new imageTemplate_1.ImageTemplate();\n for (let instruction of this.initialInstructions.getARGs()) {\n initialARGs.addInstruction(instruction);\n }\n return initialARGs.resolveVariable(variable, line);\n }\n }\n let image = this.getContainingImage(vscode_languageserver_types_1.Position.create(line, 0));\n if (image === null) {\n return undefined;\n }\n let resolvedVariable = image.resolveVariable(variable, line);\n if (resolvedVariable === null) {\n // refers to an uninitialized ARG variable,\n // try resolving it against the initial ARGs then\n let initialARGs = new imageTemplate_1.ImageTemplate();\n for (let instruction of this.initialInstructions.getARGs()) {\n initialARGs.addInstruction(instruction);\n }\n return initialARGs.resolveVariable(variable, line);\n }\n return resolvedVariable;\n }\n getAvailableVariables(currentLine) {\n if (this.getInstructionAt(currentLine) instanceof from_1.From) {\n let variables = [];\n for (let arg of this.getInitialARGs()) {\n let property = arg.getProperty();\n if (property) {\n variables.push(property.getName());\n }\n }\n return variables;\n }\n let image = this.getContainingImage(vscode_languageserver_types_1.Position.create(currentLine, 0));\n return image ? image.getAvailableVariables(currentLine) : [];\n }\n getParentStage(image) {\n const templateFrom = image.getFROM();\n const imageName = templateFrom === null ? null : templateFrom.getImageName();\n if (imageName === null) {\n return null;\n }\n for (const from of this.getFROMs()) {\n if (from.getBuildStage() === imageName) {\n const range = from.getRange();\n // on the same line then it's an image that shares the name as the build stage\n if (range.start.line === templateFrom.getRange().start.line) {\n return null;\n }\n return this.getContainingImage(range.start);\n }\n }\n return null;\n }\n getStageHierarchy(line) {\n const image = this.getContainingImage(vscode_languageserver_types_1.Position.create(line, 0));\n if (image === null) {\n return [];\n }\n const stages = [image];\n let stage = this.getParentStage(image);\n while (stage !== null) {\n stages.splice(0, 0, stage);\n stage = this.getParentStage(stage);\n }\n return stages;\n }\n getAvailableWorkingDirectories(line) {\n const availableDirectories = new Set();\n for (const image of this.getStageHierarchy(line)) {\n for (const workdir of image.getWORKDIRs()) {\n if (workdir.getRange().end.line < line) {\n let directory = workdir.getAbsolutePath();\n if (directory !== undefined && directory !== null) {\n if (!directory.endsWith(\"/\")) {\n directory += \"/\";\n }\n availableDirectories.add(directory);\n }\n }\n }\n }\n return Array.from(availableDirectories);\n }\n /**\n * Internally reorganize the comments in the Dockerfile and allocate\n * them to the relevant build stages that they belong to.\n */\n organizeComments() {\n const comments = this.getComments();\n for (let i = 0; i < comments.length; i++) {\n if (util_1.Util.isInsideRange(comments[i].getRange().end, this.initialInstructions.getRange())) {\n this.initialInstructions.addComment(comments[i]);\n }\n else {\n for (const buildStage of this.buildStages) {\n if (util_1.Util.isInsideRange(comments[i].getRange().start, buildStage.getRange())) {\n buildStage.addComment(comments[i]);\n }\n }\n }\n }\n }\n getRange() {\n const comments = this.getComments();\n const instructions = this.getInstructions();\n let range = null;\n if (comments.length === 0) {\n if (instructions.length > 0) {\n range = vscode_languageserver_types_1.Range.create(instructions[0].getRange().start, instructions[instructions.length - 1].getRange().end);\n }\n }\n else if (instructions.length === 0) {\n range = vscode_languageserver_types_1.Range.create(comments[0].getRange().start, comments[comments.length - 1].getRange().end);\n }\n else {\n const commentStart = comments[0].getRange().start;\n const commentEnd = comments[comments.length - 1].getRange().end;\n const instructionStart = instructions[0].getRange().start;\n const instructionEnd = instructions[instructions.length - 1].getRange().end;\n if (commentStart.line < instructionStart.line) {\n if (commentEnd.line < instructionEnd.line) {\n range = vscode_languageserver_types_1.Range.create(commentStart, instructionEnd);\n }\n range = vscode_languageserver_types_1.Range.create(commentStart, commentEnd);\n }\n else if (commentEnd.line < instructionEnd.line) {\n range = vscode_languageserver_types_1.Range.create(instructionStart, instructionEnd);\n }\n else {\n range = vscode_languageserver_types_1.Range.create(instructionStart, commentEnd);\n }\n }\n if (range === null) {\n if (this.directives.length === 0) {\n return null;\n }\n return this.directives[0].getRange();\n }\n else if (this.directives.length === 0) {\n return range;\n }\n return vscode_languageserver_types_1.Range.create(this.directives[0].getRange().start, range.end);\n }\n}\nexports.Dockerfile = Dockerfile;\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Remy Suen. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImageTemplate = void 0;\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst arg_1 = require(\"./instructions/arg\");\nconst cmd_1 = require(\"./instructions/cmd\");\nconst copy_1 = require(\"./instructions/copy\");\nconst env_1 = require(\"./instructions/env\");\nconst entrypoint_1 = require(\"./instructions/entrypoint\");\nconst from_1 = require(\"./instructions/from\");\nconst healthcheck_1 = require(\"./instructions/healthcheck\");\nconst onbuild_1 = require(\"./instructions/onbuild\");\nconst util_1 = require(\"./util\");\nconst workdir_1 = require(\"./instructions/workdir\");\nclass ImageTemplate {\n constructor() {\n this.comments = [];\n this.instructions = [];\n }\n addComment(comment) {\n this.comments.push(comment);\n }\n getComments() {\n return this.comments;\n }\n addInstruction(instruction) {\n this.instructions.push(instruction);\n }\n getInstructions() {\n return this.instructions;\n }\n getInstructionAt(line) {\n for (let instruction of this.instructions) {\n if (util_1.Util.isInsideRange(vscode_languageserver_types_1.Position.create(line, 0), instruction.getRange())) {\n return instruction;\n }\n }\n return null;\n }\n /**\n * Gets all the ARG instructions that are defined in this image.\n */\n getARGs() {\n let args = [];\n for (let instruction of this.instructions) {\n if (instruction instanceof arg_1.Arg) {\n args.push(instruction);\n }\n }\n return args;\n }\n /**\n * Gets all the CMD instructions that are defined in this image.\n */\n getCMDs() {\n let cmds = [];\n for (let instruction of this.instructions) {\n if (instruction instanceof cmd_1.Cmd) {\n cmds.push(instruction);\n }\n }\n return cmds;\n }\n /**\n * Gets all the COPY instructions that are defined in this image.\n */\n getCOPYs() {\n let copies = [];\n for (let instruction of this.instructions) {\n if (instruction instanceof copy_1.Copy) {\n copies.push(instruction);\n }\n }\n return copies;\n }\n /**\n * Gets all the ENTRYPOINT instructions that are defined in this image.\n */\n getENTRYPOINTs() {\n let froms = [];\n for (let instruction of this.instructions) {\n if (instruction instanceof entrypoint_1.Entrypoint) {\n froms.push(instruction);\n }\n }\n return froms;\n }\n /**\n * Gets all the ENV instructions that are defined in this image.\n */\n getENVs() {\n let args = [];\n for (let instruction of this.instructions) {\n if (instruction instanceof env_1.Env) {\n args.push(instruction);\n }\n }\n return args;\n }\n getFROM() {\n for (const instruction of this.instructions) {\n if (instruction instanceof from_1.From) {\n return instruction;\n }\n }\n return null;\n }\n /**\n * Gets all the FROM instructions that are defined in this image.\n */\n getFROMs() {\n let froms = [];\n for (let instruction of this.instructions) {\n if (instruction instanceof from_1.From) {\n froms.push(instruction);\n }\n }\n return froms;\n }\n /**\n * Gets all the HEALTHCHECK instructions that are defined in this image.\n */\n getHEALTHCHECKs() {\n let froms = [];\n for (let instruction of this.instructions) {\n if (instruction instanceof healthcheck_1.Healthcheck) {\n froms.push(instruction);\n }\n }\n return froms;\n }\n getWORKDIRs() {\n const workdirs = [];\n for (const instruction of this.instructions) {\n if (instruction instanceof workdir_1.Workdir) {\n workdirs.push(instruction);\n }\n }\n return workdirs;\n }\n getOnbuildTriggers() {\n let triggers = [];\n for (let instruction of this.instructions) {\n if (instruction instanceof onbuild_1.Onbuild) {\n let trigger = instruction.getTriggerInstruction();\n if (trigger) {\n triggers.push(trigger);\n }\n }\n }\n return triggers;\n }\n getAvailableVariables(currentLine) {\n const variables = [];\n for (const arg of this.getARGs()) {\n if (arg.isBefore(currentLine)) {\n const property = arg.getProperty();\n if (property) {\n const variable = property.getName();\n if (variables.indexOf(variable) === -1) {\n variables.push(variable);\n }\n }\n }\n }\n for (const env of this.getENVs()) {\n if (env.isBefore(currentLine)) {\n for (const property of env.getProperties()) {\n const variable = property.getName();\n if (variables.indexOf(variable) === -1) {\n variables.push(variable);\n }\n }\n }\n }\n return variables;\n }\n /**\n * Resolves a variable with the given name at the specified line\n * to its value. If null is returned, then the variable has been\n * defined but no value was given. If undefined is returned, then\n * a variable with the given name has not been defined yet as of\n * the given line.\n *\n * @param variable the name of the variable to resolve\n * @param line the line number that the variable is on, zero-based\n * @return the value of the variable as defined by an ARG or ENV\n * instruction, or null if no value has been specified, or\n * undefined if a variable with the given name has not\n * been defined\n */\n resolveVariable(variable, line) {\n let envs = this.getENVs();\n for (let i = envs.length - 1; i >= 0; i--) {\n if (envs[i].isBefore(line)) {\n for (let property of envs[i].getProperties()) {\n if (property.getName() === variable) {\n return property.getValue();\n }\n }\n }\n }\n let args = this.getARGs();\n for (let i = args.length - 1; i >= 0; i--) {\n if (args[i].isBefore(line)) {\n let property = args[i].getProperty();\n if (property && property.getName() === variable) {\n return property.getValue();\n }\n }\n }\n return undefined;\n }\n getRange() {\n const instructions = this.getInstructions();\n if (instructions.length === 0) {\n // all templates should have instructions, this only happens for\n // the initial set of instruction\n return vscode_languageserver_types_1.Range.create(0, 0, 0, 0);\n }\n const instructionStart = instructions[0].getRange().start;\n const instructionEnd = instructions[instructions.length - 1].getRange().end;\n return vscode_languageserver_types_1.Range.create(instructionStart, instructionEnd);\n }\n contains(position) {\n const range = this.getRange();\n if (range === null) {\n return false;\n }\n return util_1.Util.isInsideRange(position, range);\n }\n}\nexports.ImageTemplate = ImageTemplate;\n","import spawnPlease from 'spawn-please'\nimport cp, { type ChildProcess } from 'child_process';\n\nexport async function run(command: string, args: string[]) {\n try {\n return await spawnPlease(command, args);\n } catch (error) {\n console.error(`Error running command: ${command} ${args.join(' ')}`);\n throw error;\n }\n}\n\nexport async function runPiped([command1, args1]: [string, string[]], [command2, args2]: [string, string[]]) {\n const cp1 = cp.spawn(command1, args1, { stdio: ['inherit', 'pipe', 'inherit'] });\n const cp2 = cp.spawn(command2, args2, { stdio: ['pipe', 'inherit', 'inherit'] });\n\n cp1.stdout.pipe(cp2.stdin);\n\n await Promise.all([assertSuccess(cp1), assertSuccess(cp2)]);\n}\n\nfunction assertSuccess(cp: ChildProcess) {\n return new Promise((resolve, reject) => {\n cp.on('error', (error) => {\n reject(error);\n });\n cp.on('close', (code) => {\n if (code !== 0) {\n reject(new Error(`process exited with code ${code}`));\n }\n resolve();\n });\n });\n}\n","const spawn = require('cross-spawn')\n\n/** Spawns a child process, as long as you ask nicely.\n * \n * @param {string} command - The shell command to execute.\n * @param {string[]} [args] - An array of arguments that are given after the command.\n * @param {{ rejectOnError?: boolean, stdin?: string, stderr?: (data: string) => void, stdout?: (data: string) => void }} [options] - Options.\n * @param {any} [spawnOptions] - Options that are passed directly to child_process.spawn. Also supports stdin: string.\n * @returns {Promise<{ stdout: string, stderr: string }>}\n */\nconst spawnPlease = (command, args, options={}, spawnOptions={}) => {\n // defaults\n if (options.rejectOnError === undefined) {\n options.rejectOnError = true\n }\n\n let stdout = ''\n let stderr = ''\n const child = spawn(command, args, spawnOptions)\n\n return new Promise((resolve, reject) => {\n if (options.stdin !== undefined && options.stdin != null) {\n child.stdin.write(options.stdin)\n }\n child.stdin.end()\n\n child.stdout.on('data', data => {\n stdout += data\n if (options.stdout) options.stdout(data)\n })\n\n child.stderr.on('data', data => {\n stderr += data\n if (options.stderr) options.stderr(data)\n })\n\n if (options.rejectOnError) {\n child.addListener('error', reject)\n }\n\n child.on('close', code => {\n if (code !== 0 && options.rejectOnError) {\n reject(stderr)\n } else {\n resolve({ stdout, stderr })\n }\n })\n })\n}\n\nmodule.exports = spawnPlease\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n // It's slightly altered to disable JS backtracking to avoid hanging on specially crafted input\n // Please see https://github.com/moxystudio/node-cross-spawn/pull/160 for more information\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(?=(\\\\+?)?)\\1\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(?=(\\\\+?)?)\\1$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed);\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","import fs from 'fs/promises';\nimport path from 'path';\nimport {CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath, getBuilder} from './opts.js';\nimport { run, runPiped } from './run.js';\n\nasync function extractCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string, containerImage: string, builder: string) {\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n\n await fs.mkdir(scratchDir, { recursive: true });\n await fs.writeFile(path.join(scratchDir, 'buildstamp'), date);\n\n // Prepare Dancefile to Access Caches\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n const dancefileContent = `\nFROM ${containerImage}\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n mkdir -p /var/dance-cache/ \\\n && cp -p -R ${targetPath}/. /var/dance-cache/ || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.extract'), dancefileContent);\n console.log(dancefileContent);\n\n // Extract Data into Docker Image\n await run('docker', ['buildx', 'build', '--builder', builder, '-f', path.join(scratchDir, 'Dancefile.extract'), '--tag', 'dance:extract', '--load', scratchDir]);\n\n // Create Extraction Image\n try {\n await run('docker', ['rm', '-f', 'cache-container']);\n } catch (error) {\n // Ignore error if container does not exist\n }\n await run('docker', ['create', '-ti', '--name', 'cache-container', 'dance:extract']);\n\n // Unpack Docker Image into Scratch\n await runPiped(\n ['docker', ['cp', '-L', 'cache-container:/var/dance-cache', '-']],\n ['tar', ['-H', 'posix', '-x', '-C', scratchDir]]\n );\n\n // Move Cache into Its Place\n await run('sudo', ['rm', '-rf', cacheSource]);\n await fs.rename(path.join(scratchDir, 'dance-cache'), cacheSource);\n}\n\nexport async function extractCaches(opts: Opts) {\n if (opts[\"skip-extraction\"]) {\n console.log(\"skip-extraction is set. Skipping extraction step...\");\n return;\n }\n\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n const containerImage = opts['utility-image'];\n const builder = getBuilder(opts);\n\n // Extract Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await extractCache(cacheSource, cacheOptions, scratchDir, containerImage, builder);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file diff --git a/package.json b/package.json index cc0441d..643012a 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,8 @@ }, "dependencies": { "@actions/core": "~1.5.0", + "dockerfile-ast": "^0.7.0", + "fs": "0.0.1-security", "mri": "^1.2.0", "spawn-please": "^3.0.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 160bad0..03cca30 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,1982 +1,1024 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@actions/core': - specifier: ~1.5.0 - version: 1.5.0 - mri: - specifier: ^1.2.0 - version: 1.2.0 - spawn-please: - specifier: ^3.0.0 - version: 3.0.0 - -devDependencies: - '@types/node': - specifier: ^20.11.30 - version: 20.11.30 - parcel: - specifier: ^2.12.0 - version: 2.12.0(typescript@5.4.3) - typescript: - specifier: ^5.4.3 - version: 5.4.3 - vitest: - specifier: ^1.4.0 - version: 1.4.0(@types/node@20.11.30) +importers: + + .: + dependencies: + '@actions/core': + specifier: ~1.5.0 + version: 1.5.0 + dockerfile-ast: + specifier: ^0.7.0 + version: 0.7.0 + fs: + specifier: 0.0.1-security + version: 0.0.1-security + mri: + specifier: ^1.2.0 + version: 1.2.0 + spawn-please: + specifier: ^3.0.0 + version: 3.0.0 + devDependencies: + '@types/node': + specifier: ^20.11.30 + version: 20.17.30 + parcel: + specifier: ^2.12.0 + version: 2.14.4(@swc/helpers@0.5.17)(postcss@8.5.3)(typescript@5.8.3) + typescript: + specifier: ^5.4.3 + version: 5.8.3 + vitest: + specifier: ^1.4.0 + version: 1.6.1(@types/node@20.17.30)(lightningcss@1.29.3) packages: - /@actions/core@1.5.0: + '@actions/core@1.5.0': resolution: {integrity: sha512-eDOLH1Nq9zh+PJlYLqEMkS/jLQxhksPNmUGNBHfa4G+tQmnIhzpctxmchETtVGyBOvXgOVVpYuE40+eS4cUnwQ==} - dev: false - - /@babel/code-frame@7.24.2: - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.24.2 - picocolors: 1.0.0 - dev: true - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - dev: true - /@babel/highlight@7.24.2: - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 - dev: true - /@esbuild/aix-ppc64@0.20.2: - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.20.2: - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.20.2: - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.20.2: - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.20.2: - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.20.2: - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.20.2: - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.20.2: - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.20.2: - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.20.2: - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.20.2: - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.20.2: - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.20.2: - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.20.2: - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.20.2: - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.20.2: - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.20.2: - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.20.2: - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.20.2: - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.20.2: - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.20.2: - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.20.2: - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.20.2: - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@jest/schemas@29.6.3: + '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: true - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - /@lezer/common@1.2.1: - resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==} - dev: true + '@lezer/common@1.2.3': + resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} - /@lezer/lr@1.4.0: - resolution: {integrity: sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==} - dependencies: - '@lezer/common': 1.2.1 - dev: true + '@lezer/lr@1.4.2': + resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} - /@lmdb/lmdb-darwin-arm64@2.8.5: + '@lmdb/lmdb-darwin-arm64@2.8.5': resolution: {integrity: sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@lmdb/lmdb-darwin-x64@2.8.5: + '@lmdb/lmdb-darwin-x64@2.8.5': resolution: {integrity: sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@lmdb/lmdb-linux-arm64@2.8.5: + '@lmdb/lmdb-linux-arm64@2.8.5': resolution: {integrity: sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@lmdb/lmdb-linux-arm@2.8.5: + '@lmdb/lmdb-linux-arm@2.8.5': resolution: {integrity: sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@lmdb/lmdb-linux-x64@2.8.5: + '@lmdb/lmdb-linux-x64@2.8.5': resolution: {integrity: sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@lmdb/lmdb-win32-x64@2.8.5: + '@lmdb/lmdb-win32-x64@2.8.5': resolution: {integrity: sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@mischnic/json-sourcemap@0.1.1: + '@mischnic/json-sourcemap@0.1.1': resolution: {integrity: sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==} engines: {node: '>=12.0.0'} - dependencies: - '@lezer/common': 1.2.1 - '@lezer/lr': 1.4.0 - json5: 2.2.3 - dev: true - /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2: - resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==} + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2: - resolution: {integrity: sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==} + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2: - resolution: {integrity: sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==} + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2: - resolution: {integrity: sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==} + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2: - resolution: {integrity: sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==} + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2: - resolution: {integrity: sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==} + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@parcel/bundler-default@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/graph': 3.2.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/bundler-default@2.14.4': + resolution: {integrity: sha512-JVqi5Sb7wv2KCTJFAAjHbnl6KC61jKNVYw/GtZm5s/Wxqvxx2tcp93rmRoBFo9X3gSgkg8jp4HkNAUHTxnsPnQ==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/cache@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==} - engines: {node: '>= 12.0.0'} + '@parcel/cache@2.14.4': + resolution: {integrity: sha512-CTTMySgNSgcSwbNWL4gODU1h9hMjBRyiC8/gcKDFqzw0wC/T+ZwX7wc5zNc/S9aJRTmmgvndcYKoVlds7YV2sg==} + engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.12.0 - dependencies: - '@parcel/core': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0) - '@parcel/logger': 2.12.0 - '@parcel/utils': 2.12.0 - lmdb: 2.8.5 - transitivePeerDependencies: - - '@swc/helpers' - dev: true + '@parcel/core': ^2.14.4 - /@parcel/codeframe@2.12.0: - resolution: {integrity: sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg==} - engines: {node: '>= 12.0.0'} - dependencies: - chalk: 4.1.2 - dev: true + '@parcel/codeframe@2.14.4': + resolution: {integrity: sha512-fRKkmFGnQIa/X+Kr8csTWjOwRRh2JfJfTpNS8JhbjBSWvOoKsDG9T2U5Ky8akIG7c9WDGwB3ngONauI1vtaInA==} + engines: {node: '>= 16.0.0'} - /@parcel/compressor-raw@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/compressor-raw@2.14.4': + resolution: {integrity: sha512-wYRdokznP1iI3n6M6leQ0nI65tCIWhZaD0vW3G3qodDFi+qsdpvZymCpNUkh6AYkFFr3Lur+r/+xkWDoqNoMWA==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/config-default@2.12.0(@parcel/core@2.12.0)(typescript@5.4.3): - resolution: {integrity: sha512-dPNe2n9eEsKRc1soWIY0yToMUPirPIa2QhxcCB3Z5RjpDGIXm0pds+BaiqY6uGLEEzsjhRO0ujd4v2Rmm0vuFg==} + '@parcel/config-default@2.14.4': + resolution: {integrity: sha512-bHtr8yT2IZDv5w44/VKoNz07goidO99c6hsp9s0hjSVC1G6krdE+nriryPVfUFbw044LeQThSvA8EwTas72QZg==} peerDependencies: - '@parcel/core': ^2.12.0 - dependencies: - '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0) - '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0) - '@parcel/core': 2.12.0 - '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0) - '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0) - '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0)(typescript@5.4.3) - '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0) - '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0) - '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0) - '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0) - '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0) - '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0) - '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0) - '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0) - '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0) - '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0) - '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0) - '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0) - '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0) - '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0) - '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0) - '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0) - '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0) - '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0) - '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0) - '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0) - '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0) - '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0) - '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0) - '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0) - '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0) - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - dev: true + '@parcel/core': ^2.14.4 - /@parcel/core@2.12.0: - resolution: {integrity: sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==} - engines: {node: '>= 12.0.0'} - dependencies: - '@mischnic/json-sourcemap': 0.1.1 - '@parcel/cache': 2.12.0(@parcel/core@2.12.0) - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0) - '@parcel/graph': 3.2.0 - '@parcel/logger': 2.12.0 - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/profiler': 2.12.0 - '@parcel/rust': 2.12.0 - '@parcel/source-map': 2.1.1 - '@parcel/types': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0) - abortcontroller-polyfill: 1.7.5 - base-x: 3.0.9 - browserslist: 4.23.0 - clone: 2.1.2 - dotenv: 7.0.0 - dotenv-expand: 5.1.0 - json5: 2.2.3 - msgpackr: 1.10.1 - nullthrows: 1.1.1 - semver: 7.6.0 - transitivePeerDependencies: - - '@swc/helpers' - dev: true + '@parcel/core@2.14.4': + resolution: {integrity: sha512-dtUMmPDXd7CRAWwMlOc6jh6yLRL4wMi/vNMNdX9J/fafCLFgFBmPqWBhQ9tlX015Q8DEcIRWYPumHIn5dzqEbg==} + engines: {node: '>= 16.0.0'} - /@parcel/diagnostic@2.12.0: - resolution: {integrity: sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA==} - engines: {node: '>= 12.0.0'} - dependencies: - '@mischnic/json-sourcemap': 0.1.1 - nullthrows: 1.1.1 - dev: true + '@parcel/diagnostic@2.14.4': + resolution: {integrity: sha512-+pElcMMlTnpEIm9MrrSEOh38ylKYYdTYMgv2iZQU7799yzD9sSac9dkGSbbKGDYWhALCuzWQOgdaGG9ExJZw6w==} + engines: {node: '>= 16.0.0'} - /@parcel/events@2.12.0: - resolution: {integrity: sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA==} - engines: {node: '>= 12.0.0'} - dev: true + '@parcel/error-overlay@2.14.4': + resolution: {integrity: sha512-GZ6Z1XO/VYqIFNwa3iAYWX7Pskwd+xw9tPw9kjF7tG8wdL9VipkcILJ4APj/G5CKw8XrXH/6NsC7HndNbR7EqA==} + engines: {node: '>= 16.0.0'} - /@parcel/fs@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==} - engines: {node: '>= 12.0.0'} + '@parcel/events@2.14.4': + resolution: {integrity: sha512-QzZr291JuENw7BsehKc3z29ukLMApPdjRFcOYXFuMWaHkpC7lzFK/KAY4Mi9HCa3aQe90zCcuxZg+bBsNF9XxQ==} + engines: {node: '>= 16.0.0'} + + '@parcel/feature-flags@2.14.4': + resolution: {integrity: sha512-T2HE+lOmlU6PZOUnuXn6UZPXV4higCPgF2c2YXhrzTlSFcLMiAXATyzrylbYY/i/WjiYAlqvmEcaBX5fSaW95g==} + engines: {node: '>= 16.0.0'} + + '@parcel/fs@2.14.4': + resolution: {integrity: sha512-SQbuW6v1URv871FVj23HoC8+UUwpgkQ7iWmG7EITpp6AV42ojRr/jZ93hLjzkQQfYlRI64jUExn6AQAZDN3bqQ==} + engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.12.0 - dependencies: - '@parcel/core': 2.12.0 - '@parcel/rust': 2.12.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0) - transitivePeerDependencies: - - '@swc/helpers' - dev: true + '@parcel/core': ^2.14.4 - /@parcel/graph@3.2.0: - resolution: {integrity: sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA==} - engines: {node: '>= 12.0.0'} - dependencies: - nullthrows: 1.1.1 - dev: true + '@parcel/graph@3.4.4': + resolution: {integrity: sha512-AIbJ8d8aCPcKAkqc45LENjAMIrp8nRGlmky5LyY5244qqnR1B+tsvU47XoGymM3OaXLdVjv8knJ4K0ci9/l/4w==} + engines: {node: '>= 16.0.0'} - /@parcel/logger@2.12.0: - resolution: {integrity: sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg==} - engines: {node: '>= 12.0.0'} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - dev: true + '@parcel/logger@2.14.4': + resolution: {integrity: sha512-uqSGeCqraWpbe8gqbb1k9ePrlzdKoOwkdQPcRIv8TTTWZfCt6Qcl08w8didO4iAOz4H5C4Ng82wbVO/ieaMoKg==} + engines: {node: '>= 16.0.0'} - /@parcel/markdown-ansi@2.12.0: - resolution: {integrity: sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w==} - engines: {node: '>= 12.0.0'} - dependencies: - chalk: 4.1.2 - dev: true + '@parcel/markdown-ansi@2.14.4': + resolution: {integrity: sha512-B4787HHXHi0wcuYbV4qBibws/yaX4RXoNel5xWdwzn1ZFmeLAXluNjMO2Q6FmII/Lej9OIQEaTppl7/DxJGifg==} + engines: {node: '>= 16.0.0'} - /@parcel/namer-default@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/namer-default@2.14.4': + resolution: {integrity: sha512-3FvZhkRgYlipj0NGRmw/rZ9ZiuM+a9ZcNW/MHRpytiNNBgcGCpR00XKhhvn0O5//MH13nLpiQXUf+J279CuN2A==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/node-resolver-core@3.3.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==} - engines: {node: '>= 12.0.0'} - dependencies: - '@mischnic/json-sourcemap': 0.1.1 - '@parcel/diagnostic': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - semver: 7.6.0 - transitivePeerDependencies: - - '@parcel/core' - dev: true + '@parcel/node-resolver-core@3.5.4': + resolution: {integrity: sha512-KmmsVD8Ym+19DIbe0Y2SUbdcB+iUfgstR4dBpaogV36DlxV4d0uiia4GCpOO3kG9zlRYMVsfZEwy/NNZHELx3w==} + engines: {node: '>= 16.0.0'} - /@parcel/optimizer-css@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - browserslist: 4.23.0 - lightningcss: 1.24.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/optimizer-css@2.14.4': + resolution: {integrity: sha512-5rwwnsP8pnTqis5fs2YyNUvke6YprWlU8Y9pD55hK1Y1MbYmvCqaIyQv9lcpHJQiqrwsZ2pl5B3Ph5buDSQehQ==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0)(typescript@5.4.3): - resolution: {integrity: sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - htmlnano: 2.1.0(svgo@2.8.0)(typescript@5.4.3) - nullthrows: 1.1.1 - posthtml: 0.16.6 - svgo: 2.8.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - dev: true + '@parcel/optimizer-htmlnano@2.14.4': + resolution: {integrity: sha512-hLVaN7ResQcgKRo9uDm7oddC4DwR7qoTFsYn4Ftj8qGbgqB2nRpCCK0R66PA/9U98LyTOlAl1J6TEvxWR+IlKw==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/optimizer-image@2.14.4': + resolution: {integrity: sha512-F5xw6ayFWOxu2XP5MI8g9khOCKNkVj4nGoXrBcgLoCKW4o07buCUKY4Sy04P3u7Leip6TOk7qpt3Q1179h6KTQ==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} peerDependencies: - '@parcel/core': ^2.12.0 - dependencies: - '@parcel/core': 2.12.0 - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0) - transitivePeerDependencies: - - '@swc/helpers' - dev: true + '@parcel/core': ^2.14.4 - /@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - svgo: 2.8.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/optimizer-svgo@2.14.4': + resolution: {integrity: sha512-bjZ2VHhzclBQ99SC2ZXsFKJ6zi0hXTPbGdaVblMu0iheeXcATdoNzey0eizaoSmLe9IyFJoN6gvnLdQqGfZLZg==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/optimizer-swc@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - '@swc/core': 1.4.11 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/optimizer-swc@2.14.4': + resolution: {integrity: sha512-7+p5ILEj2S02Rs6YzwF74g0kpAZzF9idDP9zjLVZWo9JYvoRvH0LW90bI7yKXWpKB8QOtwziqgWkcgItSIWBnA==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/package-manager@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==} - engines: {node: '>= 12.0.0'} + '@parcel/package-manager@2.14.4': + resolution: {integrity: sha512-chF2rBmLtLPZe0qtbqJtq6hNGCRu0+1wFs2j5sqxr1ZttvvhRpATu/7pD+gKTFmfL7iJkOpGTU485SYmyO1xjg==} + engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.12.0 - dependencies: - '@parcel/core': 2.12.0 - '@parcel/diagnostic': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0) - '@parcel/logger': 2.12.0 - '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0) - '@parcel/types': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0) - '@swc/core': 1.4.11 - semver: 7.6.0 - transitivePeerDependencies: - - '@swc/helpers' - dev: true + '@parcel/core': ^2.14.4 - /@parcel/packager-css@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - lightningcss: 1.24.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/packager-css@2.14.4': + resolution: {integrity: sha512-AvJhE1AQ4OcuOUtKoifhE1Y8KgYitzKMvmgsgQlwySdrkk6dz+XGHfZ9goTzIUaz9xZzwbJH7h/pvaIP8jQ9yQ==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/packager-html@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/types': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - posthtml: 0.16.6 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/packager-html@2.14.4': + resolution: {integrity: sha512-rsYz3NDaKRCuQOAWGc3eYJ2GHesm62iRCQTMGlZ7Oplp748vu2c1Uee/mP43WlslvDxHtV7rzVNyo88MS6sc5w==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/packager-js@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/rust': 2.12.0 - '@parcel/source-map': 2.1.1 - '@parcel/types': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - globals: 13.24.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/packager-js@2.14.4': + resolution: {integrity: sha512-Fz98TzYFcd9xCj6jqMtyd7c3n65GRmuoG7u0S/2g4sJrR5Zen70n1zlBGX7mEoOvB5lKRijzoNqBtB+7bWqS5A==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/packager-raw@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/packager-raw@2.14.4': + resolution: {integrity: sha512-7yDcPGsSSz4WiCWj2KoC2pNBXNislulI1RXaWyBAMzQhevQ+9D2ga/ZPgpcNjcWr8Y1tRb3QITETkTmZVHmPXQ==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/packager-svg@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/types': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - posthtml: 0.16.6 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/packager-svg@2.14.4': + resolution: {integrity: sha512-ja5P9PXp+v/mh+UXUXdQ1O35yr2kRqdRlytYrzmAaeILuS1ko2n3ZJoeUYYprYOh/UmLmkgbXh/DyzrhEH7TZw==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/packager-wasm@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A==} - engines: {node: '>=12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/packager-wasm@2.14.4': + resolution: {integrity: sha512-sgGCitPjl80Ku+xZIu3wCIAjOYXVEGJ00uXeexR8hgMx/PMhiHXLWUG8eLYAvxXx/CcLmHDOEBNrl6G3JxsP9g==} + engines: {node: '>=16.0.0', parcel: ^2.14.4} - /@parcel/plugin@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==} - engines: {node: '>= 12.0.0'} - dependencies: - '@parcel/types': 2.12.0(@parcel/core@2.12.0) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/plugin@2.14.4': + resolution: {integrity: sha512-EcehbthkBtQ9S2jWAzIiSlodbIMZ0bSsN3PC1q9jVaCM16ueObjZohKkzMjzR6Qot91qL0EJoMLzuNvtryvpHA==} + engines: {node: '>= 16.0.0'} - /@parcel/profiler@2.12.0: - resolution: {integrity: sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA==} - engines: {node: '>= 12.0.0'} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - chrome-trace-event: 1.0.3 - dev: true + '@parcel/profiler@2.14.4': + resolution: {integrity: sha512-oZAdCDW3bYRpBOuL4coq4OQDN6HXADaSd4X8xJCeGsEsbVfJt0Qg5RgxdWC1L86mukyZMQ9ZrQUpC8aU9CAmFg==} + engines: {node: '>= 16.0.0'} - /@parcel/reporter-cli@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-TqKsH4GVOLPSCanZ6tcTPj+rdVHERnt5y4bwTM82cajM21bCX1Ruwp8xOKU+03091oV2pv5ieB18pJyRF7IpIw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/types': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - chalk: 4.1.2 - term-size: 2.2.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/reporter-cli@2.14.4': + resolution: {integrity: sha512-KgBXBiwGb9hqf3A6vw6eIqX1uYaMRjSqYXUUybGTOxonc+yB6J5q+skv1Wuty6IYuBfjNlV/zdvgggVZMl0ZxA==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/reporter-dev-server@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/reporter-dev-server@2.14.4': + resolution: {integrity: sha512-Ezg24vHftV0El0tWcxnsGAxwSdNTMs9M+l9Nbm1k4rydx1lCoKBAhpa2Icv8vKZY8K075giww8TOkjk6zVkAmQ==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/reporter-tracer@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-g8rlu9GxB8Ut/F8WGx4zidIPQ4pcYFjU9bZO+fyRIPrSUFH2bKijCnbZcr4ntqzDGx74hwD6cCG4DBoleq2UlQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - chrome-trace-event: 1.0.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/reporter-tracer@2.14.4': + resolution: {integrity: sha512-EN+rzdEnoMuC5qbYIcuP6v1vTb/dDPrrnIEtDFEsSyuBuDfQevtOech8oHzjGEBOlC8svm+OzW/wIj2L2rmF2A==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/resolver-default@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/resolver-default@2.14.4': + resolution: {integrity: sha512-s4XKnfScF/cwqGyYG/sB4WpktIJ55dvpu64ZiglHkkPvY5wT4p7A61mTIp6ck0ZPYmeG/zfd+P0B3qPpNF5mUw==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/runtime-browser-hmr@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/runtime-browser-hmr@2.14.4': + resolution: {integrity: sha512-7o3XHOkuNy2jUH8xdKJSzIfatdAqvr/PHg9vQN0Cz4r80XCXDh1ovfz/x0Q9gpBv+LMBs+ufZ4tP+RfgJ/jKpQ==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/runtime-js@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/runtime-js@2.14.4': + resolution: {integrity: sha512-F9RvDELU/0fyV2/rHkjpPcLeKF/ZU3gnHIQnkh2Q5/41XhymyNAvMmYGPM6VpbOAnDlYeVjwfyJ41x8FOL6u4Q==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/runtime-react-refresh@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - react-error-overlay: 6.0.9 - react-refresh: 0.9.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/runtime-rsc@2.14.4': + resolution: {integrity: sha512-FXoO1GWvC/yQOUYX+0rTUQVku91DSJnjegqJaiJSUOEGeJWF9mBmY/3QDkksvhwB25vJkLYsu/M5Fx83OA2u6w==} + engines: {node: '>= 12.0.0', parcel: ^2.14.4} - /@parcel/runtime-service-worker@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/runtime-service-worker@2.14.4': + resolution: {integrity: sha512-6+vz2DYP9tK+GHRPwW/qfUNvGOHvFpsN/Thk+tSIZ+PHT1DTWfpf02eo7fzpImdZAzllSz3m1IXgrOH00LdOKA==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/rust@2.12.0: - resolution: {integrity: sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw==} - engines: {node: '>= 12.0.0'} - dev: true + '@parcel/rust@2.14.4': + resolution: {integrity: sha512-Ti+ZVr8mMTgrSA7UHcFXxG98anD0C8dGzYfP1+DTgxkcU16nywTv5F/VsPqpV2qiDWrHbm06CEWQbOrowjzvVw==} + engines: {node: '>= 16.0.0'} + peerDependencies: + napi-wasm: ^1.1.2 + peerDependenciesMeta: + napi-wasm: + optional: true - /@parcel/source-map@2.1.1: + '@parcel/source-map@2.1.1': resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} engines: {node: ^12.18.3 || >=14} - dependencies: - detect-libc: 1.0.3 - dev: true - /@parcel/transformer-babel@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - browserslist: 4.23.0 - json5: 2.2.3 - nullthrows: 1.1.1 - semver: 7.6.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/transformer-babel@2.14.4': + resolution: {integrity: sha512-9yMnlFuKQYgXJY8OWpcR2vSigpMm5MCEJJl6r+g3KkXHFwK1Gket2sC4Wd5JbHv98SNzJ9rdD4Xrre/eXJu6pw==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/transformer-css@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - browserslist: 4.23.0 - lightningcss: 1.24.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/transformer-css@2.14.4': + resolution: {integrity: sha512-sf0NuzPH4kSpL4VgV94xY5kPxoAndoNouUFPaHmN3hW6QiTHShRubfDsginSOHl5QhghSfr4qtP7t7HxCSDq6A==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/transformer-html@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/rust': 2.12.0 - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.6.0 - srcset: 4.0.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/transformer-html@2.14.4': + resolution: {integrity: sha512-h0iCfU2SN+gh5LTfZTRiXHavl3CdJ2i3F9jzVrRjdH8pfLqy5eOy1tQ8vyqMsshk+VdlZ1+vUiZ7uaKkkBq/fg==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/transformer-image@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-image@2.14.4': + resolution: {integrity: sha512-QVGAdQ16YxNo7PTzBazUabmrn4dss1EDeMrh0bFUeRTZdYaYu5z/+gnRc5R4oHcHK6oxnECi808TquMQcQxDEA==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} peerDependencies: - '@parcel/core': ^2.12.0 - dependencies: - '@parcel/core': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0) - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@swc/helpers' - dev: true + '@parcel/core': ^2.14.4 - /@parcel/transformer-js@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-js@2.14.4': + resolution: {integrity: sha512-fBC8NVM8xXxjGQY5r88Z46akSErFO5hRVA4kuRI0tkXorjov3Mu4hu6MLq974TEQluSvGXUYGT5Mq2iXZ75M7w==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} peerDependencies: - '@parcel/core': ^2.12.0 - dependencies: - '@parcel/core': 2.12.0 - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/rust': 2.12.0 - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0) - '@swc/helpers': 0.5.8 - browserslist: 4.23.0 - nullthrows: 1.1.1 - regenerator-runtime: 0.13.11 - semver: 7.6.0 - dev: true + '@parcel/core': ^2.14.4 - /@parcel/transformer-json@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - json5: 2.2.3 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/transformer-json@2.14.4': + resolution: {integrity: sha512-+28n3/qhc2q6Zoqhufk1YKU442a2JyyE0ILFsT17Of+lcNX+QtXYPOYcky7TNENnoUz9TpOAFev64P99UN7huA==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/transformer-postcss@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 - clone: 2.1.2 - nullthrows: 1.1.1 - postcss-value-parser: 4.2.0 - semver: 7.6.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/transformer-node@2.14.4': + resolution: {integrity: sha512-K5k/GkGN4SwGdil8g10AcPPJn+hV0vzcv4l2qYoCqaxxIPCrpjmMnoA8a3kRgxvD8s54KciFYYjmU5Cj5NjvbA==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/transformer-posthtml@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.6.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/transformer-postcss@2.14.4': + resolution: {integrity: sha512-GxkXkcgG2XGt6ivoUF5yD1tmQPV+d71gUxyBGv1i1jg4x65R12Gc/npzWk9TCH2dShSdHOA90OJpNL4k0JlLtg==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/transformer-raw@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/transformer-posthtml@2.14.4': + resolution: {integrity: sha512-V9dnsA5+t7uF/hWc9HwJcaKkmP8K2go6yAQOpxu+knyszfz3t2jw/k4L/VFjqCATf90agal/iRTPVkHvWDCzZw==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/transformer-react-refresh-wrap@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - react-refresh: 0.9.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/transformer-raw@2.14.4': + resolution: {integrity: sha512-GCuUWKAb9YHB/krmzBeQbtHKKZopT3c3AzoPTq/4woV4Ti1zUZ83oFyTX1tBKQ+MMB1BW+HrPkFld0iY4gp/Ng==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/transformer-svg@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0) - '@parcel/rust': 2.12.0 - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.6.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/transformer-react-refresh-wrap@2.14.4': + resolution: {integrity: sha512-nb70CAvjDizAIQ1naZ39P/PxYWtPllWvvxrkpldNnk8AF74OcHodrsuHKwhyPZHMmnMdexFonsenf+VeN4l/aQ==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/types@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==} - dependencies: - '@parcel/cache': 2.12.0(@parcel/core@2.12.0) - '@parcel/diagnostic': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0) - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0) - '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0) - utility-types: 3.11.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - dev: true + '@parcel/transformer-svg@2.14.4': + resolution: {integrity: sha512-iqnyvgGmwu4wNh+khEBkMEu1hAGZWnc7/xQnhiuQBAcoy5qGNEjyVUv6PbMLWWAVK/0PjqV4FaB2deXBYKeW0A==} + engines: {node: '>= 16.0.0', parcel: ^2.14.4} - /@parcel/utils@2.12.0: - resolution: {integrity: sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g==} - engines: {node: '>= 12.0.0'} - dependencies: - '@parcel/codeframe': 2.12.0 - '@parcel/diagnostic': 2.12.0 - '@parcel/logger': 2.12.0 - '@parcel/markdown-ansi': 2.12.0 - '@parcel/rust': 2.12.0 - '@parcel/source-map': 2.1.1 - chalk: 4.1.2 - nullthrows: 1.1.1 - dev: true + '@parcel/types-internal@2.14.4': + resolution: {integrity: sha512-Y2JnljFG7KcxLrCiYNCqBfjDo12alhRVpNugm0jwz1EQ3OQNO3HYiB0f3djq6pv2clZ5ndpgkNgYsn6L7KR9Nw==} + + '@parcel/types@2.14.4': + resolution: {integrity: sha512-NL4N9M6IPwBquAo1DKOPqy66nwJLXMX3KPalzAA7ktt3HYr5YNG5h3GeVXPOLNIVVMrSIiodYGPEeEBYy6kyYA==} + + '@parcel/utils@2.14.4': + resolution: {integrity: sha512-icK6QgKjis+UZLyaHJcsKXYOSKYeYr41m8ZB9j20/yEcvrMqj/LMVsNjLz3iWVhLwfgussG2ODxycCdu3M5cvQ==} + engines: {node: '>= 16.0.0'} - /@parcel/watcher-android-arm64@2.4.1: - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + '@parcel/watcher-android-arm64@2.5.1': + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher-darwin-arm64@2.4.1: - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + '@parcel/watcher-darwin-arm64@2.5.1': + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher-darwin-x64@2.4.1: - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + '@parcel/watcher-darwin-x64@2.5.1': + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher-freebsd-x64@2.4.1: - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + '@parcel/watcher-freebsd-x64@2.5.1': + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher-linux-arm-glibc@2.4.1: - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + '@parcel/watcher-linux-arm-glibc@2.5.1': + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.1': + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher-linux-arm64-glibc@2.4.1: - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + '@parcel/watcher-linux-arm64-glibc@2.5.1': + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher-linux-arm64-musl@2.4.1: - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + '@parcel/watcher-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher-linux-x64-glibc@2.4.1: - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + '@parcel/watcher-linux-x64-glibc@2.5.1': + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher-linux-x64-musl@2.4.1: - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + '@parcel/watcher-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher-win32-arm64@2.4.1: - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + '@parcel/watcher-win32-arm64@2.5.1': + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher-win32-ia32@2.4.1: - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + '@parcel/watcher-win32-ia32@2.5.1': + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher-win32-x64@2.4.1: - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + '@parcel/watcher-win32-x64@2.5.1': + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@parcel/watcher@2.4.1: - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + '@parcel/watcher@2.5.1': + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.5 - node-addon-api: 7.1.0 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.1 - '@parcel/watcher-darwin-arm64': 2.4.1 - '@parcel/watcher-darwin-x64': 2.4.1 - '@parcel/watcher-freebsd-x64': 2.4.1 - '@parcel/watcher-linux-arm-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-musl': 2.4.1 - '@parcel/watcher-linux-x64-glibc': 2.4.1 - '@parcel/watcher-linux-x64-musl': 2.4.1 - '@parcel/watcher-win32-arm64': 2.4.1 - '@parcel/watcher-win32-ia32': 2.4.1 - '@parcel/watcher-win32-x64': 2.4.1 - dev: true - - /@parcel/workers@2.12.0(@parcel/core@2.12.0): - resolution: {integrity: sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==} - engines: {node: '>= 12.0.0'} + + '@parcel/workers@2.14.4': + resolution: {integrity: sha512-OAjW2dJOaRKy4UD5YwnUi7mY+gt/QbjagjrKh2fQDnrvuK8dpr5GrjEOLOe6QsxEE0vpe3jshhGMJTYqLni3kQ==} + engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.12.0 - dependencies: - '@parcel/core': 2.12.0 - '@parcel/diagnostic': 2.12.0 - '@parcel/logger': 2.12.0 - '@parcel/profiler': 2.12.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - dev: true + '@parcel/core': ^2.14.4 - /@rollup/rollup-android-arm-eabi@4.14.0: - resolution: {integrity: sha512-jwXtxYbRt1V+CdQSy6Z+uZti7JF5irRKF8hlKfEnF/xJpcNGuuiZMBvuoYM+x9sr9iWGnzrlM0+9hvQ1kgkf1w==} + '@rollup/rollup-android-arm-eabi@4.40.0': + resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} cpu: [arm] os: [android] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-android-arm64@4.14.0: - resolution: {integrity: sha512-fI9nduZhCccjzlsA/OuAwtFGWocxA4gqXGTLvOyiF8d+8o0fZUeSztixkYjcGq1fGZY3Tkq4yRvHPFxU+jdZ9Q==} + '@rollup/rollup-android-arm64@4.40.0': + resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-darwin-arm64@4.14.0: - resolution: {integrity: sha512-BcnSPRM76/cD2gQC+rQNGBN6GStBs2pl/FpweW8JYuz5J/IEa0Fr4AtrPv766DB/6b2MZ/AfSIOSGw3nEIP8SA==} + '@rollup/rollup-darwin-arm64@4.40.0': + resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-darwin-x64@4.14.0: - resolution: {integrity: sha512-LDyFB9GRolGN7XI6955aFeI3wCdCUszFWumWU0deHA8VpR3nWRrjG6GtGjBrQxQKFevnUTHKCfPR4IvrW3kCgQ==} + '@rollup/rollup-darwin-x64@4.40.0': + resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.14.0: - resolution: {integrity: sha512-ygrGVhQP47mRh0AAD0zl6QqCbNsf0eTo+vgwkY6LunBcg0f2Jv365GXlDUECIyoXp1kKwL5WW6rsO429DBY/bA==} + '@rollup/rollup-freebsd-arm64@4.40.0': + resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.40.0': + resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.40.0': + resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-arm64-gnu@4.14.0: - resolution: {integrity: sha512-x+uJ6MAYRlHGe9wi4HQjxpaKHPM3d3JjqqCkeC5gpnnI6OWovLdXTpfa8trjxPLnWKyBsSi5kne+146GAxFt4A==} + '@rollup/rollup-linux-arm64-gnu@4.40.0': + resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-arm64-musl@4.14.0: - resolution: {integrity: sha512-nrRw8ZTQKg6+Lttwqo6a2VxR9tOroa2m91XbdQ2sUUzHoedXlsyvY1fN4xWdqz8PKmf4orDwejxXHjh7YBGUCA==} + '@rollup/rollup-linux-arm64-musl@4.40.0': + resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.14.0: - resolution: {integrity: sha512-xV0d5jDb4aFu84XKr+lcUJ9y3qpIWhttO3Qev97z8DKLXR62LC3cXT/bMZXrjLF9X+P5oSmJTzAhqwUbY96PnA==} - cpu: [ppc64le] + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} + cpu: [ppc64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-riscv64-gnu@4.14.0: - resolution: {integrity: sha512-SDDhBQwZX6LPRoPYjAZWyL27LbcBo7WdBFWJi5PI9RPCzU8ijzkQn7tt8NXiXRiFMJCVpkuMkBf4OxSxVMizAw==} + '@rollup/rollup-linux-riscv64-gnu@4.40.0': + resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.40.0': + resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-s390x-gnu@4.14.0: - resolution: {integrity: sha512-RxB/qez8zIDshNJDufYlTT0ZTVut5eCpAZ3bdXDU9yTxBzui3KhbGjROK2OYTTor7alM7XBhssgoO3CZ0XD3qA==} + '@rollup/rollup-linux-s390x-gnu@4.40.0': + resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} cpu: [s390x] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-x64-gnu@4.14.0: - resolution: {integrity: sha512-C6y6z2eCNCfhZxT9u+jAM2Fup89ZjiG5pIzZIDycs1IwESviLxwkQcFRGLjnDrP+PT+v5i4YFvlcfAs+LnreXg==} + '@rollup/rollup-linux-x64-gnu@4.40.0': + resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-x64-musl@4.14.0: - resolution: {integrity: sha512-i0QwbHYfnOMYsBEyjxcwGu5SMIi9sImDVjDg087hpzXqhBSosxkE7gyIYFHgfFl4mr7RrXksIBZ4DoLoP4FhJg==} + '@rollup/rollup-linux-x64-musl@4.40.0': + resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-win32-arm64-msvc@4.14.0: - resolution: {integrity: sha512-Fq52EYb0riNHLBTAcL0cun+rRwyZ10S9vKzhGKKgeD+XbwunszSY0rVMco5KbOsTlwovP2rTOkiII/fQ4ih/zQ==} + '@rollup/rollup-win32-arm64-msvc@4.40.0': + resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-win32-ia32-msvc@4.14.0: - resolution: {integrity: sha512-e/PBHxPdJ00O9p5Ui43+vixSgVf4NlLsmV6QneGERJ3lnjIua/kim6PRFe3iDueT1rQcgSkYP8ZBBXa/h4iPvw==} + '@rollup/rollup-win32-ia32-msvc@4.40.0': + resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==} cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-win32-x64-msvc@4.14.0: - resolution: {integrity: sha512-aGg7iToJjdklmxlUlJh/PaPNa4PmqHfyRMLunbL3eaMO0gp656+q1zOKkpJ/CVe9CryJv6tAN1HDoR8cNGzkag==} + '@rollup/rollup-win32-x64-msvc@4.40.0': + resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@sinclair/typebox@0.27.8: + '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true - /@swc/core-darwin-arm64@1.4.11: - resolution: {integrity: sha512-C1j1Qp/IHSelVWdEnT7f0iONWxQz6FAqzjCF2iaL+0vFg4V5f2nlgrueY8vj5pNNzSGhrAlxsMxEIp4dj1MXkg==} + '@swc/core-darwin-arm64@1.11.21': + resolution: {integrity: sha512-v6gjw9YFWvKulCw3ZA1dY+LGMafYzJksm1mD4UZFZ9b36CyHFowYVYug1ajYRIRqEvvfIhHUNV660zTLoVFR8g==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@swc/core-darwin-x64@1.4.11: - resolution: {integrity: sha512-0TTy3Ni8ncgaMCchSQ7FK8ZXQLlamy0FXmGWbR58c+pVZWYZltYPTmheJUvVcR0H2+gPAymRKyfC0iLszDALjg==} + '@swc/core-darwin-x64@1.11.21': + resolution: {integrity: sha512-CUiTiqKlzskwswrx9Ve5NhNoab30L1/ScOfQwr1duvNlFvarC8fvQSgdtpw2Zh3MfnfNPpyLZnYg7ah4kbT9JQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@swc/core-linux-arm-gnueabihf@1.4.11: - resolution: {integrity: sha512-XJLB71uw0rog4DjYAPxFGAuGCBQpgJDlPZZK6MTmZOvI/1t0+DelJ24IjHIxk500YYM26Yv47xPabqFPD7I2zQ==} + '@swc/core-linux-arm-gnueabihf@1.11.21': + resolution: {integrity: sha512-YyBTAFM/QPqt1PscD8hDmCLnqPGKmUZpqeE25HXY8OLjl2MUs8+O4KjwPZZ+OGxpdTbwuWFyMoxjcLy80JODvg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@swc/core-linux-arm64-gnu@1.4.11: - resolution: {integrity: sha512-vYQwzJvm/iu052d5Iw27UFALIN5xSrGkPZXxLNMHPySVko2QMNNBv35HLatkEQHbQ3X+VKSW9J9SkdtAvAVRAQ==} + '@swc/core-linux-arm64-gnu@1.11.21': + resolution: {integrity: sha512-DQD+ooJmwpNsh4acrftdkuwl5LNxxg8U4+C/RJNDd7m5FP9Wo4c0URi5U0a9Vk/6sQNh9aSGcYChDpqCDWEcBw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@swc/core-linux-arm64-musl@1.4.11: - resolution: {integrity: sha512-eV+KduiRYUFjPsvbZuJ9aknQH9Tj0U2/G9oIZSzLx/18WsYi+upzHbgxmIIHJ2VJgfd7nN40RI/hMtxNsUzR/g==} + '@swc/core-linux-arm64-musl@1.11.21': + resolution: {integrity: sha512-y1L49+snt1a1gLTYPY641slqy55QotPdtRK9Y6jMi4JBQyZwxC8swWYlQWb+MyILwxA614fi62SCNZNznB3XSA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@swc/core-linux-x64-gnu@1.4.11: - resolution: {integrity: sha512-WA1iGXZ2HpqM1OR9VCQZJ8sQ1KP2or9O4bO8vWZo6HZJIeoQSo7aa9waaCLRpkZvkng1ct/TF/l6ymqSNFXIzQ==} + '@swc/core-linux-x64-gnu@1.11.21': + resolution: {integrity: sha512-NesdBXv4CvVEaFUlqKj+GA4jJMNUzK2NtKOrUNEtTbXaVyNiXjFCSaDajMTedEB0jTAd9ybB0aBvwhgkJUWkWA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@swc/core-linux-x64-musl@1.4.11: - resolution: {integrity: sha512-UkVJToKf0owwQYRnGvjHAeYVDfeimCEcx0VQSbJoN7Iy0ckRZi7YPlmWJU31xtKvikE2bQWCOVe0qbSDqqcWXA==} + '@swc/core-linux-x64-musl@1.11.21': + resolution: {integrity: sha512-qFV60pwpKVOdmX67wqQzgtSrUGWX9Cibnp1CXyqZ9Mmt8UyYGvmGu7p6PMbTyX7vdpVUvWVRf8DzrW2//wmVHg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@swc/core-win32-arm64-msvc@1.4.11: - resolution: {integrity: sha512-35khwkyly7lF5NDSyvIrukBMzxPorgc5iTSDfVO/LvnmN5+fm4lTlrDr4tUfTdOhv3Emy7CsKlsNAeFRJ+Pm+w==} + '@swc/core-win32-arm64-msvc@1.11.21': + resolution: {integrity: sha512-DJJe9k6gXR/15ZZVLv1SKhXkFst8lYCeZRNHH99SlBodvu4slhh/MKQ6YCixINRhCwliHrpXPym8/5fOq8b7Ig==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@swc/core-win32-ia32-msvc@1.4.11: - resolution: {integrity: sha512-Wx8/6f0ufgQF2pbVPsJ2dAmFLwIOW+xBE5fxnb7VnEbGkTgP1qMDWiiAtD9rtvDSuODG3i1AEmAak/2HAc6i6A==} + '@swc/core-win32-ia32-msvc@1.11.21': + resolution: {integrity: sha512-TqEXuy6wedId7bMwLIr9byds+mKsaXVHctTN88R1UIBPwJA92Pdk0uxDgip0pEFzHB/ugU27g6d8cwUH3h2eIw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@swc/core-win32-x64-msvc@1.4.11: - resolution: {integrity: sha512-0xRFW6K9UZQH2NVC/0pVB0GJXS45lY24f+6XaPBF1YnMHd8A8GoHl7ugyM5yNUTe2AKhSgk5fJV00EJt/XBtdQ==} + '@swc/core-win32-x64-msvc@1.11.21': + resolution: {integrity: sha512-BT9BNNbMxdpUM1PPAkYtviaV0A8QcXttjs2MDtOeSqqvSJaPtyM+Fof2/+xSwQDmDEFzbGCcn75M5+xy3lGqpA==} engines: {node: '>=10'} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@swc/core@1.4.11: - resolution: {integrity: sha512-WKEakMZxkVwRdgMN4AMJ9K5nysY8g8npgQPczmjBeNK5In7QEAZAJwnyccrWwJZU0XjVeHn2uj+XbOKdDW17rg==} + '@swc/core@1.11.21': + resolution: {integrity: sha512-/Y3BJLcwd40pExmdar8MH2UGGvCBrqNN7hauOMckrEX2Ivcbv3IMhrbGX4od1dnF880Ed8y/E9aStZCIQi0EGw==} engines: {node: '>=10'} - requiresBuild: true peerDependencies: - '@swc/helpers': ^0.5.0 + '@swc/helpers': '>=0.5.17' peerDependenciesMeta: '@swc/helpers': optional: true - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.6 - optionalDependencies: - '@swc/core-darwin-arm64': 1.4.11 - '@swc/core-darwin-x64': 1.4.11 - '@swc/core-linux-arm-gnueabihf': 1.4.11 - '@swc/core-linux-arm64-gnu': 1.4.11 - '@swc/core-linux-arm64-musl': 1.4.11 - '@swc/core-linux-x64-gnu': 1.4.11 - '@swc/core-linux-x64-musl': 1.4.11 - '@swc/core-win32-arm64-msvc': 1.4.11 - '@swc/core-win32-ia32-msvc': 1.4.11 - '@swc/core-win32-x64-msvc': 1.4.11 - dev: true - - /@swc/counter@0.1.3: - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: true - /@swc/helpers@0.5.8: - resolution: {integrity: sha512-lruDGw3pnfM3wmZHeW7JuhkGQaJjPyiKjxeGhdmfoOT53Ic9qb5JLDNaK2HUdl1zLDeX28H221UvKjfdvSLVMg==} - dependencies: - tslib: 2.6.2 - dev: true - - /@swc/types@0.1.6: - resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==} - dependencies: - '@swc/counter': 0.1.3 - dev: true + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - /@trysound/sax@0.2.0: - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - dev: true + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true + '@swc/types@0.1.21': + resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} - /@types/node@20.11.30: - resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} - dependencies: - undici-types: 5.26.5 - dev: true + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} - /@vitest/expect@1.4.0: - resolution: {integrity: sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==} - dependencies: - '@vitest/spy': 1.4.0 - '@vitest/utils': 1.4.0 - chai: 4.4.1 - dev: true + '@types/node@20.17.30': + resolution: {integrity: sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==} - /@vitest/runner@1.4.0: - resolution: {integrity: sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==} - dependencies: - '@vitest/utils': 1.4.0 - p-limit: 5.0.0 - pathe: 1.1.2 - dev: true + '@vitest/expect@1.6.1': + resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==} - /@vitest/snapshot@1.4.0: - resolution: {integrity: sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==} - dependencies: - magic-string: 0.30.8 - pathe: 1.1.2 - pretty-format: 29.7.0 - dev: true + '@vitest/runner@1.6.1': + resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==} - /@vitest/spy@1.4.0: - resolution: {integrity: sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==} - dependencies: - tinyspy: 2.2.1 - dev: true + '@vitest/snapshot@1.6.1': + resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==} - /@vitest/utils@1.4.0: - resolution: {integrity: sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==} - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - dev: true + '@vitest/spy@1.6.1': + resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==} - /abortcontroller-polyfill@1.7.5: - resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} - dev: true + '@vitest/utils@1.6.1': + resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==} - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - dev: true - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} hasBin: true - dev: true - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - - /ansi-styles@4.3.0: + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - /ansi-styles@5.2.0: + ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - dev: true - /argparse@2.0.1: + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - /assertion-error@1.1.0: + assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true - - /base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: true + base-x@3.0.11: + resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - dependencies: - caniuse-lite: 1.0.30001600 - electron-to-chromium: 1.4.721 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - dev: true - /cac@6.7.14: + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - dev: true - /callsites@3.1.0: + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - dev: true - /caniuse-lite@1.0.30001600: - resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==} - dev: true - - /chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.3 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 - dev: true + caniuse-lite@1.0.30001715: + resolution: {integrity: sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==} - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - /chalk@4.1.2: + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - /check-error@1.0.3: + check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - dependencies: - get-func-name: 2.0.2 - dev: true - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - dev: true - /clone@2.1.2: + clone@2.1.2: resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} - dev: true - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - - /color-convert@2.0.1: + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - - /color-name@1.1.4: + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: true + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - /cosmiconfig@8.3.6(typescript@5.4.3): - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' peerDependenciesMeta: typescript: optional: true - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - typescript: 5.4.3 - dev: true - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - /css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - dev: true - - /css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - dev: true - /css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: true - - /csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - dependencies: - css-tree: 1.1.3 - dev: true - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: supports-color: optional: true - dependencies: - ms: 2.1.2 - dev: true - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 - dev: true - /detect-libc@1.0.3: + detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} hasBin: true - dev: true - /detect-libc@2.0.3: + detect-libc@2.0.3: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - dev: true - /diff-sequences@29.6.3: + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - /dom-serializer@1.4.1: + dockerfile-ast@0.7.0: + resolution: {integrity: sha512-HYpjuL0IEC2lYflTpWD0RLNSZYhQxLwYRYsoEjnCP7nu/OlFx1BVrU6X/Y8ETVsa2hojhG2OTJVxleH5Wrlq+Q==} + + dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - dev: true - /domelementtype@2.3.0: + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true - /domhandler@4.3.1: + domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - /domutils@2.8.0: + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - dev: true - /dotenv-expand@5.1.0: - resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} - dev: true + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - /dotenv@7.0.0: - resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==} - engines: {node: '>=6'} - dev: true + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} + + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + engines: {node: '>=12'} - /electron-to-chromium@1.4.721: - resolution: {integrity: sha512-k1x2r6foI8iJOp+1qTxbbrrWMsOiHkzGBYwYigaq+apO1FSqtn44KTo3Sy69qt7CRr7149zTcsDvH7MUKsOuIQ==} - dev: true + electron-to-chromium@1.5.140: + resolution: {integrity: sha512-o82Rj+ONp4Ip7Cl1r7lrqx/pXhbp/lh9DpKcMNscFJdh8ebyRofnc7Sh01B4jx403RI0oqTBvlZ7OBIZLMr2+Q==} - /entities@2.2.0: + entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true - /entities@3.0.1: + entities@3.0.1: resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} engines: {node: '>=0.12'} - dev: true - /error-ex@1.3.2: + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - /esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 - dev: true - - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - dev: true - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} - /estree-walker@3.0.3: + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - dependencies: - '@types/estree': 1.0.5 - dev: true - /execa@8.0.1: + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - dev: true - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - /fsevents@2.3.3: + fs@0.0.1-security: + resolution: {integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==} + + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - requiresBuild: true - dev: true - optional: true - /get-func-name@2.0.2: + get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true - /get-port@4.2.0: + get-port@4.2.0: resolution: {integrity: sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==} engines: {node: '>=6'} - dev: true - /get-stream@8.0.1: + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - dev: true - /globals@13.24.0: + globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true - - /has-flag@4.0.0: + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true - /htmlnano@2.1.0(svgo@2.8.0)(typescript@5.4.3): - resolution: {integrity: sha512-jVGRE0Ep9byMBKEu0Vxgl8dhXYOUk0iNQ2pjsG+BcRB0u0oDF5A9p/iBGMg/PGKYUyMD0OAGu8dVT5Lzj8S58g==} + htmlnano@2.1.1: + resolution: {integrity: sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw==} peerDependencies: - cssnano: ^6.0.0 + cssnano: ^7.0.0 postcss: ^8.3.11 - purgecss: ^5.0.0 + purgecss: ^6.0.0 relateurl: ^0.2.7 - srcset: 4.0.0 + srcset: 5.0.1 svgo: ^3.0.2 terser: ^5.10.0 uncss: ^0.17.3 @@ -1997,210 +1039,1766 @@ packages: optional: true uncss: optional: true + + htmlparser2@7.2.0: + resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} + + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-json@2.0.1: + resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + lightningcss-darwin-arm64@1.29.3: + resolution: {integrity: sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.3: + resolution: {integrity: sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.3: + resolution: {integrity: sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.3: + resolution: {integrity: sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.3: + resolution: {integrity: sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.3: + resolution: {integrity: sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.3: + resolution: {integrity: sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.3: + resolution: {integrity: sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.3: + resolution: {integrity: sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.3: + resolution: {integrity: sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.3: + resolution: {integrity: sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==} + engines: {node: '>= 12.0.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lmdb@2.8.5: + resolution: {integrity: sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==} + hasBin: true + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true + + msgpackr@1.11.2: + resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-gyp-build-optional-packages@5.1.1: + resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} + hasBin: true + + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + ordered-binary@1.5.3: + resolution: {integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + parcel@2.14.4: + resolution: {integrity: sha512-XmnIurC4CPdQm9OFJMbjgvto5Jz2szZ5/p6EY4pAljU/SLPhtBzJ3+J6OyljGFdbVxEXx4dp+7Cvf7eaDZsEEg==} + engines: {node: '>= 16.0.0'} + hasBin: true + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + posthtml-parser@0.11.0: + resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} + engines: {node: '>=12'} + + posthtml-parser@0.12.1: + resolution: {integrity: sha512-rYFmsDLfYm+4Ts2Oh4DCDSZPtdC1BLnRXAobypVzX9alj28KGl65dIFtgDY9zB57D0TC4Qxqrawuq/2et1P0GA==} + engines: {node: '>=16'} + + posthtml-render@3.0.0: + resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==} + engines: {node: '>=12'} + + posthtml@0.16.6: + resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==} + engines: {node: '>=12.0.0'} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-refresh@0.16.0: + resolution: {integrity: sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A==} + engines: {node: '>=0.10.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + rollup@4.40.0: + resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + spawn-please@3.0.0: + resolution: {integrity: sha512-XFHEGgEG9R/MCypDDQVWoSSQoGAz5LFYcGoFpdYvnqgYDumHvapPDj54C5Xv7tqTkzEC17AY7Iz90KgrDfj7Gg==} + engines: {node: '>=14'} + + srcset@4.0.0: + resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} + engines: {node: '>=12'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-literal@2.1.1: + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + timsort@0.3.0: + resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + + vite-node@1.6.1: + resolution: {integrity: sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite@5.4.18: + resolution: {integrity: sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@1.6.1: + resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.1 + '@vitest/ui': 1.6.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + weak-lru-cache@1.2.2: + resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + +snapshots: + + '@actions/core@1.5.0': {} + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-validator-identifier@7.25.9': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@lezer/common@1.2.3': {} + + '@lezer/lr@1.4.2': + dependencies: + '@lezer/common': 1.2.3 + + '@lmdb/lmdb-darwin-arm64@2.8.5': + optional: true + + '@lmdb/lmdb-darwin-x64@2.8.5': + optional: true + + '@lmdb/lmdb-linux-arm64@2.8.5': + optional: true + + '@lmdb/lmdb-linux-arm@2.8.5': + optional: true + + '@lmdb/lmdb-linux-x64@2.8.5': + optional: true + + '@lmdb/lmdb-win32-x64@2.8.5': + optional: true + + '@mischnic/json-sourcemap@0.1.1': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/lr': 1.4.2 + json5: 2.2.3 + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + optional: true + + '@parcel/bundler-default@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/graph': 3.4.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.14.4 + '@parcel/utils': 2.14.4 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/cache@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/core': 2.14.4(@swc/helpers@0.5.17) + '@parcel/fs': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/logger': 2.14.4 + '@parcel/utils': 2.14.4 + lmdb: 2.8.5 + transitivePeerDependencies: + - napi-wasm + + '@parcel/codeframe@2.14.4': + dependencies: + chalk: 4.1.2 + + '@parcel/compressor-raw@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/config-default@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(postcss@8.5.3)(typescript@5.8.3)': + dependencies: + '@parcel/bundler-default': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/compressor-raw': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/core': 2.14.4(@swc/helpers@0.5.17) + '@parcel/namer-default': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/optimizer-css': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/optimizer-htmlnano': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))(postcss@8.5.3)(typescript@5.8.3) + '@parcel/optimizer-image': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/optimizer-svgo': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/optimizer-swc': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) + '@parcel/packager-css': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/packager-html': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/packager-js': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/packager-raw': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/packager-svg': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/packager-wasm': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/reporter-dev-server': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/resolver-default': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/runtime-browser-hmr': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/runtime-js': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/runtime-rsc': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/runtime-service-worker': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-babel': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-css': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-html': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-image': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-js': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-json': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-node': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-postcss': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-posthtml': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-raw': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-react-refresh-wrap': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/transformer-svg': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - napi-wasm + - postcss + - purgecss + - relateurl + - srcset + - svgo + - terser + - typescript + - uncss + + '@parcel/core@2.14.4(@swc/helpers@0.5.17)': + dependencies: + '@mischnic/json-sourcemap': 0.1.1 + '@parcel/cache': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.14.4 + '@parcel/events': 2.14.4 + '@parcel/feature-flags': 2.14.4 + '@parcel/fs': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/graph': 3.4.4 + '@parcel/logger': 2.14.4 + '@parcel/package-manager': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/profiler': 2.14.4 + '@parcel/rust': 2.14.4 + '@parcel/source-map': 2.1.1 + '@parcel/types': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + '@parcel/workers': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + base-x: 3.0.11 + browserslist: 4.24.4 + clone: 2.1.2 + dotenv: 16.5.0 + dotenv-expand: 11.0.7 + json5: 2.2.3 + msgpackr: 1.11.2 + nullthrows: 1.1.1 + semver: 7.7.1 + transitivePeerDependencies: + - '@swc/helpers' + - napi-wasm + + '@parcel/diagnostic@2.14.4': + dependencies: + '@mischnic/json-sourcemap': 0.1.1 + nullthrows: 1.1.1 + + '@parcel/error-overlay@2.14.4': {} + + '@parcel/events@2.14.4': {} + + '@parcel/feature-flags@2.14.4': {} + + '@parcel/fs@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/core': 2.14.4(@swc/helpers@0.5.17) + '@parcel/feature-flags': 2.14.4 + '@parcel/rust': 2.14.4 + '@parcel/types-internal': 2.14.4 + '@parcel/utils': 2.14.4 + '@parcel/watcher': 2.5.1 + '@parcel/workers': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - napi-wasm + + '@parcel/graph@3.4.4': + dependencies: + '@parcel/feature-flags': 2.14.4 + nullthrows: 1.1.1 + + '@parcel/logger@2.14.4': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/events': 2.14.4 + + '@parcel/markdown-ansi@2.14.4': + dependencies: + chalk: 4.1.2 + + '@parcel/namer-default@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/node-resolver-core@3.5.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@mischnic/json-sourcemap': 0.1.1 + '@parcel/diagnostic': 2.14.4 + '@parcel/fs': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.14.4 + '@parcel/utils': 2.14.4 + nullthrows: 1.1.1 + semver: 7.7.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/optimizer-css@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.14.4 + browserslist: 4.24.4 + lightningcss: 1.29.3 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/optimizer-htmlnano@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))(postcss@8.5.3)(typescript@5.8.3)': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + htmlnano: 2.1.1(postcss@8.5.3)(typescript@5.8.3) + nullthrows: 1.1.1 + posthtml: 0.16.6 + transitivePeerDependencies: + - '@parcel/core' + - cssnano + - napi-wasm + - postcss + - purgecss + - relateurl + - srcset + - svgo + - terser + - typescript + - uncss + + '@parcel/optimizer-image@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/core': 2.14.4(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.14.4 + '@parcel/utils': 2.14.4 + '@parcel/workers': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - napi-wasm + + '@parcel/optimizer-svgo@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/optimizer-swc@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.14.4 + '@swc/core': 1.11.21(@swc/helpers@0.5.17) + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + - napi-wasm + + '@parcel/package-manager@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': + dependencies: + '@parcel/core': 2.14.4(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.14.4 + '@parcel/fs': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/logger': 2.14.4 + '@parcel/node-resolver-core': 3.5.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/types': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + '@parcel/workers': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@swc/core': 1.11.21(@swc/helpers@0.5.17) + semver: 7.7.1 + transitivePeerDependencies: + - '@swc/helpers' + - napi-wasm + + '@parcel/packager-css@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.14.4 + lightningcss: 1.29.3 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/packager-html@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/types': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + nullthrows: 1.1.1 + posthtml: 0.16.6 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/packager-js@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.14.4 + '@parcel/source-map': 2.1.1 + '@parcel/types': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + globals: 13.24.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/packager-raw@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/packager-svg@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/types': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + posthtml: 0.16.6 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/packager-wasm@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/plugin@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/types': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/profiler@2.14.4': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/events': 2.14.4 + '@parcel/types-internal': 2.14.4 + chrome-trace-event: 1.0.4 + + '@parcel/reporter-cli@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/types': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + chalk: 4.1.2 + term-size: 2.2.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/reporter-dev-server@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/codeframe': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.14.4 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/reporter-tracer@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + chrome-trace-event: 1.0.4 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/resolver-default@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/node-resolver-core': 3.5.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/runtime-browser-hmr@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/runtime-js@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/runtime-rsc@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.14.4 + '@parcel/utils': 2.14.4 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/runtime-service-worker@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/rust@2.14.4': {} + + '@parcel/source-map@2.1.1': + dependencies: + detect-libc: 1.0.3 + + '@parcel/transformer-babel@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.14.4 + browserslist: 4.24.4 + json5: 2.2.3 + nullthrows: 1.1.1 + semver: 7.7.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/transformer-css@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.14.4 + browserslist: 4.24.4 + lightningcss: 1.29.3 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/transformer-html@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.14.4 + nullthrows: 1.1.1 + posthtml: 0.16.6 + posthtml-parser: 0.12.1 + posthtml-render: 3.0.0 + semver: 7.7.1 + srcset: 4.0.0 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/transformer-image@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/core': 2.14.4(@swc/helpers@0.5.17) + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + '@parcel/workers': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + nullthrows: 1.1.1 + transitivePeerDependencies: + - napi-wasm + + '@parcel/transformer-js@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/core': 2.14.4(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.14.4 + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.14.4 + '@parcel/workers': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@swc/helpers': 0.5.17 + browserslist: 4.24.4 + nullthrows: 1.1.1 + regenerator-runtime: 0.14.1 + semver: 7.7.1 + transitivePeerDependencies: + - napi-wasm + + '@parcel/transformer-json@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + json5: 2.2.3 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/transformer-node@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/transformer-postcss@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.14.4 + '@parcel/utils': 2.14.4 + clone: 2.1.2 + nullthrows: 1.1.1 + postcss-value-parser: 4.2.0 + semver: 7.7.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/transformer-posthtml@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + nullthrows: 1.1.1 + posthtml: 0.16.6 + posthtml-parser: 0.12.1 + posthtml-render: 3.0.0 + semver: 7.7.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/transformer-raw@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/transformer-react-refresh-wrap@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/error-overlay': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 + react-refresh: 0.16.0 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/transformer-svg@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.14.4 + nullthrows: 1.1.1 + posthtml: 0.16.6 + posthtml-parser: 0.12.1 + posthtml-render: 3.0.0 + semver: 7.7.1 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/types-internal@2.14.4': + dependencies: + '@parcel/diagnostic': 2.14.4 + '@parcel/feature-flags': 2.14.4 + '@parcel/source-map': 2.1.1 + utility-types: 3.11.0 + + '@parcel/types@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/types-internal': 2.14.4 + '@parcel/workers': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/utils@2.14.4': + dependencies: + '@parcel/codeframe': 2.14.4 + '@parcel/diagnostic': 2.14.4 + '@parcel/logger': 2.14.4 + '@parcel/markdown-ansi': 2.14.4 + '@parcel/rust': 2.14.4 + '@parcel/source-map': 2.1.1 + chalk: 4.1.2 + nullthrows: 1.1.1 + transitivePeerDependencies: + - napi-wasm + + '@parcel/watcher-android-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-x64@2.5.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.1': + optional: true + + '@parcel/watcher-win32-arm64@2.5.1': + optional: true + + '@parcel/watcher-win32-ia32@2.5.1': + optional: true + + '@parcel/watcher-win32-x64@2.5.1': + optional: true + + '@parcel/watcher@2.5.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.1 + '@parcel/watcher-darwin-arm64': 2.5.1 + '@parcel/watcher-darwin-x64': 2.5.1 + '@parcel/watcher-freebsd-x64': 2.5.1 + '@parcel/watcher-linux-arm-glibc': 2.5.1 + '@parcel/watcher-linux-arm-musl': 2.5.1 + '@parcel/watcher-linux-arm64-glibc': 2.5.1 + '@parcel/watcher-linux-arm64-musl': 2.5.1 + '@parcel/watcher-linux-x64-glibc': 2.5.1 + '@parcel/watcher-linux-x64-musl': 2.5.1 + '@parcel/watcher-win32-arm64': 2.5.1 + '@parcel/watcher-win32-ia32': 2.5.1 + '@parcel/watcher-win32-x64': 2.5.1 + + '@parcel/workers@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + dependencies: + '@parcel/core': 2.14.4(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.14.4 + '@parcel/logger': 2.14.4 + '@parcel/profiler': 2.14.4 + '@parcel/types-internal': 2.14.4 + '@parcel/utils': 2.14.4 + nullthrows: 1.1.1 + transitivePeerDependencies: + - napi-wasm + + '@rollup/rollup-android-arm-eabi@4.40.0': + optional: true + + '@rollup/rollup-android-arm64@4.40.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.40.0': + optional: true + + '@rollup/rollup-darwin-x64@4.40.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.40.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.40.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.40.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.40.0': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.40.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.40.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.40.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.40.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.40.0': + optional: true + + '@sinclair/typebox@0.27.8': {} + + '@swc/core-darwin-arm64@1.11.21': + optional: true + + '@swc/core-darwin-x64@1.11.21': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.11.21': + optional: true + + '@swc/core-linux-arm64-gnu@1.11.21': + optional: true + + '@swc/core-linux-arm64-musl@1.11.21': + optional: true + + '@swc/core-linux-x64-gnu@1.11.21': + optional: true + + '@swc/core-linux-x64-musl@1.11.21': + optional: true + + '@swc/core-win32-arm64-msvc@1.11.21': + optional: true + + '@swc/core-win32-ia32-msvc@1.11.21': + optional: true + + '@swc/core-win32-x64-msvc@1.11.21': + optional: true + + '@swc/core@1.11.21(@swc/helpers@0.5.17)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.21 + optionalDependencies: + '@swc/core-darwin-arm64': 1.11.21 + '@swc/core-darwin-x64': 1.11.21 + '@swc/core-linux-arm-gnueabihf': 1.11.21 + '@swc/core-linux-arm64-gnu': 1.11.21 + '@swc/core-linux-arm64-musl': 1.11.21 + '@swc/core-linux-x64-gnu': 1.11.21 + '@swc/core-linux-x64-musl': 1.11.21 + '@swc/core-win32-arm64-msvc': 1.11.21 + '@swc/core-win32-ia32-msvc': 1.11.21 + '@swc/core-win32-x64-msvc': 1.11.21 + '@swc/helpers': 0.5.17 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@swc/types@0.1.21': + dependencies: + '@swc/counter': 0.1.3 + + '@types/estree@1.0.7': {} + + '@types/node@20.17.30': + dependencies: + undici-types: 6.19.8 + + '@vitest/expect@1.6.1': + dependencies: + '@vitest/spy': 1.6.1 + '@vitest/utils': 1.6.1 + chai: 4.5.0 + + '@vitest/runner@1.6.1': + dependencies: + '@vitest/utils': 1.6.1 + p-limit: 5.0.0 + pathe: 1.1.2 + + '@vitest/snapshot@1.6.1': + dependencies: + magic-string: 0.30.17 + pathe: 1.1.2 + pretty-format: 29.7.0 + + '@vitest/spy@1.6.1': + dependencies: + tinyspy: 2.2.1 + + '@vitest/utils@1.6.1': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + argparse@2.0.1: {} + + assertion-error@1.1.0: {} + + base-x@3.0.11: + dependencies: + safe-buffer: 5.2.1 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001715 + electron-to-chromium: 1.5.140 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) + + cac@6.7.14: {} + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001715: {} + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chrome-trace-event@1.0.4: {} + + clone@2.1.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@12.1.0: {} + + confbox@0.1.8: {} + + cosmiconfig@9.0.0(typescript@5.8.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.8.3 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + detect-libc@1.0.3: {} + + detect-libc@2.0.3: {} + + diff-sequences@29.6.3: {} + + dockerfile-ast@0.7.0: + dependencies: + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dotenv-expand@11.0.7: + dependencies: + dotenv: 16.5.0 + + dotenv@16.5.0: {} + + electron-to-chromium@1.5.140: {} + + entities@2.2.0: {} + + entities@3.0.1: {} + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escalade@3.2.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.7 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + fs@0.0.1-security: {} + + fsevents@2.3.3: + optional: true + + get-func-name@2.0.2: {} + + get-port@4.2.0: {} + + get-stream@8.0.1: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + has-flag@4.0.0: {} + + htmlnano@2.1.1(postcss@8.5.3)(typescript@5.8.3): dependencies: - cosmiconfig: 8.3.6(typescript@5.4.3) + cosmiconfig: 9.0.0(typescript@5.8.3) posthtml: 0.16.6 - svgo: 2.8.0 timsort: 0.3.0 + optionalDependencies: + postcss: 8.5.3 transitivePeerDependencies: - typescript - dev: true - /htmlparser2@7.2.0: - resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} + htmlparser2@7.2.0: dependencies: domelementtype: 2.3.0 domhandler: 4.3.1 domutils: 2.8.0 entities: 3.0.1 - dev: true - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: true + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + human-signals@5.0.0: {} + + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true + is-arrayish@0.2.1: {} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true + is-extglob@2.1.1: {} - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - dev: true - /is-json@2.0.1: - resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} - dev: true + is-json@2.0.1: {} - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true + is-number@7.0.0: {} - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + is-stream@3.0.0: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@2.0.0: {} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true + js-tokens@4.0.0: {} - /js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - dev: true + js-tokens@9.0.1: {} - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - dev: true - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true + json-parse-even-better-errors@2.3.1: {} - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true + json5@2.2.3: {} - /jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - dev: true + lightningcss-darwin-arm64@1.29.3: + optional: true - /lightningcss-darwin-arm64@1.24.1: - resolution: {integrity: sha512-1jQ12jBy+AE/73uGQWGSafK5GoWgmSiIQOGhSEXiFJSZxzV+OXIx+a9h2EYHxdJfX864M+2TAxWPWb0Vv+8y4w==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true + lightningcss-darwin-x64@1.29.3: optional: true - /lightningcss-darwin-x64@1.24.1: - resolution: {integrity: sha512-R4R1d7VVdq2mG4igMU+Di8GPf0b64ZLnYVkubYnGG0Qxq1KaXQtAzcLI43EkpnoWvB/kUg8JKCWH4S13NfiLcQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + lightningcss-freebsd-x64@1.29.3: optional: true - /lightningcss-freebsd-x64@1.24.1: - resolution: {integrity: sha512-z6NberUUw5ALES6Ixn2shmjRRrM1cmEn1ZQPiM5IrZ6xHHL5a1lPin9pRv+w6eWfcrEo+qGG6R9XfJrpuY3e4g==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true + lightningcss-linux-arm-gnueabihf@1.29.3: optional: true - /lightningcss-linux-arm-gnueabihf@1.24.1: - resolution: {integrity: sha512-NLQLnBQW/0sSg74qLNI8F8QKQXkNg4/ukSTa+XhtkO7v3BnK19TS1MfCbDHt+TTdSgNEBv0tubRuapcKho2EWw==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true + lightningcss-linux-arm64-gnu@1.29.3: optional: true - /lightningcss-linux-arm64-gnu@1.24.1: - resolution: {integrity: sha512-AQxWU8c9E9JAjAi4Qw9CvX2tDIPjgzCTrZCSXKELfs4mCwzxRkHh2RCxX8sFK19RyJoJAjA/Kw8+LMNRHS5qEg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + lightningcss-linux-arm64-musl@1.29.3: optional: true - /lightningcss-linux-arm64-musl@1.24.1: - resolution: {integrity: sha512-JCgH/SrNrhqsguUA0uJUM1PvN5+dVuzPIlXcoWDHSv2OU/BWlj2dUYr3XNzEw748SmNZPfl2NjQrAdzaPOn1lA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + lightningcss-linux-x64-gnu@1.29.3: optional: true - /lightningcss-linux-x64-gnu@1.24.1: - resolution: {integrity: sha512-TYdEsC63bHV0h47aNRGN3RiK7aIeco3/keN4NkoSQ5T8xk09KHuBdySltWAvKLgT8JvR+ayzq8ZHnL1wKWY0rw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + lightningcss-linux-x64-musl@1.29.3: optional: true - /lightningcss-linux-x64-musl@1.24.1: - resolution: {integrity: sha512-HLfzVik3RToot6pQ2Rgc3JhfZkGi01hFetHt40HrUMoeKitLoqUUT5owM6yTZPTytTUW9ukLBJ1pc3XNMSvlLw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + lightningcss-win32-arm64-msvc@1.29.3: optional: true - /lightningcss-win32-x64-msvc@1.24.1: - resolution: {integrity: sha512-joEupPjYJ7PjZtDsS5lzALtlAudAbgIBMGJPNeFe5HfdmJXFd13ECmEM+5rXNxYVMRHua2w8132R6ab5Z6K9Ow==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true + lightningcss-win32-x64-msvc@1.29.3: optional: true - /lightningcss@1.24.1: - resolution: {integrity: sha512-kUpHOLiH5GB0ERSv4pxqlL0RYKnOXtgGtVe7shDGfhS0AZ4D1ouKFYAcLcZhql8aMspDNzaUCumGHZ78tb2fTg==} - engines: {node: '>= 12.0.0'} + lightningcss@1.29.3: dependencies: - detect-libc: 1.0.3 + detect-libc: 2.0.3 optionalDependencies: - lightningcss-darwin-arm64: 1.24.1 - lightningcss-darwin-x64: 1.24.1 - lightningcss-freebsd-x64: 1.24.1 - lightningcss-linux-arm-gnueabihf: 1.24.1 - lightningcss-linux-arm64-gnu: 1.24.1 - lightningcss-linux-arm64-musl: 1.24.1 - lightningcss-linux-x64-gnu: 1.24.1 - lightningcss-linux-x64-musl: 1.24.1 - lightningcss-win32-x64-msvc: 1.24.1 - dev: true - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - - /lmdb@2.8.5: - resolution: {integrity: sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==} - hasBin: true - requiresBuild: true - dependencies: - msgpackr: 1.10.1 + lightningcss-darwin-arm64: 1.29.3 + lightningcss-darwin-x64: 1.29.3 + lightningcss-freebsd-x64: 1.29.3 + lightningcss-linux-arm-gnueabihf: 1.29.3 + lightningcss-linux-arm64-gnu: 1.29.3 + lightningcss-linux-arm64-musl: 1.29.3 + lightningcss-linux-x64-gnu: 1.29.3 + lightningcss-linux-x64-musl: 1.29.3 + lightningcss-win32-arm64-msvc: 1.29.3 + lightningcss-win32-x64-msvc: 1.29.3 + + lines-and-columns@1.2.4: {} + + lmdb@2.8.5: + dependencies: + msgpackr: 1.11.2 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.1.1 - ordered-binary: 1.5.1 + ordered-binary: 1.5.3 weak-lru-cache: 1.2.2 optionalDependencies: '@lmdb/lmdb-darwin-arm64': 2.8.5 @@ -2209,667 +2807,360 @@ packages: '@lmdb/lmdb-linux-arm64': 2.8.5 '@lmdb/lmdb-linux-x64': 2.8.5 '@lmdb/lmdb-win32-x64': 2.8.5 - dev: true - /local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} + local-pkg@0.5.1: dependencies: - mlly: 1.6.1 - pkg-types: 1.0.3 - dev: true + mlly: 1.7.4 + pkg-types: 1.3.1 - /loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + loupe@2.3.7: dependencies: get-func-name: 2.0.2 - dev: true - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - /magic-string@0.30.8: - resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} - engines: {node: '>=12'} + magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true + '@jridgewell/sourcemap-codec': 1.5.0 - /mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - dev: true - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true + merge-stream@2.0.0: {} - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromatch@4.0.8: dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 - dev: true - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true + mimic-fn@4.0.0: {} - /mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + mlly@1.7.4: dependencies: - acorn: 8.11.3 - pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.5.3 - dev: true + acorn: 8.14.1 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 - /mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - dev: false + mri@1.2.0: {} - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true + ms@2.1.3: {} - /msgpackr-extract@3.0.2: - resolution: {integrity: sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==} - hasBin: true - requiresBuild: true + msgpackr-extract@3.0.3: dependencies: - node-gyp-build-optional-packages: 5.0.7 + node-gyp-build-optional-packages: 5.2.2 optionalDependencies: - '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2 - dev: true + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - /msgpackr@1.10.1: - resolution: {integrity: sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==} + msgpackr@1.11.2: optionalDependencies: - msgpackr-extract: 3.0.2 - dev: true + msgpackr-extract: 3.0.3 - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true + nanoid@3.3.11: {} - /node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - dev: true + node-addon-api@6.1.0: {} - /node-addon-api@7.1.0: - resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} - engines: {node: ^16 || ^18 || >= 20} - dev: true + node-addon-api@7.1.1: {} - /node-gyp-build-optional-packages@5.0.7: - resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==} - hasBin: true - requiresBuild: true - dev: true - optional: true + node-gyp-build-optional-packages@5.1.1: + dependencies: + detect-libc: 2.0.3 - /node-gyp-build-optional-packages@5.1.1: - resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} - hasBin: true + node-gyp-build-optional-packages@5.2.2: dependencies: detect-libc: 2.0.3 - dev: true + optional: true - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: true + node-releases@2.0.19: {} - /npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 - dev: true - - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - dependencies: - boolbase: 1.0.0 - dev: true - /nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - dev: true + nullthrows@1.1.1: {} - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 - dev: true - /ordered-binary@1.5.1: - resolution: {integrity: sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==} - dev: true + ordered-binary@1.5.3: {} - /p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} + p-limit@5.0.0: dependencies: - yocto-queue: 1.0.0 - dev: true + yocto-queue: 1.2.1 - /parcel@2.12.0(typescript@5.4.3): - resolution: {integrity: sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg==} - engines: {node: '>= 12.0.0'} - hasBin: true + parcel@2.14.4(@swc/helpers@0.5.17)(postcss@8.5.3)(typescript@5.8.3): dependencies: - '@parcel/config-default': 2.12.0(@parcel/core@2.12.0)(typescript@5.4.3) - '@parcel/core': 2.12.0 - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0) - '@parcel/logger': 2.12.0 - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0) - '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0) - '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0) - '@parcel/utils': 2.12.0 + '@parcel/config-default': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(postcss@8.5.3)(typescript@5.8.3) + '@parcel/core': 2.14.4(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.14.4 + '@parcel/events': 2.14.4 + '@parcel/feature-flags': 2.14.4 + '@parcel/fs': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/logger': 2.14.4 + '@parcel/package-manager': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) + '@parcel/reporter-cli': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/reporter-dev-server': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/reporter-tracer': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.14.4 chalk: 4.1.2 - commander: 7.2.0 + commander: 12.1.0 get-port: 4.2.0 transitivePeerDependencies: - '@swc/helpers' - cssnano + - napi-wasm - postcss - purgecss - relateurl - srcset + - svgo - terser - typescript - uncss - dev: true - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + path-key@3.1.1: {} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true + path-key@4.0.0: {} - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true + pathe@1.1.2: {} - /pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - dev: true + pathe@2.0.3: {} - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true + pathval@1.1.1: {} - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true + picocolors@1.1.1: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true + picomatch@2.3.1: {} - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + pkg-types@1.3.1: dependencies: - jsonc-parser: 3.2.1 - mlly: 1.6.1 - pathe: 1.1.2 - dev: true + confbox: 0.1.8 + mlly: 1.7.4 + pathe: 2.0.3 - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: true + postcss-value-parser@4.2.0: {} - /postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.5.3: dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - dev: true + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 - /posthtml-parser@0.10.2: - resolution: {integrity: sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==} - engines: {node: '>=12'} + posthtml-parser@0.11.0: dependencies: htmlparser2: 7.2.0 - dev: true - /posthtml-parser@0.11.0: - resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} - engines: {node: '>=12'} + posthtml-parser@0.12.1: dependencies: - htmlparser2: 7.2.0 - dev: true + htmlparser2: 9.1.0 - /posthtml-render@3.0.0: - resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==} - engines: {node: '>=12'} + posthtml-render@3.0.0: dependencies: is-json: 2.0.1 - dev: true - /posthtml@0.16.6: - resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==} - engines: {node: '>=12.0.0'} + posthtml@0.16.6: dependencies: posthtml-parser: 0.11.0 posthtml-render: 3.0.0 - dev: true - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true + react-is: 18.3.1 - /react-error-overlay@6.0.9: - resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} - dev: true + react-is@18.3.1: {} - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true - - /react-refresh@0.9.0: - resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} - engines: {node: '>=0.10.0'} - dev: true + react-refresh@0.16.0: {} - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: true + regenerator-runtime@0.14.1: {} - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true + resolve-from@4.0.0: {} - /rollup@4.14.0: - resolution: {integrity: sha512-Qe7w62TyawbDzB4yt32R0+AbIo6m1/sqO7UPzFS8Z/ksL5mrfhA0v4CavfdmFav3D+ub4QeAgsGEe84DoWe/nQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + rollup@4.40.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.14.0 - '@rollup/rollup-android-arm64': 4.14.0 - '@rollup/rollup-darwin-arm64': 4.14.0 - '@rollup/rollup-darwin-x64': 4.14.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.14.0 - '@rollup/rollup-linux-arm64-gnu': 4.14.0 - '@rollup/rollup-linux-arm64-musl': 4.14.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.14.0 - '@rollup/rollup-linux-riscv64-gnu': 4.14.0 - '@rollup/rollup-linux-s390x-gnu': 4.14.0 - '@rollup/rollup-linux-x64-gnu': 4.14.0 - '@rollup/rollup-linux-x64-musl': 4.14.0 - '@rollup/rollup-win32-arm64-msvc': 4.14.0 - '@rollup/rollup-win32-ia32-msvc': 4.14.0 - '@rollup/rollup-win32-x64-msvc': 4.14.0 + '@rollup/rollup-android-arm-eabi': 4.40.0 + '@rollup/rollup-android-arm64': 4.40.0 + '@rollup/rollup-darwin-arm64': 4.40.0 + '@rollup/rollup-darwin-x64': 4.40.0 + '@rollup/rollup-freebsd-arm64': 4.40.0 + '@rollup/rollup-freebsd-x64': 4.40.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.0 + '@rollup/rollup-linux-arm-musleabihf': 4.40.0 + '@rollup/rollup-linux-arm64-gnu': 4.40.0 + '@rollup/rollup-linux-arm64-musl': 4.40.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-musl': 4.40.0 + '@rollup/rollup-linux-s390x-gnu': 4.40.0 + '@rollup/rollup-linux-x64-gnu': 4.40.0 + '@rollup/rollup-linux-x64-musl': 4.40.0 + '@rollup/rollup-win32-arm64-msvc': 4.40.0 + '@rollup/rollup-win32-ia32-msvc': 4.40.0 + '@rollup/rollup-win32-x64-msvc': 4.40.0 fsevents: 2.3.3 - dev: true - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true + safe-buffer@5.2.1: {} - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true + semver@7.7.1: {} - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true + shebang-regex@3.0.0: {} - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: true + siginfo@2.0.0: {} - /source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - dev: true + signal-exit@4.1.0: {} - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true + source-map-js@1.2.1: {} - /spawn-please@3.0.0: - resolution: {integrity: sha512-XFHEGgEG9R/MCypDDQVWoSSQoGAz5LFYcGoFpdYvnqgYDumHvapPDj54C5Xv7tqTkzEC17AY7Iz90KgrDfj7Gg==} - engines: {node: '>=14'} + spawn-please@3.0.0: dependencies: - cross-spawn: 7.0.3 - dev: false - - /srcset@4.0.0: - resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} - engines: {node: '>=12'} - dev: true - - /stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - dev: true + cross-spawn: 7.0.6 - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true + srcset@4.0.0: {} - /std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - dev: true + stackback@0.0.2: {} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true + std-env@3.9.0: {} - /strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - dependencies: - js-tokens: 9.0.0 - dev: true + strip-final-newline@3.0.0: {} - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + strip-literal@2.1.1: dependencies: - has-flag: 3.0.0 - dev: true + js-tokens: 9.0.1 - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - dev: true - - /svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.0.0 - stable: 0.1.8 - dev: true - /term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: true + term-size@2.2.1: {} - /timsort@0.3.0: - resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} - dev: true + timsort@0.3.0: {} - /tinybench@2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} - dev: true + tinybench@2.9.0: {} - /tinypool@0.8.3: - resolution: {integrity: sha512-Ud7uepAklqRH1bvwy22ynrliC7Dljz7Tm8M/0RBUW+YRa4YHhZ6e4PpgE+fu1zr/WqB1kbeuVrdfeuyIBpy4tw==} - engines: {node: '>=14.0.0'} - dev: true + tinypool@0.8.4: {} - /tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - dev: true + tinyspy@2.2.1: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - dev: true - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true + tslib@2.8.1: {} - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true + type-detect@4.1.0: {} - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /typescript@5.4.3: - resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} - engines: {node: '>=14.17'} - hasBin: true - dev: true + typescript@5.8.3: {} - /ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - dev: true + ufo@1.6.1: {} - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: true + undici-types@6.19.8: {} - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.1.3(browserslist@4.24.4): dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 - dev: true + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 - /utility-types@3.11.0: - resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} - engines: {node: '>= 4'} - dev: true + utility-types@3.11.0: {} - /vite-node@1.4.0(@types/node@20.11.30): - resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true + vite-node@1.6.1(@types/node@20.17.30)(lightningcss@1.29.3): dependencies: cac: 6.7.14 - debug: 4.3.4 + debug: 4.4.0 pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.2.8(@types/node@20.11.30) + picocolors: 1.1.1 + vite: 5.4.18(@types/node@20.17.30)(lightningcss@1.29.3) transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser - dev: true - /vite@5.2.8(@types/node@20.11.30): - resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + vite@5.4.18(@types/node@20.17.30)(lightningcss@1.29.3): dependencies: - '@types/node': 20.11.30 - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.14.0 + esbuild: 0.21.5 + postcss: 8.5.3 + rollup: 4.40.0 optionalDependencies: + '@types/node': 20.17.30 fsevents: 2.3.3 - dev: true - - /vitest@1.4.0(@types/node@20.11.30): - resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.4.0 - '@vitest/ui': 1.4.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - dependencies: - '@types/node': 20.11.30 - '@vitest/expect': 1.4.0 - '@vitest/runner': 1.4.0 - '@vitest/snapshot': 1.4.0 - '@vitest/spy': 1.4.0 - '@vitest/utils': 1.4.0 - acorn-walk: 8.3.2 - chai: 4.4.1 - debug: 4.3.4 + lightningcss: 1.29.3 + + vitest@1.6.1(@types/node@20.17.30)(lightningcss@1.29.3): + dependencies: + '@vitest/expect': 1.6.1 + '@vitest/runner': 1.6.1 + '@vitest/snapshot': 1.6.1 + '@vitest/spy': 1.6.1 + '@vitest/utils': 1.6.1 + acorn-walk: 8.3.4 + chai: 4.5.0 + debug: 4.4.0 execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.8 + local-pkg: 0.5.1 + magic-string: 0.30.17 pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.6.0 - tinypool: 0.8.3 - vite: 5.2.8(@types/node@20.11.30) - vite-node: 1.4.0(@types/node@20.11.30) - why-is-node-running: 2.2.2 + picocolors: 1.1.1 + std-env: 3.9.0 + strip-literal: 2.1.1 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.18(@types/node@20.17.30)(lightningcss@1.29.3) + vite-node: 1.6.1(@types/node@20.17.30)(lightningcss@1.29.3) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 20.17.30 transitivePeerDependencies: - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser - dev: true - /weak-lru-cache@1.2.2: - resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} - dev: true + vscode-languageserver-textdocument@1.0.12: {} - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + vscode-languageserver-types@3.17.5: {} + + weak-lru-cache@1.2.2: {} + + which@2.0.2: dependencies: isexe: 2.0.0 - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - dev: true - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true + yocto-queue@1.2.1: {} diff --git a/src/opts.ts b/src/opts.ts index 1fadcb9..59ad710 100644 --- a/src/opts.ts +++ b/src/opts.ts @@ -1,9 +1,12 @@ import mri from 'mri'; +import fs from 'fs'; import { getInput, warning } from '@actions/core'; +import { DockerfileParser, ModifiableInstruction } from 'dockerfile-ast'; export type Opts = { "extract": boolean "cache-map": string + "dockerfile": string "scratch-dir": string "skip-extraction": boolean "utility-image": string @@ -19,6 +22,7 @@ export function parseOpts(args: string[]): mri.Argv { const opts = mri(args, { default: { "cache-map": getInput("cache-map") || "{}", + "dockerfile": getInput("dockerfile") || "Dockerfile", "scratch-dir": getInput("scratch-dir") || "scratch", "skip-extraction": (getInput("skip-extraction") || "false") === "true", "extract": process.env[`STATE_POST`] !== undefined, @@ -26,7 +30,7 @@ export function parseOpts(args: string[]): mri.Argv { "builder": getInput("builder") || "default", "help": false, }, - string: ["cache-map", "scratch-dir", "cache-source", "cache-target", "utility-image", "builder"], + string: ["cache-map", "dockerfile", "scratch-dir", "cache-source", "cache-target", "utility-image", "builder"], boolean: ["skip-extraction", "help", "extract"], alias: { "help": ["h"], @@ -51,6 +55,7 @@ Save 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms Options: --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step) --cache-map The map of actions source paths to container destination paths or mount arguments + --dockerfile The Dockerfile to use for the auto-discovery of cache-map. Default: 'Dockerfile' --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch' --skip-extraction Skip the extraction of the cache from the docker container --utility-image The container image to use for injecting and extracting the cache. Default: 'ghcr.io/containerd/busybox:latest' @@ -67,9 +72,49 @@ export type ToStringable = { export type CacheOptions = TargetPath | { target: TargetPath } & Record export type CacheMap = Record +function getCacheMapFromDockerfile(dockerfilePath: string): CacheMap { + const dockerfileContent = fs.readFileSync(dockerfilePath, "utf-8"); + const dockerfile = DockerfileParser.parse(dockerfileContent); + + const cacheMap: CacheMap = {}; + + const runInstructions = dockerfile.getInstructions().filter(i => i.getKeyword() == 'RUN') as Array; + for (const run of runInstructions) { + for (const flag of run.getFlags()) { + if (flag.getName() == 'mount' && flag.getOption('type')?.getValue() == 'cache') { + // Extract the `id` flag which defaults to `target` when `id` is not set + // https://docs.docker.com/reference/dockerfile/#run---mounttypecache + const id = flag.getOption('id')?.getValue() || flag.getOption('target')?.getValue(); + if (id == null) { + throw new Error('cache mount must define id or target: ' + flag.toString() + ' in ' + run.toString()); + } + + // The target in this action does not matter as long as it is + // different than /var/dance-cache of course + const target = "/var/cache-target"; + + cacheMap[id] = { + id, + target, + }; + } + } + } + + return cacheMap; +} + export function getCacheMap(opts: Opts): CacheMap { try { - return JSON.parse(opts["cache-map"]) as CacheMap; + const cacheMap = JSON.parse(opts["cache-map"]) as CacheMap; + if (Object.keys(cacheMap).length !== 0) { + return cacheMap; + } + + console.log(`No cache map provided. Trying to parse the Dockerfile to find the cache mount instructions...`); + const cacheMapFromDockerfile = getCacheMapFromDockerfile(opts["dockerfile"]); + console.log(`Cache map parsed from Dockerfile: ${JSON.stringify(cacheMapFromDockerfile)}`); + return cacheMapFromDockerfile; } catch (e) { throw new Error(`Failed to parse cache map. Expected JSON, got:\n${opts["cache-map"]}\n${e}`); } diff --git a/tests/opts.test.ts b/tests/opts.test.ts index dc644cd..ca783ad 100644 --- a/tests/opts.test.ts +++ b/tests/opts.test.ts @@ -1,11 +1,13 @@ import { expect, test } from 'vitest' import { getCacheMap, getTargetPath, getMountArgsString, parseOpts, getUID, getGID } from '../src/opts.js' +import fs from 'fs' test('parseOpts with no arguments', () => { const opts = parseOpts([]) expect(opts).toEqual({ "_": [], "cache-map": "{}", + "dockerfile": "Dockerfile", "scratch-dir": "scratch", "skip-extraction": false, "extract": false, @@ -21,6 +23,7 @@ test('parseOpts with cache-map argument', () => { expect(opts).toEqual({ "_": [], "cache-map": '{"key": "value"}', + "dockerfile": "Dockerfile", "scratch-dir": "scratch", "skip-extraction": false, "extract": false, @@ -36,6 +39,7 @@ test('parseOpts with deprecated cache-source and cache-target arguments', () => expect(opts).toEqual({ "_": [], "cache-map": '{"source":"target"}', + "dockerfile": "Dockerfile", "scratch-dir": "scratch", "skip-extraction": false, "extract": false, @@ -53,6 +57,7 @@ test('parseOpts with utility-image argument', () => { expect(opts).toEqual({ "_": [], "cache-map": '{}', + "dockerfile": "Dockerfile", "scratch-dir": "scratch", "skip-extraction": false, "extract": false, @@ -68,6 +73,7 @@ test('parseOpts with builder argument', () => { expect(opts).toEqual({ "_": [], "cache-map": '{}', + "dockerfile": "Dockerfile", "scratch-dir": "scratch", "skip-extraction": false, "extract": false, @@ -78,11 +84,28 @@ test('parseOpts with builder argument', () => { }) }) +test('parseOpts with dockerfile argument', () => { + const opts = parseOpts(['--dockerfile', 'Dockerfile.custom']) + expect(opts).toEqual({ + "_": [], + "cache-map": "{}", + "dockerfile": "Dockerfile.custom", + "scratch-dir": "scratch", + "skip-extraction": false, + "extract": false, + "h": false, + "help": false, + "utility-image": "ghcr.io/containerd/busybox:latest", + "builder": "default" + }) +}) + test('parseOpts with help argument', () => { const opts = parseOpts(['-h']) expect(opts).toEqual({ "_": [], "cache-map": "{}", + "dockerfile": "Dockerfile", "scratch-dir": "scratch", "skip-extraction": false, "extract": false, @@ -99,6 +122,66 @@ test('getCacheMap', () => { expect(cacheMap).toEqual({ key: 'value' }) }) +test('getCacheMap with both cache-map and dockerfile specified', () => { + const opts = parseOpts(['--cache-map', '{"key": "value"}', '--dockerfile', 'Dockerfile.custom']) + const cacheMap = getCacheMap(opts) + expect(cacheMap).toEqual({ key: 'value' }) +}) + +test('getCacheMapFromDockerfile', () => { + const tmpDir = fs.mkdtempSync('/tmp/dockerfile-test-'); + const dockerfilePath = `${tmpDir}/Dockerfile` + fs.writeFileSync(dockerfilePath, ` +FROM alpine:latest AS builder + +# Target absolute path, no id +RUN --mount=type=cache,target=/tmp/cache \ + echo "Hello, World!" > /tmp/cache/hello.txt + +# Target relative path with workdir, no id +WORKDIR /app +RUN --mount=type=cache,target=cache1 \ + echo "Hello, World!" > cache/hello.txt + +# Multi-stage build +FROM alpine:latest + +# Target absolute path with id +RUN --mount=type=cache,id=cache2,target=/tmp/cache \ + echo "Hello, World!" > /tmp/cache/hello.txt + +# Target relative path with workdir and id +WORKDIR /app2 +RUN --mount=type=cache,id=cache3,target=cache \ + echo "Hello, World!" > cache/hello.txt +`); + + const opts = parseOpts(['--dockerfile', dockerfilePath]) + const cacheMap = getCacheMap(opts) + fs.rmSync(tmpDir, { recursive: true }) + + expect(cacheMap).toEqual( + { + '/tmp/cache': { + 'id': '/tmp/cache', + 'target': '/var/cache-target' + }, + 'cache1': { + 'id': 'cache1', + 'target': '/var/cache-target' + }, + 'cache2': { + 'id': 'cache2', + 'target': '/var/cache-target' + }, + 'cache3': { + 'id': 'cache3', + 'target': '/var/cache-target' + } + } + ) +}) + test('getCacheMap with invalid JSON', () => { const opts = parseOpts(['--cache-map', 'invalid']) expect(() => getCacheMap(opts)).toThrowError()