diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index bd34117..164c000 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -18,9 +18,7 @@ jobs: with: node-version: 20 - - uses: pnpm/action-setup@v3 - with: - version: 8 + - uses: pnpm/action-setup@v4 - name: Install and Build run: pnpm i diff --git a/.gitignore b/.gitignore index 59dc1f7..0288a7d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ node_modules/ .parcel-cache/ +buildstamp +*.inject diff --git a/dist/index.js b/dist/index.js index 7d2cfd2..0c04950 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,6561 +1,10 @@ -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"; -import $evV72$child_process, {spawn as $evV72$spawn, spawnSync as $evV72$spawnSync} from "child_process"; - - -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} - - var $parcel$global = globalThis; - -var $parcel$modules = {}; -var $parcel$inits = {}; - -var parcelRequire = $parcel$global["parcelRequire86b4"]; - -if (parcelRequire == null) { - parcelRequire = function(id) { - if (id in $parcel$modules) { - return $parcel$modules[id].exports; - } - if (id in $parcel$inits) { - var init = $parcel$inits[id]; - delete $parcel$inits[id]; - var module = {id: id, exports: {}}; - $parcel$modules[id] = module; - init.call(module.exports, module, module.exports); - return module.exports; - } - var err = new Error("Cannot find module '" + id + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - }; - - parcelRequire.register = function register(id, init) { - $parcel$inits[id] = init; - }; - - $parcel$global["parcelRequire86b4"] = parcelRequire; -} - -var parcelRegister = parcelRequire.register; -parcelRegister("dE8Bn", function(module, exports) { -module.exports = $9ef5aef4681a6fb1$var$isexe; -$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; - for(var i = 0; i < pathext.length; i++){ - var p = pathext[i].toLowerCase(); - if (p && path.substr(-p.length).toLowerCase() === p) return true; - } - return false; -} -function $9ef5aef4681a6fb1$var$checkStat(stat, path, options) { - if (!stat.isSymbolicLink() && !stat.isFile()) return false; - return $9ef5aef4681a6fb1$var$checkPathExt(path, options); -} -function $9ef5aef4681a6fb1$var$isexe(path, options, cb) { - $evV72$stat(path, function(er, stat) { - cb(er, er ? false : $9ef5aef4681a6fb1$var$checkStat(stat, path, options)); - }); -} -function $9ef5aef4681a6fb1$var$sync(path, options) { - return $9ef5aef4681a6fb1$var$checkStat($evV72$statSync(path), path, options); -} - -}); - -parcelRegister("5dXTc", function(module, exports) { -module.exports = $3cdc9f651a760b03$var$isexe; -$3cdc9f651a760b03$var$isexe.sync = $3cdc9f651a760b03$var$sync; - -function $3cdc9f651a760b03$var$isexe(path, options, cb) { - $evV72$stat(path, function(er, stat) { - cb(er, er ? false : $3cdc9f651a760b03$var$checkStat(stat, options)); - }); -} -function $3cdc9f651a760b03$var$sync(path, options) { - return $3cdc9f651a760b03$var$checkStat($evV72$statSync(path), options); -} -function $3cdc9f651a760b03$var$checkStat(stat, options) { - return stat.isFile() && $3cdc9f651a760b03$var$checkMode(stat, options); -} -function $3cdc9f651a760b03$var$checkMode(stat, options) { - var mod = stat.mode; - var uid = stat.uid; - 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 ug = u | g; - var ret = mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0; - return ret; -} - -}); - - - - - -function $ec42a3295e12ea98$var$toArr(any) { - return any == null ? [] : Array.isArray(any) ? any : [ - 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; - out[key] = old == null ? nxt : Array.isArray(old) ? old.concat(nxt) : [ - old, - nxt - ]; -} -function $ec42a3295e12ea98$export$2e2bcd8739ae039(args, opts) { - args = args || []; - opts = opts || {}; - var k, arr, arg, name, val, out = { - _: [] - }; - var i = 0, j = 0, idx = 0, len = args.length; - const alibi = opts.alias !== void 0; - const strict = opts.unknown !== void 0; - const defaults = opts.default !== void 0; - opts.alias = opts.alias || {}; - opts.string = $ec42a3295e12ea98$var$toArr(opts.string); - opts.boolean = $ec42a3295e12ea98$var$toArr(opts.boolean); - if (alibi) for(k in opts.alias){ - arr = opts.alias[k] = $ec42a3295e12ea98$var$toArr(opts.alias[k]); - for(i = 0; i < arr.length; i++)(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1); - } - for(i = opts.boolean.length; i-- > 0;){ - arr = opts.alias[opts.boolean[i]] || []; - for(j = arr.length; j-- > 0;)opts.boolean.push(arr[j]); - } - for(i = opts.string.length; i-- > 0;){ - arr = opts.alias[opts.string[i]] || []; - for(j = arr.length; j-- > 0;)opts.string.push(arr[j]); - } - if (defaults) for(k in opts.default){ - name = typeof opts.default[k]; - arr = opts.alias[k] = opts.alias[k] || []; - if (opts[name] !== void 0) { - opts[name].push(k); - for(i = 0; i < arr.length; i++)opts[name].push(arr[i]); - } - } - const keys = strict ? Object.keys(opts.alias) : []; - for(i = 0; i < len; i++){ - arg = args[i]; - if (arg === '--') { - out._ = out._.concat(args.slice(++i)); - break; - } - for(j = 0; j < arg.length; j++){ - if (arg.charCodeAt(j) !== 45) break; // "-" - } - if (j === 0) out._.push(arg); - 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; - } else { - for(idx = j + 1; idx < arg.length; idx++){ - 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]; - 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); - $ec42a3295e12ea98$var$toVal(out, name, idx + 1 < arr.length || val, opts); - } - } - } - if (defaults) { - for(k in opts.default)if (out[k] === void 0) out[k] = opts.default[k]; - } - if (alibi) for(k in out){ - arr = opts.alias[k] || []; - while(arr.length > 0)out[arr.shift()] = out[k]; - } - return out; -} - - - -var $bbb9dac42384d004$exports = {}; -"use strict"; -var $bbb9dac42384d004$var$__createBinding = $bbb9dac42384d004$exports && $bbb9dac42384d004$exports.__createBinding || (Object.create ? function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function() { - return m[k]; - } - }); -} : function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -}); -var $bbb9dac42384d004$var$__setModuleDefault = $bbb9dac42384d004$exports && $bbb9dac42384d004$exports.__setModuleDefault || (Object.create ? function(o, v) { - Object.defineProperty(o, "default", { - enumerable: true, - value: v - }); -} : function(o, v) { - o["default"] = v; -}); -var $bbb9dac42384d004$var$__importStar = $bbb9dac42384d004$exports && $bbb9dac42384d004$exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for(var k in mod)if (k !== "default" && Object.hasOwnProperty.call(mod, k)) $bbb9dac42384d004$var$__createBinding(result, mod, k); - } - $bbb9dac42384d004$var$__setModuleDefault(result, mod); - return result; -}; -var $bbb9dac42384d004$var$__awaiter = $bbb9dac42384d004$exports && $bbb9dac42384d004$exports.__awaiter || function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty($bbb9dac42384d004$exports, "__esModule", { - value: true -}); -$bbb9dac42384d004$exports.getState = $bbb9dac42384d004$exports.saveState = $bbb9dac42384d004$exports.group = $bbb9dac42384d004$exports.endGroup = $bbb9dac42384d004$exports.startGroup = $bbb9dac42384d004$exports.info = $bbb9dac42384d004$exports.notice = $bbb9dac42384d004$exports.warning = $bbb9dac42384d004$exports.error = $bbb9dac42384d004$exports.debug = $bbb9dac42384d004$exports.isDebug = $bbb9dac42384d004$exports.setFailed = $bbb9dac42384d004$exports.setCommandEcho = $bbb9dac42384d004$exports.setOutput = $bbb9dac42384d004$exports.getBooleanInput = $bbb9dac42384d004$exports.getMultilineInput = $bbb9dac42384d004$exports.getInput = $bbb9dac42384d004$exports.addPath = $bbb9dac42384d004$exports.setSecret = $bbb9dac42384d004$exports.exportVariable = $bbb9dac42384d004$exports.ExitCode = void 0; -var $6aa988ea1669fe85$exports = {}; -"use strict"; -var $6aa988ea1669fe85$var$__createBinding = $6aa988ea1669fe85$exports && $6aa988ea1669fe85$exports.__createBinding || (Object.create ? function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function() { - return m[k]; - } - }); -} : function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -}); -var $6aa988ea1669fe85$var$__setModuleDefault = $6aa988ea1669fe85$exports && $6aa988ea1669fe85$exports.__setModuleDefault || (Object.create ? function(o, v) { - Object.defineProperty(o, "default", { - enumerable: true, - value: v - }); -} : function(o, v) { - o["default"] = v; -}); -var $6aa988ea1669fe85$var$__importStar = $6aa988ea1669fe85$exports && $6aa988ea1669fe85$exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for(var k in mod)if (k !== "default" && Object.hasOwnProperty.call(mod, k)) $6aa988ea1669fe85$var$__createBinding(result, mod, k); - } - $6aa988ea1669fe85$var$__setModuleDefault(result, mod); - return result; -}; -Object.defineProperty($6aa988ea1669fe85$exports, "__esModule", { - value: true -}); -$6aa988ea1669fe85$exports.issue = $6aa988ea1669fe85$exports.issueCommand = void 0; - -const $6aa988ea1669fe85$var$os = $6aa988ea1669fe85$var$__importStar($evV72$os1); -var $1f87556d0f647bcd$exports = {}; -"use strict"; -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ Object.defineProperty($1f87556d0f647bcd$exports, "__esModule", { - value: true -}); -$1f87556d0f647bcd$exports.toCommandProperties = $1f87556d0f647bcd$exports.toCommandValue = void 0; -/** - * 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; - return JSON.stringify(input); -} -$1f87556d0f647bcd$exports.toCommandValue = $1f87556d0f647bcd$var$toCommandValue; -/** - * - * @param annotationProperties - * @returns The command properties to send with the actual annotation command - * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 - */ function $1f87556d0f647bcd$var$toCommandProperties(annotationProperties) { - if (!Object.keys(annotationProperties).length) return {}; - return { - title: annotationProperties.title, - line: annotationProperties.startLine, - endLine: annotationProperties.endLine, - col: annotationProperties.startColumn, - endColumn: annotationProperties.endColumn - }; -} -$1f87556d0f647bcd$exports.toCommandProperties = $1f87556d0f647bcd$var$toCommandProperties; - - -/** - * Commands - * - * Command Format: - * ::name key=value,key=value::message - * - * Examples: - * ::warning::This is the message - * ::set-env name=MY_VAR::some value - */ function $6aa988ea1669fe85$var$issueCommand(command, properties, message) { - const cmd = new $6aa988ea1669fe85$var$Command(command, properties, message); - process.stdout.write(cmd.toString() + $6aa988ea1669fe85$var$os.EOL); -} -$6aa988ea1669fe85$exports.issueCommand = $6aa988ea1669fe85$var$issueCommand; -function $6aa988ea1669fe85$var$issue(name, message = '') { - $6aa988ea1669fe85$var$issueCommand(name, {}, message); -} -$6aa988ea1669fe85$exports.issue = $6aa988ea1669fe85$var$issue; -const $6aa988ea1669fe85$var$CMD_STRING = '::'; -class $6aa988ea1669fe85$var$Command { - constructor(command, properties, message){ - if (!command) command = 'missing.command'; - this.command = command; - this.properties = properties; - this.message = message; - } - toString() { - let cmdStr = $6aa988ea1669fe85$var$CMD_STRING + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - 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 += ','; - cmdStr += `${key}=${$6aa988ea1669fe85$var$escapeProperty(val)}`; - } - } - } - cmdStr += `${$6aa988ea1669fe85$var$CMD_STRING}${$6aa988ea1669fe85$var$escapeData(this.message)}`; - return cmdStr; - } -} -function $6aa988ea1669fe85$var$escapeData(s) { - 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'); -} - - -var $71d1c579b85cee7b$exports = {}; -"use strict"; -// For internal use, subject to change. -var $71d1c579b85cee7b$var$__createBinding = $71d1c579b85cee7b$exports && $71d1c579b85cee7b$exports.__createBinding || (Object.create ? function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function() { - return m[k]; - } - }); -} : function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -}); -var $71d1c579b85cee7b$var$__setModuleDefault = $71d1c579b85cee7b$exports && $71d1c579b85cee7b$exports.__setModuleDefault || (Object.create ? function(o, v) { - Object.defineProperty(o, "default", { - enumerable: true, - value: v - }); -} : function(o, v) { - o["default"] = v; -}); -var $71d1c579b85cee7b$var$__importStar = $71d1c579b85cee7b$exports && $71d1c579b85cee7b$exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for(var k in mod)if (k !== "default" && Object.hasOwnProperty.call(mod, k)) $71d1c579b85cee7b$var$__createBinding(result, mod, k); - } - $71d1c579b85cee7b$var$__setModuleDefault(result, mod); - return result; -}; -Object.defineProperty($71d1c579b85cee7b$exports, "__esModule", { - value: true -}); -$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$fs1); - -const $71d1c579b85cee7b$var$os = $71d1c579b85cee7b$var$__importStar($evV72$os1); - -function $71d1c579b85cee7b$var$issueCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - 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' - }); -} -$71d1c579b85cee7b$exports.issueCommand = $71d1c579b85cee7b$var$issueCommand; - - - - -const $bbb9dac42384d004$var$os = $bbb9dac42384d004$var$__importStar($evV72$os1); - -const $bbb9dac42384d004$var$path = $bbb9dac42384d004$var$__importStar($evV72$path1); -/** - * The code to exit an action - */ var $bbb9dac42384d004$var$ExitCode; -(function(ExitCode) { - /** - * A code indicating that the action was successful - */ ExitCode[ExitCode["Success"] = 0] = "Success"; - /** - * A code indicating that the action was a failure - */ ExitCode[ExitCode["Failure"] = 1] = "Failure"; -})($bbb9dac42384d004$var$ExitCode = $bbb9dac42384d004$exports.ExitCode || ($bbb9dac42384d004$exports.ExitCode = {})); -//----------------------------------------------------------------------- -// Variables -//----------------------------------------------------------------------- -/** - * Sets env variable for this action and future actions in the job - * @param name the name of the variable to set - * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify - */ // eslint-disable-next-line @typescript-eslint/no-explicit-any -function $bbb9dac42384d004$var$exportVariable(name, val) { - const convertedVal = $1f87556d0f647bcd$exports.toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env['GITHUB_ENV'] || ''; - if (filePath) { - 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', { - name: name - }, convertedVal); -} -$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); -} -$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']}`; -} -$bbb9dac42384d004$exports.addPath = $bbb9dac42384d004$var$addPath; -/** - * Gets the value of an input. - * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. - * Returns an empty string if the value is not defined. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string - */ function $bbb9dac42384d004$var$getInput(name, options) { - 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(); -} -$bbb9dac42384d004$exports.getInput = $bbb9dac42384d004$var$getInput; -/** - * Gets the values of an multiline input. Each value is also trimmed. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string[] - * - */ function $bbb9dac42384d004$var$getMultilineInput(name, options) { - const inputs = $bbb9dac42384d004$var$getInput(name, options).split('\n').filter((x)=>x !== ''); - return inputs; -} -$bbb9dac42384d004$exports.getMultilineInput = $bbb9dac42384d004$var$getMultilineInput; -/** - * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. - * Support boolean input list: `true | True | TRUE | false | False | FALSE` . - * The return value is also in boolean type. - * ref: https://yaml.org/spec/1.2/spec.html#id2804923 - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns boolean - */ function $bbb9dac42384d004$var$getBooleanInput(name, options) { - const trueValue = [ - 'true', - 'True', - 'TRUE' - ]; - const falseValue = [ - 'false', - 'False', - 'FALSE' - ]; - const val = $bbb9dac42384d004$var$getInput(name, options); - if (trueValue.includes(val)) return true; - if (falseValue.includes(val)) return false; - throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); -} -$bbb9dac42384d004$exports.getBooleanInput = $bbb9dac42384d004$var$getBooleanInput; -/** - * Sets the value of an output. - * - * @param name name of the output to set - * @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$setOutput(name, value) { - process.stdout.write($bbb9dac42384d004$var$os.EOL); - $6aa988ea1669fe85$exports.issueCommand('set-output', { - name: name - }, value); -} -$bbb9dac42384d004$exports.setOutput = $bbb9dac42384d004$var$setOutput; -/** - * Enables or disables the echoing of commands into stdout for the rest of the step. - * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. - * - */ function $bbb9dac42384d004$var$setCommandEcho(enabled) { - $6aa988ea1669fe85$exports.issue('echo', enabled ? 'on' : 'off'); -} -$bbb9dac42384d004$exports.setCommandEcho = $bbb9dac42384d004$var$setCommandEcho; -//----------------------------------------------------------------------- -// Results -//----------------------------------------------------------------------- -/** - * Sets the action status to failed. - * When the action exits it will be with an exit code of 1 - * @param message add error issue message - */ function $bbb9dac42384d004$var$setFailed(message) { - process.exitCode = $bbb9dac42384d004$var$ExitCode.Failure; - $bbb9dac42384d004$var$error(message); -} -$bbb9dac42384d004$exports.setFailed = $bbb9dac42384d004$var$setFailed; -//----------------------------------------------------------------------- -// Logging Commands -//----------------------------------------------------------------------- -/** - * Gets whether Actions Step Debug is on or not - */ function $bbb9dac42384d004$var$isDebug() { - 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); -} -$bbb9dac42384d004$exports.debug = $bbb9dac42384d004$var$debug; -/** - * Adds an error issue - * @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); -} -$bbb9dac42384d004$exports.error = $bbb9dac42384d004$var$error; -/** - * Adds a warning issue - * @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); -} -$bbb9dac42384d004$exports.warning = $bbb9dac42384d004$var$warning; -/** - * Adds a notice issue - * @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); -} -$bbb9dac42384d004$exports.notice = $bbb9dac42384d004$var$notice; -/** - * Writes info to log with console.log. - * @param message info message - */ function $bbb9dac42384d004$var$info(message) { - process.stdout.write(message + $bbb9dac42384d004$var$os.EOL); -} -$bbb9dac42384d004$exports.info = $bbb9dac42384d004$var$info; -/** - * Begin an output group. - * - * Output until the next `groupEnd` will be foldable in this group - * - * @param name The name of the output group - */ function $bbb9dac42384d004$var$startGroup(name) { - $6aa988ea1669fe85$exports.issue('group', name); -} -$bbb9dac42384d004$exports.startGroup = $bbb9dac42384d004$var$startGroup; -/** - * End an output group. - */ function $bbb9dac42384d004$var$endGroup() { - $6aa988ea1669fe85$exports.issue('endgroup'); -} -$bbb9dac42384d004$exports.endGroup = $bbb9dac42384d004$var$endGroup; -/** - * Wrap an asynchronous function call in a group. - * - * Returns the same type as the function itself. - * - * @param name The name of the group - * @param fn The function to wrap in the group - */ function $bbb9dac42384d004$var$group(name, fn) { - return $bbb9dac42384d004$var$__awaiter(this, void 0, void 0, function*() { - $bbb9dac42384d004$var$startGroup(name); - let result; - try { - result = yield fn(); - } finally{ - $bbb9dac42384d004$var$endGroup(); - } - return result; - }); -} -$bbb9dac42384d004$exports.group = $bbb9dac42384d004$var$group; -//----------------------------------------------------------------------- -// Wrapper action state -//----------------------------------------------------------------------- -/** - * Saves state for current action, the state can only be retrieved by this action's post job execution. - * - * @param name name of the state to store - * @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', { - name: name - }, value); -} -$bbb9dac42384d004$exports.saveState = $bbb9dac42384d004$var$saveState; -/** - * Gets the value of an state set by this action's main execution. - * - * @param name name of the state to get - * @returns string - */ function $bbb9dac42384d004$var$getState(name) { - return process.env[`STATE_${name}`] || ''; -} -$bbb9dac42384d004$exports.getState = $bbb9dac42384d004$var$getState; - - -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; - } - toString() { - return this.value; - } - getRange() { - return this.range; - } - getValue() { - return this.value; - } - 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; - } - 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; - } -} -$fd8464c2f2e17cdd$exports.Argument = $fd8464c2f2e17cdd$var$Argument; - - -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; - -class $4d211a562ff7ccb2$var$JSONArgument extends $fd8464c2f2e17cdd$exports.Argument { - constructor(value, range, jsonRange){ - super(value, range); - this.jsonRange = jsonRange; - } - getJSONRange() { - return this.jsonRange; - } - getJSONValue() { - let value = super.getValue(); - value = value.substring(1, value.length - 1); - return value; - } -} -$4d211a562ff7ccb2$exports.JSONArgument = $4d211a562ff7ccb2$var$JSONArgument; - - -Object.defineProperty($54b0c2f7fc5ba86a$exports, "JSONArgument", { - enumerable: true, - get: function() { - return $4d211a562ff7ccb2$exports.JSONArgument; - } -}); -var $56b05761038f14db$exports = {}; -"use strict"; -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] +import*as e from"fs";import*as t from"os";import*as n from"path";import*as r from"http";import*as i from"https";import*as s from"net";import*as a from"tls";import*as o from"events";import*as c from"assert";import*as u from"util";import*as l from"child_process";!function(e,t,n,r,i,s,a,o){var c="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},u="function"==typeof c[r]&&c[r],l=u.i||{},d=u.cache||{},f="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function g(t,n){if(!d[t]){if(!e[t]){if(i[t])return i[t];var s="function"==typeof c[r]&&c[r];if(!n&&s)return s(t,!0);if(u)return u(t,!0);if(f&&"string"==typeof t)return f(t);var a=Error("Cannot find module '"+t+"'");throw a.code="MODULE_NOT_FOUND",a}l.resolve=function(n){var r=e[t][1][n];return null!=r?r:n},l.cache={};var o=d[t]=new g.Module(t);e[t][0].call(o.exports,l,o,o.exports,c)}return d[t].exports;function l(e){var t=l.resolve(e);return!1===t?{}:g(t)}}g.isParcelRequire=!0,g.Module=function(e){this.id=e,this.bundle=g,this.require=f,this.exports={}},g.modules=e,g.cache=d,g.parent=u,g.distDir=void 0,g.publicUrl=void 0,g.devServer=void 0,g.i=l,g.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(g,"root",{get:function(){return c[r]}}),c[r]=g;for(var h=0;h{console.error(e),e instanceof Error&&console.error(e.stack),process.exit(1)})},{fs:"fs",os:"os","./inject-cache.js":"g8Odb","./extract-cache.js":"14eXt","./opts.js":"bjlzi","@parcel/transformer-js/src/esmodule-helpers.js":"8h9S8"}],g8Odb:[function(e,t,n,r){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"injectCaches",()=>f);var s=e("fs"),a=e("path"),o=i.interopDefault(a),c=e("./opts.js"),u=e("./run.js"),l=e("@actions/core/lib/core.js");async function d(e,t,n,r,i){await s.promises.rm(n,{recursive:!0,force:!0}),await s.promises.mkdir(n,{recursive:!0}),await s.promises.mkdir(e,{recursive:!0});let a=new Date().toISOString();await s.promises.writeFile(o.default.join(e,"buildstamp"),a);let d=(0,c.getTargetPath)(t),f=(0,c.getMountArgsString)(t),g="",h=(0,c.getUID)(t),p=(0,c.getGID)(t);(""!==h||""!==p)&&(g=`&& chown -R ${h}:${p} ${d}`);let m=` +FROM ${r} +COPY buildstamp buildstamp +RUN --mount=${f} \ + --mount=type=bind,source=.,target=/var/dance-cache \ + cp -p -R /var/dance-cache/. ${d} ${g} || true +`;await s.promises.writeFile(o.default.join(n,"Dancefile.inject"),m),console.log(m),await (0,u.run)("docker",["buildx","build","--builder",i,"-f",o.default.join(n,"Dancefile.inject"),"--tag","dance:inject",e]);try{await s.promises.rm(e,{recursive:!0,force:!0})}catch(e){(0,l.notice)(`Error while cleaning cache source directory: ${e}. Ignoring...`)}}async function f(e){let t=await (0,c.getCacheMap)(e),n=e["scratch-dir"],r=e["utility-image"],i=(0,c.getBuilder)(e);for(let[e,s]of Object.entries(t))await d(e,s,n,r,i)}},{fs:"fs",path:"path","./opts.js":"bjlzi","./run.js":"kHqLa","@actions/core/lib/core.js":"k7YnK","@parcel/transformer-js/src/esmodule-helpers.js":"8h9S8"}],bjlzi:[function(e,t,n,r){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"parseOpts",()=>l),i.export(n,"help",()=>d),i.export(n,"getCacheMap",()=>g),i.export(n,"getTargetPath",()=>h),i.export(n,"getUID",()=>p),i.export(n,"getGID",()=>m),i.export(n,"getMountArgsString",()=>b),i.export(n,"getBuilder",()=>v);var s=e("mri"),a=i.interopDefault(s),o=e("fs"),c=e("@actions/core/lib/core.js"),u=e("dockerfile-ast");function l(e){let t=(0,a.default)(e,{default:{"cache-map":(0,c.getInput)("cache-map")||"{}",dockerfile:(0,c.getInput)("dockerfile")||"Dockerfile","scratch-dir":(0,c.getInput)("scratch-dir")||"scratch","skip-extraction":"true"===((0,c.getInput)("skip-extraction")||"false"),extract:void 0!==process.env.STATE_POST,"utility-image":(0,c.getInput)("utility-image")||"ghcr.io/containerd/busybox:latest",builder:(0,c.getInput)("builder")||"default",help:!1},string:["cache-map","dockerfile","scratch-dir","cache-source","cache-target","utility-image","builder"],boolean:["skip-extraction","help","extract"],alias:{help:["h"]}});return t["cache-source"]&&t["cache-target"]&&((0,c.warning)("The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead."),t["cache-map"]=JSON.stringify({[t["cache-source"]]:t["cache-target"]})),t}function d(){console.log(`build-cache-dance [options] Save 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms Options: @@ -6567,752 +16,19 @@ Options: --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); - return resolved; -} -function $10eed8306e544906$var$resolveCommand(parsed) { - return $10eed8306e544906$var$resolveCommandAttempt(parsed) || $10eed8306e544906$var$resolveCommandAttempt(parsed, true); -} -$10eed8306e544906$exports = $10eed8306e544906$var$resolveCommand; - - -var $276813fd40f11aff$export$ae50443ffc990749; -var $276813fd40f11aff$export$6ea29ee575e3f5ff; -'use strict'; -// See http://www.robvanderwoude.com/escapechars.php -const $276813fd40f11aff$var$metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; -function $276813fd40f11aff$var$escapeCommand(arg) { - // Escape meta chars - arg = arg.replace($276813fd40f11aff$var$metaCharsRegExp, '^$1'); - return arg; -} -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(/(?=(\\+?)?)\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$1'); - // All other backslashes occur literally - // Quote the whole thing: - arg = `"${arg}"`; - // Escape meta chars - arg = arg.replace($276813fd40f11aff$var$metaCharsRegExp, '^$1'); - // Double escape meta chars if necessary - if (doubleEscapeMetaChars) arg = arg.replace($276813fd40f11aff$var$metaCharsRegExp, '^$1'); - return arg; -} -$276813fd40f11aff$export$ae50443ffc990749 = $276813fd40f11aff$var$escapeCommand; -$276813fd40f11aff$export$6ea29ee575e3f5ff = $276813fd40f11aff$var$escapeArgument; - - -var $a35e2c2e4ef102e3$exports = {}; -'use strict'; - -var $550cee7733391e8f$exports = {}; -'use strict'; -var $41ec2024f8465164$exports = {}; -'use strict'; -$41ec2024f8465164$exports = /^#!(.*)/; - - -$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; - return argument ? `${binary} ${argument}` : binary; -}; - - -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'); - $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()); -} -$a35e2c2e4ef102e3$exports = $a35e2c2e4ef102e3$var$readShebang; - - -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 $10eed8306e544906$exports(parsed); - } - return parsed.file; -} -function $a374b65288da9789$var$parseNonShell(parsed) { - if (!$a374b65288da9789$var$isWin) return parsed; - // Detect & add support for shebangs - const commandFile = $a374b65288da9789$var$detectShebang(parsed); - // We don't need a shell if the command filename is an executable - 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) { - // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/` - // 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 = $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 = $276813fd40f11aff$export$ae50443ffc990749(parsed.command); - parsed.args = parsed.args.map((arg)=>$276813fd40f11aff$export$6ea29ee575e3f5ff(arg, needsDoubleEscapeMetaChars)); - const shellCommand = [ - parsed.command - ].concat(parsed.args).join(' '); - parsed.args = [ - '/d', - '/s', - '/c', - `"${shellCommand}"` - ]; - parsed.command = process.env.comspec || 'cmd.exe'; - parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped - } - return parsed; -} -function $a374b65288da9789$var$parse(command, args, options) { - // Normalize arguments, similar to nodejs - if (args && !Array.isArray(args)) { - options = args; - args = null; - } - args = args ? args.slice(0) : []; // Clone array to avoid changing the original - options = Object.assign({}, options); // Clone object to avoid changing the original - // Build our parsed object - const parsed = { - command: command, - args: args, - options: options, - file: undefined, - original: { - command: command, - args: args - } - }; - // Delegate further parsing to shell or non-shell - return options.shell ? parsed : $a374b65288da9789$var$parseNonShell(parsed); -} -$a374b65288da9789$exports = $a374b65288da9789$var$parse; - - -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', - syscall: `${syscall} ${original.command}`, - path: original.command, - spawnargs: original.args - }); -} -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 = $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 $723ba8c7f07c78f6$var$verifyENOENT(status, parsed) { - if ($723ba8c7f07c78f6$var$isWin && status === 1 && !parsed.file) return $723ba8c7f07c78f6$var$notFoundError(parsed.original, 'spawn'); - return null; -} -function $723ba8c7f07c78f6$var$verifyENOENTSync(status, parsed) { - if ($723ba8c7f07c78f6$var$isWin && status === 1 && !parsed.file) return $723ba8c7f07c78f6$var$notFoundError(parsed.original, 'spawnSync'); - return null; -} -$723ba8c7f07c78f6$exports = { - hookChildProcess: $723ba8c7f07c78f6$var$hookChildProcess, - verifyENOENT: $723ba8c7f07c78f6$var$verifyENOENT, - verifyENOENTSync: $723ba8c7f07c78f6$var$verifyENOENTSync, - notFoundError: $723ba8c7f07c78f6$var$notFoundError -}; - - -function $89bc486561c4bcbd$var$spawn(command, args, options) { - // Parse the arguments - 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 - $723ba8c7f07c78f6$exports.hookChildProcess(spawned, parsed); - return spawned; -} -function $89bc486561c4bcbd$var$spawnSync(command, args, options) { - // Parse the arguments - 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 || $723ba8c7f07c78f6$exports.verifyENOENTSync(result.status, parsed); - return result; -} -$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. - * - * @param {string} command - The shell command to execute. - * @param {string[]} [args] - An array of arguments that are given after the command. - * @param {{ rejectOnError?: boolean, stdin?: string, stderr?: (data: string) => void, stdout?: (data: string) => void }} [options] - Options. - * @param {any} [spawnOptions] - Options that are passed directly to child_process.spawn. Also supports stdin: string. - * @returns {Promise<{ stdout: string, stderr: string }>} - */ const $03c48d50d9d7039f$var$spawnPlease = (command, args, options = {}, spawnOptions = {})=>{ - // defaults - if (options.rejectOnError === undefined) options.rejectOnError = true; - 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)=>{ - stdout += data; - if (options.stdout) options.stdout(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 (code !== 0 && options.rejectOnError) reject(stderr); - else resolve({ - stdout: stdout, - stderr: stderr - }); - }); - }); -}; -$03c48d50d9d7039f$exports = $03c48d50d9d7039f$var$spawnPlease; - - - -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(' ')}`); - throw error; - } -} -async function $4c028fad90f63861$export$214213e2e11c62ae([command1, args1], [command2, args2]) { - const cp1 = (0, $evV72$child_process).spawn(command1, args1, { - stdio: [ - 'inherit', - 'pipe', - 'inherit' - ] - }); - const cp2 = (0, $evV72$child_process).spawn(command2, args2, { - stdio: [ - 'pipe', - 'inherit', - 'inherit' - ] - }); - cp1.stdout.pipe(cp2.stdin); - await Promise.all([ - $4c028fad90f63861$var$assertSuccess(cp1), - $4c028fad90f63861$var$assertSuccess(cp2) - ]); -} -function $4c028fad90f63861$var$assertSuccess(cp) { - return new Promise((resolve, reject)=>{ - cp.on('error', (error)=>{ - reject(error); - }); - cp.on('close', (code)=>{ - if (code !== 0) reject(new Error(`process exited with code ${code}`)); - resolve(); - }); - }); -} - - - -async function $bd1d73aff0732146$var$injectCache(cacheSource, cacheOptions, scratchDir, containerImage, builder) { - // Clean Scratch Directory - await (0, $evV72$fspromises).rm(scratchDir, { - recursive: true, - force: true - }); - await (0, $evV72$fspromises).mkdir(scratchDir, { - recursive: true - }); - // Prepare Cache Source Directory - await (0, $evV72$fspromises).mkdir(cacheSource, { - recursive: true - }); - // Prepare Timestamp for Layer Cache Busting - const date = new Date().toISOString(); - 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. - let ownershipCommand = ""; - const uid = (0, $76d06fcdc9bff1f5$export$6d2b3473b0986646)(cacheOptions); - const gid = (0, $76d06fcdc9bff1f5$export$4e7da3a92c2dad69)(cacheOptions); - if (uid !== "" || gid !== "") ownershipCommand = `&& chown -R ${uid}:${gid} ${targetPath}`; - // Prepare Dancefile to Access Caches - const dancefileContent = ` -FROM ${containerImage} +`)}async function f(e){let t=await o.promises.readFile(e,"utf-8"),n=u.DockerfileParser.parse(t),r={};for(let e of n.getInstructions().filter(e=>"RUN"==e.getKeyword()))for(let t of e.getFlags())if("mount"==t.getName()&&t.getOption("type")?.getValue()=="cache"){let n=t.getOption("id")?.getValue()||t.getOption("target")?.getValue();if(null==n)throw Error("cache mount must define id or target: "+t.toString()+" in "+e.toString());r[n]={id:n,target:"/var/cache-target"}}return r}async function g(e){try{let t=JSON.parse(e["cache-map"]);if(0!==Object.keys(t).length)return t;console.log("No cache map provided. Trying to parse the Dockerfile to find the cache mount instructions...");let n=await f(e.dockerfile);return console.log(`Cache map parsed from Dockerfile: ${JSON.stringify(n)}`),n}catch(t){throw Error(`Failed to parse cache map. Expected JSON, got: +${e["cache-map"]} +${t}`)}}function h(e){if("string"==typeof e)return e;if("target"in e)return e.target;throw Error(`Expected the 'target' key in the cache options, got: +${e}`)}function p(e){return"string"==typeof e?"":"uid"in e&&void 0!==e.uid?e.uid.toString():""}function m(e){return"string"==typeof e?"":"gid"in e&&void 0!==e.gid?e.gid.toString():""}function b(e){if("string"==typeof e)return`type=cache,target=${e}`;{let t=Object.entries(e).map(([e,t])=>`${e}=${t}`).join(",");return`type=cache,${t}`}}function v(e){return null==e.builder||""==e.builder?"default":e.builder}},{mri:"5lGLa",fs:"fs","@actions/core/lib/core.js":"k7YnK","dockerfile-ast":"1irbL","@parcel/transformer-js/src/esmodule-helpers.js":"8h9S8"}],"5lGLa":[function(e,t,n,r){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");function s(e){return null==e?[]:Array.isArray(e)?e:[e]}i.defineInteropFlag(n),i.export(n,"default",()=>function(e,t){t=t||{};var n,r,i,a,o,c={_:[]},u=0,l=0,d=0,f=(e=e||[]).length;let g=void 0!==t.alias,h=void 0!==t.unknown,p=void 0!==t.default;if(t.alias=t.alias||{},t.string=s(t.string),t.boolean=s(t.boolean),g)for(n in t.alias)for(u=0,r=t.alias[n]=s(t.alias[n]);u0;)for(l=(r=t.alias[t.boolean[u]]||[]).length;l-- >0;)t.boolean.push(r[l]);for(u=t.string.length;u-- >0;)for(l=(r=t.alias[t.string[u]]||[]).length;l-- >0;)t.string.push(r[l]);if(p){for(n in t.default)if(a=typeof t.default[n],r=t.alias[n]=t.alias[n]||[],void 0!==t[a])for(t[a].push(n),u=0;u0;)c[r.shift()]=c[n];return c})},{"@parcel/transformer-js/src/esmodule-helpers.js":"8h9S8"}],"8h9S8":[function(e,t,n,r){n.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},n.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.exportAll=function(e,t){return Object.keys(e).forEach(function(n){"default"===n||"__esModule"===n||Object.prototype.hasOwnProperty.call(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[n]}})}),t},n.export=function(e,t,n){Object.defineProperty(e,t,{enumerable:!0,get:n})}},{}],k7YnK:[function(e,t,n,r){var i,s,a=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&a(t,e,n);return o(t,e),t},u=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(i,s){function a(e){try{c(r.next(e))}catch(e){s(e)}}function o(e){try{c(r.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(a,o)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(n,"__esModule",{value:!0}),n.getIDToken=n.getState=n.saveState=n.group=n.endGroup=n.startGroup=n.info=n.notice=n.warning=n.error=n.debug=n.isDebug=n.setFailed=n.setCommandEcho=n.setOutput=n.getBooleanInput=n.getMultilineInput=n.getInput=n.addPath=n.setSecret=n.exportVariable=n.ExitCode=void 0;let l=e("e924a1cef16bef69"),d=e("16e43487988cdce8"),f=e("7f8c194a8c8f18e8"),g=c(e("92b8860262e27ba")),h=c(e("d28a375bd89b68cf")),p=e("7e9da61c1748be9");function m(e,t){let n=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(t&&t.required&&!n)throw Error(`Input required and not supplied: ${e}`);return t&&!1===t.trimWhitespace?n:n.trim()}function b(e,t={}){l.issueCommand("error",f.toCommandProperties(t),e instanceof Error?e.toString():e)}function v(e){l.issue("group",e)}function A(){l.issue("endgroup")}(i=s=n.ExitCode||(n.ExitCode={}))[i.Success=0]="Success",i[i.Failure=1]="Failure",n.exportVariable=function(e,t){let n=f.toCommandValue(t);if(process.env[e]=n,process.env.GITHUB_ENV||0){let t="_GitHubActionsFileCommandDelimeter_",r=`${e}<<${t}${g.EOL}${n}${g.EOL}${t}`;d.issueCommand("ENV",r)}else l.issueCommand("set-env",{name:e},n)},n.setSecret=function(e){l.issueCommand("add-mask",{},e)},n.addPath=function(e){process.env.GITHUB_PATH?d.issueCommand("PATH",e):l.issueCommand("add-path",{},e),process.env.PATH=`${e}${h.delimiter}${process.env.PATH}`},n.getInput=m,n.getMultilineInput=function(e,t){return m(e,t).split("\n").filter(e=>""!==e)},n.getBooleanInput=function(e,t){let n=m(e,t);if(["true","True","TRUE"].includes(n))return!0;if(["false","False","FALSE"].includes(n))return!1;throw TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${e} +Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)},n.setOutput=function(e,t){process.stdout.write(g.EOL),l.issueCommand("set-output",{name:e},t)},n.setCommandEcho=function(e){l.issue("echo",e?"on":"off")},n.setFailed=function(e){process.exitCode=s.Failure,b(e)},n.isDebug=function(){return"1"===process.env.RUNNER_DEBUG},n.debug=function(e){l.issueCommand("debug",{},e)},n.error=b,n.warning=function(e,t={}){l.issueCommand("warning",f.toCommandProperties(t),e instanceof Error?e.toString():e)},n.notice=function(e,t={}){l.issueCommand("notice",f.toCommandProperties(t),e instanceof Error?e.toString():e)},n.info=function(e){process.stdout.write(e+g.EOL)},n.startGroup=v,n.endGroup=A,n.group=function(e,t){return u(this,void 0,void 0,function*(){let n;v(e);try{n=yield t()}finally{A()}return n})},n.saveState=function(e,t){l.issueCommand("save-state",{name:e},t)},n.getState=function(e){return process.env[`STATE_${e}`]||""},n.getIDToken=function(e){return u(this,void 0,void 0,function*(){return yield p.OidcClient.getIDToken(e)})};var y=e("e44daa22e4d4d53e");Object.defineProperty(n,"summary",{enumerable:!0,get:function(){return y.summary}});var R=e("e44daa22e4d4d53e");Object.defineProperty(n,"markdownSummary",{enumerable:!0,get:function(){return R.markdownSummary}})},{e924a1cef16bef69:"kZGXI","16e43487988cdce8":"gRxw7","7f8c194a8c8f18e8":"bO0ir","92b8860262e27ba":"os",d28a375bd89b68cf:"path","7e9da61c1748be9":"b9uNA",e44daa22e4d4d53e:"7Zbhg"}],kZGXI:[function(e,t,n,r){var i=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&i(t,e,n);return s(t,e),t};Object.defineProperty(n,"__esModule",{value:!0}),n.issue=n.issueCommand=void 0;let o=a(e("3737725acaa42483")),c=e("69b2ffcef1696d24");function u(e,t,n){let r=new l(e,t,n);process.stdout.write(r.toString()+o.EOL)}n.issueCommand=u,n.issue=function(e,t=""){u(e,{},t)};class l{constructor(e,t,n){e||(e="missing.command"),this.command=e,this.properties=t,this.message=n}toString(){var e,t;let n="::"+this.command;if(this.properties&&Object.keys(this.properties).length>0){n+=" ";let t=!0;for(let r in this.properties)if(this.properties.hasOwnProperty(r)){let i=this.properties[r];i&&(t?t=!1:n+=",",n+=`${r}=${e=i,c.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}`)}}return n+`::${t=this.message,c.toCommandValue(t).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}`}}},{"3737725acaa42483":"os","69b2ffcef1696d24":"bO0ir"}],bO0ir:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.toCommandProperties=n.toCommandValue=void 0,n.toCommandValue=function(e){return null==e?"":"string"==typeof e||e instanceof String?e:JSON.stringify(e)},n.toCommandProperties=function(e){return Object.keys(e).length?{title:e.title,file:e.file,line:e.startLine,endLine:e.endLine,col:e.startColumn,endColumn:e.endColumn}:{}}},{}],gRxw7:[function(e,t,n,r){var i=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&i(t,e,n);return s(t,e),t};Object.defineProperty(n,"__esModule",{value:!0}),n.issueCommand=void 0;let o=a(e("778c221d6defca47")),c=a(e("9ee56551f05bb7a0")),u=e("a1dde01443f9a1e6");n.issueCommand=function(e,t){let n=process.env[`GITHUB_${e}`];if(!n)throw Error(`Unable to find environment variable for file command ${e}`);if(!o.existsSync(n))throw Error(`Missing file at path: ${n}`);o.appendFileSync(n,`${u.toCommandValue(t)}${c.EOL}`,{encoding:"utf8"})}},{"778c221d6defca47":"fs","9ee56551f05bb7a0":"os",a1dde01443f9a1e6:"bO0ir"}],b9uNA:[function(e,t,n,r){var i=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(i,s){function a(e){try{c(r.next(e))}catch(e){s(e)}}function o(e){try{c(r.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(a,o)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(n,"__esModule",{value:!0}),n.OidcClient=void 0;let s=e("6cdaf1fd914e5387"),a=e("8db37dcf5a5b1463"),o=e("1147ffd9ee1d6042");class c{static createHttpClient(e=!0,t=10){return new s.HttpClient("actions/oidc-client",[new a.BearerCredentialHandler(c.getRequestToken())],{allowRetries:e,maxRetries:t})}static getRequestToken(){let e=process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN;if(!e)throw Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable");return e}static getIDTokenUrl(){let e=process.env.ACTIONS_ID_TOKEN_REQUEST_URL;if(!e)throw Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable");return e}static getCall(e){var t;return i(this,void 0,void 0,function*(){let n=c.createHttpClient(),r=null==(t=(yield n.getJson(e).catch(e=>{throw Error(`Failed to get ID Token. + + Error Code : ${e.statusCode} + + Error Message: ${e.result.message}`)})).result)?void 0:t.value;if(!r)throw Error("Response json body do not have ID Token field");return r})}static getIDToken(e){return i(this,void 0,void 0,function*(){try{let t=c.getIDTokenUrl();if(e){let n=encodeURIComponent(e);t=`${t}&audience=${n}`}o.debug(`ID token url is ${t}`);let n=yield c.getCall(t);return o.setSecret(n),n}catch(e){throw Error(`Error message: ${e.message}`)}})}}n.OidcClient=c},{"6cdaf1fd914e5387":"bTnEL","8db37dcf5a5b1463":"lQXpe","1147ffd9ee1d6042":"k7YnK"}],bTnEL:[function(e,t,n,r){var i,s,a,o,c;let u;Object.defineProperty(n,"__esModule",{value:!0});let l=e("69cee5eb1e6c891e"),d=e("5135743cad10c017"),f=e("74ceafcf2537bb1e");(o=i=n.HttpCodes||(n.HttpCodes={}))[o.OK=200]="OK",o[o.MultipleChoices=300]="MultipleChoices",o[o.MovedPermanently=301]="MovedPermanently",o[o.ResourceMoved=302]="ResourceMoved",o[o.SeeOther=303]="SeeOther",o[o.NotModified=304]="NotModified",o[o.UseProxy=305]="UseProxy",o[o.SwitchProxy=306]="SwitchProxy",o[o.TemporaryRedirect=307]="TemporaryRedirect",o[o.PermanentRedirect=308]="PermanentRedirect",o[o.BadRequest=400]="BadRequest",o[o.Unauthorized=401]="Unauthorized",o[o.PaymentRequired=402]="PaymentRequired",o[o.Forbidden=403]="Forbidden",o[o.NotFound=404]="NotFound",o[o.MethodNotAllowed=405]="MethodNotAllowed",o[o.NotAcceptable=406]="NotAcceptable",o[o.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",o[o.RequestTimeout=408]="RequestTimeout",o[o.Conflict=409]="Conflict",o[o.Gone=410]="Gone",o[o.TooManyRequests=429]="TooManyRequests",o[o.InternalServerError=500]="InternalServerError",o[o.NotImplemented=501]="NotImplemented",o[o.BadGateway=502]="BadGateway",o[o.ServiceUnavailable=503]="ServiceUnavailable",o[o.GatewayTimeout=504]="GatewayTimeout",(c=s=n.Headers||(n.Headers={})).Accept="accept",c.ContentType="content-type",(a=n.MediaTypes||(n.MediaTypes={})).ApplicationJson="application/json",n.getProxyUrl=function(e){let t=f.getProxyUrl(new URL(e));return t?t.href:""};let g=[i.MovedPermanently,i.ResourceMoved,i.SeeOther,i.TemporaryRedirect,i.PermanentRedirect],h=[i.BadGateway,i.ServiceUnavailable,i.GatewayTimeout],p=["OPTIONS","GET","DELETE","HEAD"];class m extends Error{constructor(e,t){super(e),this.name="HttpClientError",this.statusCode=t,Object.setPrototypeOf(this,m.prototype)}}n.HttpClientError=m;class b{constructor(e){this.message=e}readBody(){return new Promise(async(e,t)=>{let n=Buffer.alloc(0);this.message.on("data",e=>{n=Buffer.concat([n,e])}),this.message.on("end",()=>{e(n.toString())})})}}n.HttpClientResponse=b,n.isHttps=function(e){return"https:"===new URL(e).protocol};class v{constructor(e,t,n){this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=e,this.handlers=t||[],this.requestOptions=n,n&&(null!=n.ignoreSslError&&(this._ignoreSslError=n.ignoreSslError),this._socketTimeout=n.socketTimeout,null!=n.allowRedirects&&(this._allowRedirects=n.allowRedirects),null!=n.allowRedirectDowngrade&&(this._allowRedirectDowngrade=n.allowRedirectDowngrade),null!=n.maxRedirects&&(this._maxRedirects=Math.max(n.maxRedirects,0)),null!=n.keepAlive&&(this._keepAlive=n.keepAlive),null!=n.allowRetries&&(this._allowRetries=n.allowRetries),null!=n.maxRetries&&(this._maxRetries=n.maxRetries))}options(e,t){return this.request("OPTIONS",e,null,t||{})}get(e,t){return this.request("GET",e,null,t||{})}del(e,t){return this.request("DELETE",e,null,t||{})}post(e,t,n){return this.request("POST",e,t,n||{})}patch(e,t,n){return this.request("PATCH",e,t,n||{})}put(e,t,n){return this.request("PUT",e,t,n||{})}head(e,t){return this.request("HEAD",e,null,t||{})}sendStream(e,t,n,r){return this.request(e,t,n,r)}async getJson(e,t={}){t[s.Accept]=this._getExistingOrDefaultHeader(t,s.Accept,a.ApplicationJson);let n=await this.get(e,t);return this._processResponse(n,this.requestOptions)}async postJson(e,t,n={}){let r=JSON.stringify(t,null,2);n[s.Accept]=this._getExistingOrDefaultHeader(n,s.Accept,a.ApplicationJson),n[s.ContentType]=this._getExistingOrDefaultHeader(n,s.ContentType,a.ApplicationJson);let i=await this.post(e,r,n);return this._processResponse(i,this.requestOptions)}async putJson(e,t,n={}){let r=JSON.stringify(t,null,2);n[s.Accept]=this._getExistingOrDefaultHeader(n,s.Accept,a.ApplicationJson),n[s.ContentType]=this._getExistingOrDefaultHeader(n,s.ContentType,a.ApplicationJson);let i=await this.put(e,r,n);return this._processResponse(i,this.requestOptions)}async patchJson(e,t,n={}){let r=JSON.stringify(t,null,2);n[s.Accept]=this._getExistingOrDefaultHeader(n,s.Accept,a.ApplicationJson),n[s.ContentType]=this._getExistingOrDefaultHeader(n,s.ContentType,a.ApplicationJson);let i=await this.patch(e,r,n);return this._processResponse(i,this.requestOptions)}async request(e,t,n,r){let s;if(this._disposed)throw Error("Client has already been disposed.");let a=new URL(t),o=this._prepareRequest(e,a,r),c=this._allowRetries&&-1!=p.indexOf(e)?this._maxRetries+1:1,u=0;for(;u0;){let i=s.message.headers.location;if(!i)break;let c=new URL(i);if("https:"==a.protocol&&a.protocol!=c.protocol&&!this._allowRedirectDowngrade)throw Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.");if(await s.readBody(),c.hostname!==a.hostname)for(let e in r)"authorization"===e.toLowerCase()&&delete r[e];o=this._prepareRequest(e,c,r),s=await this.requestRaw(o,n),t--}if(-1==h.indexOf(s.message.statusCode))break;(u+=1){this.requestRawWithCallback(e,t,function(e,t){e&&r(e),n(t)})})}requestRawWithCallback(e,t,n){let r;"string"==typeof t&&(e.options.headers["Content-Length"]=Buffer.byteLength(t,"utf8"));let i=!1,s=(e,t)=>{i||(i=!0,n(e,t))},a=e.httpModule.request(e.options,e=>{s(null,new b(e))});a.on("socket",e=>{r=e}),a.setTimeout(this._socketTimeout||18e4,()=>{r&&r.end(),s(Error("Request timeout: "+e.options.path),null)}),a.on("error",function(e){s(e,null)}),t&&"string"==typeof t&&a.write(t,"utf8"),t&&"string"!=typeof t?(t.on("close",function(){a.end()}),t.pipe(a)):a.end()}getAgent(e){let t=new URL(e);return this._getAgent(t)}_prepareRequest(e,t,n){let r={};r.parsedUrl=t;let i="https:"===r.parsedUrl.protocol;return r.httpModule=i?d:l,r.options={},r.options.host=r.parsedUrl.hostname,r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):i?443:80,r.options.path=(r.parsedUrl.pathname||"")+(r.parsedUrl.search||""),r.options.method=e,r.options.headers=this._mergeHeaders(n),null!=this.userAgent&&(r.options.headers["user-agent"]=this.userAgent),r.options.agent=this._getAgent(r.parsedUrl),this.handlers&&this.handlers.forEach(e=>{e.prepareRequest(r.options)}),r}_mergeHeaders(e){let t=e=>Object.keys(e).reduce((t,n)=>(t[n.toLowerCase()]=e[n],t),{});return this.requestOptions&&this.requestOptions.headers?Object.assign({},t(this.requestOptions.headers),t(e)):t(e||{})}_getExistingOrDefaultHeader(e,t,n){let r,i;return this.requestOptions&&this.requestOptions.headers&&(r=Object.keys(i=this.requestOptions.headers).reduce((e,t)=>(e[t.toLowerCase()]=i[t],e),{})[t]),e[t]||r||n}_getAgent(t){let n,r=f.getProxyUrl(t),i=r&&r.hostname;if(this._keepAlive&&i&&(n=this._proxyAgent),this._keepAlive&&!i&&(n=this._agent),n)return n;let s="https:"===t.protocol,a=100;if(this.requestOptions&&(a=this.requestOptions.maxSockets||l.globalAgent.maxSockets),i){let t;u||(u=e("591dff9a34bef599"));let i={maxSockets:a,keepAlive:this._keepAlive,proxy:{...(r.username||r.password)&&{proxyAuth:`${r.username}:${r.password}`},host:r.hostname,port:r.port}},o="https:"===r.protocol;n=(s?o?u.httpsOverHttps:u.httpsOverHttp:o?u.httpOverHttps:u.httpOverHttp)(i),this._proxyAgent=n}if(this._keepAlive&&!n){let e={keepAlive:this._keepAlive,maxSockets:a};n=s?new d.Agent(e):new l.Agent(e),this._agent=n}return n||(n=s?d.globalAgent:l.globalAgent),s&&this._ignoreSslError&&(n.options=Object.assign(n.options||{},{rejectUnauthorized:!1})),n}_performExponentialBackoff(e){let t=5*Math.pow(2,e=Math.min(10,e));return new Promise(e=>setTimeout(()=>e(),t))}static dateTimeDeserializer(e,t){if("string"==typeof t){let e=new Date(t);if(!isNaN(e.valueOf()))return e}return t}async _processResponse(e,t){return new Promise(async(n,r)=>{let s,a,o=e.message.statusCode,c={statusCode:o,result:null,headers:{}};o==i.NotFound&&n(c);try{(a=await e.readBody())&&a.length>0&&(c.result=s=t&&t.deserializeDates?JSON.parse(a,v.dateTimeDeserializer):JSON.parse(a)),c.headers=e.message.headers}catch(e){}if(o>299){let e,t=new m(s&&s.message?s.message:a&&a.length>0?a:"Failed request: ("+o+")",o);t.result=c.result,r(t)}else n(c)})}}n.HttpClient=v},{"69cee5eb1e6c891e":"http","5135743cad10c017":"https","74ceafcf2537bb1e":"jyPkM","591dff9a34bef599":"fHNgG"}],jyPkM:[function(e,t,n,r){function i(e){let t;if(!e.hostname)return!1;let n=process.env.no_proxy||process.env.NO_PROXY||"";if(!n)return!1;e.port?t=Number(e.port):"http:"===e.protocol?t=80:"https:"===e.protocol&&(t=443);let r=[e.hostname.toUpperCase()];for(let e of("number"==typeof t&&r.push(`${r[0]}:${t}`),n.split(",").map(e=>e.trim().toUpperCase()).filter(e=>e)))if(r.some(t=>t===e))return!0;return!1}Object.defineProperty(n,"__esModule",{value:!0}),n.getProxyUrl=function(e){let t,n,r="https:"===e.protocol;return i(e)||(n=r?process.env.https_proxy||process.env.HTTPS_PROXY:process.env.http_proxy||process.env.HTTP_PROXY)&&(t=new URL(n)),t},n.checkBypass=i},{}],fHNgG:[function(e,t,n,r){t.exports=e("4930519cb3dd45a3")},{"4930519cb3dd45a3":"Z7Qtc"}],Z7Qtc:[function(e,t,n,r){e("5121e3e37efd6d5e");var i,s=e("2f892df2fa9f0920"),a=e("d8f61135d445c2eb"),o=e("4422f117af5fb5c5"),c=e("2bf2dc2e245634a1");e("d682d38a2480f4c");var u=e("8150fd083365f338");function l(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||a.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on("free",function(e,n,r,i){for(var s=f(n,r,i),a=0,o=t.requests.length;a=this.maxSockets)return void i.requests.push(s);i.createSocket(s,function(t){function n(){i.emit("free",t,s)}function r(e){i.removeSocket(t),t.removeListener("free",n),t.removeListener("close",r),t.removeListener("agentRemove",r)}t.on("free",n),t.on("close",r),t.on("agentRemove",r),e.onSocket(t)})},l.prototype.createSocket=function(e,t){var n=this,r={};n.sockets.push(r);var s=g({},n.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),i("making CONNECT request");var a=n.request(s);function o(s,o,c){if(a.removeAllListeners(),o.removeAllListeners(),200!==s.statusCode){i("tunneling socket could not be established, statusCode=%d",s.statusCode),o.destroy();var u=Error("tunneling socket could not be established, statusCode="+s.statusCode);u.code="ECONNRESET",e.request.emit("error",u),n.removeSocket(r);return}if(c.length>0){i("got illegal response body from proxy"),o.destroy();var u=Error("got illegal response body from proxy");u.code="ECONNRESET",e.request.emit("error",u),n.removeSocket(r);return}return i("tunneling connection has established"),n.sockets[n.sockets.indexOf(r)]=o,t(o)}a.useChunkedEncodingByDefault=!1,a.once("response",function(e){e.upgrade=!0}),a.once("upgrade",function(e,t,n){process.nextTick(function(){o(e,t,n)})}),a.once("connect",o),a.once("error",function(t){a.removeAllListeners(),i("tunneling socket could not be established, cause=%s\n",t.message,t.stack);var s=Error("tunneling socket could not be established, cause="+t.message);s.code="ECONNRESET",e.request.emit("error",s),n.removeSocket(r)}),a.end()},l.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(-1!==t){this.sockets.splice(t,1);var n=this.requests.shift();n&&this.createSocket(n,function(e){n.request.onSocket(e)})}},n.debug=i=process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments);"string"==typeof e[0]?e[0]="TUNNEL: "+e[0]:e.unshift("TUNNEL:"),console.error.apply(console,e)}:function(){}},{"5121e3e37efd6d5e":"net","2f892df2fa9f0920":"tls",d8f61135d445c2eb:"http","4422f117af5fb5c5":"https","2bf2dc2e245634a1":"events",d682d38a2480f4c:"assert","8150fd083365f338":"util"}],lQXpe:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.BasicCredentialHandler=class{constructor(e,t){this.username=e,this.password=t}prepareRequest(e){e.headers.Authorization="Basic "+Buffer.from(this.username+":"+this.password).toString("base64")}canHandleAuthentication(e){return!1}handleAuthentication(e,t,n){return null}},n.BearerCredentialHandler=class{constructor(e){this.token=e}prepareRequest(e){e.headers.Authorization="Bearer "+this.token}canHandleAuthentication(e){return!1}handleAuthentication(e,t,n){return null}},n.PersonalAccessTokenCredentialHandler=class{constructor(e){this.token=e}prepareRequest(e){e.headers.Authorization="Basic "+Buffer.from("PAT:"+this.token).toString("base64")}canHandleAuthentication(e){return!1}handleAuthentication(e,t,n){return null}}},{}],"7Zbhg":[function(e,t,n,r){var i=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(i,s){function a(e){try{c(r.next(e))}catch(e){s(e)}}function o(e){try{c(r.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(a,o)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(n,"__esModule",{value:!0}),n.summary=n.markdownSummary=n.SUMMARY_DOCS_URL=n.SUMMARY_ENV_VAR=void 0;let s=e("883cae28f50a90e7"),a=e("d52c794fdbfabbb1"),{access:o,appendFile:c,writeFile:u}=a.promises;n.SUMMARY_ENV_VAR="GITHUB_STEP_SUMMARY",n.SUMMARY_DOCS_URL="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";let l=new class{constructor(){this._buffer=""}filePath(){return i(this,void 0,void 0,function*(){if(this._filePath)return this._filePath;let e=process.env[n.SUMMARY_ENV_VAR];if(!e)throw Error(`Unable to find environment variable for $${n.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);try{yield o(e,a.constants.R_OK|a.constants.W_OK)}catch(t){throw Error(`Unable to access summary file: '${e}'. Check if the file has correct read/write permissions.`)}return this._filePath=e,this._filePath})}wrap(e,t,n={}){let r=Object.entries(n).map(([e,t])=>` ${e}="${t}"`).join("");return t?`<${e}${r}>${t}`:`<${e}${r}>`}write(e){return i(this,void 0,void 0,function*(){let t=!!(null==e?void 0:e.overwrite),n=yield this.filePath();return yield(t?u:c)(n,this._buffer,{encoding:"utf8"}),this.emptyBuffer()})}clear(){return i(this,void 0,void 0,function*(){return this.emptyBuffer().write({overwrite:!0})})}stringify(){return this._buffer}isEmptyBuffer(){return 0===this._buffer.length}emptyBuffer(){return this._buffer="",this}addRaw(e,t=!1){return this._buffer+=e,t?this.addEOL():this}addEOL(){return this.addRaw(s.EOL)}addCodeBlock(e,t){let n=Object.assign({},t&&{lang:t}),r=this.wrap("pre",this.wrap("code",e),n);return this.addRaw(r).addEOL()}addList(e,t=!1){let n=e.map(e=>this.wrap("li",e)).join(""),r=this.wrap(t?"ol":"ul",n);return this.addRaw(r).addEOL()}addTable(e){let t=e.map(e=>{let t=e.map(e=>{if("string"==typeof e)return this.wrap("td",e);let{header:t,data:n,colspan:r,rowspan:i}=e,s=Object.assign(Object.assign({},r&&{colspan:r}),i&&{rowspan:i});return this.wrap(t?"th":"td",n,s)}).join("");return this.wrap("tr",t)}).join(""),n=this.wrap("table",t);return this.addRaw(n).addEOL()}addDetails(e,t){let n=this.wrap("details",this.wrap("summary",e)+t);return this.addRaw(n).addEOL()}addImage(e,t,n){let{width:r,height:i}=n||{},s=Object.assign(Object.assign({},r&&{width:r}),i&&{height:i}),a=this.wrap("img",null,Object.assign({src:e,alt:t},s));return this.addRaw(a).addEOL()}addHeading(e,t){let n=`h${t}`,r=["h1","h2","h3","h4","h5","h6"].includes(n)?n:"h1",i=this.wrap(r,e);return this.addRaw(i).addEOL()}addSeparator(){let e=this.wrap("hr",null);return this.addRaw(e).addEOL()}addBreak(){let e=this.wrap("br",null);return this.addRaw(e).addEOL()}addQuote(e,t){let n=Object.assign({},t&&{cite:t}),r=this.wrap("blockquote",e,n);return this.addRaw(r).addEOL()}addLink(e,t){let n=this.wrap("a",e,{href:t});return this.addRaw(n).addEOL()}};n.markdownSummary=l,n.summary=l},{"883cae28f50a90e7":"os",d52c794fdbfabbb1:"fs"}],"1irbL":[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.DockerfileParser=n.DefaultVariables=n.Directive=n.Keyword=n.Workdir=n.Volume=n.User=n.Stopsignal=n.Shell=n.Run=n.PropertyInstruction=n.Onbuild=n.ModifiableInstruction=n.Label=n.JSONInstruction=n.Heredoc=n.Healthcheck=n.From=n.Env=n.Entrypoint=n.Copy=n.Cmd=n.Arg=n.Add=n.Variable=n.Property=n.ParserDirective=n.Line=n.Instruction=n.Flag=n.Comment=n.JSONArgument=n.Argument=void 0;var i,s,a,o,c,u=e("818c00e38db4fcf4");Object.defineProperty(n,"Argument",{enumerable:!0,get:function(){return u.Argument}});var l=e("c08f7534e96127a6");Object.defineProperty(n,"JSONArgument",{enumerable:!0,get:function(){return l.JSONArgument}});let d=e("1222b947cf52db6a");Object.defineProperty(n,"Comment",{enumerable:!0,get:function(){return d.Comment}});let f=e("76bd4faa688b3a6");var g=e("146dd26c02688bdf");Object.defineProperty(n,"Flag",{enumerable:!0,get:function(){return g.Flag}});let h=e("580224f94f990f62");Object.defineProperty(n,"Instruction",{enumerable:!0,get:function(){return h.Instruction}});var p=e("b10e9f8eeb123952");Object.defineProperty(n,"Line",{enumerable:!0,get:function(){return p.Line}});let m=e("48560c9781a127f2");Object.defineProperty(n,"ParserDirective",{enumerable:!0,get:function(){return m.ParserDirective}});var b=e("32b923ba03725fba");Object.defineProperty(n,"Property",{enumerable:!0,get:function(){return b.Property}});var v=e("38f5b7215a951c16");Object.defineProperty(n,"Variable",{enumerable:!0,get:function(){return v.Variable}});var A=e("46fe02f5a4ca95f9");Object.defineProperty(n,"Add",{enumerable:!0,get:function(){return A.Add}});let y=e("b50e6043532127e");Object.defineProperty(n,"Arg",{enumerable:!0,get:function(){return y.Arg}});let R=e("6151c2d28c8d5622");Object.defineProperty(n,"Cmd",{enumerable:!0,get:function(){return R.Cmd}});let w=e("302e65a20d20846c");Object.defineProperty(n,"Copy",{enumerable:!0,get:function(){return w.Copy}});let O=e("3b8f9736d90d33e6");Object.defineProperty(n,"Entrypoint",{enumerable:!0,get:function(){return O.Entrypoint}});let x=e("73053c83e5457e82");Object.defineProperty(n,"Env",{enumerable:!0,get:function(){return x.Env}});let k=e("fb70244a02539db4");Object.defineProperty(n,"From",{enumerable:!0,get:function(){return k.From}});let _=e("ce38775557f57e2");Object.defineProperty(n,"Healthcheck",{enumerable:!0,get:function(){return _.Healthcheck}});var C=e("3fc29578d4056add");Object.defineProperty(n,"Heredoc",{enumerable:!0,get:function(){return C.Heredoc}});var I=e("110dc2f32a5a5c80");Object.defineProperty(n,"JSONInstruction",{enumerable:!0,get:function(){return I.JSONInstruction}});var E=e("ea70ab055c82b9c6");Object.defineProperty(n,"Label",{enumerable:!0,get:function(){return E.Label}});var S=e("c1e4a9f72f3e4c8a");Object.defineProperty(n,"ModifiableInstruction",{enumerable:!0,get:function(){return S.ModifiableInstruction}});var T=e("1eb1f87000f1507b");Object.defineProperty(n,"Onbuild",{enumerable:!0,get:function(){return T.Onbuild}});var P=e("f04eacef530f3101");Object.defineProperty(n,"PropertyInstruction",{enumerable:!0,get:function(){return P.PropertyInstruction}});var j=e("efc72f3780a14232");Object.defineProperty(n,"Run",{enumerable:!0,get:function(){return j.Run}});var N=e("bb2b3970bd5df961");Object.defineProperty(n,"Shell",{enumerable:!0,get:function(){return N.Shell}});var L=e("3f106ce05bb305c2");Object.defineProperty(n,"Stopsignal",{enumerable:!0,get:function(){return L.Stopsignal}});var D=e("26177b9c0e662cb0");Object.defineProperty(n,"User",{enumerable:!0,get:function(){return D.User}});var M=e("657db89678e27c44");Object.defineProperty(n,"Volume",{enumerable:!0,get:function(){return M.Volume}});let U=e("7c097a1fe36e1e9e");Object.defineProperty(n,"Workdir",{enumerable:!0,get:function(){return U.Workdir}}),(i=a||(n.Keyword=a={})).ADD="ADD",i.ARG="ARG",i.CMD="CMD",i.COPY="COPY",i.ENTRYPOINT="ENTRYPOINT",i.ENV="ENV",i.EXPOSE="EXPOSE",i.FROM="FROM",i.HEALTHCHECK="HEALTHCHECK",i.LABEL="LABEL",i.MAINTAINER="MAINTAINER",i.ONBUILD="ONBUILD",i.RUN="RUN",i.SHELL="SHELL",i.STOPSIGNAL="STOPSIGNAL",i.USER="USER",i.VOLUME="VOLUME",i.WORKDIR="WORKDIR",(s=o||(n.Directive=o={})).escape="escape",s.syntax="syntax",n.DefaultVariables=["ALL_PROXY","all_proxy","FTP_PROXY","ftp_proxy","HTTP_PROXY","http_proxy","HTTPS_PROXY","https_proxy","NO_PROXY","no_proxy"],(c||(n.DockerfileParser=c={})).parse=function(e){return new f.Parser().parse(e)}},{"818c00e38db4fcf4":"j0TZA",c08f7534e96127a6:"58ALy","1222b947cf52db6a":"5T0KS","76bd4faa688b3a6":"aGQ73","146dd26c02688bdf":"2WqAd","580224f94f990f62":"hMvuU",b10e9f8eeb123952:"jax2A","48560c9781a127f2":"jIw2h","32b923ba03725fba":"gy5Z3","38f5b7215a951c16":"eGHet","46fe02f5a4ca95f9":"gRGNk",b50e6043532127e:"aKTxx","6151c2d28c8d5622":"9Gc1y","302e65a20d20846c":"b3t88","3b8f9736d90d33e6":"a7xJN","73053c83e5457e82":"1F4QE",fb70244a02539db4:"nTyT0",ce38775557f57e2:"bkMBh","3fc29578d4056add":"f2Bvm","110dc2f32a5a5c80":"jxSFH",ea70ab055c82b9c6:"57hgN",c1e4a9f72f3e4c8a:"hJrte","1eb1f87000f1507b":"8eYDK",f04eacef530f3101:"hOqfp",efc72f3780a14232:"bBCsY",bb2b3970bd5df961:"j6kkx","3f106ce05bb305c2":"bxm6V","26177b9c0e662cb0":"bSHO0","657db89678e27c44":"5fZdP","7c097a1fe36e1e9e":"alCEF"}],j0TZA:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.Argument=void 0,n.Argument=class{constructor(e,t){this.value=e,this.range=t}toString(){return this.value}getRange(){return this.range}getValue(){return this.value}isAfter(e){return!(this.range.end.linee.line||this.range.start.character>e.character)}isBefore(e){return this.range.start.linee.line)&&this.range.end.character=1;e--)if(!a.Util.isWhitespace(n.charAt(e))){s=e+1;break}return i.Range.create(this.document.positionAt(t+r),this.document.positionAt(t+s))}}n.Comment=o},{"7469fdb9598c3ee1":"ghSGy","236e9d8672ea26a2":"jax2A",d962123f7b2d05e:"7JXpr"}],ghSGy:[function(e,t,n,r){var i=function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.TextDocument=t.EOL=t.WorkspaceFolder=t.InlineCompletionContext=t.SelectedCompletionInfo=t.InlineCompletionTriggerKind=t.InlineCompletionList=t.InlineCompletionItem=t.StringValue=t.InlayHint=t.InlayHintLabelPart=t.InlayHintKind=t.InlineValueContext=t.InlineValueEvaluatableExpression=t.InlineValueVariableLookup=t.InlineValueText=t.SemanticTokens=t.SemanticTokenModifiers=t.SemanticTokenTypes=t.SelectionRange=t.DocumentLink=t.FormattingOptions=t.CodeLens=t.CodeAction=t.CodeActionContext=t.CodeActionTriggerKind=t.CodeActionKind=t.DocumentSymbol=t.WorkspaceSymbol=t.SymbolInformation=t.SymbolTag=t.SymbolKind=t.DocumentHighlight=t.DocumentHighlightKind=t.SignatureInformation=t.ParameterInformation=t.Hover=t.MarkedString=t.CompletionList=t.CompletionItem=t.CompletionItemLabelDetails=t.InsertTextMode=t.InsertReplaceEdit=t.CompletionItemTag=t.InsertTextFormat=t.CompletionItemKind=t.MarkupContent=t.MarkupKind=t.TextDocumentItem=t.OptionalVersionedTextDocumentIdentifier=t.VersionedTextDocumentIdentifier=t.TextDocumentIdentifier=t.WorkspaceChange=t.WorkspaceEdit=t.DeleteFile=t.RenameFile=t.CreateFile=t.TextDocumentEdit=t.AnnotatedTextEdit=t.ChangeAnnotationIdentifier=t.ChangeAnnotation=t.TextEdit=t.Command=t.Diagnostic=t.CodeDescription=t.DiagnosticTag=t.DiagnosticSeverity=t.DiagnosticRelatedInformation=t.FoldingRange=t.FoldingRangeKind=t.ColorPresentation=t.ColorInformation=t.Color=t.LocationLink=t.Location=t.Range=t.Position=t.uinteger=t.integer=t.URI=t.DocumentUri=void 0,(es||(t.DocumentUri=es={})).is=function(e){return"string"==typeof e},(ea||(t.URI=ea={})).is=function(e){return"string"==typeof e},(D=eo||(t.integer=eo={})).MIN_VALUE=-0x80000000,D.MAX_VALUE=0x7fffffff,D.is=function(e){return"number"==typeof e&&D.MIN_VALUE<=e&&e<=D.MAX_VALUE},(M=ec||(t.uinteger=ec={})).MIN_VALUE=0,M.MAX_VALUE=0x7fffffff,M.is=function(e){return"number"==typeof e&&M.MIN_VALUE<=e&&e<=M.MAX_VALUE},(U=eu||(t.Position=eu={})).create=function(e,t){return e===Number.MAX_VALUE&&(e=ec.MAX_VALUE),t===Number.MAX_VALUE&&(t=ec.MAX_VALUE),{line:e,character:t}},U.is=function(e){return ty.objectLiteral(e)&&ty.uinteger(e.line)&&ty.uinteger(e.character)},(V=el||(t.Range=el={})).create=function(e,t,n,r){if(ty.uinteger(e)&&ty.uinteger(t)&&ty.uinteger(n)&&ty.uinteger(r))return{start:eu.create(e,t),end:eu.create(n,r)};if(eu.is(e)&&eu.is(t))return{start:e,end:t};throw Error("Range#create called with invalid arguments[".concat(e,", ").concat(t,", ").concat(n,", ").concat(r,"]"))},V.is=function(e){return ty.objectLiteral(e)&&eu.is(e.start)&&eu.is(e.end)},(F=ed||(t.Location=ed={})).create=function(e,t){return{uri:e,range:t}},F.is=function(e){return ty.objectLiteral(e)&&el.is(e.range)&&(ty.string(e.uri)||ty.undefined(e.uri))},(H=ef||(t.LocationLink=ef={})).create=function(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}},H.is=function(e){return ty.objectLiteral(e)&&el.is(e.targetRange)&&ty.string(e.targetUri)&&el.is(e.targetSelectionRange)&&(el.is(e.originSelectionRange)||ty.undefined(e.originSelectionRange))},(B=eg||(t.Color=eg={})).create=function(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}},B.is=function(e){return ty.objectLiteral(e)&&ty.numberRange(e.red,0,1)&&ty.numberRange(e.green,0,1)&&ty.numberRange(e.blue,0,1)&&ty.numberRange(e.alpha,0,1)},(q=eh||(t.ColorInformation=eh={})).create=function(e,t){return{range:e,color:t}},q.is=function(e){return ty.objectLiteral(e)&&el.is(e.range)&&eg.is(e.color)},($=ep||(t.ColorPresentation=ep={})).create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},$.is=function(e){return ty.objectLiteral(e)&&ty.string(e.label)&&(ty.undefined(e.textEdit)||ex.is(e))&&(ty.undefined(e.additionalTextEdits)||ty.typedArray(e.additionalTextEdits,ex.is))},(G=em||(t.FoldingRangeKind=em={})).Comment="comment",G.Imports="imports",G.Region="region",(K=eb||(t.FoldingRange=eb={})).create=function(e,t,n,r,i,s){var a={startLine:e,endLine:t};return ty.defined(n)&&(a.startCharacter=n),ty.defined(r)&&(a.endCharacter=r),ty.defined(i)&&(a.kind=i),ty.defined(s)&&(a.collapsedText=s),a},K.is=function(e){return ty.objectLiteral(e)&&ty.uinteger(e.startLine)&&ty.uinteger(e.startLine)&&(ty.undefined(e.startCharacter)||ty.uinteger(e.startCharacter))&&(ty.undefined(e.endCharacter)||ty.uinteger(e.endCharacter))&&(ty.undefined(e.kind)||ty.string(e.kind))},(J=ev||(t.DiagnosticRelatedInformation=ev={})).create=function(e,t){return{location:e,message:t}},J.is=function(e){return ty.defined(e)&&ed.is(e.location)&&ty.string(e.message)},(W=eA||(t.DiagnosticSeverity=eA={})).Error=1,W.Warning=2,W.Information=3,W.Hint=4,(Y=ey||(t.DiagnosticTag=ey={})).Unnecessary=1,Y.Deprecated=2,(eR||(t.CodeDescription=eR={})).is=function(e){return ty.objectLiteral(e)&&ty.string(e.href)},(z=ew||(t.Diagnostic=ew={})).create=function(e,t,n,r,i,s){var a={range:e,message:t};return ty.defined(n)&&(a.severity=n),ty.defined(r)&&(a.code=r),ty.defined(i)&&(a.source=i),ty.defined(s)&&(a.relatedInformation=s),a},z.is=function(e){var t;return ty.defined(e)&&el.is(e.range)&&ty.string(e.message)&&(ty.number(e.severity)||ty.undefined(e.severity))&&(ty.integer(e.code)||ty.string(e.code)||ty.undefined(e.code))&&(ty.undefined(e.codeDescription)||ty.string(null==(t=e.codeDescription)?void 0:t.href))&&(ty.string(e.source)||ty.undefined(e.source))&&(ty.undefined(e.relatedInformation)||ty.typedArray(e.relatedInformation,ev.is))},(X=eO||(t.Command=eO={})).create=function(e,t){for(var n=[],r=2;r0&&(i.arguments=n),i},X.is=function(e){return ty.defined(e)&&ty.string(e.title)&&ty.string(e.command)},(Q=ex||(t.TextEdit=ex={})).replace=function(e,t){return{range:e,newText:t}},Q.insert=function(e,t){return{range:{start:e,end:e},newText:t}},Q.del=function(e){return{range:e,newText:""}},Q.is=function(e){return ty.objectLiteral(e)&&ty.string(e.newText)&&el.is(e.range)},(Z=ek||(t.ChangeAnnotation=ek={})).create=function(e,t,n){var r={label:e};return void 0!==t&&(r.needsConfirmation=t),void 0!==n&&(r.description=n),r},Z.is=function(e){return ty.objectLiteral(e)&&ty.string(e.label)&&(ty.boolean(e.needsConfirmation)||void 0===e.needsConfirmation)&&(ty.string(e.description)||void 0===e.description)},(e_||(t.ChangeAnnotationIdentifier=e_={})).is=function(e){return ty.string(e)},(ee=eC||(t.AnnotatedTextEdit=eC={})).replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},ee.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},ee.del=function(e,t){return{range:e,newText:"",annotationId:t}},ee.is=function(e){return ex.is(e)&&(ek.is(e.annotationId)||e_.is(e.annotationId))},(et=eI||(t.TextDocumentEdit=eI={})).create=function(e,t){return{textDocument:e,edits:t}},et.is=function(e){return ty.defined(e)&&eL.is(e.textDocument)&&Array.isArray(e.edits)},(en=eE||(t.CreateFile=eE={})).create=function(e,t,n){var r={kind:"create",uri:e};return void 0!==t&&(void 0!==t.overwrite||void 0!==t.ignoreIfExists)&&(r.options=t),void 0!==n&&(r.annotationId=n),r},en.is=function(e){return e&&"create"===e.kind&&ty.string(e.uri)&&(void 0===e.options||(void 0===e.options.overwrite||ty.boolean(e.options.overwrite))&&(void 0===e.options.ignoreIfExists||ty.boolean(e.options.ignoreIfExists)))&&(void 0===e.annotationId||e_.is(e.annotationId))},(er=eS||(t.RenameFile=eS={})).create=function(e,t,n,r){var i={kind:"rename",oldUri:e,newUri:t};return void 0!==n&&(void 0!==n.overwrite||void 0!==n.ignoreIfExists)&&(i.options=n),void 0!==r&&(i.annotationId=r),i},er.is=function(e){return e&&"rename"===e.kind&&ty.string(e.oldUri)&&ty.string(e.newUri)&&(void 0===e.options||(void 0===e.options.overwrite||ty.boolean(e.options.overwrite))&&(void 0===e.options.ignoreIfExists||ty.boolean(e.options.ignoreIfExists)))&&(void 0===e.annotationId||e_.is(e.annotationId))},(ei=eT||(t.DeleteFile=eT={})).create=function(e,t,n){var r={kind:"delete",uri:e};return void 0!==t&&(void 0!==t.recursive||void 0!==t.ignoreIfNotExists)&&(r.options=t),void 0!==n&&(r.annotationId=n),r},ei.is=function(e){return e&&"delete"===e.kind&&ty.string(e.uri)&&(void 0===e.options||(void 0===e.options.recursive||ty.boolean(e.options.recursive))&&(void 0===e.options.ignoreIfNotExists||ty.boolean(e.options.ignoreIfNotExists)))&&(void 0===e.annotationId||e_.is(e.annotationId))},(eP||(t.WorkspaceEdit=eP={})).is=function(e){return e&&(void 0!==e.changes||void 0!==e.documentChanges)&&(void 0===e.documentChanges||e.documentChanges.every(function(e){return ty.string(e.kind)?eE.is(e)||eS.is(e)||eT.is(e):eI.is(e)}))};var n,r,i,s,a,o,c,u,l,d,f,g,h,p,m,b,v,A,y,R,w,O,x,k,_,C,I,E,S,T,P,j,N,L,D,M,U,V,F,H,B,q,$,G,K,J,W,Y,z,X,Q,Z,ee,et,en,er,ei,es,ea,eo,ec,eu,el,ed,ef,eg,eh,ep,em,eb,ev,eA,ey,eR,ew,eO,ex,ek,e_,eC,eI,eE,eS,eT,eP,ej,eN,eL,eD,eM,eU,eV,eF,eH,eB,eq,e$,eG,eK,eJ,eW,eY,ez,eX,eQ,eZ,e0,e1,e2,e3,e5,e7,e8,e4,e6,e9,te,tt,tn,tr,ti,ts,ta,to,tc,tu,tl,td,tf,tg,th,tp,tm,tb,tv,tA,ty,tR=function(){function e(e,t){this.edits=e,this.changeAnnotations=t}return e.prototype.insert=function(e,t,n){var r,i;if(void 0===n?r=ex.insert(e,t):e_.is(n)?(i=n,r=eC.insert(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=eC.insert(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.replace=function(e,t,n){var r,i;if(void 0===n?r=ex.replace(e,t):e_.is(n)?(i=n,r=eC.replace(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=eC.replace(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.delete=function(e,t){var n,r;if(void 0===t?n=ex.del(e):e_.is(t)?(r=t,n=eC.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),r=this.changeAnnotations.manage(t),n=eC.del(e,r)),this.edits.push(n),void 0!==r)return r},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e.prototype.assertChangeAnnotations=function(e){if(void 0===e)throw Error("Text edit change is not configured to manage change annotations.")},e}(),tw=function(){function e(e){this._annotations=void 0===e?Object.create(null):e,this._counter=0,this._size=0}return e.prototype.all=function(){return this._annotations},Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),e.prototype.manage=function(e,t){var n;if(e_.is(e)?n=e:(n=this.nextId(),t=e),void 0!==this._annotations[n])throw Error("Id ".concat(n," is already in use."));if(void 0===t)throw Error("No annotation provided for id ".concat(n));return this._annotations[n]=t,this._size++,n},e.prototype.nextId=function(){return this._counter++,this._counter.toString()},e}();t.WorkspaceChange=function(){function e(e){var t=this;this._textEditChanges=Object.create(null),void 0!==e?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new tw(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach(function(e){if(eI.is(e)){var n=new tR(e.edits,t._changeAnnotations);t._textEditChanges[e.textDocument.uri]=n}})):e.changes&&Object.keys(e.changes).forEach(function(n){var r=new tR(e.changes[n]);t._textEditChanges[n]=r})):this._workspaceEdit={}}return Object.defineProperty(e.prototype,"edit",{get:function(){return this.initDocumentChanges(),void 0!==this._changeAnnotations&&(0===this._changeAnnotations.size?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),e.prototype.getTextEditChange=function(e){if(eL.is(e)){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw Error("Workspace edit is not configured for document changes.");var t={uri:e.uri,version:e.version},n=this._textEditChanges[t.uri];if(!n){var r=[],i={textDocument:t,edits:r};this._workspaceEdit.documentChanges.push(i),n=new tR(r,this._changeAnnotations),this._textEditChanges[t.uri]=n}return n}if(this.initChanges(),void 0===this._workspaceEdit.changes)throw Error("Workspace edit is not configured for normal text edit changes.");var n=this._textEditChanges[e];if(!n){var r=[];this._workspaceEdit.changes[e]=r,n=new tR(r),this._textEditChanges[e]=n}return n},e.prototype.initDocumentChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._changeAnnotations=new tw,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},e.prototype.initChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._workspaceEdit.changes=Object.create(null))},e.prototype.createFile=function(e,t,n){var r,i,s;if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw Error("Workspace edit is not configured for document changes.");if(ek.is(t)||e_.is(t)?r=t:n=t,void 0===r?i=eE.create(e,n):(s=e_.is(r)?r:this._changeAnnotations.manage(r),i=eE.create(e,n,s)),this._workspaceEdit.documentChanges.push(i),void 0!==s)return s},e.prototype.renameFile=function(e,t,n,r){var i,s,a;if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw Error("Workspace edit is not configured for document changes.");if(ek.is(n)||e_.is(n)?i=n:r=n,void 0===i?s=eS.create(e,t,r):(a=e_.is(i)?i:this._changeAnnotations.manage(i),s=eS.create(e,t,r,a)),this._workspaceEdit.documentChanges.push(s),void 0!==a)return a},e.prototype.deleteFile=function(e,t,n){var r,i,s;if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw Error("Workspace edit is not configured for document changes.");if(ek.is(t)||e_.is(t)?r=t:n=t,void 0===r?i=eT.create(e,n):(s=e_.is(r)?r:this._changeAnnotations.manage(r),i=eT.create(e,n,s)),this._workspaceEdit.documentChanges.push(i),void 0!==s)return s},e}(),(n=ej||(t.TextDocumentIdentifier=ej={})).create=function(e){return{uri:e}},n.is=function(e){return ty.defined(e)&&ty.string(e.uri)},(r=eN||(t.VersionedTextDocumentIdentifier=eN={})).create=function(e,t){return{uri:e,version:t}},r.is=function(e){return ty.defined(e)&&ty.string(e.uri)&&ty.integer(e.version)},(i=eL||(t.OptionalVersionedTextDocumentIdentifier=eL={})).create=function(e,t){return{uri:e,version:t}},i.is=function(e){return ty.defined(e)&&ty.string(e.uri)&&(null===e.version||ty.integer(e.version))},(s=eD||(t.TextDocumentItem=eD={})).create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},s.is=function(e){return ty.defined(e)&&ty.string(e.uri)&&ty.string(e.languageId)&&ty.integer(e.version)&&ty.string(e.text)},(a=eM||(t.MarkupKind=eM={})).PlainText="plaintext",a.Markdown="markdown",a.is=function(e){return e===a.PlainText||e===a.Markdown},(eU||(t.MarkupContent=eU={})).is=function(e){return ty.objectLiteral(e)&&eM.is(e.kind)&&ty.string(e.value)},(o=eV||(t.CompletionItemKind=eV={})).Text=1,o.Method=2,o.Function=3,o.Constructor=4,o.Field=5,o.Variable=6,o.Class=7,o.Interface=8,o.Module=9,o.Property=10,o.Unit=11,o.Value=12,o.Enum=13,o.Keyword=14,o.Snippet=15,o.Color=16,o.File=17,o.Reference=18,o.Folder=19,o.EnumMember=20,o.Constant=21,o.Struct=22,o.Event=23,o.Operator=24,o.TypeParameter=25,(c=eF||(t.InsertTextFormat=eF={})).PlainText=1,c.Snippet=2,(eH||(t.CompletionItemTag=eH={})).Deprecated=1,(u=eB||(t.InsertReplaceEdit=eB={})).create=function(e,t,n){return{newText:e,insert:t,replace:n}},u.is=function(e){return e&&ty.string(e.newText)&&el.is(e.insert)&&el.is(e.replace)},(l=eq||(t.InsertTextMode=eq={})).asIs=1,l.adjustIndentation=2,(e$||(t.CompletionItemLabelDetails=e$={})).is=function(e){return e&&(ty.string(e.detail)||void 0===e.detail)&&(ty.string(e.description)||void 0===e.description)},(eG||(t.CompletionItem=eG={})).create=function(e){return{label:e}},(eK||(t.CompletionList=eK={})).create=function(e,t){return{items:e||[],isIncomplete:!!t}},(d=eJ||(t.MarkedString=eJ={})).fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},d.is=function(e){return ty.string(e)||ty.objectLiteral(e)&&ty.string(e.language)&&ty.string(e.value)},(eW||(t.Hover=eW={})).is=function(e){return!!e&&ty.objectLiteral(e)&&(eU.is(e.contents)||eJ.is(e.contents)||ty.typedArray(e.contents,eJ.is))&&(void 0===e.range||el.is(e.range))},(eY||(t.ParameterInformation=eY={})).create=function(e,t){return t?{label:e,documentation:t}:{label:e}},(ez||(t.SignatureInformation=ez={})).create=function(e,t){for(var n=[],r=2;r=n(i[a],s[o])?t[c++]=i[a++]:t[c++]=s[o++];for(;a=0;s--){var a=r[s],o=e.offsetAt(a.range.start),c=e.offsetAt(a.range.end);if(c<=i)n=n.substring(0,o)+a.newText+n.substring(c,n.length);else throw Error("Overlapping edit");i=o}return n};var tO=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!1,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0},e.prototype.getLineOffsets=function(){if(void 0===this._lineOffsets){for(var e=[],t=this._content,n=!0,r=0;r0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return eu.create(0,e);for(;ne?r=i:n=i+1}var s=n-1;return eu.create(s,e-t[s])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1e.range.start.line}isBefore(e){return this.range.start.line0?(t.setDirectives(n),this.escapeChar=t.getEscapeCharacter(),r=this.document.offsetAt(s.Position.create(n.length,0))):_.Util.isUTF8BOM(e.substring(0,1))&&(r=1);for(let e=r;e2){let t=_.Util.parseHeredocName(e);null!==t&&r.push(t)}}if(r.length>0)for(let e of r)t=this.parseHeredoc(e,t);return t}processArguments(e,t,n,r,i){let s=!1;s:for(let a=i+1;ae?r=i:n=i+1}var s=n-1;return e=this.ensureBeforeEOL(e,t[s]),{line:s,character:e-t[s]}},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line];if(e.character<=0)return n;var r=e.line+1t&&o(this._content.charCodeAt(e-1));)e--;return e},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),e.isIncremental=function(e){return null!=e&&"string"==typeof e.text&&void 0!==e.range&&(void 0===e.rangeLength||"number"==typeof e.rangeLength)},e.isFull=function(e){return null!=e&&"string"==typeof e.text&&void 0===e.range&&void 0===e.rangeLength},e}();function a(e,t,n){void 0===n&&(n=0);for(var r=t?[n]:[],i=0;in.line||t.line===n.line&&t.character>n.character?{start:n,end:t}:e}function u(e){var t=c(e.range);return t!==e.range?{newText:e.newText,range:t}:e}(n=r||(t.TextDocument=r={})).create=function(e,t,n,r){return new s(e,t,n,r)},n.update=function(e,t,n){if(e instanceof s)return e.update(t,n),e;throw Error("TextDocument.update: document must be created by TextDocument.create")},n.applyEdits=function(e,t){for(var n=e.getText(),r=function e(t,n){if(t.length<=1)return t;var r=t.length/2|0,i=t.slice(0,r),s=t.slice(r);e(i,n),e(s,n);for(var a=0,o=0,c=0;a=n(i[a],s[o])?t[c++]=i[a++]:t[c++]=s[o++];for(;ai&&s.push(n.substring(i,c)),o.newText.length&&s.push(o.newText),i=e.offsetAt(o.range.end)}return s.push(n.substr(i)),s.join("")}};if("object"==typeof t.exports){var a=s(void 0,n);void 0!==a&&(t.exports=a)}else"function"==typeof define&&define.amd&&define(["require","exports"],s)},{}],jIw2h:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.ParserDirective=void 0;let i=e("83344ee6e442f65c"),s=e("628c95531afa43c2");class a extends s.Line{constructor(e,t,n,r){super(e,t),this.nameRange=n,this.valueRange=r}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(){let e=i.Directive[this.getName().toLowerCase()];return void 0===e?null:e}}n.ParserDirective=a},{"83344ee6e442f65c":"1irbL","628c95531afa43c2":"jax2A"}],hMvuU:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.Instruction=void 0;let i=e("75e3371b54792caa"),s=e("fa72f15fb47197d2"),a=e("dc037d211747d0bf"),o=e("674d83a5e08e316f"),c=e("f30c1c980ba59082"),u=e("6c1e8830b0f0285c"),l=e("c02c05f3ca580f8f");class d extends a.Line{constructor(e,t,n,r,i,s){super(e,t),this.dockerfile=n,this.escapeChar=r,this.instruction=i,this.instructionRange=s}toString(){let e=this.getKeyword();for(let t of this.getRawArguments())e+=" ",e+=t.getValue();return e}getRangeContent(e){return null===e?null:this.document.getText().substring(this.document.offsetAt(e.start),this.document.offsetAt(e.end))}getInstructionRange(){return this.instructionRange}getInstruction(){return this.instruction}getKeyword(){return this.getInstruction().toUpperCase()}getArgumentsRange(){let e=this.getArguments();return 0===e.length?null:i.Range.create(e[0].getRange().start,e[e.length-1].getRange().end)}getArgumentsRanges(){let e=this.getArguments();if(0===e.length)return[];if(e[0].getRange().start.line===e[e.length-1].getRange().end.line)return[i.Range.create(e[0].getRange().start,e[e.length-1].getRange().end)];let t=[],n=-1,r=e[0].getRange().start,a=this.getInstructionRange(),o=this.document.offsetAt(r)-this.document.offsetAt(a.start),c=this.getTextContent().substring(o,this.document.offsetAt(e[e.length-1].getRange().end)-this.document.offsetAt(a.start)),u=this.document.offsetAt(a.start)+o,l=!1;for(let e=0;e=0;n--)if(r[n].isBefore(t)){for(let t of r[n].getProperties())if(t.getName()===e)return!1}let s=n.getARGs();for(let n=s.length-1;n>=0;n--)if(s[n].isBefore(t)){let t=s[n].getProperty();if(t&&t.getName()===e)return!0}}createSingleLineHeredocs(e){let t=[];for(let n of e){let e=n.getValue();if(e.startsWith("<<")&&null!==s.Util.parseHeredocName(e)){let e=n.getRange(),r=this.getNameRange(e),i=this.getName(r);t.push(new c.Heredoc(e,i,r,null,null))}}return t}getName(e){let t=this.document.getText(e),n=!1,r="";c:for(let e=0;e0}}},{"4b50d54787c41ee7":"ghSGy",b99c8b3ac173456d:"epAH1"}],epAH1:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.FlagOption=void 0,n.FlagOption=class{constructor(e,t,n,r,i){this.range=e,this.name=t,this.nameRange=n,this.value=r,this.valueRange=i}toString(){return null!==this.valueRange?this.name+"="+this.value:this.name}getRange(){return this.range}getName(){return this.name}getNameRange(){return this.nameRange}getValue(){return this.value}getValueRange(){return this.valueRange}}},{}],aKTxx:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.Arg=void 0;let i=e("80085cc42a36e81"),s=e("7526e7dfe4901c29");class a extends s.PropertyInstruction{constructor(e,t,n,r,s,a){super(e,t,n,r,s,a),this.property=null;let o=this.getPropertyArguments();1===o.length?this.property=new i.Property(this.document,this.escapeChar,o[0]):this.property=null}getProperty(){return this.property}}n.Arg=a},{"80085cc42a36e81":"gy5Z3","7526e7dfe4901c29":"hOqfp"}],gy5Z3:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.Property=void 0;let i=e("e172fc4caa74424"),s=e("554d16feb7eb1735");class a{constructor(e,t,n,r){this.assignmentOperatorRange=null,this.assignmentOperator=null,this.valueRange=null,this.value=null,this.document=e,this.escapeChar=t,this.nameRange=a.getNameRange(e,n);let s=e.getText().substring(e.offsetAt(this.nameRange.start),e.offsetAt(this.nameRange.end));if(this.name=a.getValue(s,t),r)this.valueRange=r.getRange(),s=e.getText().substring(e.offsetAt(this.valueRange.start),e.offsetAt(this.valueRange.end)),this.value=a.getValue(s,t),this.range=i.Range.create(this.nameRange.start,this.valueRange.end);else{let r=n.getRange();this.nameRange.start.line===r.start.line&&this.nameRange.start.character===r.start.character&&this.nameRange.end.line===r.end.line&&this.nameRange.end.character===r.end.character||(this.valueRange=a.getValueRange(e,n),s=e.getText().substring(e.offsetAt(this.valueRange.start),e.offsetAt(this.valueRange.end)),this.value=a.getValue(s,t),this.assignmentOperatorRange=i.Range.create(this.nameRange.end,this.valueRange.start),this.assignmentOperator="="),this.range=r}}getRange(){return this.range}getName(){return this.name}getNameRange(){return this.nameRange}getValue(){return this.value}getValueRange(){return this.valueRange}getAssignmentOperator(){return this.assignmentOperator}getAssignmentOperatorRange(){return this.assignmentOperatorRange}getUnescapedValue(){if(null===this.valueRange)return null;let e=!1,t="",n=this.document.getText().substring(this.document.offsetAt(this.valueRange.start),this.document.offsetAt(this.valueRange.end));f:for(let r=0;r=0;n--)switch(e.charAt(n)){case" ":case" ":continue;case"\n":"\r"===e.charAt(n-1)&&(n-=1);case"\r":h:for(let r=n-1;r>=0;r--)switch(e.charAt(r)){case" ":case" ":case"\r":case"\n":case this.escapeChar:continue;default:t=r;break h}break e;default:t=n;break e}return t}getPropertyArguments(){let e=[],t=this.getInstructionRange(),n=this.document.offsetAt(t.end),r=n-this.document.offsetAt(t.start),s=this.getTextContent(),a=s.substring(r),u=c.Util.findLeadingNonWhitespace(a,this.escapeChar);if(-1===u)return[];let l=this.document.positionAt(n+u),d=t.start.line!==l.line,f=!1,g=-1,h=this.findTrailingNonWhitespace(a);s=a.substring(u,h+1);let p=d?-1:0,m=!1;p:for(let t=0;ts)return i.Range.create(e.start.line,e.start.character+r+1,e.end.line,e.end.character)}let a=n.substring(0,r),o=a.indexOf(":");return -1===o?null:-1===s?i.Range.create(this.document.positionAt(t+o+1),this.document.positionAt(t+r)):o2&&"AS"===e[1].getValue().toUpperCase()?e[2].getRange():null}getPlatformFlag(){let e=super.getFlags();return 1===e.length&&"platform"===e[0].getName()?e[0]:null}}n.From=a},{"5b86d61a77060318":"ghSGy","3fab8faba231e372":"hJrte"}],bkMBh:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.Healthcheck=void 0;let i=e("665598fff2f000a9");class s extends i.ModifiableInstruction{constructor(e,t,n,r,i,s){super(e,t,n,r,i,s)}stopSearchingForFlags(e){return"CMD"===(e=e.toUpperCase())||"NONE"===e}getSubcommand(){let e=this.getArguments();return 0!==e.length?e[0]:null}}n.Healthcheck=s},{"665598fff2f000a9":"hJrte"}],"57hgN":[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.Label=void 0;let i=e("2a3c43ab2d532e31"),s=e("5d28f2c31403599f");class a extends i.PropertyInstruction{constructor(e,t,n,r,i,s){super(e,t,n,r,i,s)}getVariables(){let e=super.getVariables();for(let t of this.getProperties()){let n=t.getUnescapedValue();if(null!==n&&n.length>2&&"'"===n.charAt(0)&&"'"===n.charAt(n.length-1)){let n=t.getValueRange();for(let t=0;t0?e[0].getRange():null}getTriggerInstruction(){let e=this.getTriggerRange();if(null===e)return null;let t=this.getArguments();return s.Parser.createInstruction(this.document,this.dockerfile,this.escapeChar,i.Range.create(t[0].getRange().start,this.getRange().end),this.getTriggerWord(),e)}}n.Onbuild=o},{"8cc927a606bbcc1f":"ghSGy","929a3cd6b7bd5151":"aGQ73","5311b0a026532a3":"hMvuU"}],bBCsY:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.Run=void 0;let i=e("d3870bc430335c64");class s extends i.JSONInstruction{constructor(e,t,n,r,i,s){super(e,t,n,r,i,s)}stopSearchingForFlags(e){return -1===e.indexOf("--")}getHeredocs(){return super.getHeredocs()}}n.Run=s},{d3870bc430335c64:"jxSFH"}],j6kkx:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.Shell=void 0;let i=e("dc6aa9db0db2b2a4");class s extends i.JSONInstruction{constructor(e,t,n,r,i,s){super(e,t,n,r,i,s)}}n.Shell=s},{dc6aa9db0db2b2a4:"jxSFH"}],bxm6V:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.Stopsignal=void 0;let i=e("e3fce526f69f22f");class s extends i.Instruction{constructor(e,t,n,r,i,s){super(e,t,n,r,i,s)}}n.Stopsignal=s},{e3fce526f69f22f:"hMvuU"}],alCEF:[function(e,t,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.Workdir=void 0;let i=e("95b77616cbe9ddd8");class s extends i.Instruction{constructor(e,t,n,r,i,s){super(e,t,n,r,i,s)}getPath(){return this.getArgumentsContent()}getAbsolutePath(){let e=this.getPath();if(null===e||e.startsWith("/"))return e;let t=this.getRange().start.line,n=this.dockerfile.getStageHierarchy(t);for(let r=n.length-1;r>=0;r--){let i=n[r].getWORKDIRs();for(let n=i.length-1;n>=0;n--)if(i[n].getRange().start.line0||this.initialInstructions.getInstructions().length>0)&&c.Util.isInsideRange(e,this.initialInstructions.getRange()))return this.initialInstructions;for(let t of this.buildStages)if(c.Util.isInsideRange(e,t.getRange()))return t;return this}addInstruction(e){e.getKeyword()===u.Keyword.FROM?(this.currentBuildStage=new a.ImageTemplate,this.buildStages.push(this.currentBuildStage),this.foundFrom=!0):this.foundFrom||this.initialInstructions.addInstruction(e),this.foundFrom&&this.currentBuildStage.addInstruction(e),super.addInstruction(e)}setDirectives(e){this.directives=e}getDirective(){return 0===this.directives.length?null:this.directives[0]}getDirectives(){return this.directives}resolveVariable(e,t){for(let n of this.getFROMs()){let r=n.getRange();if(r.start.line<=t&&t<=r.end.line){let n=new a.ImageTemplate;for(let e of this.initialInstructions.getARGs())n.addInstruction(e);return n.resolveVariable(e,t)}}let n=this.getContainingImage(i.Position.create(t,0));if(null===n)return;let r=n.resolveVariable(e,t);if(null===r){let n=new a.ImageTemplate;for(let e of this.initialInstructions.getARGs())n.addInstruction(e);return n.resolveVariable(e,t)}return r}getAvailableVariables(e){if(this.getInstructionAt(e)instanceof o.From){let e=[];for(let t of this.getInitialARGs()){let n=t.getProperty();n&&e.push(n.getName())}return e}let t=this.getContainingImage(i.Position.create(e,0));return t?t.getAvailableVariables(e):[]}getParentStage(e){let t=e.getFROM(),n=null===t?null:t.getImageName();if(null===n)return null;for(let e of this.getFROMs())if(e.getBuildStage()===n){let n=e.getRange();if(n.start.line===t.getRange().start.line)return null;return this.getContainingImage(n.start)}return null}getStageHierarchy(e){let t=this.getContainingImage(i.Position.create(e,0));if(null===t)return[];let n=[t],r=this.getParentStage(t);for(;null!==r;)n.splice(0,0,r),r=this.getParentStage(r);return n}getAvailableWorkingDirectories(e){let t=new Set;for(let n of this.getStageHierarchy(e))for(let r of n.getWORKDIRs())if(r.getRange().end.line0&&(n=i.Range.create(t[0].getRange().start,t[t.length-1].getRange().end));else if(0===t.length)n=i.Range.create(e[0].getRange().start,e[e.length-1].getRange().end);else{let r=e[0].getRange().start,s=e[e.length-1].getRange().end,a=t[0].getRange().start,o=t[t.length-1].getRange().end;r.line=0;r--)if(n[r].isBefore(t)){for(let t of n[r].getProperties())if(t.getName()===e)return t.getValue()}let r=this.getARGs();for(let n=r.length-1;n>=0;n--)if(r[n].isBefore(t)){let t=r[n].getProperty();if(t&&t.getName()===e)return t.getValue()}}getRange(){let e=this.getInstructions();if(0===e.length)return i.Range.create(0,0,0,0);let t=e[0].getRange().start,n=e[e.length-1].getRange().end;return i.Range.create(t,n)}contains(e){let t=this.getRange();return null!==t&&g.Util.isInsideRange(e,t)}}},{"637eaa8a1fc84367":"ghSGy","8d6e1611976d457":"aKTxx","7049fdb6ce6cfe77":"9Gc1y","18fb214fae92c2ad":"b3t88",ed7edb89b8b53c18:"1F4QE","404b55dc97f3131e":"a7xJN","8a1e47b88288dfaa":"nTyT0","67d1d9c7cde52290":"bkMBh","434b828c9fd563cf":"8eYDK","94e3edfa252cd826":"7JXpr","97943bcfae78dd09":"alCEF"}],kHqLa:[function(e,t,n,r){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"run",()=>u),i.export(n,"runPiped",()=>l);var s=e("spawn-please"),a=i.interopDefault(s),o=e("child_process"),c=i.interopDefault(o);async function u(e,t){try{return await (0,a.default)(e,t)}catch(n){throw console.error(`Error running command: ${e} ${t.join(" ")}`),n}}async function l([e,t],[n,r]){let i=c.default.spawn(e,t,{stdio:["inherit","pipe","inherit"]}),s=c.default.spawn(n,r,{stdio:["pipe","inherit","inherit"]});i.stdout.pipe(s.stdin),await Promise.all([d(i),d(s)])}function d(e){return new Promise((t,n)=>{e.on("error",e=>{n(e)}),e.on("close",e=>{0!==e&&n(Error(`process exited with code ${e}`)),t()})})}},{"spawn-please":"7zP4I",child_process:"child_process","@parcel/transformer-js/src/esmodule-helpers.js":"8h9S8"}],"7zP4I":[function(e,t,n,r){let i=e("8fbf49fd88b8ce1a");t.exports=(e,t,n={},r={})=>{void 0===n.rejectOnError&&(n.rejectOnError=!0);let s="",a="",o=i(e,t,r);return new Promise((e,t)=>{void 0!==n.stdin&&null!=n.stdin&&o.stdin.write(n.stdin),o.stdin.end(),o.stdout.on("data",e=>{s+=e,n.stdout&&n.stdout(e)}),o.stderr.on("data",e=>{a+=e,n.stderr&&n.stderr(e)}),n.rejectOnError&&o.addListener("error",t),o.on("close",r=>{0!==r&&n.rejectOnError?t(a):e({stdout:s,stderr:a})})})}},{"8fbf49fd88b8ce1a":"gOFfe"}],gOFfe:[function(e,t,n,r){let i=e("5db4eea157dc6abd"),s=e("f459d4faad83418d"),a=e("5967fe713a07bdb3");function o(e,t,n){let r=s(e,t,n),o=i.spawn(r.command,r.args,r.options);return a.hookChildProcess(o,r),o}t.exports=o,t.exports.spawn=o,t.exports.sync=function(e,t,n){let r=s(e,t,n),o=i.spawnSync(r.command,r.args,r.options);return o.error=o.error||a.verifyENOENTSync(o.status,r),o},t.exports._parse=s,t.exports._enoent=a},{"5db4eea157dc6abd":"child_process",f459d4faad83418d:"hSOoE","5967fe713a07bdb3":"e03Rd"}],hSOoE:[function(e,t,n,r){let i=e("bb49ff520c0c29ab"),s=e("cf8451362f6c35b9"),a=e("f76fb8d716c0dfc3"),o=e("91585cdbf7f6adf6"),c="win32"===process.platform,u=/\.(?:com|exe)$/i,l=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;t.exports=function(e,t,n){t&&!Array.isArray(t)&&(n=t,t=null);let r={command:e,args:t=t?t.slice(0):[],options:n=Object.assign({},n),file:void 0,original:{command:e,args:t}};return n.shell?r:function(e){if(!c)return e;let t=function(e){e.file=s(e);let t=e.file&&o(e.file);return t?(e.args.unshift(e.file),e.command=t,s(e)):e.file}(e),n=!u.test(t);if(e.options.forceShell||n){let n=l.test(t);e.command=i.normalize(e.command),e.command=a.command(e.command),e.args=e.args.map(e=>a.argument(e,n));let r=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${r}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}(r)}},{bb49ff520c0c29ab:"path",cf8451362f6c35b9:"iyIqb",f76fb8d716c0dfc3:"kqk3O","91585cdbf7f6adf6":"9LoJM"}],iyIqb:[function(e,t,n,r){let i=e("23fb8fe1b2d52b3"),s=e("f9b07d03c0b43245"),a=e("ef7a99e848f61b11");function o(e,t){let n,r=e.options.env||process.env,o=process.cwd(),c=null!=e.options.cwd,u=c&&void 0!==process.chdir&&!process.chdir.disabled;if(u)try{process.chdir(e.options.cwd)}catch(e){}try{n=s.sync(e.command,{path:r[a({env:r})],pathExt:t?i.delimiter:void 0})}catch(e){}finally{u&&process.chdir(o)}return n&&(n=i.resolve(c?e.options.cwd:"",n)),n}t.exports=function(e){return o(e)||o(e,!0)}},{"23fb8fe1b2d52b3":"path",f9b07d03c0b43245:"g0W6J",ef7a99e848f61b11:"7G1S5"}],g0W6J:[function(e,t,n,r){let i="win32"===process.platform||"cygwin"===process.env.OSTYPE||"msys"===process.env.OSTYPE,s=e("1c762486b04d50e4"),a=i?";":":",o=e("e2e7d3eebf2f2d35"),c=e=>Object.assign(Error(`not found: ${e}`),{code:"ENOENT"}),u=(e,t)=>{let n=t.colon||a,r=e.match(/\//)||i&&e.match(/\\/)?[""]:[...i?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(n)],s=i?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",o=i?s.split(n):[""];return i&&-1!==e.indexOf(".")&&""!==o[0]&&o.unshift(""),{pathEnv:r,pathExt:o,pathExtExe:s}},l=(e,t,n)=>{"function"==typeof t&&(n=t,t={}),t||(t={});let{pathEnv:r,pathExt:i,pathExtExe:a}=u(e,t),l=[],d=n=>new Promise((i,a)=>{if(n===r.length)return t.all&&l.length?i(l):a(c(e));let o=r[n],u=/^".*"$/.test(o)?o.slice(1,-1):o,d=s.join(u,e);i(f(!u&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d,n,0))}),f=(e,n,r)=>new Promise((s,c)=>{if(r===i.length)return s(d(n+1));let u=i[r];o(e+u,{pathExt:a},(i,a)=>{if(!i&&a)if(!t.all)return s(e+u);else l.push(e+u);return s(f(e,n,r+1))})});return n?d(0).then(e=>n(null,e),n):d(0)};t.exports=l,l.sync=(e,t)=>{let{pathEnv:n,pathExt:r,pathExtExe:i}=u(e,t=t||{}),a=[];for(let c=0;c{let t=e.env||process.env;return"win32"!==(e.platform||process.platform)?"PATH":Object.keys(t).reverse().find(e=>"PATH"===e.toUpperCase())||"Path"};t.exports=i,t.exports.default=i},{}],kqk3O:[function(e,t,n,r){let i=/([()\][%!^"`<>&|;, *?])/g;t.exports.command=function(e){return e=e.replace(i,"^$1")},t.exports.argument=function(e,t){return e=(e=(e=`${e}`).replace(/(?=(\\+?)?)\1"/g,'$1$1\\"')).replace(/(?=(\\+?)?)\1$/,"$1$1"),e=(e=`"${e}"`).replace(i,"^$1"),t&&(e=e.replace(i,"^$1")),e}},{}],"9LoJM":[function(e,t,n,r){let i=e("2fc5e4232a07a9d2"),s=e("c4e857260abf33c0");t.exports=function(e){let t,n=Buffer.alloc(150);try{t=i.openSync(e,"r"),i.readSync(t,n,0,150,0),i.closeSync(t)}catch(e){}return s(n.toString())}},{"2fc5e4232a07a9d2":"fs",c4e857260abf33c0:"drkAo"}],drkAo:[function(e,t,n,r){let i=e("9df9c2d321a8ee95");t.exports=(e="")=>{let t=e.match(i);if(!t)return null;let[n,r]=t[0].replace(/#! ?/,"").split(" "),s=n.split("/").pop();return"env"===s?r:r?`${s} ${r}`:s}},{"9df9c2d321a8ee95":"gq3Q3"}],gq3Q3:[function(e,t,n,r){t.exports=/^#!(.*)/},{}],e03Rd:[function(e,t,n,r){let i="win32"===process.platform;function s(e,t){return Object.assign(Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function a(e,t){return i&&1===e&&!t.file?s(t.original,"spawn"):null}t.exports={hookChildProcess:function(e,t){if(!i)return;let n=e.emit;e.emit=function(r,i){if("exit"===r){let r=a(i,t);if(r)return n.call(e,"error",r)}return n.apply(e,arguments)}},verifyENOENT:a,verifyENOENTSync:function(e,t){return i&&1===e&&!t.file?s(t.original,"spawnSync"):null},notFoundError:s}},{}],"14eXt":[function(e,t,n,r){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"extractCaches",()=>d);var s=e("fs"),a=e("path"),o=i.interopDefault(a),c=e("./opts.js"),u=e("./run.js");async function l(e,t,n,r,i){let a=new Date().toISOString();await s.promises.mkdir(n,{recursive:!0}),await s.promises.writeFile(o.default.join(n,"buildstamp"),a);let l=(0,c.getTargetPath)(t),d=(0,c.getMountArgsString)(t),f=` +FROM ${r} COPY buildstamp buildstamp -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); - console.log(dancefileContent); - // Inject Data into Docker Cache - await (0, $4c028fad90f63861$export$889ea624f2cb2c57)('docker', [ - 'buildx', - 'build', - '--builder', - builder, - '-f', - (0, $evV72$path).join(scratchDir, 'Dancefile.inject'), - '--tag', - 'dance:inject', - cacheSource - ]); - // Clean Directories - try { - await (0, $evV72$fspromises).rm(cacheSource, { - recursive: true, - force: true - }); - } catch (err) { - // Ignore Cleaning Errors - (0, $bbb9dac42384d004$exports.notice)(`Error while cleaning cache source directory: ${err}. Ignoring...`); - } -} -async function $bd1d73aff0732146$export$38c65e9f06d3d433(opts) { - const cacheMap = (0, $76d06fcdc9bff1f5$export$8550a4d7282a21d0)(opts); - 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); -} - - - - - - -async function $8d40300f3635b768$var$extractCache(cacheSource, cacheOptions, scratchDir, containerImage, builder) { - // Prepare Timestamp for Layer Cache Busting - const date = new Date().toISOString(); - await (0, $evV72$fspromises).mkdir(scratchDir, { - recursive: true - }); - 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); - const dancefileContent = ` -FROM ${containerImage} -COPY buildstamp buildstamp -RUN --mount=${mountArgs} \ +RUN --mount=${d} \ 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); - console.log(dancefileContent); - // Extract Data into Docker Image - await (0, $4c028fad90f63861$export$889ea624f2cb2c57)('docker', [ - 'buildx', - 'build', - '--builder', - builder, - '-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' - ]); - } catch (error) { - // Ignore error if container does not exist - } - await (0, $4c028fad90f63861$export$889ea624f2cb2c57)('docker', [ - 'create', - '-ti', - '--name', - 'cache-container', - 'dance:extract' - ]); - // Unpack Docker Image into Scratch - await (0, $4c028fad90f63861$export$214213e2e11c62ae)([ - 'docker', - [ - 'cp', - '-L', - 'cache-container:/var/dance-cache', - '-' - ] - ], [ - 'tar', - [ - '-H', - 'posix', - '-x', - '-C', - scratchDir - ] - ]); - // Move Cache into Its Place - await (0, $4c028fad90f63861$export$889ea624f2cb2c57)('sudo', [ - 'rm', - '-rf', - cacheSource - ]); - await (0, $evV72$fspromises).rename((0, $evV72$path).join(scratchDir, 'dance-cache'), cacheSource); -} -async function $8d40300f3635b768$export$bd3cfa0c41fc7012(opts) { - if (opts["skip-extraction"]) { - console.log("skip-extraction is set. Skipping extraction step..."); - return; - } - const cacheMap = (0, $76d06fcdc9bff1f5$export$8550a4d7282a21d0)(opts); - 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); -} - - - -async function $bec5d2ddaaf4a876$var$main(args) { - const opts = (0, $76d06fcdc9bff1f5$export$77714ac6976d0316)(args); - if (opts.help) return (0, $76d06fcdc9bff1f5$export$34512e3b2db52a4e)(); - if (opts.extract) // Run the post step - await (0, $8d40300f3635b768$export$bd3cfa0c41fc7012)(opts); - else { - // Otherwise, this is the main step - if (process.env.GITHUB_STATE !== undefined) await (0, $evV72$fspromises).appendFile(process.env.GITHUB_STATE, `POST=true${(0, $evV72$os).EOL}`); - await (0, $bd1d73aff0732146$export$38c65e9f06d3d433)(opts); - } -} -try { - await $bec5d2ddaaf4a876$var$main(process.argv); -} catch (err) { - console.error(err); - if (err instanceof Error) console.error(err.stack); - process.exit(1); -} - - + && cp -p -R ${l}/. /var/dance-cache/ || true +`;await s.promises.writeFile(o.default.join(n,"Dancefile.extract"),f),console.log(f),await (0,u.run)("docker",["buildx","build","--builder",i,"-f",o.default.join(n,"Dancefile.extract"),"--tag","dance:extract","--load",n]);try{await (0,u.run)("docker",["rm","-f","cache-container"])}catch(e){}await (0,u.run)("docker",["create","-ti","--name","cache-container","dance:extract"]),await (0,u.runPiped)(["docker",["cp","-L","cache-container:/var/dance-cache","-"]],["tar",["-H","posix","-x","-C",n]]),await (0,u.run)("sudo",["rm","-rf",e]),await s.promises.rename(o.default.join(n,"dance-cache"),e)}async function d(e){if(e["skip-extraction"])return void console.log("skip-extraction is set. Skipping extraction step...");let t=await (0,c.getCacheMap)(e),n=e["scratch-dir"],r=e["utility-image"],i=(0,c.getBuilder)(e);for(let[e,s]of Object.entries(t))await l(e,s,n,r,i)}},{fs:"fs",path:"path","./opts.js":"bjlzi","./run.js":"kHqLa","@parcel/transformer-js/src/esmodule-helpers.js":"8h9S8"}]},["7sz5b"],"7sz5b","parcelRequire86b4",{fs:e,os:t,path:n,http:r,https:i,net:s,tls:a,events:o,assert:c,util:u,child_process:l});let{}=parcelRequire86b4("7sz5b"); //# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map index 4e53fba..039826c 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,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 +{"mappings":"A,U,M,I,A,W,M,I,A,W,M,M,A,W,M,M,A,W,M,O,A,W,M,K,A,W,M,K,A,W,M,Q,A,W,M,Q,A,W,M,M,A,W,M,e,E,A,S,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,E,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,A,Y,O,C,C,E,E,C,C,E,C,E,E,C,E,C,E,E,E,K,E,C,E,E,A,a,O,Q,A,Y,O,O,O,E,O,O,C,I,C,Q,S,E,C,C,C,E,G,C,C,C,E,C,C,G,C,C,C,E,C,C,G,C,C,E,C,O,C,C,E,C,I,E,A,Y,O,C,C,E,E,C,C,E,C,G,C,G,E,O,E,E,C,G,G,E,O,E,E,C,G,G,G,A,U,O,E,O,E,G,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,O,C,S,C,E,I,E,C,C,E,C,E,C,E,C,O,A,M,E,E,C,E,E,K,C,C,E,I,E,C,C,E,C,I,E,M,C,G,C,C,E,C,E,C,I,C,E,O,C,E,E,E,O,C,E,C,O,C,C,E,C,O,C,S,E,C,E,I,E,E,O,C,G,M,A,C,I,E,C,E,E,E,C,C,E,e,C,C,E,E,M,C,S,C,E,I,C,E,C,E,I,C,M,C,E,I,C,O,C,E,I,C,O,C,C,C,E,E,O,C,E,E,K,C,E,E,M,C,E,E,O,C,K,E,E,S,C,K,E,E,S,C,K,E,E,C,C,E,E,Q,C,S,C,C,C,E,C,C,E,C,C,S,C,C,C,E,E,O,C,C,E,C,E,A,E,O,c,C,E,O,C,I,W,O,C,C,E,A,C,G,C,C,E,C,E,I,I,E,E,E,E,M,C,I,E,C,C,E,E,G,E,C,I,E,E,E,A,C,U,O,S,A,a,O,OCAA,OAAA,OAAA,CAAA,EAEA,AAAA,YAAA,OAAA,QAAA,OAAA,GAAA,EACA,OAAA,WACA,OAAA,CAEA,EAGE,CAIA,EAAA,CAAA,QAAI,CAAK,SACP,CAAA,CAAA,CAAA,CAAA,CADF,CAAA,CAAA,EAEE,IAAA,EAAM,EAAA,kDACD,EAAA,EAAA,MACL,EAAA,EAAA,MACA,EAAI,EAAY,cAAiB,CAAA,GAGjC,EAAM,EAAA,qBACR,EAAA,EAAA,sBACF,EAAA,EAAA,aCtBA,ADwBA,CAAA,eACK,CAAK,EACF,IAAA,EAAa,AAAC,CAAA,E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AAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACE,EAAA,cAAY,CAAQ,SAAQ,CAAA,EAC1B,OAAA,GACE,EAAA,UAAQ,CAAA,EACR,CAMF,QAAO,CACL,CACA,EACE,EAAA,iBAAO,CAAA,SAAP,CAAA,EACF,OAAA,cAAA,CAAA,EAAA,aAAA,CACF,MAAA,CAAA,CACF,EAEA,EACF,EAAA,SAAA,CAAA,SAAA,CAAA,CAAA,CAAA,E,OAEA,OAAQ,IAAM,CAAA,GAAG,OAAc,CAAE,SAAQ,CAAE,EAClC,YAAA,GAAqB,AAAA,eAAA,GAA5B,OAAA,SAAA,CAAA,cAAA,CAAA,IAAA,CAAA,EAAA,IACE,OAAA,cAAA,CAAA,EAAA,EAAA,CACA,WAAA,CAAA,EACF,IAAA,WACF,OAAA,CAAA,CAAA,EAAA,A,C,E,G,C,E,E,M,C,S,C,C,C,C,C,E,O,c,C,E,E,C,W,C,E,I,C,E,C,E,C,E,C,M,C,S,C,C,C,C,C,C,C,E,IE0CA,EAFA,E,E,I,E,I,C,e,E,C,O,M,C,S,C,C,C,C,C,C,C,E,A,K,I,G,C,E,C,E,O,c,C,E,E,C,W,C,E,I,W,O,C,C,E,A,C,E,E,S,C,C,C,C,C,C,C,E,A,K,I,G,C,E,C,E,C,C,E,C,C,C,E,A,C,E,E,I,E,I,C,kB,E,C,O,M,C,S,C,C,C,E,O,c,C,E,U,C,W,C,E,M,C,E,E,S,C,C,C,E,E,O,C,C,C,E,E,I,E,I,C,Y,E,S,C,E,G,G,E,U,C,O,E,I,E,C,E,G,A,M,E,I,I,K,E,A,Y,G,O,c,C,I,C,E,I,E,E,E,G,O,E,E,G,C,E,E,I,E,I,C,S,E,S,C,C,C,C,C,C,C,E,O,G,C,G,C,E,O,C,E,S,C,C,C,E,S,E,C,E,G,C,E,E,I,C,G,C,M,E,C,E,E,C,C,S,E,C,E,G,C,E,E,K,C,G,C,M,E,C,E,E,CA1EA,CACA,SAAA,EAAA,CAAA,M,CACA,CAAA,EAAA,IAAA,CAAA,EAAA,EAAA,KAAA,EAAA,A,C,C,EAAA,EAAA,KAAA,Y,E,E,I,E,S,C,E,E,E,E,EAAA,IAAA,CAAA,EAAA,EAEA,CACA,EAAA,AAAA,CAAA,EAAA,EAAA,KAAA,CAA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M,EACR,QAAA,MAAA,CAAA,KAAA,CAAA,EAAA,EAAA,GAAA,CAFA,E,E,U,C,EAsBE,EAAA,QAAA,CAAA,EAuBA,EAAA,KAAA,CAdD,SAAA,CAAA,CAAA,CAAA,EAZD,OAAA,EAAA,IAAA,CAAA,KAAA,EAAA,KAAA,EAAA,gBAeA,EADA,EAAA,GAEA,GAAA,CAEA,EAAA,MAAA,G,Q,C,G,C,O,CAMA,EACA,E,E,S,CASG,SACa,CAAS,CAAA,CADtB,EAED,EAAO,YAAY,CAAA,aAAgB,CACrC,KAAA,CAFA,EAAA,EAIA,EAOQ,EAAA,QAAA,C,S,C,EAAR,OAAA,QAAA,GAAA,CAAA,CAAA,MADG,EAAA,EAAA,CAAA,CAAA,EAAA,EACK,E,E,U,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,IAAA,CAAA,KAAO,EAAP,KAAA,EAAA,YAAO,OAAA,MAAA,EAAA,UAAA,CAAA,UAAA,CAAA,EAAA,EAEf,EAGQ,IAAA,EAAA,EAAA,oBAAA,OAAA,cAAA,CAAA,EAAA,UAAA,CAAA,WAAA,CAAA,EAAe,IAAA,WAAA,OAAA,EAAA,OAAA,A,C,G,I,E,E,oB,O,c,C,E,kB,C,W,C,E,I,W,O,E,e,A,C,E,E,C,iB,Q,mB,Q,mB,Q,kB,K,iB,O,kB,Q,iB,O,E,C,M,C,S,C,C,C,C,C,C,C,E,I,E,I,E,I,C,e,E,C,O,M,C,S,C,C,C,C,C,C,C,E,A,K,I,G,C,E,C,E,O,c,C,E,E,C,W,C,E,I,W,O,C,C,E,A,C,E,E,S,C,C,C,C,C,C,C,E,A,K,I,G,C,E,C,E,C,C,E,C,C,C,E,A,C,E,E,I,E,I,C,kB,E,C,O,M,C,S,C,C,C,E,O,c,C,E,U,C,W,C,E,M,C,E,E,S,C,C,C,E,E,O,C,C,C,E,E,I,E,I,C,Y,E,S,C,E,G,G,E,U,C,O,EElXvB,IAAA,EAAA,CAAA,EACA,GAAA,AAAA,MAAA,EAWA,IAAA,IAAA,KAAA,EAAA,AAAA,YAAA,GAAA,OAAA,cAAA,CAAA,IAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,G,O,E,E,G,C,E,O,c,C,E,a,C,M,C,C,G,E,K,C,E,Y,C,K,EASG,IACH,EAAA,EAAgB,EACd,qBAIA,EAAY,EAAI,oBAehB,SAAA,EAA6B,CAAA,CAA6B,CAA1D,CAAA,CAAA,EACE,IAAA,EAAK,IAAA,EACH,EADF,EAAA,GAIA,QAAI,MAAC,CAAA,KAAL,CAAA,EAAA,QAAA,GAAA,EAAA,GAAA,CACA,CACA,EAAA,YAAY,CAAG,EAMf,EAAA,KAAI,CALN,SAAA,CAAA,CAAA,EAAA,EAAA,EAEA,EAAA,EAAA,CAAA,EAAA,EACE,CAIE,OAAA,EACA,YAAK,CAAM,CAAA,CAAY,CAAA,CAAU,CAC/B,CACE,AAAA,GAAM,CAAA,EAAU,iBAAgB,EAChC,IAAA,CAAA,OAAI,CAAA,EACF,IAAA,CAAA,UAAA,CAAI,EAGF,IAAA,CAAA,OAAA,CAAA,CAGF,CACD,UAAA,KE/DX,E,EFgES,IAAA,EAAA,AAdH,KAcG,IAAA,CAAA,OAAA,CAEJ,GAAA,IAAA,CAAA,UAAA,EAAA,OAAA,IAAA,CAAA,IAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,CAED,GAAa,IACb,IAAA,EAAA,CAAA,EACF,IAAA,IAAA,KAAA,IAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,CACD,IAAA,EAAA,IAAA,CAAA,UAAA,CAAA,EAAA,CAEmB,IACX,EAAA,EACJ,CAAA,EAGL,GAAA,IAES,GAAT,CAAA,EAAA,EAAA,CAAA,EEhFA,EFgFA,E,E,c,C,G,O,C,K,O,O,C,M,O,O,C,M,O,O,C,K,O,O,C,K,OAAA,CAAA,CAOA,C,C,O,E,K,E,I,C,O,C,E,c,C,G,O,C,K,O,O,C,M,O,O,C,M,Q,AE7FA,CACA,CAUE,EAAA,CAAA,mBAAc,KAAQ,mBAAU,OAC9B,EADF,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAMF,OAAA,cAAA,CAAA,EAAA,aAAA,CAPA,MAAA,CAAA,CASA,G,E,mB,C,E,c,C,K,EAgBI,EAAA,cAAM,CAVV,SAAgB,CACd,SAEA,AAAI,MAAA,EACF,GAGF,AAAA,UAAA,OAAA,GAAA,aAAA,OAAA,EACE,KAAO,SAAA,CAAA,EACP,E,E,mB,CATJ,SAAA,CAAA,S,A,O,I,C,G,M,C,C,M,E,K,CEzBA,KAAA,EAAA,IAAuC,C,K,E,S,C,Q,E,O,C,I,E,W,C,U,E,S,A,E,C,C,C,E,C,E,C,M,C,S,C,C,C,C,C,C,C,E,I,E,I,E,I,C,e,E,C,O,M,C,S,C,C,C,C,C,C,C,E,A,K,I,G,C,E,C,E,O,c,C,E,E,C,W,C,E,I,W,O,C,C,E,A,C,E,E,S,C,C,C,C,C,C,C,E,A,K,I,G,C,E,C,E,C,C,E,C,C,C,E,A,C,E,E,I,E,I,C,kB,E,C,O,M,C,S,C,C,C,E,O,c,C,E,U,C,W,C,E,M,C,E,E,S,C,C,C,E,E,O,C,C,C,E,E,I,E,I,C,Y,E,S,C,E,G,G,E,U,C,O,EAEvC,IAAA,EAAA,CAAA,EACA,GAAA,AAAA,MAAA,EAGA,IAAA,IAAA,KAAA,EAAA,AAAA,YAAA,GAAA,OAAA,cAAA,CAAA,IAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAIE,OADF,EAA6B,EAAiB,GACtC,CACN,EAKA,OAAA,cAAQ,CAAU,EAAC,aACP,CAGZ,MAAG,CAAA,CACD,GACD,EAAA,YAAA,CAAA,KAAA,EAbH,IAAA,EAAA,EAAA,EAAA,qB,E,E,E,qB,E,E,mB,C,E,Y,C,S,C,C,C,E,I,E,Q,G,C,C,O,E,E,C,C,C,G,C,E,M,A,M,C,qD,E,E,C,E,G,C,E,U,C,G,M,A,M,C,sB,E,E,C,E,E,c,C,E,C,E,E,c,C,G,E,E,G,C,C,C,C,S,M,E,C,E,C,mB,K,mB,K,iB,O,E,C,M,C,S,C,C,C,C,C,C,C,E,I,E,I,E,I,C,S,E,S,C,C,C,C,C,C,C,E,O,G,C,G,C,E,O,C,E,S,C,C,C,E,S,E,C,E,G,C,E,E,I,C,G,C,M,E,C,E,E,C,C,S,E,C,E,G,C,E,E,K,C,G,C,M,E,C,E,E,CENA,CACA,SAAA,EAAA,CAAA,M,CACA,CAAA,EAAA,IAAA,CAAA,EAAA,EAAA,KAAA,EAAA,A,C,C,EAAA,EAAA,KAAA,Y,E,E,I,E,S,C,E,E,E,E,EAAA,IAAA,CAAA,EAAA,EAKA,CACU,EAAO,AAAA,CAAA,EAAA,EACb,KAAa,CAAA,EACb,GAFM,EAAA,CAAA,EAAA,IAAA,GAIN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,IAAA,CAAA,KAAA,AACI,CAEA,wBAAA,CAAA,CAAA,CACA,MAAA,CAAA,CACA,CACA,qBAAe,CAAf,CAAA,CAAA,CAAA,CAAA,CAAA,CACI,OAAA,IAEJ,CACA,E,E,oC,CAEI,MACJ,YAAA,CAAA,CAAA,CACA,IAAA,CAAA,KAAA,CAAA,CACI,CAGR,eAAQ,CAAA,CAAA,C,E,O,C,a,C,S,O,I,C,O,I,C,K,E,Q,C,S,C,wB,C,C,C,M,C,C,C,qB,C,C,C,C,C,C,C,O,I,C,C,E,C,E,C,Q,C,S,C,C,C,C,C,C,C,E,I,E,I,E,I,C,S,E,S,C,C,C,C,C,C,C,E,O,G,C,G,C,E,O,C,E,S,C,C,C,E,S,E,C,E,G,C,E,E,I,C,G,C,M,E,C,E,E,C,C,S,E,C,E,G,C,E,E,K,C,G,C,M,E,C,E,E,CEzDR,CACA,SAAA,EAAA,CAAA,M,CACO,CAAA,EAAQ,IAAA,CAAU,EAAE,EAAU,KAAG,EAAA,A,C,C,EAAxC,EAAA,KAAA,Y,E,E,I,E,S,C,E,E,E,E,EAAA,IAAA,CAAA,EAAA,EAEa,CACA,EAAA,AAAA,CAAA,EAAgB,EAAhB,KAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,GAgDb,EAIE,EACE,OAAA,cAAY,CAAA,EAAZ,aAAA,CACF,MAAA,CAAA,CAEA,G,E,O,C,E,e,C,E,gB,C,E,e,C,K,E,I,E,E,oB,E,E,oB,C,O,C,C,W,C,C,U,C,C,C,E,Q,AAKG,CAAA,EACW,eADX,CAAA,sB,E,gB,C,4GChEL,IAAA,EAAQ,IDkEJ,MAIA,aAAA,CACA,IAAA,CAAA,OAAK,CAAA,EAML,CASA,UAAO,CACT,OAAA,EAAA,IAAA,CAAA,KAAA,EAAA,KAAA,EAAA,YAAC,GAAA,IAAA,CAAA,SAAA,CAAA,OAAA,IAAA,CAAA,SAAA,CAED,IAAA,EAAA,QAAA,GAAA,CAAA,EAAA,eAAA,CAAA,C,G,C,E,M,A,M,C,yC,E,E,e,C,2D,C,E,G,C,M,E,E,E,S,C,I,C,E,S,C,I,C,C,M,E,C,M,A,M,C,gC,E,E,wD,C,C,CASQ,O,I,C,S,C,EAEN,IAAA,CAAA,SACA,AAEA,EAIA,CAcI,KAAA,CAAM,C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","sources":["","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/@parcel+transformer-js@2.15.1_@parcel+core@2.15.1_@swc+helpers@0.5.17_/node_modules/@parcel/transformer-js/src/esmodule-helpers.js","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/lib/core.js","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/src/core.ts","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/lib/command.js","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/src/command.ts","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/lib/utils.js","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/src/utils.ts","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/lib/file-command.js","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/src/file-command.ts","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/lib/oidc-utils.js","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/src/oidc-utils.ts","node_modules/.pnpm/@actions+http-client@1.0.11/node_modules/@actions/http-client/index.js","node_modules/.pnpm/@actions+http-client@1.0.11/node_modules/@actions/http-client/proxy.js","node_modules/.pnpm/tunnel@0.0.6/node_modules/tunnel/index.js","node_modules/.pnpm/tunnel@0.0.6/node_modules/tunnel/lib/tunnel.js","node_modules/.pnpm/@actions+http-client@1.0.11/node_modules/@actions/http-client/auth.js","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/lib/summary.js","node_modules/.pnpm/@actions+core@1.8.0/node_modules/@actions/core/src/summary.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/isexe@2.0.0/node_modules/isexe/windows.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.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":["import * as __parcelExternal0 from \"fs\";\nimport * as __parcelExternal1 from \"os\";\nimport * as __parcelExternal2 from \"path\";\nimport * as __parcelExternal3 from \"http\";\nimport * as __parcelExternal4 from \"https\";\nimport * as __parcelExternal5 from \"net\";\nimport * as __parcelExternal6 from \"tls\";\nimport * as __parcelExternal7 from \"events\";\nimport * as __parcelExternal8 from \"assert\";\nimport * as __parcelExternal9 from \"util\";\nimport * as __parcelExternal10 from \"child_process\";\n// modules are defined as an array\n// [ module function, map of requires ]\n//\n// map of requires is short require name -> numeric require\n//\n// anything defined in a previous bundle is accessed via the\n// orig method which is the require for previous bundles\n\n(function (\n modules,\n entry,\n mainEntry,\n parcelRequireName,\n externals,\n distDir,\n publicUrl,\n devServer\n) {\n /* eslint-disable no-undef */\n var globalObject =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n /* eslint-enable no-undef */\n\n // Save the require from previous bundle to this closure if any\n var previousRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n\n var importMap = previousRequire.i || {};\n var cache = previousRequire.cache || {};\n // Do not use `require` to prevent Webpack from trying to bundle this call\n var nodeRequire =\n typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n\n function newRequire(name, jumped) {\n if (!cache[name]) {\n if (!modules[name]) {\n if (externals[name]) {\n return externals[name];\n }\n // if we cannot find the module within our internal map or\n // cache jump to the current global require ie. the last bundle\n // that was added to the page.\n var currentRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n if (!jumped && currentRequire) {\n return currentRequire(name, true);\n }\n\n // If there are other bundles on this page the require from the\n // previous one is saved to 'previousRequire'. Repeat this as\n // many times as there are bundles until the module is found or\n // we exhaust the require chain.\n if (previousRequire) {\n return previousRequire(name, true);\n }\n\n // Try the node require function if it exists.\n if (nodeRequire && typeof name === 'string') {\n return nodeRequire(name);\n }\n\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n }\n\n localRequire.resolve = resolve;\n localRequire.cache = {};\n\n var module = (cache[name] = new newRequire.Module(name));\n\n modules[name][0].call(\n module.exports,\n localRequire,\n module,\n module.exports,\n globalObject\n );\n }\n\n return cache[name].exports;\n\n function localRequire(x) {\n var res = localRequire.resolve(x);\n return res === false ? {} : newRequire(res);\n }\n\n function resolve(x) {\n var id = modules[name][1][x];\n return id != null ? id : x;\n }\n }\n\n function Module(moduleName) {\n this.id = moduleName;\n this.bundle = newRequire;\n this.require = nodeRequire;\n this.exports = {};\n }\n\n newRequire.isParcelRequire = true;\n newRequire.Module = Module;\n newRequire.modules = modules;\n newRequire.cache = cache;\n newRequire.parent = previousRequire;\n newRequire.distDir = distDir;\n newRequire.publicUrl = publicUrl;\n newRequire.devServer = devServer;\n newRequire.i = importMap;\n newRequire.register = function (id, exports) {\n modules[id] = [\n function (require, module) {\n module.exports = exports;\n },\n {},\n ];\n };\n\n // Only insert newRequire.load when it is actually used.\n // The code in this file is linted against ES5, so dynamic import is not allowed.\n // INSERT_LOAD_HERE\n\n Object.defineProperty(newRequire, 'root', {\n get: function () {\n return globalObject[parcelRequireName];\n },\n });\n\n globalObject[parcelRequireName] = newRequire;\n\n for (var i = 0; i < entry.length; i++) {\n newRequire(entry[i]);\n }\n\n if (mainEntry) {\n // Expose entry point to Node, AMD or browser globals\n // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js\n var mainExports = newRequire(mainEntry);\n\n // CommonJS\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n module.exports = mainExports;\n\n // RequireJS\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return mainExports;\n });\n }\n }\n})({\"7sz5b\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nvar _fs = require(\"fs\");\nvar _os = require(\"os\");\nvar _osDefault = parcelHelpers.interopDefault(_os);\nvar _injectCacheJs = require(\"./inject-cache.js\");\nvar _extractCacheJs = require(\"./extract-cache.js\");\nvar _optsJs = require(\"./opts.js\");\nasync function main(args) {\n const opts = (0, _optsJs.parseOpts)(args);\n if (opts.help) return (0, _optsJs.help)();\n if (opts.extract) // Run the post step\n await (0, _extractCacheJs.extractCaches)(opts);\n else {\n // Otherwise, this is the main step\n if (process.env.GITHUB_STATE !== undefined) await (0, _fs.promises).appendFile(process.env.GITHUB_STATE, `POST=true${(0, _osDefault.default).EOL}`);\n await (0, _injectCacheJs.injectCaches)(opts);\n }\n}\nmain(process.argv).catch((err)=>{\n console.error(err);\n if (err instanceof Error) console.error(err.stack);\n process.exit(1);\n});\n\n},{\"fs\":\"fs\",\"os\":\"os\",\"./inject-cache.js\":\"g8Odb\",\"./extract-cache.js\":\"14eXt\",\"./opts.js\":\"bjlzi\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"8h9S8\"}],\"g8Odb\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"injectCaches\", ()=>injectCaches);\nvar _fs = require(\"fs\");\nvar _path = require(\"path\");\nvar _pathDefault = parcelHelpers.interopDefault(_path);\nvar _optsJs = require(\"./opts.js\");\nvar _runJs = require(\"./run.js\");\nvar _coreJs = require(\"@actions/core/lib/core.js\");\nasync function injectCache(cacheSource, cacheOptions, scratchDir, containerImage, builder) {\n // Clean Scratch Directory\n await (0, _fs.promises).rm(scratchDir, {\n recursive: true,\n force: true\n });\n await (0, _fs.promises).mkdir(scratchDir, {\n recursive: true\n });\n // Prepare Cache Source Directory\n await (0, _fs.promises).mkdir(cacheSource, {\n recursive: true\n });\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await (0, _fs.promises).writeFile((0, _pathDefault.default).join(cacheSource, 'buildstamp'), date);\n const targetPath = (0, _optsJs.getTargetPath)(cacheOptions);\n const mountArgs = (0, _optsJs.getMountArgsString)(cacheOptions);\n // If UID OR GID are set, then add chown to restore files ownership.\n let ownershipCommand = \"\";\n const uid = (0, _optsJs.getUID)(cacheOptions);\n const gid = (0, _optsJs.getGID)(cacheOptions);\n if (uid !== \"\" || gid !== \"\") ownershipCommand = `&& chown -R ${uid}:${gid} ${targetPath}`;\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 (0, _fs.promises).writeFile((0, _pathDefault.default).join(scratchDir, 'Dancefile.inject'), dancefileContent);\n console.log(dancefileContent);\n // Inject Data into Docker Cache\n await (0, _runJs.run)('docker', [\n 'buildx',\n 'build',\n '--builder',\n builder,\n '-f',\n (0, _pathDefault.default).join(scratchDir, 'Dancefile.inject'),\n '--tag',\n 'dance:inject',\n cacheSource\n ]);\n // Clean Directories\n try {\n await (0, _fs.promises).rm(cacheSource, {\n recursive: true,\n force: true\n });\n } catch (err) {\n // Ignore Cleaning Errors\n (0, _coreJs.notice)(`Error while cleaning cache source directory: ${err}. Ignoring...`);\n }\n}\nasync function injectCaches(opts) {\n const cacheMap = await (0, _optsJs.getCacheMap)(opts);\n const scratchDir = opts['scratch-dir'];\n const containerImage = opts['utility-image'];\n const builder = (0, _optsJs.getBuilder)(opts);\n // Inject Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap))await injectCache(cacheSource, cacheOptions, scratchDir, containerImage, builder);\n}\n\n},{\"fs\":\"fs\",\"path\":\"path\",\"./opts.js\":\"bjlzi\",\"./run.js\":\"kHqLa\",\"@actions/core/lib/core.js\":\"k7YnK\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"8h9S8\"}],\"bjlzi\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"parseOpts\", ()=>parseOpts);\nparcelHelpers.export(exports, \"help\", ()=>help);\nparcelHelpers.export(exports, \"getCacheMap\", ()=>getCacheMap);\nparcelHelpers.export(exports, \"getTargetPath\", ()=>getTargetPath);\nparcelHelpers.export(exports, \"getUID\", ()=>getUID);\nparcelHelpers.export(exports, \"getGID\", ()=>getGID);\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 */ parcelHelpers.export(exports, \"getMountArgsString\", ()=>getMountArgsString);\nparcelHelpers.export(exports, \"getBuilder\", ()=>getBuilder);\nvar _mri = require(\"mri\");\nvar _mriDefault = parcelHelpers.interopDefault(_mri);\nvar _fs = require(\"fs\");\nvar _coreJs = require(\"@actions/core/lib/core.js\");\nvar _dockerfileAst = require(\"dockerfile-ast\");\nfunction parseOpts(args) {\n const opts = (0, _mriDefault.default)(args, {\n default: {\n \"cache-map\": (0, _coreJs.getInput)(\"cache-map\") || \"{}\",\n \"dockerfile\": (0, _coreJs.getInput)(\"dockerfile\") || \"Dockerfile\",\n \"scratch-dir\": (0, _coreJs.getInput)(\"scratch-dir\") || \"scratch\",\n \"skip-extraction\": ((0, _coreJs.getInput)(\"skip-extraction\") || \"false\") === \"true\",\n \"extract\": process.env[`STATE_POST`] !== undefined,\n \"utility-image\": (0, _coreJs.getInput)(\"utility-image\") || \"ghcr.io/containerd/busybox:latest\",\n \"builder\": (0, _coreJs.getInput)(\"builder\") || \"default\",\n \"help\": false\n },\n string: [\n \"cache-map\",\n \"dockerfile\",\n \"scratch-dir\",\n \"cache-source\",\n \"cache-target\",\n \"utility-image\",\n \"builder\"\n ],\n boolean: [\n \"skip-extraction\",\n \"help\",\n \"extract\"\n ],\n alias: {\n \"help\": [\n \"h\"\n ]\n }\n });\n if (opts[\"cache-source\"] && opts[\"cache-target\"]) {\n (0, _coreJs.warning)(\"The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead.\");\n opts[\"cache-map\"] = JSON.stringify({\n [opts[\"cache-source\"]]: opts[\"cache-target\"]\n });\n }\n return opts;\n}\nfunction 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}\nasync function getCacheMapFromDockerfile(dockerfilePath) {\n const dockerfileContent = await (0, _fs.promises).readFile(dockerfilePath, \"utf-8\");\n const dockerfile = (0, _dockerfileAst.DockerfileParser).parse(dockerfileContent);\n const cacheMap = {};\n const runInstructions = dockerfile.getInstructions().filter((i)=>i.getKeyword() == 'RUN');\n for (const run of runInstructions){\n for (const flag of run.getFlags())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) throw new Error('cache mount must define id or target: ' + flag.toString() + ' in ' + run.toString());\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 cacheMap[id] = {\n id,\n target\n };\n }\n }\n return cacheMap;\n}\nasync function getCacheMap(opts) {\n try {\n const cacheMap = JSON.parse(opts[\"cache-map\"]);\n if (Object.keys(cacheMap).length !== 0) return cacheMap;\n console.log(`No cache map provided. Trying to parse the Dockerfile to find the cache mount instructions...`);\n const cacheMapFromDockerfile = await 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}\nfunction getTargetPath(cacheOptions) {\n if (typeof cacheOptions === \"string\") // only the target path is provided\n return cacheOptions;\n else {\n // object is provided\n if (\"target\" in cacheOptions) return cacheOptions.target;\n else throw new Error(`Expected the 'target' key in the cache options, got:\\n${cacheOptions}`);\n }\n}\nfunction getUID(cacheOptions) {\n if (typeof cacheOptions === \"string\") // only the target path is provided\n return \"\";\n else {\n // object is provided\n if (\"uid\" in cacheOptions && cacheOptions.uid !== undefined) return cacheOptions.uid.toString();\n else return \"\";\n }\n}\nfunction getGID(cacheOptions) {\n if (typeof cacheOptions === \"string\") // only the target path is provided\n return \"\";\n else {\n // object is provided\n if (\"gid\" in cacheOptions && cacheOptions.gid !== undefined) return cacheOptions.gid.toString();\n else return \"\";\n }\n}\nfunction getMountArgsString(cacheOptions) {\n if (typeof cacheOptions === \"string\") // 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}\nfunction getBuilder(opts) {\n return opts[\"builder\"] == null || opts[\"builder\"] == \"\" ? \"default\" : opts[\"builder\"];\n}\n\n},{\"mri\":\"5lGLa\",\"fs\":\"fs\",\"@actions/core/lib/core.js\":\"k7YnK\",\"dockerfile-ast\":\"1irbL\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"8h9S8\"}],\"5lGLa\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>function(args, opts) {\n args = args || [];\n opts = opts || {};\n var k, arr, arg, name, val, out = {\n _: []\n };\n var i = 0, j = 0, idx = 0, len = args.length;\n const alibi = opts.alias !== void 0;\n const strict = opts.unknown !== void 0;\n const defaults = opts.default !== void 0;\n opts.alias = opts.alias || {};\n opts.string = toArr(opts.string);\n opts.boolean = toArr(opts.boolean);\n if (alibi) for(k in opts.alias){\n arr = opts.alias[k] = toArr(opts.alias[k]);\n for(i = 0; i < arr.length; i++)(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n }\n for(i = opts.boolean.length; i-- > 0;){\n arr = opts.alias[opts.boolean[i]] || [];\n for(j = arr.length; j-- > 0;)opts.boolean.push(arr[j]);\n }\n for(i = opts.string.length; i-- > 0;){\n arr = opts.alias[opts.string[i]] || [];\n for(j = arr.length; j-- > 0;)opts.string.push(arr[j]);\n }\n if (defaults) for(k in opts.default){\n name = typeof opts.default[k];\n arr = opts.alias[k] = opts.alias[k] || [];\n if (opts[name] !== void 0) {\n opts[name].push(k);\n for(i = 0; i < arr.length; i++)opts[name].push(arr[i]);\n }\n }\n const keys = strict ? Object.keys(opts.alias) : [];\n for(i = 0; i < len; i++){\n arg = args[i];\n if (arg === '--') {\n out._ = out._.concat(args.slice(++i));\n break;\n }\n for(j = 0; j < arg.length; j++){\n if (arg.charCodeAt(j) !== 45) break; // \"-\"\n }\n if (j === 0) out._.push(arg);\n else if (arg.substring(j, j + 3) === 'no-') {\n name = arg.substring(j + 3);\n if (strict && !~keys.indexOf(name)) return opts.unknown(arg);\n out[name] = false;\n } else {\n for(idx = j + 1; idx < arg.length; idx++){\n if (arg.charCodeAt(idx) === 61) break; // \"=\"\n }\n name = arg.substring(j, idx);\n val = arg.substring(++idx) || i + 1 === len || ('' + args[i + 1]).charCodeAt(0) === 45 || args[++i];\n arr = j === 2 ? [\n name\n ] : name;\n for(idx = 0; idx < arr.length; idx++){\n name = arr[idx];\n if (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n toVal(out, name, idx + 1 < arr.length || val, opts);\n }\n }\n }\n if (defaults) {\n for(k in opts.default)if (out[k] === void 0) out[k] = opts.default[k];\n }\n if (alibi) for(k in out){\n arr = opts.alias[k] || [];\n while(arr.length > 0)out[arr.shift()] = out[k];\n }\n return out;\n });\nfunction toArr(any) {\n return any == null ? [] : Array.isArray(any) ? any : [\n any\n ];\n}\nfunction toVal(out, key, val, opts) {\n 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;\n out[key] = old == null ? nxt : Array.isArray(old) ? old.concat(nxt) : [\n old,\n nxt\n ];\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"8h9S8\"}],\"8h9S8\":[function(require,module,exports,__globalThis) {\nexports.interopDefault = function(a) {\n return a && a.__esModule ? a : {\n default: a\n };\n};\nexports.defineInteropFlag = function(a) {\n Object.defineProperty(a, '__esModule', {\n value: true\n });\n};\nexports.exportAll = function(source, dest) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) return;\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function() {\n return source[key];\n }\n });\n });\n return dest;\n};\nexports.export = function(dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get\n });\n};\n\n},{}],\"k7YnK\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nvar __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function() {\n return m[k];\n }\n });\n} : function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function(o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = this && this.__importStar || function(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) {\n for(var k in mod)if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function(resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;\nconst command_1 = require(\"e924a1cef16bef69\");\nconst file_command_1 = require(\"16e43487988cdce8\");\nconst utils_1 = require(\"7f8c194a8c8f18e8\");\nconst os = __importStar(require(\"92b8860262e27ba\"));\nconst path = __importStar(require(\"d28a375bd89b68cf\"));\nconst oidc_utils_1 = require(\"7e9da61c1748be9\");\n/**\n * The code to exit an action\n */ var ExitCode;\n(function(ExitCode) {\n /**\n * A code indicating that the action was successful\n */ ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */ ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */ // eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n const delimiter = '_GitHubActionsFileCommandDelimeter_';\n const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;\n file_command_1.issueCommand('ENV', commandValue);\n } else command_1.issueCommand('set-env', {\n name\n }, convertedVal);\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */ function setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */ function addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) file_command_1.issueCommand('PATH', inputPath);\n else command_1.issueCommand('add-path', {}, inputPath);\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input.\n * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.\n * Returns an empty string if the value is not defined.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */ function getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) throw new Error(`Input required and not supplied: ${name}`);\n if (options && options.trimWhitespace === false) return val;\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Gets the values of an multiline input. Each value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string[]\n *\n */ function getMultilineInput(name, options) {\n const inputs = getInput(name, options).split('\\n').filter((x)=>x !== '');\n return inputs;\n}\nexports.getMultilineInput = getMultilineInput;\n/**\n * Gets the input value of the boolean type in the YAML 1.2 \"core schema\" specification.\n * Support boolean input list: `true | True | TRUE | false | False | FALSE` .\n * The return value is also in boolean type.\n * ref: https://yaml.org/spec/1.2/spec.html#id2804923\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns boolean\n */ function getBooleanInput(name, options) {\n const trueValue = [\n 'true',\n 'True',\n 'TRUE'\n ];\n const falseValue = [\n 'false',\n 'False',\n 'FALSE'\n ];\n const val = getInput(name, options);\n if (trueValue.includes(val)) return true;\n if (falseValue.includes(val)) return false;\n throw new TypeError(`Input does not meet YAML 1.2 \"Core Schema\" specification: ${name}\\n` + `Support boolean input list: \\`true | True | TRUE | false | False | FALSE\\``);\n}\nexports.getBooleanInput = getBooleanInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */ // eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n process.stdout.write(os.EOL);\n command_1.issueCommand('set-output', {\n name\n }, value);\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */ function setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */ function setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */ function isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */ function debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */ function error(message, properties = {}) {\n command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds a warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */ function warning(message, properties = {}) {\n command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Adds a notice issue\n * @param message notice issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */ function notice(message, properties = {}) {\n command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.notice = notice;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */ function info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */ function startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */ function endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */ function group(name, fn) {\n return __awaiter(this, void 0, void 0, function*() {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n } finally{\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */ // eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n command_1.issueCommand('save-state', {\n name\n }, value);\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */ function getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\nfunction getIDToken(aud) {\n return __awaiter(this, void 0, void 0, function*() {\n return yield oidc_utils_1.OidcClient.getIDToken(aud);\n });\n}\nexports.getIDToken = getIDToken;\n/**\n * Summary exports\n */ var summary_1 = require(\"e44daa22e4d4d53e\");\nObject.defineProperty(exports, \"summary\", {\n enumerable: true,\n get: function() {\n return summary_1.summary;\n }\n});\n/**\n * @deprecated use core.summary\n */ var summary_2 = require(\"e44daa22e4d4d53e\");\nObject.defineProperty(exports, \"markdownSummary\", {\n enumerable: true,\n get: function() {\n return summary_2.markdownSummary;\n }\n});\n\n},{\"e924a1cef16bef69\":\"kZGXI\",\"16e43487988cdce8\":\"gRxw7\",\"7f8c194a8c8f18e8\":\"bO0ir\",\"92b8860262e27ba\":\"os\",\"d28a375bd89b68cf\":\"path\",\"7e9da61c1748be9\":\"b9uNA\",\"e44daa22e4d4d53e\":\"7Zbhg\"}],\"kZGXI\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nvar __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function() {\n return m[k];\n }\n });\n} : function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function(o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = this && this.__importStar || function(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) {\n for(var k in mod)if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.issue = exports.issueCommand = void 0;\nconst os = __importStar(require(\"3737725acaa42483\"));\nconst utils_1 = require(\"69b2ffcef1696d24\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */ function issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message){\n if (!command) command = 'missing.command';\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for(const key in this.properties)if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) first = false;\n else cmdStr += ',';\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s).replace(/%/g, '%25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s).replace(/%/g, '%25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A').replace(/:/g, '%3A').replace(/,/g, '%2C');\n}\n\n},{\"3737725acaa42483\":\"os\",\"69b2ffcef1696d24\":\"bO0ir\"}],\"bO0ir\":[function(require,module,exports,__globalThis) {\n\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */ Object.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toCommandProperties = exports.toCommandValue = void 0;\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */ function toCommandValue(input) {\n if (input === null || input === undefined) return '';\n else if (typeof input === 'string' || input instanceof String) return input;\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n/**\n *\n * @param annotationProperties\n * @returns The command properties to send with the actual annotation command\n * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646\n */ function toCommandProperties(annotationProperties) {\n if (!Object.keys(annotationProperties).length) return {};\n return {\n title: annotationProperties.title,\n file: annotationProperties.file,\n line: annotationProperties.startLine,\n endLine: annotationProperties.endLine,\n col: annotationProperties.startColumn,\n endColumn: annotationProperties.endColumn\n };\n}\nexports.toCommandProperties = toCommandProperties;\n\n},{}],\"gRxw7\":[function(require,module,exports,__globalThis) {\n\"use strict\";\n// For internal use, subject to change.\nvar __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function() {\n return m[k];\n }\n });\n} : function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function(o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = this && this.__importStar || function(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) {\n for(var k in mod)if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.issueCommand = void 0;\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */ const fs = __importStar(require(\"778c221d6defca47\"));\nconst os = __importStar(require(\"9ee56551f05bb7a0\"));\nconst utils_1 = require(\"a1dde01443f9a1e6\");\nfunction issueCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) throw new Error(`Unable to find environment variable for file command ${command}`);\n if (!fs.existsSync(filePath)) throw new Error(`Missing file at path: ${filePath}`);\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueCommand = issueCommand;\n\n},{\"778c221d6defca47\":\"fs\",\"9ee56551f05bb7a0\":\"os\",\"a1dde01443f9a1e6\":\"bO0ir\"}],\"b9uNA\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nvar __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function(resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OidcClient = void 0;\nconst http_client_1 = require(\"6cdaf1fd914e5387\");\nconst auth_1 = require(\"8db37dcf5a5b1463\");\nconst core_1 = require(\"1147ffd9ee1d6042\");\nclass OidcClient {\n static createHttpClient(allowRetry = true, maxRetry = 10) {\n const requestOptions = {\n allowRetries: allowRetry,\n maxRetries: maxRetry\n };\n return new http_client_1.HttpClient('actions/oidc-client', [\n new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())\n ], requestOptions);\n }\n static getRequestToken() {\n const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];\n if (!token) throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');\n return token;\n }\n static getIDTokenUrl() {\n const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];\n if (!runtimeUrl) throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');\n return runtimeUrl;\n }\n static getCall(id_token_url) {\n var _a;\n return __awaiter(this, void 0, void 0, function*() {\n const httpclient = OidcClient.createHttpClient();\n const res = yield httpclient.getJson(id_token_url).catch((error)=>{\n throw new Error(`Failed to get ID Token. \\n \n Error Code : ${error.statusCode}\\n \n Error Message: ${error.result.message}`);\n });\n const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;\n if (!id_token) throw new Error('Response json body do not have ID Token field');\n return id_token;\n });\n }\n static getIDToken(audience) {\n return __awaiter(this, void 0, void 0, function*() {\n try {\n // New ID Token is requested from action service\n let id_token_url = OidcClient.getIDTokenUrl();\n if (audience) {\n const encodedAudience = encodeURIComponent(audience);\n id_token_url = `${id_token_url}&audience=${encodedAudience}`;\n }\n core_1.debug(`ID token url is ${id_token_url}`);\n const id_token = yield OidcClient.getCall(id_token_url);\n core_1.setSecret(id_token);\n return id_token;\n } catch (error) {\n throw new Error(`Error message: ${error.message}`);\n }\n });\n }\n}\nexports.OidcClient = OidcClient;\n\n},{\"6cdaf1fd914e5387\":\"bTnEL\",\"8db37dcf5a5b1463\":\"lQXpe\",\"1147ffd9ee1d6042\":\"k7YnK\"}],\"bTnEL\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst http = require(\"69cee5eb1e6c891e\");\nconst https = require(\"5135743cad10c017\");\nconst pm = require(\"74ceafcf2537bb1e\");\nlet tunnel;\nvar HttpCodes;\n(function(HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));\nvar Headers;\n(function(Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers = exports.Headers || (exports.Headers = {}));\nvar MediaTypes;\n(function(MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */ function getProxyUrl(serverUrl) {\n let proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = [\n 'OPTIONS',\n 'GET',\n 'DELETE',\n 'HEAD'\n];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode){\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message){\n this.message = message;\n }\n readBody() {\n return new Promise(async (resolve, reject)=>{\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk)=>{\n output = Buffer.concat([\n output,\n chunk\n ]);\n });\n this.message.on('end', ()=>{\n resolve(output.toString());\n });\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n let parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions){\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) this._ignoreSslError = requestOptions.ignoreSslError;\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) this._allowRedirects = requestOptions.allowRedirects;\n if (requestOptions.allowRedirectDowngrade != null) this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n if (requestOptions.maxRedirects != null) this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n if (requestOptions.keepAlive != null) this._keepAlive = requestOptions.keepAlive;\n if (requestOptions.allowRetries != null) this._allowRetries = requestOptions.allowRetries;\n if (requestOptions.maxRetries != null) this._maxRetries = requestOptions.maxRetries;\n }\n }\n options(requestUrl, additionalHeaders) {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n }\n get(requestUrl, additionalHeaders) {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n }\n del(requestUrl, additionalHeaders) {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n }\n post(requestUrl, data, additionalHeaders) {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n }\n patch(requestUrl, data, additionalHeaders) {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n }\n put(requestUrl, data, additionalHeaders) {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n }\n head(requestUrl, additionalHeaders) {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */ async getJson(requestUrl, additionalHeaders = {}) {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n let res = await this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n async postJson(requestUrl, obj, additionalHeaders = {}) {\n let data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n let res = await this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n async putJson(requestUrl, obj, additionalHeaders = {}) {\n let data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n let res = await this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n async patchJson(requestUrl, obj, additionalHeaders = {}) {\n let data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n let res = await this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */ async request(verb, requestUrl, data, headers) {\n if (this._disposed) throw new Error('Client has already been disposed.');\n let parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n let maxTries = this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1 ? this._maxRetries + 1 : 1;\n let numTries = 0;\n let response;\n while(numTries < maxTries){\n response = await this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for(let i = 0; i < this.handlers.length; i++)if (this.handlers[i].canHandleAuthentication(response)) {\n authenticationHandler = this.handlers[i];\n break;\n }\n if (authenticationHandler) return authenticationHandler.handleAuthentication(this, info, data);\n else // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n let redirectsRemaining = this._maxRedirects;\n while(HttpRedirectCodes.indexOf(response.message.statusCode) != -1 && this._allowRedirects && redirectsRemaining > 0){\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) break;\n let parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol == 'https:' && parsedUrl.protocol != parsedRedirectUrl.protocol && !this._allowRedirectDowngrade) throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n await response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for(let header in headers)// header names are case insensitive\n if (header.toLowerCase() === 'authorization') delete headers[header];\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = await this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) // If not a retry code, return immediately instead of retrying\n return response;\n numTries += 1;\n if (numTries < maxTries) {\n await response.readBody();\n await this._performExponentialBackoff(numTries);\n }\n }\n return response;\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */ dispose() {\n if (this._agent) this._agent.destroy();\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */ requestRaw(info, data) {\n return new Promise((resolve, reject)=>{\n let callbackForResult = function(err, res) {\n if (err) reject(err);\n resolve(res);\n };\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */ requestRawWithCallback(info, data, onResult) {\n let socket;\n if (typeof data === 'string') info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n let callbackCalled = false;\n let handleResult = (err, res)=>{\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n };\n let req = info.httpModule.request(info.options, (msg)=>{\n let res = new HttpClientResponse(msg);\n handleResult(null, res);\n });\n req.on('socket', (sock)=>{\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 180000, ()=>{\n if (socket) socket.end();\n handleResult(new Error('Request timeout: ' + info.options.path), null);\n });\n req.on('error', function(err) {\n // err has statusCode property\n // res should have headers\n handleResult(err, null);\n });\n if (data && typeof data === 'string') req.write(data, 'utf8');\n if (data && typeof data !== 'string') {\n data.on('close', function() {\n req.end();\n });\n data.pipe(req);\n } else req.end();\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */ getAgent(serverUrl) {\n let parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort;\n info.options.path = (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) info.options.headers['user-agent'] = this.userAgent;\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) this.handlers.forEach((handler)=>{\n handler.prepareRequest(info.options);\n });\n return info;\n }\n _mergeHeaders(headers) {\n const lowercaseKeys = (obj)=>Object.keys(obj).reduce((c, k)=>(c[k.toLowerCase()] = obj[k], c), {});\n if (this.requestOptions && this.requestOptions.headers) return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers));\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n const lowercaseKeys = (obj)=>Object.keys(obj).reduce((c, k)=>(c[k.toLowerCase()] = obj[k], c), {});\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n let proxyUrl = pm.getProxyUrl(parsedUrl);\n let useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) agent = this._proxyAgent;\n if (this._keepAlive && !useProxy) agent = this._agent;\n // if agent is already assigned use that agent.\n if (!!agent) return agent;\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (!!this.requestOptions) maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n if (useProxy) {\n // If using proxy, need tunnel\n if (!tunnel) tunnel = require(\"591dff9a34bef599\");\n const agentOptions = {\n maxSockets: maxSockets,\n keepAlive: this._keepAlive,\n proxy: {\n ...(proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n },\n host: proxyUrl.hostname,\n port: proxyUrl.port\n }\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n else tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if reusing agent across request and tunneling agent isn't assigned create a new agent\n if (this._keepAlive && !agent) {\n const options = {\n keepAlive: this._keepAlive,\n maxSockets: maxSockets\n };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n // if not using private agent and tunnel agent isn't setup then use global agent\n if (!agent) agent = usingSsl ? https.globalAgent : http.globalAgent;\n if (usingSsl && this._ignoreSslError) // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n return agent;\n }\n _performExponentialBackoff(retryNumber) {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise((resolve)=>setTimeout(()=>resolve(), ms));\n }\n static dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n let a = new Date(value);\n if (!isNaN(a.valueOf())) return a;\n }\n return value;\n }\n async _processResponse(res, options) {\n return new Promise(async (resolve, reject)=>{\n const statusCode = res.message.statusCode;\n const response = {\n statusCode: statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode == HttpCodes.NotFound) resolve(response);\n let obj;\n let contents;\n // get the result from the body\n try {\n contents = await res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) obj = JSON.parse(contents, HttpClient.dateTimeDeserializer);\n else obj = JSON.parse(contents);\n response.result = obj;\n }\n response.headers = res.message.headers;\n } catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) msg = obj.message;\n else if (contents && contents.length > 0) // it may be the case that the exception is in the body message as string\n msg = contents;\n else msg = 'Failed request: (' + statusCode + ')';\n let err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n } else resolve(response);\n });\n }\n}\nexports.HttpClient = HttpClient;\n\n},{\"69cee5eb1e6c891e\":\"http\",\"5135743cad10c017\":\"https\",\"74ceafcf2537bb1e\":\"jyPkM\",\"591dff9a34bef599\":\"fHNgG\"}],\"jyPkM\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction getProxyUrl(reqUrl) {\n let usingSsl = reqUrl.protocol === 'https:';\n let proxyUrl;\n if (checkBypass(reqUrl)) return proxyUrl;\n let proxyVar;\n if (usingSsl) proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n else proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY'];\n if (proxyVar) proxyUrl = new URL(proxyVar);\n return proxyUrl;\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) return false;\n let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) return false;\n // Determine the request port\n let reqPort;\n if (reqUrl.port) reqPort = Number(reqUrl.port);\n else if (reqUrl.protocol === 'http:') reqPort = 80;\n else if (reqUrl.protocol === 'https:') reqPort = 443;\n // Format the request hostname and hostname with port\n let upperReqHosts = [\n reqUrl.hostname.toUpperCase()\n ];\n if (typeof reqPort === 'number') upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n // Compare request host against noproxy\n for (let upperNoProxyItem of noProxy.split(',').map((x)=>x.trim().toUpperCase()).filter((x)=>x)){\n if (upperReqHosts.some((x)=>x === upperNoProxyItem)) return true;\n }\n return false;\n}\nexports.checkBypass = checkBypass;\n\n},{}],\"fHNgG\":[function(require,module,exports,__globalThis) {\nmodule.exports = require(\"4930519cb3dd45a3\");\n\n},{\"4930519cb3dd45a3\":\"Z7Qtc\"}],\"Z7Qtc\":[function(require,module,exports,__globalThis) {\n'use strict';\nvar net = require(\"5121e3e37efd6d5e\");\nvar tls = require(\"2f892df2fa9f0920\");\nvar http = require(\"d8f61135d445c2eb\");\nvar https = require(\"4422f117af5fb5c5\");\nvar events = require(\"2bf2dc2e245634a1\");\nvar assert = require(\"d682d38a2480f4c\");\nvar util = require(\"8150fd083365f338\");\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for(var i = 0, len = self.requests.length; i < len; ++i){\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({\n request: req\n }, self.options, toOptions(host, port, localAddress));\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n function onFree() {\n self.emit('free', socket, options);\n }\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) connectOptions.localAddress = options.localAddress;\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' + new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d', res.statusCode);\n socket.destroy();\n var error = new Error(\"tunneling socket could not be established, statusCode=\" + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n function onError(cause) {\n connectReq.removeAllListeners();\n debug('tunneling socket could not be established, cause=%s\\n', cause.message, cause.stack);\n var error = new Error(\"tunneling socket could not be established, cause=\" + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket);\n if (pos === -1) return;\n this.sockets.splice(pos, 1);\n var pending = this.requests.shift();\n if (pending) // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n};\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n return host; // for v0.11 or later\n}\nfunction mergeOptions(target) {\n for(var i = 1, len = arguments.length; i < len; ++i){\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for(var j = 0, keyLen = keys.length; j < keyLen; ++j){\n var k = keys[j];\n if (overrides[k] !== undefined) target[k] = overrides[k];\n }\n }\n }\n return target;\n}\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') args[0] = 'TUNNEL: ' + args[0];\n else args.unshift('TUNNEL:');\n console.error.apply(console, args);\n};\nelse debug = function() {};\nexports.debug = debug; // for test\n\n},{\"5121e3e37efd6d5e\":\"net\",\"2f892df2fa9f0920\":\"tls\",\"d8f61135d445c2eb\":\"http\",\"4422f117af5fb5c5\":\"https\",\"2bf2dc2e245634a1\":\"events\",\"d682d38a2480f4c\":\"assert\",\"8150fd083365f338\":\"util\"}],\"lQXpe\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nclass BasicCredentialHandler {\n constructor(username, password){\n this.username = username;\n this.password = password;\n }\n prepareRequest(options) {\n options.headers['Authorization'] = 'Basic ' + Buffer.from(this.username + ':' + this.password).toString('base64');\n }\n // This handler cannot handle 401\n canHandleAuthentication(response) {\n return false;\n }\n handleAuthentication(httpClient, requestInfo, objs) {\n return null;\n }\n}\nexports.BasicCredentialHandler = BasicCredentialHandler;\nclass BearerCredentialHandler {\n constructor(token){\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n options.headers['Authorization'] = 'Bearer ' + this.token;\n }\n // This handler cannot handle 401\n canHandleAuthentication(response) {\n return false;\n }\n handleAuthentication(httpClient, requestInfo, objs) {\n return null;\n }\n}\nexports.BearerCredentialHandler = BearerCredentialHandler;\nclass PersonalAccessTokenCredentialHandler {\n constructor(token){\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n options.headers['Authorization'] = 'Basic ' + Buffer.from('PAT:' + this.token).toString('base64');\n }\n // This handler cannot handle 401\n canHandleAuthentication(response) {\n return false;\n }\n handleAuthentication(httpClient, requestInfo, objs) {\n return null;\n }\n}\nexports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;\n\n},{}],\"7Zbhg\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nvar __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function(resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;\nconst os_1 = require(\"883cae28f50a90e7\");\nconst fs_1 = require(\"d52c794fdbfabbb1\");\nconst { access, appendFile, writeFile } = fs_1.promises;\nexports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';\nexports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';\nclass Summary {\n constructor(){\n this._buffer = '';\n }\n /**\n * Finds the summary file path from the environment, rejects if env var is not found or file does not exist\n * Also checks r/w permissions.\n *\n * @returns step summary file path\n */ filePath() {\n return __awaiter(this, void 0, void 0, function*() {\n if (this._filePath) return this._filePath;\n const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];\n if (!pathFromEnv) throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);\n try {\n yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);\n } catch (_a) {\n throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);\n }\n this._filePath = pathFromEnv;\n return this._filePath;\n });\n }\n /**\n * Wraps content in an HTML tag, adding any HTML attributes\n *\n * @param {string} tag HTML tag to wrap\n * @param {string | null} content content within the tag\n * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add\n *\n * @returns {string} content wrapped in HTML element\n */ wrap(tag, content, attrs = {}) {\n const htmlAttrs = Object.entries(attrs).map(([key, value])=>` ${key}=\"${value}\"`).join('');\n if (!content) return `<${tag}${htmlAttrs}>`;\n return `<${tag}${htmlAttrs}>${content}`;\n }\n /**\n * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.\n *\n * @param {SummaryWriteOptions} [options] (optional) options for write operation\n *\n * @returns {Promise} summary instance\n */ write(options) {\n return __awaiter(this, void 0, void 0, function*() {\n const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);\n const filePath = yield this.filePath();\n const writeFunc = overwrite ? writeFile : appendFile;\n yield writeFunc(filePath, this._buffer, {\n encoding: 'utf8'\n });\n return this.emptyBuffer();\n });\n }\n /**\n * Clears the summary buffer and wipes the summary file\n *\n * @returns {Summary} summary instance\n */ clear() {\n return __awaiter(this, void 0, void 0, function*() {\n return this.emptyBuffer().write({\n overwrite: true\n });\n });\n }\n /**\n * Returns the current summary buffer as a string\n *\n * @returns {string} string of summary buffer\n */ stringify() {\n return this._buffer;\n }\n /**\n * If the summary buffer is empty\n *\n * @returns {boolen} true if the buffer is empty\n */ isEmptyBuffer() {\n return this._buffer.length === 0;\n }\n /**\n * Resets the summary buffer without writing to summary file\n *\n * @returns {Summary} summary instance\n */ emptyBuffer() {\n this._buffer = '';\n return this;\n }\n /**\n * Adds raw text to the summary buffer\n *\n * @param {string} text content to add\n * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)\n *\n * @returns {Summary} summary instance\n */ addRaw(text, addEOL = false) {\n this._buffer += text;\n return addEOL ? this.addEOL() : this;\n }\n /**\n * Adds the operating system-specific end-of-line marker to the buffer\n *\n * @returns {Summary} summary instance\n */ addEOL() {\n return this.addRaw(os_1.EOL);\n }\n /**\n * Adds an HTML codeblock to the summary buffer\n *\n * @param {string} code content to render within fenced code block\n * @param {string} lang (optional) language to syntax highlight code\n *\n * @returns {Summary} summary instance\n */ addCodeBlock(code, lang) {\n const attrs = Object.assign({}, lang && {\n lang\n });\n const element = this.wrap('pre', this.wrap('code', code), attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML list to the summary buffer\n *\n * @param {string[]} items list of items to render\n * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)\n *\n * @returns {Summary} summary instance\n */ addList(items, ordered = false) {\n const tag = ordered ? 'ol' : 'ul';\n const listItems = items.map((item)=>this.wrap('li', item)).join('');\n const element = this.wrap(tag, listItems);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML table to the summary buffer\n *\n * @param {SummaryTableCell[]} rows table rows\n *\n * @returns {Summary} summary instance\n */ addTable(rows) {\n const tableBody = rows.map((row)=>{\n const cells = row.map((cell)=>{\n if (typeof cell === 'string') return this.wrap('td', cell);\n const { header, data, colspan, rowspan } = cell;\n const tag = header ? 'th' : 'td';\n const attrs = Object.assign(Object.assign({}, colspan && {\n colspan\n }), rowspan && {\n rowspan\n });\n return this.wrap(tag, data, attrs);\n }).join('');\n return this.wrap('tr', cells);\n }).join('');\n const element = this.wrap('table', tableBody);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds a collapsable HTML details element to the summary buffer\n *\n * @param {string} label text for the closed state\n * @param {string} content collapsable content\n *\n * @returns {Summary} summary instance\n */ addDetails(label, content) {\n const element = this.wrap('details', this.wrap('summary', label) + content);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML image tag to the summary buffer\n *\n * @param {string} src path to the image you to embed\n * @param {string} alt text description of the image\n * @param {SummaryImageOptions} options (optional) addition image attributes\n *\n * @returns {Summary} summary instance\n */ addImage(src, alt, options) {\n const { width, height } = options || {};\n const attrs = Object.assign(Object.assign({}, width && {\n width\n }), height && {\n height\n });\n const element = this.wrap('img', null, Object.assign({\n src,\n alt\n }, attrs));\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML section heading element\n *\n * @param {string} text heading text\n * @param {number | string} [level=1] (optional) the heading level, default: 1\n *\n * @returns {Summary} summary instance\n */ addHeading(text, level) {\n const tag = `h${level}`;\n const allowedTag = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6'\n ].includes(tag) ? tag : 'h1';\n const element = this.wrap(allowedTag, text);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML thematic break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */ addSeparator() {\n const element = this.wrap('hr', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML line break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */ addBreak() {\n const element = this.wrap('br', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML blockquote to the summary buffer\n *\n * @param {string} text quote text\n * @param {string} cite (optional) citation url\n *\n * @returns {Summary} summary instance\n */ addQuote(text, cite) {\n const attrs = Object.assign({}, cite && {\n cite\n });\n const element = this.wrap('blockquote', text, attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML anchor tag to the summary buffer\n *\n * @param {string} text link text/content\n * @param {string} href hyperlink\n *\n * @returns {Summary} summary instance\n */ addLink(text, href) {\n const element = this.wrap('a', text, {\n href\n });\n return this.addRaw(element).addEOL();\n }\n}\nconst _summary = new Summary();\n/**\n * @deprecated use `core.summary`\n */ exports.markdownSummary = _summary;\nexports.summary = _summary;\n\n},{\"883cae28f50a90e7\":\"os\",\"d52c794fdbfabbb1\":\"fs\"}],\"1irbL\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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(\"818c00e38db4fcf4\");\nObject.defineProperty(exports, \"Argument\", {\n enumerable: true,\n get: function() {\n return argument_1.Argument;\n }\n});\nvar jsonArgument_1 = require(\"c08f7534e96127a6\");\nObject.defineProperty(exports, \"JSONArgument\", {\n enumerable: true,\n get: function() {\n return jsonArgument_1.JSONArgument;\n }\n});\nconst comment_1 = require(\"1222b947cf52db6a\");\nObject.defineProperty(exports, \"Comment\", {\n enumerable: true,\n get: function() {\n return comment_1.Comment;\n }\n});\nconst parser_1 = require(\"76bd4faa688b3a6\");\nvar flag_1 = require(\"146dd26c02688bdf\");\nObject.defineProperty(exports, \"Flag\", {\n enumerable: true,\n get: function() {\n return flag_1.Flag;\n }\n});\nconst instruction_1 = require(\"580224f94f990f62\");\nObject.defineProperty(exports, \"Instruction\", {\n enumerable: true,\n get: function() {\n return instruction_1.Instruction;\n }\n});\nvar line_1 = require(\"b10e9f8eeb123952\");\nObject.defineProperty(exports, \"Line\", {\n enumerable: true,\n get: function() {\n return line_1.Line;\n }\n});\nconst parserDirective_1 = require(\"48560c9781a127f2\");\nObject.defineProperty(exports, \"ParserDirective\", {\n enumerable: true,\n get: function() {\n return parserDirective_1.ParserDirective;\n }\n});\nvar property_1 = require(\"32b923ba03725fba\");\nObject.defineProperty(exports, \"Property\", {\n enumerable: true,\n get: function() {\n return property_1.Property;\n }\n});\nvar variable_1 = require(\"38f5b7215a951c16\");\nObject.defineProperty(exports, \"Variable\", {\n enumerable: true,\n get: function() {\n return variable_1.Variable;\n }\n});\nvar add_1 = require(\"46fe02f5a4ca95f9\");\nObject.defineProperty(exports, \"Add\", {\n enumerable: true,\n get: function() {\n return add_1.Add;\n }\n});\nconst arg_1 = require(\"b50e6043532127e\");\nObject.defineProperty(exports, \"Arg\", {\n enumerable: true,\n get: function() {\n return arg_1.Arg;\n }\n});\nconst cmd_1 = require(\"6151c2d28c8d5622\");\nObject.defineProperty(exports, \"Cmd\", {\n enumerable: true,\n get: function() {\n return cmd_1.Cmd;\n }\n});\nconst copy_1 = require(\"302e65a20d20846c\");\nObject.defineProperty(exports, \"Copy\", {\n enumerable: true,\n get: function() {\n return copy_1.Copy;\n }\n});\nconst entrypoint_1 = require(\"3b8f9736d90d33e6\");\nObject.defineProperty(exports, \"Entrypoint\", {\n enumerable: true,\n get: function() {\n return entrypoint_1.Entrypoint;\n }\n});\nconst env_1 = require(\"73053c83e5457e82\");\nObject.defineProperty(exports, \"Env\", {\n enumerable: true,\n get: function() {\n return env_1.Env;\n }\n});\nconst from_1 = require(\"fb70244a02539db4\");\nObject.defineProperty(exports, \"From\", {\n enumerable: true,\n get: function() {\n return from_1.From;\n }\n});\nconst healthcheck_1 = require(\"ce38775557f57e2\");\nObject.defineProperty(exports, \"Healthcheck\", {\n enumerable: true,\n get: function() {\n return healthcheck_1.Healthcheck;\n }\n});\nvar heredoc_1 = require(\"3fc29578d4056add\");\nObject.defineProperty(exports, \"Heredoc\", {\n enumerable: true,\n get: function() {\n return heredoc_1.Heredoc;\n }\n});\nvar jsonInstruction_1 = require(\"110dc2f32a5a5c80\");\nObject.defineProperty(exports, \"JSONInstruction\", {\n enumerable: true,\n get: function() {\n return jsonInstruction_1.JSONInstruction;\n }\n});\nvar label_1 = require(\"ea70ab055c82b9c6\");\nObject.defineProperty(exports, \"Label\", {\n enumerable: true,\n get: function() {\n return label_1.Label;\n }\n});\nvar modifiableInstruction_1 = require(\"c1e4a9f72f3e4c8a\");\nObject.defineProperty(exports, \"ModifiableInstruction\", {\n enumerable: true,\n get: function() {\n return modifiableInstruction_1.ModifiableInstruction;\n }\n});\nvar onbuild_1 = require(\"1eb1f87000f1507b\");\nObject.defineProperty(exports, \"Onbuild\", {\n enumerable: true,\n get: function() {\n return onbuild_1.Onbuild;\n }\n});\nvar propertyInstruction_1 = require(\"f04eacef530f3101\");\nObject.defineProperty(exports, \"PropertyInstruction\", {\n enumerable: true,\n get: function() {\n return propertyInstruction_1.PropertyInstruction;\n }\n});\nvar run_1 = require(\"efc72f3780a14232\");\nObject.defineProperty(exports, \"Run\", {\n enumerable: true,\n get: function() {\n return run_1.Run;\n }\n});\nvar shell_1 = require(\"bb2b3970bd5df961\");\nObject.defineProperty(exports, \"Shell\", {\n enumerable: true,\n get: function() {\n return shell_1.Shell;\n }\n});\nvar stopsignal_1 = require(\"3f106ce05bb305c2\");\nObject.defineProperty(exports, \"Stopsignal\", {\n enumerable: true,\n get: function() {\n return stopsignal_1.Stopsignal;\n }\n});\nvar user_1 = require(\"26177b9c0e662cb0\");\nObject.defineProperty(exports, \"User\", {\n enumerable: true,\n get: function() {\n return user_1.User;\n }\n});\nvar volume_1 = require(\"657db89678e27c44\");\nObject.defineProperty(exports, \"Volume\", {\n enumerable: true,\n get: function() {\n return volume_1.Volume;\n }\n});\nconst workdir_1 = require(\"7c097a1fe36e1e9e\");\nObject.defineProperty(exports, \"Workdir\", {\n enumerable: true,\n get: function() {\n return workdir_1.Workdir;\n }\n});\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\",\n \"all_proxy\",\n \"FTP_PROXY\",\n \"ftp_proxy\",\n \"HTTP_PROXY\",\n \"http_proxy\",\n \"HTTPS_PROXY\",\n \"https_proxy\",\n \"NO_PROXY\",\n \"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\n},{\"818c00e38db4fcf4\":\"j0TZA\",\"c08f7534e96127a6\":\"58ALy\",\"1222b947cf52db6a\":\"5T0KS\",\"76bd4faa688b3a6\":\"aGQ73\",\"146dd26c02688bdf\":\"2WqAd\",\"580224f94f990f62\":\"hMvuU\",\"b10e9f8eeb123952\":\"jax2A\",\"48560c9781a127f2\":\"jIw2h\",\"32b923ba03725fba\":\"gy5Z3\",\"38f5b7215a951c16\":\"eGHet\",\"46fe02f5a4ca95f9\":\"gRGNk\",\"b50e6043532127e\":\"aKTxx\",\"6151c2d28c8d5622\":\"9Gc1y\",\"302e65a20d20846c\":\"b3t88\",\"3b8f9736d90d33e6\":\"a7xJN\",\"73053c83e5457e82\":\"1F4QE\",\"fb70244a02539db4\":\"nTyT0\",\"ce38775557f57e2\":\"bkMBh\",\"3fc29578d4056add\":\"f2Bvm\",\"110dc2f32a5a5c80\":\"jxSFH\",\"ea70ab055c82b9c6\":\"57hgN\",\"c1e4a9f72f3e4c8a\":\"hJrte\",\"1eb1f87000f1507b\":\"8eYDK\",\"f04eacef530f3101\":\"hOqfp\",\"efc72f3780a14232\":\"bBCsY\",\"bb2b3970bd5df961\":\"j6kkx\",\"3f106ce05bb305c2\":\"bxm6V\",\"26177b9c0e662cb0\":\"bSHO0\",\"657db89678e27c44\":\"5fZdP\",\"7c097a1fe36e1e9e\":\"alCEF\"}],\"j0TZA\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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) return false;\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) return true;\n return this.range.end.line > position.line ? false : this.range.end.character < position.character;\n }\n}\nexports.Argument = Argument;\n\n},{}],\"58ALy\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JSONArgument = void 0;\nconst argument_1 = require(\"60b94b0b95605351\");\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\n},{\"60b94b0b95605351\":\"j0TZA\"}],\"5T0KS\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Comment = void 0;\nconst vscode_languageserver_types_1 = require(\"7469fdb9598c3ee1\");\nconst line_1 = require(\"236e9d8672ea26a2\");\nconst util_1 = require(\"d962123f7b2d05e\");\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) return \"# \" + content;\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 */ getContent() {\n let range = this.getContentRange();\n if (range === null) return \"\";\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 */ 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++)if (!util_1.Util.isWhitespace(raw.charAt(i))) {\n start = i;\n break;\n }\n if (start === -1) return null;\n // go backwards up to the first # symbol\n for(let i = raw.length - 1; i >= 1; i--)if (!util_1.Util.isWhitespace(raw.charAt(i))) {\n end = i + 1;\n break;\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\n},{\"7469fdb9598c3ee1\":\"ghSGy\",\"236e9d8672ea26a2\":\"jax2A\",\"d962123f7b2d05e\":\"7JXpr\"}],\"ghSGy\":[function(require,module,exports,__globalThis) {\n(function(factory) {\n if (typeof module.exports === \"object\") {\n var v = factory(undefined, exports);\n if (v !== undefined) module.exports = v;\n } else if (typeof define === \"function\" && define.amd) define([\n \"require\",\n \"exports\"\n ], factory);\n})(function(require, exports1) {\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 * ------------------------------------------------------------------------------------------ */ 'use strict';\n Object.defineProperty(exports1, \"__esModule\", {\n value: true\n });\n 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;\n var DocumentUri;\n (function(DocumentUri) {\n function is(value) {\n return typeof value === 'string';\n }\n DocumentUri.is = is;\n })(DocumentUri || (exports1.DocumentUri = DocumentUri = {}));\n var URI;\n (function(URI) {\n function is(value) {\n return typeof value === 'string';\n }\n URI.is = is;\n })(URI || (exports1.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 || (exports1.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 || (exports1.uinteger = uinteger = {}));\n /**\n * The Position namespace provides helper functions to work with\n * {@link Position} literals.\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 */ function create(line, character) {\n if (line === Number.MAX_VALUE) line = uinteger.MAX_VALUE;\n if (character === Number.MAX_VALUE) character = uinteger.MAX_VALUE;\n return {\n line: line,\n character: character\n };\n }\n Position.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Position} interface.\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 || (exports1.Position = Position = {}));\n /**\n * The Range namespace provides helper functions to work with\n * {@link Range} literals.\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)) return {\n start: Position.create(one, two),\n end: Position.create(three, four)\n };\n else if (Position.is(one) && Position.is(two)) return {\n start: one,\n end: two\n };\n else throw new Error(\"Range#create called with invalid arguments[\".concat(one, \", \").concat(two, \", \").concat(three, \", \").concat(four, \"]\"));\n }\n Range.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Range} interface.\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 || (exports1.Range = Range = {}));\n /**\n * The Location namespace provides helper functions to work with\n * {@link Location} literals.\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 */ function create(uri, range) {\n return {\n uri: uri,\n range: range\n };\n }\n Location.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Location} interface.\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 || (exports1.Location = Location = {}));\n /**\n * The LocationLink namespace provides helper functions to work with\n * {@link LocationLink} literals.\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 */ function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\n return {\n targetUri: targetUri,\n targetRange: targetRange,\n targetSelectionRange: targetSelectionRange,\n originSelectionRange: originSelectionRange\n };\n }\n LocationLink.create = create;\n /**\n * Checks whether the given literal conforms to the {@link LocationLink} interface.\n */ function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri) && Range.is(candidate.targetSelectionRange) && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\n }\n LocationLink.is = is;\n })(LocationLink || (exports1.LocationLink = LocationLink = {}));\n /**\n * The Color namespace provides helper functions to work with\n * {@link Color} literals.\n */ var Color;\n (function(Color) {\n /**\n * Creates a new Color literal.\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 */ function is(value) {\n var candidate = value;\n 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);\n }\n Color.is = is;\n })(Color || (exports1.Color = Color = {}));\n /**\n * The ColorInformation namespace provides helper functions to work with\n * {@link ColorInformation} literals.\n */ var ColorInformation;\n (function(ColorInformation) {\n /**\n * Creates a new ColorInformation literal.\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 */ 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 || (exports1.ColorInformation = ColorInformation = {}));\n /**\n * The Color namespace provides helper functions to work with\n * {@link ColorPresentation} literals.\n */ var ColorPresentation;\n (function(ColorPresentation) {\n /**\n * Creates a new ColorInformation literal.\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 */ function is(value) {\n var candidate = value;\n 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));\n }\n ColorPresentation.is = is;\n })(ColorPresentation || (exports1.ColorPresentation = ColorPresentation = {}));\n /**\n * A set of predefined range kinds.\n */ var FoldingRangeKind;\n (function(FoldingRangeKind) {\n /**\n * Folding range for a comment\n */ FoldingRangeKind.Comment = 'comment';\n /**\n * Folding range for an import or include\n */ FoldingRangeKind.Imports = 'imports';\n /**\n * Folding range for a region (e.g. `#region`)\n */ FoldingRangeKind.Region = 'region';\n })(FoldingRangeKind || (exports1.FoldingRangeKind = FoldingRangeKind = {}));\n /**\n * The folding range namespace provides helper functions to work with\n * {@link FoldingRange} literals.\n */ var FoldingRange;\n (function(FoldingRange) {\n /**\n * Creates a new FoldingRange literal.\n */ function create(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) {\n var result = {\n startLine: startLine,\n endLine: endLine\n };\n if (Is.defined(startCharacter)) result.startCharacter = startCharacter;\n if (Is.defined(endCharacter)) result.endCharacter = endCharacter;\n if (Is.defined(kind)) result.kind = kind;\n if (Is.defined(collapsedText)) result.collapsedText = collapsedText;\n return result;\n }\n FoldingRange.create = create;\n /**\n * Checks whether the given literal conforms to the {@link FoldingRange} interface.\n */ function is(value) {\n var candidate = value;\n 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));\n }\n FoldingRange.is = is;\n })(FoldingRange || (exports1.FoldingRange = FoldingRange = {}));\n /**\n * The DiagnosticRelatedInformation namespace provides helper functions to work with\n * {@link DiagnosticRelatedInformation} literals.\n */ var DiagnosticRelatedInformation;\n (function(DiagnosticRelatedInformation) {\n /**\n * Creates a new DiagnosticRelatedInformation literal.\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 */ 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 || (exports1.DiagnosticRelatedInformation = DiagnosticRelatedInformation = {}));\n /**\n * The diagnostic's severity.\n */ var DiagnosticSeverity;\n (function(DiagnosticSeverity) {\n /**\n * Reports an error.\n */ DiagnosticSeverity.Error = 1;\n /**\n * Reports a warning.\n */ DiagnosticSeverity.Warning = 2;\n /**\n * Reports an information.\n */ DiagnosticSeverity.Information = 3;\n /**\n * Reports a hint.\n */ DiagnosticSeverity.Hint = 4;\n })(DiagnosticSeverity || (exports1.DiagnosticSeverity = DiagnosticSeverity = {}));\n /**\n * The diagnostic tags.\n *\n * @since 3.15.0\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 */ DiagnosticTag.Unnecessary = 1;\n /**\n * Deprecated or obsolete code.\n *\n * Clients are allowed to rendered diagnostics with this tag strike through.\n */ DiagnosticTag.Deprecated = 2;\n })(DiagnosticTag || (exports1.DiagnosticTag = DiagnosticTag = {}));\n /**\n * The CodeDescription namespace provides functions to deal with descriptions for diagnostic codes.\n *\n * @since 3.16.0\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 || (exports1.CodeDescription = CodeDescription = {}));\n /**\n * The Diagnostic namespace provides helper functions to work with\n * {@link Diagnostic} literals.\n */ var Diagnostic;\n (function(Diagnostic) {\n /**\n * Creates a new Diagnostic literal.\n */ function create(range, message, severity, code, source, relatedInformation) {\n var result = {\n range: range,\n message: message\n };\n if (Is.defined(severity)) result.severity = severity;\n if (Is.defined(code)) result.code = code;\n if (Is.defined(source)) result.source = source;\n if (Is.defined(relatedInformation)) result.relatedInformation = relatedInformation;\n return result;\n }\n Diagnostic.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Diagnostic} interface.\n */ function is(value) {\n var _a;\n var candidate = value;\n 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));\n }\n Diagnostic.is = is;\n })(Diagnostic || (exports1.Diagnostic = Diagnostic = {}));\n /**\n * The Command namespace provides helper functions to work with\n * {@link Command} literals.\n */ var Command;\n (function(Command) {\n /**\n * Creates a new Command literal.\n */ function create(title, command) {\n var args = [];\n for(var _i = 2; _i < arguments.length; _i++)args[_i - 2] = arguments[_i];\n var result = {\n title: title,\n command: command\n };\n if (Is.defined(args) && args.length > 0) result.arguments = args;\n return result;\n }\n Command.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Command} interface.\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 || (exports1.Command = Command = {}));\n /**\n * The TextEdit namespace provides helper function to create replace,\n * insert and delete edits more easily.\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 */ function replace(range, newText) {\n return {\n range: range,\n newText: newText\n };\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 */ function insert(position, newText) {\n return {\n range: {\n start: position,\n end: position\n },\n newText: newText\n };\n }\n TextEdit.insert = insert;\n /**\n * Creates a delete text edit.\n * @param range The range of text to be deleted.\n */ function del(range) {\n return {\n range: range,\n newText: ''\n };\n }\n TextEdit.del = del;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range.is(candidate.range);\n }\n TextEdit.is = is;\n })(TextEdit || (exports1.TextEdit = TextEdit = {}));\n var ChangeAnnotation;\n (function(ChangeAnnotation) {\n function create(label, needsConfirmation, description) {\n var result = {\n label: label\n };\n if (needsConfirmation !== undefined) result.needsConfirmation = needsConfirmation;\n if (description !== undefined) result.description = description;\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) && (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === undefined) && (Is.string(candidate.description) || candidate.description === undefined);\n }\n ChangeAnnotation.is = is;\n })(ChangeAnnotation || (exports1.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 || (exports1.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 */ function replace(range, newText, annotation) {\n return {\n range: range,\n newText: newText,\n annotationId: annotation\n };\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 */ function insert(position, newText, annotation) {\n return {\n range: {\n start: position,\n end: position\n },\n newText: newText,\n annotationId: annotation\n };\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 */ function del(range, annotation) {\n return {\n range: range,\n newText: '',\n annotationId: annotation\n };\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 || (exports1.AnnotatedTextEdit = AnnotatedTextEdit = {}));\n /**\n * The TextDocumentEdit namespace provides helper function to create\n * an edit that manipulates a text document.\n */ var TextDocumentEdit;\n (function(TextDocumentEdit) {\n /**\n * Creates a new `TextDocumentEdit`\n */ function create(textDocument, edits) {\n return {\n textDocument: textDocument,\n edits: edits\n };\n }\n TextDocumentEdit.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits);\n }\n TextDocumentEdit.is = is;\n })(TextDocumentEdit || (exports1.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)) result.options = options;\n if (annotation !== undefined) result.annotationId = annotation;\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 || (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 || (exports1.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)) result.options = options;\n if (annotation !== undefined) result.annotationId = annotation;\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 || (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 || (exports1.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)) result.options = options;\n if (annotation !== undefined) result.annotationId = annotation;\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 || (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 || (exports1.DeleteFile = DeleteFile = {}));\n var WorkspaceEdit;\n (function(WorkspaceEdit) {\n function is(value) {\n var candidate = value;\n return candidate && (candidate.changes !== undefined || candidate.documentChanges !== undefined) && (candidate.documentChanges === undefined || candidate.documentChanges.every(function(change) {\n if (Is.string(change.kind)) return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\n else return TextDocumentEdit.is(change);\n }));\n }\n WorkspaceEdit.is = is;\n })(WorkspaceEdit || (exports1.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) edit = TextEdit.insert(position, newText);\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.insert(position, newText, annotation);\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) return id;\n };\n TextEditChangeImpl.prototype.replace = function(range, newText, annotation) {\n var edit;\n var id;\n if (annotation === undefined) edit = TextEdit.replace(range, newText);\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.replace(range, newText, annotation);\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) return id;\n };\n TextEditChangeImpl.prototype.delete = function(range, annotation) {\n var edit;\n var id;\n if (annotation === undefined) edit = TextEdit.del(range);\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.del(range, annotation);\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) return id;\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) throw new Error(\"Text edit change is not configured to manage change annotations.\");\n };\n return TextEditChangeImpl;\n }();\n /**\n * A helper class\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)) id = idOrAnnotation;\n else {\n id = this.nextId();\n annotation = idOrAnnotation;\n }\n if (this._annotations[id] !== undefined) throw new Error(\"Id \".concat(id, \" is already in use.\"));\n if (annotation === undefined) throw new Error(\"No annotation provided for id \".concat(id));\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 */ 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 } else if (workspaceEdit.changes) Object.keys(workspaceEdit.changes).forEach(function(key) {\n var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\n _this._textEditChanges[key] = textEditChange;\n });\n } else this._workspaceEdit = {};\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 */ get: function() {\n this.initDocumentChanges();\n if (this._changeAnnotations !== undefined) {\n if (this._changeAnnotations.size === 0) this._workspaceEdit.changeAnnotations = undefined;\n else this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\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) throw new Error('Workspace edit is not configured for document changes.');\n var textDocument = {\n uri: key.uri,\n version: key.version\n };\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 } else {\n this.initChanges();\n if (this._workspaceEdit.changes === undefined) throw new Error('Workspace edit is not configured for normal text edit changes.');\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) this._workspaceEdit.changes = Object.create(null);\n };\n WorkspaceChange.prototype.createFile = function(uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) throw new Error('Workspace edit is not configured for document changes.');\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) annotation = optionsOrAnnotation;\n else options = optionsOrAnnotation;\n var operation;\n var id;\n if (annotation === undefined) operation = CreateFile.create(uri, options);\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) return id;\n };\n WorkspaceChange.prototype.renameFile = function(oldUri, newUri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) throw new Error('Workspace edit is not configured for document changes.');\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) annotation = optionsOrAnnotation;\n else options = optionsOrAnnotation;\n var operation;\n var id;\n if (annotation === undefined) operation = RenameFile.create(oldUri, newUri, options);\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) return id;\n };\n WorkspaceChange.prototype.deleteFile = function(uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) throw new Error('Workspace edit is not configured for document changes.');\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) annotation = optionsOrAnnotation;\n else options = optionsOrAnnotation;\n var operation;\n var id;\n if (annotation === undefined) operation = DeleteFile.create(uri, options);\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) return id;\n };\n return WorkspaceChange;\n }();\n exports1.WorkspaceChange = WorkspaceChange;\n /**\n * The TextDocumentIdentifier namespace provides helper functions to work with\n * {@link TextDocumentIdentifier} literals.\n */ var TextDocumentIdentifier;\n (function(TextDocumentIdentifier) {\n /**\n * Creates a new TextDocumentIdentifier literal.\n * @param uri The document's uri.\n */ function create(uri) {\n return {\n uri: uri\n };\n }\n TextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link TextDocumentIdentifier} interface.\n */ function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri);\n }\n TextDocumentIdentifier.is = is;\n })(TextDocumentIdentifier || (exports1.TextDocumentIdentifier = TextDocumentIdentifier = {}));\n /**\n * The VersionedTextDocumentIdentifier namespace provides helper functions to work with\n * {@link VersionedTextDocumentIdentifier} literals.\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 */ function create(uri, version) {\n return {\n uri: uri,\n version: version\n };\n }\n VersionedTextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link VersionedTextDocumentIdentifier} interface.\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 || (exports1.VersionedTextDocumentIdentifier = VersionedTextDocumentIdentifier = {}));\n /**\n * The OptionalVersionedTextDocumentIdentifier namespace provides helper functions to work with\n * {@link OptionalVersionedTextDocumentIdentifier} literals.\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 */ function create(uri, version) {\n return {\n uri: uri,\n version: version\n };\n }\n OptionalVersionedTextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link OptionalVersionedTextDocumentIdentifier} interface.\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 || (exports1.OptionalVersionedTextDocumentIdentifier = OptionalVersionedTextDocumentIdentifier = {}));\n /**\n * The TextDocumentItem namespace provides helper functions to work with\n * {@link TextDocumentItem} literals.\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 */ function create(uri, languageId, version, text) {\n return {\n uri: uri,\n languageId: languageId,\n version: version,\n text: text\n };\n }\n TextDocumentItem.create = create;\n /**\n * Checks whether the given literal conforms to the {@link TextDocumentItem} interface.\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 || (exports1.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 */ var MarkupKind;\n (function(MarkupKind) {\n /**\n * Plain text is supported as a content format\n */ MarkupKind.PlainText = 'plaintext';\n /**\n * Markdown is supported as a content format\n */ MarkupKind.Markdown = 'markdown';\n /**\n * Checks whether the given value is a value of the {@link MarkupKind} type.\n */ function is(value) {\n var candidate = value;\n return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown;\n }\n MarkupKind.is = is;\n })(MarkupKind || (exports1.MarkupKind = MarkupKind = {}));\n var MarkupContent;\n (function(MarkupContent) {\n /**\n * Checks whether the given value conforms to the {@link MarkupContent} interface.\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 || (exports1.MarkupContent = MarkupContent = {}));\n /**\n * The kind of a completion entry.\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 || (exports1.CompletionItemKind = CompletionItemKind = {}));\n /**\n * Defines whether the insert text in a completion item should be interpreted as\n * plain text or a snippet.\n */ var InsertTextFormat;\n (function(InsertTextFormat) {\n /**\n * The primary text to be inserted is treated as a plain string.\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 */ InsertTextFormat.Snippet = 2;\n })(InsertTextFormat || (exports1.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 */ var CompletionItemTag;\n (function(CompletionItemTag) {\n /**\n * Render a completion as obsolete, usually using a strike-out.\n */ CompletionItemTag.Deprecated = 1;\n })(CompletionItemTag || (exports1.CompletionItemTag = CompletionItemTag = {}));\n /**\n * The InsertReplaceEdit namespace provides functions to deal with insert / replace edits.\n *\n * @since 3.16.0\n */ var InsertReplaceEdit;\n (function(InsertReplaceEdit) {\n /**\n * Creates a new insert / replace edit\n */ function create(newText, insert, replace) {\n return {\n newText: newText,\n insert: insert,\n replace: replace\n };\n }\n InsertReplaceEdit.create = create;\n /**\n * Checks whether the given literal conforms to the {@link InsertReplaceEdit} interface.\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 || (exports1.InsertReplaceEdit = InsertReplaceEdit = {}));\n /**\n * How whitespace and indentation is handled during completion\n * item insertion.\n *\n * @since 3.16.0\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 */ 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 */ InsertTextMode.adjustIndentation = 2;\n })(InsertTextMode || (exports1.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) && (Is.string(candidate.description) || candidate.description === undefined);\n }\n CompletionItemLabelDetails.is = is;\n })(CompletionItemLabelDetails || (exports1.CompletionItemLabelDetails = CompletionItemLabelDetails = {}));\n /**\n * The CompletionItem namespace provides functions to deal with\n * completion items.\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 */ function create(label) {\n return {\n label: label\n };\n }\n CompletionItem.create = create;\n })(CompletionItem || (exports1.CompletionItem = CompletionItem = {}));\n /**\n * The CompletionList namespace provides functions to deal with\n * completion lists.\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 */ function create(items, isIncomplete) {\n return {\n items: items ? items : [],\n isIncomplete: !!isIncomplete\n };\n }\n CompletionList.create = create;\n })(CompletionList || (exports1.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 */ 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 */ 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 || (exports1.MarkedString = MarkedString = {}));\n var Hover;\n (function(Hover) {\n /**\n * Checks whether the given value conforms to the {@link Hover} interface.\n */ function is(value) {\n var candidate = value;\n 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));\n }\n Hover.is = is;\n })(Hover || (exports1.Hover = Hover = {}));\n /**\n * The ParameterInformation namespace provides helper functions to work with\n * {@link ParameterInformation} literals.\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 */ function create(label, documentation) {\n return documentation ? {\n label: label,\n documentation: documentation\n } : {\n label: label\n };\n }\n ParameterInformation.create = create;\n })(ParameterInformation || (exports1.ParameterInformation = ParameterInformation = {}));\n /**\n * The SignatureInformation namespace provides helper functions to work with\n * {@link SignatureInformation} literals.\n */ var SignatureInformation;\n (function(SignatureInformation) {\n function create(label, documentation) {\n var parameters = [];\n for(var _i = 2; _i < arguments.length; _i++)parameters[_i - 2] = arguments[_i];\n var result = {\n label: label\n };\n if (Is.defined(documentation)) result.documentation = documentation;\n if (Is.defined(parameters)) result.parameters = parameters;\n else result.parameters = [];\n return result;\n }\n SignatureInformation.create = create;\n })(SignatureInformation || (exports1.SignatureInformation = SignatureInformation = {}));\n /**\n * A document highlight kind.\n */ var DocumentHighlightKind;\n (function(DocumentHighlightKind) {\n /**\n * A textual occurrence.\n */ DocumentHighlightKind.Text = 1;\n /**\n * Read-access of a symbol, like reading a variable.\n */ DocumentHighlightKind.Read = 2;\n /**\n * Write-access of a symbol, like writing to a variable.\n */ DocumentHighlightKind.Write = 3;\n })(DocumentHighlightKind || (exports1.DocumentHighlightKind = DocumentHighlightKind = {}));\n /**\n * DocumentHighlight namespace to provide helper functions to work with\n * {@link DocumentHighlight} literals.\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 */ function create(range, kind) {\n var result = {\n range: range\n };\n if (Is.number(kind)) result.kind = kind;\n return result;\n }\n DocumentHighlight.create = create;\n })(DocumentHighlight || (exports1.DocumentHighlight = DocumentHighlight = {}));\n /**\n * A symbol kind.\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 || (exports1.SymbolKind = SymbolKind = {}));\n /**\n * Symbol tags are extra annotations that tweak the rendering of a symbol.\n *\n * @since 3.16\n */ var SymbolTag;\n (function(SymbolTag) {\n /**\n * Render a symbol as obsolete, usually using a strike-out.\n */ SymbolTag.Deprecated = 1;\n })(SymbolTag || (exports1.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 */ function create(name, kind, range, uri, containerName) {\n var result = {\n name: name,\n kind: kind,\n location: {\n uri: uri,\n range: range\n }\n };\n if (containerName) result.containerName = containerName;\n return result;\n }\n SymbolInformation.create = create;\n })(SymbolInformation || (exports1.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 */ function create(name, kind, uri, range) {\n return range !== undefined ? {\n name: name,\n kind: kind,\n location: {\n uri: uri,\n range: range\n }\n } : {\n name: name,\n kind: kind,\n location: {\n uri: uri\n }\n };\n }\n WorkspaceSymbol.create = create;\n })(WorkspaceSymbol || (exports1.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 */ 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) result.children = children;\n return result;\n }\n DocumentSymbol.create = create;\n /**\n * Checks whether the given literal conforms to the {@link DocumentSymbol} interface.\n */ function is(value) {\n var candidate = value;\n 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));\n }\n DocumentSymbol.is = is;\n })(DocumentSymbol || (exports1.DocumentSymbol = DocumentSymbol = {}));\n /**\n * A set of predefined code action kinds\n */ var CodeActionKind;\n (function(CodeActionKind) {\n /**\n * Empty kind.\n */ CodeActionKind.Empty = '';\n /**\n * Base kind for quickfix actions: 'quickfix'\n */ CodeActionKind.QuickFix = 'quickfix';\n /**\n * Base kind for refactoring actions: 'refactor'\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 */ 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 */ 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 */ CodeActionKind.RefactorRewrite = 'refactor.rewrite';\n /**\n * Base kind for source actions: `source`\n *\n * Source code actions apply to the entire file.\n */ CodeActionKind.Source = 'source';\n /**\n * Base kind for an organize imports source action: `source.organizeImports`\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 */ CodeActionKind.SourceFixAll = 'source.fixAll';\n })(CodeActionKind || (exports1.CodeActionKind = CodeActionKind = {}));\n /**\n * The reason why code actions were requested.\n *\n * @since 3.17.0\n */ var CodeActionTriggerKind;\n (function(CodeActionTriggerKind) {\n /**\n * Code actions were explicitly requested by the user or by an extension.\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 */ CodeActionTriggerKind.Automatic = 2;\n })(CodeActionTriggerKind || (exports1.CodeActionTriggerKind = CodeActionTriggerKind = {}));\n /**\n * The CodeActionContext namespace provides helper functions to work with\n * {@link CodeActionContext} literals.\n */ var CodeActionContext;\n (function(CodeActionContext) {\n /**\n * Creates a new CodeActionContext literal.\n */ function create(diagnostics, only, triggerKind) {\n var result = {\n diagnostics: diagnostics\n };\n if (only !== undefined && only !== null) result.only = only;\n if (triggerKind !== undefined && triggerKind !== null) result.triggerKind = triggerKind;\n return result;\n }\n CodeActionContext.create = create;\n /**\n * Checks whether the given literal conforms to the {@link CodeActionContext} interface.\n */ function is(value) {\n var candidate = value;\n 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);\n }\n CodeActionContext.is = is;\n })(CodeActionContext || (exports1.CodeActionContext = CodeActionContext = {}));\n var CodeAction;\n (function(CodeAction) {\n function create(title, kindOrCommandOrEdit, kind) {\n var result = {\n title: title\n };\n var checkKind = true;\n if (typeof kindOrCommandOrEdit === 'string') {\n checkKind = false;\n result.kind = kindOrCommandOrEdit;\n } else if (Command.is(kindOrCommandOrEdit)) result.command = kindOrCommandOrEdit;\n else result.edit = kindOrCommandOrEdit;\n if (checkKind && kind !== undefined) result.kind = kind;\n return result;\n }\n CodeAction.create = create;\n function is(value) {\n var candidate = value;\n 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));\n }\n CodeAction.is = is;\n })(CodeAction || (exports1.CodeAction = CodeAction = {}));\n /**\n * The CodeLens namespace provides helper functions to work with\n * {@link CodeLens} literals.\n */ var CodeLens;\n (function(CodeLens) {\n /**\n * Creates a new CodeLens literal.\n */ function create(range, data) {\n var result = {\n range: range\n };\n if (Is.defined(data)) result.data = data;\n return result;\n }\n CodeLens.create = create;\n /**\n * Checks whether the given literal conforms to the {@link CodeLens} interface.\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 || (exports1.CodeLens = CodeLens = {}));\n /**\n * The FormattingOptions namespace provides helper functions to work with\n * {@link FormattingOptions} literals.\n */ var FormattingOptions;\n (function(FormattingOptions) {\n /**\n * Creates a new FormattingOptions literal.\n */ function create(tabSize, insertSpaces) {\n return {\n tabSize: tabSize,\n insertSpaces: insertSpaces\n };\n }\n FormattingOptions.create = create;\n /**\n * Checks whether the given literal conforms to the {@link FormattingOptions} interface.\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 || (exports1.FormattingOptions = FormattingOptions = {}));\n /**\n * The DocumentLink namespace provides helper functions to work with\n * {@link DocumentLink} literals.\n */ var DocumentLink;\n (function(DocumentLink) {\n /**\n * Creates a new DocumentLink literal.\n */ function create(range, target, data) {\n return {\n range: range,\n target: target,\n data: data\n };\n }\n DocumentLink.create = create;\n /**\n * Checks whether the given literal conforms to the {@link DocumentLink} interface.\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 || (exports1.DocumentLink = DocumentLink = {}));\n /**\n * The SelectionRange namespace provides helper function to work with\n * SelectionRange literals.\n */ var SelectionRange;\n (function(SelectionRange) {\n /**\n * Creates a new SelectionRange\n * @param range the range.\n * @param parent an optional parent.\n */ function create(range, parent) {\n return {\n range: range,\n parent: parent\n };\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 || (exports1.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 */ 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 */ 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 */ SemanticTokenTypes[\"decorator\"] = \"decorator\";\n })(SemanticTokenTypes || (exports1.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 */ 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 || (exports1.SemanticTokenModifiers = SemanticTokenModifiers = {}));\n /**\n * @since 3.16.0\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') && Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === 'number');\n }\n SemanticTokens.is = is;\n })(SemanticTokens || (exports1.SemanticTokens = SemanticTokens = {}));\n /**\n * The InlineValueText namespace provides functions to deal with InlineValueTexts.\n *\n * @since 3.17.0\n */ var InlineValueText;\n (function(InlineValueText) {\n /**\n * Creates a new InlineValueText literal.\n */ function create(range, text) {\n return {\n range: range,\n text: text\n };\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 || (exports1.InlineValueText = InlineValueText = {}));\n /**\n * The InlineValueVariableLookup namespace provides functions to deal with InlineValueVariableLookups.\n *\n * @since 3.17.0\n */ var InlineValueVariableLookup;\n (function(InlineValueVariableLookup) {\n /**\n * Creates a new InlineValueText literal.\n */ function create(range, variableName, caseSensitiveLookup) {\n return {\n range: range,\n variableName: variableName,\n caseSensitiveLookup: caseSensitiveLookup\n };\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) && (Is.string(candidate.variableName) || candidate.variableName === undefined);\n }\n InlineValueVariableLookup.is = is;\n })(InlineValueVariableLookup || (exports1.InlineValueVariableLookup = InlineValueVariableLookup = {}));\n /**\n * The InlineValueEvaluatableExpression namespace provides functions to deal with InlineValueEvaluatableExpression.\n *\n * @since 3.17.0\n */ var InlineValueEvaluatableExpression;\n (function(InlineValueEvaluatableExpression) {\n /**\n * Creates a new InlineValueEvaluatableExpression literal.\n */ function create(range, expression) {\n return {\n range: range,\n expression: expression\n };\n }\n InlineValueEvaluatableExpression.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== undefined && candidate !== null && Range.is(candidate.range) && (Is.string(candidate.expression) || candidate.expression === undefined);\n }\n InlineValueEvaluatableExpression.is = is;\n })(InlineValueEvaluatableExpression || (exports1.InlineValueEvaluatableExpression = InlineValueEvaluatableExpression = {}));\n /**\n * The InlineValueContext namespace provides helper functions to work with\n * {@link InlineValueContext} literals.\n *\n * @since 3.17.0\n */ var InlineValueContext;\n (function(InlineValueContext) {\n /**\n * Creates a new InlineValueContext literal.\n */ function create(frameId, stoppedLocation) {\n return {\n frameId: frameId,\n stoppedLocation: stoppedLocation\n };\n }\n InlineValueContext.create = create;\n /**\n * Checks whether the given literal conforms to the {@link InlineValueContext} interface.\n */ function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(value.stoppedLocation);\n }\n InlineValueContext.is = is;\n })(InlineValueContext || (exports1.InlineValueContext = InlineValueContext = {}));\n /**\n * Inlay hint kinds.\n *\n * @since 3.17.0\n */ var InlayHintKind;\n (function(InlayHintKind) {\n /**\n * An inlay hint that for a type annotation.\n */ InlayHintKind.Type = 1;\n /**\n * An inlay hint that is for a parameter.\n */ InlayHintKind.Parameter = 2;\n function is(value) {\n return value === 1 || value === 2;\n }\n InlayHintKind.is = is;\n })(InlayHintKind || (exports1.InlayHintKind = InlayHintKind = {}));\n var InlayHintLabelPart;\n (function(InlayHintLabelPart) {\n function create(value) {\n return {\n value: value\n };\n }\n InlayHintLabelPart.create = create;\n function is(value) {\n var candidate = value;\n 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));\n }\n InlayHintLabelPart.is = is;\n })(InlayHintLabelPart || (exports1.InlayHintLabelPart = InlayHintLabelPart = {}));\n var InlayHint;\n (function(InlayHint) {\n function create(position, label, kind) {\n var result = {\n position: position,\n label: label\n };\n if (kind !== undefined) result.kind = kind;\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) && (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));\n }\n InlayHint.is = is;\n })(InlayHint || (exports1.InlayHint = InlayHint = {}));\n var StringValue;\n (function(StringValue) {\n function createSnippet(value) {\n return {\n kind: 'snippet',\n value: value\n };\n }\n StringValue.createSnippet = createSnippet;\n })(StringValue || (exports1.StringValue = StringValue = {}));\n var InlineCompletionItem;\n (function(InlineCompletionItem) {\n function create(insertText, filterText, range, command) {\n return {\n insertText: insertText,\n filterText: filterText,\n range: range,\n command: command\n };\n }\n InlineCompletionItem.create = create;\n })(InlineCompletionItem || (exports1.InlineCompletionItem = InlineCompletionItem = {}));\n var InlineCompletionList;\n (function(InlineCompletionList) {\n function create(items) {\n return {\n items: items\n };\n }\n InlineCompletionList.create = create;\n })(InlineCompletionList || (exports1.InlineCompletionList = InlineCompletionList = {}));\n /**\n * Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered.\n *\n * @since 3.18.0\n * @proposed\n */ var InlineCompletionTriggerKind;\n (function(InlineCompletionTriggerKind) {\n /**\n * Completion was triggered explicitly by a user gesture.\n */ InlineCompletionTriggerKind.Invoked = 0;\n /**\n * Completion was triggered automatically while editing.\n */ InlineCompletionTriggerKind.Automatic = 1;\n })(InlineCompletionTriggerKind || (exports1.InlineCompletionTriggerKind = InlineCompletionTriggerKind = {}));\n var SelectedCompletionInfo;\n (function(SelectedCompletionInfo) {\n function create(range, text) {\n return {\n range: range,\n text: text\n };\n }\n SelectedCompletionInfo.create = create;\n })(SelectedCompletionInfo || (exports1.SelectedCompletionInfo = SelectedCompletionInfo = {}));\n var InlineCompletionContext;\n (function(InlineCompletionContext) {\n function create(triggerKind, selectedCompletionInfo) {\n return {\n triggerKind: triggerKind,\n selectedCompletionInfo: selectedCompletionInfo\n };\n }\n InlineCompletionContext.create = create;\n })(InlineCompletionContext || (exports1.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 || (exports1.WorkspaceFolder = WorkspaceFolder = {}));\n exports1.EOL = [\n '\\n',\n '\\r\\n',\n '\\r'\n ];\n /**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\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 */ 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 */ 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) && 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) return a.range.start.character - b.range.start.character;\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) text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\n else throw new Error('Overlapping edit');\n lastModifiedOffset = startOffset;\n }\n return text;\n }\n TextDocument.applyEdits = applyEdits;\n function mergeSort(data, compare) {\n if (data.length <= 1) // sorted\n return data;\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) // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n else // greater -> take right\n data[i++] = right[rightIdx++];\n }\n while(leftIdx < left.length)data[i++] = left[leftIdx++];\n while(rightIdx < right.length)data[i++] = right[rightIdx++];\n return data;\n }\n })(TextDocument || (exports1.TextDocument = TextDocument = {}));\n /**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\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') i++;\n }\n if (isLineStart && text.length > 0) lineOffsets.push(text.length);\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) return Position.create(0, offset);\n while(low < high){\n var mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) high = mid;\n else low = mid + 1;\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) return this._content.length;\n else if (position.line < 0) return 0;\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 undefined1(value) {\n return typeof value === 'undefined';\n }\n Is.undefined = undefined1;\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\n},{}],\"jax2A\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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},{}],\"7JXpr\":[function(require,module,exports,__globalThis) {\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 * ------------------------------------------------------------------------------------------ */ 'use strict';\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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++)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++)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 // found an escape character and then reached EOF\n return -1;\n default:\n return i;\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 */ static isInsideRange(position, range) {\n if (range.start.line === range.end.line) return range.start.line === position.line && range.start.character <= position.character && position.character <= range.end.character;\n else if (range.start.line === position.line) return range.start.character <= position.character;\n else if (range.end.line === position.line) return position.character <= range.end.character;\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) === '-') value = value.substring(1);\n if (value.charAt(0) === '\"') {\n if (value.charAt(value.length - 1) !== '\"') return null;\n value = value.substring(1, value.length - 1);\n }\n if (value.charAt(0) === '\\'') {\n if (value.charAt(value.length - 1) !== '\\'') return null;\n value = value.substring(1, value.length - 1);\n }\n if (value.charAt(0) === \"<\") return null;\n return value;\n }\n}\nexports.Util = Util;\n\n},{}],\"aGQ73\":[function(require,module,exports,__globalThis) {\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 * ------------------------------------------------------------------------------------------ */ 'use strict';\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Parser = void 0;\nconst vscode_languageserver_textdocument_1 = require(\"3eb2e9f72fa842bb\");\nconst vscode_languageserver_types_1 = require(\"34b2e1cd00de16ce\");\nconst comment_1 = require(\"9e92b8b410126e56\");\nconst parserDirective_1 = require(\"777f0037af770a91\");\nconst instruction_1 = require(\"1329dffc7d9471c6\");\nconst add_1 = require(\"5065fff407b0cdf5\");\nconst arg_1 = require(\"aa6e0b7a0eb2c8a9\");\nconst cmd_1 = require(\"62420b33948711ba\");\nconst copy_1 = require(\"44a1387c9f6642f8\");\nconst env_1 = require(\"c3c835dbabebb0c\");\nconst entrypoint_1 = require(\"a1a0bf4df6e06e65\");\nconst from_1 = require(\"ac2ea75013335655\");\nconst healthcheck_1 = require(\"fbf71dd210ee2ad2\");\nconst label_1 = require(\"17f71289f1308509\");\nconst onbuild_1 = require(\"abac336e7fc664aa\");\nconst run_1 = require(\"d4206ac9dc34f56c\");\nconst shell_1 = require(\"341b73fd8ae672e8\");\nconst stopsignal_1 = require(\"44cf25b6f2d37d9\");\nconst workdir_1 = require(\"9247ddaff67cb60c\");\nconst user_1 = require(\"b96409d6175d837f\");\nconst volume_1 = require(\"4febb7a38de581a6\");\nconst dockerfile_1 = require(\"50edac4bf8b150b0\");\nconst util_1 = require(\"f9cdab4223270f96\");\nconst main_1 = require(\"38bd78812b171580\");\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++)switch(buffer.charAt(i)){\n case ' ':\n case '\\t':\n break;\n case '\\r':\n case '\\n':\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) directiveEnd = j;\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) directiveEnd = j;\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) valueEnd = k;\n // line break found, reset\n lineEnd = k;\n break directiveValue;\n case '\\t':\n case ' ':\n if (valueStart !== -1 && valueEnd === -1) valueEnd = k;\n continue;\n default:\n if (valueStart === -1) valueStart = k;\n break;\n }\n }\n if (directiveStart === -1) break directiveCheck;\n if (valueStart === -1) {\n // no non-whitespace characters found, highlight all the characters then\n valueStart = j + 1;\n valueEnd = lineEnd;\n } else if (valueEnd === -1) // reached EOF\n valueEnd = buffer.length;\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') // skip over the \\r\n i = valueEnd + 1;\n else i = valueEnd;\n continue directiveCheck;\n default:\n if (directiveStart === -1) directiveStart = j;\n break;\n }\n }\n break;\n default:\n break directiveCheck;\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 } else if (util_1.Util.isUTF8BOM(buffer.substring(0, 1))) offset = 1;\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) instructionEnd = i;\n i++;\n } else if (char === ' ' || char === '\\t') {\n for(let j = i + 2; j < this.buffer.length; j++)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 // reached EOF\n instructionEnd = i + 1;\n instruction = instruction + this.escapeChar;\n break instructionCheck;\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++)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 escapedInstruction = false;\n }\n if (instructionEnd === -1) instructionEnd = i;\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) continue;\n if (instructionEnd === -1) instructionEnd = i;\n dockerfile.addInstruction(this.createInstruction(dockerfile, instruction, start, i, i));\n return i;\n case '#':\n if (escapedInstruction) continue;\n default:\n instructionEnd = i + 1;\n instruction = instruction + char;\n escapedInstruction = false;\n break;\n }\n }\n // reached EOF\n if (instructionEnd === -1) instructionEnd = this.buffer.length;\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) return offset;\n keyword = instruction.getKeyword();\n }\n if (keyword !== main_1.Keyword.ADD && keyword !== main_1.Keyword.COPY && keyword !== main_1.Keyword.RUN) return offset;\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) heredocs.push(name);\n }\n }\n if (heredocs.length > 0) for (const heredoc of heredocs)offset = this.parseHeredoc(heredoc, offset);\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++)switch(this.buffer.charAt(i)){\n case '\\r':\n case '\\n':\n if (escaped) continue;\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 } else if (next === ' ' || next === '\\t') {\n for(let j = i + 2; j < this.buffer.length; j++)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 // 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) escaped = false;\n break;\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++)switch(this.buffer.charAt(i)){\n case '\\r':\n case '\\n':\n end = i;\n break commentLoop;\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++)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)) return i;\n startWord = -1;\n lineStart = true;\n break;\n default:\n if (lineStart) {\n startWord = i;\n lineStart = false;\n }\n break;\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\n},{\"3eb2e9f72fa842bb\":\"fnQzO\",\"34b2e1cd00de16ce\":\"ghSGy\",\"9e92b8b410126e56\":\"5T0KS\",\"777f0037af770a91\":\"jIw2h\",\"1329dffc7d9471c6\":\"hMvuU\",\"5065fff407b0cdf5\":\"gRGNk\",\"aa6e0b7a0eb2c8a9\":\"aKTxx\",\"62420b33948711ba\":\"9Gc1y\",\"44a1387c9f6642f8\":\"b3t88\",\"c3c835dbabebb0c\":\"1F4QE\",\"a1a0bf4df6e06e65\":\"a7xJN\",\"ac2ea75013335655\":\"nTyT0\",\"fbf71dd210ee2ad2\":\"bkMBh\",\"17f71289f1308509\":\"57hgN\",\"abac336e7fc664aa\":\"8eYDK\",\"d4206ac9dc34f56c\":\"bBCsY\",\"341b73fd8ae672e8\":\"j6kkx\",\"44cf25b6f2d37d9\":\"bxm6V\",\"9247ddaff67cb60c\":\"alCEF\",\"b96409d6175d837f\":\"bSHO0\",\"4febb7a38de581a6\":\"5fZdP\",\"50edac4bf8b150b0\":\"040Bk\",\"f9cdab4223270f96\":\"7JXpr\",\"38bd78812b171580\":\"1irbL\"}],\"fnQzO\":[function(require,module,exports,__globalThis) {\nvar __spreadArray = this && this.__spreadArray || function(to, from, pack) {\n if (pack || arguments.length === 2) {\n for(var i = 0, l = from.length, ar; i < l; i++)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.exports === \"object\") {\n var v = factory(undefined, exports);\n if (v !== undefined) module.exports = v;\n } else if (typeof define === \"function\" && define.amd) define([\n \"require\",\n \"exports\"\n ], factory);\n})(function(require, exports1) {\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 * ------------------------------------------------------------------------------------------ */ 'use strict';\n Object.defineProperty(exports1, \"__esModule\", {\n value: true\n });\n exports1.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) for(var i = 0, len = addedLineOffsets.length; i < len; i++)lineOffsets[i + startLine + 1] = addedLineOffsets[i];\n else if (addedLineOffsets.length < 10000) lineOffsets.splice.apply(lineOffsets, __spreadArray([\n startLine + 1,\n endLine - startLine\n ], addedLineOffsets, false));\n else this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1));\n var diff = change.text.length - (endOffset - startOffset);\n if (diff !== 0) for(var i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++)lineOffsets[i] = lineOffsets[i] + diff;\n } else if (FullTextDocument.isFull(change)) {\n this._content = change.text;\n this._lineOffsets = undefined;\n } else throw new Error('Unknown change event received');\n }\n this._version = version;\n };\n FullTextDocument.prototype.getLineOffsets = function() {\n if (this._lineOffsets === undefined) this._lineOffsets = computeLineOffsets(this._content, true);\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) return {\n line: 0,\n character: offset\n };\n while(low < high){\n var mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) high = mid;\n else low = mid + 1;\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 {\n line: line,\n character: offset - lineOffsets[line]\n };\n };\n FullTextDocument.prototype.offsetAt = function(position) {\n var lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) return this._content.length;\n else if (position.line < 0) return 0;\n var lineOffset = lineOffsets[position.line];\n if (position.character <= 0) return lineOffset;\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)))offset--;\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 && typeof candidate.text === 'string' && candidate.range !== undefined && (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n };\n FullTextDocument.isFull = function(event) {\n var candidate = event;\n return candidate !== undefined && candidate !== null && 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 */ 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 */ function update(document, changes, version) {\n if (document instanceof FullTextDocument) {\n document.update(changes, version);\n return document;\n } else throw new Error('TextDocument.update: document must be created by TextDocument.create');\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) return a.range.start.character - b.range.start.character;\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) throw new Error('Overlapping edit');\n else if (startOffset > lastModifiedOffset) spans.push(text.substring(lastModifiedOffset, startOffset));\n if (e.newText.length) spans.push(e.newText);\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 || (exports1.TextDocument = TextDocument = {}));\n function mergeSort(data, compare) {\n if (data.length <= 1) // sorted\n return data;\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) // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n else // greater -> take right\n data[i++] = right[rightIdx++];\n }\n while(leftIdx < left.length)data[i++] = left[leftIdx++];\n while(rightIdx < right.length)data[i++] = right[rightIdx++];\n return data;\n }\n function computeLineOffsets(text, isAtLineStart, textOffset) {\n if (textOffset === void 0) textOffset = 0;\n var result = isAtLineStart ? [\n textOffset\n ] : [];\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 */ ) i++;\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) return {\n start: end,\n end: start\n };\n return range;\n }\n function getWellformedEdit(textEdit) {\n var range = getWellformedRange(textEdit.range);\n if (range !== textEdit.range) return {\n newText: textEdit.newText,\n range: range\n };\n return textEdit;\n }\n});\n\n},{}],\"jIw2h\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ParserDirective = void 0;\nconst main_1 = require(\"83344ee6e442f65c\");\nconst line_1 = require(\"628c95531afa43c2\");\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\n},{\"83344ee6e442f65c\":\"1irbL\",\"628c95531afa43c2\":\"jax2A\"}],\"hMvuU\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Instruction = void 0;\nconst vscode_languageserver_types_1 = require(\"75e3371b54792caa\");\nconst util_1 = require(\"fa72f15fb47197d2\");\nconst line_1 = require(\"dc037d211747d0bf\");\nconst argument_1 = require(\"674d83a5e08e316f\");\nconst heredoc_1 = require(\"f30c1c980ba59082\");\nconst variable_1 = require(\"6c1e8830b0f0285c\");\nconst main_1 = require(\"c02c05f3ca580f8f\");\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) return null;\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) return null;\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) return [];\n if (args[0].getRange().start.line === args[args.length - 1].getRange().end.line) return [\n 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') whitespaceCheck: for(let j = i + 2; j < fullArgs.length; j++)switch(fullArgs.charAt(j)){\n case ' ':\n case '\\t':\n continue;\n case '\\r':\n j++;\n case '\\n':\n if (startPosition !== null) ranges.push(vscode_languageserver_types_1.Range.create(startPosition, this.document.positionAt(offset + end + 1)));\n startPosition = null;\n start = true;\n comment = false;\n i = j;\n break whitespaceCheck;\n default:\n break whitespaceCheck;\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 } else if (next === '\\n') {\n if (startPosition !== null) ranges.push(vscode_languageserver_types_1.Range.create(startPosition, this.document.positionAt(offset + end + 1)));\n startPosition = null;\n start = true;\n comment = false;\n i++;\n } else i++;\n } else if (util_1.Util.isNewline(char)) {\n if (comment) {\n startPosition = null;\n start = true;\n comment = false;\n }\n } else 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) startPosition = vscode_languageserver_types_1.Position.create(position.line, 0);\n }\n end = i;\n }\n }\n if (startPosition === null) // 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 else ranges.push(vscode_languageserver_types_1.Range.create(startPosition, this.document.positionAt(offset + end + 1)));\n return ranges;\n }\n getRawArgumentsContent() {\n let args = this.getArguments();\n if (args.length === 0) return null;\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) return null;\n let content = \"\";\n let ranges = this.getArgumentsRanges();\n let documentText = this.document.getText();\n for (let range of ranges)content += documentText.substring(this.document.offsetAt(range.start), this.document.offsetAt(range.end));\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 } else if (found !== -1) {\n if (escapeMarker === -1) args.push(new argument_1.Argument(escapedArg, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + found), this.document.positionAt(offset + i))));\n else args.push(new argument_1.Argument(escapedArg, vscode_languageserver_types_1.Range.create(this.document.positionAt(offset + found), this.document.positionAt(offset + escapeMarker))));\n escapeMarker = -1;\n escapedArg = \"\";\n found = -1;\n }\n } else if (char === this.escapeChar) {\n let next = fullArgs.charAt(i + 1);\n if (next === ' ' || next === '\\t') 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) escapeMarker = i;\n i = j;\n break whitespaceCheck;\n default:\n escapeMarker = i;\n if (found === -1) i = j - 1;\n break whitespaceCheck;\n }\n }\n else if (next === '\\r') {\n comment = false;\n escaping = true;\n start = true;\n if (found !== -1 && escapeMarker === -1) escapeMarker = i;\n i += 2;\n } else if (next === '\\n') {\n comment = false;\n escaping = true;\n start = true;\n if (found !== -1 && escapeMarker === -1) escapeMarker = i;\n i++;\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 === '$') escapedArg = escapedArg + char + next;\n else if (next === '') break;\n else escapedArg = escapedArg + next;\n if (found === -1) found = i;\n i++;\n }\n } else if (!comment) {\n if (start && char === '#') comment = true;\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) found = i;\n }\n // non-whitespace character detected, reset\n start = false;\n }\n }\n if (found !== -1) {\n if (escapeMarker === -1) 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 else 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 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 } 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) // if the variable's range doesn't match the argument,\n // append the remaining text\n expanded += this.document.getText().substring(offset, argEnd);\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)variables.push(parsedVariable);\n }\n return variables;\n }\n parseVariables(offset, arg) {\n let variables = [];\n variableLoop: for(let i = 0; i < arg.length; i++)switch(arg.charAt(i)){\n case this.escapeChar:\n if (arg.charAt(i + 1) === '$') i++;\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++)switch(arg.charAt(k)){\n case ' ':\n case '\\t':\n case '\\r':\n continue;\n case '\\n':\n // escape this newline\n j = k;\n continue nameLoop;\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) nameEnd = j;\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 } 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 } else // offset one more from the last\n // character found\n substitutionEnd = substitutionEnd + 1;\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) nameEnd = j;\n else if (modifierRead !== -1) {\n if (substitutionStart === -1) {\n substitutionStart = j;\n substitutionEnd = j;\n } else substitutionEnd = j;\n escapedSubstitutionParameter += ':';\n } else modifierRead = j;\n escapedString += ':';\n break;\n case '\\n':\n case '\\r':\n case ' ':\n case '\\t':\n break;\n default:\n if (nameEnd === -1) escapedName += char;\n else if (modifierRead !== -1) {\n if (substitutionStart === -1) {\n substitutionStart = j;\n substitutionEnd = j;\n } else substitutionEnd = j;\n escapedSubstitutionParameter += char;\n } else modifierRead = j;\n escapedString += char;\n break;\n }\n }\n break variableLoop;\n } else if (util_1.Util.isWhitespace(arg.charAt(i + 1)) || i === arg.length - 1) continue;\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++)switch(arg.charAt(k)){\n case ' ':\n case '\\t':\n case '\\r':\n continue;\n case '\\n':\n // escape this newline\n j = k;\n continue nameLoop;\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 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()) return true;\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)) for (let property of envs[i].getProperties()){\n if (property.getName() === variable) return false;\n }\n }\n let args = image.getARGs();\n for(let i = args.length - 1; i >= 0; i--)if (args[i].isBefore(line)) {\n let property = args[i].getProperty();\n if (property && property.getName() === variable) return true;\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++)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 break;\n case '#':\n if (escaping) for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){\n case '\\n':\n i = j;\n continue nameLoop;\n }\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n if (escaping) break;\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) break contentLoop;\n quote = ch;\n continue;\n case this.escapeChar:\n for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){\n case '\\n':\n escaping = true;\n j = i;\n continue contentLoop;\n }\n break;\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n break;\n case '<':\n if (endFound) searchHyphen = true;\n else endFound = true;\n break;\n case '-':\n if (searchHyphen) {\n searchHyphen = false;\n break;\n }\n case '#':\n if (escaping) for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){\n case '\\n':\n i = j;\n continue contentLoop;\n }\n default:\n if (start === -1) start = i;\n if (quote !== null) {\n end = i + 1;\n break;\n }\n break contentLoop;\n }\n }\n if (start === -1) return vscode_languageserver_types_1.Range.create(startRange.end, startRange.end);\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) return [];\n const heredocs = [];\n const range = this.getRange();\n if (range.start.line === range.end.line) // instruction only on one line, if heredocs exist they would be incomplete\n return this.createSingleLineHeredocs(args);\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++)switch(content.charAt(i)){\n case this.escapeChar:\n escaping = true;\n for(let j = i + 1; j < content.length; j++)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 break;\n case '\\r':\n break;\n case '\\n':\n if (escaping) break;\n if (heredocsProcessed) {\n if (contentStart === -1) contentStart = i;\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 } 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(\"<<\")) heredocDefinitions.push(arg);\n } else break;\n }\n heredocsProcessed = true;\n lineStart = -1;\n continue contentLoop;\n }\n break;\n case ' ':\n case '\\t':\n if (escaping) break;\n case '#':\n if (escaping) for(let j = i + 1; j < content.length; j++)switch(content.charAt(j)){\n case '\\n':\n i = j;\n continue contentLoop;\n }\n default:\n if (escaping) escaping = false;\n if (heredocsProcessed) {\n if (contentStart === -1) contentStart = i;\n if (lineStart === -1) lineStart = i;\n }\n break;\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) contentRange = vscode_languageserver_types_1.Range.create(this.document.positionAt(startOffset + contentStart), range.end);\n else if (contentEnd !== -1) contentRange = vscode_languageserver_types_1.Range.create(this.document.positionAt(startOffset + contentStart), this.document.positionAt(startOffset + contentEnd));\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 } else // instruction only on one line, if heredocs exist they would be incomplete\n return this.createSingleLineHeredocs(args);\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')index++;\n if (text.substring(index) === name) return vscode_languageserver_types_1.Range.create(vscode_languageserver_types_1.Position.create(candidateRange.start.line, index), candidateRange.end);\n return null;\n }\n return text === name ? candidateRange : null;\n }\n}\nexports.Instruction = Instruction;\n\n},{\"75e3371b54792caa\":\"ghSGy\",\"fa72f15fb47197d2\":\"7JXpr\",\"dc037d211747d0bf\":\"jax2A\",\"674d83a5e08e316f\":\"j0TZA\",\"f30c1c980ba59082\":\"f2Bvm\",\"6c1e8830b0f0285c\":\"eGHet\",\"c02c05f3ca580f8f\":\"1irbL\"}],\"f2Bvm\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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 */ class 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 */ 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\n},{\"4b50d54787c41ee7\":\"ghSGy\",\"b99c8b3ac173456d\":\"epAH1\"}],\"epAH1\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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) return this.name + \"=\" + this.value;\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\n},{}],\"aKTxx\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Arg = void 0;\nconst property_1 = require(\"80085cc42a36e81\");\nconst propertyInstruction_1 = require(\"7526e7dfe4901c29\");\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) this.property = new property_1.Property(this.document, this.escapeChar, args[0]);\n else this.property = null;\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 */ getProperty() {\n return this.property;\n }\n}\nexports.Arg = Arg;\n\n},{\"80085cc42a36e81\":\"gy5Z3\",\"7526e7dfe4901c29\":\"hOqfp\"}],\"gy5Z3\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Property = void 0;\nconst vscode_languageserver_types_1 = require(\"e172fc4caa74424\");\nconst util_1 = require(\"554d16feb7eb1735\");\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 } else {\n let argRange = arg.getRange();\n 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) ;\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 */ 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 */ getUnescapedValue() {\n if (this.valueRange === null) return null;\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++)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 // 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) rawValue = rawValue + char;\n break;\n case '#':\n if (escaped) for(let j = i + 1; j < value.length; j++)switch(value.charAt(j)){\n case '\\r':\n j++;\n case '\\n':\n i = j;\n continue rawLoop;\n }\n else rawValue = rawValue + char;\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 !== '\\'') return vscode_languageserver_types_1.Range.create(arg.getRange().start, document.positionAt(document.offsetAt(arg.getRange().start) + index));\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 */ static getValue(value, escapeChar) {\n let escaped = false;\n const skip = util_1.Util.findLeadingNonWhitespace(value, escapeChar);\n if (skip !== 0 && value.charAt(skip) === '#') // need to skip over comments\n escaped = true;\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 === '\"') for(let i = 1; i < value.length; i++){\n if (value.charAt(i) === escapeChar) i++;\n else if (value.charAt(i) === '\"' && i === value.length - 1) inDouble = true;\n }\n if (inSingle || inDouble) value = value.substring(1, value.length - 1);\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') 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 } 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 if (inDouble) {\n if (char === '\\r') {\n escaped = true;\n i = i + 2;\n } else if (char === '\\n') {\n escaped = true;\n i++;\n } else if (char !== '\"') {\n if (char === escapeChar) i++;\n escapedValue = escapedValue + escapeChar;\n }\n continue parseValue;\n } else if (inSingle || literal) {\n if (char === '\\r') {\n escaped = true;\n i = i + 2;\n } else if (char === '\\n') {\n escaped = true;\n i++;\n } else escapedValue = escapedValue + escapeChar;\n continue parseValue;\n } else if (char === escapeChar) {\n // double escape, append one and move on\n escapedValue = escapedValue + escapeChar;\n i++;\n } else if (char === '\\r') {\n escaped = true;\n // offset one more for \\r\\n\n i = i + 2;\n } else if (char === '\\n') {\n escaped = true;\n i++;\n start = i;\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) commentCheck = i;\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++)switch(value.charAt(j)){\n case '\\r':\n j++;\n case '\\n':\n i = j;\n break newlineCheck;\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\n},{\"e172fc4caa74424\":\"ghSGy\",\"554d16feb7eb1735\":\"7JXpr\"}],\"hOqfp\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PropertyInstruction = void 0;\nconst vscode_languageserver_types_1 = require(\"fb005c0263efbd46\");\nconst instruction_1 = require(\"ae3a92d2c36b7ea3\");\nconst property_1 = require(\"39497e57ce0ffacf\");\nconst argument_1 = require(\"2f89de63f1f8e904\");\nconst util_1 = require(\"ca53fbc43fccdebf\");\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) this.properties = [];\n else if (args.length === 1) this.properties = [\n new property_1.Property(this.document, this.escapeChar, args[0])\n ];\n else if (args.length === 2) {\n if (args[0].getValue().indexOf('=') === -1) this.properties = [\n new property_1.Property(this.document, this.escapeChar, args[0], args[1])\n ];\n else 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 } 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 = [\n 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++)this.properties.push(new property_1.Property(this.document, this.escapeChar, args[i]));\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 */ 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--)switch(content.charAt(i)){\n case ' ':\n case '\\t':\n continue;\n case '\\n':\n if (content.charAt(i - 1) === '\\r') i = i - 1;\n case '\\r':\n newlineCheck: for(let j = i - 1; j >= 0; j--)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 break whitespaceCheck;\n default:\n index = i;\n break whitespaceCheck;\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) // only whitespace found, no arguments\n return [];\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) mark = i;\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++)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 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 // 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) argStart = i;\n i = i + 1;\n continue argumentLoop;\n default:\n if (argStart === -1) argStart = i;\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) argStart = i;\n for(let j = i + 1; j < content.length; j++)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 break argumentLoop;\n case ' ':\n case '\\t':\n if (escaped) // consider there to be a space only if an argument\n // is not spanning multiple lines\n {\n if (argStart !== -1) spaced = true;\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++)switch(content.charAt(j)){\n case '\\r':\n j++;\n case '\\n':\n i = j;\n spaced = false;\n continue argumentLoop;\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 } else if (argStart === -1) argStart = i;\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) argStart = i;\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++)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) break;\n i = j - 1;\n continue argumentLoop;\n case '}':\n i = j;\n continue argumentLoop;\n default:\n escaped = false;\n break;\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) 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}\nexports.PropertyInstruction = PropertyInstruction;\n\n},{\"fb005c0263efbd46\":\"ghSGy\",\"ae3a92d2c36b7ea3\":\"hMvuU\",\"39497e57ce0ffacf\":\"gy5Z3\",\"2f89de63f1f8e904\":\"j0TZA\",\"ca53fbc43fccdebf\":\"7JXpr\"}],\"9Gc1y\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Cmd = void 0;\nconst jsonInstruction_1 = require(\"fadbfdfa374dda06\");\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\n},{\"fadbfdfa374dda06\":\"jxSFH\"}],\"b3t88\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Copy = void 0;\nconst jsonInstruction_1 = require(\"65144230b131ca44\");\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 */ getHeredocs() {\n return super.getHeredocs();\n }\n}\nexports.Copy = Copy;\n\n},{\"65144230b131ca44\":\"jxSFH\"}],\"1F4QE\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Env = void 0;\nconst propertyInstruction_1 = require(\"3dd682269c8a52ed\");\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\n},{\"3dd682269c8a52ed\":\"hOqfp\"}],\"a7xJN\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Entrypoint = void 0;\nconst jsonInstruction_1 = require(\"f651b847cf9bdc2\");\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\n},{\"f651b847cf9bdc2\":\"jxSFH\"}],\"nTyT0\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.From = void 0;\nconst vscode_languageserver_types_1 = require(\"5b86d61a77060318\");\nconst modifiableInstruction_1 = require(\"3fab8faba231e372\");\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 */ 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 */ getImageNameRange() {\n let range = this.getImageRange();\n if (range) {\n let registryRange = this.getRegistryRange();\n if (registryRange) range.start = this.document.positionAt(this.document.offsetAt(registryRange.end) + 1);\n let tagRange = this.getImageTagRange();\n let digestRange = this.getImageDigestRange();\n if (tagRange === null) {\n if (digestRange !== null) range.end = this.document.positionAt(this.document.offsetAt(digestRange.start) - 1);\n } else range.end = this.document.positionAt(this.document.offsetAt(tagRange.start) - 1);\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 */ 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 */ 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) return vscode_languageserver_types_1.Range.create(range.start.line, range.start.character + colonIndex + 1, range.end.line, range.end.character);\n }\n const subcontent = content.substring(0, atIndex);\n const subcolonIndex = subcontent.indexOf(':');\n if (subcolonIndex === -1) return null;\n if (slashIndex === -1) // 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 // both colon and slash found, check if it is a port\n if (subcolonIndex < slashIndex) return null;\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 */ 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) return vscode_languageserver_types_1.Range.create(range.start.line, range.start.character + index + 1, range.end.line, range.end.character);\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) return -1;\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) return -1;\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) range.end = this.document.positionAt(this.document.offsetAt(digestRange.start) - 1);\n } else range.end = this.document.positionAt(this.document.offsetAt(tagRange.start) - 1);\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) return null;\n const portIndex = this.indexOf(rangeStart, content, ':');\n const dotIndex = this.indexOf(rangeStart, content, '.');\n // hostname detected\n if (portIndex !== -1 || dotIndex !== -1) return vscode_languageserver_types_1.Range.create(range.start, this.document.positionAt(rangeStart + startingSlashIndex));\n const registry = content.substring(0, startingSlashIndex);\n // localhost registry detected\n if (registry === 'localhost') return vscode_languageserver_types_1.Range.create(range.start, this.document.positionAt(rangeStart + startingSlashIndex));\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\") return args[2].getRange();\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\n},{\"5b86d61a77060318\":\"ghSGy\",\"3fab8faba231e372\":\"hJrte\"}],\"bkMBh\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Healthcheck = void 0;\nconst modifiableInstruction_1 = require(\"665598fff2f000a9\");\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\n},{\"665598fff2f000a9\":\"hJrte\"}],\"57hgN\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Label = void 0;\nconst propertyInstruction_1 = require(\"2a3c43ab2d532e31\");\nconst util_1 = require(\"5d28f2c31403599f\");\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++)// 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 return variables;\n }\n getProperties() {\n return super.getProperties();\n }\n}\nexports.Label = Label;\n\n},{\"2a3c43ab2d532e31\":\"hOqfp\",\"5d28f2c31403599f\":\"7JXpr\"}],\"8eYDK\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Onbuild = void 0;\nconst vscode_languageserver_types_1 = require(\"8cc927a606bbcc1f\");\nconst parser_1 = require(\"929a3cd6b7bd5151\");\nconst instruction_1 = require(\"5311b0a026532a3\");\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) return null;\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\n},{\"8cc927a606bbcc1f\":\"ghSGy\",\"929a3cd6b7bd5151\":\"aGQ73\",\"5311b0a026532a3\":\"hMvuU\"}],\"bBCsY\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Run = void 0;\nconst jsonInstruction_1 = require(\"d3870bc430335c64\");\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 */ getHeredocs() {\n return super.getHeredocs();\n }\n}\nexports.Run = Run;\n\n},{\"d3870bc430335c64\":\"jxSFH\"}],\"j6kkx\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Shell = void 0;\nconst jsonInstruction_1 = require(\"dc6aa9db0db2b2a4\");\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\n},{\"dc6aa9db0db2b2a4\":\"jxSFH\"}],\"bxm6V\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Stopsignal = void 0;\nconst instruction_1 = require(\"e3fce526f69f22f\");\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\n},{\"e3fce526f69f22f\":\"hMvuU\"}],\"alCEF\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Workdir = void 0;\nconst instruction_1 = require(\"95b77616cbe9ddd8\");\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 */ 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 */ getAbsolutePath() {\n const path = this.getPath();\n if (path === null || path.startsWith(\"/\")) return path;\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--)if (workdirs[j].getRange().start.line < startLine) {\n const parent = workdirs[j].getAbsolutePath();\n if (parent === undefined || parent === null) return undefined;\n return parent.endsWith(\"/\") ? parent + path : parent + \"/\" + path;\n }\n }\n return undefined;\n }\n}\nexports.Workdir = Workdir;\n\n},{\"95b77616cbe9ddd8\":\"hMvuU\"}],\"bSHO0\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.User = void 0;\nconst instruction_1 = require(\"1c67107403f9045a\");\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\n},{\"1c67107403f9045a\":\"hMvuU\"}],\"5fZdP\":[function(require,module,exports,__globalThis) {\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Volume = void 0;\nconst jsonInstruction_1 = require(\"2200bfdb26148310\");\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},{\"2200bfdb26148310\":\"jxSFH\"}],\"040Bk\":[function(require,module,exports,__globalThis) {\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 * ------------------------------------------------------------------------------------------ */ 'use strict';\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Dockerfile = void 0;\nconst vscode_languageserver_types_1 = require(\"9b3d375bed950159\");\nconst ast = require(\"d891ee5557672a0b\");\nconst imageTemplate_1 = require(\"372addc62e869cb6\");\nconst from_1 = require(\"3861ba9aa1dc6c84\");\nconst util_1 = require(\"e6e9b77f8d4a922b\");\nconst main_1 = require(\"d891ee5557672a0b\");\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 */ this.foundFrom = false;\n this.document = document;\n }\n getEscapeCharacter() {\n for (const directive of this.directives)if (directive.getDirective() === ast.Directive.escape) {\n const value = directive.getValue();\n if (value === '\\\\' || value === '`') return value;\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)) // not inside the document, invalid position\n return null;\n if (this.initialInstructions.getComments().length > 0 || this.initialInstructions.getInstructions().length > 0) {\n if (util_1.Util.isInsideRange(position, this.initialInstructions.getRange())) return this.initialInstructions;\n }\n for (const buildStage of this.buildStages){\n if (util_1.Util.isInsideRange(position, buildStage.getRange())) return buildStage;\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 } else if (!this.foundFrom) this.initialInstructions.addInstruction(instruction);\n if (this.foundFrom) this.currentBuildStage.addInstruction(instruction);\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())initialARGs.addInstruction(instruction);\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) return undefined;\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())initialARGs.addInstruction(instruction);\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) variables.push(property.getName());\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) return null;\n for (const from of this.getFROMs())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) return null;\n return this.getContainingImage(range.start);\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) return [];\n const stages = [\n image\n ];\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())if (workdir.getRange().end.line < line) {\n let directory = workdir.getAbsolutePath();\n if (directory !== undefined && directory !== null) {\n if (!directory.endsWith(\"/\")) directory += \"/\";\n availableDirectories.add(directory);\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 */ organizeComments() {\n const comments = this.getComments();\n for(let i = 0; i < comments.length; i++)if (util_1.Util.isInsideRange(comments[i].getRange().end, this.initialInstructions.getRange())) this.initialInstructions.addComment(comments[i]);\n else {\n for (const buildStage of this.buildStages)if (util_1.Util.isInsideRange(comments[i].getRange().start, buildStage.getRange())) buildStage.addComment(comments[i]);\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) range = vscode_languageserver_types_1.Range.create(instructions[0].getRange().start, instructions[instructions.length - 1].getRange().end);\n } else if (instructions.length === 0) range = vscode_languageserver_types_1.Range.create(comments[0].getRange().start, comments[comments.length - 1].getRange().end);\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) range = vscode_languageserver_types_1.Range.create(commentStart, instructionEnd);\n range = vscode_languageserver_types_1.Range.create(commentStart, commentEnd);\n } else if (commentEnd.line < instructionEnd.line) range = vscode_languageserver_types_1.Range.create(instructionStart, instructionEnd);\n else range = vscode_languageserver_types_1.Range.create(instructionStart, commentEnd);\n }\n if (range === null) {\n if (this.directives.length === 0) return null;\n return this.directives[0].getRange();\n } else if (this.directives.length === 0) return range;\n return vscode_languageserver_types_1.Range.create(this.directives[0].getRange().start, range.end);\n }\n}\nexports.Dockerfile = Dockerfile;\n\n},{\"9b3d375bed950159\":\"ghSGy\",\"d891ee5557672a0b\":\"1irbL\",\"372addc62e869cb6\":\"dfryE\",\"3861ba9aa1dc6c84\":\"nTyT0\",\"e6e9b77f8d4a922b\":\"7JXpr\"}],\"dfryE\":[function(require,module,exports,__globalThis) {\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 * ------------------------------------------------------------------------------------------ */ 'use strict';\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ImageTemplate = void 0;\nconst vscode_languageserver_types_1 = require(\"637eaa8a1fc84367\");\nconst arg_1 = require(\"8d6e1611976d457\");\nconst cmd_1 = require(\"7049fdb6ce6cfe77\");\nconst copy_1 = require(\"18fb214fae92c2ad\");\nconst env_1 = require(\"ed7edb89b8b53c18\");\nconst entrypoint_1 = require(\"404b55dc97f3131e\");\nconst from_1 = require(\"8a1e47b88288dfaa\");\nconst healthcheck_1 = require(\"67d1d9c7cde52290\");\nconst onbuild_1 = require(\"434b828c9fd563cf\");\nconst util_1 = require(\"94e3edfa252cd826\");\nconst workdir_1 = require(\"97943bcfae78dd09\");\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())) return instruction;\n }\n return null;\n }\n /**\n * Gets all the ARG instructions that are defined in this image.\n */ getARGs() {\n let args = [];\n for (let instruction of this.instructions)if (instruction instanceof arg_1.Arg) args.push(instruction);\n return args;\n }\n /**\n * Gets all the CMD instructions that are defined in this image.\n */ getCMDs() {\n let cmds = [];\n for (let instruction of this.instructions)if (instruction instanceof cmd_1.Cmd) cmds.push(instruction);\n return cmds;\n }\n /**\n * Gets all the COPY instructions that are defined in this image.\n */ getCOPYs() {\n let copies = [];\n for (let instruction of this.instructions)if (instruction instanceof copy_1.Copy) copies.push(instruction);\n return copies;\n }\n /**\n * Gets all the ENTRYPOINT instructions that are defined in this image.\n */ getENTRYPOINTs() {\n let froms = [];\n for (let instruction of this.instructions)if (instruction instanceof entrypoint_1.Entrypoint) froms.push(instruction);\n return froms;\n }\n /**\n * Gets all the ENV instructions that are defined in this image.\n */ getENVs() {\n let args = [];\n for (let instruction of this.instructions)if (instruction instanceof env_1.Env) args.push(instruction);\n return args;\n }\n getFROM() {\n for (const instruction of this.instructions){\n if (instruction instanceof from_1.From) return instruction;\n }\n return null;\n }\n /**\n * Gets all the FROM instructions that are defined in this image.\n */ getFROMs() {\n let froms = [];\n for (let instruction of this.instructions)if (instruction instanceof from_1.From) froms.push(instruction);\n return froms;\n }\n /**\n * Gets all the HEALTHCHECK instructions that are defined in this image.\n */ getHEALTHCHECKs() {\n let froms = [];\n for (let instruction of this.instructions)if (instruction instanceof healthcheck_1.Healthcheck) froms.push(instruction);\n return froms;\n }\n getWORKDIRs() {\n const workdirs = [];\n for (const instruction of this.instructions)if (instruction instanceof workdir_1.Workdir) workdirs.push(instruction);\n return workdirs;\n }\n getOnbuildTriggers() {\n let triggers = [];\n for (let instruction of this.instructions)if (instruction instanceof onbuild_1.Onbuild) {\n let trigger = instruction.getTriggerInstruction();\n if (trigger) triggers.push(trigger);\n }\n return triggers;\n }\n getAvailableVariables(currentLine) {\n const variables = [];\n for (const arg of this.getARGs())if (arg.isBefore(currentLine)) {\n const property = arg.getProperty();\n if (property) {\n const variable = property.getName();\n if (variables.indexOf(variable) === -1) variables.push(variable);\n }\n }\n for (const env of this.getENVs()){\n if (env.isBefore(currentLine)) for (const property of env.getProperties()){\n const variable = property.getName();\n if (variables.indexOf(variable) === -1) variables.push(variable);\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 */ resolveVariable(variable, line) {\n let envs = this.getENVs();\n for(let i = envs.length - 1; i >= 0; i--){\n if (envs[i].isBefore(line)) for (let property of envs[i].getProperties()){\n if (property.getName() === variable) return property.getValue();\n }\n }\n let args = this.getARGs();\n for(let i = args.length - 1; i >= 0; i--)if (args[i].isBefore(line)) {\n let property = args[i].getProperty();\n if (property && property.getName() === variable) return property.getValue();\n }\n return undefined;\n }\n getRange() {\n const instructions = this.getInstructions();\n if (instructions.length === 0) // 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 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) return false;\n return util_1.Util.isInsideRange(position, range);\n }\n}\nexports.ImageTemplate = ImageTemplate;\n\n},{\"637eaa8a1fc84367\":\"ghSGy\",\"8d6e1611976d457\":\"aKTxx\",\"7049fdb6ce6cfe77\":\"9Gc1y\",\"18fb214fae92c2ad\":\"b3t88\",\"ed7edb89b8b53c18\":\"1F4QE\",\"404b55dc97f3131e\":\"a7xJN\",\"8a1e47b88288dfaa\":\"nTyT0\",\"67d1d9c7cde52290\":\"bkMBh\",\"434b828c9fd563cf\":\"8eYDK\",\"94e3edfa252cd826\":\"7JXpr\",\"97943bcfae78dd09\":\"alCEF\"}],\"kHqLa\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"run\", ()=>run);\nparcelHelpers.export(exports, \"runPiped\", ()=>runPiped);\nvar _spawnPlease = require(\"spawn-please\");\nvar _spawnPleaseDefault = parcelHelpers.interopDefault(_spawnPlease);\nvar _childProcess = require(\"child_process\");\nvar _childProcessDefault = parcelHelpers.interopDefault(_childProcess);\nasync function run(command, args) {\n try {\n return await (0, _spawnPleaseDefault.default)(command, args);\n } catch (error) {\n console.error(`Error running command: ${command} ${args.join(' ')}`);\n throw error;\n }\n}\nasync function runPiped([command1, args1], [command2, args2]) {\n const cp1 = (0, _childProcessDefault.default).spawn(command1, args1, {\n stdio: [\n 'inherit',\n 'pipe',\n 'inherit'\n ]\n });\n const cp2 = (0, _childProcessDefault.default).spawn(command2, args2, {\n stdio: [\n 'pipe',\n 'inherit',\n 'inherit'\n ]\n });\n cp1.stdout.pipe(cp2.stdin);\n await Promise.all([\n assertSuccess(cp1),\n assertSuccess(cp2)\n ]);\n}\nfunction assertSuccess(cp) {\n return new Promise((resolve, reject)=>{\n cp.on('error', (error)=>{\n reject(error);\n });\n cp.on('close', (code)=>{\n if (code !== 0) reject(new Error(`process exited with code ${code}`));\n resolve();\n });\n });\n}\n\n},{\"spawn-please\":\"7zP4I\",\"child_process\":\"child_process\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"8h9S8\"}],\"7zP4I\":[function(require,module,exports,__globalThis) {\nconst spawn = require(\"8fbf49fd88b8ce1a\");\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 */ const spawnPlease = (command, args, options = {}, spawnOptions = {})=>{\n // defaults\n if (options.rejectOnError === undefined) options.rejectOnError = true;\n let stdout = '';\n let stderr = '';\n const child = spawn(command, args, spawnOptions);\n return new Promise((resolve, reject)=>{\n if (options.stdin !== undefined && options.stdin != null) child.stdin.write(options.stdin);\n child.stdin.end();\n child.stdout.on('data', (data)=>{\n stdout += data;\n if (options.stdout) options.stdout(data);\n });\n child.stderr.on('data', (data)=>{\n stderr += data;\n if (options.stderr) options.stderr(data);\n });\n if (options.rejectOnError) child.addListener('error', reject);\n child.on('close', (code)=>{\n if (code !== 0 && options.rejectOnError) reject(stderr);\n else resolve({\n stdout,\n stderr\n });\n });\n });\n};\nmodule.exports = spawnPlease;\n\n},{\"8fbf49fd88b8ce1a\":\"gOFfe\"}],\"gOFfe\":[function(require,module,exports,__globalThis) {\n'use strict';\nconst cp = require(\"5db4eea157dc6abd\");\nconst parse = require(\"f459d4faad83418d\");\nconst enoent = require(\"5967fe713a07bdb3\");\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\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 return spawned;\n}\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\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 return result;\n}\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n\n},{\"5db4eea157dc6abd\":\"child_process\",\"f459d4faad83418d\":\"hSOoE\",\"5967fe713a07bdb3\":\"e03Rd\"}],\"hSOoE\":[function(require,module,exports,__globalThis) {\n'use strict';\nconst path = require(\"bb49ff520c0c29ab\");\nconst resolveCommand = require(\"cf8451362f6c35b9\");\nconst escape = require(\"f76fb8d716c0dfc3\");\nconst readShebang = require(\"91585cdbf7f6adf6\");\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n const shebang = parsed.file && readShebang(parsed.file);\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n return resolveCommand(parsed);\n }\n return parsed.file;\n}\nfunction parseNonShell(parsed) {\n if (!isWin) return parsed;\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\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 // 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 // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg)=>escape.argument(arg, needsDoubleEscapeMetaChars));\n const shellCommand = [\n parsed.command\n ].concat(parsed.args).join(' ');\n parsed.args = [\n '/d',\n '/s',\n '/c',\n `\"${shellCommand}\"`\n ];\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 return parsed;\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 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 // 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 // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\nmodule.exports = parse;\n\n},{\"bb49ff520c0c29ab\":\"path\",\"cf8451362f6c35b9\":\"iyIqb\",\"f76fb8d716c0dfc3\":\"kqk3O\",\"91585cdbf7f6adf6\":\"9LoJM\"}],\"iyIqb\":[function(require,module,exports,__globalThis) {\n'use strict';\nconst path = require(\"23fb8fe1b2d52b3\");\nconst which = require(\"f9b07d03c0b43245\");\nconst getPathKey = require(\"ef7a99e848f61b11\");\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 // 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) try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */ }\n let resolved;\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({\n env\n })],\n pathExt: withoutPathExt ? path.delimiter : undefined\n });\n } catch (e) {\n /* Empty */ } finally{\n if (shouldSwitchCwd) process.chdir(cwd);\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) resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n return resolved;\n}\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\nmodule.exports = resolveCommand;\n\n},{\"23fb8fe1b2d52b3\":\"path\",\"f9b07d03c0b43245\":\"g0W6J\",\"ef7a99e848f61b11\":\"7G1S5\"}],\"g0W6J\":[function(require,module,exports,__globalThis) {\nconst isWindows = process.platform === 'win32' || process.env.OSTYPE === 'cygwin' || process.env.OSTYPE === 'msys';\nconst path = require(\"1c762486b04d50e4\");\nconst COLON = isWindows ? ';' : ':';\nconst isexe = require(\"e2e7d3eebf2f2d35\");\nconst getNotFoundError = (cmd)=>Object.assign(new Error(`not found: ${cmd}`), {\n code: 'ENOENT'\n });\nconst getPathInfo = (cmd, opt)=>{\n const colon = opt.colon || COLON;\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 ? [\n process.cwd()\n ] : [],\n ...(opt.path || process.env.PATH || /* istanbul ignore next: very unusual */ '').split(colon)\n ];\n const pathExtExe = isWindows ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM' : '';\n const pathExt = isWindows ? pathExtExe.split(colon) : [\n ''\n ];\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '') pathExt.unshift('');\n }\n return {\n pathEnv,\n pathExt,\n pathExtExe\n };\n};\nconst which = (cmd, opt, cb)=>{\n if (typeof opt === 'function') {\n cb = opt;\n opt = {};\n }\n if (!opt) opt = {};\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);\n const found = [];\n const step = (i)=>new Promise((resolve, reject)=>{\n if (i === pathEnv.length) return opt.all && found.length ? resolve(found) : reject(getNotFoundError(cmd));\n const ppRaw = pathEnv[i];\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;\n const pCmd = path.join(pathPart, cmd);\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;\n resolve(subStep(p, i, 0));\n });\n const subStep = (p, i, ii)=>new Promise((resolve, reject)=>{\n if (ii === pathExt.length) return resolve(step(i + 1));\n const ext = pathExt[ii];\n isexe(p + ext, {\n pathExt: pathExtExe\n }, (er, is)=>{\n if (!er && is) {\n if (opt.all) found.push(p + ext);\n else return resolve(p + ext);\n }\n return resolve(subStep(p, i, ii + 1));\n });\n });\n return cb ? step(0).then((res)=>cb(null, res), cb) : step(0);\n};\nconst whichSync = (cmd, opt)=>{\n opt = opt || {};\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);\n const found = [];\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 const pCmd = path.join(pathPart, cmd);\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;\n for(let j = 0; j < pathExt.length; j++){\n const cur = p + pathExt[j];\n try {\n const is = isexe.sync(cur, {\n pathExt: pathExtExe\n });\n if (is) {\n if (opt.all) found.push(cur);\n else return cur;\n }\n } catch (ex) {}\n }\n }\n if (opt.all && found.length) return found;\n if (opt.nothrow) return null;\n throw getNotFoundError(cmd);\n};\nmodule.exports = which;\nwhich.sync = whichSync;\n\n},{\"1c762486b04d50e4\":\"path\",\"e2e7d3eebf2f2d35\":\"1pcPz\"}],\"1pcPz\":[function(require,module,exports,__globalThis) {\nvar fs = require(\"17f23b75862c81ed\");\nvar core;\nif (process.platform === 'win32' || global.TESTING_WINDOWS) core = require(\"b33dbc941d5fe763\");\nelse core = require(\"5d6b0a3a2e570368\");\nmodule.exports = isexe;\nisexe.sync = sync;\nfunction isexe(path, options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n if (!cb) {\n if (typeof Promise !== 'function') throw new TypeError('callback not provided');\n return new Promise(function(resolve, reject) {\n isexe(path, options || {}, function(er, is) {\n if (er) reject(er);\n else resolve(is);\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}\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') return false;\n else throw er;\n }\n}\n\n},{\"17f23b75862c81ed\":\"fs\",\"b33dbc941d5fe763\":\"cwCNN\",\"5d6b0a3a2e570368\":\"hTVe9\"}],\"cwCNN\":[function(require,module,exports,__globalThis) {\nmodule.exports = isexe;\nisexe.sync = sync;\nvar fs = require(\"fa970ff537f37d97\");\nfunction checkPathExt(path, options) {\n var pathext = options.pathExt !== undefined ? options.pathExt : process.env.PATHEXT;\n if (!pathext) return true;\n pathext = pathext.split(';');\n if (pathext.indexOf('') !== -1) return true;\n for(var i = 0; i < pathext.length; i++){\n var p = pathext[i].toLowerCase();\n if (p && path.substr(-p.length).toLowerCase() === p) return true;\n }\n return false;\n}\nfunction checkStat(stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) return false;\n return checkPathExt(path, options);\n}\nfunction isexe(path, options, cb) {\n fs.stat(path, function(er, stat) {\n cb(er, er ? false : checkStat(stat, path, options));\n });\n}\nfunction sync(path, options) {\n return checkStat(fs.statSync(path), path, options);\n}\n\n},{\"fa970ff537f37d97\":\"fs\"}],\"hTVe9\":[function(require,module,exports,__globalThis) {\nmodule.exports = isexe;\nisexe.sync = sync;\nvar fs = require(\"ccfd6a39e8d0b5a7\");\nfunction isexe(path, options, cb) {\n fs.stat(path, function(er, stat) {\n cb(er, er ? false : checkStat(stat, options));\n });\n}\nfunction sync(path, options) {\n return checkStat(fs.statSync(path), options);\n}\nfunction checkStat(stat, options) {\n return stat.isFile() && checkMode(stat, options);\n}\nfunction checkMode(stat, options) {\n var mod = stat.mode;\n var uid = stat.uid;\n var gid = stat.gid;\n var myUid = options.uid !== undefined ? options.uid : process.getuid && process.getuid();\n var myGid = options.gid !== undefined ? options.gid : process.getgid && process.getgid();\n var u = parseInt('100', 8);\n var g = parseInt('010', 8);\n var o = parseInt('001', 8);\n var ug = u | g;\n var ret = mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0;\n return ret;\n}\n\n},{\"ccfd6a39e8d0b5a7\":\"fs\"}],\"7G1S5\":[function(require,module,exports,__globalThis) {\n'use strict';\nconst pathKey = (options = {})=>{\n const environment = options.env || process.env;\n const platform = options.platform || process.platform;\n if (platform !== 'win32') return 'PATH';\n return Object.keys(environment).reverse().find((key)=>key.toUpperCase() === 'PATH') || 'Path';\n};\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n\n},{}],\"kqk3O\":[function(require,module,exports,__globalThis) {\n'use strict';\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n return arg;\n}\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\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 // 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 // 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 // All other backslashes occur literally\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) arg = arg.replace(metaCharsRegExp, '^$1');\n return arg;\n}\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n\n},{}],\"9LoJM\":[function(require,module,exports,__globalThis) {\n'use strict';\nconst fs = require(\"2fc5e4232a07a9d2\");\nconst shebangCommand = require(\"c4e857260abf33c0\");\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n let fd;\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) {}\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\nmodule.exports = readShebang;\n\n},{\"2fc5e4232a07a9d2\":\"fs\",\"c4e857260abf33c0\":\"drkAo\"}],\"drkAo\":[function(require,module,exports,__globalThis) {\n'use strict';\nconst shebangRegex = require(\"9df9c2d321a8ee95\");\nmodule.exports = (string = '')=>{\n const match = string.match(shebangRegex);\n if (!match) return null;\n const [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n const binary = path.split('/').pop();\n if (binary === 'env') return argument;\n return argument ? `${binary} ${argument}` : binary;\n};\n\n},{\"9df9c2d321a8ee95\":\"gq3Q3\"}],\"gq3Q3\":[function(require,module,exports,__globalThis) {\n'use strict';\nmodule.exports = /^#!(.*)/;\n\n},{}],\"e03Rd\":[function(require,module,exports,__globalThis) {\n'use strict';\nconst isWin = process.platform === 'win32';\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}\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) return;\n const originalEmit = cp.emit;\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 if (err) return originalEmit.call(cp, 'error', err);\n }\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) return notFoundError(parsed.original, 'spawn');\n return null;\n}\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) return notFoundError(parsed.original, 'spawnSync');\n return null;\n}\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError\n};\n\n},{}],\"14eXt\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"extractCaches\", ()=>extractCaches);\nvar _fs = require(\"fs\");\nvar _path = require(\"path\");\nvar _pathDefault = parcelHelpers.interopDefault(_path);\nvar _optsJs = require(\"./opts.js\");\nvar _runJs = require(\"./run.js\");\nasync function extractCache(cacheSource, cacheOptions, scratchDir, containerImage, builder) {\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await (0, _fs.promises).mkdir(scratchDir, {\n recursive: true\n });\n await (0, _fs.promises).writeFile((0, _pathDefault.default).join(scratchDir, 'buildstamp'), date);\n // Prepare Dancefile to Access Caches\n const targetPath = (0, _optsJs.getTargetPath)(cacheOptions);\n const mountArgs = (0, _optsJs.getMountArgsString)(cacheOptions);\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 (0, _fs.promises).writeFile((0, _pathDefault.default).join(scratchDir, 'Dancefile.extract'), dancefileContent);\n console.log(dancefileContent);\n // Extract Data into Docker Image\n await (0, _runJs.run)('docker', [\n 'buildx',\n 'build',\n '--builder',\n builder,\n '-f',\n (0, _pathDefault.default).join(scratchDir, 'Dancefile.extract'),\n '--tag',\n 'dance:extract',\n '--load',\n scratchDir\n ]);\n // Create Extraction Image\n try {\n await (0, _runJs.run)('docker', [\n 'rm',\n '-f',\n 'cache-container'\n ]);\n } catch (error) {\n // Ignore error if container does not exist\n }\n await (0, _runJs.run)('docker', [\n 'create',\n '-ti',\n '--name',\n 'cache-container',\n 'dance:extract'\n ]);\n // Unpack Docker Image into Scratch\n await (0, _runJs.runPiped)([\n 'docker',\n [\n 'cp',\n '-L',\n 'cache-container:/var/dance-cache',\n '-'\n ]\n ], [\n 'tar',\n [\n '-H',\n 'posix',\n '-x',\n '-C',\n scratchDir\n ]\n ]);\n // Move Cache into Its Place\n await (0, _runJs.run)('sudo', [\n 'rm',\n '-rf',\n cacheSource\n ]);\n await (0, _fs.promises).rename((0, _pathDefault.default).join(scratchDir, 'dance-cache'), cacheSource);\n}\nasync function extractCaches(opts) {\n if (opts[\"skip-extraction\"]) {\n console.log(\"skip-extraction is set. Skipping extraction step...\");\n return;\n }\n const cacheMap = await (0, _optsJs.getCacheMap)(opts);\n const scratchDir = opts['scratch-dir'];\n const containerImage = opts['utility-image'];\n const builder = (0, _optsJs.getBuilder)(opts);\n // Extract Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap))await extractCache(cacheSource, cacheOptions, scratchDir, containerImage, builder);\n}\n\n},{\"fs\":\"fs\",\"path\":\"path\",\"./opts.js\":\"bjlzi\",\"./run.js\":\"kHqLa\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"8h9S8\"}]},[\"7sz5b\"], \"7sz5b\", \"parcelRequire86b4\", {\"fs\": __parcelExternal0,\"os\": __parcelExternal1,\"path\": __parcelExternal2,\"http\": __parcelExternal3,\"https\": __parcelExternal4,\"net\": __parcelExternal5,\"tls\": __parcelExternal6,\"events\": __parcelExternal7,\"assert\": __parcelExternal8,\"util\": __parcelExternal9,\"child_process\": __parcelExternal10,})\nlet {} = parcelRequire86b4(\"7sz5b\");\nexport {};\n\n//# sourceMappingURL=index.js.map\n","import { promises as fs } from \"fs\";\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\nmain(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 { promises as fs } from \"fs\";\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/lib/core.js';\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 = await 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 { promises as fs } from 'fs';\nimport { getInput, warning } from '@actions/core/lib/core.js';\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\nasync function getCacheMapFromDockerfile(dockerfilePath: string): Promise {\n const dockerfileContent = await fs.readFile(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 async function getCacheMap(opts: Opts): Promise {\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 = await 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","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n",null,null,null,null,null,null,null,null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst http = require(\"http\");\nconst https = require(\"https\");\nconst pm = require(\"./proxy\");\nlet tunnel;\nvar HttpCodes;\n(function (HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));\nvar Headers;\n(function (Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers = exports.Headers || (exports.Headers = {}));\nvar MediaTypes;\n(function (MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\nfunction getProxyUrl(serverUrl) {\n let proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode) {\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message) {\n this.message = message;\n }\n readBody() {\n return new Promise(async (resolve, reject) => {\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk) => {\n output = Buffer.concat([output, chunk]);\n });\n this.message.on('end', () => {\n resolve(output.toString());\n });\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n let parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions) {\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) {\n this._ignoreSslError = requestOptions.ignoreSslError;\n }\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) {\n this._allowRedirects = requestOptions.allowRedirects;\n }\n if (requestOptions.allowRedirectDowngrade != null) {\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n }\n if (requestOptions.maxRedirects != null) {\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n }\n if (requestOptions.keepAlive != null) {\n this._keepAlive = requestOptions.keepAlive;\n }\n if (requestOptions.allowRetries != null) {\n this._allowRetries = requestOptions.allowRetries;\n }\n if (requestOptions.maxRetries != null) {\n this._maxRetries = requestOptions.maxRetries;\n }\n }\n }\n options(requestUrl, additionalHeaders) {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n }\n get(requestUrl, additionalHeaders) {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n }\n del(requestUrl, additionalHeaders) {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n }\n post(requestUrl, data, additionalHeaders) {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n }\n patch(requestUrl, data, additionalHeaders) {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n }\n put(requestUrl, data, additionalHeaders) {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n }\n head(requestUrl, additionalHeaders) {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */\n async getJson(requestUrl, additionalHeaders = {}) {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n let res = await this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n async postJson(requestUrl, obj, additionalHeaders = {}) {\n let data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n let res = await this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n async putJson(requestUrl, obj, additionalHeaders = {}) {\n let data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n let res = await this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n async patchJson(requestUrl, obj, additionalHeaders = {}) {\n let data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n let res = await this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */\n async request(verb, requestUrl, data, headers) {\n if (this._disposed) {\n throw new Error('Client has already been disposed.');\n }\n let parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n let maxTries = this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1\n ? this._maxRetries + 1\n : 1;\n let numTries = 0;\n let response;\n while (numTries < maxTries) {\n response = await this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response &&\n response.message &&\n response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for (let i = 0; i < this.handlers.length; i++) {\n if (this.handlers[i].canHandleAuthentication(response)) {\n authenticationHandler = this.handlers[i];\n break;\n }\n }\n if (authenticationHandler) {\n return authenticationHandler.handleAuthentication(this, info, data);\n }\n else {\n // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n }\n let redirectsRemaining = this._maxRedirects;\n while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 &&\n this._allowRedirects &&\n redirectsRemaining > 0) {\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) {\n // if there's no location to redirect to, we won't\n break;\n }\n let parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol == 'https:' &&\n parsedUrl.protocol != parsedRedirectUrl.protocol &&\n !this._allowRedirectDowngrade) {\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n }\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n await response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for (let header in headers) {\n // header names are case insensitive\n if (header.toLowerCase() === 'authorization') {\n delete headers[header];\n }\n }\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = await this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) {\n // If not a retry code, return immediately instead of retrying\n return response;\n }\n numTries += 1;\n if (numTries < maxTries) {\n await response.readBody();\n await this._performExponentialBackoff(numTries);\n }\n }\n return response;\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */\n dispose() {\n if (this._agent) {\n this._agent.destroy();\n }\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */\n requestRaw(info, data) {\n return new Promise((resolve, reject) => {\n let callbackForResult = function (err, res) {\n if (err) {\n reject(err);\n }\n resolve(res);\n };\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */\n requestRawWithCallback(info, data, onResult) {\n let socket;\n if (typeof data === 'string') {\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n }\n let callbackCalled = false;\n let handleResult = (err, res) => {\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n };\n let req = info.httpModule.request(info.options, (msg) => {\n let res = new HttpClientResponse(msg);\n handleResult(null, res);\n });\n req.on('socket', sock => {\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\n if (socket) {\n socket.end();\n }\n handleResult(new Error('Request timeout: ' + info.options.path), null);\n });\n req.on('error', function (err) {\n // err has statusCode property\n // res should have headers\n handleResult(err, null);\n });\n if (data && typeof data === 'string') {\n req.write(data, 'utf8');\n }\n if (data && typeof data !== 'string') {\n data.on('close', function () {\n req.end();\n });\n data.pipe(req);\n }\n else {\n req.end();\n }\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\n getAgent(serverUrl) {\n let parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port\n ? parseInt(info.parsedUrl.port)\n : defaultPort;\n info.options.path =\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) {\n info.options.headers['user-agent'] = this.userAgent;\n }\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) {\n this.handlers.forEach(handler => {\n handler.prepareRequest(info.options);\n });\n }\n return info;\n }\n _mergeHeaders(headers) {\n const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n if (this.requestOptions && this.requestOptions.headers) {\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers));\n }\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) {\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n }\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n let proxyUrl = pm.getProxyUrl(parsedUrl);\n let useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) {\n agent = this._proxyAgent;\n }\n if (this._keepAlive && !useProxy) {\n agent = this._agent;\n }\n // if agent is already assigned use that agent.\n if (!!agent) {\n return agent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (!!this.requestOptions) {\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n }\n if (useProxy) {\n // If using proxy, need tunnel\n if (!tunnel) {\n tunnel = require('tunnel');\n }\n const agentOptions = {\n maxSockets: maxSockets,\n keepAlive: this._keepAlive,\n proxy: {\n ...((proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n }),\n host: proxyUrl.hostname,\n port: proxyUrl.port\n }\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) {\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n }\n else {\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n }\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if reusing agent across request and tunneling agent isn't assigned create a new agent\n if (this._keepAlive && !agent) {\n const options = { keepAlive: this._keepAlive, maxSockets: maxSockets };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n // if not using private agent and tunnel agent isn't setup then use global agent\n if (!agent) {\n agent = usingSsl ? https.globalAgent : http.globalAgent;\n }\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n }\n return agent;\n }\n _performExponentialBackoff(retryNumber) {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise(resolve => setTimeout(() => resolve(), ms));\n }\n static dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n let a = new Date(value);\n if (!isNaN(a.valueOf())) {\n return a;\n }\n }\n return value;\n }\n async _processResponse(res, options) {\n return new Promise(async (resolve, reject) => {\n const statusCode = res.message.statusCode;\n const response = {\n statusCode: statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode == HttpCodes.NotFound) {\n resolve(response);\n }\n let obj;\n let contents;\n // get the result from the body\n try {\n contents = await res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) {\n obj = JSON.parse(contents, HttpClient.dateTimeDeserializer);\n }\n else {\n obj = JSON.parse(contents);\n }\n response.result = obj;\n }\n response.headers = res.message.headers;\n }\n catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) {\n msg = obj.message;\n }\n else if (contents && contents.length > 0) {\n // it may be the case that the exception is in the body message as string\n msg = contents;\n }\n else {\n msg = 'Failed request: (' + statusCode + ')';\n }\n let err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n }\n else {\n resolve(response);\n }\n });\n }\n}\nexports.HttpClient = HttpClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getProxyUrl(reqUrl) {\n let usingSsl = reqUrl.protocol === 'https:';\n let proxyUrl;\n if (checkBypass(reqUrl)) {\n return proxyUrl;\n }\n let proxyVar;\n if (usingSsl) {\n proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n }\n else {\n proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY'];\n }\n if (proxyVar) {\n proxyUrl = new URL(proxyVar);\n }\n return proxyUrl;\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) {\n return false;\n }\n let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) {\n return false;\n }\n // Determine the request port\n let reqPort;\n if (reqUrl.port) {\n reqPort = Number(reqUrl.port);\n }\n else if (reqUrl.protocol === 'http:') {\n reqPort = 80;\n }\n else if (reqUrl.protocol === 'https:') {\n reqPort = 443;\n }\n // Format the request hostname and hostname with port\n let upperReqHosts = [reqUrl.hostname.toUpperCase()];\n if (typeof reqPort === 'number') {\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n }\n // Compare request host against noproxy\n for (let upperNoProxyItem of noProxy\n .split(',')\n .map(x => x.trim().toUpperCase())\n .filter(x => x)) {\n if (upperReqHosts.some(x => x === upperNoProxyItem)) {\n return true;\n }\n }\n return false;\n}\nexports.checkBypass = checkBypass;\n","module.exports = require('./lib/tunnel');\n","'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass BasicCredentialHandler {\n constructor(username, password) {\n this.username = username;\n this.password = password;\n }\n prepareRequest(options) {\n options.headers['Authorization'] =\n 'Basic ' +\n Buffer.from(this.username + ':' + this.password).toString('base64');\n }\n // This handler cannot handle 401\n canHandleAuthentication(response) {\n return false;\n }\n handleAuthentication(httpClient, requestInfo, objs) {\n return null;\n }\n}\nexports.BasicCredentialHandler = BasicCredentialHandler;\nclass BearerCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n options.headers['Authorization'] = 'Bearer ' + this.token;\n }\n // This handler cannot handle 401\n canHandleAuthentication(response) {\n return false;\n }\n handleAuthentication(httpClient, requestInfo, objs) {\n return null;\n }\n}\nexports.BearerCredentialHandler = BearerCredentialHandler;\nclass PersonalAccessTokenCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n options.headers['Authorization'] =\n 'Basic ' + Buffer.from('PAT:' + this.token).toString('base64');\n }\n // This handler cannot handle 401\n canHandleAuthentication(response) {\n return false;\n }\n handleAuthentication(httpClient, requestInfo, objs) {\n return null;\n }\n}\nexports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;\n",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","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","'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 { promises as fs } from 'fs';\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 = await 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":["__parcelExternal0","__parcelExternal1","__parcelExternal2","__parcelExternal3","__parcelExternal4","__parcelExternal5","__parcelExternal6","__parcelExternal7","__parcelExternal8","__parcelExternal9","__parcelExternal10","modules","entry","mainEntry","parcelRequireName","externals","distDir","publicUrl","devServer","globalObject","globalThis","self","window","global","previousRequire","importMap","i","cache","nodeRequire","module","require","bind","newRequire","name","jumped","currentRequire","err","Error","code","localRequire","resolve","x","id","Module","call","exports","res","isParcelRequire","moduleName","bundle","parent","register","Object","defineProperty","get","length","mainExports","define","amd","__globalThis","parcelHelpers","_fs","_os","_osDefault","interopDefault","_injectCacheJs","_extractCacheJs","_optsJs","main","args","opts","parseOpts","help","extract","extractCaches","process","undefined","env","GITHUB_STATE","promises","appendFile","default","EOL","injectCaches","argv","catch","console","error","stack","exit","defineInteropFlag","export","_path","_pathDefault","_runJs","_coreJs","injectCache","cacheSource","cacheOptions","scratchDir","containerImage","builder","rm","recursive","force","mkdir","date","Date","toISOString","writeFile","join","targetPath","getTargetPath","mountArgs","getMountArgsString","ownershipCommand","uid","getUID","gid","getGID","dancefileContent","log","run","notice","cacheMap","getCacheMap","getBuilder","entries","_mri","_mriDefault","_dockerfileAst","getInput","string","boolean","alias","warning","JSON","stringify","getCacheMapFromDockerfile","dockerfilePath","dockerfileContent","readFile","dockerfile","DockerfileParser","parse","getInstructions","filter","getKeyword","flag","getFlags","getName","getOption","getValue","toString","target","keys","cacheMapFromDockerfile","e","otherOptions","map","key","value","toArr","any","Array","isArray","k","arr","arg","val","out","_","j","idx","len","alibi","strict","unknown","defaults","concat","splice","push","slice","charCodeAt","substring","indexOf","repeat","toVal","old","nxt","String","shift","a","__esModule","exportAll","source","dest","forEach","prototype","hasOwnProperty","enumerable","destName","ExitCode","__createBinding","create","o","m","k2","__setModuleDefault","v","__importStar","mod","result","__awaiter","thisArg","_arguments","P","generator","Promise","reject","fulfilled","step","next","rejected","done","adopt","then","apply","getIDToken","getState","saveState","group","endGroup","startGroup","info","debug","isDebug","setFailed","setCommandEcho","setOutput","getBooleanInput","getMultilineInput","addPath","setSecret","exportVariable","command_1","file_command_1","utils_1","os","path","oidc_utils_1","options","replace","toUpperCase","required","trimWhitespace","trim","message","properties","issueCommand","toCommandProperties","issue","convertedVal","toCommandValue","delimiter","commandValue","secret","inputPath","split","trueValue","includes","falseValue","TypeError","stdout","write","enabled","exitCode","Failure","fn","aud","OidcClient","summary_1","summary","summary_2","markdownSummary","command","cmd","Command","constructor","s","cmdStr","CMD_STRING","first","input","annotationProperties","title","file","line","startLine","endLine","col","startColumn","endColumn","fs","filePath","existsSync","appendFileSync","encoding","http_client_1","auth_1","core_1","createHttpClient","allowRetry","maxRetry","HttpClient","BearerCredentialHandler","getRequestToken","allowRetries","maxRetries","token","getIDTokenUrl","runtimeUrl","getCall","id_token_url","_a","httpclient","id_token","getJson","statusCode","audience","encodedAudience","encodeURIComponent","HttpCodes","Headers","MediaTypes","tunnel","http","https","pm","getProxyUrl","serverUrl","proxyUrl","URL","href","HttpRedirectCodes","MovedPermanently","ResourceMoved","SeeOther","TemporaryRedirect","PermanentRedirect","HttpResponseRetryCodes","BadGateway","ServiceUnavailable","GatewayTimeout","RetryableHttpVerbs","HttpClientError","setPrototypeOf","HttpClientResponse","readBody","output","Buffer","alloc","on","chunk","isHttps","requestUrl","parsedUrl","protocol","userAgent","handlers","requestOptions","_ignoreSslError","_allowRedirects","_allowRedirectDowngrade","_maxRedirects","_allowRetries","_maxRetries","_keepAlive","_disposed","ignoreSslError","_socketTimeout","socketTimeout","allowRedirects","allowRedirectDowngrade","maxRedirects","Math","max","keepAlive","additionalHeaders","request","del","post","data","patch","put","head","sendStream","verb","stream","Accept","_getExistingOrDefaultHeader","ApplicationJson","_processResponse","postJson","obj","ContentType","putJson","patchJson","headers","response","_prepareRequest","maxTries","numTries","requestRaw","Unauthorized","authenticationHandler","canHandleAuthentication","handleAuthentication","redirectsRemaining","redirectUrl","parsedRedirectUrl","hostname","header","toLowerCase","_performExponentialBackoff","dispose","_agent","destroy","requestRawWithCallback","onResult","socket","byteLength","callbackCalled","handleResult","req","httpModule","msg","sock","setTimeout","end","pipe","getAgent","_getAgent","method","usingSsl","host","port","parseInt","pathname","search","_mergeHeaders","agent","handler","prepareRequest","lowercaseKeys","reduce","c","assign","_default","clientHeader","useProxy","_proxyAgent","maxSockets","globalAgent","tunnelAgent","agentOptions","proxy","username","password","proxyAuth","overHttps","httpsOverHttps","httpsOverHttp","httpOverHttps","httpOverHttp","Agent","rejectUnauthorized","retryNumber","ms","ExponentialBackoffTimeSlice","pow","min","dateTimeDeserializer","isNaN","valueOf","contents","NotFound","deserializeDates","checkBypass","reqUrl","reqPort","noProxy","Number","upperReqHosts","upperNoProxyItem","some","proxyVar","tls","events","util","TunnelingAgent","proxyOptions","defaultMaxSockets","requests","sockets","localAddress","toOptions","pending","onSocket","removeSocket","createSecureSocket","cb","createSocket","hostHeader","getHeader","tlsOptions","mergeOptions","servername","secureSocket","connect","arguments","overrides","keyLen","defaultPort","inherits","EventEmitter","addRequest","onFree","emit","onCloseOrRemove","removeListener","placeholder","connectOptions","connectReq","onConnect","removeAllListeners","useChunkedEncodingByDefault","once","upgrade","nextTick","cause","pos","NODE_DEBUG","test","unshift","BasicCredentialHandler","from","httpClient","requestInfo","objs","PersonalAccessTokenCredentialHandler","SUMMARY_DOCS_URL","SUMMARY_ENV_VAR","os_1","fs_1","access","_summary","_buffer","_filePath","pathFromEnv","constants","R_OK","W_OK","wrap","tag","content","attrs","htmlAttrs","overwrite","writeFunc","emptyBuffer","clear","isEmptyBuffer","addRaw","text","addEOL","addCodeBlock","lang","element","addList","items","ordered","listItems","item","addTable","rows","tableBody","row","cells","cell","colspan","rowspan","addDetails","label","addImage","src","alt","width","height","addHeading","level","allowedTag","addSeparator","addBreak","addQuote","cite","addLink","DefaultVariables","Directive","Keyword","Workdir","Volume","User","Stopsignal","Shell","Run","PropertyInstruction","Onbuild","ModifiableInstruction","Label","JSONInstruction","Heredoc","Healthcheck","From","Env","Entrypoint","Copy","Cmd","Arg","Add","Variable","Property","ParserDirective","Line","Instruction","Flag","Comment","JSONArgument","Argument","argument_1","jsonArgument_1","comment_1","parser_1","flag_1","instruction_1","line_1","parserDirective_1","property_1","variable_1","add_1","arg_1","cmd_1","copy_1","entrypoint_1","env_1","from_1","healthcheck_1","heredoc_1","jsonInstruction_1","label_1","modifiableInstruction_1","onbuild_1","propertyInstruction_1","run_1","shell_1","stopsignal_1","user_1","volume_1","workdir_1","parser","Parser","range","getRange","isAfter","position","start","character","isBefore","jsonRange","getJSONRange","getJSONValue","vscode_languageserver_types_1","util_1","document","getContent","getContentRange","getText","offsetAt","startOffset","raw","Util","isWhitespace","charAt","Range","positionAt","factory","exports1","TextDocument","WorkspaceFolder","InlineCompletionContext","SelectedCompletionInfo","InlineCompletionTriggerKind","InlineCompletionList","InlineCompletionItem","StringValue","InlayHint","InlayHintLabelPart","InlayHintKind","InlineValueContext","InlineValueEvaluatableExpression","InlineValueVariableLookup","InlineValueText","SemanticTokens","SemanticTokenModifiers","SemanticTokenTypes","SelectionRange","DocumentLink","FormattingOptions","CodeLens","CodeAction","CodeActionContext","CodeActionTriggerKind","CodeActionKind","DocumentSymbol","WorkspaceSymbol","SymbolInformation","SymbolTag","SymbolKind","DocumentHighlight","DocumentHighlightKind","SignatureInformation","ParameterInformation","Hover","MarkedString","CompletionList","CompletionItem","CompletionItemLabelDetails","InsertTextMode","InsertReplaceEdit","CompletionItemTag","InsertTextFormat","CompletionItemKind","MarkupContent","MarkupKind","TextDocumentItem","OptionalVersionedTextDocumentIdentifier","VersionedTextDocumentIdentifier","TextDocumentIdentifier","WorkspaceChange","WorkspaceEdit","DeleteFile","RenameFile","CreateFile","TextDocumentEdit","AnnotatedTextEdit","ChangeAnnotationIdentifier","ChangeAnnotation","TextEdit","Diagnostic","CodeDescription","DiagnosticTag","DiagnosticSeverity","DiagnosticRelatedInformation","FoldingRange","FoldingRangeKind","ColorPresentation","ColorInformation","Color","LocationLink","Location","Position","uinteger","integer","URI","DocumentUri","is","MIN_VALUE","MAX_VALUE","Is","objectLiteral","candidate","one","two","three","four","uri","targetUri","targetRange","targetSelectionRange","originSelectionRange","red","green","blue","alpha","numberRange","color","textEdit","additionalTextEdits","typedArray","Imports","Region","startCharacter","endCharacter","kind","collapsedText","defined","location","Warning","Information","Hint","Unnecessary","Deprecated","severity","relatedInformation","number","codeDescription","_i","newText","insert","needsConfirmation","description","annotation","annotationId","textDocument","edits","ignoreIfExists","oldUri","newUri","ignoreIfNotExists","changes","documentChanges","every","change","TextEditChangeImpl","changeAnnotations","edit","assertChangeAnnotations","manage","delete","add","all","ChangeAnnotations","annotations","_annotations","_counter","_size","configurable","idOrAnnotation","nextId","workspaceEdit","_this","_textEditChanges","_workspaceEdit","_changeAnnotations","textEditChange","initDocumentChanges","size","getTextEditChange","version","textDocumentEdit","initChanges","createFile","optionsOrAnnotation","operation","renameFile","deleteFile","languageId","PlainText","Markdown","Text","Method","Function","Constructor","Field","Class","Interface","Unit","Value","Enum","Snippet","File","Reference","Folder","EnumMember","Constant","Struct","Event","Operator","TypeParameter","asIs","adjustIndentation","detail","isIncomplete","fromPlainText","plainText","language","documentation","parameters","Read","Write","Namespace","Package","Boolean","Key","Null","containerName","selectionRange","children","deprecated","tags","Empty","QuickFix","Refactor","RefactorExtract","RefactorInline","RefactorRewrite","Source","SourceOrganizeImports","SourceFixAll","Invoked","Automatic","diagnostics","only","triggerKind","kindOrCommandOrEdit","checkKind","isPreferred","tabSize","insertSpaces","resultId","variableName","caseSensitiveLookup","expression","frameId","stoppedLocation","Type","Parameter","tooltip","textEdits","paddingLeft","paddingRight","createSnippet","insertText","filterText","selectedCompletionInfo","FullTextDocument","lineCount","func","applyEdits","sortedEdits","mergeSort","compare","p","left","right","leftIdx","rightIdx","ret","b","diff","lastModifiedOffset","endOffset","_uri","_languageId","_version","_content","_lineOffsets","update","event","getLineOffsets","lineOffsets","isLineStart","ch","offset","low","high","mid","floor","lineOffset","nextLineOffset","check","getTextContent","isUTF8BOM","char","uintArray","Uint8Array","isNewline","findLeadingNonWhitespace","escapeChar","whitespaceCheck","escapeCheck","isInsideRange","parseHeredocName","vscode_languageserver_textdocument_1","dockerfile_1","main_1","createInstruction","lineRange","instruction","instructionRange","getParserDirectives","buffer","directives","directiveCheck","directiveStart","directiveEnd","valueStart","valueEnd","lineEnd","directiveValue","nameRange","valueRange","Dockerfile","setDirectives","getEscapeCharacter","processComment","processInstruction","organizeComments","instructionEnd","escapedInstruction","instructionCheck","processArguments","addInstruction","processHeredocs","keyword","ONBUILD","getTriggerInstruction","ADD","COPY","RUN","heredocs","getArguments","startsWith","heredoc","parseHeredoc","escaped","argumentsCheck","commentLoop","addComment","heredocName","startWord","lineStart","startPosition","__spreadArray","to","pack","ar","l","changes_1","isIncremental","getWellformedRange","addedLineOffsets","computeLineOffsets","isFull","ensureBeforeEOL","isEOL","rangeLength","isAtLineStart","textOffset","getWellformedEdit","spans","sortedEdits_1","substr","getNameRange","getValueRange","getDirective","directive","getRawArguments","getRangeContent","getInstructionRange","getInstruction","getArgumentsRange","getArgumentsRanges","ranges","extra","fullArgs","comment","getRawArgumentsContent","getArgumentsContent","documentText","found","escapedWhitespaceDetected","escaping","escapeMarker","escapedArg","getExpandedArguments","argRange","variables","parseVariables","swaps","requiresExpansion","variable","resolveVariable","expanded","variableRange","argEnd","getVariables","rawValue","parsedVariable","variableLoop","escapedString","escapedName","nameEnd","escapedSubstitutionParameter","substitutionStart","substitutionEnd","modifierRead","nameLoop","modifier","modifierRange","substitutionParameter","substitutionRange","isBuildVariable","varStart","match","FROM","initialArg","getInitialARGs","property","getProperty","image","getContainingImage","envs","getENVs","getProperties","getARGs","createSingleLineHeredocs","startRange","endFound","searchHyphen","quote","contentLoop","nameStart","getHeredocs","heredocDefinitions","heredocsProcessed","contentStart","contentEnd","currentHeredoc","delimiterRange","getDelimiterRange","contentRange","offsetLimit","startArg","candidateRange","index","endRange","getStartRange","buildVariable","stringValue","getModifier","getModifierRange","getSubstitutionParameter","getSubstitutionRange","isDefined","isEnvironmentVariable","stopSearchingForFlags","argument","openingBracket","closingBracket","jsonStrings","argsContent","argsOffset","last","quoted","argsCheck","_value","getOpeningBracket","getJSONStrings","getClosingBracket","flags","nameIndex","firstMatch","secondMatch","startIndex","nameSearchLoop","flagOption_1","hasOptions","createFlagOption","documentOffset","optionRange","FlagOption","option","getOptions","getPropertyArguments","arg2","assignmentOperatorRange","assignmentOperator","getAssignmentOperator","getAssignmentOperatorRange","getUnescapedValue","rawLoop","initial","before","skip","literal","inSingle","inDouble","commentCheck","escapedValue","parseValue","char2","newlineCheck","findTrailingNonWhitespace","instructionNameEndOffset","endingEscape","mark","argStart","spaced","argumentLoop","createSpacedArgument","singleQuotes","doubleQuotes","getFromFlag","getImage","getImageRange","getImageName","getImageNameRange","registryRange","getRegistryRange","tagRange","getImageTagRange","digestRange","getImageDigestRange","getImageTag","rangeStartOffset","atIndex","slashIndex","colonIndex","lastIndexOf","subcontent","subcolonIndex","getImageDigest","searchString","subIndex","getRegistry","rangeStart","startingSlashIndex","portIndex","dotIndex","registry","getBuildStage","getBuildStageRange","getPlatformFlag","getSubcommand","getTrigger","trigger","getTriggerWord","getTriggerRange","triggerRange","getPath","getAbsolutePath","hierarchy","getStageHierarchy","workdirs","getWORKDIRs","endsWith","ast","imageTemplate_1","ImageTemplate","initialInstructions","buildStages","foundFrom","escape","getComments","buildStage","currentBuildStage","getDirectives","getFROMs","initialARGs","resolvedVariable","getAvailableVariables","currentLine","getInstructionAt","getParentStage","templateFrom","getFROM","imageName","stages","stage","getAvailableWorkingDirectories","availableDirectories","Set","workdir","directory","comments","instructions","commentStart","commentEnd","instructionStart","getCMDs","cmds","getCOPYs","copies","getENTRYPOINTs","froms","getHEALTHCHECKs","getOnbuildTriggers","triggers","contains","runPiped","_spawnPlease","_spawnPleaseDefault","_childProcess","_childProcessDefault","command1","args1","command2","args2","cp1","spawn","stdio","cp2","stdin","assertSuccess","cp","spawnOptions","rejectOnError","stderr","child","addListener","enoent","parsed","spawned","hookChildProcess","sync","spawnSync","verifyENOENTSync","status","_parse","_enoent","resolveCommand","readShebang","isWin","platform","isExecutableRegExp","isCmdShimRegExp","original","shell","parseNonShell","commandFile","detectShebang","shebang","needsShell","forceShell","needsDoubleEscapeMetaChars","normalize","shellCommand","comspec","windowsVerbatimArguments","which","getPathKey","resolveCommandAttempt","withoutPathExt","resolved","cwd","hasCustomCwd","shouldSwitchCwd","chdir","disabled","pathExt","isWindows","OSTYPE","COLON","isexe","getNotFoundError","getPathInfo","opt","colon","pathEnv","PATH","pathExtExe","PATHEXT","ppRaw","pathPart","pCmd","subStep","ii","ext","er","cur","ex","nothrow","core","ignoreErrors","TESTING_WINDOWS","checkStat","statSync","stat","isSymbolicLink","isFile","pathext","myUid","myGid","u","g","mode","getuid","getgid","pathKey","environment","reverse","find","metaCharsRegExp","doubleEscapeMetaChars","shebangCommand","fd","openSync","readSync","closeSync","shebangRegex","binary","pop","notFoundError","syscall","errno","spawnargs","verifyENOENT","originalEmit","arg1","extractCache","rename","parcelRequire86b4"],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file diff --git a/package.json b/package.json index 643012a..463e5d3 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,13 @@ "main": "dist/index.js", "source": "src/index.ts", "type": "module", + "bin": { + "buildkit-cache-dance": "dist/index.js" + }, "scripts": { - "build": "parcel build", + "build": "parcel build --target dist --detailed-report", "prepare": "npm run build", - "test": "vitest" + "test": "node --enable-source-maps ./node_modules/vitest/vitest.mjs " }, "keywords": [ "buildkit", @@ -24,22 +27,28 @@ "node": ">=20" }, "devDependencies": { - "@types/node": "^20.11.30", - "parcel": "^2.12.0", - "typescript": "^5.4.3", - "vitest": "^1.4.0" + "@types/node": "^22.15.18", + "parcel": "^2.15.1", + "typescript": "^5.8.3", + "vitest": "^3.1.3" }, "dependencies": { - "@actions/core": "~1.5.0", + "@actions/core": "=1.8.0", "dockerfile-ast": "^0.7.0", - "fs": "0.0.1-security", "mri": "^1.2.0", "spawn-please": "^3.0.0" }, + "packageManager": "pnpm@10.11.0", "targets": { - "main": { + "dist": { + "context": "node", + "outputFormat": "esmodule", + "source": "src/index.ts", + "distDir": "dist", + "isLibrary": false, "includeNodeModules": true, - "optimize": false + "optimize": true, + "scopeHoist": false } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 03cca30..c411467 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,14 +9,11 @@ importers: .: dependencies: '@actions/core': - specifier: ~1.5.0 - version: 1.5.0 + specifier: '=1.8.0' + version: 1.8.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 @@ -25,173 +22,176 @@ importers: version: 3.0.0 devDependencies: '@types/node': - specifier: ^20.11.30 - version: 20.17.30 + specifier: ^22.15.18 + version: 22.15.18 parcel: - specifier: ^2.12.0 - version: 2.14.4(@swc/helpers@0.5.17)(postcss@8.5.3)(typescript@5.8.3) + specifier: ^2.15.1 + version: 2.15.1(@swc/helpers@0.5.17) typescript: - specifier: ^5.4.3 + specifier: ^5.8.3 version: 5.8.3 vitest: - specifier: ^1.4.0 - version: 1.6.1(@types/node@20.17.30)(lightningcss@1.29.3) + specifier: ^3.1.3 + version: 3.1.3(@types/node@22.15.18)(lightningcss@1.30.1) packages: - '@actions/core@1.5.0': - resolution: {integrity: sha512-eDOLH1Nq9zh+PJlYLqEMkS/jLQxhksPNmUGNBHfa4G+tQmnIhzpctxmchETtVGyBOvXgOVVpYuE40+eS4cUnwQ==} + '@actions/core@1.8.0': + resolution: {integrity: sha512-XirM+Zo/PFlA+1h+i4bkfvagujta+LIM2AOSzPbt8JqXbbuxb1HTB+FqIyaKmue9yiCx/JIJY6pXsOl3+T8JGw==} - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} + '@actions/http-client@1.0.11': + resolution: {integrity: sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} cpu: [x64] os: [win32] - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} @@ -265,169 +265,217 @@ packages: cpu: [x64] os: [win32] - '@parcel/bundler-default@2.14.4': - resolution: {integrity: sha512-JVqi5Sb7wv2KCTJFAAjHbnl6KC61jKNVYw/GtZm5s/Wxqvxx2tcp93rmRoBFo9X3gSgkg8jp4HkNAUHTxnsPnQ==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/bundler-default@2.15.1': + resolution: {integrity: sha512-AAOomjOWAhvwunN7hwxmYoAyePlDyOrd0HVUQBJyRhHb6udAPCoq0TDWZ98xybvfKjjbPidk/lVAVZf5A8TyQw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/cache@2.14.4': - resolution: {integrity: sha512-CTTMySgNSgcSwbNWL4gODU1h9hMjBRyiC8/gcKDFqzw0wC/T+ZwX7wc5zNc/S9aJRTmmgvndcYKoVlds7YV2sg==} + '@parcel/cache@2.15.1': + resolution: {integrity: sha512-kj/yn21Fn4HBrQATLV6k18T3PJTzTiDMVVh0C/gd/21e0ApTlDgvpIw2tiGajZYTluiDEmAm05IqULGhupo9iw==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.14.4 + '@parcel/core': ^2.15.1 - '@parcel/codeframe@2.14.4': - resolution: {integrity: sha512-fRKkmFGnQIa/X+Kr8csTWjOwRRh2JfJfTpNS8JhbjBSWvOoKsDG9T2U5Ky8akIG7c9WDGwB3ngONauI1vtaInA==} + '@parcel/codeframe@2.15.1': + resolution: {integrity: sha512-Ma4mGvecXh9bbpOKUFDLMjbTeEkPge233e4kEYEp0cU4MVnnUkohhEDUV8tE04wJ+sbyRF9MB4LvfYJEVdqc9A==} engines: {node: '>= 16.0.0'} - '@parcel/compressor-raw@2.14.4': - resolution: {integrity: sha512-wYRdokznP1iI3n6M6leQ0nI65tCIWhZaD0vW3G3qodDFi+qsdpvZymCpNUkh6AYkFFr3Lur+r/+xkWDoqNoMWA==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/compressor-raw@2.15.1': + resolution: {integrity: sha512-OmQEVFlAX7480xQc6KgFf1R3kkv8o3vTHmHCGk6NIXvtmkxC5zzeYl9lEPPGl4hG3GRGw9CP7Kv0k+emUp1q2A==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/config-default@2.14.4': - resolution: {integrity: sha512-bHtr8yT2IZDv5w44/VKoNz07goidO99c6hsp9s0hjSVC1G6krdE+nriryPVfUFbw044LeQThSvA8EwTas72QZg==} + '@parcel/config-default@2.15.1': + resolution: {integrity: sha512-Ckm0LkNbzGmRNM9SU17rIowAEhSSL4MVXGO+pNCa6Eg2azwDKc7OUq8h9prCJ8rLaSAF0gvLQqhQdM9KBmwozw==} peerDependencies: - '@parcel/core': ^2.14.4 + '@parcel/core': ^2.15.1 - '@parcel/core@2.14.4': - resolution: {integrity: sha512-dtUMmPDXd7CRAWwMlOc6jh6yLRL4wMi/vNMNdX9J/fafCLFgFBmPqWBhQ9tlX015Q8DEcIRWYPumHIn5dzqEbg==} + '@parcel/core@2.15.1': + resolution: {integrity: sha512-GGx7ht8Qh2InXoBsfIzS6THKGtMREgUDKI2vlzJDnm7OxZdVHn7KdYzG4w6/UKA70lFVr3SMOCdyk2EfRE48CQ==} engines: {node: '>= 16.0.0'} - '@parcel/diagnostic@2.14.4': - resolution: {integrity: sha512-+pElcMMlTnpEIm9MrrSEOh38ylKYYdTYMgv2iZQU7799yzD9sSac9dkGSbbKGDYWhALCuzWQOgdaGG9ExJZw6w==} + '@parcel/diagnostic@2.15.1': + resolution: {integrity: sha512-UJFMUUHuB0YMf9V3dIlsyf1iq4pK/28ryIrI5hK3OiRwrtV2J986ksMeHzUHK/XVtn/8OhFh5tjkQUzKdb8fCw==} engines: {node: '>= 16.0.0'} - '@parcel/error-overlay@2.14.4': - resolution: {integrity: sha512-GZ6Z1XO/VYqIFNwa3iAYWX7Pskwd+xw9tPw9kjF7tG8wdL9VipkcILJ4APj/G5CKw8XrXH/6NsC7HndNbR7EqA==} + '@parcel/error-overlay@2.15.1': + resolution: {integrity: sha512-ljuYuotFr+24r3m3x/xFUvKFudHtV1cPbhTGuzp3AnRFOk66nLXsAIso9Vmj57GdwYtzW2/b9J0OjC4lZB19sg==} engines: {node: '>= 16.0.0'} - '@parcel/events@2.14.4': - resolution: {integrity: sha512-QzZr291JuENw7BsehKc3z29ukLMApPdjRFcOYXFuMWaHkpC7lzFK/KAY4Mi9HCa3aQe90zCcuxZg+bBsNF9XxQ==} + '@parcel/events@2.15.1': + resolution: {integrity: sha512-esCmICgD/OWUjqhgJv9bYDsIjpKP+Hcg0jIuJqY/M0PLnUn1+hg/v6BZ6IFQ56gh2F1ShORKVPcayF2Etn7dEQ==} engines: {node: '>= 16.0.0'} - '@parcel/feature-flags@2.14.4': - resolution: {integrity: sha512-T2HE+lOmlU6PZOUnuXn6UZPXV4higCPgF2c2YXhrzTlSFcLMiAXATyzrylbYY/i/WjiYAlqvmEcaBX5fSaW95g==} + '@parcel/feature-flags@2.15.1': + resolution: {integrity: sha512-NdG5O8XJBFzeJXbjmt1JJjdQiCgNNfhoWlt5ZSyyrS5/5BgNQo0022XNidN1kEdSrcItvE4OPEd0NV5y/t7zNA==} engines: {node: '>= 16.0.0'} - '@parcel/fs@2.14.4': - resolution: {integrity: sha512-SQbuW6v1URv871FVj23HoC8+UUwpgkQ7iWmG7EITpp6AV42ojRr/jZ93hLjzkQQfYlRI64jUExn6AQAZDN3bqQ==} + '@parcel/fs@2.15.1': + resolution: {integrity: sha512-ycm/MPTUM/RonuIqTHGrSxeIz6ZOPpyWzVXuc37dq9eR/kSIHLCAWxhtr7nVrZyrStX/ARUC6aQUqRBg6DDJMg==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.14.4 + '@parcel/core': ^2.15.1 - '@parcel/graph@3.4.4': - resolution: {integrity: sha512-AIbJ8d8aCPcKAkqc45LENjAMIrp8nRGlmky5LyY5244qqnR1B+tsvU47XoGymM3OaXLdVjv8knJ4K0ci9/l/4w==} + '@parcel/graph@3.5.1': + resolution: {integrity: sha512-28mwhl5smB/G6bIIAtV/GHD98qAAKhm3gWkuwFua+gIhOscsiao0jIVHvYwfcQewbesJrvXa8Xr4Jwqkl+4dGw==} engines: {node: '>= 16.0.0'} - '@parcel/logger@2.14.4': - resolution: {integrity: sha512-uqSGeCqraWpbe8gqbb1k9ePrlzdKoOwkdQPcRIv8TTTWZfCt6Qcl08w8didO4iAOz4H5C4Ng82wbVO/ieaMoKg==} + '@parcel/logger@2.15.1': + resolution: {integrity: sha512-oAmZDBiX8DmRWkxvNuEOGTcT0IQzlHvJCg+VtEHkprclAeHAzymT+uKfkvnjCfw3WRUdrrOqXPli3mfBqcHoQQ==} engines: {node: '>= 16.0.0'} - '@parcel/markdown-ansi@2.14.4': - resolution: {integrity: sha512-B4787HHXHi0wcuYbV4qBibws/yaX4RXoNel5xWdwzn1ZFmeLAXluNjMO2Q6FmII/Lej9OIQEaTppl7/DxJGifg==} + '@parcel/markdown-ansi@2.15.1': + resolution: {integrity: sha512-Ja+N6B1/JABUiOMuCDFw/qZAiErJgNOyUR0dF7o32xbWsw+PQlRLSbhpaq/97YZCN6bit2BPQD6sfuIqFQHmfQ==} engines: {node: '>= 16.0.0'} - '@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/namer-default@2.15.1': + resolution: {integrity: sha512-yrx8TvyEhrqW+ioO7wZyN4BO0EBQdl5cOIzm/STYIlyQamikDAq8CCZ0ZCRdMNh4bm3K/l5gPY+On2t1SBZ1Ag==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/node-resolver-core@3.5.4': - resolution: {integrity: sha512-KmmsVD8Ym+19DIbe0Y2SUbdcB+iUfgstR4dBpaogV36DlxV4d0uiia4GCpOO3kG9zlRYMVsfZEwy/NNZHELx3w==} + '@parcel/node-resolver-core@3.6.1': + resolution: {integrity: sha512-CwP01sMXn75GUmBSL+GdVlvhMWcjSr7vvARobG0vM8VYPduZet0AdqYYoZ0alkk43boDV/HmZJnoucKQIk75Tw==} engines: {node: '>= 16.0.0'} - '@parcel/optimizer-css@2.14.4': - resolution: {integrity: sha512-5rwwnsP8pnTqis5fs2YyNUvke6YprWlU8Y9pD55hK1Y1MbYmvCqaIyQv9lcpHJQiqrwsZ2pl5B3Ph5buDSQehQ==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/optimizer-css@2.15.1': + resolution: {integrity: sha512-7fbw+GLIntxN73SadfBUr+Mc+K5EvOIAshkZmJ5ikKg6RAPpngI8v11AYWBIdfHheHPIopGbHgJjG45bzicxqg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/optimizer-htmlnano@2.14.4': - resolution: {integrity: sha512-hLVaN7ResQcgKRo9uDm7oddC4DwR7qoTFsYn4Ftj8qGbgqB2nRpCCK0R66PA/9U98LyTOlAl1J6TEvxWR+IlKw==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/optimizer-html@2.15.1': + resolution: {integrity: sha512-vdwql378Thzfg5S5KwfQcZbuZjmD9/NSg/vpfoYh27x9Mg7D1NSRo9NdUJtvflUqU4ukARW26Ab/S2ENZnNzbQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/optimizer-image@2.14.4': - resolution: {integrity: sha512-F5xw6ayFWOxu2XP5MI8g9khOCKNkVj4nGoXrBcgLoCKW4o07buCUKY4Sy04P3u7Leip6TOk7qpt3Q1179h6KTQ==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/optimizer-image@2.15.1': + resolution: {integrity: sha512-wBTuGYvDeGBsY2zrnILZGIhCaIWdcxrW5QdeJcE7U0t9Cf+ybw7Er2qoY1D+UFHTn65pv16WU5aXW6d6Jkczew==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} peerDependencies: - '@parcel/core': ^2.14.4 + '@parcel/core': ^2.15.1 - '@parcel/optimizer-svgo@2.14.4': - resolution: {integrity: sha512-bjZ2VHhzclBQ99SC2ZXsFKJ6zi0hXTPbGdaVblMu0iheeXcATdoNzey0eizaoSmLe9IyFJoN6gvnLdQqGfZLZg==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/optimizer-svg@2.15.1': + resolution: {integrity: sha512-SQkqec2jnvwRZfBG8s8V5/3BH31jzxCrT9tW9udP2oIx4bLPz4o3ksOCBCVBqdOk1irJiM8KbGr6pHh4YKHjpg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/optimizer-swc@2.14.4': - resolution: {integrity: sha512-7+p5ILEj2S02Rs6YzwF74g0kpAZzF9idDP9zjLVZWo9JYvoRvH0LW90bI7yKXWpKB8QOtwziqgWkcgItSIWBnA==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/optimizer-swc@2.15.1': + resolution: {integrity: sha512-4KssFZUza2wzD6xrPQAKcyfgPejIueNnfZKA0vlMCBru0uWXsDqvRgRqzNtNUYzDzIThTh5dU7dZP7V1Hy8GKQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/package-manager@2.14.4': - resolution: {integrity: sha512-chF2rBmLtLPZe0qtbqJtq6hNGCRu0+1wFs2j5sqxr1ZttvvhRpATu/7pD+gKTFmfL7iJkOpGTU485SYmyO1xjg==} + '@parcel/package-manager@2.15.1': + resolution: {integrity: sha512-/B8Nk1md6eG7Z7MLzr+B1Z5Hne1ssNXaJVdhTyxN2FWmV+W7YfZId1Js6CZzQRUElLdFD5tOMcOKCCcNuVjjyw==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.14.4 + '@parcel/core': ^2.15.1 - '@parcel/packager-css@2.14.4': - resolution: {integrity: sha512-AvJhE1AQ4OcuOUtKoifhE1Y8KgYitzKMvmgsgQlwySdrkk6dz+XGHfZ9goTzIUaz9xZzwbJH7h/pvaIP8jQ9yQ==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/packager-css@2.15.1': + resolution: {integrity: sha512-ElwNtT/ZmamGqT0H6DuVeqs33pCj3HAiOKvwT7DRoErOH+W3PNOjpscr8zinnGJsK47ULpHZgvSq2prD6F3JpQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/packager-html@2.14.4': - resolution: {integrity: sha512-rsYz3NDaKRCuQOAWGc3eYJ2GHesm62iRCQTMGlZ7Oplp748vu2c1Uee/mP43WlslvDxHtV7rzVNyo88MS6sc5w==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/packager-html@2.15.1': + resolution: {integrity: sha512-TQrvsr00IjALV9bfAWYPjjf6Tii58XS7oEyrMayMfbem2uzFl6gY+Y4kDdaAKTRNZuJggb58ypsOG3OKLpkHhQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/packager-js@2.14.4': - resolution: {integrity: sha512-Fz98TzYFcd9xCj6jqMtyd7c3n65GRmuoG7u0S/2g4sJrR5Zen70n1zlBGX7mEoOvB5lKRijzoNqBtB+7bWqS5A==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/packager-js@2.15.1': + resolution: {integrity: sha512-afQThQpB3j+GLsRTsOABIi9QDBgGZfZQn4etMdFrnT9rSikRxFn5CStJnPc7jgnUf4deVOoODbVXF8VAYl1nUw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/packager-raw@2.14.4': - resolution: {integrity: sha512-7yDcPGsSSz4WiCWj2KoC2pNBXNislulI1RXaWyBAMzQhevQ+9D2ga/ZPgpcNjcWr8Y1tRb3QITETkTmZVHmPXQ==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/packager-raw@2.15.1': + resolution: {integrity: sha512-MZWaEZ1EJAw5R5w1ZPeoDHcwtmYfAHBm89r0F9gkUAhAxvAzSUDoFt8Cnlfz4i+lQW5ZMhUtFXRnD9n9xSkfjw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@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-svg@2.15.1': + resolution: {integrity: sha512-LVof+T0UmrqM5GUdrUKyBTuYaPt6E1QmEk08QgcAWCDCjBN/xq9UDpSBSY+erOm7YIA0ad8YkyqANJMPP6o2pA==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/packager-wasm@2.14.4': - resolution: {integrity: sha512-sgGCitPjl80Ku+xZIu3wCIAjOYXVEGJ00uXeexR8hgMx/PMhiHXLWUG8eLYAvxXx/CcLmHDOEBNrl6G3JxsP9g==} - engines: {node: '>=16.0.0', parcel: ^2.14.4} + '@parcel/packager-wasm@2.15.1': + resolution: {integrity: sha512-n3ZCAep6cMhXxjunUytIMpaPR7+9GoB80RyYFQzRhSEorDYmgInDbvYjAFDtI4XHr3aRPLn67CTSMC0OQa6U5Q==} + engines: {node: '>=16.0.0', parcel: ^2.15.1} - '@parcel/plugin@2.14.4': - resolution: {integrity: sha512-EcehbthkBtQ9S2jWAzIiSlodbIMZ0bSsN3PC1q9jVaCM16ueObjZohKkzMjzR6Qot91qL0EJoMLzuNvtryvpHA==} + '@parcel/plugin@2.15.1': + resolution: {integrity: sha512-nlcmKLrEfV0ZJ6Ow6Wt7HlcSBXPd4o5h8u2VSHVapP/4ZfXUSi3RMELQ1vNuZH0+kWPPGCwRCjcDqMa7FZ5q7w==} engines: {node: '>= 16.0.0'} - '@parcel/profiler@2.14.4': - resolution: {integrity: sha512-oZAdCDW3bYRpBOuL4coq4OQDN6HXADaSd4X8xJCeGsEsbVfJt0Qg5RgxdWC1L86mukyZMQ9ZrQUpC8aU9CAmFg==} + '@parcel/profiler@2.15.1': + resolution: {integrity: sha512-/FiXLrydaLO3RuzKsxCdNGekFPUmG7xCaseW9uDIraQJl39TD4Yxr8R8X3TOuxCvxNSfci87YSenQGXiOlqCMg==} engines: {node: '>= 16.0.0'} - '@parcel/reporter-cli@2.14.4': - resolution: {integrity: sha512-KgBXBiwGb9hqf3A6vw6eIqX1uYaMRjSqYXUUybGTOxonc+yB6J5q+skv1Wuty6IYuBfjNlV/zdvgggVZMl0ZxA==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/reporter-cli@2.15.1': + resolution: {integrity: sha512-w/xFyiQNx/PPREimNgA+ZzrubQmtU1nPqQzOtUwvIGdPsp2BMc6VuM1mmmO9On0awX1lfKlWJvj7A6CZ7ZOrAA==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} + + '@parcel/reporter-dev-server@2.15.1': + resolution: {integrity: sha512-5b2ESpM6lgXSH+UIJKafLeOLsUkEtiUC3EMnvAS0frt4DyC5wtR4I9us+SO4OPm2ah7xkxDJI6mIjet5IBBioQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} + + '@parcel/reporter-tracer@2.15.1': + resolution: {integrity: sha512-Je2m/PMx3UJM+NZ1JFiMvwiZXSOmJ2jCvoy7y+kBAjZ95JZTjxK/dMrjMAJNG0iTPdrgfSOez/R131OdqbGOsg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} + + '@parcel/resolver-default@2.15.1': + resolution: {integrity: sha512-32/hmXv+HZxM6Sr8/bxugCHXK5/za+sm8Jpni1hH24O1MN4sw/6lxRawOmshaifsHe634xi8JZRxKCby0CK8eQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} + + '@parcel/runtime-browser-hmr@2.15.1': + resolution: {integrity: sha512-XuhRY4eexys7H0186oiIfutrcGBHn//4pPXWCAd740A5PrgXfRezNG/aRQ8xSkZ9BwpshWfv1b9zyONHex5tdA==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} + + '@parcel/runtime-js@2.15.1': + resolution: {integrity: sha512-hXbHXB7dgBQW6mxnGgkhtOt+pLnr1HXGitLGxaQZSX0sbepPK0uY8U959Wkxnw7Tu5ru76CSfnP+1ZyZGE6Z0A==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} + + '@parcel/runtime-rsc@2.15.1': + resolution: {integrity: sha512-5UIj09IUj0+v9uyQrIGPDTkM5RLJEOgGsS8sHtfDZ1SFOjIumbT4/J0tXF0QDNrsvBdDx9dxlxRvwyyEehUvkg==} + engines: {node: '>= 12.0.0', parcel: ^2.15.1} + + '@parcel/runtime-service-worker@2.15.1': + resolution: {integrity: sha512-SzoGHsHIp93FmGbs6R5IjSbGnIkPit9tbbV1wZPW7xzdO9vjOjcWN1pw2t0I5Pdm50b0uf3qEYyIcd+gfNidsA==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} + + '@parcel/rust-darwin-arm64@2.15.1': + resolution: {integrity: sha512-QkAnDhoc44gMLzI7o3S5y7kmZBdAQHvR2WyroE6ROrbu/ErR2dHwUenFKMLO297H7rb4LvckAbAHt5OqeS/Mww==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] - '@parcel/reporter-dev-server@2.14.4': - resolution: {integrity: sha512-Ezg24vHftV0El0tWcxnsGAxwSdNTMs9M+l9Nbm1k4rydx1lCoKBAhpa2Icv8vKZY8K075giww8TOkjk6zVkAmQ==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/rust-darwin-x64@2.15.1': + resolution: {integrity: sha512-brd9Y+UdSXOoOmP9QEQQ/mMWSF57gozlyZPdPkpSgfoCVWSF3/9WANumL8dCGve+JlbMF95eg2H9hcXdMubfaw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] - '@parcel/reporter-tracer@2.14.4': - resolution: {integrity: sha512-EN+rzdEnoMuC5qbYIcuP6v1vTb/dDPrrnIEtDFEsSyuBuDfQevtOech8oHzjGEBOlC8svm+OzW/wIj2L2rmF2A==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/rust-linux-arm-gnueabihf@2.15.1': + resolution: {integrity: sha512-06G8pXdpkPZ3zOhHMWoGBU5v/iV9ucKEtNA6NCA48M4t9nQP0HkcUjAulrflq4B5HsAYkG4691Dw52znXWISDQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] - '@parcel/resolver-default@2.14.4': - resolution: {integrity: sha512-s4XKnfScF/cwqGyYG/sB4WpktIJ55dvpu64ZiglHkkPvY5wT4p7A61mTIp6ck0ZPYmeG/zfd+P0B3qPpNF5mUw==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/rust-linux-arm64-gnu@2.15.1': + resolution: {integrity: sha512-BMEmCkWzHSaLwfY2Mcsi/eXWvSqQf3IOKll2jRVuS2cZQambyggunXD5prrvj++gXN1cwpGmno2BLDoA08Vwzg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] - '@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/rust-linux-arm64-musl@2.15.1': + resolution: {integrity: sha512-6FfxmBUFIRFJpHghx+ybghFaxKtKgwDX/9NUYYrqdv83snT9aEkYU0pJqfRyrdz2Wkr1tkOeIhgtvo53CksD1w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] - '@parcel/runtime-js@2.14.4': - resolution: {integrity: sha512-F9RvDELU/0fyV2/rHkjpPcLeKF/ZU3gnHIQnkh2Q5/41XhymyNAvMmYGPM6VpbOAnDlYeVjwfyJ41x8FOL6u4Q==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/rust-linux-x64-gnu@2.15.1': + resolution: {integrity: sha512-EV0ATUcUP3XY2ej0f+T/YJVMMpgCS/ppGuoykqv1VmopNz4mhXQIFezF6QnI9WUOJDgFUg/S9lC4GJGfmy0Dzg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] - '@parcel/runtime-rsc@2.14.4': - resolution: {integrity: sha512-FXoO1GWvC/yQOUYX+0rTUQVku91DSJnjegqJaiJSUOEGeJWF9mBmY/3QDkksvhwB25vJkLYsu/M5Fx83OA2u6w==} - engines: {node: '>= 12.0.0', parcel: ^2.14.4} + '@parcel/rust-linux-x64-musl@2.15.1': + resolution: {integrity: sha512-PffkN//0SZsAd7VM3Ywr7DMw22Fg7S//rn7e/DjZG6llCYYwQLjQOcZXb/B8NdzfNs3cp1L6U2muwYxMpPOfOQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] - '@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-win32-x64-msvc@2.15.1': + resolution: {integrity: sha512-CX/SgV2jdkJT+ySZpq1UDkhwI7Sg1qUTWvSrD+ApPcYoO9dqDd+Amqr3XIUyyNfSlqnHvDsGtQNBVjkHBrPzdw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] - '@parcel/rust@2.14.4': - resolution: {integrity: sha512-Ti+ZVr8mMTgrSA7UHcFXxG98anD0C8dGzYfP1+DTgxkcU16nywTv5F/VsPqpV2qiDWrHbm06CEWQbOrowjzvVw==} + '@parcel/rust@2.15.1': + resolution: {integrity: sha512-1YRgpvSFDJPvybC2YWQrcYzHz8gvb3SajsbriZETdvUu6N1OfG75UJHfJ8Mb+NokOrQNhVRrrGX5Q3ELEMuaxg==} engines: {node: '>= 16.0.0'} peerDependencies: napi-wasm: ^1.1.2 @@ -439,66 +487,66 @@ packages: resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} engines: {node: ^12.18.3 || >=14} - '@parcel/transformer-babel@2.14.4': - resolution: {integrity: sha512-9yMnlFuKQYgXJY8OWpcR2vSigpMm5MCEJJl6r+g3KkXHFwK1Gket2sC4Wd5JbHv98SNzJ9rdD4Xrre/eXJu6pw==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/transformer-babel@2.15.1': + resolution: {integrity: sha512-VXMOYfy1/VkQxZP3wbkHbqRXrVEA0yWLNWGxND8MhCdIyEb/ry0J+RZLBB+fa/uBV5S8HI3VYFtVRKExrdKYPg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/transformer-css@2.14.4': - resolution: {integrity: sha512-sf0NuzPH4kSpL4VgV94xY5kPxoAndoNouUFPaHmN3hW6QiTHShRubfDsginSOHl5QhghSfr4qtP7t7HxCSDq6A==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/transformer-css@2.15.1': + resolution: {integrity: sha512-vI6JO/+qyAjL0ah+J8tZrGHMf82PC98+iTRzEFCBrexwICHrfiYkJH8bTRDYQPCsFcK8GZNGnLV6QyRkKQyqzg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@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-html@2.15.1': + resolution: {integrity: sha512-c9k6NO3DpVughTTbYcWy8DIABezlYYhi274mKnIaT0t3ETZ9UBepyY1KhNU++imhk64hfvUAvJ/ZwWRpYGnV3g==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/transformer-image@2.14.4': - resolution: {integrity: sha512-QVGAdQ16YxNo7PTzBazUabmrn4dss1EDeMrh0bFUeRTZdYaYu5z/+gnRc5R4oHcHK6oxnECi808TquMQcQxDEA==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/transformer-image@2.15.1': + resolution: {integrity: sha512-S5dsK/w3aS0u0jAMqWiadqjxa/Zl8dW0DDlNwPq7LOnvlcgPnbXrbYVzbmF0ylMtY+ZE0FUHsKAO8zmZe8vi0Q==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} peerDependencies: - '@parcel/core': ^2.14.4 + '@parcel/core': ^2.15.1 - '@parcel/transformer-js@2.14.4': - resolution: {integrity: sha512-fBC8NVM8xXxjGQY5r88Z46akSErFO5hRVA4kuRI0tkXorjov3Mu4hu6MLq974TEQluSvGXUYGT5Mq2iXZ75M7w==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/transformer-js@2.15.1': + resolution: {integrity: sha512-2rxuc9kvGhkhsEabHUKkxlsYsrquhAmwdgpiAjGYMMzLIRR/xyc6dJWoDEBmrARUrw6XBRBMz61rlVhtwM+nBw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} peerDependencies: - '@parcel/core': ^2.14.4 + '@parcel/core': ^2.15.1 - '@parcel/transformer-json@2.14.4': - resolution: {integrity: sha512-+28n3/qhc2q6Zoqhufk1YKU442a2JyyE0ILFsT17Of+lcNX+QtXYPOYcky7TNENnoUz9TpOAFev64P99UN7huA==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/transformer-json@2.15.1': + resolution: {integrity: sha512-UCL8RSn+BTT2j6vEKvQ022s5zNzSPwkFFVUY26zMcrcx6MQXKZMGa5AGAJqfzM5s2kYBx8kTx3CmCwMbwfcWEw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/transformer-node@2.14.4': - resolution: {integrity: sha512-K5k/GkGN4SwGdil8g10AcPPJn+hV0vzcv4l2qYoCqaxxIPCrpjmMnoA8a3kRgxvD8s54KciFYYjmU5Cj5NjvbA==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/transformer-node@2.15.1': + resolution: {integrity: sha512-tnzEJyt3BfRmIikAPxNeXgjcuQwkY9gJuIa0dhHm1PlCPwQEAA8Kg0xNS8TiXCubFNIrVs3eAB23IzRjiQQ2iQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/transformer-postcss@2.14.4': - resolution: {integrity: sha512-GxkXkcgG2XGt6ivoUF5yD1tmQPV+d71gUxyBGv1i1jg4x65R12Gc/npzWk9TCH2dShSdHOA90OJpNL4k0JlLtg==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/transformer-postcss@2.15.1': + resolution: {integrity: sha512-lFkE8mOWJP3uWAcMUB2I7gjCNdmSnRSZQEgjFE1b26WbmJPTi95IIKrgu1dw6EOhvitRkuHHPWaSb/ekdFbTdA==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@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-posthtml@2.15.1': + resolution: {integrity: sha512-zgWq1sx4Brzzk87bYqkbOSZSNM58UKsyNr1t7JfQtXdTkswumtDysDvx/88bqTyDkuNRP+Iowmch9Ui3q9AbTw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@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-raw@2.15.1': + resolution: {integrity: sha512-2fh6ud2lD/RxYdhhKo8tbMBOWLfTP2w5RtijBdLRkJ/3dF7Wu+xejhYu9ks3iWA4RQxcxg7Gj1EADFBgyffKFg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@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/transformer-react-refresh-wrap@2.15.1': + resolution: {integrity: sha512-+Q7TjbMOJ7P64S8NPaoBSrD4ixp+Qgr41SOZvEUx/5WKx7R1d7dhUyKTz/61q7kVj1OmVlSv3UpasBCAVa259A==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/transformer-svg@2.14.4': - resolution: {integrity: sha512-iqnyvgGmwu4wNh+khEBkMEu1hAGZWnc7/xQnhiuQBAcoy5qGNEjyVUv6PbMLWWAVK/0PjqV4FaB2deXBYKeW0A==} - engines: {node: '>= 16.0.0', parcel: ^2.14.4} + '@parcel/transformer-svg@2.15.1': + resolution: {integrity: sha512-nTz27tXVPYHfcMyxdOlYNOe005egEiMK7Ldx04K/GqDZi5W3/aZeofhSdqzQlYyzA/gwu7iVDbsGcOPpBtuOlw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.1} - '@parcel/types-internal@2.14.4': - resolution: {integrity: sha512-Y2JnljFG7KcxLrCiYNCqBfjDo12alhRVpNugm0jwz1EQ3OQNO3HYiB0f3djq6pv2clZ5ndpgkNgYsn6L7KR9Nw==} + '@parcel/types-internal@2.15.1': + resolution: {integrity: sha512-+dsY64R8tP77384vDaathn90w5yLGH40NTpFFYhaYgNCfA1aPCiVjI04htgEspFAyAniCsd9fZQvvtJWZ8diag==} - '@parcel/types@2.14.4': - resolution: {integrity: sha512-NL4N9M6IPwBquAo1DKOPqy66nwJLXMX3KPalzAA7ktt3HYr5YNG5h3GeVXPOLNIVVMrSIiodYGPEeEBYy6kyYA==} + '@parcel/types@2.15.1': + resolution: {integrity: sha512-55TJE7tC8hhRPhs4Ki4H5xakGJBMTtLiew8eAQx7lKajG4tc9ohneGGTqKmojzId3YzTua5KARnoUjmH/eoC4Q==} - '@parcel/utils@2.14.4': - resolution: {integrity: sha512-icK6QgKjis+UZLyaHJcsKXYOSKYeYr41m8ZB9j20/yEcvrMqj/LMVsNjLz3iWVhLwfgussG2ODxycCdu3M5cvQ==} + '@parcel/utils@2.15.1': + resolution: {integrity: sha512-H6v0AsKU/OKeDW0deQlZyCy5IwcKQlQBxUp0cNksPLrH+PtgWtiO+ttCJFAYhaFAve5jW9oPSefbjZILp/cplQ==} engines: {node: '>= 16.0.0'} '@parcel/watcher-android-arm64@2.5.1': @@ -583,177 +631,174 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} - '@parcel/workers@2.14.4': - resolution: {integrity: sha512-OAjW2dJOaRKy4UD5YwnUi7mY+gt/QbjagjrKh2fQDnrvuK8dpr5GrjEOLOe6QsxEE0vpe3jshhGMJTYqLni3kQ==} + '@parcel/workers@2.15.1': + resolution: {integrity: sha512-WBuNTLWK2Y0ghhA8I/DwMReURS+sTat5pFbkxqTdznsrq+MVJTDnp54YzEYryLhaca8vhFZediIh159msGB6PQ==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.14.4 + '@parcel/core': ^2.15.1 - '@rollup/rollup-android-arm-eabi@4.40.0': - resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} + '@rollup/rollup-android-arm-eabi@4.40.2': + resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.40.0': - resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==} + '@rollup/rollup-android-arm64@4.40.2': + resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.40.0': - resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==} + '@rollup/rollup-darwin-arm64@4.40.2': + resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.40.0': - resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==} + '@rollup/rollup-darwin-x64@4.40.2': + resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.40.0': - resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==} + '@rollup/rollup-freebsd-arm64@4.40.2': + resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.40.0': - resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==} + '@rollup/rollup-freebsd-x64@4.40.2': + resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.40.0': - resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.40.0': - resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.40.0': - resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} + '@rollup/rollup-linux-arm64-gnu@4.40.2': + resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.40.0': - resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} + '@rollup/rollup-linux-arm64-musl@4.40.2': + resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.40.0': - resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': - resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.40.0': - resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.40.0': - resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} + '@rollup/rollup-linux-riscv64-musl@4.40.2': + resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.40.0': - resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} + '@rollup/rollup-linux-s390x-gnu@4.40.2': + resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.40.0': - resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} + '@rollup/rollup-linux-x64-gnu@4.40.2': + resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.40.0': - resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} + '@rollup/rollup-linux-x64-musl@4.40.2': + resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.40.0': - resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} + '@rollup/rollup-win32-arm64-msvc@4.40.2': + resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.40.0': - resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==} + '@rollup/rollup-win32-ia32-msvc@4.40.2': + resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.40.0': - resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==} + '@rollup/rollup-win32-x64-msvc@4.40.2': + resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} cpu: [x64] os: [win32] - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@swc/core-darwin-arm64@1.11.21': - resolution: {integrity: sha512-v6gjw9YFWvKulCw3ZA1dY+LGMafYzJksm1mD4UZFZ9b36CyHFowYVYug1ajYRIRqEvvfIhHUNV660zTLoVFR8g==} + '@swc/core-darwin-arm64@1.11.24': + resolution: {integrity: sha512-dhtVj0PC1APOF4fl5qT2neGjRLgHAAYfiVP8poJelhzhB/318bO+QCFWAiimcDoyMgpCXOhTp757gnoJJrheWA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.11.21': - resolution: {integrity: sha512-CUiTiqKlzskwswrx9Ve5NhNoab30L1/ScOfQwr1duvNlFvarC8fvQSgdtpw2Zh3MfnfNPpyLZnYg7ah4kbT9JQ==} + '@swc/core-darwin-x64@1.11.24': + resolution: {integrity: sha512-H/3cPs8uxcj2Fe3SoLlofN5JG6Ny5bl8DuZ6Yc2wr7gQFBmyBkbZEz+sPVgsID7IXuz7vTP95kMm1VL74SO5AQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.11.21': - resolution: {integrity: sha512-YyBTAFM/QPqt1PscD8hDmCLnqPGKmUZpqeE25HXY8OLjl2MUs8+O4KjwPZZ+OGxpdTbwuWFyMoxjcLy80JODvg==} + '@swc/core-linux-arm-gnueabihf@1.11.24': + resolution: {integrity: sha512-PHJgWEpCsLo/NGj+A2lXZ2mgGjsr96ULNW3+T3Bj2KTc8XtMUkE8tmY2Da20ItZOvPNC/69KroU7edyo1Flfbw==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.11.21': - resolution: {integrity: sha512-DQD+ooJmwpNsh4acrftdkuwl5LNxxg8U4+C/RJNDd7m5FP9Wo4c0URi5U0a9Vk/6sQNh9aSGcYChDpqCDWEcBw==} + '@swc/core-linux-arm64-gnu@1.11.24': + resolution: {integrity: sha512-C2FJb08+n5SD4CYWCTZx1uR88BN41ZieoHvI8A55hfVf2woT8+6ZiBzt74qW2g+ntZ535Jts5VwXAKdu41HpBg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.11.21': - resolution: {integrity: sha512-y1L49+snt1a1gLTYPY641slqy55QotPdtRK9Y6jMi4JBQyZwxC8swWYlQWb+MyILwxA614fi62SCNZNznB3XSA==} + '@swc/core-linux-arm64-musl@1.11.24': + resolution: {integrity: sha512-ypXLIdszRo0re7PNNaXN0+2lD454G8l9LPK/rbfRXnhLWDBPURxzKlLlU/YGd2zP98wPcVooMmegRSNOKfvErw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.11.21': - resolution: {integrity: sha512-NesdBXv4CvVEaFUlqKj+GA4jJMNUzK2NtKOrUNEtTbXaVyNiXjFCSaDajMTedEB0jTAd9ybB0aBvwhgkJUWkWA==} + '@swc/core-linux-x64-gnu@1.11.24': + resolution: {integrity: sha512-IM7d+STVZD48zxcgo69L0yYptfhaaE9cMZ+9OoMxirNafhKKXwoZuufol1+alEFKc+Wbwp+aUPe/DeWC/Lh3dg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.11.21': - resolution: {integrity: sha512-qFV60pwpKVOdmX67wqQzgtSrUGWX9Cibnp1CXyqZ9Mmt8UyYGvmGu7p6PMbTyX7vdpVUvWVRf8DzrW2//wmVHg==} + '@swc/core-linux-x64-musl@1.11.24': + resolution: {integrity: sha512-DZByJaMVzSfjQKKQn3cqSeqwy6lpMaQDQQ4HPlch9FWtDx/dLcpdIhxssqZXcR2rhaQVIaRQsCqwV6orSDGAGw==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.11.21': - resolution: {integrity: sha512-DJJe9k6gXR/15ZZVLv1SKhXkFst8lYCeZRNHH99SlBodvu4slhh/MKQ6YCixINRhCwliHrpXPym8/5fOq8b7Ig==} + '@swc/core-win32-arm64-msvc@1.11.24': + resolution: {integrity: sha512-Q64Ytn23y9aVDKN5iryFi8mRgyHw3/kyjTjT4qFCa8AEb5sGUuSj//AUZ6c0J7hQKMHlg9do5Etvoe61V98/JQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.11.21': - resolution: {integrity: sha512-TqEXuy6wedId7bMwLIr9byds+mKsaXVHctTN88R1UIBPwJA92Pdk0uxDgip0pEFzHB/ugU27g6d8cwUH3h2eIw==} + '@swc/core-win32-ia32-msvc@1.11.24': + resolution: {integrity: sha512-9pKLIisE/Hh2vJhGIPvSoTK4uBSPxNVyXHmOrtdDot4E1FUUI74Vi8tFdlwNbaj8/vusVnb8xPXsxF1uB0VgiQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.11.21': - resolution: {integrity: sha512-BT9BNNbMxdpUM1PPAkYtviaV0A8QcXttjs2MDtOeSqqvSJaPtyM+Fof2/+xSwQDmDEFzbGCcn75M5+xy3lGqpA==} + '@swc/core-win32-x64-msvc@1.11.24': + resolution: {integrity: sha512-sybnXtOsdB+XvzVFlBVGgRHLqp3yRpHK7CrmpuDKszhj/QhmsaZzY/GHSeALlMtLup13M0gqbcQvsTNlAHTg3w==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.11.21': - resolution: {integrity: sha512-/Y3BJLcwd40pExmdar8MH2UGGvCBrqNN7hauOMckrEX2Ivcbv3IMhrbGX4od1dnF880Ed8y/E9aStZCIQi0EGw==} + '@swc/core@1.11.24': + resolution: {integrity: sha512-MaQEIpfcEMzx3VWWopbofKJvaraqmL6HbLlw2bFZ7qYqYw3rkhM0cQVEgyzbHtTWwCwPMFZSC2DUbhlZgrMfLg==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -773,46 +818,45 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} - '@types/node@20.17.30': - resolution: {integrity: sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==} + '@types/node@22.15.18': + resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} - '@vitest/expect@1.6.1': - resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==} + '@vitest/expect@3.1.3': + resolution: {integrity: sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==} - '@vitest/runner@1.6.1': - resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==} + '@vitest/mocker@3.1.3': + resolution: {integrity: sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - '@vitest/snapshot@1.6.1': - resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==} + '@vitest/pretty-format@3.1.3': + resolution: {integrity: sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==} - '@vitest/spy@1.6.1': - resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==} + '@vitest/runner@3.1.3': + resolution: {integrity: sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA==} - '@vitest/utils@1.6.1': - resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==} + '@vitest/snapshot@3.1.3': + resolution: {integrity: sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ==} - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} + '@vitest/spy@3.1.3': + resolution: {integrity: sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==} - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true + '@vitest/utils@3.1.3': + resolution: {integrity: sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==} ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} base-x@3.0.11: resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} @@ -821,8 +865,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + browserslist@4.24.5: + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -830,23 +874,20 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - caniuse-lite@1.0.30001715: - resolution: {integrity: sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==} + caniuse-lite@1.0.30001718: + resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} @@ -867,24 +908,12 @@ packages: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -892,8 +921,8 @@ packages: supports-color: optional: true - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} detect-libc@1.0.3: @@ -901,40 +930,13 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dockerfile-ast@0.7.0: resolution: {integrity: sha512-HYpjuL0IEC2lYflTpWD0RLNSZYhQxLwYRYsoEjnCP7nu/OlFx1BVrU6X/Y8ETVsa2hojhG2OTJVxleH5Wrlq+Q==} - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dotenv-expand@11.0.7: resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} engines: {node: '>=12'} @@ -943,30 +945,15 @@ packages: resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} engines: {node: '>=12'} - electron-to-chromium@1.5.140: - resolution: {integrity: sha512-o82Rj+ONp4Ip7Cl1r7lrqx/pXhbp/lh9DpKcMNscFJdh8ebyRofnc7Sh01B4jx403RI0oqTBvlZ7OBIZLMr2+Q==} - - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - entities@3.0.1: - resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} - engines: {node: '>=0.12'} - - 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'} + electron-to-chromium@1.5.155: + resolution: {integrity: sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==} - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} hasBin: true escalade@3.2.0: @@ -976,33 +963,31 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + engines: {node: '>=12.0.0'} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - 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] - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-port@4.2.0: resolution: {integrity: sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==} engines: {node: '>=6'} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -1011,52 +996,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - htmlnano@2.1.1: - resolution: {integrity: sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw==} - peerDependencies: - cssnano: ^7.0.0 - postcss: ^8.3.11 - purgecss: ^6.0.0 - relateurl: ^0.2.7 - srcset: 5.0.1 - svgo: ^3.0.2 - terser: ^5.10.0 - uncss: ^0.17.3 - peerDependenciesMeta: - cssnano: - optional: true - postcss: - optional: true - purgecss: - optional: true - relateurl: - optional: true - srcset: - optional: true - svgo: - optional: true - terser: - 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'} @@ -1065,133 +1004,96 @@ packages: 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==} + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.29.3: - resolution: {integrity: sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==} + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.29.3: - resolution: {integrity: sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==} + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.29.3: - resolution: {integrity: sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==} + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.29.3: - resolution: {integrity: sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==} + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.29.3: - resolution: {integrity: sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==} + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.29.3: - resolution: {integrity: sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==} + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.29.3: - resolution: {integrity: sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==} + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.29.3: - resolution: {integrity: sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==} + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.29.3: - resolution: {integrity: sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==} + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.29.3: - resolution: {integrity: sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==} + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} 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==} + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} 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'} @@ -1203,8 +1105,8 @@ packages: resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true - msgpackr@1.11.2: - resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==} + msgpackr@1.11.3: + resolution: {integrity: sha512-mNdO4s/W54QCghwGNSqO5ULVJ6QUimP/1hRlWVx5f7frTLaClg+4sBRjUTgP1OrBRgVtkH1tI9vi4Dqg/JX3Kg==} nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} @@ -1228,53 +1130,27 @@ packages: 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==} + parcel@2.15.1: + resolution: {integrity: sha512-sDj8BgTLRsTLwbBnxTKiHB6R9lE0eNHz3umKZkbkVyYI9SgFJU4G5rGaJ5fClEHDYcFFSkBb6iKOk3PqPAWKxw==} 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==} + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1283,8 +1159,9 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -1293,29 +1170,6 @@ packages: 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'} @@ -1323,20 +1177,16 @@ packages: 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==} + rollup@4.40.2: + resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} 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==} + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true @@ -1351,10 +1201,6 @@ packages: 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'} @@ -1363,23 +1209,12 @@ packages: 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'} @@ -1388,18 +1223,26 @@ packages: 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==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} to-regex-range@5.0.1: @@ -1409,9 +1252,9 @@ packages: 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'} + tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} @@ -1422,11 +1265,8 @@ packages: 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==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} @@ -1438,27 +1278,32 @@ packages: 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} + vite-node@3.1.3: + resolution: {integrity: sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@5.4.18: - resolution: {integrity: sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==} - engines: {node: ^18.0.0 || >=20.0.0} + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' less: '*' lightningcss: ^1.21.0 sass: '*' sass-embedded: '*' stylus: '*' sugarss: '*' - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -1473,21 +1318,28 @@ packages: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true - vitest@1.6.1: - resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==} - engines: {node: ^18.0.0 || >=20.0.0} + vitest@3.1.3: + resolution: {integrity: sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.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 + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.1.3 + '@vitest/ui': 3.1.3 happy-dom: '*' jsdom: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@types/debug': + optional: true '@types/node': optional: true '@vitest/browser': @@ -1518,94 +1370,90 @@ packages: 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': {} + '@actions/core@1.8.0': + dependencies: + '@actions/http-client': 1.0.11 - '@babel/code-frame@7.26.2': + '@actions/http-client@1.0.11': dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 + tunnel: 0.0.6 - '@babel/helper-validator-identifier@7.25.9': {} + '@esbuild/aix-ppc64@0.25.4': + optional: true - '@esbuild/aix-ppc64@0.21.5': + '@esbuild/android-arm64@0.25.4': optional: true - '@esbuild/android-arm64@0.21.5': + '@esbuild/android-arm@0.25.4': optional: true - '@esbuild/android-arm@0.21.5': + '@esbuild/android-x64@0.25.4': optional: true - '@esbuild/android-x64@0.21.5': + '@esbuild/darwin-arm64@0.25.4': optional: true - '@esbuild/darwin-arm64@0.21.5': + '@esbuild/darwin-x64@0.25.4': optional: true - '@esbuild/darwin-x64@0.21.5': + '@esbuild/freebsd-arm64@0.25.4': optional: true - '@esbuild/freebsd-arm64@0.21.5': + '@esbuild/freebsd-x64@0.25.4': optional: true - '@esbuild/freebsd-x64@0.21.5': + '@esbuild/linux-arm64@0.25.4': optional: true - '@esbuild/linux-arm64@0.21.5': + '@esbuild/linux-arm@0.25.4': optional: true - '@esbuild/linux-arm@0.21.5': + '@esbuild/linux-ia32@0.25.4': optional: true - '@esbuild/linux-ia32@0.21.5': + '@esbuild/linux-loong64@0.25.4': optional: true - '@esbuild/linux-loong64@0.21.5': + '@esbuild/linux-mips64el@0.25.4': optional: true - '@esbuild/linux-mips64el@0.21.5': + '@esbuild/linux-ppc64@0.25.4': optional: true - '@esbuild/linux-ppc64@0.21.5': + '@esbuild/linux-riscv64@0.25.4': optional: true - '@esbuild/linux-riscv64@0.21.5': + '@esbuild/linux-s390x@0.25.4': optional: true - '@esbuild/linux-s390x@0.21.5': + '@esbuild/linux-x64@0.25.4': optional: true - '@esbuild/linux-x64@0.21.5': + '@esbuild/netbsd-arm64@0.25.4': optional: true - '@esbuild/netbsd-x64@0.21.5': + '@esbuild/netbsd-x64@0.25.4': optional: true - '@esbuild/openbsd-x64@0.21.5': + '@esbuild/openbsd-arm64@0.25.4': optional: true - '@esbuild/sunos-x64@0.21.5': + '@esbuild/openbsd-x64@0.25.4': optional: true - '@esbuild/win32-arm64@0.21.5': + '@esbuild/sunos-x64@0.25.4': optional: true - '@esbuild/win32-ia32@0.21.5': + '@esbuild/win32-arm64@0.25.4': optional: true - '@esbuild/win32-x64@0.21.5': + '@esbuild/win32-ia32@0.25.4': optional: true - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 + '@esbuild/win32-x64@0.25.4': + optional: true '@jridgewell/sourcemap-codec@1.5.0': {} @@ -1657,581 +1505,576 @@ snapshots: '@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))': + '@parcel/bundler-default@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/diagnostic': 2.15.1 + '@parcel/graph': 3.5.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 + '@parcel/utils': 2.15.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/cache@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/cache@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/core': 2.15.1(@swc/helpers@0.5.17) + '@parcel/fs': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/logger': 2.15.1 + '@parcel/utils': 2.15.1 lmdb: 2.8.5 transitivePeerDependencies: - napi-wasm - '@parcel/codeframe@2.14.4': + '@parcel/codeframe@2.15.1': dependencies: chalk: 4.1.2 - '@parcel/compressor-raw@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/compressor-raw@2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@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)) + '@parcel/config-default@2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': + dependencies: + '@parcel/bundler-default': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/compressor-raw': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/core': 2.15.1(@swc/helpers@0.5.17) + '@parcel/namer-default': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/optimizer-css': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/optimizer-html': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/optimizer-image': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/optimizer-svg': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/optimizer-swc': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) + '@parcel/packager-css': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/packager-html': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/packager-js': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/packager-raw': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/packager-svg': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/packager-wasm': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/reporter-dev-server': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/resolver-default': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/runtime-browser-hmr': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/runtime-js': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/runtime-rsc': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/runtime-service-worker': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-babel': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-css': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-html': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-image': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-js': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-json': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-node': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-postcss': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-posthtml': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-raw': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-react-refresh-wrap': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/transformer-svg': 2.15.1(@parcel/core@2.15.1(@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)': + '@parcel/core@2.15.1(@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/cache': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.15.1 + '@parcel/events': 2.15.1 + '@parcel/feature-flags': 2.15.1 + '@parcel/fs': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/graph': 3.5.1 + '@parcel/logger': 2.15.1 + '@parcel/package-manager': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/profiler': 2.15.1 + '@parcel/rust': 2.15.1 '@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)) + '@parcel/types': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 + '@parcel/workers': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) base-x: 3.0.11 - browserslist: 4.24.4 + browserslist: 4.24.5 clone: 2.1.2 dotenv: 16.5.0 dotenv-expand: 11.0.7 json5: 2.2.3 - msgpackr: 1.11.2 + msgpackr: 1.11.3 nullthrows: 1.1.1 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - '@swc/helpers' - napi-wasm - '@parcel/diagnostic@2.14.4': + '@parcel/diagnostic@2.15.1': dependencies: '@mischnic/json-sourcemap': 0.1.1 nullthrows: 1.1.1 - '@parcel/error-overlay@2.14.4': {} + '@parcel/error-overlay@2.15.1': {} - '@parcel/events@2.14.4': {} + '@parcel/events@2.15.1': {} - '@parcel/feature-flags@2.14.4': {} + '@parcel/feature-flags@2.15.1': {} - '@parcel/fs@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/fs@2.15.1(@parcel/core@2.15.1(@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/core': 2.15.1(@swc/helpers@0.5.17) + '@parcel/feature-flags': 2.15.1 + '@parcel/rust': 2.15.1 + '@parcel/types-internal': 2.15.1 + '@parcel/utils': 2.15.1 '@parcel/watcher': 2.5.1 - '@parcel/workers': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/workers': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) transitivePeerDependencies: - napi-wasm - '@parcel/graph@3.4.4': + '@parcel/graph@3.5.1': dependencies: - '@parcel/feature-flags': 2.14.4 + '@parcel/feature-flags': 2.15.1 nullthrows: 1.1.1 - '@parcel/logger@2.14.4': + '@parcel/logger@2.15.1': dependencies: - '@parcel/diagnostic': 2.14.4 - '@parcel/events': 2.14.4 + '@parcel/diagnostic': 2.15.1 + '@parcel/events': 2.15.1 - '@parcel/markdown-ansi@2.14.4': + '@parcel/markdown-ansi@2.15.1': dependencies: chalk: 4.1.2 - '@parcel/namer-default@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/namer-default@2.15.1(@parcel/core@2.15.1(@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/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@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))': + '@parcel/node-resolver-core@3.6.1(@parcel/core@2.15.1(@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 + '@parcel/diagnostic': 2.15.1 + '@parcel/fs': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 + '@parcel/utils': 2.15.1 nullthrows: 1.1.1 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/optimizer-css@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/optimizer-css@2.15.1(@parcel/core@2.15.1(@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/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.14.4 - browserslist: 4.24.4 - lightningcss: 1.29.3 + '@parcel/utils': 2.15.1 + browserslist: 4.24.5 + lightningcss: 1.30.1 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)': + '@parcel/optimizer-html@2.15.1(@parcel/core@2.15.1(@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 - htmlnano: 2.1.1(postcss@8.5.3)(typescript@5.8.3) - nullthrows: 1.1.1 - posthtml: 0.16.6 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 + '@parcel/utils': 2.15.1 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))': + '@parcel/optimizer-image@2.15.1(@parcel/core@2.15.1(@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)) + '@parcel/core': 2.15.1(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 + '@parcel/utils': 2.15.1 + '@parcel/workers': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) transitivePeerDependencies: - napi-wasm - '@parcel/optimizer-svgo@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/optimizer-svg@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 + '@parcel/utils': 2.15.1 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)': + '@parcel/optimizer-swc@2.15.1(@parcel/core@2.15.1(@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/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@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) + '@parcel/utils': 2.15.1 + '@swc/core': 1.11.24(@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 + '@parcel/package-manager@2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': + dependencies: + '@parcel/core': 2.15.1(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.15.1 + '@parcel/fs': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/logger': 2.15.1 + '@parcel/node-resolver-core': 3.6.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/types': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 + '@parcel/workers': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@swc/core': 1.11.24(@swc/helpers@0.5.17) + semver: 7.7.2 transitivePeerDependencies: - '@swc/helpers' - napi-wasm - '@parcel/packager-css@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/packager-css@2.15.1(@parcel/core@2.15.1(@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/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.14.4 - lightningcss: 1.29.3 + '@parcel/utils': 2.15.1 + lightningcss: 1.30.1 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))': + '@parcel/packager-html@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 + '@parcel/types': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-js@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/packager-js@2.15.1(@parcel/core@2.15.1(@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/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 '@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/types': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 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))': + '@parcel/packager-raw@2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@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))': + '@parcel/packager-svg@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 + '@parcel/types': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-wasm@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/packager-wasm@2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@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))': + '@parcel/plugin@2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))': dependencies: - '@parcel/types': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/types': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/profiler@2.14.4': + '@parcel/profiler@2.15.1': dependencies: - '@parcel/diagnostic': 2.14.4 - '@parcel/events': 2.14.4 - '@parcel/types-internal': 2.14.4 + '@parcel/diagnostic': 2.15.1 + '@parcel/events': 2.15.1 + '@parcel/types-internal': 2.15.1 chrome-trace-event: 1.0.4 - '@parcel/reporter-cli@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/reporter-cli@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/types': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 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))': + '@parcel/reporter-dev-server@2.15.1(@parcel/core@2.15.1(@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/codeframe': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.14.4 + '@parcel/utils': 2.15.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/reporter-tracer@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/reporter-tracer@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 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))': + '@parcel/resolver-default@2.15.1(@parcel/core@2.15.1(@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)) + '@parcel/node-resolver-core': 3.6.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@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))': + '@parcel/runtime-browser-hmr@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-js@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/runtime-js@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 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))': + '@parcel/runtime-rsc@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 + '@parcel/utils': 2.15.1 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))': + '@parcel/runtime-service-worker@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/rust@2.14.4': {} + '@parcel/rust-darwin-arm64@2.15.1': + optional: true + + '@parcel/rust-darwin-x64@2.15.1': + optional: true + + '@parcel/rust-linux-arm-gnueabihf@2.15.1': + optional: true + + '@parcel/rust-linux-arm64-gnu@2.15.1': + optional: true + + '@parcel/rust-linux-arm64-musl@2.15.1': + optional: true + + '@parcel/rust-linux-x64-gnu@2.15.1': + optional: true + + '@parcel/rust-linux-x64-musl@2.15.1': + optional: true + + '@parcel/rust-win32-x64-msvc@2.15.1': + optional: true + + '@parcel/rust@2.15.1': + optionalDependencies: + '@parcel/rust-darwin-arm64': 2.15.1 + '@parcel/rust-darwin-x64': 2.15.1 + '@parcel/rust-linux-arm-gnueabihf': 2.15.1 + '@parcel/rust-linux-arm64-gnu': 2.15.1 + '@parcel/rust-linux-arm64-musl': 2.15.1 + '@parcel/rust-linux-x64-gnu': 2.15.1 + '@parcel/rust-linux-x64-musl': 2.15.1 + '@parcel/rust-win32-x64-msvc': 2.15.1 '@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))': + '@parcel/transformer-babel@2.15.1(@parcel/core@2.15.1(@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/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.14.4 - browserslist: 4.24.4 + '@parcel/utils': 2.15.1 + browserslist: 4.24.5 json5: 2.2.3 nullthrows: 1.1.1 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-css@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/transformer-css@2.15.1(@parcel/core@2.15.1(@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/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.14.4 - browserslist: 4.24.4 - lightningcss: 1.29.3 + '@parcel/utils': 2.15.1 + browserslist: 4.24.5 + lightningcss: 1.30.1 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))': + '@parcel/transformer-html@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-image@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/transformer-image@2.15.1(@parcel/core@2.15.1(@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)) + '@parcel/core': 2.15.1(@swc/helpers@0.5.17) + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 + '@parcel/workers': 2.15.1(@parcel/core@2.15.1(@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))': + '@parcel/transformer-js@2.15.1(@parcel/core@2.15.1(@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/core': 2.15.1(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 '@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)) + '@parcel/utils': 2.15.1 + '@parcel/workers': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) '@swc/helpers': 0.5.17 - browserslist: 4.24.4 + browserslist: 4.24.5 nullthrows: 1.1.1 regenerator-runtime: 0.14.1 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - napi-wasm - '@parcel/transformer-json@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/transformer-json@2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@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))': + '@parcel/transformer-node@2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@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))': + '@parcel/transformer-postcss@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 + '@parcel/utils': 2.15.1 clone: 2.1.2 nullthrows: 1.1.1 postcss-value-parser: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-posthtml@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/transformer-posthtml@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-raw@2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17))': + '@parcel/transformer-raw@2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.14.4(@parcel/core@2.14.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@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))': + '@parcel/transformer-react-refresh-wrap@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/error-overlay': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 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))': + '@parcel/transformer-svg@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/diagnostic': 2.15.1 + '@parcel/plugin': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/types-internal@2.14.4': + '@parcel/types-internal@2.15.1': dependencies: - '@parcel/diagnostic': 2.14.4 - '@parcel/feature-flags': 2.14.4 + '@parcel/diagnostic': 2.15.1 + '@parcel/feature-flags': 2.15.1 '@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))': + '@parcel/types@2.15.1(@parcel/core@2.15.1(@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)) + '@parcel/types-internal': 2.15.1 + '@parcel/workers': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/utils@2.14.4': + '@parcel/utils@2.15.1': 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/codeframe': 2.15.1 + '@parcel/diagnostic': 2.15.1 + '@parcel/logger': 2.15.1 + '@parcel/markdown-ansi': 2.15.1 + '@parcel/rust': 2.15.1 '@parcel/source-map': 2.1.1 chalk: 4.1.2 nullthrows: 1.1.1 @@ -2298,125 +2141,123 @@ snapshots: '@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))': + '@parcel/workers@2.15.1(@parcel/core@2.15.1(@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 + '@parcel/core': 2.15.1(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.15.1 + '@parcel/logger': 2.15.1 + '@parcel/profiler': 2.15.1 + '@parcel/types-internal': 2.15.1 + '@parcel/utils': 2.15.1 nullthrows: 1.1.1 transitivePeerDependencies: - napi-wasm - '@rollup/rollup-android-arm-eabi@4.40.0': + '@rollup/rollup-android-arm-eabi@4.40.2': optional: true - '@rollup/rollup-android-arm64@4.40.0': + '@rollup/rollup-android-arm64@4.40.2': optional: true - '@rollup/rollup-darwin-arm64@4.40.0': + '@rollup/rollup-darwin-arm64@4.40.2': optional: true - '@rollup/rollup-darwin-x64@4.40.0': + '@rollup/rollup-darwin-x64@4.40.2': optional: true - '@rollup/rollup-freebsd-arm64@4.40.0': + '@rollup/rollup-freebsd-arm64@4.40.2': optional: true - '@rollup/rollup-freebsd-x64@4.40.0': + '@rollup/rollup-freebsd-x64@4.40.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.40.0': + '@rollup/rollup-linux-arm-musleabihf@4.40.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.40.0': + '@rollup/rollup-linux-arm64-gnu@4.40.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.40.0': + '@rollup/rollup-linux-arm64-musl@4.40.2': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.40.0': + '@rollup/rollup-linux-riscv64-gnu@4.40.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.40.0': + '@rollup/rollup-linux-riscv64-musl@4.40.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.40.0': + '@rollup/rollup-linux-s390x-gnu@4.40.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.40.0': + '@rollup/rollup-linux-x64-gnu@4.40.2': optional: true - '@rollup/rollup-linux-x64-musl@4.40.0': + '@rollup/rollup-linux-x64-musl@4.40.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.40.0': + '@rollup/rollup-win32-arm64-msvc@4.40.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.40.0': + '@rollup/rollup-win32-ia32-msvc@4.40.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.40.0': + '@rollup/rollup-win32-x64-msvc@4.40.2': optional: true - '@sinclair/typebox@0.27.8': {} - - '@swc/core-darwin-arm64@1.11.21': + '@swc/core-darwin-arm64@1.11.24': optional: true - '@swc/core-darwin-x64@1.11.21': + '@swc/core-darwin-x64@1.11.24': optional: true - '@swc/core-linux-arm-gnueabihf@1.11.21': + '@swc/core-linux-arm-gnueabihf@1.11.24': optional: true - '@swc/core-linux-arm64-gnu@1.11.21': + '@swc/core-linux-arm64-gnu@1.11.24': optional: true - '@swc/core-linux-arm64-musl@1.11.21': + '@swc/core-linux-arm64-musl@1.11.24': optional: true - '@swc/core-linux-x64-gnu@1.11.21': + '@swc/core-linux-x64-gnu@1.11.24': optional: true - '@swc/core-linux-x64-musl@1.11.21': + '@swc/core-linux-x64-musl@1.11.24': optional: true - '@swc/core-win32-arm64-msvc@1.11.21': + '@swc/core-win32-arm64-msvc@1.11.24': optional: true - '@swc/core-win32-ia32-msvc@1.11.21': + '@swc/core-win32-ia32-msvc@1.11.24': optional: true - '@swc/core-win32-x64-msvc@1.11.21': + '@swc/core-win32-x64-msvc@1.11.24': optional: true - '@swc/core@1.11.21(@swc/helpers@0.5.17)': + '@swc/core@1.11.24(@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/core-darwin-arm64': 1.11.24 + '@swc/core-darwin-x64': 1.11.24 + '@swc/core-linux-arm-gnueabihf': 1.11.24 + '@swc/core-linux-arm64-gnu': 1.11.24 + '@swc/core-linux-arm64-musl': 1.11.24 + '@swc/core-linux-x64-gnu': 1.11.24 + '@swc/core-linux-x64-musl': 1.11.24 + '@swc/core-win32-arm64-msvc': 1.11.24 + '@swc/core-win32-ia32-msvc': 1.11.24 + '@swc/core-win32-x64-msvc': 1.11.24 '@swc/helpers': 0.5.17 '@swc/counter@0.1.3': {} @@ -2431,54 +2272,55 @@ snapshots: '@types/estree@1.0.7': {} - '@types/node@20.17.30': + '@types/node@22.15.18': dependencies: - undici-types: 6.19.8 + undici-types: 6.21.0 - '@vitest/expect@1.6.1': + '@vitest/expect@3.1.3': dependencies: - '@vitest/spy': 1.6.1 - '@vitest/utils': 1.6.1 - chai: 4.5.0 + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + tinyrainbow: 2.0.0 - '@vitest/runner@1.6.1': + '@vitest/mocker@3.1.3(vite@6.3.5(@types/node@22.15.18)(lightningcss@1.30.1))': dependencies: - '@vitest/utils': 1.6.1 - p-limit: 5.0.0 - pathe: 1.1.2 + '@vitest/spy': 3.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.3.5(@types/node@22.15.18)(lightningcss@1.30.1) - '@vitest/snapshot@1.6.1': + '@vitest/pretty-format@3.1.3': dependencies: - magic-string: 0.30.17 - pathe: 1.1.2 - pretty-format: 29.7.0 + tinyrainbow: 2.0.0 - '@vitest/spy@1.6.1': + '@vitest/runner@3.1.3': dependencies: - tinyspy: 2.2.1 + '@vitest/utils': 3.1.3 + pathe: 2.0.3 - '@vitest/utils@1.6.1': + '@vitest/snapshot@3.1.3': dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 + '@vitest/pretty-format': 3.1.3 + magic-string: 0.30.17 + pathe: 2.0.3 - acorn-walk@8.3.4: + '@vitest/spy@3.1.3': dependencies: - acorn: 8.14.1 + tinyspy: 3.0.2 - acorn@8.14.1: {} + '@vitest/utils@3.1.3': + dependencies: + '@vitest/pretty-format': 3.1.3 + loupe: 3.1.3 + tinyrainbow: 2.0.0 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: {} + assertion-error@2.0.1: {} base-x@3.0.11: dependencies: @@ -2488,37 +2330,31 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.24.4: + browserslist@4.24.5: dependencies: - caniuse-lite: 1.0.30001715 - electron-to-chromium: 1.5.140 + caniuse-lite: 1.0.30001718 + electron-to-chromium: 1.5.155 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.4) + update-browserslist-db: 1.1.3(browserslist@4.24.5) cac@6.7.14: {} - callsites@3.1.0: {} - - caniuse-lite@1.0.30001715: {} + caniuse-lite@1.0.30001718: {} - chai@4.5.0: + chai@5.2.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 + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.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 + check-error@2.1.1: {} chrome-trace-event@1.0.4: {} @@ -2532,121 +2368,64 @@ snapshots: 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: + debug@4.4.1: dependencies: ms: 2.1.3 - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 + deep-eql@5.0.2: {} detect-libc@1.0.3: {} - detect-libc@2.0.3: {} - - diff-sequences@29.6.3: {} + detect-libc@2.0.4: {} 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: {} + electron-to-chromium@1.5.155: {} - env-paths@2.2.1: {} + es-module-lexer@1.7.0: {} - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - esbuild@0.21.5: + esbuild@0.25.4: 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 + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 escalade@3.2.0: {} @@ -2654,148 +2433,87 @@ snapshots: 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 + expect-type@1.2.1: {} + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 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: 9.0.0(typescript@5.8.3) - posthtml: 0.16.6 - timsort: 0.3.0 - optionalDependencies: - postcss: 8.5.3 - transitivePeerDependencies: - - typescript - - htmlparser2@7.2.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 3.0.1 - - htmlparser2@9.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 4.5.0 - - human-signals@5.0.0: {} - - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - is-arrayish@0.2.1: {} - is-extglob@2.1.1: {} is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-json@2.0.1: {} - is-number@7.0.0: {} - is-stream@3.0.0: {} - isexe@2.0.0: {} - js-tokens@4.0.0: {} - - js-tokens@9.0.1: {} - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-parse-even-better-errors@2.3.1: {} - json5@2.2.3: {} - lightningcss-darwin-arm64@1.29.3: + lightningcss-darwin-arm64@1.30.1: optional: true - lightningcss-darwin-x64@1.29.3: + lightningcss-darwin-x64@1.30.1: optional: true - lightningcss-freebsd-x64@1.29.3: + lightningcss-freebsd-x64@1.30.1: optional: true - lightningcss-linux-arm-gnueabihf@1.29.3: + lightningcss-linux-arm-gnueabihf@1.30.1: optional: true - lightningcss-linux-arm64-gnu@1.29.3: + lightningcss-linux-arm64-gnu@1.30.1: optional: true - lightningcss-linux-arm64-musl@1.29.3: + lightningcss-linux-arm64-musl@1.30.1: optional: true - lightningcss-linux-x64-gnu@1.29.3: + lightningcss-linux-x64-gnu@1.30.1: optional: true - lightningcss-linux-x64-musl@1.29.3: + lightningcss-linux-x64-musl@1.30.1: optional: true - lightningcss-win32-arm64-msvc@1.29.3: + lightningcss-win32-arm64-msvc@1.30.1: optional: true - lightningcss-win32-x64-msvc@1.29.3: + lightningcss-win32-x64-msvc@1.30.1: optional: true - lightningcss@1.29.3: + lightningcss@1.30.1: dependencies: - detect-libc: 2.0.3 + detect-libc: 2.0.4 optionalDependencies: - 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: {} + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 lmdb@2.8.5: dependencies: - msgpackr: 1.11.2 + msgpackr: 1.11.3 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.1.1 ordered-binary: 1.5.3 @@ -2808,35 +2526,17 @@ snapshots: '@lmdb/lmdb-linux-x64': 2.8.5 '@lmdb/lmdb-win32-x64': 2.8.5 - local-pkg@0.5.1: - dependencies: - mlly: 1.7.4 - pkg-types: 1.3.1 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 + loupe@3.1.3: {} magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - merge-stream@2.0.0: {} - micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 - mimic-fn@4.0.0: {} - - mlly@1.7.4: - dependencies: - acorn: 8.14.1 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.1 - mri@1.2.0: {} ms@2.1.3: {} @@ -2853,7 +2553,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - msgpackr@1.11.2: + msgpackr@1.11.3: optionalDependencies: msgpackr-extract: 3.0.3 @@ -2865,91 +2565,51 @@ snapshots: node-gyp-build-optional-packages@5.1.1: dependencies: - detect-libc: 2.0.3 + detect-libc: 2.0.4 node-gyp-build-optional-packages@5.2.2: dependencies: - detect-libc: 2.0.3 + detect-libc: 2.0.4 optional: true node-releases@2.0.19: {} - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - nullthrows@1.1.1: {} - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - ordered-binary@1.5.3: {} - p-limit@5.0.0: - dependencies: - yocto-queue: 1.2.1 - - parcel@2.14.4(@swc/helpers@0.5.17)(postcss@8.5.3)(typescript@5.8.3): - dependencies: - '@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 + parcel@2.15.1(@swc/helpers@0.5.17): + dependencies: + '@parcel/config-default': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) + '@parcel/core': 2.15.1(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.15.1 + '@parcel/events': 2.15.1 + '@parcel/feature-flags': 2.15.1 + '@parcel/fs': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/logger': 2.15.1 + '@parcel/package-manager': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) + '@parcel/reporter-cli': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/reporter-dev-server': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/reporter-tracer': 2.15.1(@parcel/core@2.15.1(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.1 chalk: 4.1.2 commander: 12.1.0 get-port: 4.2.0 transitivePeerDependencies: - '@swc/helpers' - - cssnano - napi-wasm - - postcss - - purgecss - - relateurl - - srcset - - svgo - - terser - - typescript - - uncss - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-json@5.2.0: - dependencies: - '@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 path-key@3.1.1: {} - path-key@4.0.0: {} - - pathe@1.1.2: {} - pathe@2.0.3: {} - pathval@1.1.1: {} + pathval@2.0.0: {} picocolors@1.1.1: {} picomatch@2.3.1: {} - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.7.4 - pathe: 2.0.3 + picomatch@4.0.2: {} postcss-value-parser@4.2.0: {} @@ -2959,66 +2619,39 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - posthtml-parser@0.11.0: - dependencies: - htmlparser2: 7.2.0 - - posthtml-parser@0.12.1: - dependencies: - htmlparser2: 9.1.0 - - posthtml-render@3.0.0: - dependencies: - is-json: 2.0.1 - - posthtml@0.16.6: - dependencies: - posthtml-parser: 0.11.0 - posthtml-render: 3.0.0 - - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - - react-is@18.3.1: {} - react-refresh@0.16.0: {} regenerator-runtime@0.14.1: {} - resolve-from@4.0.0: {} - - rollup@4.40.0: + rollup@4.40.2: dependencies: '@types/estree': 1.0.7 optionalDependencies: - '@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 + '@rollup/rollup-android-arm-eabi': 4.40.2 + '@rollup/rollup-android-arm64': 4.40.2 + '@rollup/rollup-darwin-arm64': 4.40.2 + '@rollup/rollup-darwin-x64': 4.40.2 + '@rollup/rollup-freebsd-arm64': 4.40.2 + '@rollup/rollup-freebsd-x64': 4.40.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 + '@rollup/rollup-linux-arm-musleabihf': 4.40.2 + '@rollup/rollup-linux-arm64-gnu': 4.40.2 + '@rollup/rollup-linux-arm64-musl': 4.40.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-musl': 4.40.2 + '@rollup/rollup-linux-s390x-gnu': 4.40.2 + '@rollup/rollup-linux-x64-gnu': 4.40.2 + '@rollup/rollup-linux-x64-musl': 4.40.2 + '@rollup/rollup-win32-arm64-msvc': 4.40.2 + '@rollup/rollup-win32-ia32-msvc': 4.40.2 + '@rollup/rollup-win32-x64-msvc': 4.40.2 fsevents: 2.3.3 safe-buffer@5.2.1: {} - semver@7.7.1: {} + semver@7.7.2: {} shebang-command@2.0.0: dependencies: @@ -3028,39 +2661,36 @@ snapshots: siginfo@2.0.0: {} - signal-exit@4.1.0: {} - source-map-js@1.2.1: {} spawn-please@3.0.0: dependencies: cross-spawn: 7.0.6 - srcset@4.0.0: {} - stackback@0.0.2: {} std-env@3.9.0: {} - strip-final-newline@3.0.0: {} - - strip-literal@2.1.1: - dependencies: - js-tokens: 9.0.1 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 term-size@2.2.1: {} - timsort@0.3.0: {} - tinybench@2.9.0: {} - tinypool@0.8.4: {} + tinyexec@0.3.2: {} - tinyspy@2.2.1: {} + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} to-regex-range@5.0.1: dependencies: @@ -3068,33 +2698,32 @@ snapshots: tslib@2.8.1: {} - type-detect@4.1.0: {} + tunnel@0.0.6: {} type-fest@0.20.2: {} typescript@5.8.3: {} - ufo@1.6.1: {} - - undici-types@6.19.8: {} + undici-types@6.21.0: {} - update-browserslist-db@1.1.3(browserslist@4.24.4): + update-browserslist-db@1.1.3(browserslist@4.24.5): dependencies: - browserslist: 4.24.4 + browserslist: 4.24.5 escalade: 3.2.0 picocolors: 1.1.1 utility-types@3.11.0: {} - vite-node@1.6.1(@types/node@20.17.30)(lightningcss@1.29.3): + vite-node@3.1.3(@types/node@22.15.18)(lightningcss@1.30.1): dependencies: cac: 6.7.14 - debug: 4.4.0 - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.4.18(@types/node@20.17.30)(lightningcss@1.29.3) + debug: 4.4.1 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 6.3.5(@types/node@22.15.18)(lightningcss@1.30.1) transitivePeerDependencies: - '@types/node' + - jiti - less - lightningcss - sass @@ -3103,50 +2732,60 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml - vite@5.4.18(@types/node@20.17.30)(lightningcss@1.29.3): + vite@6.3.5(@types/node@22.15.18)(lightningcss@1.30.1): dependencies: - esbuild: 0.21.5 + esbuild: 0.25.4 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 postcss: 8.5.3 - rollup: 4.40.0 + rollup: 4.40.2 + tinyglobby: 0.2.13 optionalDependencies: - '@types/node': 20.17.30 + '@types/node': 22.15.18 fsevents: 2.3.3 - 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.1 + lightningcss: 1.30.1 + + vitest@3.1.3(@types/node@22.15.18)(lightningcss@1.30.1): + dependencies: + '@vitest/expect': 3.1.3 + '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@22.15.18)(lightningcss@1.30.1)) + '@vitest/pretty-format': 3.1.3 + '@vitest/runner': 3.1.3 + '@vitest/snapshot': 3.1.3 + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + debug: 4.4.1 + expect-type: 1.2.1 magic-string: 0.30.17 - pathe: 1.1.2 - picocolors: 1.1.1 + pathe: 2.0.3 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) + tinyexec: 0.3.2 + tinyglobby: 0.2.13 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.3.5(@types/node@22.15.18)(lightningcss@1.30.1) + vite-node: 3.1.3(@types/node@22.15.18)(lightningcss@1.30.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.17.30 + '@types/node': 22.15.18 transitivePeerDependencies: + - jiti - less - lightningcss + - msw - sass - sass-embedded - stylus - sugarss - supports-color - terser + - tsx + - yaml vscode-languageserver-textdocument@1.0.12: {} @@ -3162,5 +2801,3 @@ snapshots: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - - yocto-queue@1.2.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..37fcd4b --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,6 @@ +onlyBuiltDependencies: + - '@parcel/watcher' + - '@swc/core' + - esbuild + - lmdb + - msgpackr-extract diff --git a/src/extract-cache.ts b/src/extract-cache.ts index 8dc57ec..fece239 100644 --- a/src/extract-cache.ts +++ b/src/extract-cache.ts @@ -1,4 +1,4 @@ -import fs from 'fs/promises'; +import { promises as fs } from 'fs'; import path from 'path'; import {CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath, getBuilder} from './opts.js'; import { run, runPiped } from './run.js'; @@ -52,7 +52,7 @@ export async function extractCaches(opts: Opts) { return; } - const cacheMap = getCacheMap(opts); + const cacheMap = await getCacheMap(opts); const scratchDir = opts['scratch-dir']; const containerImage = opts['utility-image']; const builder = getBuilder(opts); diff --git a/src/index.ts b/src/index.ts index 138ddc7..a2a1ff4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -import fs from "fs/promises"; +import { promises as fs } from "fs"; import os from "os"; import { injectCaches } from "./inject-cache.js"; import { extractCaches } from "./extract-cache.js"; @@ -23,12 +23,11 @@ async function main(args: string[]) { } } -try { - await main(process.argv); -} catch (err) { - console.error(err); - if (err instanceof Error) { - console.error(err.stack); - } - process.exit(1); -} +main(process.argv) + .catch(err => { + console.error(err); + if (err instanceof Error) { + console.error(err.stack); + } + process.exit(1); + }); diff --git a/src/inject-cache.ts b/src/inject-cache.ts index ed45958..26a68b0 100644 --- a/src/inject-cache.ts +++ b/src/inject-cache.ts @@ -1,8 +1,8 @@ -import fs from 'fs/promises'; +import { promises as fs } from "fs"; import path from 'path'; import { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath, getUID, getGID, getBuilder } from './opts.js'; import { run } from './run.js'; -import { notice } from '@actions/core'; +import { notice } from '@actions/core/lib/core.js'; async function injectCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string, containerImage: string, builder: string) { // Clean Scratch Directory @@ -52,7 +52,7 @@ RUN --mount=${mountArgs} \ export async function injectCaches(opts: Opts) { - const cacheMap = getCacheMap(opts); + const cacheMap = await getCacheMap(opts); const scratchDir = opts['scratch-dir']; const containerImage = opts['utility-image']; diff --git a/src/opts.ts b/src/opts.ts index 59ad710..5619716 100644 --- a/src/opts.ts +++ b/src/opts.ts @@ -1,6 +1,6 @@ import mri from 'mri'; -import fs from 'fs'; -import { getInput, warning } from '@actions/core'; +import { promises as fs } from 'fs'; +import { getInput, warning } from '@actions/core/lib/core.js'; import { DockerfileParser, ModifiableInstruction } from 'dockerfile-ast'; export type Opts = { @@ -72,8 +72,8 @@ 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"); +async function getCacheMapFromDockerfile(dockerfilePath: string): Promise { + const dockerfileContent = await fs.readFile(dockerfilePath, "utf-8"); const dockerfile = DockerfileParser.parse(dockerfileContent); const cacheMap: CacheMap = {}; @@ -104,7 +104,7 @@ function getCacheMapFromDockerfile(dockerfilePath: string): CacheMap { return cacheMap; } -export function getCacheMap(opts: Opts): CacheMap { +export async function getCacheMap(opts: Opts): Promise { try { const cacheMap = JSON.parse(opts["cache-map"]) as CacheMap; if (Object.keys(cacheMap).length !== 0) { @@ -112,7 +112,7 @@ export function getCacheMap(opts: Opts): CacheMap { } console.log(`No cache map provided. Trying to parse the Dockerfile to find the cache mount instructions...`); - const cacheMapFromDockerfile = getCacheMapFromDockerfile(opts["dockerfile"]); + const cacheMapFromDockerfile = await getCacheMapFromDockerfile(opts["dockerfile"]); console.log(`Cache map parsed from Dockerfile: ${JSON.stringify(cacheMapFromDockerfile)}`); return cacheMapFromDockerfile; } catch (e) { diff --git a/tests/fixtures/import/Dockerfile b/tests/fixtures/import/Dockerfile new file mode 100644 index 0000000..2de5b2e --- /dev/null +++ b/tests/fixtures/import/Dockerfile @@ -0,0 +1,5 @@ +FROM busybox:latest +RUN \ + --mount=type=cache,target=./tests/fixture/cache,sharing=locked \ + echo "Hello, world!" > /tests/fixture/cache/hello.txt + diff --git a/tests/import.test.ts b/tests/import.test.ts new file mode 100644 index 0000000..875106c --- /dev/null +++ b/tests/import.test.ts @@ -0,0 +1,9 @@ +import { describe, it } from "vitest" + +describe("import", () => { + it("buildkit-cache-dance should be able to run", async () => { + process.chdir("./tests/fixtures/import") + await import("../dist/index.js") + }) +}) + diff --git a/tests/opts.test.ts b/tests/opts.test.ts index ca783ad..5ee0c24 100644 --- a/tests/opts.test.ts +++ b/tests/opts.test.ts @@ -1,6 +1,6 @@ import { expect, test } from 'vitest' import { getCacheMap, getTargetPath, getMountArgsString, parseOpts, getUID, getGID } from '../src/opts.js' -import fs from 'fs' +import { promises as fs } from 'fs' test('parseOpts with no arguments', () => { const opts = parseOpts([]) @@ -116,22 +116,22 @@ test('parseOpts with help argument', () => { }) }) -test('getCacheMap', () => { +test('getCacheMap', async () => { const opts = parseOpts(['--cache-map', '{"key": "value"}']) - const cacheMap = getCacheMap(opts) + const cacheMap = await getCacheMap(opts) expect(cacheMap).toEqual({ key: 'value' }) }) -test('getCacheMap with both cache-map and dockerfile specified', () => { +test('getCacheMap with both cache-map and dockerfile specified', async () => { const opts = parseOpts(['--cache-map', '{"key": "value"}', '--dockerfile', 'Dockerfile.custom']) - const cacheMap = getCacheMap(opts) + const cacheMap = await getCacheMap(opts) expect(cacheMap).toEqual({ key: 'value' }) }) -test('getCacheMapFromDockerfile', () => { - const tmpDir = fs.mkdtempSync('/tmp/dockerfile-test-'); +test('getCacheMapFromDockerfile', async () => { + const tmpDir = await fs.mkdtemp('/tmp/dockerfile-test-'); const dockerfilePath = `${tmpDir}/Dockerfile` - fs.writeFileSync(dockerfilePath, ` + await fs.writeFile(dockerfilePath, ` FROM alpine:latest AS builder # Target absolute path, no id @@ -157,8 +157,8 @@ RUN --mount=type=cache,id=cache3,target=cache \ `); const opts = parseOpts(['--dockerfile', dockerfilePath]) - const cacheMap = getCacheMap(opts) - fs.rmSync(tmpDir, { recursive: true }) + const cacheMap = await getCacheMap(opts) + await fs.rm(tmpDir, { recursive: true }) expect(cacheMap).toEqual( { @@ -182,9 +182,9 @@ RUN --mount=type=cache,id=cache3,target=cache \ ) }) -test('getCacheMap with invalid JSON', () => { +test('getCacheMap with invalid JSON', async() => { const opts = parseOpts(['--cache-map', 'invalid']) - expect(() => getCacheMap(opts)).toThrowError() + await expect(getCacheMap(opts)).rejects.toThrowError() }) test('getTargetPath with string', () => {