@sebbo2002/semantic-release-docker 4.0.4-develop.1 → 5.0.0-develop.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-FVZP6H4N.js +2 -0
- package/dist/chunk-FVZP6H4N.js.map +1 -0
- package/dist/chunk-HZTPMISB.js +433 -0
- package/dist/chunk-HZTPMISB.js.map +1 -0
- package/dist/chunk-S57FL4TE.js +2 -0
- package/dist/chunk-S57FL4TE.js.map +1 -0
- package/dist/index.js +153 -1
- package/dist/index.js.map +1 -1
- package/dist/marked-terminal-SHV2B2TA.js +47 -0
- package/dist/marked-terminal-SHV2B2TA.js.map +1 -0
- package/dist/typescript-VGEEVQW5.js +2 -0
- package/dist/typescript-VGEEVQW5.js.map +1 -0
- package/package.json +8 -8
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/index.ts"],"sourcesContent":["import { PublishContext } from 'semantic-release';\nimport {\n MajorAndMinorPart,\n NormalizedPluginConfigTags,\n NormalizedPluginConfig,\n PluginConfig,\n PluginConfigTagKeys,\n TagTask,\n PublishResponse\n} from './types.js';\nimport { execa } from 'execa';\n\nexport {\n PluginConfig,\n NormalizedPluginConfigTags,\n NormalizedPluginConfig,\n PluginConfigTagKeys,\n MajorAndMinorPart,\n TagTask\n};\n\nlet IS_REGCTL_AVAILABLE: boolean | undefined = undefined;\n\nexport function parseConfig (config: PluginConfig): NormalizedPluginConfig {\n const result: NormalizedPluginConfig = {\n images: [],\n tag: {\n latest: true,\n major: true,\n minor: true,\n version: true,\n channel: true\n }\n };\n\n if (typeof config.images === 'string') {\n result.images.push(config.images);\n } else if (Array.isArray(config.images)) {\n config.images\n .filter(image => typeof image === 'string')\n .forEach(image => result.images.push(image));\n } else {\n throw new Error('Configuration invalid: No image defined!');\n }\n\n const tagNames = Object.keys(result.tag) as PluginConfigTagKeys[];\n tagNames.forEach(name => {\n const value = config.tag ? config.tag[name] : undefined;\n if (value === true || value === false) {\n result.tag[name] = value;\n }\n });\n\n return result;\n}\n\nexport function getBaseImage (input: string): string {\n let p = input.split('@')[0].split(':');\n\n // it's a \":port\"\n if (p[1] && p[1].includes('/')) {\n p = [p[0] + ':' + p[1], p[2]];\n }\n\n return p[0];\n}\n\nexport function isPreRelease (context: PublishContext): boolean {\n return Boolean(context.nextRelease && context.nextRelease.version.includes('-'));\n}\n\nexport function getMajorAndMinorPart (version: string | undefined): MajorAndMinorPart {\n if (!version) {\n return {\n major: null,\n minor: null\n };\n }\n\n const parts = version.split('.', 2);\n return {\n major: parts[0],\n minor: parts[1]\n };\n}\n\nexport function getTagTasks (config: NormalizedPluginConfig, context: PublishContext): TagTask[] {\n const result: TagTask[] = [];\n\n if (!context.nextRelease) {\n return [];\n }\n\n const version = context.nextRelease.version;\n config.images.forEach(input => {\n const outputBase = getBaseImage(input);\n\n // version\n if (config.tag.version && version) {\n result.push({\n input,\n output: `${outputBase}:${version}`\n });\n }\n\n if (!isPreRelease(context)) {\n const { major, minor } = getMajorAndMinorPart(version);\n\n // latest\n if (config.tag.latest) {\n result.push({\n input,\n output: `${outputBase}:latest`\n });\n }\n\n // major\n if (config.tag.major && major) {\n result.push({\n input,\n output: `${outputBase}:${major}`\n });\n }\n\n // minor\n if (config.tag.minor && major && minor) {\n result.push({\n input,\n output: `${outputBase}:${major}.${minor}`\n });\n }\n }\n\n // channel\n const channel = context.nextRelease?.channel;\n if (config.tag.channel && channel) {\n result.push({\n input,\n output: `${outputBase}:${channel}`\n });\n }\n });\n\n return result;\n}\n\nexport function getUrlFromImage (image: string): string | undefined {\n const parts = getBaseImage(image).split('/');\n if (parts[0] === 'ghcr.io' && parts.length === 3) {\n return `https://github.com/${parts[1]}/${parts[2]}/pkgs/container/${parts[2]}`;\n }\n if (parts[0] === 'registry.gitlab.com' && parts.length >= 3) {\n return `https://gitlab.com/${parts[1]}/${parts[2]}/container_registry`;\n }\n\n const couldBeAHostname = parts[0].includes('.');\n if (!couldBeAHostname && parts.length === 2) {\n return `https://hub.docker.com/r/${parts[0]}/${parts[1]}/tags`;\n }\n if (!couldBeAHostname && parts.length === 1) {\n return `https://hub.docker.com/_/${parts[0]}/tags`;\n }\n}\n\nexport async function exec (file: string, args: string[]): Promise<void> {\n try {\n await execa(file, args);\n } catch (error) {\n if (typeof error === 'object' && error !== null && 'command' in error && 'message' in error) {\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n throw new Error(`Unable to run \"${error.command}\": ${error.message}`);\n } else {\n throw new Error(`Unable to run \"${args.join(' ')}\": ${error}`);\n }\n }\n}\n\nexport async function isRegCtlAvailable (): Promise<boolean> {\n if(IS_REGCTL_AVAILABLE !== undefined) {\n return IS_REGCTL_AVAILABLE;\n }\n\n try {\n await execa('which', ['regctl']);\n IS_REGCTL_AVAILABLE = true;\n return true;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n catch(error) {\n IS_REGCTL_AVAILABLE = false;\n return false;\n }\n}\n\nexport async function tagImage (input: string, output: string): Promise<void> {\n await exec('docker', ['tag', input, output]);\n}\n\nexport async function pushImage (image: string): Promise<void> {\n await exec('docker', ['push', image]);\n}\n\nexport async function copyImage (input: string, output: string): Promise<void> {\n await exec('regctl', ['image', 'copy', input, output]);\n}\n\nexport async function publish (pluginConfig: PluginConfig, context: PublishContext): Promise<boolean | PublishResponse> {\n if (!context.nextRelease) {\n context.logger.log('No release schedules, so no images to tag.');\n return false;\n }\n\n const config = parseConfig(pluginConfig);\n const tasks = getTagTasks(config, context);\n if (!tasks.length) {\n return false;\n }\n\n for (const task of tasks) {\n if(await isRegCtlAvailable()) {\n context.logger.log(`Copy with regctl ${task.input} → ${task.output}`);\n\n try {\n await copyImage(task.input, task.output);\n continue;\n }\n catch(error) {\n context.logger.error(error);\n context.logger.log('Retry without regctl…');\n }\n }\n\n context.logger.log(`Tag ${task.input} → ${task.output}`);\n await tagImage(task.input, task.output);\n\n context.logger.log(`Push ${task.output}`);\n await pushImage(task.output);\n }\n\n const channel = context.nextRelease?.channel;\n const firstTask = tasks[0];\n return {\n name: `Docker container (${firstTask.output})`,\n url: getUrlFromImage(firstTask.output),\n channel\n };\n}\n\nexport default {\n publish\n};\n"],"mappings":"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","names":["execa","IS_REGCTL_AVAILABLE","parseConfig","config","result","image","name","value","getBaseImage","input","p","isPreRelease","context","getMajorAndMinorPart","version","parts","getTagTasks","outputBase","major","minor","channel","getUrlFromImage","couldBeAHostname","exec","file","args","execa","error","isRegCtlAvailable","tagImage","output","pushImage","copyImage","publish","pluginConfig","tasks","task","firstTask","lib_default"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/semver/internal/constants.js","../node_modules/semver/internal/debug.js","../node_modules/semver/internal/re.js","../node_modules/semver/internal/parse-options.js","../node_modules/semver/internal/identifiers.js","../node_modules/semver/classes/semver.js","../node_modules/semver/functions/parse.js","../node_modules/semver/functions/valid.js","../node_modules/semver/functions/clean.js","../node_modules/semver/functions/inc.js","../node_modules/semver/functions/diff.js","../node_modules/semver/functions/major.js","../node_modules/semver/functions/minor.js","../node_modules/semver/functions/patch.js","../node_modules/semver/functions/prerelease.js","../node_modules/semver/functions/compare.js","../node_modules/semver/functions/rcompare.js","../node_modules/semver/functions/compare-loose.js","../node_modules/semver/functions/compare-build.js","../node_modules/semver/functions/sort.js","../node_modules/semver/functions/rsort.js","../node_modules/semver/functions/gt.js","../node_modules/semver/functions/lt.js","../node_modules/semver/functions/eq.js","../node_modules/semver/functions/neq.js","../node_modules/semver/functions/gte.js","../node_modules/semver/functions/lte.js","../node_modules/semver/functions/cmp.js","../node_modules/semver/functions/coerce.js","../node_modules/semver/internal/lrucache.js","../node_modules/semver/classes/range.js","../node_modules/semver/classes/comparator.js","../node_modules/semver/functions/satisfies.js","../node_modules/semver/ranges/to-comparators.js","../node_modules/semver/ranges/max-satisfying.js","../node_modules/semver/ranges/min-satisfying.js","../node_modules/semver/ranges/min-version.js","../node_modules/semver/ranges/valid.js","../node_modules/semver/ranges/outside.js","../node_modules/semver/ranges/gtr.js","../node_modules/semver/ranges/ltr.js","../node_modules/semver/ranges/intersects.js","../node_modules/semver/ranges/simplify.js","../node_modules/semver/ranges/subset.js","../node_modules/semver/index.js","../node_modules/js-tokens/index.js","../node_modules/@babel/helper-validator-identifier/src/identifier.ts","../node_modules/@babel/helper-validator-identifier/src/keyword.ts","../node_modules/@babel/helper-validator-identifier/src/index.ts","../node_modules/@babel/highlight/node_modules/escape-string-regexp/index.js","../node_modules/@babel/highlight/node_modules/color-name/index.js","../node_modules/@babel/highlight/node_modules/color-convert/conversions.js","../node_modules/@babel/highlight/node_modules/color-convert/route.js","../node_modules/@babel/highlight/node_modules/color-convert/index.js","../node_modules/@babel/highlight/node_modules/ansi-styles/index.js","../node_modules/@babel/highlight/node_modules/has-flag/index.js","../node_modules/@babel/highlight/node_modules/supports-color/index.js","../node_modules/@babel/highlight/node_modules/chalk/templates.js","../node_modules/@babel/highlight/node_modules/chalk/index.js","../node_modules/@babel/highlight/src/index.ts","../node_modules/@babel/code-frame/node_modules/escape-string-regexp/index.js","../node_modules/@babel/code-frame/node_modules/color-name/index.js","../node_modules/@babel/code-frame/node_modules/color-convert/conversions.js","../node_modules/@babel/code-frame/node_modules/color-convert/route.js","../node_modules/@babel/code-frame/node_modules/color-convert/index.js","../node_modules/@babel/code-frame/node_modules/ansi-styles/index.js","../node_modules/@babel/code-frame/node_modules/has-flag/index.js","../node_modules/@babel/code-frame/node_modules/supports-color/index.js","../node_modules/@babel/code-frame/node_modules/chalk/templates.js","../node_modules/@babel/code-frame/node_modules/chalk/index.js","../node_modules/@babel/code-frame/src/index.ts","../node_modules/resolve-from/index.js","../node_modules/callsites/index.js","../node_modules/parent-module/index.js","../node_modules/import-fresh/index.js","../node_modules/is-arrayish/index.js","../node_modules/error-ex/index.js","../node_modules/json-parse-even-better-errors/index.js","../node_modules/lines-and-columns/dist/index.mjs","../node_modules/parse-json/index.js","../node_modules/js-yaml/lib/common.js","../node_modules/js-yaml/lib/exception.js","../node_modules/js-yaml/lib/snippet.js","../node_modules/js-yaml/lib/type.js","../node_modules/js-yaml/lib/schema.js","../node_modules/js-yaml/lib/type/str.js","../node_modules/js-yaml/lib/type/seq.js","../node_modules/js-yaml/lib/type/map.js","../node_modules/js-yaml/lib/schema/failsafe.js","../node_modules/js-yaml/lib/type/null.js","../node_modules/js-yaml/lib/type/bool.js","../node_modules/js-yaml/lib/type/int.js","../node_modules/js-yaml/lib/type/float.js","../node_modules/js-yaml/lib/schema/json.js","../node_modules/js-yaml/lib/schema/core.js","../node_modules/js-yaml/lib/type/timestamp.js","../node_modules/js-yaml/lib/type/merge.js","../node_modules/js-yaml/lib/type/binary.js","../node_modules/js-yaml/lib/type/omap.js","../node_modules/js-yaml/lib/type/pairs.js","../node_modules/js-yaml/lib/type/set.js","../node_modules/js-yaml/lib/schema/default.js","../node_modules/js-yaml/lib/loader.js","../node_modules/js-yaml/lib/dumper.js","../node_modules/js-yaml/index.js","../node_modules/cosmiconfig/src/loaders.ts","../node_modules/cosmiconfig/src/defaults.ts","../node_modules/env-paths/index.js","../node_modules/cosmiconfig/src/util.ts","../node_modules/cosmiconfig/src/ExplorerBase.ts","../node_modules/cosmiconfig/src/merge.ts","../node_modules/cosmiconfig/src/Explorer.ts","../node_modules/cosmiconfig/src/ExplorerSync.ts","../node_modules/cosmiconfig/src/index.ts","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/browser.js","../node_modules/debug/src/node.js","../node_modules/debug/src/index.js","../node_modules/process-nextick-args/index.js","../node_modules/isarray/index.js","../node_modules/readable-stream/lib/internal/streams/stream.js","../node_modules/safe-buffer/index.js","../node_modules/core-util-is/lib/util.js","../node_modules/inherits/inherits_browser.js","../node_modules/inherits/inherits.js","../node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/util-deprecate/node.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/readable.js","../node_modules/xtend/immutable.js","../node_modules/through2/through2.js","../node_modules/split2/index.js","../node_modules/traverse/index.js","../node_modules/git-log-parser/src/fields.js","../node_modules/argv-formatter/src/index.js","../node_modules/duplexer2/index.js","../node_modules/stream-combiner2/index.js","../node_modules/spawn-error-forwarder/src/index.js","../node_modules/git-log-parser/src/index.js","../node_modules/get-stream/buffer-stream.js","../node_modules/get-stream/index.js","../node_modules/semantic-release/node_modules/resolve-from/index.js","../node_modules/lru-cache/src/index.ts","../node_modules/hosted-git-info/lib/hosts.js","../node_modules/hosted-git-info/lib/parse-url.js","../node_modules/hosted-git-info/lib/from-url.js","../node_modules/hosted-git-info/lib/index.js","../node_modules/braces/lib/utils.js","../node_modules/braces/lib/stringify.js","../node_modules/is-number/index.js","../node_modules/to-regex-range/index.js","../node_modules/fill-range/index.js","../node_modules/braces/lib/compile.js","../node_modules/braces/lib/expand.js","../node_modules/braces/lib/constants.js","../node_modules/braces/lib/parse.js","../node_modules/braces/index.js","../node_modules/picomatch/lib/constants.js","../node_modules/picomatch/lib/utils.js","../node_modules/picomatch/lib/scan.js","../node_modules/picomatch/lib/parse.js","../node_modules/picomatch/lib/picomatch.js","../node_modules/picomatch/index.js","../node_modules/micromatch/index.js","../node_modules/signale/node_modules/escape-string-regexp/index.js","../node_modules/signale/node_modules/color-name/index.js","../node_modules/signale/node_modules/color-convert/conversions.js","../node_modules/signale/node_modules/color-convert/route.js","../node_modules/signale/node_modules/color-convert/index.js","../node_modules/signale/node_modules/ansi-styles/index.js","../node_modules/signale/node_modules/has-flag/index.js","../node_modules/signale/node_modules/supports-color/index.js","../node_modules/signale/node_modules/chalk/templates.js","../node_modules/signale/node_modules/chalk/index.js","../node_modules/signale/node_modules/figures/index.js","../node_modules/pkg-conf/node_modules/path-exists/index.js","../node_modules/pkg-conf/node_modules/p-try/index.js","../node_modules/pkg-conf/node_modules/p-limit/index.js","../node_modules/pkg-conf/node_modules/p-locate/index.js","../node_modules/pkg-conf/node_modules/locate-path/index.js","../node_modules/pkg-conf/node_modules/find-up/index.js","../node_modules/graceful-fs/polyfills.js","../node_modules/graceful-fs/legacy-streams.js","../node_modules/graceful-fs/clone.js","../node_modules/graceful-fs/graceful-fs.js","../node_modules/strip-bom/index.js","../node_modules/json-parse-better-errors/index.js","../node_modules/load-json-file/node_modules/parse-json/index.js","../node_modules/pify/index.js","../node_modules/load-json-file/index.js","../node_modules/pkg-conf/index.js","../node_modules/signale/package.json","../node_modules/signale/types.js","../node_modules/signale/signale.js","../node_modules/signale/index.js","../node_modules/semantic-release/index.js","../node_modules/semantic-release/node_modules/marked/src/defaults.ts","../node_modules/semantic-release/node_modules/marked/src/helpers.ts","../node_modules/semantic-release/node_modules/marked/src/Tokenizer.ts","../node_modules/semantic-release/node_modules/marked/src/rules.ts","../node_modules/semantic-release/node_modules/marked/src/Lexer.ts","../node_modules/semantic-release/node_modules/marked/src/Renderer.ts","../node_modules/semantic-release/node_modules/marked/src/TextRenderer.ts","../node_modules/semantic-release/node_modules/marked/src/Parser.ts","../node_modules/semantic-release/node_modules/marked/src/Hooks.ts","../node_modules/semantic-release/node_modules/marked/src/Instance.ts","../node_modules/semantic-release/node_modules/marked/src/marked.ts","../node_modules/env-ci/lib/git.js","../node_modules/semantic-release/lib/get-config.js","../node_modules/import-from-esm/index.js","../node_modules/import-meta-resolve/lib/resolve.js","../node_modules/import-meta-resolve/lib/get-format.js","../node_modules/import-meta-resolve/lib/package-json-reader.js","../node_modules/import-meta-resolve/lib/errors.js","../node_modules/semantic-release/lib/git.js","../node_modules/semantic-release/lib/utils.js","../node_modules/semantic-release/lib/definitions/errors.js","../node_modules/semantic-release/lib/plugins/utils.js","../node_modules/semantic-release/lib/plugins/normalize.js","../node_modules/semantic-release/lib/get-next-version.js","../node_modules/semantic-release/lib/get-commits.js","../node_modules/semantic-release/lib/get-last-release.js","../node_modules/semantic-release/lib/get-release-to-add.js","../node_modules/semver-diff/index.js","../node_modules/semantic-release/lib/get-git-auth-url.js","../node_modules/p-each-series/index.js","../node_modules/semantic-release/lib/definitions/branches.js","../node_modules/semantic-release/lib/branches/expand.js","../node_modules/semantic-release/lib/branches/get-tags.js","../node_modules/semantic-release/lib/get-logger.js","../src/lib/index.ts"],"sourcesContent":["// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n var token = {type: \"invalid\", value: match[0], closed: undefined}\n if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n else if (match[ 5]) token.type = \"comment\"\n else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n else if (match[ 8]) token.type = \"regex\"\n else if (match[ 9]) token.type = \"number\"\n else if (match[10]) token.type = \"name\"\n else if (match[11]) token.type = \"punctuator\"\n else if (match[12]) token.type = \"whitespace\"\n return token\n}\n","import * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.js`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.js`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,4026,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,757,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,81,2,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,9,5351,0,7,14,13835,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,983,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n","const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n","export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword.ts\";\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\nconst ansiStyles = require('ansi-styles');\nconst stdoutColor = require('supports-color').stdout;\n\nconst template = require('./templates.js');\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports.default = module.exports; // For TypeScript\n","/// <reference path=\"../../../lib/third-party-libs.d.ts\" />\n\nimport type { Token as JSToken, JSXToken } from \"js-tokens\";\nimport jsTokens from \"js-tokens\";\n\nimport {\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nimport chalk, { Chalk as ChalkClass, type ChalkInstance as Chalk } from \"chalk\";\n\n/**\n * Names that are always allowed as identifiers, but also appear as keywords\n * within certain syntactic productions.\n *\n * https://tc39.es/ecma262/#sec-keywords-and-reserved-words\n *\n * `target` has been omitted since it is very likely going to be a false\n * positive.\n */\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\ntype InternalTokenType =\n | \"keyword\"\n | \"capitalized\"\n | \"jsxIdentifier\"\n | \"punctuator\"\n | \"number\"\n | \"string\"\n | \"regex\"\n | \"comment\"\n | \"invalid\";\n\ntype Token = {\n type: InternalTokenType | \"uncolored\";\n value: string;\n};\n/**\n * Chalk styles for token types.\n */\nfunction getDefs(chalk: Chalk): Record<InternalTokenType, Chalk> {\n return {\n keyword: chalk.cyan,\n capitalized: chalk.yellow,\n jsxIdentifier: chalk.yellow,\n punctuator: chalk.yellow,\n number: chalk.magenta,\n string: chalk.green,\n regex: chalk.magenta,\n comment: chalk.grey,\n invalid: chalk.white.bgRed.bold,\n };\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * RegExp to test for the three types of brackets.\n */\nconst BRACKET = /^[()[\\]{}]$/;\n\nlet tokenize: (\n text: string,\n) => Generator<{ type: InternalTokenType | \"uncolored\"; value: string }>;\n\nif (process.env.BABEL_8_BREAKING) {\n /**\n * Get the type of token, specifying punctuator type.\n */\n const getTokenType = function (\n token: JSToken | JSXToken,\n ): InternalTokenType | \"uncolored\" {\n if (token.type === \"IdentifierName\") {\n if (\n isKeyword(token.value) ||\n isStrictReservedWord(token.value, true) ||\n sometimesKeywords.has(token.value)\n ) {\n return \"keyword\";\n }\n\n if (token.value[0] !== token.value[0].toLowerCase()) {\n return \"capitalized\";\n }\n }\n\n if (token.type === \"Punctuator\" && BRACKET.test(token.value)) {\n return \"uncolored\";\n }\n\n if (token.type === \"Invalid\" && token.value === \"@\") {\n return \"punctuator\";\n }\n\n switch (token.type) {\n case \"NumericLiteral\":\n return \"number\";\n\n case \"StringLiteral\":\n case \"JSXString\":\n case \"NoSubstitutionTemplate\":\n return \"string\";\n\n case \"RegularExpressionLiteral\":\n return \"regex\";\n\n case \"Punctuator\":\n case \"JSXPunctuator\":\n return \"punctuator\";\n\n case \"MultiLineComment\":\n case \"SingleLineComment\":\n return \"comment\";\n\n case \"Invalid\":\n case \"JSXInvalid\":\n return \"invalid\";\n\n case \"JSXIdentifier\":\n return \"jsxIdentifier\";\n\n default:\n return \"uncolored\";\n }\n };\n\n /**\n * Turn a string of JS into an array of objects.\n */\n tokenize = function* (text: string): Generator<Token> {\n for (const token of jsTokens(text, { jsx: true })) {\n switch (token.type) {\n case \"TemplateHead\":\n yield { type: \"string\", value: token.value.slice(0, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateMiddle\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateTail\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1) };\n break;\n\n default:\n yield {\n type: getTokenType(token),\n value: token.value,\n };\n }\n }\n };\n} else {\n /**\n * RegExp to test for what seems to be a JSX tag name.\n */\n const JSX_TAG = /^[a-z][\\w-]*$/i;\n\n // The token here is defined in js-tokens@4. However we don't bother\n // typing it since the whole block will be removed in Babel 8\n const getTokenType = function (token: any, offset: number, text: string) {\n if (token.type === \"name\") {\n if (\n isKeyword(token.value) ||\n isStrictReservedWord(token.value, true) ||\n sometimesKeywords.has(token.value)\n ) {\n return \"keyword\";\n }\n\n if (\n JSX_TAG.test(token.value) &&\n (text[offset - 1] === \"<\" || text.slice(offset - 2, offset) == \"</\")\n ) {\n return \"jsxIdentifier\";\n }\n\n if (token.value[0] !== token.value[0].toLowerCase()) {\n return \"capitalized\";\n }\n }\n\n if (token.type === \"punctuator\" && BRACKET.test(token.value)) {\n return \"bracket\";\n }\n\n if (\n token.type === \"invalid\" &&\n (token.value === \"@\" || token.value === \"#\")\n ) {\n return \"punctuator\";\n }\n\n return token.type;\n };\n\n tokenize = function* (text: string) {\n let match;\n while ((match = (jsTokens as any).default.exec(text))) {\n const token = (jsTokens as any).matchToToken(match);\n\n yield {\n type: getTokenType(token, match.index, text),\n value: token.value,\n };\n }\n };\n}\n\n/**\n * Highlight `text` using the token definitions in `defs`.\n */\nfunction highlightTokens(defs: Record<string, Chalk>, text: string) {\n let highlighted = \"\";\n\n for (const { type, value } of tokenize(text)) {\n const colorize = defs[type];\n if (colorize) {\n highlighted += value\n .split(NEWLINE)\n .map(str => colorize(str))\n .join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n\n return highlighted;\n}\n\n/**\n * Highlight `text` using the token definitions in `defs`.\n */\n\ntype Options = {\n forceColor?: boolean;\n};\n\n/**\n * Whether the code should be highlighted given the passed options.\n */\nexport function shouldHighlight(options: Options): boolean {\n return chalk.level > 0 || options.forceColor;\n}\n\nlet chalkWithForcedColor: Chalk = undefined;\nfunction getChalk(forceColor: boolean) {\n if (forceColor) {\n chalkWithForcedColor ??= process.env.BABEL_8_BREAKING\n ? new ChalkClass({ level: 1 })\n : // @ts-expect-error .Instance was .constructor in chalk 2\n new chalk.constructor({ enabled: true, level: 1 });\n return chalkWithForcedColor;\n }\n return chalk;\n}\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n // eslint-disable-next-line no-restricted-globals\n exports.getChalk = (options: Options) => getChalk(options.forceColor);\n}\n\n/**\n * Highlight `code`.\n */\nexport default function highlight(code: string, options: Options = {}): string {\n if (code !== \"\" && shouldHighlight(options)) {\n const defs = getDefs(getChalk(options.forceColor));\n return highlightTokens(defs, code);\n } else {\n return code;\n }\n}\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\nconst ansiStyles = require('ansi-styles');\nconst stdoutColor = require('supports-color').stdout;\n\nconst template = require('./templates.js');\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports.default = module.exports; // For TypeScript\n","import highlight, { shouldHighlight } from \"@babel/highlight\";\n\nimport chalk, { Chalk as ChalkClass, type ChalkInstance as Chalk } from \"chalk\";\n\nlet chalkWithForcedColor: Chalk = undefined;\nfunction getChalk(forceColor: boolean) {\n if (forceColor) {\n chalkWithForcedColor ??= process.env.BABEL_8_BREAKING\n ? new ChalkClass({ level: 1 })\n : // @ts-expect-error .Instance was .constructor in chalk 2\n new chalk.constructor({ enabled: true, level: 1 });\n return chalkWithForcedColor;\n }\n return chalk;\n}\n\nlet deprecationWarningShown = false;\n\ntype Location = {\n column: number;\n line: number;\n};\n\ntype NodeLocation = {\n end?: Location;\n start: Location;\n};\n\nexport interface Options {\n /** Syntax highlight the code as JavaScript for terminals. default: false */\n highlightCode?: boolean;\n /** The number of lines to show above the error. default: 2 */\n linesAbove?: number;\n /** The number of lines to show below the error. default: 3 */\n linesBelow?: number;\n /**\n * Forcibly syntax highlight the code as JavaScript (for non-terminals);\n * overrides highlightCode.\n * default: false\n */\n forceColor?: boolean;\n /**\n * Pass in a string to be displayed inline (if possible) next to the\n * highlighted location in the code. If it can't be positioned inline,\n * it will be placed above the code frame.\n * default: nothing\n */\n message?: string;\n}\n\n/**\n * Chalk styles for code frame token types.\n */\nfunction getDefs(chalk: Chalk) {\n return {\n gutter: chalk.grey,\n marker: chalk.red.bold,\n message: chalk.red.bold,\n };\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * Extract what lines should be marked and highlighted.\n */\n\ntype MarkerLines = Record<number, true | [number, number]>;\n\nfunction getMarkerLines(\n loc: NodeLocation,\n source: Array<string>,\n opts: Options,\n): {\n start: number;\n end: number;\n markerLines: MarkerLines;\n} {\n const startLoc: Location = {\n column: 0,\n line: -1,\n ...loc.start,\n };\n const endLoc: Location = {\n ...startLoc,\n ...loc.end,\n };\n const { linesAbove = 2, linesBelow = 3 } = opts || {};\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n\n return { start, end, markerLines };\n}\n\nexport function codeFrameColumns(\n rawLines: string,\n loc: NodeLocation,\n opts: Options = {},\n): string {\n const highlighted =\n (opts.highlightCode || opts.forceColor) && shouldHighlight(opts);\n const chalk = getChalk(opts.forceColor);\n const defs = getDefs(chalk);\n const maybeHighlight = (chalkFn: Chalk, string: string) => {\n return highlighted ? chalkFn(string) : string;\n };\n const lines = rawLines.split(NEWLINE);\n const { start, end, markerLines } = getMarkerLines(loc, lines, opts);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n const numberMaxWidth = String(end).length;\n\n const highlightedLines = highlighted ? highlight(rawLines, opts) : rawLines;\n\n let frame = highlightedLines\n .split(NEWLINE, end)\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line\n .slice(0, Math.max(hasMarker[0] - 1, 0))\n .replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\n \"\\n \",\n maybeHighlight(defs.gutter, gutter.replace(/\\d/g, \" \")),\n \" \",\n markerSpacing,\n maybeHighlight(defs.marker, \"^\").repeat(numberOfMarkers),\n ].join(\"\");\n\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + maybeHighlight(defs.message, opts.message);\n }\n }\n return [\n maybeHighlight(defs.marker, \">\"),\n maybeHighlight(defs.gutter, gutter),\n line.length > 0 ? ` ${line}` : \"\",\n markerLine,\n ].join(\"\");\n } else {\n return ` ${maybeHighlight(defs.gutter, gutter)}${\n line.length > 0 ? ` ${line}` : \"\"\n }`;\n }\n })\n .join(\"\\n\");\n\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n\n if (highlighted) {\n return chalk.reset(frame);\n } else {\n return frame;\n }\n}\n\n/**\n * Create a code frame, adding line numbers, code highlighting, and pointing to a given position.\n */\n\nexport default function (\n rawLines: string,\n lineNumber: number,\n colNumber?: number | null,\n opts: Options = {},\n): string {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n\n const message =\n \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n if (process.emitWarning) {\n // A string is directly supplied to emitWarning, because when supplying an\n // Error object node throws in the tests because of different contexts\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n\n colNumber = Math.max(colNumber, 0);\n\n const location: NodeLocation = {\n start: { column: colNumber, line: lineNumber },\n };\n\n return codeFrameColumns(rawLines, location, opts);\n}\n","'use strict';\nconst path = require('path');\nconst Module = require('module');\nconst fs = require('fs');\n\nconst resolveFrom = (fromDir, moduleId, silent) => {\n\tif (typeof fromDir !== 'string') {\n\t\tthrow new TypeError(`Expected \\`fromDir\\` to be of type \\`string\\`, got \\`${typeof fromDir}\\``);\n\t}\n\n\tif (typeof moduleId !== 'string') {\n\t\tthrow new TypeError(`Expected \\`moduleId\\` to be of type \\`string\\`, got \\`${typeof moduleId}\\``);\n\t}\n\n\ttry {\n\t\tfromDir = fs.realpathSync(fromDir);\n\t} catch (err) {\n\t\tif (err.code === 'ENOENT') {\n\t\t\tfromDir = path.resolve(fromDir);\n\t\t} else if (silent) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tconst fromFile = path.join(fromDir, 'noop.js');\n\n\tconst resolveFileName = () => Module._resolveFilename(moduleId, {\n\t\tid: fromFile,\n\t\tfilename: fromFile,\n\t\tpaths: Module._nodeModulePaths(fromDir)\n\t});\n\n\tif (silent) {\n\t\ttry {\n\t\t\treturn resolveFileName();\n\t\t} catch (err) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn resolveFileName();\n};\n\nmodule.exports = (fromDir, moduleId) => resolveFrom(fromDir, moduleId);\nmodule.exports.silent = (fromDir, moduleId) => resolveFrom(fromDir, moduleId, true);\n","'use strict';\n\nconst callsites = () => {\n\tconst _prepareStackTrace = Error.prepareStackTrace;\n\tError.prepareStackTrace = (_, stack) => stack;\n\tconst stack = new Error().stack.slice(1);\n\tError.prepareStackTrace = _prepareStackTrace;\n\treturn stack;\n};\n\nmodule.exports = callsites;\n// TODO: Remove this for the next major release\nmodule.exports.default = callsites;\n","'use strict';\nconst callsites = require('callsites');\n\nmodule.exports = filepath => {\n\tconst stacks = callsites();\n\n\tif (!filepath) {\n\t\treturn stacks[2].getFileName();\n\t}\n\n\tlet seenVal = false;\n\n\t// Skip the first stack as it's this function\n\tstacks.shift();\n\n\tfor (const stack of stacks) {\n\t\tconst parentFilepath = stack.getFileName();\n\n\t\tif (typeof parentFilepath !== 'string') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (parentFilepath === filepath) {\n\t\t\tseenVal = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Skip native modules\n\t\tif (parentFilepath === 'module.js') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (seenVal && parentFilepath !== filepath) {\n\t\t\treturn parentFilepath;\n\t\t}\n\t}\n};\n","'use strict';\nconst path = require('path');\nconst resolveFrom = require('resolve-from');\nconst parentModule = require('parent-module');\n\nmodule.exports = moduleId => {\n\tif (typeof moduleId !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\tconst parentPath = parentModule(__filename);\n\n\tconst cwd = parentPath ? path.dirname(parentPath) : __dirname;\n\tconst filePath = resolveFrom(cwd, moduleId);\n\n\tconst oldModule = require.cache[filePath];\n\t// Delete itself from module parent\n\tif (oldModule && oldModule.parent) {\n\t\tlet i = oldModule.parent.children.length;\n\n\t\twhile (i--) {\n\t\t\tif (oldModule.parent.children[i].id === filePath) {\n\t\t\t\toldModule.parent.children.splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tdelete require.cache[filePath]; // Delete module from cache\n\n\tconst parent = require.cache[parentPath]; // If `filePath` and `parentPath` are the same, cache will already be deleted so we won't get a memory leak in next step\n\n\treturn parent === undefined ? require(filePath) : parent.require(filePath); // In case cache doesn't have parent, fall back to normal require\n};\n","'use strict';\n\nmodule.exports = function isArrayish(obj) {\n\tif (!obj) {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && obj.splice instanceof Function);\n};\n","'use strict';\n\nvar util = require('util');\nvar isArrayish = require('is-arrayish');\n\nvar errorEx = function errorEx(name, properties) {\n\tif (!name || name.constructor !== String) {\n\t\tproperties = name || {};\n\t\tname = Error.name;\n\t}\n\n\tvar errorExError = function ErrorEXError(message) {\n\t\tif (!this) {\n\t\t\treturn new ErrorEXError(message);\n\t\t}\n\n\t\tmessage = message instanceof Error\n\t\t\t? message.message\n\t\t\t: (message || this.message);\n\n\t\tError.call(this, message);\n\t\tError.captureStackTrace(this, errorExError);\n\n\t\tthis.name = name;\n\n\t\tObject.defineProperty(this, 'message', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: function () {\n\t\t\t\tvar newMessage = message.split(/\\r?\\n/g);\n\n\t\t\t\tfor (var key in properties) {\n\t\t\t\t\tif (!properties.hasOwnProperty(key)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar modifier = properties[key];\n\n\t\t\t\t\tif ('message' in modifier) {\n\t\t\t\t\t\tnewMessage = modifier.message(this[key], newMessage) || newMessage;\n\t\t\t\t\t\tif (!isArrayish(newMessage)) {\n\t\t\t\t\t\t\tnewMessage = [newMessage];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn newMessage.join('\\n');\n\t\t\t},\n\t\t\tset: function (v) {\n\t\t\t\tmessage = v;\n\t\t\t}\n\t\t});\n\n\t\tvar overwrittenStack = null;\n\n\t\tvar stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack');\n\t\tvar stackGetter = stackDescriptor.get;\n\t\tvar stackValue = stackDescriptor.value;\n\t\tdelete stackDescriptor.value;\n\t\tdelete stackDescriptor.writable;\n\n\t\tstackDescriptor.set = function (newstack) {\n\t\t\toverwrittenStack = newstack;\n\t\t};\n\n\t\tstackDescriptor.get = function () {\n\t\t\tvar stack = (overwrittenStack || ((stackGetter)\n\t\t\t\t? stackGetter.call(this)\n\t\t\t\t: stackValue)).split(/\\r?\\n+/g);\n\n\t\t\t// starting in Node 7, the stack builder caches the message.\n\t\t\t// just replace it.\n\t\t\tif (!overwrittenStack) {\n\t\t\t\tstack[0] = this.name + ': ' + this.message;\n\t\t\t}\n\n\t\t\tvar lineCount = 1;\n\t\t\tfor (var key in properties) {\n\t\t\t\tif (!properties.hasOwnProperty(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar modifier = properties[key];\n\n\t\t\t\tif ('line' in modifier) {\n\t\t\t\t\tvar line = modifier.line(this[key]);\n\t\t\t\t\tif (line) {\n\t\t\t\t\t\tstack.splice(lineCount++, 0, ' ' + line);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ('stack' in modifier) {\n\t\t\t\t\tmodifier.stack(this[key], stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stack.join('\\n');\n\t\t};\n\n\t\tObject.defineProperty(this, 'stack', stackDescriptor);\n\t};\n\n\tif (Object.setPrototypeOf) {\n\t\tObject.setPrototypeOf(errorExError.prototype, Error.prototype);\n\t\tObject.setPrototypeOf(errorExError, Error);\n\t} else {\n\t\tutil.inherits(errorExError, Error);\n\t}\n\n\treturn errorExError;\n};\n\nerrorEx.append = function (str, def) {\n\treturn {\n\t\tmessage: function (v, message) {\n\t\t\tv = v || def;\n\n\t\t\tif (v) {\n\t\t\t\tmessage[0] += ' ' + str.replace('%s', v.toString());\n\t\t\t}\n\n\t\t\treturn message;\n\t\t}\n\t};\n};\n\nerrorEx.line = function (str, def) {\n\treturn {\n\t\tline: function (v) {\n\t\t\tv = v || def;\n\n\t\t\tif (v) {\n\t\t\t\treturn str.replace('%s', v.toString());\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\t};\n};\n\nmodule.exports = errorEx;\n","'use strict'\n\nconst hexify = char => {\n const h = char.charCodeAt(0).toString(16).toUpperCase()\n return '0x' + (h.length % 2 ? '0' : '') + h\n}\n\nconst parseError = (e, txt, context) => {\n if (!txt) {\n return {\n message: e.message + ' while parsing empty string',\n position: 0,\n }\n }\n const badToken = e.message.match(/^Unexpected token (.) .*position\\s+(\\d+)/i)\n const errIdx = badToken ? +badToken[2]\n : e.message.match(/^Unexpected end of JSON.*/i) ? txt.length - 1\n : null\n\n const msg = badToken ? e.message.replace(/^Unexpected token ./, `Unexpected token ${\n JSON.stringify(badToken[1])\n } (${hexify(badToken[1])})`)\n : e.message\n\n if (errIdx !== null && errIdx !== undefined) {\n const start = errIdx <= context ? 0\n : errIdx - context\n\n const end = errIdx + context >= txt.length ? txt.length\n : errIdx + context\n\n const slice = (start === 0 ? '' : '...') +\n txt.slice(start, end) +\n (end === txt.length ? '' : '...')\n\n const near = txt === slice ? '' : 'near '\n\n return {\n message: msg + ` while parsing ${near}${JSON.stringify(slice)}`,\n position: errIdx,\n }\n } else {\n return {\n message: msg + ` while parsing '${txt.slice(0, context * 2)}'`,\n position: 0,\n }\n }\n}\n\nclass JSONParseError extends SyntaxError {\n constructor (er, txt, context, caller) {\n context = context || 20\n const metadata = parseError(er, txt, context)\n super(metadata.message)\n Object.assign(this, metadata)\n this.code = 'EJSONPARSE'\n this.systemError = er\n Error.captureStackTrace(this, caller || this.constructor)\n }\n get name () { return this.constructor.name }\n set name (n) {}\n get [Symbol.toStringTag] () { return this.constructor.name }\n}\n\nconst kIndent = Symbol.for('indent')\nconst kNewline = Symbol.for('newline')\n// only respect indentation if we got a line break, otherwise squash it\n// things other than objects and arrays aren't indented, so ignore those\n// Important: in both of these regexps, the $1 capture group is the newline\n// or undefined, and the $2 capture group is the indent, or undefined.\nconst formatRE = /^\\s*[{\\[]((?:\\r?\\n)+)([\\s\\t]*)/\nconst emptyRE = /^(?:\\{\\}|\\[\\])((?:\\r?\\n)+)?$/\n\nconst parseJson = (txt, reviver, context) => {\n const parseText = stripBOM(txt)\n context = context || 20\n try {\n // get the indentation so that we can save it back nicely\n // if the file starts with {\" then we have an indent of '', ie, none\n // otherwise, pick the indentation of the next line after the first \\n\n // If the pattern doesn't match, then it means no indentation.\n // JSON.stringify ignores symbols, so this is reasonably safe.\n // if the string is '{}' or '[]', then use the default 2-space indent.\n const [, newline = '\\n', indent = ' '] = parseText.match(emptyRE) ||\n parseText.match(formatRE) ||\n [, '', '']\n\n const result = JSON.parse(parseText, reviver)\n if (result && typeof result === 'object') {\n result[kNewline] = newline\n result[kIndent] = indent\n }\n return result\n } catch (e) {\n if (typeof txt !== 'string' && !Buffer.isBuffer(txt)) {\n const isEmptyArray = Array.isArray(txt) && txt.length === 0\n throw Object.assign(new TypeError(\n `Cannot parse ${isEmptyArray ? 'an empty array' : String(txt)}`\n ), {\n code: 'EJSONPARSE',\n systemError: e,\n })\n }\n\n throw new JSONParseError(e, parseText, context, parseJson)\n }\n}\n\n// Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n// because the buffer-to-string conversion in `fs.readFileSync()`\n// translates it to FEFF, the UTF-16 BOM.\nconst stripBOM = txt => String(txt).replace(/^\\uFEFF/, '')\n\nmodule.exports = parseJson\nparseJson.JSONParseError = JSONParseError\n\nparseJson.noExceptions = (txt, reviver) => {\n try {\n return JSON.parse(stripBOM(txt), reviver)\n } catch (e) {}\n}\n","var LF = '\\n';\nvar CR = '\\r';\nvar LinesAndColumns = (function () {\n function LinesAndColumns(string) {\n this.string = string;\n var offsets = [0];\n for (var offset = 0; offset < string.length;) {\n switch (string[offset]) {\n case LF:\n offset += LF.length;\n offsets.push(offset);\n break;\n case CR:\n offset += CR.length;\n if (string[offset] === LF) {\n offset += LF.length;\n }\n offsets.push(offset);\n break;\n default:\n offset++;\n break;\n }\n }\n this.offsets = offsets;\n }\n LinesAndColumns.prototype.locationForIndex = function (index) {\n if (index < 0 || index > this.string.length) {\n return null;\n }\n var line = 0;\n var offsets = this.offsets;\n while (offsets[line + 1] <= index) {\n line++;\n }\n var column = index - offsets[line];\n return { line: line, column: column };\n };\n LinesAndColumns.prototype.indexForLocation = function (location) {\n var line = location.line, column = location.column;\n if (line < 0 || line >= this.offsets.length) {\n return null;\n }\n if (column < 0 || column > this.lengthOfLine(line)) {\n return null;\n }\n return this.offsets[line] + column;\n };\n LinesAndColumns.prototype.lengthOfLine = function (line) {\n var offset = this.offsets[line];\n var nextOffset = line === this.offsets.length - 1 ? this.string.length : this.offsets[line + 1];\n return nextOffset - offset;\n };\n return LinesAndColumns;\n}());\nexport default LinesAndColumns;\n","'use strict';\nconst errorEx = require('error-ex');\nconst fallback = require('json-parse-even-better-errors');\nconst {default: LinesAndColumns} = require('lines-and-columns');\nconst {codeFrameColumns} = require('@babel/code-frame');\n\nconst JSONError = errorEx('JSONError', {\n\tfileName: errorEx.append('in %s'),\n\tcodeFrame: errorEx.append('\\n\\n%s\\n')\n});\n\nconst parseJson = (string, reviver, filename) => {\n\tif (typeof reviver === 'string') {\n\t\tfilename = reviver;\n\t\treviver = null;\n\t}\n\n\ttry {\n\t\ttry {\n\t\t\treturn JSON.parse(string, reviver);\n\t\t} catch (error) {\n\t\t\tfallback(string, reviver);\n\t\t\tthrow error;\n\t\t}\n\t} catch (error) {\n\t\terror.message = error.message.replace(/\\n/g, '');\n\t\tconst indexMatch = error.message.match(/in JSON at position (\\d+) while parsing/);\n\n\t\tconst jsonError = new JSONError(error);\n\t\tif (filename) {\n\t\t\tjsonError.fileName = filename;\n\t\t}\n\n\t\tif (indexMatch && indexMatch.length > 0) {\n\t\t\tconst lines = new LinesAndColumns(string);\n\t\t\tconst index = Number(indexMatch[1]);\n\t\t\tconst location = lines.locationForIndex(index);\n\n\t\t\tconst codeFrame = codeFrameColumns(\n\t\t\t\tstring,\n\t\t\t\t{start: {line: location.line + 1, column: location.column + 1}},\n\t\t\t\t{highlightCode: true}\n\t\t\t);\n\n\t\t\tjsonError.codeFrame = codeFrame;\n\t\t}\n\n\t\tthrow jsonError;\n\t}\n};\n\nparseJson.JSONError = JSONError;\n\nmodule.exports = parseJson;\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\n\nfunction formatError(exception, compact) {\n var where = '', message = exception.reason || '(unknown reason)';\n\n if (!exception.mark) return message;\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" ';\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet;\n }\n\n return message + ' ' + where;\n}\n\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n return this.name + ': ' + formatError(this, compact);\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = '';\n var tail = '';\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... ';\n lineStart = position - maxHalfLength + head.length;\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...';\n lineEnd = position + maxHalfLength - tail.length;\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n };\n}\n\n\nfunction padStart(string, max) {\n return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n\n if (!mark.buffer) return null;\n\n if (!options.maxLength) options.maxLength = 79;\n if (typeof options.indent !== 'number') options.indent = 1;\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2;\n\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [ 0 ];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n var result = '', i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result;\n }\n\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n }\n\n return result.replace(/\\n$/, '');\n}\n\n\nmodule.exports = makeSnippet;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.options = options; // keep original options in case user wants to extend this type later\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.representName = options['representName'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.multi = options['multi'] || false;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name) {\n var result = [];\n\n schema[name].forEach(function (currentType) {\n var newIndex = result.length;\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n\n newIndex = previousIndex;\n }\n });\n\n result[newIndex] = currentType;\n });\n\n return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n\n function collectType(type) {\n if (type.multi) {\n result.multi[type.kind].push(type);\n result.multi['fallback'].push(type);\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n return this.extend(definition);\n}\n\n\nSchema.prototype.extend = function extend(definition) {\n var implicit = [];\n var explicit = [];\n\n if (definition instanceof Type) {\n // Schema.extend(type)\n explicit.push(definition);\n\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition);\n\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit);\n if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n } else {\n throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })');\n }\n\n implicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n\n if (type.multi) {\n throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n }\n });\n\n explicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n });\n\n var result = Object.create(Schema.prototype);\n\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n\n result.compiledImplicit = compileList(result, 'implicit');\n result.compiledExplicit = compileList(result, 'explicit');\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n return result;\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; },\n empty: function () { return ''; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'o') {\n // base 8\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n }\n\n // base 10 (except 0)\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n return true;\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nmodule.exports = require('./failsafe').extend({\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nmodule.exports = require('./json');\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nmodule.exports = require('./core').extend({\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar makeSnippet = require('./snippet');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false;\n\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n var mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n };\n\n mark.snippet = makeSnippet(mark);\n\n return new YAMLException(message, mark);\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix);\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.lineStart = startLineStart || state.lineStart;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n\n // used for this specific key only because Object.defineProperty is slow\n if (keyNode === '__proto__') {\n Object.defineProperty(_result, keyNode, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: valueNode\n });\n } else {\n _result[keyNode] = valueNode;\n }\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _lineStart,\n _pos,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = Object.create(null),\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\");\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line; // Save the current line.\n _lineStart = state.lineStart;\n _pos = state.position;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _keyLine,\n _keyLineStart,\n _keyPos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = Object.create(null),\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break;\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n typeList,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"!<?> [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n } else {\n // looking for multi type\n type = null;\n typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex];\n break;\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result, state.tag);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = Object.create(null);\n state.anchorMap = Object.create(null);\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM = 0xFEFF;\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n this.forceQuotes = options['forceQuotes'] || false;\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n return isPrintable(c)\n && c !== CHAR_BOM\n // - b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n return (\n // ns-plain-safe\n inblock ? // c = flow-in\n cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n )\n // ns-plain-char\n && c !== CHAR_SHARP // false on '#'\n && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) && c !== CHAR_BOM\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n var first = string.charCodeAt(pos), second;\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n var i;\n var char = 0;\n var prevChar = null;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(codePointAt(string, 0))\n && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n }\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char = 0;\n var escapeSeq;\n\n for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i];\n if (char >= 0x10000) result += string[i + 1];\n } else {\n result += escapeSeq || encodeHex(char);\n }\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (_result !== '') pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object);\n } else {\n state.tag = type.tag;\n }\n } else {\n state.tag = '?';\n }\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n var inblock = block;\n var tagStr;\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact);\n } else {\n writeBlockSequence(state, level, state.dump, compact);\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock);\n }\n } else if (type === '[object Undefined]') {\n return false;\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21');\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr;\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18);\n } else {\n tagStr = '!<' + tagStr + '>';\n }\n\n state.dump = tagStr + ' ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n var value = input;\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value);\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nmodule.exports.dump = dump;\n","'use strict';\n\n\nvar loader = require('./lib/loader');\nvar dumper = require('./lib/dumper');\n\n\nfunction renamed(from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.');\n };\n}\n\n\nmodule.exports.Type = require('./lib/type');\nmodule.exports.Schema = require('./lib/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./lib/schema/json');\nmodule.exports.CORE_SCHEMA = require('./lib/schema/core');\nmodule.exports.DEFAULT_SCHEMA = require('./lib/schema/default');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.YAMLException = require('./lib/exception');\n\n// Re-export all types in case user wants to create custom schema\nmodule.exports.types = {\n binary: require('./lib/type/binary'),\n float: require('./lib/type/float'),\n map: require('./lib/type/map'),\n null: require('./lib/type/null'),\n pairs: require('./lib/type/pairs'),\n set: require('./lib/type/set'),\n timestamp: require('./lib/type/timestamp'),\n bool: require('./lib/type/bool'),\n int: require('./lib/type/int'),\n merge: require('./lib/type/merge'),\n omap: require('./lib/type/omap'),\n seq: require('./lib/type/seq'),\n str: require('./lib/type/str')\n};\n\n// Removed functions from JS-YAML 3.0.x\nmodule.exports.safeLoad = renamed('safeLoad', 'load');\nmodule.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll');\nmodule.exports.safeDump = renamed('safeDump', 'dump');\n",null,null,"'use strict';\nconst path = require('path');\nconst os = require('os');\n\nconst homedir = os.homedir();\nconst tmpdir = os.tmpdir();\nconst {env} = process;\n\nconst macos = name => {\n\tconst library = path.join(homedir, 'Library');\n\n\treturn {\n\t\tdata: path.join(library, 'Application Support', name),\n\t\tconfig: path.join(library, 'Preferences', name),\n\t\tcache: path.join(library, 'Caches', name),\n\t\tlog: path.join(library, 'Logs', name),\n\t\ttemp: path.join(tmpdir, name)\n\t};\n};\n\nconst windows = name => {\n\tconst appData = env.APPDATA || path.join(homedir, 'AppData', 'Roaming');\n\tconst localAppData = env.LOCALAPPDATA || path.join(homedir, 'AppData', 'Local');\n\n\treturn {\n\t\t// Data/config/cache/log are invented by me as Windows isn't opinionated about this\n\t\tdata: path.join(localAppData, name, 'Data'),\n\t\tconfig: path.join(appData, name, 'Config'),\n\t\tcache: path.join(localAppData, name, 'Cache'),\n\t\tlog: path.join(localAppData, name, 'Log'),\n\t\ttemp: path.join(tmpdir, name)\n\t};\n};\n\n// https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html\nconst linux = name => {\n\tconst username = path.basename(homedir);\n\n\treturn {\n\t\tdata: path.join(env.XDG_DATA_HOME || path.join(homedir, '.local', 'share'), name),\n\t\tconfig: path.join(env.XDG_CONFIG_HOME || path.join(homedir, '.config'), name),\n\t\tcache: path.join(env.XDG_CACHE_HOME || path.join(homedir, '.cache'), name),\n\t\t// https://wiki.debian.org/XDGBaseDirectorySpecification#state\n\t\tlog: path.join(env.XDG_STATE_HOME || path.join(homedir, '.local', 'state'), name),\n\t\ttemp: path.join(tmpdir, username, name)\n\t};\n};\n\nconst envPaths = (name, options) => {\n\tif (typeof name !== 'string') {\n\t\tthrow new TypeError(`Expected string, got ${typeof name}`);\n\t}\n\n\toptions = Object.assign({suffix: 'nodejs'}, options);\n\n\tif (options.suffix) {\n\t\t// Add suffix to prevent possible conflict with native apps\n\t\tname += `-${options.suffix}`;\n\t}\n\n\tif (process.platform === 'darwin') {\n\t\treturn macos(name);\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows(name);\n\t}\n\n\treturn linux(name);\n};\n\nmodule.exports = envPaths;\n// TODO: Remove this for the next major release\nmodule.exports.default = envPaths;\n",null,null,null,null,null,null,"/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","module.exports = require('stream');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","try {\n var util = require('util');\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n module.exports = require('./inherits_browser.js');\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, { hasUnpiped: false });\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream;\n exports = module.exports = Stream.Readable;\n exports.Readable = Stream.Readable;\n exports.Writable = Stream.Writable;\n exports.Duplex = Stream.Duplex;\n exports.Transform = Stream.Transform;\n exports.PassThrough = Stream.PassThrough;\n exports.Stream = Stream;\n} else {\n exports = module.exports = require('./lib/_stream_readable.js');\n exports.Stream = Stream || exports;\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable.js');\n exports.Duplex = require('./lib/_stream_duplex.js');\n exports.Transform = require('./lib/_stream_transform.js');\n exports.PassThrough = require('./lib/_stream_passthrough.js');\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","var Transform = require('readable-stream').Transform\n , inherits = require('util').inherits\n , xtend = require('xtend')\n\nfunction DestroyableTransform(opts) {\n Transform.call(this, opts)\n this._destroyed = false\n}\n\ninherits(DestroyableTransform, Transform)\n\nDestroyableTransform.prototype.destroy = function(err) {\n if (this._destroyed) return\n this._destroyed = true\n \n var self = this\n process.nextTick(function() {\n if (err)\n self.emit('error', err)\n self.emit('close')\n })\n}\n\n// a noop _transform function\nfunction noop (chunk, enc, callback) {\n callback(null, chunk)\n}\n\n\n// create a new export function, used by both the main export and\n// the .ctor export, contains common logic for dealing with arguments\nfunction through2 (construct) {\n return function (options, transform, flush) {\n if (typeof options == 'function') {\n flush = transform\n transform = options\n options = {}\n }\n\n if (typeof transform != 'function')\n transform = noop\n\n if (typeof flush != 'function')\n flush = null\n\n return construct(options, transform, flush)\n }\n}\n\n\n// main export, just make me a transform stream!\nmodule.exports = through2(function (options, transform, flush) {\n var t2 = new DestroyableTransform(options)\n\n t2._transform = transform\n\n if (flush)\n t2._flush = flush\n\n return t2\n})\n\n\n// make me a reusable prototype that I can `new`, or implicitly `new`\n// with a constructor call\nmodule.exports.ctor = through2(function (options, transform, flush) {\n function Through2 (override) {\n if (!(this instanceof Through2))\n return new Through2(override)\n\n this.options = xtend(options, override)\n\n DestroyableTransform.call(this, this.options)\n }\n\n inherits(Through2, DestroyableTransform)\n\n Through2.prototype._transform = transform\n\n if (flush)\n Through2.prototype._flush = flush\n\n return Through2\n})\n\n\nmodule.exports.obj = through2(function (options, transform, flush) {\n var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options))\n\n t2._transform = transform\n\n if (flush)\n t2._flush = flush\n\n return t2\n})\n","/*\r\nCopyright (c) 2014, Matteo Collina <hello@matteocollina.com>\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted, provided that the above\r\ncopyright notice and this permission notice appear in all copies.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\r\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\r\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\r\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\r\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\r\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n*/\r\n\r\n'use strict';\r\n\r\nvar through = require('through2')\r\n\r\nfunction transform(chunk, enc, cb) {\r\n var list = chunk.toString('utf8').split(this.matcher)\r\n , remaining = list.pop()\r\n , i\r\n\r\n if (list.length >= 1) {\r\n push(this, this.mapper((this._last + list.shift())))\r\n } else {\r\n remaining = this._last + remaining\r\n }\r\n\r\n for (i = 0; i < list.length; i++) {\r\n push(this, this.mapper(list[i]))\r\n }\r\n\r\n this._last = remaining\r\n\r\n cb()\r\n}\r\n\r\nfunction flush(cb) {\r\n if (this._last)\r\n push(this, this.mapper(this._last))\r\n\r\n cb()\r\n}\r\n\r\nfunction push(self, val) {\r\n if (val !== undefined)\r\n self.push(val)\r\n}\r\n\r\nfunction noop(incoming) {\r\n return incoming\r\n}\r\n\r\nfunction split(matcher, mapper, options) {\r\n\r\n if (typeof matcher === 'object' && !(matcher instanceof RegExp)) {\r\n options = matcher\r\n matcher = null\r\n }\r\n\r\n if (typeof matcher === 'function') {\r\n mapper = matcher\r\n matcher = null\r\n }\r\n\r\n options = options || {}\r\n\r\n var stream = through(options, transform, flush)\r\n\r\n // this stream is in objectMode only in the readable part\r\n stream._readableState.objectMode = true;\r\n\r\n stream._last = ''\r\n stream.matcher = matcher || /\\r?\\n/\r\n stream.mapper = mapper || noop\r\n\r\n return stream\r\n}\r\n\r\nmodule.exports = split\r\n","'use strict';\n\n// TODO: use call-bind, is-date, is-regex, is-string, is-boolean-object, is-number-object\nfunction toS(obj) { return Object.prototype.toString.call(obj); }\nfunction isDate(obj) { return toS(obj) === '[object Date]'; }\nfunction isRegExp(obj) { return toS(obj) === '[object RegExp]'; }\nfunction isError(obj) { return toS(obj) === '[object Error]'; }\nfunction isBoolean(obj) { return toS(obj) === '[object Boolean]'; }\nfunction isNumber(obj) { return toS(obj) === '[object Number]'; }\nfunction isString(obj) { return toS(obj) === '[object String]'; }\n\n// TODO: use isarray\nvar isArray = Array.isArray || function isArray(xs) {\n\treturn Object.prototype.toString.call(xs) === '[object Array]';\n};\n\n// TODO: use for-each?\nfunction forEach(xs, fn) {\n\tif (xs.forEach) { return xs.forEach(fn); }\n\tfor (var i = 0; i < xs.length; i++) {\n\t\tfn(xs[i], i, xs);\n\t}\n\treturn void undefined;\n}\n\n// TODO: use object-keys\nvar objectKeys = Object.keys || function keys(obj) {\n\tvar res = [];\n\tfor (var key in obj) { res.push(key); } // eslint-disable-line no-restricted-syntax\n\treturn res;\n};\n\nvar propertyIsEnumerable = Object.prototype.propertyIsEnumerable;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols; // eslint-disable-line id-length\n\n// TODO: use reflect.ownkeys and filter out non-enumerables\nfunction ownEnumerableKeys(obj) {\n\tvar res = objectKeys(obj);\n\n\t// Include enumerable symbol properties.\n\tif (getOwnPropertySymbols) {\n\t\tvar symbols = getOwnPropertySymbols(obj);\n\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\tif (propertyIsEnumerable.call(obj, symbols[i])) {\n\t\t\t\tres.push(symbols[i]);\n\t\t\t}\n\t\t}\n\t}\n\treturn res;\n}\n\n// TODO: use object.hasown\nvar hasOwnProperty = Object.prototype.hasOwnProperty || function (obj, key) {\n\treturn key in obj;\n};\n\nfunction copy(src) {\n\tif (typeof src === 'object' && src !== null) {\n\t\tvar dst;\n\n\t\tif (isArray(src)) {\n\t\t\tdst = [];\n\t\t} else if (isDate(src)) {\n\t\t\tdst = new Date(src.getTime ? src.getTime() : src);\n\t\t} else if (isRegExp(src)) {\n\t\t\tdst = new RegExp(src);\n\t\t} else if (isError(src)) {\n\t\t\tdst = { message: src.message };\n\t\t} else if (isBoolean(src) || isNumber(src) || isString(src)) {\n\t\t\tdst = Object(src);\n\t\t} else if (Object.create && Object.getPrototypeOf) {\n\t\t\tdst = Object.create(Object.getPrototypeOf(src));\n\t\t} else if (src.constructor === Object) {\n\t\t\tdst = {};\n\t\t} else {\n\t\t\tvar proto = (src.constructor && src.constructor.prototype)\n\t\t\t\t|| src.__proto__\n\t\t\t\t|| {};\n\t\t\tvar T = function T() {}; // eslint-disable-line func-style, func-name-matching\n\t\t\tT.prototype = proto;\n\t\t\tdst = new T();\n\t\t}\n\n\t\tforEach(ownEnumerableKeys(src), function (key) {\n\t\t\tdst[key] = src[key];\n\t\t});\n\t\treturn dst;\n\t}\n\treturn src;\n}\n\nfunction walk(root, cb, immutable) {\n\tvar path = [];\n\tvar parents = [];\n\tvar alive = true;\n\n\treturn (function walker(node_) {\n\t\tvar node = immutable ? copy(node_) : node_;\n\t\tvar modifiers = {};\n\n\t\tvar keepGoing = true;\n\n\t\tvar state = {\n\t\t\tnode: node,\n\t\t\tnode_: node_,\n\t\t\tpath: [].concat(path),\n\t\t\tparent: parents[parents.length - 1],\n\t\t\tparents: parents,\n\t\t\tkey: path[path.length - 1],\n\t\t\tisRoot: path.length === 0,\n\t\t\tlevel: path.length,\n\t\t\tcircular: null,\n\t\t\tupdate: function (x, stopHere) {\n\t\t\t\tif (!state.isRoot) {\n\t\t\t\t\tstate.parent.node[state.key] = x;\n\t\t\t\t}\n\t\t\t\tstate.node = x;\n\t\t\t\tif (stopHere) { keepGoing = false; }\n\t\t\t},\n\t\t\tdelete: function (stopHere) {\n\t\t\t\tdelete state.parent.node[state.key];\n\t\t\t\tif (stopHere) { keepGoing = false; }\n\t\t\t},\n\t\t\tremove: function (stopHere) {\n\t\t\t\tif (isArray(state.parent.node)) {\n\t\t\t\t\tstate.parent.node.splice(state.key, 1);\n\t\t\t\t} else {\n\t\t\t\t\tdelete state.parent.node[state.key];\n\t\t\t\t}\n\t\t\t\tif (stopHere) { keepGoing = false; }\n\t\t\t},\n\t\t\tkeys: null,\n\t\t\tbefore: function (f) { modifiers.before = f; },\n\t\t\tafter: function (f) { modifiers.after = f; },\n\t\t\tpre: function (f) { modifiers.pre = f; },\n\t\t\tpost: function (f) { modifiers.post = f; },\n\t\t\tstop: function () { alive = false; },\n\t\t\tblock: function () { keepGoing = false; },\n\t\t};\n\n\t\tif (!alive) { return state; }\n\n\t\tfunction updateState() {\n\t\t\tif (typeof state.node === 'object' && state.node !== null) {\n\t\t\t\tif (!state.keys || state.node_ !== state.node) {\n\t\t\t\t\tstate.keys = ownEnumerableKeys(state.node);\n\t\t\t\t}\n\n\t\t\t\tstate.isLeaf = state.keys.length === 0;\n\n\t\t\t\tfor (var i = 0; i < parents.length; i++) {\n\t\t\t\t\tif (parents[i].node_ === node_) {\n\t\t\t\t\t\tstate.circular = parents[i];\n\t\t\t\t\t\tbreak; // eslint-disable-line no-restricted-syntax\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstate.isLeaf = true;\n\t\t\t\tstate.keys = null;\n\t\t\t}\n\n\t\t\tstate.notLeaf = !state.isLeaf;\n\t\t\tstate.notRoot = !state.isRoot;\n\t\t}\n\n\t\tupdateState();\n\n\t\t// use return values to update if defined\n\t\tvar ret = cb.call(state, state.node);\n\t\tif (ret !== undefined && state.update) { state.update(ret); }\n\n\t\tif (modifiers.before) { modifiers.before.call(state, state.node); }\n\n\t\tif (!keepGoing) { return state; }\n\n\t\tif (\n\t\t\ttypeof state.node === 'object'\n\t\t\t&& state.node !== null\n\t\t\t&& !state.circular\n\t\t) {\n\t\t\tparents.push(state);\n\n\t\t\tupdateState();\n\n\t\t\tforEach(state.keys, function (key, i) {\n\t\t\t\tpath.push(key);\n\n\t\t\t\tif (modifiers.pre) { modifiers.pre.call(state, state.node[key], key); }\n\n\t\t\t\tvar child = walker(state.node[key]);\n\t\t\t\tif (immutable && hasOwnProperty.call(state.node, key)) {\n\t\t\t\t\tstate.node[key] = child.node;\n\t\t\t\t}\n\n\t\t\t\tchild.isLast = i === state.keys.length - 1;\n\t\t\t\tchild.isFirst = i === 0;\n\n\t\t\t\tif (modifiers.post) { modifiers.post.call(state, child); }\n\n\t\t\t\tpath.pop();\n\t\t\t});\n\t\t\tparents.pop();\n\t\t}\n\n\t\tif (modifiers.after) { modifiers.after.call(state, state.node); }\n\n\t\treturn state;\n\t}(root)).node;\n}\n\nfunction Traverse(obj) {\n\tthis.value = obj;\n}\n\nTraverse.prototype.get = function (ps) {\n\tvar node = this.value;\n\tfor (var i = 0; i < ps.length; i++) {\n\t\tvar key = ps[i];\n\t\tif (!node || !hasOwnProperty.call(node, key)) {\n\t\t\treturn void undefined;\n\t\t}\n\t\tnode = node[key];\n\t}\n\treturn node;\n};\n\nTraverse.prototype.has = function (ps) {\n\tvar node = this.value;\n\tfor (var i = 0; i < ps.length; i++) {\n\t\tvar key = ps[i];\n\t\tif (!node || !hasOwnProperty.call(node, key)) {\n\t\t\treturn false;\n\t\t}\n\t\tnode = node[key];\n\t}\n\treturn true;\n};\n\nTraverse.prototype.set = function (ps, value) {\n\tvar node = this.value;\n\tfor (var i = 0; i < ps.length - 1; i++) {\n\t\tvar key = ps[i];\n\t\tif (!hasOwnProperty.call(node, key)) { node[key] = {}; }\n\t\tnode = node[key];\n\t}\n\tnode[ps[i]] = value;\n\treturn value;\n};\n\nTraverse.prototype.map = function (cb) {\n\treturn walk(this.value, cb, true);\n};\n\nTraverse.prototype.forEach = function (cb) {\n\tthis.value = walk(this.value, cb, false);\n\treturn this.value;\n};\n\nTraverse.prototype.reduce = function (cb, init) {\n\tvar skip = arguments.length === 1;\n\tvar acc = skip ? this.value : init;\n\tthis.forEach(function (x) {\n\t\tif (!this.isRoot || !skip) {\n\t\t\tacc = cb.call(this, acc, x);\n\t\t}\n\t});\n\treturn acc;\n};\n\nTraverse.prototype.paths = function () {\n\tvar acc = [];\n\tthis.forEach(function () {\n\t\tacc.push(this.path);\n\t});\n\treturn acc;\n};\n\nTraverse.prototype.nodes = function () {\n\tvar acc = [];\n\tthis.forEach(function () {\n\t\tacc.push(this.node);\n\t});\n\treturn acc;\n};\n\nTraverse.prototype.clone = function () {\n\tvar parents = [];\n\tvar nodes = [];\n\n\treturn (function clone(src) {\n\t\tfor (var i = 0; i < parents.length; i++) {\n\t\t\tif (parents[i] === src) {\n\t\t\t\treturn nodes[i];\n\t\t\t}\n\t\t}\n\n\t\tif (typeof src === 'object' && src !== null) {\n\t\t\tvar dst = copy(src);\n\n\t\t\tparents.push(src);\n\t\t\tnodes.push(dst);\n\n\t\t\tforEach(ownEnumerableKeys(src), function (key) {\n\t\t\t\tdst[key] = clone(src[key]);\n\t\t\t});\n\n\t\t\tparents.pop();\n\t\t\tnodes.pop();\n\t\t\treturn dst;\n\t\t}\n\n\t\treturn src;\n\n\t}(this.value));\n};\n\nfunction traverse(obj) {\n\treturn new Traverse(obj);\n}\n\n// TODO: replace with object.assign?\nforEach(ownEnumerableKeys(Traverse.prototype), function (key) {\n\ttraverse[key] = function (obj) {\n\t\tvar args = [].slice.call(arguments, 1);\n\t\tvar t = new Traverse(obj);\n\t\treturn t[key].apply(t, args);\n\t};\n});\n\nmodule.exports = traverse;\n","'use strict';\n\nvar traverse = require('traverse');\n\nexports.config = {\n commit: {\n long: 'H',\n short: 'h'\n },\n tree: {\n long: 'T',\n short: 't'\n },\n author: {\n name: 'an',\n email: 'ae',\n date: {\n key: 'ai',\n type: Date\n }\n },\n committer: {\n name: 'cn',\n email: 'ce',\n date: {\n key: 'ci',\n type: Date\n }\n },\n subject: 's',\n body: 'b'\n};\n\nexports.map = function () {\n return traverse.reduce(exports.config, function (fields, node) {\n if (this.isLeaf && typeof node === 'string') {\n var typed = this.key === 'key';\n fields.push({\n path: typed ? this.parent.path : this.path,\n key: node,\n type: this.parent.node.type\n });\n }\n return fields;\n }, []);\n};\n","'use strict';\n\nfunction argify (key, value) {\n var single = key.length === 1;\n return {\n single: single,\n flag: single ? '-' + key : '--' + key,\n value: value\n };\n}\n\nfunction options (object) {\n return Object.keys(object)\n .filter(function (key) {\n return key !== '_';\n })\n .map(function (key) {\n return argify(key, object[key]);\n })\n .filter(function (arg) {\n return arg.value;\n })\n .reduce(function (args, arg) {\n if (arg.single) {\n args.push(arg.flag);\n if (arg.value !== true) {\n args.push(arg.value.toString());\n }\n }\n else {\n if (arg.value !== true) {\n args.push(arg.flag + '=' + arg.value);\n }\n else {\n args.push(arg.flag);\n }\n }\n return args;\n }, []);\n}\n\nfunction args (object) {\n if (object._) {\n return (Array.isArray(object._) ? object._ : [object._])\n .map(function (value) {\n return value.toString();\n });\n }\n return [];\n}\n\nexports.format = function formatArgv (object) {\n return options(object).concat(args(object));\n};\n","\"use strict\";\n\nvar stream = require(\"readable-stream\");\n\nfunction DuplexWrapper(options, writable, readable) {\n if (typeof readable === \"undefined\") {\n readable = writable;\n writable = options;\n options = null;\n }\n\n stream.Duplex.call(this, options);\n\n if (typeof readable.read !== \"function\") {\n readable = (new stream.Readable(options)).wrap(readable);\n }\n\n this._writable = writable;\n this._readable = readable;\n this._waiting = false;\n\n var self = this;\n\n writable.once(\"finish\", function() {\n self.end();\n });\n\n this.once(\"finish\", function() {\n writable.end();\n });\n\n readable.on(\"readable\", function() {\n if (self._waiting) {\n self._waiting = false;\n self._read();\n }\n });\n\n readable.once(\"end\", function() {\n self.push(null);\n });\n\n if (!options || typeof options.bubbleErrors === \"undefined\" || options.bubbleErrors) {\n writable.on(\"error\", function(err) {\n self.emit(\"error\", err);\n });\n\n readable.on(\"error\", function(err) {\n self.emit(\"error\", err);\n });\n }\n}\n\nDuplexWrapper.prototype = Object.create(stream.Duplex.prototype, {constructor: {value: DuplexWrapper}});\n\nDuplexWrapper.prototype._write = function _write(input, encoding, done) {\n this._writable.write(input, encoding, done);\n};\n\nDuplexWrapper.prototype._read = function _read() {\n var buf;\n var reads = 0;\n while ((buf = this._readable.read()) !== null) {\n this.push(buf);\n reads++;\n }\n if (reads === 0) {\n this._waiting = true;\n }\n};\n\nmodule.exports = function duplex2(options, writable, readable) {\n return new DuplexWrapper(options, writable, readable);\n};\n\nmodule.exports.DuplexWrapper = DuplexWrapper;\n","var PassThrough = require('readable-stream').PassThrough\nvar Readable = require('readable-stream').Readable\nvar duplexer = require('duplexer2')\n\nmodule.exports = function () {\n var streams\n if(arguments.length == 1 && Array.isArray(arguments[0])) {\n streams = arguments[0]\n } else {\n streams = [].slice.call(arguments)\n }\n return combine(streams)\n}\n\nmodule.exports.obj = function () {\n var streams\n if(arguments.length == 1 && Array.isArray(arguments[0])) {\n streams = arguments[0]\n } else {\n streams = [].slice.call(arguments)\n }\n return combine(streams, { objectMode: true })\n}\n\n \nfunction combine (streams, opts) {\n\n for (var i = 0; i < streams.length; i++)\n streams[i] = wrap(streams[i], opts)\n\n if(streams.length == 0)\n return new PassThrough(opts)\n else if(streams.length == 1)\n return streams[0]\n\n var first = streams[0]\n , last = streams[streams.length - 1]\n , thepipe = duplexer(opts, first, last)\n\n //pipe all the streams together\n\n function recurse (streams) {\n if(streams.length < 2)\n return\n streams[0].pipe(streams[1])\n recurse(streams.slice(1))\n }\n\n recurse(streams)\n\n function onerror () {\n var args = [].slice.call(arguments)\n args.unshift('error')\n thepipe.emit.apply(thepipe, args)\n }\n\n //es.duplex already reemits the error from the first and last stream.\n //add a listener for the inner streams in the pipeline.\n for(var i = 1; i < streams.length - 1; i ++)\n streams[i].on('error', onerror)\n\n return thepipe\n}\n\nfunction wrap (tr, opts) {\n if (typeof tr.read === 'function') return tr\n return new Readable(opts).wrap(tr)\n}\n","'use strict';\n\nfunction createErr (code, stderr) {\n return new Error(stderr);\n}\n\nmodule.exports = function (child, errFactory) {\n errFactory = errFactory || createErr;\n var stderr = [];\n child.stderr.on('data', function (chunk) {\n stderr.push(chunk);\n });\n child.on('close', function (code) {\n if (code !== 0) {\n child.stdout.emit('error', errFactory(\n code,\n Buffer.concat(stderr).toString()\n ));\n }\n });\n return child;\n};\n","'use strict';\n\nvar spawn = require('child_process').spawn;\nvar through = require('through2');\nvar split = require('split2');\nvar traverse = require('traverse');\nvar fields = require('./fields');\nvar toArgv = require('argv-formatter').format;\nvar combine = require('stream-combiner2');\nvar fwd = require('spawn-error-forwarder');\n\nvar END = '==END==';\nvar FIELD = '==FIELD==';\n\nfunction format (fieldMap) {\n return fieldMap.map(function (field) {\n return '%' + field.key;\n })\n .join(FIELD) + END;\n}\n\nfunction trim () {\n return through(function (chunk, enc, callback) {\n if (!chunk) {\n callback();\n }\n else {\n callback(null, chunk);\n }\n });\n}\n\nfunction log (args, options) {\n return fwd(spawn('git', ['log'].concat(args), options), function (code, stderr) {\n return new Error('git log failed:\\n\\n' + stderr);\n })\n .stdout;\n}\n\nfunction args (config, fieldMap) {\n config.format = format(fieldMap);\n return toArgv(config);\n}\n\nexports.parse = function parseLogStream (config, options) {\n config = config || {};\n var map = fields.map();\n return combine.obj([\n log(args(config, map), options),\n split(END + '\\n'),\n trim(),\n through.obj(function (chunk, enc, callback) {\n var fields = chunk.toString('utf8').split(FIELD);\n callback(null, map.reduce(function (parsed, field, index) {\n var value = fields[index];\n traverse(parsed).set(field.path, field.type ? new field.type(value) : value);\n return parsed;\n }, {}));\n })\n ]);\n};\n\nexports.fields = fields.config;\n","'use strict';\nconst {PassThrough: PassThroughStream} = require('stream');\n\nmodule.exports = options => {\n\toptions = {...options};\n\n\tconst {array} = options;\n\tlet {encoding} = options;\n\tconst isBuffer = encoding === 'buffer';\n\tlet objectMode = false;\n\n\tif (array) {\n\t\tobjectMode = !(encoding || isBuffer);\n\t} else {\n\t\tencoding = encoding || 'utf8';\n\t}\n\n\tif (isBuffer) {\n\t\tencoding = null;\n\t}\n\n\tconst stream = new PassThroughStream({objectMode});\n\n\tif (encoding) {\n\t\tstream.setEncoding(encoding);\n\t}\n\n\tlet length = 0;\n\tconst chunks = [];\n\n\tstream.on('data', chunk => {\n\t\tchunks.push(chunk);\n\n\t\tif (objectMode) {\n\t\t\tlength = chunks.length;\n\t\t} else {\n\t\t\tlength += chunk.length;\n\t\t}\n\t});\n\n\tstream.getBufferedValue = () => {\n\t\tif (array) {\n\t\t\treturn chunks;\n\t\t}\n\n\t\treturn isBuffer ? Buffer.concat(chunks, length) : chunks.join('');\n\t};\n\n\tstream.getBufferedLength = () => length;\n\n\treturn stream;\n};\n","'use strict';\nconst {constants: BufferConstants} = require('buffer');\nconst stream = require('stream');\nconst {promisify} = require('util');\nconst bufferStream = require('./buffer-stream');\n\nconst streamPipelinePromisified = promisify(stream.pipeline);\n\nclass MaxBufferError extends Error {\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t\tthis.name = 'MaxBufferError';\n\t}\n}\n\nasync function getStream(inputStream, options) {\n\tif (!inputStream) {\n\t\tthrow new Error('Expected a stream');\n\t}\n\n\toptions = {\n\t\tmaxBuffer: Infinity,\n\t\t...options\n\t};\n\n\tconst {maxBuffer} = options;\n\tconst stream = bufferStream(options);\n\n\tawait new Promise((resolve, reject) => {\n\t\tconst rejectPromise = error => {\n\t\t\t// Don't retrieve an oversized buffer.\n\t\t\tif (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {\n\t\t\t\terror.bufferedData = stream.getBufferedValue();\n\t\t\t}\n\n\t\t\treject(error);\n\t\t};\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tawait streamPipelinePromisified(inputStream, stream);\n\t\t\t\tresolve();\n\t\t\t} catch (error) {\n\t\t\t\trejectPromise(error);\n\t\t\t}\n\t\t})();\n\n\t\tstream.on('data', () => {\n\t\t\tif (stream.getBufferedLength() > maxBuffer) {\n\t\t\t\trejectPromise(new MaxBufferError());\n\t\t\t}\n\t\t});\n\t});\n\n\treturn stream.getBufferedValue();\n}\n\nmodule.exports = getStream;\nmodule.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});\nmodule.exports.array = (stream, options) => getStream(stream, {...options, array: true});\nmodule.exports.MaxBufferError = MaxBufferError;\n","'use strict';\nconst path = require('path');\nconst Module = require('module');\nconst fs = require('fs');\n\nconst resolveFrom = (fromDirectory, moduleId, silent) => {\n\tif (typeof fromDirectory !== 'string') {\n\t\tthrow new TypeError(`Expected \\`fromDir\\` to be of type \\`string\\`, got \\`${typeof fromDirectory}\\``);\n\t}\n\n\tif (typeof moduleId !== 'string') {\n\t\tthrow new TypeError(`Expected \\`moduleId\\` to be of type \\`string\\`, got \\`${typeof moduleId}\\``);\n\t}\n\n\ttry {\n\t\tfromDirectory = fs.realpathSync(fromDirectory);\n\t} catch (error) {\n\t\tif (error.code === 'ENOENT') {\n\t\t\tfromDirectory = path.resolve(fromDirectory);\n\t\t} else if (silent) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tconst fromFile = path.join(fromDirectory, 'noop.js');\n\n\tconst resolveFileName = () => Module._resolveFilename(moduleId, {\n\t\tid: fromFile,\n\t\tfilename: fromFile,\n\t\tpaths: Module._nodeModulePaths(fromDirectory)\n\t});\n\n\tif (silent) {\n\t\ttry {\n\t\t\treturn resolveFileName();\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\treturn resolveFileName();\n};\n\nmodule.exports = (fromDirectory, moduleId) => resolveFrom(fromDirectory, moduleId);\nmodule.exports.silent = (fromDirectory, moduleId) => resolveFrom(fromDirectory, moduleId, true);\n","/**\n * @module LRUCache\n */\n\n// module-private names and types\ntype Perf = { now: () => number }\nconst perf: Perf =\n typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date\n\nconst warned = new Set<string>()\n\n// either a function or a class\ntype ForC = ((...a: any[]) => any) | { new (...a: any[]): any }\n\n/* c8 ignore start */\nconst PROCESS = (\n typeof process === 'object' && !!process ? process : {}\n) as { [k: string]: any }\n/* c8 ignore start */\n\nconst emitWarning = (\n msg: string,\n type: string,\n code: string,\n fn: ForC\n) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`)\n}\n\nlet AC = globalThis.AbortController\nlet AS = globalThis.AbortSignal\n\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort?: (...a: any[]) => any\n _onabort: ((...a: any[]) => any)[] = []\n reason?: any\n aborted: boolean = false\n addEventListener(_: string, fn: (...a: any[]) => any) {\n this._onabort.push(fn)\n }\n }\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill()\n }\n signal = new AS()\n abort(reason: any) {\n if (this.signal.aborted) return\n //@ts-ignore\n this.signal.reason = reason\n //@ts-ignore\n this.signal.aborted = true\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason)\n }\n this.signal.onabort?.(reason)\n }\n }\n let printACPolyfillWarning =\n PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning) return\n printACPolyfillWarning = false\n emitWarning(\n 'AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.',\n 'NO_ABORT_CONTROLLER',\n 'ENOTSUP',\n warnACPolyfill\n )\n }\n}\n/* c8 ignore stop */\n\nconst shouldWarn = (code: string) => !warned.has(code)\n\nconst TYPE = Symbol('type')\nexport type PosInt = number & { [TYPE]: 'Positive Integer' }\nexport type Index = number & { [TYPE]: 'LRUCache Index' }\n\nconst isPosInt = (n: any): n is PosInt =>\n n && n === Math.floor(n) && n > 0 && isFinite(n)\n\nexport type UintArray = Uint8Array | Uint16Array | Uint32Array\nexport type NumberArray = UintArray | number[]\n\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max: number) =>\n !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null\n/* c8 ignore stop */\n\nclass ZeroArray extends Array<number> {\n constructor(size: number) {\n super(size)\n this.fill(0)\n }\n}\nexport type { ZeroArray }\nexport type { Stack }\n\nexport type StackLike = Stack | Index[]\nclass Stack {\n heap: NumberArray\n length: number\n // private constructor\n static #constructing: boolean = false\n static create(max: number): StackLike {\n const HeapCls = getUintArray(max)\n if (!HeapCls) return []\n Stack.#constructing = true\n const s = new Stack(max, HeapCls)\n Stack.#constructing = false\n return s\n }\n constructor(\n max: number,\n HeapCls: { new (n: number): NumberArray }\n ) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)')\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max)\n this.length = 0\n }\n push(n: Index) {\n this.heap[this.length++] = n\n }\n pop(): Index {\n return this.heap[--this.length] as Index\n }\n}\n\n/**\n * Promise representing an in-progress {@link LRUCache#fetch} call\n */\nexport type BackgroundFetch<V> = Promise<V | undefined> & {\n __returned: BackgroundFetch<V> | undefined\n __abortController: AbortController\n __staleWhileFetching: V | undefined\n}\n\nexport type DisposeTask<K, V> = [\n value: V,\n key: K,\n reason: LRUCache.DisposeReason\n]\n\nexport namespace LRUCache {\n /**\n * An integer greater than 0, reflecting the calculated size of items\n */\n export type Size = number\n\n /**\n * Integer greater than 0, representing some number of milliseconds, or the\n * time at which a TTL started counting from.\n */\n export type Milliseconds = number\n\n /**\n * An integer greater than 0, reflecting a number of items\n */\n export type Count = number\n\n /**\n * The reason why an item was removed from the cache, passed\n * to the {@link Disposer} methods.\n *\n * - `evict`: The item was evicted because it is the least recently used,\n * and the cache is full.\n * - `set`: A new value was set, overwriting the old value being disposed.\n * - `delete`: The item was explicitly deleted, either by calling\n * {@link LRUCache#delete}, {@link LRUCache#clear}, or\n * {@link LRUCache#set} with an undefined value.\n * - `expire`: The item was removed due to exceeding its TTL.\n * - `fetch`: A {@link OptionsBase#fetchMethod} operation returned\n * `undefined` or was aborted, causing the item to be deleted.\n */\n export type DisposeReason =\n | 'evict'\n | 'set'\n | 'delete'\n | 'expire'\n | 'fetch'\n /**\n * A method called upon item removal, passed as the\n * {@link OptionsBase.dispose} and/or\n * {@link OptionsBase.disposeAfter} options.\n */\n export type Disposer<K, V> = (\n value: V,\n key: K,\n reason: DisposeReason\n ) => void\n\n /**\n * A function that returns the effective calculated size\n * of an entry in the cache.\n */\n export type SizeCalculator<K, V> = (value: V, key: K) => Size\n\n /**\n * Options provided to the\n * {@link OptionsBase.fetchMethod} function.\n */\n export interface FetcherOptions<K, V, FC = unknown> {\n signal: AbortSignal\n options: FetcherFetchOptions<K, V, FC>\n /**\n * Object provided in the {@link FetchOptions.context} option to\n * {@link LRUCache#fetch}\n */\n context: FC\n }\n\n /**\n * Occasionally, it may be useful to track the internal behavior of the\n * cache, particularly for logging, debugging, or for behavior within the\n * `fetchMethod`. To do this, you can pass a `status` object to the\n * {@link LRUCache#fetch}, {@link LRUCache#get}, {@link LRUCache#set},\n * {@link LRUCache#memo}, and {@link LRUCache#has} methods.\n *\n * The `status` option should be a plain JavaScript object. The following\n * fields will be set on it appropriately, depending on the situation.\n */\n export interface Status<V> {\n /**\n * The status of a set() operation.\n *\n * - add: the item was not found in the cache, and was added\n * - update: the item was in the cache, with the same value provided\n * - replace: the item was in the cache, and replaced\n * - miss: the item was not added to the cache for some reason\n */\n set?: 'add' | 'update' | 'replace' | 'miss'\n\n /**\n * the ttl stored for the item, or undefined if ttls are not used.\n */\n ttl?: Milliseconds\n\n /**\n * the start time for the item, or undefined if ttls are not used.\n */\n start?: Milliseconds\n\n /**\n * The timestamp used for TTL calculation\n */\n now?: Milliseconds\n\n /**\n * the remaining ttl for the item, or undefined if ttls are not used.\n */\n remainingTTL?: Milliseconds\n\n /**\n * The calculated size for the item, if sizes are used.\n */\n entrySize?: Size\n\n /**\n * The total calculated size of the cache, if sizes are used.\n */\n totalCalculatedSize?: Size\n\n /**\n * A flag indicating that the item was not stored, due to exceeding the\n * {@link OptionsBase.maxEntrySize}\n */\n maxEntrySizeExceeded?: true\n\n /**\n * The old value, specified in the case of `set:'update'` or\n * `set:'replace'`\n */\n oldValue?: V\n\n /**\n * The results of a {@link LRUCache#has} operation\n *\n * - hit: the item was found in the cache\n * - stale: the item was found in the cache, but is stale\n * - miss: the item was not found in the cache\n */\n has?: 'hit' | 'stale' | 'miss'\n\n /**\n * The status of a {@link LRUCache#fetch} operation.\n * Note that this can change as the underlying fetch() moves through\n * various states.\n *\n * - inflight: there is another fetch() for this key which is in process\n * - get: there is no {@link OptionsBase.fetchMethod}, so\n * {@link LRUCache#get} was called.\n * - miss: the item is not in cache, and will be fetched.\n * - hit: the item is in the cache, and was resolved immediately.\n * - stale: the item is in the cache, but stale.\n * - refresh: the item is in the cache, and not stale, but\n * {@link FetchOptions.forceRefresh} was specified.\n */\n fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh'\n\n /**\n * The {@link OptionsBase.fetchMethod} was called\n */\n fetchDispatched?: true\n\n /**\n * The cached value was updated after a successful call to\n * {@link OptionsBase.fetchMethod}\n */\n fetchUpdated?: true\n\n /**\n * The reason for a fetch() rejection. Either the error raised by the\n * {@link OptionsBase.fetchMethod}, or the reason for an\n * AbortSignal.\n */\n fetchError?: Error\n\n /**\n * The fetch received an abort signal\n */\n fetchAborted?: true\n\n /**\n * The abort signal received was ignored, and the fetch was allowed to\n * continue.\n */\n fetchAbortIgnored?: true\n\n /**\n * The fetchMethod promise resolved successfully\n */\n fetchResolved?: true\n\n /**\n * The fetchMethod promise was rejected\n */\n fetchRejected?: true\n\n /**\n * The status of a {@link LRUCache#get} operation.\n *\n * - fetching: The item is currently being fetched. If a previous value\n * is present and allowed, that will be returned.\n * - stale: The item is in the cache, and is stale.\n * - hit: the item is in the cache\n * - miss: the item is not in the cache\n */\n get?: 'stale' | 'hit' | 'miss'\n\n /**\n * A fetch or get operation returned a stale value.\n */\n returnedStale?: true\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#fetch}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link OptionsBase.noDeleteOnFetchRejection},\n * {@link OptionsBase.allowStaleOnFetchRejection},\n * {@link FetchOptions.forceRefresh}, and\n * {@link FetcherOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.fetchMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the fetchMethod is called.\n */\n export interface FetcherFetchOptions<K, V, FC = unknown>\n extends Pick<\n OptionsBase<K, V, FC>,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n status?: Status<V>\n size?: Size\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#fetch} method.\n */\n export interface FetchOptions<K, V, FC>\n extends FetcherFetchOptions<K, V, FC> {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.fetchMethod} as\n * the {@link FetcherOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n signal?: AbortSignal\n status?: Status<V>\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface FetchOptionsWithContext<K, V, FC>\n extends FetchOptions<K, V, FC> {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is\n * `undefined` or `void`\n */\n export interface FetchOptionsNoContext<K, V>\n extends FetchOptions<K, V, undefined> {\n context?: undefined\n }\n\n export interface MemoOptions<K, V, FC = unknown>\n extends Pick<\n OptionsBase<K, V, FC>,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.memoMethod} as\n * the {@link MemoizerOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n status?: Status<V>\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface MemoOptionsWithContext<K, V, FC>\n extends MemoOptions<K, V, FC> {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is\n * `undefined` or `void`\n */\n export interface MemoOptionsNoContext<K, V>\n extends MemoOptions<K, V, undefined> {\n context?: undefined\n }\n\n /**\n * Options provided to the\n * {@link OptionsBase.memoMethod} function.\n */\n export interface MemoizerOptions<K, V, FC = unknown> {\n options: MemoizerMemoOptions<K, V, FC>\n /**\n * Object provided in the {@link MemoOptions.context} option to\n * {@link LRUCache#memo}\n */\n context: FC\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#memo}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link MemoOptions.forceRefresh}, and\n * {@link MemoerOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.memoMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the memoMethod is called.\n */\n export interface MemoizerMemoOptions<K, V, FC = unknown>\n extends Pick<\n OptionsBase<K, V, FC>,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n > {\n status?: Status<V>\n size?: Size\n start?: Milliseconds\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#has} method.\n */\n export interface HasOptions<K, V, FC>\n extends Pick<OptionsBase<K, V, FC>, 'updateAgeOnHas'> {\n status?: Status<V>\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#get} method.\n */\n export interface GetOptions<K, V, FC>\n extends Pick<\n OptionsBase<K, V, FC>,\n 'allowStale' | 'updateAgeOnGet' | 'noDeleteOnStaleGet'\n > {\n status?: Status<V>\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#peek} method.\n */\n export interface PeekOptions<K, V, FC>\n extends Pick<OptionsBase<K, V, FC>, 'allowStale'> {}\n\n /**\n * Options that may be passed to the {@link LRUCache#set} method.\n */\n export interface SetOptions<K, V, FC>\n extends Pick<\n OptionsBase<K, V, FC>,\n 'sizeCalculation' | 'ttl' | 'noDisposeOnSet' | 'noUpdateTTL'\n > {\n /**\n * If size tracking is enabled, then setting an explicit size\n * in the {@link LRUCache#set} call will prevent calling the\n * {@link OptionsBase.sizeCalculation} function.\n */\n size?: Size\n /**\n * If TTL tracking is enabled, then setting an explicit start\n * time in the {@link LRUCache#set} call will override the\n * default time from `performance.now()` or `Date.now()`.\n *\n * Note that it must be a valid value for whichever time-tracking\n * method is in use.\n */\n start?: Milliseconds\n status?: Status<V>\n }\n\n /**\n * The type signature for the {@link OptionsBase.fetchMethod} option.\n */\n export type Fetcher<K, V, FC = unknown> = (\n key: K,\n staleValue: V | undefined,\n options: FetcherOptions<K, V, FC>\n ) => Promise<V | undefined | void> | V | undefined | void\n\n /**\n * the type signature for the {@link OptionsBase.memoMethod} option.\n */\n export type Memoizer<K, V, FC = unknown> = (\n key: K,\n staleValue: V | undefined,\n options: MemoizerOptions<K, V, FC>\n ) => V\n\n /**\n * Options which may be passed to the {@link LRUCache} constructor.\n *\n * Most of these may be overridden in the various options that use\n * them.\n *\n * Despite all being technically optional, the constructor requires that\n * a cache is at minimum limited by one or more of {@link OptionsBase.max},\n * {@link OptionsBase.ttl}, or {@link OptionsBase.maxSize}.\n *\n * If {@link OptionsBase.ttl} is used alone, then it is strongly advised\n * (and in fact required by the type definitions here) that the cache\n * also set {@link OptionsBase.ttlAutopurge}, to prevent potentially\n * unbounded storage.\n *\n * All options are also available on the {@link LRUCache} instance, making\n * it safe to pass an LRUCache instance as the options argumemnt to\n * make another empty cache of the same type.\n *\n * Some options are marked as read-only, because changing them after\n * instantiation is not safe. Changing any of the other options will of\n * course only have an effect on subsequent method calls.\n */\n export interface OptionsBase<K, V, FC> {\n /**\n * The maximum number of items to store in the cache before evicting\n * old entries. This is read-only on the {@link LRUCache} instance,\n * and may not be overridden.\n *\n * If set, then storage space will be pre-allocated at construction\n * time, and the cache will perform significantly faster.\n *\n * Note that significantly fewer items may be stored, if\n * {@link OptionsBase.maxSize} and/or {@link OptionsBase.ttl} are also\n * set.\n *\n * **It is strongly recommended to set a `max` to prevent unbounded growth\n * of the cache.**\n */\n max?: Count\n\n /**\n * Max time in milliseconds for items to live in cache before they are\n * considered stale. Note that stale items are NOT preemptively removed by\n * default, and MAY live in the cache, contributing to its LRU max, long\n * after they have expired, unless {@link OptionsBase.ttlAutopurge} is\n * set.\n *\n * If set to `0` (the default value), then that means \"do not track\n * TTL\", not \"expire immediately\".\n *\n * Also, as this cache is optimized for LRU/MRU operations, some of\n * the staleness/TTL checks will reduce performance, as they will incur\n * overhead by deleting items.\n *\n * This is not primarily a TTL cache, and does not make strong TTL\n * guarantees. There is no pre-emptive pruning of expired items, but you\n * _may_ set a TTL on the cache, and it will treat expired items as missing\n * when they are fetched, and delete them.\n *\n * Optional, but must be a non-negative integer in ms if specified.\n *\n * This may be overridden by passing an options object to `cache.set()`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if ttl tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * If ttl tracking is enabled, and `max` and `maxSize` are not set,\n * and `ttlAutopurge` is not set, then a warning will be emitted\n * cautioning about the potential for unbounded memory consumption.\n * (The TypeScript definitions will also discourage this.)\n */\n ttl?: Milliseconds\n\n /**\n * Minimum amount of time in ms in which to check for staleness.\n * Defaults to 1, which means that the current time is checked\n * at most once per millisecond.\n *\n * Set to 0 to check the current time every time staleness is tested.\n * (This reduces performance, and is theoretically unnecessary.)\n *\n * Setting this to a higher value will improve performance somewhat\n * while using ttl tracking, albeit at the expense of keeping stale\n * items around a bit longer than their TTLs would indicate.\n *\n * @default 1\n */\n ttlResolution?: Milliseconds\n\n /**\n * Preemptively remove stale items from the cache.\n *\n * Note that this may *significantly* degrade performance, especially if\n * the cache is storing a large number of items. It is almost always best\n * to just leave the stale items in the cache, and let them fall out as new\n * items are added.\n *\n * Note that this means that {@link OptionsBase.allowStale} is a bit\n * pointless, as stale items will be deleted almost as soon as they\n * expire.\n *\n * Use with caution!\n */\n ttlAutopurge?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever it is retrieved from cache with\n * {@link LRUCache#get}, causing it to not expire. (It can still fall out\n * of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n */\n updateAgeOnGet?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever its presence in the cache is\n * checked with {@link LRUCache#has}, causing it to not expire. (It can\n * still fall out of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n */\n updateAgeOnHas?: boolean\n\n /**\n * Allow {@link LRUCache#get} and {@link LRUCache#fetch} calls to return\n * stale data, if available.\n *\n * By default, if you set `ttl`, stale items will only be deleted from the\n * cache when you `get(key)`. That is, it's not preemptively pruning items,\n * unless {@link OptionsBase.ttlAutopurge} is set.\n *\n * If you set `allowStale:true`, it'll return the stale value *as well as*\n * deleting it. If you don't set this, then it'll return `undefined` when\n * you try to get a stale entry.\n *\n * Note that when a stale entry is fetched, _even if it is returned due to\n * `allowStale` being set_, it is removed from the cache immediately. You\n * can suppress this behavior by setting\n * {@link OptionsBase.noDeleteOnStaleGet}, either in the constructor, or in\n * the options provided to {@link LRUCache#get}.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n * The `cache.has()` method will always return `false` for stale items.\n *\n * Only relevant if a ttl is set.\n */\n allowStale?: boolean\n\n /**\n * Function that is called on items when they are dropped from the\n * cache, as `dispose(value, key, reason)`.\n *\n * This can be handy if you want to close file descriptors or do\n * other cleanup tasks when items are no longer stored in the cache.\n *\n * **NOTE**: It is called _before_ the item has been fully removed\n * from the cache, so if you want to put it right back in, you need\n * to wait until the next tick. If you try to add it back in during\n * the `dispose()` function call, it will break things in subtle and\n * weird ways.\n *\n * Unlike several other options, this may _not_ be overridden by\n * passing an option to `set()`, for performance reasons.\n *\n * The `reason` will be one of the following strings, corresponding\n * to the reason for the item's deletion:\n *\n * - `evict` Item was evicted to make space for a new addition\n * - `set` Item was overwritten by a new value\n * - `expire` Item expired its TTL\n * - `fetch` Item was deleted due to a failed or aborted fetch, or a\n * fetchMethod returning `undefined.\n * - `delete` Item was removed by explicit `cache.delete(key)`,\n * `cache.clear()`, or `cache.set(key, undefined)`.\n */\n dispose?: Disposer<K, V>\n\n /**\n * The same as {@link OptionsBase.dispose}, but called *after* the entry\n * is completely removed and the cache is once again in a clean state.\n *\n * It is safe to add an item right back into the cache at this point.\n * However, note that it is *very* easy to inadvertently create infinite\n * recursion this way.\n */\n disposeAfter?: Disposer<K, V>\n\n /**\n * Set to true to suppress calling the\n * {@link OptionsBase.dispose} function if the entry key is\n * still accessible within the cache.\n *\n * This may be overridden by passing an options object to\n * {@link LRUCache#set}.\n *\n * Only relevant if `dispose` or `disposeAfter` are set.\n */\n noDisposeOnSet?: boolean\n\n /**\n * Boolean flag to tell the cache to not update the TTL when setting a new\n * value for an existing key (ie, when updating a value rather than\n * inserting a new value). Note that the TTL value is _always_ set (if\n * provided) when adding a new entry into the cache.\n *\n * Has no effect if a {@link OptionsBase.ttl} is not set.\n *\n * May be passed as an option to {@link LRUCache#set}.\n */\n noUpdateTTL?: boolean\n\n /**\n * Set to a positive integer to track the sizes of items added to the\n * cache, and automatically evict items in order to stay below this size.\n * Note that this may result in fewer than `max` items being stored.\n *\n * Attempting to add an item to the cache whose calculated size is greater\n * that this amount will be a no-op. The item will not be cached, and no\n * other items will be evicted.\n *\n * Optional, must be a positive integer if provided.\n *\n * Sets `maxEntrySize` to the same value, unless a different value is\n * provided for `maxEntrySize`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if size tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * Note also that size tracking can negatively impact performance,\n * though for most cases, only minimally.\n */\n maxSize?: Size\n\n /**\n * The maximum allowed size for any single item in the cache.\n *\n * If a larger item is passed to {@link LRUCache#set} or returned by a\n * {@link OptionsBase.fetchMethod} or {@link OptionsBase.memoMethod}, then\n * it will not be stored in the cache.\n *\n * Attempting to add an item whose calculated size is greater than\n * this amount will not cache the item or evict any old items, but\n * WILL delete an existing value if one is already present.\n *\n * Optional, must be a positive integer if provided. Defaults to\n * the value of `maxSize` if provided.\n */\n maxEntrySize?: Size\n\n /**\n * A function that returns a number indicating the item's size.\n *\n * Requires {@link OptionsBase.maxSize} to be set.\n *\n * If not provided, and {@link OptionsBase.maxSize} or\n * {@link OptionsBase.maxEntrySize} are set, then all\n * {@link LRUCache#set} calls **must** provide an explicit\n * {@link SetOptions.size} or sizeCalculation param.\n */\n sizeCalculation?: SizeCalculator<K, V>\n\n /**\n * Method that provides the implementation for {@link LRUCache#fetch}\n *\n * ```ts\n * fetchMethod(key, staleValue, { signal, options, context })\n * ```\n *\n * If `fetchMethod` is not provided, then `cache.fetch(key)` is equivalent\n * to `Promise.resolve(cache.get(key))`.\n *\n * If at any time, `signal.aborted` is set to `true`, or if the\n * `signal.onabort` method is called, or if it emits an `'abort'` event\n * which you can listen to with `addEventListener`, then that means that\n * the fetch should be abandoned. This may be passed along to async\n * functions aware of AbortController/AbortSignal behavior.\n *\n * The `fetchMethod` should **only** return `undefined` or a Promise\n * resolving to `undefined` if the AbortController signaled an `abort`\n * event. In all other cases, it should return or resolve to a value\n * suitable for adding to the cache.\n *\n * The `options` object is a union of the options that may be provided to\n * `set()` and `get()`. If they are modified, then that will result in\n * modifying the settings to `cache.set()` when the value is resolved, and\n * in the case of\n * {@link OptionsBase.noDeleteOnFetchRejection} and\n * {@link OptionsBase.allowStaleOnFetchRejection}, the handling of\n * `fetchMethod` failures.\n *\n * For example, a DNS cache may update the TTL based on the value returned\n * from a remote DNS server by changing `options.ttl` in the `fetchMethod`.\n */\n fetchMethod?: Fetcher<K, V, FC>\n\n /**\n * Method that provides the implementation for {@link LRUCache#memo}\n */\n memoMethod?: Memoizer<K, V, FC>\n\n /**\n * Set to true to suppress the deletion of stale data when a\n * {@link OptionsBase.fetchMethod} returns a rejected promise.\n */\n noDeleteOnFetchRejection?: boolean\n\n /**\n * Do not delete stale items when they are retrieved with\n * {@link LRUCache#get}.\n *\n * Note that the `get` return value will still be `undefined`\n * unless {@link OptionsBase.allowStale} is true.\n *\n * When using time-expiring entries with `ttl`, by default stale\n * items will be removed from the cache when the key is accessed\n * with `cache.get()`.\n *\n * Setting this option will cause stale items to remain in the cache, until\n * they are explicitly deleted with `cache.delete(key)`, or retrieved with\n * `noDeleteOnStaleGet` set to `false`.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n *\n * Only relevant if a ttl is used.\n */\n noDeleteOnStaleGet?: boolean\n\n /**\n * Set to true to allow returning stale data when a\n * {@link OptionsBase.fetchMethod} throws an error or returns a rejected\n * promise.\n *\n * This differs from using {@link OptionsBase.allowStale} in that stale\n * data will ONLY be returned in the case that the {@link LRUCache#fetch}\n * fails, not any other times.\n *\n * If a `fetchMethod` fails, and there is no stale value available, the\n * `fetch()` will resolve to `undefined`. Ie, all `fetchMethod` errors are\n * suppressed.\n *\n * Implies `noDeleteOnFetchRejection`.\n *\n * This may be set in calls to `fetch()`, or defaulted on the constructor,\n * or overridden by modifying the options object in the `fetchMethod`.\n */\n allowStaleOnFetchRejection?: boolean\n\n /**\n * Set to true to return a stale value from the cache when the\n * `AbortSignal` passed to the {@link OptionsBase.fetchMethod} dispatches\n * an `'abort'` event, whether user-triggered, or due to internal cache\n * behavior.\n *\n * Unless {@link OptionsBase.ignoreFetchAbort} is also set, the underlying\n * {@link OptionsBase.fetchMethod} will still be considered canceled, and\n * any value it returns will be ignored and not cached.\n *\n * Caveat: since fetches are aborted when a new value is explicitly\n * set in the cache, this can lead to fetch returning a stale value,\n * since that was the fallback value _at the moment the `fetch()` was\n * initiated_, even though the new updated value is now present in\n * the cache.\n *\n * For example:\n *\n * ```ts\n * const cache = new LRUCache<string, any>({\n * ttl: 100,\n * fetchMethod: async (url, oldValue, { signal }) => {\n * const res = await fetch(url, { signal })\n * return await res.json()\n * }\n * })\n * cache.set('https://example.com/', { some: 'data' })\n * // 100ms go by...\n * const result = cache.fetch('https://example.com/')\n * cache.set('https://example.com/', { other: 'thing' })\n * console.log(await result) // { some: 'data' }\n * console.log(cache.get('https://example.com/')) // { other: 'thing' }\n * ```\n */\n allowStaleOnFetchAbort?: boolean\n\n /**\n * Set to true to ignore the `abort` event emitted by the `AbortSignal`\n * object passed to {@link OptionsBase.fetchMethod}, and still cache the\n * resulting resolution value, as long as it is not `undefined`.\n *\n * When used on its own, this means aborted {@link LRUCache#fetch} calls\n * are not immediately resolved or rejected when they are aborted, and\n * instead take the full time to await.\n *\n * When used with {@link OptionsBase.allowStaleOnFetchAbort}, aborted\n * {@link LRUCache#fetch} calls will resolve immediately to their stale\n * cached value or `undefined`, and will continue to process and eventually\n * update the cache when they resolve, as long as the resulting value is\n * not `undefined`, thus supporting a \"return stale on timeout while\n * refreshing\" mechanism by passing `AbortSignal.timeout(n)` as the signal.\n *\n * For example:\n *\n * ```ts\n * const c = new LRUCache({\n * ttl: 100,\n * ignoreFetchAbort: true,\n * allowStaleOnFetchAbort: true,\n * fetchMethod: async (key, oldValue, { signal }) => {\n * // note: do NOT pass the signal to fetch()!\n * // let's say this fetch can take a long time.\n * const res = await fetch(`https://slow-backend-server/${key}`)\n * return await res.json()\n * },\n * })\n *\n * // this will return the stale value after 100ms, while still\n * // updating in the background for next time.\n * const val = await c.fetch('key', { signal: AbortSignal.timeout(100) })\n * ```\n *\n * **Note**: regardless of this setting, an `abort` event _is still\n * emitted on the `AbortSignal` object_, so may result in invalid results\n * when passed to other underlying APIs that use AbortSignals.\n *\n * This may be overridden in the {@link OptionsBase.fetchMethod} or the\n * call to {@link LRUCache#fetch}.\n */\n ignoreFetchAbort?: boolean\n }\n\n export interface OptionsMaxLimit<K, V, FC>\n extends OptionsBase<K, V, FC> {\n max: Count\n }\n export interface OptionsTTLLimit<K, V, FC>\n extends OptionsBase<K, V, FC> {\n ttl: Milliseconds\n ttlAutopurge: boolean\n }\n export interface OptionsSizeLimit<K, V, FC>\n extends OptionsBase<K, V, FC> {\n maxSize: Size\n }\n\n /**\n * The valid safe options for the {@link LRUCache} constructor\n */\n export type Options<K, V, FC> =\n | OptionsMaxLimit<K, V, FC>\n | OptionsSizeLimit<K, V, FC>\n | OptionsTTLLimit<K, V, FC>\n\n /**\n * Entry objects used by {@link LRUCache#load} and {@link LRUCache#dump},\n * and returned by {@link LRUCache#info}.\n */\n export interface Entry<V> {\n value: V\n ttl?: Milliseconds\n size?: Size\n start?: Milliseconds\n }\n}\n\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache<K extends {}, V extends {}, FC = unknown>\n implements Map<K, V>\n{\n // options that cannot be changed without disaster\n readonly #max: LRUCache.Count\n readonly #maxSize: LRUCache.Size\n readonly #dispose?: LRUCache.Disposer<K, V>\n readonly #disposeAfter?: LRUCache.Disposer<K, V>\n readonly #fetchMethod?: LRUCache.Fetcher<K, V, FC>\n readonly #memoMethod?: LRUCache.Memoizer<K, V, FC>\n\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl: LRUCache.Milliseconds\n\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution: LRUCache.Milliseconds\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale: boolean\n\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet: boolean\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL: boolean\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize: LRUCache.Size\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation?: LRUCache.SizeCalculator<K, V>\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort: boolean\n\n // computed properties\n #size: LRUCache.Count\n #calculatedSize: LRUCache.Size\n #keyMap: Map<K, Index>\n #keyList: (K | undefined)[]\n #valList: (V | BackgroundFetch<V> | undefined)[]\n #next: NumberArray\n #prev: NumberArray\n #head: Index\n #tail: Index\n #free: StackLike\n #disposed?: DisposeTask<K, V>[]\n #sizes?: ZeroArray\n #starts?: ZeroArray\n #ttls?: ZeroArray\n\n #hasDispose: boolean\n #hasFetchMethod: boolean\n #hasDisposeAfter: boolean\n\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals<\n K extends {},\n V extends {},\n FC extends unknown = unknown\n >(c: LRUCache<K, V, FC>) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap as Map<K, number>,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head\n },\n get tail() {\n return c.#tail\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p: any) => c.#isBackgroundFetch(p),\n backgroundFetch: (\n k: K,\n index: number | undefined,\n options: LRUCache.FetchOptions<K, V, FC>,\n context: any\n ): BackgroundFetch<V> =>\n c.#backgroundFetch(\n k,\n index as Index | undefined,\n options,\n context\n ),\n moveToTail: (index: number): void =>\n c.#moveToTail(index as Index),\n indexes: (options?: { allowStale: boolean }) =>\n c.#indexes(options),\n rindexes: (options?: { allowStale: boolean }) =>\n c.#rindexes(options),\n isStale: (index: number | undefined) =>\n c.#isStale(index as Index),\n }\n }\n\n // Protected read-only members\n\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max(): LRUCache.Count {\n return this.#max\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize(): LRUCache.Count {\n return this.#maxSize\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize(): LRUCache.Size {\n return this.#calculatedSize\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size(): LRUCache.Count {\n return this.#size\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod(): LRUCache.Fetcher<K, V, FC> | undefined {\n return this.#fetchMethod\n }\n get memoMethod(): LRUCache.Memoizer<K, V, FC> | undefined {\n return this.#memoMethod\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter\n }\n\n constructor(\n options: LRUCache.Options<K, V, FC> | LRUCache<K, V, FC>\n ) {\n const {\n max = 0,\n ttl,\n ttlResolution = 1,\n ttlAutopurge,\n updateAgeOnGet,\n updateAgeOnHas,\n allowStale,\n dispose,\n disposeAfter,\n noDisposeOnSet,\n noUpdateTTL,\n maxSize = 0,\n maxEntrySize = 0,\n sizeCalculation,\n fetchMethod,\n memoMethod,\n noDeleteOnFetchRejection,\n noDeleteOnStaleGet,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n } = options\n\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer')\n }\n\n const UintArray = max ? getUintArray(max) : Array\n if (!UintArray) {\n throw new Error('invalid max value: ' + max)\n }\n\n this.#max = max\n this.#maxSize = maxSize\n this.maxEntrySize = maxEntrySize || this.#maxSize\n this.sizeCalculation = sizeCalculation\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError(\n 'cannot set sizeCalculation without setting maxSize or maxEntrySize'\n )\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function')\n }\n }\n\n if (\n memoMethod !== undefined &&\n typeof memoMethod !== 'function'\n ) {\n throw new TypeError('memoMethod must be a function if defined')\n }\n this.#memoMethod = memoMethod\n\n if (\n fetchMethod !== undefined &&\n typeof fetchMethod !== 'function'\n ) {\n throw new TypeError(\n 'fetchMethod must be a function if specified'\n )\n }\n this.#fetchMethod = fetchMethod\n this.#hasFetchMethod = !!fetchMethod\n\n this.#keyMap = new Map()\n this.#keyList = new Array(max).fill(undefined)\n this.#valList = new Array(max).fill(undefined)\n this.#next = new UintArray(max)\n this.#prev = new UintArray(max)\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free = Stack.create(max)\n this.#size = 0\n this.#calculatedSize = 0\n\n if (typeof dispose === 'function') {\n this.#dispose = dispose\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter\n this.#disposed = []\n } else {\n this.#disposeAfter = undefined\n this.#disposed = undefined\n }\n this.#hasDispose = !!this.#dispose\n this.#hasDisposeAfter = !!this.#disposeAfter\n\n this.noDisposeOnSet = !!noDisposeOnSet\n this.noUpdateTTL = !!noUpdateTTL\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n this.ignoreFetchAbort = !!ignoreFetchAbort\n\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError(\n 'maxSize must be a positive integer if specified'\n )\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError(\n 'maxEntrySize must be a positive integer if specified'\n )\n }\n this.#initializeSizeTracking()\n }\n\n this.allowStale = !!allowStale\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n this.updateAgeOnGet = !!updateAgeOnGet\n this.updateAgeOnHas = !!updateAgeOnHas\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1\n this.ttlAutopurge = !!ttlAutopurge\n this.ttl = ttl || 0\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError(\n 'ttl must be a positive integer if specified'\n )\n }\n this.#initializeTTLTracking()\n }\n\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError(\n 'At least one of max, maxSize, or ttl is required'\n )\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED'\n if (shouldWarn(code)) {\n warned.add(code)\n const msg =\n 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.'\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n }\n }\n }\n\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key: K) {\n return this.#keyMap.has(key) ? Infinity : 0\n }\n\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max)\n const starts = new ZeroArray(this.#max)\n this.#ttls = ttls\n this.#starts = starts\n\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0\n ttls[index] = ttl\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index] as K, 'expire')\n }\n }, ttl + 1)\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n }\n }\n\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0\n }\n\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index]\n const start = starts[index]\n /* c8 ignore next */\n if (!ttl || !start) return\n status.ttl = ttl\n status.start = start\n status.now = cachedNow || getNow()\n const age = status.now - start\n status.remainingTTL = ttl - age\n }\n }\n\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0\n const getNow = () => {\n const n = perf.now()\n if (this.ttlResolution > 0) {\n cachedNow = n\n const t = setTimeout(\n () => (cachedNow = 0),\n this.ttlResolution\n )\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n }\n return n\n }\n\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key)\n if (index === undefined) {\n return 0\n }\n const ttl = ttls[index]\n const start = starts[index]\n if (!ttl || !start) {\n return Infinity\n }\n const age = (cachedNow || getNow()) - start\n return ttl - age\n }\n\n this.#isStale = index => {\n const s = starts[index]\n const t = ttls[index]\n return !!t && !!s && (cachedNow || getNow()) - s > t\n }\n }\n\n // conditionally set private methods related to TTL\n #updateItemAge: (index: Index) => void = () => {}\n #statusTTL: (status: LRUCache.Status<V>, index: Index) => void =\n () => {}\n #setItemTTL: (\n index: Index,\n ttl: LRUCache.Milliseconds,\n start?: LRUCache.Milliseconds\n // ignore because we never call this if we're not already in TTL mode\n /* c8 ignore start */\n ) => void = () => {}\n /* c8 ignore stop */\n\n #isStale: (index: Index) => boolean = () => false\n\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max)\n this.#calculatedSize = 0\n this.#sizes = sizes\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index] as number\n sizes[index] = 0\n }\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function')\n }\n size = sizeCalculation(v, k)\n if (!isPosInt(size)) {\n throw new TypeError(\n 'sizeCalculation return invalid (expect positive integer)'\n )\n }\n } else {\n throw new TypeError(\n 'invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.'\n )\n }\n }\n return size\n }\n this.#addItemSize = (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status<V>\n ) => {\n sizes[index] = size\n if (this.#maxSize) {\n const maxSize = this.#maxSize - (sizes[index] as number)\n while (this.#calculatedSize > maxSize) {\n this.#evict(true)\n }\n }\n this.#calculatedSize += sizes[index] as number\n if (status) {\n status.entrySize = size\n status.totalCalculatedSize = this.#calculatedSize\n }\n }\n }\n\n #removeItemSize: (index: Index) => void = _i => {}\n #addItemSize: (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status<V>\n ) => void = (_i, _s, _st) => {}\n #requireSize: (\n k: K,\n v: V | BackgroundFetch<V>,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator<K, V>\n ) => LRUCache.Size = (\n _k: K,\n _v: V | BackgroundFetch<V>,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator<K, V>\n ) => {\n if (size || sizeCalculation) {\n throw new TypeError(\n 'cannot set size without setting maxSize or maxEntrySize on cache'\n )\n }\n return 0\n };\n\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true; ) {\n if (!this.#isValidIndex(i)) {\n break\n }\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#head) {\n break\n } else {\n i = this.#prev[i] as Index\n }\n }\n }\n }\n\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true; ) {\n if (!this.#isValidIndex(i)) {\n break\n }\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#tail) {\n break\n } else {\n i = this.#next[i] as Index\n }\n }\n }\n }\n\n #isValidIndex(index: Index) {\n return (\n index !== undefined &&\n this.#keyMap.get(this.#keyList[index] as K) === index\n )\n }\n\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]] as [K, V]\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]]\n }\n }\n }\n\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i]\n if (\n k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield k\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i]\n if (\n k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield k\n }\n }\n }\n\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n if (\n v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield this.#valList[i] as V\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n if (\n v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield this.#valList[i]\n }\n }\n }\n\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries()\n }\n\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache'\n\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(\n fn: (v: V, k: K, self: LRUCache<K, V, FC>) => boolean,\n getOptions: LRUCache.GetOptions<K, V, FC> = {}\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n if (fn(value, this.#keyList[i] as K, this)) {\n return this.get(this.#keyList[i] as K, getOptions)\n }\n }\n }\n\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(\n fn: (v: V, k: K, self: LRUCache<K, V, FC>) => any,\n thisp: any = this\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(\n fn: (v: V, k: K, self: LRUCache<K, V, FC>) => any,\n thisp: any = this\n ) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i] as K, 'expire')\n deleted = true\n }\n }\n return deleted\n }\n\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key: K): LRUCache.Entry<V> | undefined {\n const i = this.#keyMap.get(key)\n if (i === undefined) return undefined\n const v = this.#valList[i]\n const value: V | undefined = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) return undefined\n const entry: LRUCache.Entry<V> = { value }\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i]\n const start = this.#starts[i]\n if (ttl && start) {\n const remain = ttl - (perf.now() - start)\n entry.ttl = remain\n entry.start = Date.now()\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n return entry\n }\n\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRLUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr: [K, LRUCache.Entry<V>][] = []\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i]\n const v = this.#valList[i]\n const value: V | undefined = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined || key === undefined) continue\n const entry: LRUCache.Entry<V> = { value }\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i]\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - (this.#starts[i] as number)\n entry.start = Math.floor(Date.now() - age)\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n arr.unshift([key, entry])\n }\n return arr\n }\n\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr: [K, LRUCache.Entry<V>][]) {\n this.clear()\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start\n entry.start = perf.now() - age\n }\n this.set(key, entry.value, entry)\n }\n }\n\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(\n k: K,\n v: V | BackgroundFetch<V> | undefined,\n setOptions: LRUCache.SetOptions<K, V, FC> = {}\n ) {\n if (v === undefined) {\n this.delete(k)\n return this\n }\n const {\n ttl = this.ttl,\n start,\n noDisposeOnSet = this.noDisposeOnSet,\n sizeCalculation = this.sizeCalculation,\n status,\n } = setOptions\n let { noUpdateTTL = this.noUpdateTTL } = setOptions\n\n const size = this.#requireSize(\n k,\n v,\n setOptions.size || 0,\n sizeCalculation\n )\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss'\n status.maxEntrySizeExceeded = true\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set')\n return this\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k)\n if (index === undefined) {\n // addition\n index = (\n this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size\n ) as Index\n this.#keyList[index] = k\n this.#valList[index] = v\n this.#keyMap.set(k, index)\n this.#next[this.#tail] = index\n this.#prev[index] = this.#tail\n this.#tail = index\n this.#size++\n this.#addItemSize(index, size, status)\n if (status) status.set = 'add'\n noUpdateTTL = false\n } else {\n // update\n this.#moveToTail(index)\n const oldVal = this.#valList[index] as V | BackgroundFetch<V>\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'))\n const { __staleWhileFetching: s } = oldVal\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s as V, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s as V, k, 'set'])\n }\n }\n } else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal as V, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal as V, k, 'set'])\n }\n }\n this.#removeItemSize(index)\n this.#addItemSize(index, size, status)\n this.#valList[index] = v\n if (status) {\n status.set = 'replace'\n const oldValue =\n oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal\n if (oldValue !== undefined) status.oldValue = oldValue\n }\n } else if (status) {\n status.set = 'update'\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking()\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start)\n }\n if (status) this.#statusTTL(status, index)\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return this\n }\n\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop(): V | undefined {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head]\n this.#evict(true)\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching\n }\n } else if (val !== undefined) {\n return val\n }\n }\n } finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n }\n\n #evict(free: boolean) {\n const head = this.#head\n const k = this.#keyList[head] as K\n const v = this.#valList[head] as V\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'))\n } else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict'])\n }\n }\n this.#removeItemSize(head)\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined\n this.#valList[head] = undefined\n this.#free.push(head)\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0 as Index\n this.#free.length = 0\n } else {\n this.#head = this.#next[head] as Index\n }\n this.#keyMap.delete(k)\n this.#size--\n return head\n }\n\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k: K, hasOptions: LRUCache.HasOptions<K, V, FC> = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } =\n hasOptions\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n const v = this.#valList[index]\n if (\n this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined\n ) {\n return false\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index)\n }\n if (status) {\n status.has = 'hit'\n this.#statusTTL(status, index)\n }\n return true\n } else if (status) {\n status.has = 'stale'\n this.#statusTTL(status, index)\n }\n } else if (status) {\n status.has = 'miss'\n }\n return false\n }\n\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k: K, peekOptions: LRUCache.PeekOptions<K, V, FC> = {}) {\n const { allowStale = this.allowStale } = peekOptions\n const index = this.#keyMap.get(k)\n if (\n index === undefined ||\n (!allowStale && this.#isStale(index))\n ) {\n return\n }\n const v = this.#valList[index]\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n }\n\n #backgroundFetch(\n k: K,\n index: Index | undefined,\n options: LRUCache.FetchOptions<K, V, FC>,\n context: any\n ): BackgroundFetch<V> {\n const v = index === undefined ? undefined : this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n return v\n }\n\n const ac = new AC()\n const { signal } = options\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n })\n\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n }\n\n const cb = (\n v: V | undefined,\n updateCache = false\n ): V | undefined => {\n const { aborted } = ac.signal\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true\n options.status.fetchError = ac.signal.reason\n if (ignoreAbort) options.status.fetchAbortIgnored = true\n } else {\n options.status.fetchResolved = true\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason)\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p as BackgroundFetch<V>\n if (this.#valList[index as Index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index as Index] = bf.__staleWhileFetching\n } else {\n this.#delete(k, 'fetch')\n }\n } else {\n if (options.status) options.status.fetchUpdated = true\n this.set(k, v, fetchOpts.options)\n }\n }\n return v\n }\n\n const eb = (er: any) => {\n if (options.status) {\n options.status.fetchRejected = true\n options.status.fetchError = er\n }\n return fetchFail(er)\n }\n\n const fetchFail = (er: any): V | undefined => {\n const { aborted } = ac.signal\n const allowStaleAborted =\n aborted && options.allowStaleOnFetchAbort\n const allowStale =\n allowStaleAborted || options.allowStaleOnFetchRejection\n const noDelete = allowStale || options.noDeleteOnFetchRejection\n const bf = p as BackgroundFetch<V>\n if (this.#valList[index as Index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined\n if (del) {\n this.#delete(k, 'fetch')\n } else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index as Index] = bf.__staleWhileFetching\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true\n }\n return bf.__staleWhileFetching\n } else if (bf.__returned === bf) {\n throw er\n }\n }\n\n const pcall = (\n res: (v: V | undefined) => void,\n rej: (e: any) => void\n ) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts)\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej)\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (\n !options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort\n ) {\n res(undefined)\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true)\n }\n }\n })\n }\n\n if (options.status) options.status.fetchDispatched = true\n const p = new Promise(pcall).then(cb, eb)\n const bf: BackgroundFetch<V> = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n })\n\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined })\n index = this.#keyMap.get(k)\n } else {\n this.#valList[index] = bf\n }\n return bf\n }\n\n #isBackgroundFetch(p: any): p is BackgroundFetch<V> {\n if (!this.#hasFetchMethod) return false\n const b = p as BackgroundFetch<V>\n return (\n !!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC\n )\n }\n\n /**\n * Make an asynchronous cached fetch using the\n * {@link LRUCache.OptionsBase.fetchMethod} function.\n *\n * If the value is in the cache and not stale, then the returned\n * Promise resolves to the value.\n *\n * If not in the cache, or beyond its TTL staleness, then\n * `fetchMethod(key, staleValue, { options, signal, context })` is\n * called, and the value returned will be added to the cache once\n * resolved.\n *\n * If called with `allowStale`, and an asynchronous fetch is\n * currently in progress to reload a stale value, then the former\n * stale value will be returned.\n *\n * If called with `forceRefresh`, then the cached item will be\n * re-fetched, even if it is not stale. However, if `allowStale` is also\n * set, then the old value will still be returned. This is useful\n * in cases where you want to force a reload of a cached value. If\n * a background fetch is already in progress, then `forceRefresh`\n * has no effect.\n *\n * If multiple fetches for the same key are issued, then they will all be\n * coalesced into a single call to fetchMethod.\n *\n * Note that this means that handling options such as\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort},\n * {@link LRUCache.FetchOptions.signal},\n * and {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} will be\n * determined by the FIRST fetch() call for a given key.\n *\n * This is a known (fixable) shortcoming which will be addresed on when\n * someone complains about it, as the fix would involve added complexity and\n * may not be worth the costs for this edge case.\n *\n * If {@link LRUCache.OptionsBase.fetchMethod} is not specified, then this is\n * effectively an alias for `Promise.resolve(cache.get(key))`.\n *\n * When the fetch method resolves to a value, if the fetch has not\n * been aborted due to deletion, eviction, or being overwritten,\n * then it is added to the cache using the options provided.\n *\n * If the key is evicted or deleted before the `fetchMethod`\n * resolves, then the AbortSignal passed to the `fetchMethod` will\n * receive an `abort` event, and the promise returned by `fetch()`\n * will reject with the reason for the abort.\n *\n * If a `signal` is passed to the `fetch()` call, then aborting the\n * signal will abort the fetch and cause the `fetch()` promise to\n * reject with the reason provided.\n *\n * **Setting `context`**\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the {@link LRUCache} constructor, then all\n * calls to `cache.fetch()` _must_ provide a `context` option. If\n * set to `undefined` or `void`, then calls to fetch _must not_\n * provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that\n * might be relevant in the course of fetching the data. It is only\n * relevant for the course of a single `fetch()` operation, and\n * discarded afterwards.\n *\n * **Note: `fetch()` calls are inflight-unique**\n *\n * If you call `fetch()` multiple times with the same key value,\n * then every call after the first will resolve on the same\n * promise<sup>1</sup>,\n * _even if they have different settings that would otherwise change\n * the behavior of the fetch_, such as `noDeleteOnFetchRejection`\n * or `ignoreFetchAbort`.\n *\n * In most cases, this is not a problem (in fact, only fetching\n * something once is what you probably want, if you're caching in\n * the first place). If you are changing the fetch() options\n * dramatically between runs, there's a good chance that you might\n * be trying to fit divergent semantics into a single object, and\n * would be better off with multiple cache instances.\n *\n * **1**: Ie, they're not the \"same Promise\", but they resolve at\n * the same time, because they're both waiting on the same\n * underlying fetchMethod response.\n */\n\n fetch(\n k: K,\n fetchOptions: unknown extends FC\n ? LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext<K, V>\n : LRUCache.FetchOptionsWithContext<K, V, FC>\n ): Promise<undefined | V>\n\n // this overload not allowed if context is required\n fetch(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n fetchOptions?: unknown extends FC\n ? LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext<K, V>\n : never\n ): Promise<undefined | V>\n\n async fetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions<K, V, FC> = {}\n ): Promise<undefined | V> {\n const {\n // get options\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n // set options\n ttl = this.ttl,\n noDisposeOnSet = this.noDisposeOnSet,\n size = 0,\n sizeCalculation = this.sizeCalculation,\n noUpdateTTL = this.noUpdateTTL,\n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n ignoreFetchAbort = this.ignoreFetchAbort,\n allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n context,\n forceRefresh = false,\n status,\n signal,\n } = fetchOptions\n\n if (!this.#hasFetchMethod) {\n if (status) status.fetch = 'get'\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n })\n }\n\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n }\n\n let index = this.#keyMap.get(k)\n if (index === undefined) {\n if (status) status.fetch = 'miss'\n const p = this.#backgroundFetch(k, index, options, context)\n return (p.__returned = p)\n } else {\n // in cache, maybe already fetching\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n const stale =\n allowStale && v.__staleWhileFetching !== undefined\n if (status) {\n status.fetch = 'inflight'\n if (stale) status.returnedStale = true\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v)\n }\n\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index)\n if (!forceRefresh && !isStale) {\n if (status) status.fetch = 'hit'\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n if (status) this.#statusTTL(status, index)\n return v\n }\n\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context)\n const hasStale = p.__staleWhileFetching !== undefined\n const staleVal = hasStale && allowStale\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh'\n if (staleVal && isStale) status.returnedStale = true\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n }\n }\n\n /**\n * In some cases, `cache.fetch()` may resolve to `undefined`, either because\n * a {@link LRUCache.OptionsBase#fetchMethod} was not provided (turning\n * `cache.fetch(k)` into just an async wrapper around `cache.get(k)`) or\n * because `ignoreFetchAbort` was specified (either to the constructor or\n * in the {@link LRUCache.FetchOptions}). Also, the\n * {@link OptionsBase.fetchMethod} may return `undefined` or `void`, making\n * the test even more complicated.\n *\n * Because inferring the cases where `undefined` might be returned are so\n * cumbersome, but testing for `undefined` can also be annoying, this method\n * can be used, which will reject if `this.fetch()` resolves to undefined.\n */\n forceFetch(\n k: K,\n fetchOptions: unknown extends FC\n ? LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext<K, V>\n : LRUCache.FetchOptionsWithContext<K, V, FC>\n ): Promise<V>\n // this overload not allowed if context is required\n forceFetch(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n fetchOptions?: unknown extends FC\n ? LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext<K, V>\n : never\n ): Promise<V>\n async forceFetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions<K, V, FC> = {}\n ): Promise<V> {\n const v = await this.fetch(\n k,\n fetchOptions as unknown extends FC\n ? LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext<K, V>\n : LRUCache.FetchOptionsWithContext<K, V, FC>\n )\n if (v === undefined) throw new Error('fetch() returned undefined')\n return v\n }\n\n /**\n * If the key is found in the cache, then this is equivalent to\n * {@link LRUCache#get}. If not, in the cache, then calculate the value using\n * the {@link LRUCache.OptionsBase.memoMethod}, and add it to the cache.\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the LRUCache constructor, then all calls to `cache.memo()`\n * _must_ provide a `context` option. If set to `undefined` or `void`, then\n * calls to memo _must not_ provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that might be\n * relevant in the course of fetching the data. It is only relevant for the\n * course of a single `memo()` operation, and discarded afterwards.\n */\n memo(\n k: K,\n memoOptions: unknown extends FC\n ? LRUCache.MemoOptions<K, V, FC>\n : FC extends undefined | void\n ? LRUCache.MemoOptionsNoContext<K, V>\n : LRUCache.MemoOptionsWithContext<K, V, FC>\n ): V\n // this overload not allowed if context is required\n memo(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n memoOptions?: unknown extends FC\n ? LRUCache.MemoOptions<K, V, FC>\n : FC extends undefined | void\n ? LRUCache.MemoOptionsNoContext<K, V>\n : never\n ): V\n memo(k: K, memoOptions: LRUCache.MemoOptions<K, V, FC> = {}) {\n const memoMethod = this.#memoMethod\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor')\n }\n const { context, forceRefresh, ...options } = memoOptions\n const v = this.get(k, options)\n if (!forceRefresh && v !== undefined) return v\n const vv = memoMethod(k, v, {\n options,\n context,\n } as LRUCache.MemoizerOptions<K, V, FC>)\n this.set(k, vv, options)\n return vv\n }\n\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k: K, getOptions: LRUCache.GetOptions<K, V, FC> = {}) {\n const {\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n status,\n } = getOptions\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n const value = this.#valList[index]\n const fetching = this.#isBackgroundFetch(value)\n if (status) this.#statusTTL(status, index)\n if (this.#isStale(index)) {\n if (status) status.get = 'stale'\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire')\n }\n if (status && allowStale) status.returnedStale = true\n return allowStale ? value : undefined\n } else {\n if (\n status &&\n allowStale &&\n value.__staleWhileFetching !== undefined\n ) {\n status.returnedStale = true\n }\n return allowStale ? value.__staleWhileFetching : undefined\n }\n } else {\n if (status) status.get = 'hit'\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching\n }\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n return value\n }\n } else if (status) {\n status.get = 'miss'\n }\n }\n\n #connect(p: Index, n: Index) {\n this.#prev[n] = p\n this.#next[p] = n\n }\n\n #moveToTail(index: Index): void {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n this.#connect(\n this.#prev[index] as Index,\n this.#next[index] as Index\n )\n }\n this.#connect(this.#tail, index)\n this.#tail = index\n }\n }\n\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k: K) {\n return this.#delete(k, 'delete')\n }\n\n #delete(k: K, reason: LRUCache.DisposeReason) {\n let deleted = false\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n deleted = true\n if (this.#size === 1) {\n this.#clear(reason)\n } else {\n this.#removeItemSize(index)\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k, reason])\n }\n }\n this.#keyMap.delete(k)\n this.#keyList[index] = undefined\n this.#valList[index] = undefined\n if (index === this.#tail) {\n this.#tail = this.#prev[index] as Index\n } else if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n const pi = this.#prev[index] as number\n this.#next[pi] = this.#next[index] as number\n const ni = this.#next[index] as number\n this.#prev[ni] = this.#prev[index] as number\n }\n this.#size--\n this.#free.push(index)\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return deleted\n }\n\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete')\n }\n #clear(reason: LRUCache.DisposeReason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else {\n const k = this.#keyList[index]\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k as K, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k as K, reason])\n }\n }\n }\n\n this.#keyMap.clear()\n this.#valList.fill(undefined)\n this.#keyList.fill(undefined)\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0)\n this.#starts.fill(0)\n }\n if (this.#sizes) {\n this.#sizes.fill(0)\n }\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free.length = 0\n this.#calculatedSize = 0\n this.#size = 0\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n}\n","/* eslint-disable max-len */\n\n'use strict'\n\nconst maybeJoin = (...args) => args.every(arg => arg) ? args.join('') : ''\nconst maybeEncode = (arg) => arg ? encodeURIComponent(arg) : ''\nconst formatHashFragment = (f) => f.toLowerCase().replace(/^\\W+|\\/|\\W+$/g, '').replace(/\\W+/g, '-')\n\nconst defaults = {\n sshtemplate: ({ domain, user, project, committish }) =>\n `git@${domain}:${user}/${project}.git${maybeJoin('#', committish)}`,\n sshurltemplate: ({ domain, user, project, committish }) =>\n `git+ssh://git@${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n edittemplate: ({ domain, user, project, committish, editpath, path }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', editpath, '/', maybeEncode(committish || 'HEAD'), '/', path)}`,\n browsetemplate: ({ domain, user, project, committish, treepath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish))}`,\n browsetreetemplate: ({ domain, user, project, committish, treepath, path, fragment, hashformat }) =>\n `https://${domain}/${user}/${project}/${treepath}/${maybeEncode(committish || 'HEAD')}/${path}${maybeJoin('#', hashformat(fragment || ''))}`,\n browseblobtemplate: ({ domain, user, project, committish, blobpath, path, fragment, hashformat }) =>\n `https://${domain}/${user}/${project}/${blobpath}/${maybeEncode(committish || 'HEAD')}/${path}${maybeJoin('#', hashformat(fragment || ''))}`,\n docstemplate: ({ domain, user, project, treepath, committish }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish))}#readme`,\n httpstemplate: ({ auth, domain, user, project, committish }) =>\n `git+https://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n filetemplate: ({ domain, user, project, committish, path }) =>\n `https://${domain}/${user}/${project}/raw/${maybeEncode(committish || 'HEAD')}/${path}`,\n shortcuttemplate: ({ type, user, project, committish }) =>\n `${type}:${user}/${project}${maybeJoin('#', committish)}`,\n pathtemplate: ({ user, project, committish }) =>\n `${user}/${project}${maybeJoin('#', committish)}`,\n bugstemplate: ({ domain, user, project }) =>\n `https://${domain}/${user}/${project}/issues`,\n hashformat: formatHashFragment,\n}\n\nconst hosts = {}\nhosts.github = {\n // First two are insecure and generally shouldn't be used any more, but\n // they are still supported.\n protocols: ['git:', 'http:', 'git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'github.com',\n treepath: 'tree',\n blobpath: 'blob',\n editpath: 'edit',\n filetemplate: ({ auth, user, project, committish, path }) =>\n `https://${maybeJoin(auth, '@')}raw.githubusercontent.com/${user}/${project}/${maybeEncode(committish || 'HEAD')}/${path}`,\n gittemplate: ({ auth, domain, user, project, committish }) =>\n `git://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://codeload.${domain}/${user}/${project}/tar.gz/${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n let [, user, project, type, committish] = url.pathname.split('/', 5)\n if (type && type !== 'tree') {\n return\n }\n\n if (!type) {\n committish = url.hash.slice(1)\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish }\n },\n}\n\nhosts.bitbucket = {\n protocols: ['git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'bitbucket.org',\n treepath: 'src',\n blobpath: 'src',\n editpath: '?mode=edit',\n edittemplate: ({ domain, user, project, committish, treepath, path, editpath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish || 'HEAD'), '/', path, editpath)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/get/${maybeEncode(committish || 'HEAD')}.tar.gz`,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n if (['get'].includes(aux)) {\n return\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nhosts.gitlab = {\n protocols: ['git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'gitlab.com',\n treepath: 'tree',\n blobpath: 'tree',\n editpath: '-/edit',\n httpstemplate: ({ auth, domain, user, project, committish }) =>\n `git+https://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/repository/archive.tar.gz?ref=${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n const path = url.pathname.slice(1)\n if (path.includes('/-/') || path.includes('/archive.tar.gz')) {\n return\n }\n\n const segments = path.split('/')\n let project = segments.pop()\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n const user = segments.join('/')\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nhosts.gist = {\n protocols: ['git:', 'git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'gist.github.com',\n editpath: 'edit',\n sshtemplate: ({ domain, project, committish }) =>\n `git@${domain}:${project}.git${maybeJoin('#', committish)}`,\n sshurltemplate: ({ domain, project, committish }) =>\n `git+ssh://git@${domain}/${project}.git${maybeJoin('#', committish)}`,\n edittemplate: ({ domain, user, project, committish, editpath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', maybeEncode(committish))}/${editpath}`,\n browsetemplate: ({ domain, project, committish }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}`,\n browsetreetemplate: ({ domain, project, committish, path, hashformat }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}${maybeJoin('#', hashformat(path))}`,\n browseblobtemplate: ({ domain, project, committish, path, hashformat }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}${maybeJoin('#', hashformat(path))}`,\n docstemplate: ({ domain, project, committish }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}`,\n httpstemplate: ({ domain, project, committish }) =>\n `git+https://${domain}/${project}.git${maybeJoin('#', committish)}`,\n filetemplate: ({ user, project, committish, path }) =>\n `https://gist.githubusercontent.com/${user}/${project}/raw${maybeJoin('/', maybeEncode(committish))}/${path}`,\n shortcuttemplate: ({ type, project, committish }) =>\n `${type}:${project}${maybeJoin('#', committish)}`,\n pathtemplate: ({ project, committish }) =>\n `${project}${maybeJoin('#', committish)}`,\n bugstemplate: ({ domain, project }) =>\n `https://${domain}/${project}`,\n gittemplate: ({ domain, project, committish }) =>\n `git://${domain}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ project, committish }) =>\n `https://codeload.github.com/gist/${project}/tar.gz/${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n if (aux === 'raw') {\n return\n }\n\n if (!project) {\n if (!user) {\n return\n }\n\n project = user\n user = null\n }\n\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n hashformat: function (fragment) {\n return fragment && 'file-' + formatHashFragment(fragment)\n },\n}\n\nhosts.sourcehut = {\n protocols: ['git+ssh:', 'https:'],\n domain: 'git.sr.ht',\n treepath: 'tree',\n blobpath: 'tree',\n filetemplate: ({ domain, user, project, committish, path }) =>\n `https://${domain}/${user}/${project}/blob/${maybeEncode(committish) || 'HEAD'}/${path}`,\n httpstemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/archive/${maybeEncode(committish) || 'HEAD'}.tar.gz`,\n bugstemplate: () => null,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n\n // tarball url\n if (['archive'].includes(aux)) {\n return\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nfor (const [name, host] of Object.entries(hosts)) {\n hosts[name] = Object.assign({}, defaults, host)\n}\n\nmodule.exports = hosts\n","const url = require('url')\n\nconst lastIndexOfBefore = (str, char, beforeChar) => {\n const startPosition = str.indexOf(beforeChar)\n return str.lastIndexOf(char, startPosition > -1 ? startPosition : Infinity)\n}\n\nconst safeUrl = (u) => {\n try {\n return new url.URL(u)\n } catch {\n // this fn should never throw\n }\n}\n\n// accepts input like git:github.com:user/repo and inserts the // after the first :\nconst correctProtocol = (arg, protocols) => {\n const firstColon = arg.indexOf(':')\n const proto = arg.slice(0, firstColon + 1)\n if (Object.prototype.hasOwnProperty.call(protocols, proto)) {\n return arg\n }\n\n const firstAt = arg.indexOf('@')\n if (firstAt > -1) {\n if (firstAt > firstColon) {\n return `git+ssh://${arg}`\n } else {\n return arg\n }\n }\n\n const doubleSlash = arg.indexOf('//')\n if (doubleSlash === firstColon + 1) {\n return arg\n }\n\n return `${arg.slice(0, firstColon + 1)}//${arg.slice(firstColon + 1)}`\n}\n\n// attempt to correct an scp style url so that it will parse with `new URL()`\nconst correctUrl = (giturl) => {\n // ignore @ that come after the first hash since the denotes the start\n // of a committish which can contain @ characters\n const firstAt = lastIndexOfBefore(giturl, '@', '#')\n // ignore colons that come after the hash since that could include colons such as:\n // git@github.com:user/package-2#semver:^1.0.0\n const lastColonBeforeHash = lastIndexOfBefore(giturl, ':', '#')\n\n if (lastColonBeforeHash > firstAt) {\n // the last : comes after the first @ (or there is no @)\n // like it would in:\n // proto://hostname.com:user/repo\n // username@hostname.com:user/repo\n // :password@hostname.com:user/repo\n // username:password@hostname.com:user/repo\n // proto://username@hostname.com:user/repo\n // proto://:password@hostname.com:user/repo\n // proto://username:password@hostname.com:user/repo\n // then we replace the last : with a / to create a valid path\n giturl = giturl.slice(0, lastColonBeforeHash) + '/' + giturl.slice(lastColonBeforeHash + 1)\n }\n\n if (lastIndexOfBefore(giturl, ':', '#') === -1 && giturl.indexOf('//') === -1) {\n // we have no : at all\n // as it would be in:\n // username@hostname.com/user/repo\n // then we prepend a protocol\n giturl = `git+ssh://${giturl}`\n }\n\n return giturl\n}\n\nmodule.exports = (giturl, protocols) => {\n const withProtocol = protocols ? correctProtocol(giturl, protocols) : giturl\n return safeUrl(withProtocol) || safeUrl(correctUrl(withProtocol))\n}\n","'use strict'\n\nconst parseUrl = require('./parse-url')\n\n// look for github shorthand inputs, such as npm/cli\nconst isGitHubShorthand = (arg) => {\n // it cannot contain whitespace before the first #\n // it cannot start with a / because that's probably an absolute file path\n // but it must include a slash since repos are username/repository\n // it cannot start with a . because that's probably a relative file path\n // it cannot start with an @ because that's a scoped package if it passes the other tests\n // it cannot contain a : before a # because that tells us that there's a protocol\n // a second / may not exist before a #\n const firstHash = arg.indexOf('#')\n const firstSlash = arg.indexOf('/')\n const secondSlash = arg.indexOf('/', firstSlash + 1)\n const firstColon = arg.indexOf(':')\n const firstSpace = /\\s/.exec(arg)\n const firstAt = arg.indexOf('@')\n\n const spaceOnlyAfterHash = !firstSpace || (firstHash > -1 && firstSpace.index > firstHash)\n const atOnlyAfterHash = firstAt === -1 || (firstHash > -1 && firstAt > firstHash)\n const colonOnlyAfterHash = firstColon === -1 || (firstHash > -1 && firstColon > firstHash)\n const secondSlashOnlyAfterHash = secondSlash === -1 || (firstHash > -1 && secondSlash > firstHash)\n const hasSlash = firstSlash > 0\n // if a # is found, what we really want to know is that the character\n // immediately before # is not a /\n const doesNotEndWithSlash = firstHash > -1 ? arg[firstHash - 1] !== '/' : !arg.endsWith('/')\n const doesNotStartWithDot = !arg.startsWith('.')\n\n return spaceOnlyAfterHash && hasSlash && doesNotEndWithSlash &&\n doesNotStartWithDot && atOnlyAfterHash && colonOnlyAfterHash &&\n secondSlashOnlyAfterHash\n}\n\nmodule.exports = (giturl, opts, { gitHosts, protocols }) => {\n if (!giturl) {\n return\n }\n\n const correctedUrl = isGitHubShorthand(giturl) ? `github:${giturl}` : giturl\n const parsed = parseUrl(correctedUrl, protocols)\n if (!parsed) {\n return\n }\n\n const gitHostShortcut = gitHosts.byShortcut[parsed.protocol]\n const gitHostDomain = gitHosts.byDomain[parsed.hostname.startsWith('www.')\n ? parsed.hostname.slice(4)\n : parsed.hostname]\n const gitHostName = gitHostShortcut || gitHostDomain\n if (!gitHostName) {\n return\n }\n\n const gitHostInfo = gitHosts[gitHostShortcut || gitHostDomain]\n let auth = null\n if (protocols[parsed.protocol]?.auth && (parsed.username || parsed.password)) {\n auth = `${parsed.username}${parsed.password ? ':' + parsed.password : ''}`\n }\n\n let committish = null\n let user = null\n let project = null\n let defaultRepresentation = null\n\n try {\n if (gitHostShortcut) {\n let pathname = parsed.pathname.startsWith('/') ? parsed.pathname.slice(1) : parsed.pathname\n const firstAt = pathname.indexOf('@')\n // we ignore auth for shortcuts, so just trim it out\n if (firstAt > -1) {\n pathname = pathname.slice(firstAt + 1)\n }\n\n const lastSlash = pathname.lastIndexOf('/')\n if (lastSlash > -1) {\n user = decodeURIComponent(pathname.slice(0, lastSlash))\n // we want nulls only, never empty strings\n if (!user) {\n user = null\n }\n project = decodeURIComponent(pathname.slice(lastSlash + 1))\n } else {\n project = decodeURIComponent(pathname)\n }\n\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (parsed.hash) {\n committish = decodeURIComponent(parsed.hash.slice(1))\n }\n\n defaultRepresentation = 'shortcut'\n } else {\n if (!gitHostInfo.protocols.includes(parsed.protocol)) {\n return\n }\n\n const segments = gitHostInfo.extract(parsed)\n if (!segments) {\n return\n }\n\n user = segments.user && decodeURIComponent(segments.user)\n project = decodeURIComponent(segments.project)\n committish = decodeURIComponent(segments.committish)\n defaultRepresentation = protocols[parsed.protocol]?.name || parsed.protocol.slice(0, -1)\n }\n } catch (err) {\n /* istanbul ignore else */\n if (err instanceof URIError) {\n return\n } else {\n throw err\n }\n }\n\n return [gitHostName, user, auth, project, committish, defaultRepresentation, opts]\n}\n","'use strict'\n\nconst { LRUCache } = require('lru-cache')\nconst hosts = require('./hosts.js')\nconst fromUrl = require('./from-url.js')\nconst parseUrl = require('./parse-url.js')\n\nconst cache = new LRUCache({ max: 1000 })\n\nclass GitHost {\n constructor (type, user, auth, project, committish, defaultRepresentation, opts = {}) {\n Object.assign(this, GitHost.#gitHosts[type], {\n type,\n user,\n auth,\n project,\n committish,\n default: defaultRepresentation,\n opts,\n })\n }\n\n static #gitHosts = { byShortcut: {}, byDomain: {} }\n static #protocols = {\n 'git+ssh:': { name: 'sshurl' },\n 'ssh:': { name: 'sshurl' },\n 'git+https:': { name: 'https', auth: true },\n 'git:': { auth: true },\n 'http:': { auth: true },\n 'https:': { auth: true },\n 'git+http:': { auth: true },\n }\n\n static addHost (name, host) {\n GitHost.#gitHosts[name] = host\n GitHost.#gitHosts.byDomain[host.domain] = name\n GitHost.#gitHosts.byShortcut[`${name}:`] = name\n GitHost.#protocols[`${name}:`] = { name }\n }\n\n static fromUrl (giturl, opts) {\n if (typeof giturl !== 'string') {\n return\n }\n\n const key = giturl + JSON.stringify(opts || {})\n\n if (!cache.has(key)) {\n const hostArgs = fromUrl(giturl, opts, {\n gitHosts: GitHost.#gitHosts,\n protocols: GitHost.#protocols,\n })\n cache.set(key, hostArgs ? new GitHost(...hostArgs) : undefined)\n }\n\n return cache.get(key)\n }\n\n static parseUrl (url) {\n return parseUrl(url)\n }\n\n #fill (template, opts) {\n if (typeof template !== 'function') {\n return null\n }\n\n const options = { ...this, ...this.opts, ...opts }\n\n // the path should always be set so we don't end up with 'undefined' in urls\n if (!options.path) {\n options.path = ''\n }\n\n // template functions will insert the leading slash themselves\n if (options.path.startsWith('/')) {\n options.path = options.path.slice(1)\n }\n\n if (options.noCommittish) {\n options.committish = null\n }\n\n const result = template(options)\n return options.noGitPlus && result.startsWith('git+') ? result.slice(4) : result\n }\n\n hash () {\n return this.committish ? `#${this.committish}` : ''\n }\n\n ssh (opts) {\n return this.#fill(this.sshtemplate, opts)\n }\n\n sshurl (opts) {\n return this.#fill(this.sshurltemplate, opts)\n }\n\n browse (path, ...args) {\n // not a string, treat path as opts\n if (typeof path !== 'string') {\n return this.#fill(this.browsetemplate, path)\n }\n\n if (typeof args[0] !== 'string') {\n return this.#fill(this.browsetreetemplate, { ...args[0], path })\n }\n\n return this.#fill(this.browsetreetemplate, { ...args[1], fragment: args[0], path })\n }\n\n // If the path is known to be a file, then browseFile should be used. For some hosts\n // the url is the same as browse, but for others like GitHub a file can use both `/tree/`\n // and `/blob/` in the path. When using a default committish of `HEAD` then the `/tree/`\n // path will redirect to a specific commit. Using the `/blob/` path avoids this and\n // does not redirect to a different commit.\n browseFile (path, ...args) {\n if (typeof args[0] !== 'string') {\n return this.#fill(this.browseblobtemplate, { ...args[0], path })\n }\n\n return this.#fill(this.browseblobtemplate, { ...args[1], fragment: args[0], path })\n }\n\n docs (opts) {\n return this.#fill(this.docstemplate, opts)\n }\n\n bugs (opts) {\n return this.#fill(this.bugstemplate, opts)\n }\n\n https (opts) {\n return this.#fill(this.httpstemplate, opts)\n }\n\n git (opts) {\n return this.#fill(this.gittemplate, opts)\n }\n\n shortcut (opts) {\n return this.#fill(this.shortcuttemplate, opts)\n }\n\n path (opts) {\n return this.#fill(this.pathtemplate, opts)\n }\n\n tarball (opts) {\n return this.#fill(this.tarballtemplate, { ...opts, noCommittish: false })\n }\n\n file (path, opts) {\n return this.#fill(this.filetemplate, { ...opts, path })\n }\n\n edit (path, opts) {\n return this.#fill(this.edittemplate, { ...opts, path })\n }\n\n getDefaultRepresentation () {\n return this.default\n }\n\n toString (opts) {\n if (this.default && typeof this[this.default] === 'function') {\n return this[this.default](opts)\n }\n\n return this.sshurl(opts)\n }\n}\n\nfor (const [name, host] of Object.entries(hosts)) {\n GitHost.addHost(name, host)\n}\n\nmodule.exports = GitHost\n","'use strict';\n\nexports.isInteger = num => {\n if (typeof num === 'number') {\n return Number.isInteger(num);\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isInteger(Number(num));\n }\n return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n if (limit === false) return false;\n if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n let node = block.nodes[n];\n if (!node) return;\n\n if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n if (node.escaped !== true) {\n node.value = '\\\\' + node.value;\n node.escaped = true;\n }\n }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n if (node.type !== 'brace') return false;\n if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n node.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n if (block.type !== 'brace') return false;\n if (block.invalid === true || block.dollar) return true;\n if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n block.invalid = true;\n return true;\n }\n if (block.open !== true || block.close !== true) {\n block.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n if (node.type === 'open' || node.type === 'close') {\n return true;\n }\n return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n if (node.type === 'text') acc.push(node.value);\n if (node.type === 'range') node.type = 'text';\n return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n const result = [];\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n let ele = arr[i];\n Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele);\n }\n return result;\n };\n flat(args);\n return result;\n};\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n let stringify = (node, parent = {}) => {\n let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let output = '';\n\n if (node.value) {\n if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n return '\\\\' + node.value;\n }\n return node.value;\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += stringify(child);\n }\n }\n return output;\n };\n\n return stringify(ast);\n};\n\n","/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n if (typeof num === 'number') {\n return num - num === 0;\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n }\n return false;\n};\n","/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n if (isNumber(min) === false) {\n throw new TypeError('toRegexRange: expected the first argument to be a number');\n }\n\n if (max === void 0 || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new TypeError('toRegexRange: expected the second argument to be a number.');\n }\n\n let opts = { relaxZeros: true, ...options };\n if (typeof opts.strictZeros === 'boolean') {\n opts.relaxZeros = opts.strictZeros === false;\n }\n\n let relax = String(opts.relaxZeros);\n let shorthand = String(opts.shorthand);\n let capture = String(opts.capture);\n let wrap = String(opts.wrap);\n let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n return toRegexRange.cache[cacheKey].result;\n }\n\n let a = Math.min(min, max);\n let b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n let result = min + '|' + max;\n if (opts.capture) {\n return `(${result})`;\n }\n if (opts.wrap === false) {\n return result;\n }\n return `(?:${result})`;\n }\n\n let isPadded = hasPadding(min) || hasPadding(max);\n let state = { min, max, a, b };\n let positives = [];\n let negatives = [];\n\n if (isPadded) {\n state.isPadded = isPadded;\n state.maxLen = String(state.max).length;\n }\n\n if (a < 0) {\n let newMin = b < 0 ? Math.abs(b) : 1;\n negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n a = state.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, state, opts);\n }\n\n state.negatives = negatives;\n state.positives = positives;\n state.result = collatePatterns(negatives, positives, opts);\n\n if (opts.capture === true) {\n state.result = `(${state.result})`;\n } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n state.result = `(?:${state.result})`;\n }\n\n toRegexRange.cache[cacheKey] = state;\n return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n let nines = 1;\n let zeros = 1;\n\n let stop = countNines(min, nines);\n let stops = new Set([max]);\n\n while (min <= stop && stop <= max) {\n stops.add(stop);\n nines += 1;\n stop = countNines(min, nines);\n }\n\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops.add(stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\n stops = [...stops];\n stops.sort(compare);\n return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n if (start === stop) {\n return { pattern: start, count: [], digits: 0 };\n }\n\n let zipped = zip(start, stop);\n let digits = zipped.length;\n let pattern = '';\n let count = 0;\n\n for (let i = 0; i < digits; i++) {\n let [startDigit, stopDigit] = zipped[i];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit, options);\n\n } else {\n count++;\n }\n }\n\n if (count) {\n pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n }\n\n return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n let ranges = splitToRanges(min, max);\n let tokens = [];\n let start = min;\n let prev;\n\n for (let i = 0; i < ranges.length; i++) {\n let max = ranges[i];\n let obj = rangeToPattern(String(start), String(max), options);\n let zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.count.length > 1) {\n prev.count.pop();\n }\n\n prev.count.push(obj.count[0]);\n prev.string = prev.pattern + toQuantifier(prev.count);\n start = max + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(max, tok, options);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n tokens.push(obj);\n start = max + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n let result = [];\n\n for (let ele of arr) {\n let { string } = ele;\n\n // only push if _both_ are negative...\n if (!intersection && !contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n\n // or _both_ are positive\n if (intersection && contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n }\n return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n let arr = [];\n for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n let [start = 0, stop = ''] = digits;\n if (stop || start > 1) {\n return `{${start + (stop ? ',' + stop : '')}}`;\n }\n return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n if (!tok.isPadded) {\n return value;\n }\n\n let diff = Math.abs(tok.maxLen - String(value).length);\n let relax = options.relaxZeros !== false;\n\n switch (diff) {\n case 0:\n return '';\n case 1:\n return relax ? '0?' : '0';\n case 2:\n return relax ? '0{0,2}' : '00';\n default: {\n return relax ? `0{0,${diff}}` : `0{${diff}}`;\n }\n }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n let value = `${input}`;\n let index = -1;\n if (value[0] === '-') value = value.slice(1);\n if (value === '0') return false;\n while (value[++index] === '0');\n return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n if (typeof start === 'string' || typeof end === 'string') {\n return true;\n }\n return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n if (maxLength > 0) {\n let dash = input[0] === '-' ? '-' : '';\n if (dash) input = input.slice(1);\n input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n }\n if (toNumber === false) {\n return String(input);\n }\n return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n let negative = input[0] === '-' ? '-' : '';\n if (negative) {\n input = input.slice(1);\n maxLength--;\n }\n while (input.length < maxLength) input = '0' + input;\n return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options) => {\n parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n let prefix = options.capture ? '' : '?:';\n let positives = '';\n let negatives = '';\n let result;\n\n if (parts.positives.length) {\n positives = parts.positives.join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.join('|')})`;\n }\n\n if (positives && negatives) {\n result = `${positives}|${negatives}`;\n } else {\n result = positives || negatives;\n }\n\n if (options.wrap) {\n return `(${prefix}${result})`;\n }\n\n return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n if (isNumbers) {\n return toRegexRange(a, b, { wrap: false, ...options });\n }\n\n let start = String.fromCharCode(a);\n if (a === b) return start;\n\n let stop = String.fromCharCode(b);\n return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n if (Array.isArray(start)) {\n let wrap = options.wrap === true;\n let prefix = options.capture ? '' : '?:';\n return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n }\n return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n};\n\nconst invalidStep = (step, options) => {\n if (options.strictRanges === true) {\n throw new TypeError(`Expected step \"${step}\" to be a number`);\n }\n return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n let a = Number(start);\n let b = Number(end);\n\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n }\n\n // fix negative zero\n if (a === 0) a = 0;\n if (b === 0) b = 0;\n\n let descending = a > b;\n let startString = String(start);\n let endString = String(end);\n let stepString = String(step);\n step = Math.max(Math.abs(step), 1);\n\n let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n let toNumber = padded === false && stringify(start, end, options) === false;\n let format = options.transform || transform(toNumber);\n\n if (options.toRegex && step === 1) {\n return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n }\n\n let parts = { negatives: [], positives: [] };\n let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n if (options.toRegex === true && step > 1) {\n push(a);\n } else {\n range.push(pad(format(a, index), maxLen, toNumber));\n }\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return step > 1\n ? toSequence(parts, options)\n : toRegex(range, null, { wrap: false, ...options });\n }\n\n return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n return invalidRange(start, end, options);\n }\n\n\n let format = options.transform || (val => String.fromCharCode(val));\n let a = `${start}`.charCodeAt(0);\n let b = `${end}`.charCodeAt(0);\n\n let descending = a > b;\n let min = Math.min(a, b);\n let max = Math.max(a, b);\n\n if (options.toRegex && step === 1) {\n return toRange(min, max, false, options);\n }\n\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n range.push(format(a, index));\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return toRegex(range, null, { wrap: false, options });\n }\n\n return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n if (end == null && isValidValue(start)) {\n return [start];\n }\n\n if (!isValidValue(start) || !isValidValue(end)) {\n return invalidRange(start, end, options);\n }\n\n if (typeof step === 'function') {\n return fill(start, end, 1, { transform: step });\n }\n\n if (isObject(step)) {\n return fill(start, end, 0, step);\n }\n\n let opts = { ...options };\n if (opts.capture === true) opts.wrap = true;\n step = step || opts.step || 1;\n\n if (!isNumber(step)) {\n if (step != null && !isObject(step)) return invalidStep(step, opts);\n return fill(start, end, 1, step);\n }\n\n if (isNumber(start) && isNumber(end)) {\n return fillNumbers(start, end, step, opts);\n }\n\n return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n let walk = (node, parent = {}) => {\n let invalidBlock = utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let invalid = invalidBlock === true || invalidNode === true;\n let prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n if (node.isClose === true) {\n return prefix + node.value;\n }\n\n if (node.type === 'open') {\n return invalid ? (prefix + node.value) : '(';\n }\n\n if (node.type === 'close') {\n return invalid ? (prefix + node.value) : ')';\n }\n\n if (node.type === 'comma') {\n return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|');\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n let range = fill(...args, { ...options, wrap: false, toRegex: true });\n\n if (range.length !== 0) {\n return args.length > 1 && range.length > 1 ? `(${range})` : range;\n }\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += walk(child, node);\n }\n }\n return output;\n };\n\n return walk(ast);\n};\n\nmodule.exports = compile;\n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n let result = [];\n\n queue = [].concat(queue);\n stash = [].concat(stash);\n\n if (!stash.length) return queue;\n if (!queue.length) {\n return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n }\n\n for (let item of queue) {\n if (Array.isArray(item)) {\n for (let value of item) {\n result.push(append(value, stash, enclose));\n }\n } else {\n for (let ele of stash) {\n if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele));\n }\n }\n }\n return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit;\n\n let walk = (node, parent = {}) => {\n node.queue = [];\n\n let p = parent;\n let q = parent.queue;\n\n while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n p = p.parent;\n q = p.queue;\n }\n\n if (node.invalid || node.dollar) {\n q.push(append(q.pop(), stringify(node, options)));\n return;\n }\n\n if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n q.push(append(q.pop(), ['{}']));\n return;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n\n if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n\n let range = fill(...args, options);\n if (range.length === 0) {\n range = stringify(node, options);\n }\n\n q.push(append(q.pop(), range));\n node.nodes = [];\n return;\n }\n\n let enclose = utils.encloseBrace(node);\n let queue = node.queue;\n let block = node;\n\n while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n block = block.parent;\n queue = block.queue;\n }\n\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i];\n\n if (child.type === 'comma' && node.type === 'brace') {\n if (i === 1) queue.push('');\n queue.push('');\n continue;\n }\n\n if (child.type === 'close') {\n q.push(append(q.pop(), queue, enclose));\n continue;\n }\n\n if (child.value && child.type !== 'open') {\n queue.push(append(queue.pop(), child.value));\n continue;\n }\n\n if (child.nodes) {\n walk(child, node);\n }\n }\n\n return queue;\n };\n\n return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","'use strict';\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n\n // Digits\n CHAR_0: '0', /* 0 */\n CHAR_9: '9', /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 'A', /* A */\n CHAR_LOWERCASE_A: 'a', /* a */\n CHAR_UPPERCASE_Z: 'Z', /* Z */\n CHAR_LOWERCASE_Z: 'z', /* z */\n\n CHAR_LEFT_PARENTHESES: '(', /* ( */\n CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n CHAR_ASTERISK: '*', /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: '&', /* & */\n CHAR_AT: '@', /* @ */\n CHAR_BACKSLASH: '\\\\', /* \\ */\n CHAR_BACKTICK: '`', /* ` */\n CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n CHAR_COLON: ':', /* : */\n CHAR_COMMA: ',', /* , */\n CHAR_DOLLAR: '$', /* . */\n CHAR_DOT: '.', /* . */\n CHAR_DOUBLE_QUOTE: '\"', /* \" */\n CHAR_EQUAL: '=', /* = */\n CHAR_EXCLAMATION_MARK: '!', /* ! */\n CHAR_FORM_FEED: '\\f', /* \\f */\n CHAR_FORWARD_SLASH: '/', /* / */\n CHAR_HASH: '#', /* # */\n CHAR_HYPHEN_MINUS: '-', /* - */\n CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n CHAR_LEFT_CURLY_BRACE: '{', /* { */\n CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n CHAR_LINE_FEED: '\\n', /* \\n */\n CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n CHAR_PERCENT: '%', /* % */\n CHAR_PLUS: '+', /* + */\n CHAR_QUESTION_MARK: '?', /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n CHAR_SEMICOLON: ';', /* ; */\n CHAR_SINGLE_QUOTE: '\\'', /* ' */\n CHAR_SPACE: ' ', /* */\n CHAR_TAB: '\\t', /* \\t */\n CHAR_UNDERSCORE: '_', /* _ */\n CHAR_VERTICAL_LINE: '|', /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n CHAR_BACKSLASH, /* \\ */\n CHAR_BACKTICK, /* ` */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n CHAR_DOUBLE_QUOTE, /* \" */\n CHAR_SINGLE_QUOTE, /* ' */\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n let opts = options || {};\n let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n if (input.length > max) {\n throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n }\n\n let ast = { type: 'root', input, nodes: [] };\n let stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n let length = input.length;\n let index = 0;\n let depth = 0;\n let value;\n let memo = {};\n\n /**\n * Helpers\n */\n\n const advance = () => input[index++];\n const push = node => {\n if (node.type === 'text' && prev.type === 'dot') {\n prev.type = 'text';\n }\n\n if (prev && prev.type === 'text' && node.type === 'text') {\n prev.value += node.value;\n return;\n }\n\n block.nodes.push(node);\n node.parent = block;\n node.prev = prev;\n prev = node;\n return node;\n };\n\n push({ type: 'bos' });\n\n while (index < length) {\n block = stack[stack.length - 1];\n value = advance();\n\n /**\n * Invalid chars\n */\n\n if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n continue;\n }\n\n /**\n * Escaped chars\n */\n\n if (value === CHAR_BACKSLASH) {\n push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n continue;\n }\n\n /**\n * Right square bracket (literal): ']'\n */\n\n if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n push({ type: 'text', value: '\\\\' + value });\n continue;\n }\n\n /**\n * Left square bracket: '['\n */\n\n if (value === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n\n let closed = true;\n let next;\n\n while (index < length && (next = advance())) {\n value += next;\n\n if (next === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n continue;\n }\n\n if (next === CHAR_BACKSLASH) {\n value += advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n brackets--;\n\n if (brackets === 0) {\n break;\n }\n }\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === CHAR_LEFT_PARENTHESES) {\n block = push({ type: 'paren', nodes: [] });\n stack.push(block);\n push({ type: 'text', value });\n continue;\n }\n\n if (value === CHAR_RIGHT_PARENTHESES) {\n if (block.type !== 'paren') {\n push({ type: 'text', value });\n continue;\n }\n block = stack.pop();\n push({ type: 'text', value });\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Quotes: '|\"|`\n */\n\n if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n let open = value;\n let next;\n\n if (options.keepQuotes !== true) {\n value = '';\n }\n\n while (index < length && (next = advance())) {\n if (next === CHAR_BACKSLASH) {\n value += next + advance();\n continue;\n }\n\n if (next === open) {\n if (options.keepQuotes === true) value += next;\n break;\n }\n\n value += next;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Left curly brace: '{'\n */\n\n if (value === CHAR_LEFT_CURLY_BRACE) {\n depth++;\n\n let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n let brace = {\n type: 'brace',\n open: true,\n close: false,\n dollar,\n depth,\n commas: 0,\n ranges: 0,\n nodes: []\n };\n\n block = push(brace);\n stack.push(block);\n push({ type: 'open', value });\n continue;\n }\n\n /**\n * Right curly brace: '}'\n */\n\n if (value === CHAR_RIGHT_CURLY_BRACE) {\n if (block.type !== 'brace') {\n push({ type: 'text', value });\n continue;\n }\n\n let type = 'close';\n block = stack.pop();\n block.close = true;\n\n push({ type, value });\n depth--;\n\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Comma: ','\n */\n\n if (value === CHAR_COMMA && depth > 0) {\n if (block.ranges > 0) {\n block.ranges = 0;\n let open = block.nodes.shift();\n block.nodes = [open, { type: 'text', value: stringify(block) }];\n }\n\n push({ type: 'comma', value });\n block.commas++;\n continue;\n }\n\n /**\n * Dot: '.'\n */\n\n if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n let siblings = block.nodes;\n\n if (depth === 0 || siblings.length === 0) {\n push({ type: 'text', value });\n continue;\n }\n\n if (prev.type === 'dot') {\n block.range = [];\n prev.value += value;\n prev.type = 'range';\n\n if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n block.invalid = true;\n block.ranges = 0;\n prev.type = 'text';\n continue;\n }\n\n block.ranges++;\n block.args = [];\n continue;\n }\n\n if (prev.type === 'range') {\n siblings.pop();\n\n let before = siblings[siblings.length - 1];\n before.value += prev.value + value;\n prev = before;\n block.ranges--;\n continue;\n }\n\n push({ type: 'dot', value });\n continue;\n }\n\n /**\n * Text\n */\n\n push({ type: 'text', value });\n }\n\n // Mark imbalanced braces and brackets as invalid\n do {\n block = stack.pop();\n\n if (block.type !== 'root') {\n block.nodes.forEach(node => {\n if (!node.nodes) {\n if (node.type === 'open') node.isOpen = true;\n if (node.type === 'close') node.isClose = true;\n if (!node.nodes) node.type = 'text';\n node.invalid = true;\n }\n });\n\n // get the location of the block on parent.nodes (block's siblings)\n let parent = stack[stack.length - 1];\n let index = parent.nodes.indexOf(block);\n // replace the (invalid) block with it's nodes\n parent.nodes.splice(index, 1, ...block.nodes);\n }\n } while (stack.length > 0);\n\n push({ type: 'eos' });\n return ast;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n let output = [];\n\n if (Array.isArray(input)) {\n for (let pattern of input) {\n let result = braces.create(pattern, options);\n if (Array.isArray(result)) {\n output.push(...result);\n } else {\n output.push(result);\n }\n }\n } else {\n output = [].concat(braces.create(input, options));\n }\n\n if (options && options.expand === true && options.nodupes === true) {\n output = [...new Set(output)];\n }\n return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n if (typeof input === 'string') {\n return stringify(braces.parse(input, options), options);\n }\n return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n\n let result = expand(input, options);\n\n // filter out empty strings if specified\n if (options.noempty === true) {\n result = result.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options.nodupes === true) {\n result = [...new Set(result)];\n }\n\n return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n if (input === '' || input.length < 3) {\n return [input];\n }\n\n return options.expand !== true\n ? braces.compile(input, options)\n : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n output = token.close = `)${rest})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\nconst isEmptyString = val => val === '' || val === './';\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array<string>} `list` List of strings to match.\n * @param {String|Array<string>} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n patterns = [].concat(patterns);\n list = [].concat(list);\n\n let omit = new Set();\n let keep = new Set();\n let items = new Set();\n let negatives = 0;\n\n let onResult = state => {\n items.add(state.output);\n if (options && options.onResult) {\n options.onResult(state);\n }\n };\n\n for (let i = 0; i < patterns.length; i++) {\n let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n if (negated) negatives++;\n\n for (let item of list) {\n let matched = isMatch(item, true);\n\n let match = negated ? !matched.isMatch : matched.isMatch;\n if (!match) continue;\n\n if (negated) {\n omit.add(matched.output);\n } else {\n omit.delete(matched.output);\n keep.add(matched.output);\n }\n }\n }\n\n let result = negatives === patterns.length ? [...items] : [...keep];\n let matches = result.filter(item => !omit.has(item));\n\n if (options && matches.length === 0) {\n if (options.failglob === true) {\n throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n }\n\n if (options.nonull === true || options.nullglob === true) {\n return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n }\n }\n\n return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n patterns = [].concat(patterns).map(String);\n let result = new Set();\n let items = [];\n\n let onResult = state => {\n if (options.onResult) options.onResult(state);\n items.push(state.output);\n };\n\n let matches = micromatch(list, patterns, { ...options, onResult });\n\n for (let item of items) {\n if (!matches.includes(item)) {\n result.add(item);\n }\n }\n return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n if (Array.isArray(pattern)) {\n return pattern.some(p => micromatch.contains(str, p, options));\n }\n\n if (typeof pattern === 'string') {\n if (isEmptyString(str) || isEmptyString(pattern)) {\n return false;\n }\n\n if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n return true;\n }\n }\n\n return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n if (!utils.isObject(obj)) {\n throw new TypeError('Expected the first argument to be an object');\n }\n let keys = micromatch(Object.keys(obj), patterns, options);\n let res = {};\n for (let key of keys) res[key] = obj[key];\n return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (items.some(item => isMatch(item))) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (!items.every(item => isMatch(item))) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n let posix = utils.isWindows(options);\n let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n if (match) {\n return match.slice(1).map(v => v === void 0 ? '' : v);\n }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n let res = [];\n for (let pattern of [].concat(patterns || [])) {\n for (let str of braces(String(pattern), options)) {\n res.push(picomatch.parse(str, options));\n }\n }\n return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n if ((options && options.nobrace === true) || !/\\{.*\\}/.test(pattern)) {\n return [pattern];\n }\n return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\nmodule.exports = micromatch;\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\nconst ansiStyles = require('ansi-styles');\nconst stdoutColor = require('supports-color').stdout;\n\nconst template = require('./templates.js');\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports.default = module.exports; // For TypeScript\n","'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\n\nconst platform = process.platform;\n\nconst main = {\n\ttick: '✔',\n\tcross: '✖',\n\tstar: '★',\n\tsquare: '▇',\n\tsquareSmall: '◻',\n\tsquareSmallFilled: '◼',\n\tplay: '▶',\n\tcircle: '◯',\n\tcircleFilled: '◉',\n\tcircleDotted: '◌',\n\tcircleDouble: '◎',\n\tcircleCircle: 'ⓞ',\n\tcircleCross: 'ⓧ',\n\tcirclePipe: 'Ⓘ',\n\tcircleQuestionMark: '?⃝',\n\tbullet: '●',\n\tdot: '․',\n\tline: '─',\n\tellipsis: '…',\n\tpointer: '❯',\n\tpointerSmall: '›',\n\tinfo: 'ℹ',\n\twarning: '⚠',\n\thamburger: '☰',\n\tsmiley: '㋡',\n\tmustache: '෴',\n\theart: '♥',\n\tarrowUp: '↑',\n\tarrowDown: '↓',\n\tarrowLeft: '←',\n\tarrowRight: '→',\n\tradioOn: '◉',\n\tradioOff: '◯',\n\tcheckboxOn: '☒',\n\tcheckboxOff: '☐',\n\tcheckboxCircleOn: 'ⓧ',\n\tcheckboxCircleOff: 'Ⓘ',\n\tquestionMarkPrefix: '?⃝',\n\toneHalf: '½',\n\toneThird: '⅓',\n\toneQuarter: '¼',\n\toneFifth: '⅕',\n\toneSixth: '⅙',\n\toneSeventh: '⅐',\n\toneEighth: '⅛',\n\toneNinth: '⅑',\n\toneTenth: '⅒',\n\ttwoThirds: '⅔',\n\ttwoFifths: '⅖',\n\tthreeQuarters: '¾',\n\tthreeFifths: '⅗',\n\tthreeEighths: '⅜',\n\tfourFifths: '⅘',\n\tfiveSixths: '⅚',\n\tfiveEighths: '⅝',\n\tsevenEighths: '⅞'\n};\n\nconst win = {\n\ttick: '√',\n\tcross: '×',\n\tstar: '*',\n\tsquare: '█',\n\tsquareSmall: '[ ]',\n\tsquareSmallFilled: '[█]',\n\tplay: '►',\n\tcircle: '( )',\n\tcircleFilled: '(*)',\n\tcircleDotted: '( )',\n\tcircleDouble: '( )',\n\tcircleCircle: '(○)',\n\tcircleCross: '(×)',\n\tcirclePipe: '(│)',\n\tcircleQuestionMark: '(?)',\n\tbullet: '*',\n\tdot: '.',\n\tline: '─',\n\tellipsis: '...',\n\tpointer: '>',\n\tpointerSmall: '»',\n\tinfo: 'i',\n\twarning: '‼',\n\thamburger: '≡',\n\tsmiley: '☺',\n\tmustache: '┌─┐',\n\theart: main.heart,\n\tarrowUp: main.arrowUp,\n\tarrowDown: main.arrowDown,\n\tarrowLeft: main.arrowLeft,\n\tarrowRight: main.arrowRight,\n\tradioOn: '(*)',\n\tradioOff: '( )',\n\tcheckboxOn: '[×]',\n\tcheckboxOff: '[ ]',\n\tcheckboxCircleOn: '(×)',\n\tcheckboxCircleOff: '( )',\n\tquestionMarkPrefix: '?',\n\toneHalf: '1/2',\n\toneThird: '1/3',\n\toneQuarter: '1/4',\n\toneFifth: '1/5',\n\toneSixth: '1/6',\n\toneSeventh: '1/7',\n\toneEighth: '1/8',\n\toneNinth: '1/9',\n\toneTenth: '1/10',\n\ttwoThirds: '2/3',\n\ttwoFifths: '2/5',\n\tthreeQuarters: '3/4',\n\tthreeFifths: '3/5',\n\tthreeEighths: '3/8',\n\tfourFifths: '4/5',\n\tfiveSixths: '5/6',\n\tfiveEighths: '5/8',\n\tsevenEighths: '7/8'\n};\n\nif (platform === 'linux') {\n\t// the main one doesn't look that good on Ubuntu\n\tmain.questionMarkPrefix = '?';\n}\n\nconst figures = platform === 'win32' ? win : main;\n\nconst fn = str => {\n\tif (figures === main) {\n\t\treturn str;\n\t}\n\n\tObject.keys(main).forEach(key => {\n\t\tif (main[key] === figures[key]) {\n\t\t\treturn;\n\t\t}\n\n\t\tstr = str.replace(new RegExp(escapeStringRegexp(main[key]), 'g'), figures[key]);\n\t});\n\n\treturn str;\n};\n\nmodule.exports = Object.assign(fn, figures);\n","'use strict';\nconst fs = require('fs');\n\nmodule.exports = fp => new Promise(resolve => {\n\tfs.access(fp, err => {\n\t\tresolve(!err);\n\t});\n});\n\nmodule.exports.sync = fp => {\n\ttry {\n\t\tfs.accessSync(fp);\n\t\treturn true;\n\t} catch (err) {\n\t\treturn false;\n\t}\n};\n","'use strict';\nmodule.exports = cb => new Promise(resolve => {\n\tresolve(cb());\n});\n","'use strict';\nconst pTry = require('p-try');\n\nmodule.exports = concurrency => {\n\tif (concurrency < 1) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = [];\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.length > 0) {\n\t\t\tqueue.shift()();\n\t\t}\n\t};\n\n\treturn fn => new Promise((resolve, reject) => {\n\t\tconst run = () => {\n\t\t\tactiveCount++;\n\n\t\t\tpTry(fn).then(\n\t\t\t\tval => {\n\t\t\t\t\tresolve(val);\n\t\t\t\t\tnext();\n\t\t\t\t},\n\t\t\t\terr => {\n\t\t\t\t\treject(err);\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t);\n\t\t};\n\n\t\tif (activeCount < concurrency) {\n\t\t\trun();\n\t\t} else {\n\t\t\tqueue.push(run);\n\t\t}\n\t});\n};\n","'use strict';\nconst pLimit = require('p-limit');\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// the input can also be a promise, so we `Promise.all()` them both\nconst finder = el => Promise.all(el).then(val => val[1] === true && Promise.reject(new EndError(val[0])));\n\nmodule.exports = (iterable, tester, opts) => {\n\topts = Object.assign({\n\t\tconcurrency: Infinity,\n\t\tpreserveOrder: true\n\t}, opts);\n\n\tconst limit = pLimit(opts.concurrency);\n\n\t// start all the promises concurrently with optional limit\n\tconst items = Array.from(iterable).map(el => [el, limit(() => Promise.resolve(el).then(tester))]);\n\n\t// check the promises either serially or concurrently\n\tconst checkLimit = pLimit(opts.preserveOrder ? 1 : Infinity);\n\n\treturn Promise.all(items.map(el => checkLimit(() => finder(el))))\n\t\t.then(() => {})\n\t\t.catch(err => err instanceof EndError ? err.value : Promise.reject(err));\n};\n","'use strict';\nconst path = require('path');\nconst pathExists = require('path-exists');\nconst pLocate = require('p-locate');\n\nmodule.exports = (iterable, opts) => {\n\topts = Object.assign({\n\t\tcwd: process.cwd()\n\t}, opts);\n\n\treturn pLocate(iterable, el => pathExists(path.resolve(opts.cwd, el)), opts);\n};\n\nmodule.exports.sync = (iterable, opts) => {\n\topts = Object.assign({\n\t\tcwd: process.cwd()\n\t}, opts);\n\n\tfor (const el of iterable) {\n\t\tif (pathExists.sync(path.resolve(opts.cwd, el))) {\n\t\t\treturn el;\n\t\t}\n\t}\n};\n","'use strict';\nconst path = require('path');\nconst locatePath = require('locate-path');\n\nmodule.exports = (filename, opts) => {\n\topts = opts || {};\n\n\tconst startDir = path.resolve(opts.cwd || '');\n\tconst root = path.parse(startDir).root;\n\n\tconst filenames = [].concat(filename);\n\n\treturn new Promise(resolve => {\n\t\t(function find(dir) {\n\t\t\tlocatePath(filenames, {cwd: dir}).then(file => {\n\t\t\t\tif (file) {\n\t\t\t\t\tresolve(path.join(dir, file));\n\t\t\t\t} else if (dir === root) {\n\t\t\t\t\tresolve(null);\n\t\t\t\t} else {\n\t\t\t\t\tfind(path.dirname(dir));\n\t\t\t\t}\n\t\t\t});\n\t\t})(startDir);\n\t});\n};\n\nmodule.exports.sync = (filename, opts) => {\n\topts = opts || {};\n\n\tlet dir = path.resolve(opts.cwd || '');\n\tconst root = path.parse(dir).root;\n\n\tconst filenames = [].concat(filename);\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst file = locatePath.sync(filenames, {cwd: dir});\n\n\t\tif (file) {\n\t\t\treturn path.join(dir, file);\n\t\t} else if (dir === root) {\n\t\t\treturn null;\n\t\t}\n\n\t\tdir = path.dirname(dir);\n\t}\n};\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","'use strict';\nmodule.exports = x => {\n\tif (typeof x !== 'string') {\n\t\tthrow new TypeError('Expected a string, got ' + typeof x);\n\t}\n\n\t// Catches EFBBBF (UTF-8 BOM) because the buffer-to-string\n\t// conversion translates it to FEFF (UTF-16 BOM)\n\tif (x.charCodeAt(0) === 0xFEFF) {\n\t\treturn x.slice(1);\n\t}\n\n\treturn x;\n};\n","'use strict'\n\nmodule.exports = parseJson\nfunction parseJson (txt, reviver, context) {\n context = context || 20\n try {\n return JSON.parse(txt, reviver)\n } catch (e) {\n if (typeof txt !== 'string') {\n const isEmptyArray = Array.isArray(txt) && txt.length === 0\n const errorMessage = 'Cannot parse ' +\n (isEmptyArray ? 'an empty array' : String(txt))\n throw new TypeError(errorMessage)\n }\n const syntaxErr = e.message.match(/^Unexpected token.*position\\s+(\\d+)/i)\n const errIdx = syntaxErr\n ? +syntaxErr[1]\n : e.message.match(/^Unexpected end of JSON.*/i)\n ? txt.length - 1\n : null\n if (errIdx != null) {\n const start = errIdx <= context\n ? 0\n : errIdx - context\n const end = errIdx + context >= txt.length\n ? txt.length\n : errIdx + context\n e.message += ` while parsing near '${\n start === 0 ? '' : '...'\n }${txt.slice(start, end)}${\n end === txt.length ? '' : '...'\n }'`\n } else {\n e.message += ` while parsing '${txt.slice(0, context * 2)}'`\n }\n throw e\n }\n}\n","'use strict';\nconst errorEx = require('error-ex');\nconst fallback = require('json-parse-better-errors');\n\nconst JSONError = errorEx('JSONError', {\n\tfileName: errorEx.append('in %s')\n});\n\nmodule.exports = (input, reviver, filename) => {\n\tif (typeof reviver === 'string') {\n\t\tfilename = reviver;\n\t\treviver = null;\n\t}\n\n\ttry {\n\t\ttry {\n\t\t\treturn JSON.parse(input, reviver);\n\t\t} catch (err) {\n\t\t\tfallback(input, reviver);\n\n\t\t\tthrow err;\n\t\t}\n\t} catch (err) {\n\t\terr.message = err.message.replace(/\\n/g, '');\n\n\t\tconst jsonErr = new JSONError(err);\n\t\tif (filename) {\n\t\t\tjsonErr.fileName = filename;\n\t\t}\n\n\t\tthrow jsonErr;\n\t}\n};\n","'use strict';\n\nconst processFn = (fn, opts) => function () {\n\tconst P = opts.promiseModule;\n\tconst args = new Array(arguments.length);\n\n\tfor (let i = 0; i < arguments.length; i++) {\n\t\targs[i] = arguments[i];\n\t}\n\n\treturn new P((resolve, reject) => {\n\t\tif (opts.errorFirst) {\n\t\t\targs.push(function (err, result) {\n\t\t\t\tif (opts.multiArgs) {\n\t\t\t\t\tconst results = new Array(arguments.length - 1);\n\n\t\t\t\t\tfor (let i = 1; i < arguments.length; i++) {\n\t\t\t\t\t\tresults[i - 1] = arguments[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tresults.unshift(err);\n\t\t\t\t\t\treject(results);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(results);\n\t\t\t\t\t}\n\t\t\t\t} else if (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\targs.push(function (result) {\n\t\t\t\tif (opts.multiArgs) {\n\t\t\t\t\tconst results = new Array(arguments.length - 1);\n\n\t\t\t\t\tfor (let i = 0; i < arguments.length; i++) {\n\t\t\t\t\t\tresults[i] = arguments[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(results);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfn.apply(this, args);\n\t});\n};\n\nmodule.exports = (obj, opts) => {\n\topts = Object.assign({\n\t\texclude: [/.+(Sync|Stream)$/],\n\t\terrorFirst: true,\n\t\tpromiseModule: Promise\n\t}, opts);\n\n\tconst filter = key => {\n\t\tconst match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key);\n\t\treturn opts.include ? opts.include.some(match) : !opts.exclude.some(match);\n\t};\n\n\tlet ret;\n\tif (typeof obj === 'function') {\n\t\tret = function () {\n\t\t\tif (opts.excludeMain) {\n\t\t\t\treturn obj.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn processFn(obj, opts).apply(this, arguments);\n\t\t};\n\t} else {\n\t\tret = Object.create(Object.getPrototypeOf(obj));\n\t}\n\n\tfor (const key in obj) { // eslint-disable-line guard-for-in\n\t\tconst x = obj[key];\n\t\tret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x;\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst path = require('path');\nconst fs = require('graceful-fs');\nconst stripBom = require('strip-bom');\nconst parseJson = require('parse-json');\nconst pify = require('pify');\n\nconst parse = (data, fp) => parseJson(stripBom(data), path.relative('.', fp));\n\nmodule.exports = fp => pify(fs.readFile)(fp, 'utf8').then(data => parse(data, fp));\nmodule.exports.sync = fp => parse(fs.readFileSync(fp, 'utf8'), fp);\n","'use strict';\nconst path = require('path');\nconst findUp = require('find-up');\nconst loadJsonFile = require('load-json-file');\n\nconst filepaths = new WeakMap();\nconst filepath = conf => filepaths.get(conf);\nconst findNextCwd = pkgPath => path.resolve(path.dirname(pkgPath), '..');\n\nconst addFp = (obj, fp) => {\n\tfilepaths.set(obj, fp);\n\treturn obj;\n};\n\nconst pkgConf = (namespace, opts) => {\n\tif (!namespace) {\n\t\treturn Promise.reject(new TypeError('Expected a namespace'));\n\t}\n\n\topts = opts || {};\n\n\treturn findUp('package.json', opts.cwd ? {cwd: opts.cwd} : {})\n\t\t.then(fp => {\n\t\t\tif (!fp) {\n\t\t\t\treturn addFp(Object.assign({}, opts.defaults), fp);\n\t\t\t}\n\n\t\t\treturn loadJsonFile(fp).then(pkg => {\n\t\t\t\tif (opts.skipOnFalse && pkg[namespace] === false) {\n\t\t\t\t\tconst newOpts = Object.assign({}, opts, {cwd: findNextCwd(fp)});\n\t\t\t\t\treturn pkgConf(namespace, newOpts);\n\t\t\t\t}\n\n\t\t\t\treturn addFp(Object.assign({}, opts.defaults, pkg[namespace]), fp);\n\t\t\t});\n\t\t});\n};\n\nconst sync = (namespace, opts) => {\n\tif (!namespace) {\n\t\tthrow new TypeError('Expected a namespace');\n\t}\n\n\topts = opts || {};\n\n\tconst fp = findUp.sync('package.json', opts.cwd ? {cwd: opts.cwd} : {});\n\n\tif (!fp) {\n\t\treturn addFp(Object.assign({}, opts.defaults), fp);\n\t}\n\n\tconst pkg = loadJsonFile.sync(fp);\n\n\tif (opts.skipOnFalse && pkg[namespace] === false) {\n\t\tconst newOpts = Object.assign({}, opts, {cwd: findNextCwd(fp)});\n\t\treturn sync(namespace, newOpts);\n\t}\n\n\treturn addFp(Object.assign({}, opts.defaults, pkg[namespace]), fp);\n};\n\nmodule.exports = pkgConf;\nmodule.exports.filepath = filepath;\nmodule.exports.sync = sync;\n","{\n \"name\": \"signale\",\n \"version\": \"1.4.0\",\n \"description\": \"👋 Hackable console logger\",\n \"license\": \"MIT\",\n \"repository\": \"klaussinani/signale\",\n \"author\": {\n \"name\": \"Klaus Sinani\",\n \"email\": \"klaussinani@gmail.com\",\n \"url\": \"https://klaussinani.github.io\"\n },\n \"maintainers\": [\n {\n \"name\": \"Mario Sinani\",\n \"email\": \"mariosinani@protonmail.ch\",\n \"url\": \"https://mariocfhq.github.io\"\n }\n ],\n \"engines\": {\n \"node\": \">=6\"\n },\n \"files\": [\n \"index.js\",\n \"signale.js\",\n \"types.js\"\n ],\n \"keywords\": [\n \"hackable\",\n \"colorful\",\n \"console\",\n \"logger\"\n ],\n \"scripts\": {\n \"test\": \"xo\"\n },\n \"dependencies\": {\n \"chalk\": \"^2.3.2\",\n \"figures\": \"^2.0.0\",\n \"pkg-conf\": \"^2.1.0\"\n },\n \"devDependencies\": {\n \"xo\": \"*\"\n },\n \"options\": {\n \"default\": {\n \"displayScope\": true,\n \"displayBadge\": true,\n \"displayDate\": false,\n \"displayFilename\": false,\n \"displayLabel\": true,\n \"displayTimestamp\": false,\n \"underlineLabel\": true,\n \"underlineMessage\": false,\n \"underlinePrefix\": false,\n \"underlineSuffix\": false,\n \"uppercaseLabel\": false\n }\n },\n \"xo\": {\n \"space\": 2\n }\n}\n","'use strict';\nconst figures = require('figures');\n\nmodule.exports = {\n error: {\n badge: figures.cross,\n color: 'red',\n label: 'error',\n logLevel: 'error'\n },\n fatal: {\n badge: figures.cross,\n color: 'red',\n label: 'fatal',\n logLevel: 'error'\n },\n fav: {\n badge: figures('❤'),\n color: 'magenta',\n label: 'favorite',\n logLevel: 'info'\n },\n info: {\n badge: figures.info,\n color: 'blue',\n label: 'info',\n logLevel: 'info'\n },\n star: {\n badge: figures.star,\n color: 'yellow',\n label: 'star',\n logLevel: 'info'\n },\n success: {\n badge: figures.tick,\n color: 'green',\n label: 'success',\n logLevel: 'info'\n },\n wait: {\n badge: figures.ellipsis,\n color: 'blue',\n label: 'waiting',\n logLevel: 'info'\n },\n warn: {\n badge: figures.warning,\n color: 'yellow',\n label: 'warning',\n logLevel: 'warn'\n },\n complete: {\n badge: figures.checkboxOn,\n color: 'cyan',\n label: 'complete',\n logLevel: 'info'\n },\n pending: {\n badge: figures.checkboxOff,\n color: 'magenta',\n label: 'pending',\n logLevel: 'info'\n },\n note: {\n badge: figures.bullet,\n color: 'blue',\n label: 'note',\n logLevel: 'info'\n },\n start: {\n badge: figures.play,\n color: 'green',\n label: 'start',\n logLevel: 'info'\n },\n pause: {\n badge: figures.squareSmallFilled,\n color: 'yellow',\n label: 'pause',\n logLevel: 'info'\n },\n debug: {\n badge: figures('⬤'),\n color: 'red',\n label: 'debug',\n logLevel: 'debug'\n },\n await: {\n badge: figures.ellipsis,\n color: 'blue',\n label: 'awaiting',\n logLevel: 'info'\n },\n watch: {\n badge: figures.ellipsis,\n color: 'yellow',\n label: 'watching',\n logLevel: 'info'\n },\n log: {\n badge: '',\n color: '',\n label: '',\n logLevel: 'info'\n }\n};\n","'use strict';\nconst util = require('util');\nconst path = require('path');\nconst readline = require('readline');\nconst chalk = require('chalk');\nconst figures = require('figures');\nconst pkgConf = require('pkg-conf');\nconst pkg = require('./package.json');\nconst defaultTypes = require('./types');\n\nconst {green, grey, red, underline, yellow} = chalk;\n\nlet isPreviousLogInteractive = false;\nconst defaults = pkg.options.default;\nconst namespace = pkg.name;\n\nclass Signale {\n constructor(options = {}) {\n this._interactive = options.interactive || false;\n this._config = Object.assign(this.packageConfiguration, options.config);\n this._customTypes = Object.assign({}, options.types);\n this._disabled = options.disabled || false;\n this._scopeName = options.scope || '';\n this._timers = options.timers || new Map();\n this._types = this._mergeTypes(defaultTypes, this._customTypes);\n this._stream = options.stream || process.stdout;\n this._longestLabel = this._getLongestLabel();\n this._secrets = options.secrets || [];\n this._generalLogLevel = this._validateLogLevel(options.logLevel);\n\n Object.keys(this._types).forEach(type => {\n this[type] = this._logger.bind(this, type);\n });\n }\n\n get _now() {\n return Date.now();\n }\n\n get scopeName() {\n return this._scopeName;\n }\n\n get currentOptions() {\n return Object.assign({}, {\n config: this._config,\n disabled: this._disabled,\n types: this._customTypes,\n interactive: this._interactive,\n timers: this._timers,\n stream: this._stream,\n secrets: this._secrets,\n logLevel: this._generalLogLevel\n });\n }\n\n get date() {\n return new Date().toLocaleDateString();\n }\n\n get timestamp() {\n return new Date().toLocaleTimeString();\n }\n\n get filename() {\n const _ = Error.prepareStackTrace;\n Error.prepareStackTrace = (error, stack) => stack;\n const {stack} = new Error();\n Error.prepareStackTrace = _;\n\n const callers = stack.map(x => x.getFileName());\n\n const firstExternalFilePath = callers.find(x => {\n return x !== callers[0];\n });\n\n return firstExternalFilePath ? path.basename(firstExternalFilePath) : 'anonymous';\n }\n\n get packageConfiguration() {\n return pkgConf.sync(namespace, {defaults});\n }\n\n get _longestUnderlinedLabel() {\n return underline(this._longestLabel);\n }\n\n get _logLevels() {\n return {\n info: 0,\n timer: 1,\n debug: 2,\n warn: 3,\n error: 4\n };\n }\n\n set configuration(configObj) {\n this._config = Object.assign(this.packageConfiguration, configObj);\n }\n\n _arrayify(x) {\n return Array.isArray(x) ? x : [x];\n }\n\n _timeSpan(then) {\n return (this._now - then);\n }\n\n _getLongestLabel() {\n const {_types} = this;\n const labels = Object.keys(_types).map(x => _types[x].label);\n return labels.reduce((x, y) => x.length > y.length ? x : y);\n }\n\n _validateLogLevel(level) {\n return Object.keys(this._logLevels).includes(level) ? level : 'info';\n }\n\n _mergeTypes(standard, custom) {\n const types = Object.assign({}, standard);\n\n Object.keys(custom).forEach(type => {\n types[type] = Object.assign({}, types[type], custom[type]);\n });\n\n return types;\n }\n\n _filterSecrets(message) {\n const {_secrets} = this;\n\n if (_secrets.length === 0) {\n return message;\n }\n\n let safeMessage = message;\n\n _secrets.forEach(secret => {\n safeMessage = safeMessage.replace(new RegExp(secret, 'g'), '[secure]');\n });\n\n return safeMessage;\n }\n\n _formatStream(stream) {\n return this._arrayify(stream);\n }\n\n _formatDate() {\n return `[${this.date}]`;\n }\n\n _formatFilename() {\n return `[${this.filename}]`;\n }\n\n _formatScopeName() {\n if (Array.isArray(this._scopeName)) {\n const scopes = this._scopeName.filter(x => x.length !== 0);\n return `${scopes.map(x => `[${x.trim()}]`).join(' ')}`;\n }\n\n return `[${this._scopeName}]`;\n }\n\n _formatTimestamp() {\n return `[${this.timestamp}]`;\n }\n\n _formatMessage(str) {\n return util.format(...this._arrayify(str));\n }\n\n _meta() {\n const meta = [];\n\n if (this._config.displayDate) {\n meta.push(this._formatDate());\n }\n\n if (this._config.displayTimestamp) {\n meta.push(this._formatTimestamp());\n }\n\n if (this._config.displayFilename) {\n meta.push(this._formatFilename());\n }\n\n if (this._scopeName.length !== 0 && this._config.displayScope) {\n meta.push(this._formatScopeName());\n }\n\n if (meta.length !== 0) {\n meta.push(`${figures.pointerSmall}`);\n return meta.map(item => grey(item));\n }\n\n return meta;\n }\n\n _hasAdditional({suffix, prefix}, args) {\n return (suffix || prefix) ? '' : this._formatMessage(args);\n }\n\n _buildSignale(type, ...args) {\n let [msg, additional] = [{}, {}];\n\n if (args.length === 1 && typeof (args[0]) === 'object' && args[0] !== null) {\n if (args[0] instanceof Error) {\n [msg] = args;\n } else {\n const [{prefix, message, suffix}] = args;\n additional = Object.assign({}, {suffix, prefix});\n msg = message ? this._formatMessage(message) : this._hasAdditional(additional, args);\n }\n } else {\n msg = this._formatMessage(args);\n }\n\n const signale = this._meta();\n\n if (additional.prefix) {\n if (this._config.underlinePrefix) {\n signale.push(underline(additional.prefix));\n } else {\n signale.push(additional.prefix);\n }\n }\n\n if (this._config.displayBadge && type.badge) {\n signale.push(chalk[type.color](this._padEnd(type.badge, type.badge.length + 1)));\n }\n\n if (this._config.displayLabel && type.label) {\n const label = this._config.uppercaseLabel ? type.label.toUpperCase() : type.label;\n if (this._config.underlineLabel) {\n signale.push(chalk[type.color](this._padEnd(underline(label), this._longestUnderlinedLabel.length + 1)));\n } else {\n signale.push(chalk[type.color](this._padEnd(label, this._longestLabel.length + 1)));\n }\n }\n\n if (msg instanceof Error && msg.stack) {\n const [name, ...rest] = msg.stack.split('\\n');\n if (this._config.underlineMessage) {\n signale.push(underline(name));\n } else {\n signale.push(name);\n }\n\n signale.push(grey(rest.map(l => l.replace(/^/, '\\n')).join('')));\n return signale.join(' ');\n }\n\n if (this._config.underlineMessage) {\n signale.push(underline(msg));\n } else {\n signale.push(msg);\n }\n\n if (additional.suffix) {\n if (this._config.underlineSuffix) {\n signale.push(underline(additional.suffix));\n } else {\n signale.push(additional.suffix);\n }\n }\n\n return signale.join(' ');\n }\n\n _write(stream, message) {\n if (this._interactive && stream.isTTY && isPreviousLogInteractive) {\n readline.moveCursor(stream, 0, -1);\n readline.clearLine(stream);\n readline.cursorTo(stream, 0);\n }\n\n stream.write(message + '\\n');\n isPreviousLogInteractive = this._interactive;\n }\n\n _log(message, streams = this._stream, logLevel) {\n if (this.isEnabled() && this._logLevels[logLevel] >= this._logLevels[this._generalLogLevel]) {\n this._formatStream(streams).forEach(stream => {\n this._write(stream, message);\n });\n }\n }\n\n _logger(type, ...messageObj) {\n const {stream, logLevel} = this._types[type];\n const message = this._buildSignale(this._types[type], ...messageObj);\n this._log(this._filterSecrets(message), stream, this._validateLogLevel(logLevel));\n }\n\n _padEnd(str, targetLength) {\n str = String(str);\n targetLength = parseInt(targetLength, 10) || 0;\n\n if (str.length >= targetLength) {\n return str;\n }\n\n if (String.prototype.padEnd) {\n return str.padEnd(targetLength);\n }\n\n targetLength -= str.length;\n return str + ' '.repeat(targetLength);\n }\n\n addSecrets(secrets) {\n if (!Array.isArray(secrets)) {\n throw new TypeError('Argument must be an array.');\n }\n\n this._secrets.push(...secrets);\n }\n\n clearSecrets() {\n this._secrets = [];\n }\n\n config(configObj) {\n this.configuration = configObj;\n }\n\n disable() {\n this._disabled = true;\n }\n\n enable() {\n this._disabled = false;\n }\n\n isEnabled() {\n return !this._disabled;\n }\n\n scope(...name) {\n if (name.length === 0) {\n throw new Error('No scope name was defined.');\n }\n\n return new Signale(Object.assign(this.currentOptions, {scope: name}));\n }\n\n unscope() {\n this._scopeName = '';\n }\n\n time(label) {\n if (!label) {\n label = `timer_${this._timers.size}`;\n }\n\n this._timers.set(label, this._now);\n\n const message = this._meta();\n message.push(green(this._padEnd(this._types.start.badge, 2)));\n\n if (this._config.underlineLabel) {\n message.push(green(this._padEnd(underline(label), this._longestUnderlinedLabel.length + 1)));\n } else {\n message.push(green(this._padEnd(label, this._longestLabel.length + 1)));\n }\n\n message.push('Initialized timer...');\n this._log(message.join(' '), this._stream, 'timer');\n\n return label;\n }\n\n timeEnd(label) {\n if (!label && this._timers.size) {\n const is = x => x.includes('timer_');\n label = [...this._timers.keys()].reduceRight((x, y) => {\n return is(x) ? x : (is(y) ? y : null);\n });\n }\n\n if (this._timers.has(label)) {\n const span = this._timeSpan(this._timers.get(label));\n this._timers.delete(label);\n\n const message = this._meta();\n message.push(red(this._padEnd(this._types.pause.badge, 2)));\n\n if (this._config.underlineLabel) {\n message.push(red(this._padEnd(underline(label), this._longestUnderlinedLabel.length + 1)));\n } else {\n message.push(red(this._padEnd(label, this._longestLabel.length + 1)));\n }\n\n message.push('Timer run for:');\n message.push(yellow(span < 1000 ? span + 'ms' : (span / 1000).toFixed(2) + 's'));\n this._log(message.join(' '), this._stream, 'timer');\n\n return {label, span};\n }\n }\n}\n\nmodule.exports = Signale;\n","'use strict';\nconst Signale = require('./signale');\n\nmodule.exports = Object.assign(new Signale(), {Signale});\n","import { createRequire } from \"node:module\";\nimport { pick } from \"lodash-es\";\nimport * as marked from \"marked\";\nimport envCi from \"env-ci\";\nimport { hookStd } from \"hook-std\";\nimport semver from \"semver\";\nimport AggregateError from \"aggregate-error\";\nimport hideSensitive from \"./lib/hide-sensitive.js\";\nimport getConfig from \"./lib/get-config.js\";\nimport verify from \"./lib/verify.js\";\nimport getNextVersion from \"./lib/get-next-version.js\";\nimport getCommits from \"./lib/get-commits.js\";\nimport getLastRelease from \"./lib/get-last-release.js\";\nimport getReleaseToAdd from \"./lib/get-release-to-add.js\";\nimport { extractErrors, makeTag } from \"./lib/utils.js\";\nimport getGitAuthUrl from \"./lib/get-git-auth-url.js\";\nimport getBranches from \"./lib/branches/index.js\";\nimport getLogger from \"./lib/get-logger.js\";\nimport { addNote, getGitHead, getTagHead, isBranchUpToDate, push, pushNotes, tag, verifyAuth } from \"./lib/git.js\";\nimport getError from \"./lib/get-error.js\";\nimport { COMMIT_EMAIL, COMMIT_NAME } from \"./lib/definitions/constants.js\";\n\nconst require = createRequire(import.meta.url);\nconst pkg = require(\"./package.json\");\n\nlet markedOptionsSet = false;\nasync function terminalOutput(text) {\n if (!markedOptionsSet) {\n const { default: TerminalRenderer } = await import(\"marked-terminal\"); // eslint-disable-line node/no-unsupported-features/es-syntax\n marked.setOptions({ renderer: new TerminalRenderer() });\n markedOptionsSet = true;\n }\n\n return marked.parse(text);\n}\n\n/* eslint complexity: off */\nasync function run(context, plugins) {\n const { cwd, env, options, logger, envCi } = context;\n const { isCi, branch, prBranch, isPr } = envCi;\n const ciBranch = isPr ? prBranch : branch;\n\n if (!isCi && !options.dryRun && !options.noCi) {\n logger.warn(\"This run was not triggered in a known CI environment, running in dry-run mode.\");\n options.dryRun = true;\n } else {\n // When running on CI, set the commits author and committer info and prevent the `git` CLI to prompt for username/password. See #703.\n Object.assign(env, {\n GIT_AUTHOR_NAME: COMMIT_NAME,\n GIT_AUTHOR_EMAIL: COMMIT_EMAIL,\n GIT_COMMITTER_NAME: COMMIT_NAME,\n GIT_COMMITTER_EMAIL: COMMIT_EMAIL,\n ...env,\n GIT_ASKPASS: \"echo\",\n GIT_TERMINAL_PROMPT: 0,\n });\n }\n\n if (isCi && isPr && !options.noCi) {\n logger.log(\"This run was triggered by a pull request and therefore a new version won't be published.\");\n return false;\n }\n\n // Verify config\n await verify(context);\n\n options.repositoryUrl = await getGitAuthUrl({ ...context, branch: { name: ciBranch } });\n context.branches = await getBranches(options.repositoryUrl, ciBranch, context);\n context.branch = context.branches.find(({ name }) => name === ciBranch);\n\n if (!context.branch) {\n logger.log(\n `This test run was triggered on the branch ${ciBranch}, while semantic-release is configured to only publish from ${context.branches\n .map(({ name }) => name)\n .join(\", \")}, therefore a new version won’t be published.`\n );\n return false;\n }\n\n logger[options.dryRun ? \"warn\" : \"success\"](\n `Run automated release from branch ${ciBranch} on repository ${options.originalRepositoryURL}${\n options.dryRun ? \" in dry-run mode\" : \"\"\n }`\n );\n\n try {\n try {\n await verifyAuth(options.repositoryUrl, context.branch.name, { cwd, env });\n } catch (error) {\n if (!(await isBranchUpToDate(options.repositoryUrl, context.branch.name, { cwd, env }))) {\n logger.log(\n `The local branch ${context.branch.name} is behind the remote one, therefore a new version won't be published.`\n );\n return false;\n }\n\n throw error;\n }\n } catch (error) {\n logger.error(`The command \"${error.command}\" failed with the error message ${error.stderr}.`);\n throw getError(\"EGITNOPERMISSION\", context);\n }\n\n logger.success(`Allowed to push to the Git repository`);\n\n await plugins.verifyConditions(context);\n\n const errors = [];\n context.releases = [];\n const releaseToAdd = getReleaseToAdd(context);\n\n if (releaseToAdd) {\n const { lastRelease, currentRelease, nextRelease } = releaseToAdd;\n\n nextRelease.gitHead = await getTagHead(nextRelease.gitHead, { cwd, env });\n currentRelease.gitHead = await getTagHead(currentRelease.gitHead, { cwd, env });\n if (context.branch.mergeRange && !semver.satisfies(nextRelease.version, context.branch.mergeRange)) {\n errors.push(getError(\"EINVALIDMAINTENANCEMERGE\", { ...context, nextRelease }));\n } else {\n const commits = await getCommits({ ...context, lastRelease, nextRelease });\n nextRelease.notes = await plugins.generateNotes({ ...context, commits, lastRelease, nextRelease });\n\n if (options.dryRun) {\n logger.warn(`Skip ${nextRelease.gitTag} tag creation in dry-run mode`);\n } else {\n await addNote({ channels: [...currentRelease.channels, nextRelease.channel] }, nextRelease.gitTag, {\n cwd,\n env,\n });\n await push(options.repositoryUrl, { cwd, env });\n await pushNotes(options.repositoryUrl, nextRelease.gitTag, {\n cwd,\n env,\n });\n logger.success(\n `Add ${nextRelease.channel ? `channel ${nextRelease.channel}` : \"default channel\"} to tag ${\n nextRelease.gitTag\n }`\n );\n }\n\n context.branch.tags.push({\n version: nextRelease.version,\n channel: nextRelease.channel,\n gitTag: nextRelease.gitTag,\n gitHead: nextRelease.gitHead,\n });\n\n const releases = await plugins.addChannel({ ...context, commits, lastRelease, currentRelease, nextRelease });\n context.releases.push(...releases);\n await plugins.success({ ...context, lastRelease, commits, nextRelease, releases });\n }\n }\n\n if (errors.length > 0) {\n throw new AggregateError(errors);\n }\n\n context.lastRelease = getLastRelease(context);\n if (context.lastRelease.gitHead) {\n context.lastRelease.gitHead = await getTagHead(context.lastRelease.gitHead, { cwd, env });\n }\n\n if (context.lastRelease.gitTag) {\n logger.log(\n `Found git tag ${context.lastRelease.gitTag} associated with version ${context.lastRelease.version} on branch ${context.branch.name}`\n );\n } else {\n logger.log(`No git tag version found on branch ${context.branch.name}`);\n }\n\n context.commits = await getCommits(context);\n\n const nextRelease = {\n type: await plugins.analyzeCommits(context),\n channel: context.branch.channel || null,\n gitHead: await getGitHead({ cwd, env }),\n };\n if (!nextRelease.type) {\n logger.log(\"There are no relevant changes, so no new version is released.\");\n return context.releases.length > 0 ? { releases: context.releases } : false;\n }\n\n context.nextRelease = nextRelease;\n nextRelease.version = getNextVersion(context);\n nextRelease.gitTag = makeTag(options.tagFormat, nextRelease.version);\n nextRelease.name = nextRelease.gitTag;\n\n if (context.branch.type !== \"prerelease\" && !semver.satisfies(nextRelease.version, context.branch.range)) {\n throw getError(\"EINVALIDNEXTVERSION\", {\n ...context,\n validBranches: context.branches.filter(\n ({ type, accept }) => type !== \"prerelease\" && accept.includes(nextRelease.type)\n ),\n });\n }\n\n await plugins.verifyRelease(context);\n\n nextRelease.notes = await plugins.generateNotes(context);\n\n await plugins.prepare(context);\n\n if (options.dryRun) {\n logger.warn(`Skip ${nextRelease.gitTag} tag creation in dry-run mode`);\n } else {\n // Create the tag before calling the publish plugins as some require the tag to exists\n await tag(nextRelease.gitTag, nextRelease.gitHead, { cwd, env });\n await addNote({ channels: [nextRelease.channel] }, nextRelease.gitTag, { cwd, env });\n await push(options.repositoryUrl, { cwd, env });\n await pushNotes(options.repositoryUrl, nextRelease.gitTag, { cwd, env });\n logger.success(`Created tag ${nextRelease.gitTag}`);\n }\n\n const releases = await plugins.publish(context);\n context.releases.push(...releases);\n\n await plugins.success({ ...context, releases });\n\n logger.success(\n `Published release ${nextRelease.version} on ${nextRelease.channel ? nextRelease.channel : \"default\"} channel`\n );\n\n if (options.dryRun) {\n logger.log(`Release note for version ${nextRelease.version}:`);\n if (nextRelease.notes) {\n context.stdout.write(await terminalOutput(nextRelease.notes));\n }\n }\n\n return pick(context, [\"lastRelease\", \"commits\", \"nextRelease\", \"releases\"]);\n}\n\nasync function logErrors({ logger, stderr }, err) {\n const errors = extractErrors(err).sort((error) => (error.semanticRelease ? -1 : 0));\n for (const error of errors) {\n if (error.semanticRelease) {\n logger.error(`${error.code} ${error.message}`);\n if (error.details) {\n stderr.write(await terminalOutput(error.details)); // eslint-disable-line no-await-in-loop\n }\n } else {\n logger.error(\"An error occurred while running semantic-release: %O\", error);\n }\n }\n}\n\nasync function callFail(context, plugins, err) {\n const errors = extractErrors(err).filter((err) => err.semanticRelease);\n if (errors.length > 0) {\n try {\n await plugins.fail({ ...context, errors });\n } catch (error) {\n await logErrors(context, error);\n }\n }\n}\n\nexport default async (cliOptions = {}, { cwd = process.cwd(), env = process.env, stdout, stderr } = {}) => {\n const { unhook } = hookStd(\n { silent: false, streams: [process.stdout, process.stderr, stdout, stderr].filter(Boolean) },\n hideSensitive(env)\n );\n const context = {\n cwd,\n env,\n stdout: stdout || process.stdout,\n stderr: stderr || process.stderr,\n envCi: envCi({ env, cwd }),\n };\n context.logger = getLogger(context);\n context.logger.log(`Running ${pkg.name} version ${pkg.version}`);\n try {\n const { plugins, options } = await getConfig(context, cliOptions);\n options.originalRepositoryURL = options.repositoryUrl;\n context.options = options;\n try {\n const result = await run(context, plugins);\n unhook();\n return result;\n } catch (error) {\n await callFail(context, plugins, error);\n throw error;\n }\n } catch (error) {\n await logErrors(context, error);\n unhook();\n throw error;\n }\n};\n","/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n // precede setext continuation with 4 spaces so it isn't a setext\n let text = cap[0].replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1');\n text = rtrim(text.replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import { edit, noopTest } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = '\\\\p{P}\\\\p{S}';\nconst punctuation = edit(/^((?![*_])[\\spunctuation])/, 'u')\n .replace(/punctuation/g, _punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\n/**\n * GFM + Line Breaks Inline Grammar\n */\nconst inlineBreaks = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n/**\n * exports\n */\nexport const block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic\n};\nexport const inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic\n};\n","import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { block, inline } from './rules.ts';\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"language-'\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\nimport { unescape } from './helpers.ts';\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)));\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nexport class _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n","import { execaSync } from \"execa\";\n\nexport function head(options) {\n try {\n return execaSync(\"git\", [\"rev-parse\", \"HEAD\"], options).stdout;\n } catch {\n return undefined;\n }\n}\n\nexport function branch(options) {\n try {\n const headRef = execaSync(\n \"git\",\n [\"rev-parse\", \"--abbrev-ref\", \"HEAD\"],\n options,\n ).stdout;\n\n if (headRef === \"HEAD\") {\n const branch = execaSync(\n \"git\",\n [\"show\", \"-s\", \"--pretty=%d\", \"HEAD\"],\n options,\n )\n .stdout.replace(/^\\(|\\)$/g, \"\")\n .split(\", \")\n .find((branch) => branch.startsWith(\"origin/\"));\n return branch ? branch.match(/^origin\\/(?<branch>.+)/)[1] : undefined;\n }\n\n return headRef;\n } catch {\n return undefined;\n }\n}\n","import { dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { castArray, isNil, isPlainObject, isString, pickBy } from \"lodash-es\";\nimport { readPackageUp } from \"read-package-up\";\nimport { cosmiconfig } from \"cosmiconfig\";\nimport importFrom from \"import-from-esm\";\nimport debugConfig from \"debug\";\nimport { repoUrl } from \"./git.js\";\nimport PLUGINS_DEFINITIONS from \"./definitions/plugins.js\";\nimport plugins from \"./plugins/index.js\";\nimport { parseConfig, validatePlugin } from \"./plugins/utils.js\";\n\nconst debug = debugConfig(\"semantic-release:config\");\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst CONFIG_NAME = \"release\";\n\nexport default async (context, cliOptions) => {\n const { cwd, env } = context;\n const { config, filepath } = (await cosmiconfig(CONFIG_NAME).search(cwd)) || {};\n\n debug(\"load config from: %s\", filepath);\n\n // Merge config file options and CLI/API options\n let options = { ...config, ...cliOptions };\n\n const pluginsPath = {};\n let extendPaths;\n ({ extends: extendPaths, ...options } = options);\n if (extendPaths) {\n // If `extends` is defined, load and merge each shareable config with `options`\n options = {\n ...(await castArray(extendPaths).reduce(async (eventualResult, extendPath) => {\n const result = await eventualResult;\n const extendsOptions = (await importFrom.silent(__dirname, extendPath)) || (await importFrom(cwd, extendPath));\n\n // For each plugin defined in a shareable config, save in `pluginsPath` the extendable config path,\n // so those plugin will be loaded relative to the config file\n Object.entries(extendsOptions)\n .filter(([, value]) => Boolean(value))\n .reduce((pluginsPath, [option, value]) => {\n castArray(value).forEach((plugin) => {\n if (option === \"plugins\" && validatePlugin(plugin)) {\n pluginsPath[parseConfig(plugin)[0]] = extendPath;\n } else if (\n PLUGINS_DEFINITIONS[option] &&\n (isString(plugin) || (isPlainObject(plugin) && isString(plugin.path)))\n ) {\n pluginsPath[isString(plugin) ? plugin : plugin.path] = extendPath;\n }\n });\n return pluginsPath;\n }, pluginsPath);\n\n return { ...result, ...extendsOptions };\n }, {})),\n ...options,\n };\n }\n\n // Set default options values if not defined yet\n options = {\n branches: [\n \"+([0-9])?(.{+([0-9]),x}).x\",\n \"master\",\n \"main\",\n \"next\",\n \"next-major\",\n { name: \"beta\", prerelease: true },\n { name: \"alpha\", prerelease: true },\n ],\n repositoryUrl: (await pkgRepoUrl({ normalize: false, cwd })) || (await repoUrl({ cwd, env })),\n tagFormat: `v\\${version}`,\n plugins: [\n \"@semantic-release/commit-analyzer\",\n \"@semantic-release/release-notes-generator\",\n \"@semantic-release/npm\",\n \"@semantic-release/github\",\n ],\n // Remove `null` and `undefined` options, so they can be replaced with default ones\n ...pickBy(options, (option) => !isNil(option)),\n ...(options.branches ? { branches: castArray(options.branches) } : {}),\n };\n\n if (options.ci === false) {\n options.noCi = true;\n }\n\n debug(\"options values: %O\", options);\n\n return { options, plugins: await plugins({ ...context, options }, pluginsPath) };\n};\n\nasync function pkgRepoUrl(options) {\n const { packageJson } = (await readPackageUp(options)) || {};\n return packageJson && (isPlainObject(packageJson.repository) ? packageJson.repository.url : packageJson.repository);\n}\n","import { createRequire } from 'node:module';\nimport { extname, resolve } from 'node:path';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\n\nimport createDebug from 'debug';\nimport { moduleResolve } from 'import-meta-resolve';\n\nconst debug = createDebug('import-from-esm');\nconst require = createRequire(import.meta.url);\n\nconst EXTENSIONS = ['.js', '.mjs', '.cjs', '.json'];\n\nfunction resolveToFileURL(...paths) {\n\treturn pathToFileURL(resolve(...paths));\n}\n\nfunction tryResolve(moduleId, baseURL) {\n\tdebug(`Trying to resolve '${moduleId}' from '${baseURL.href}'`);\n\ttry {\n\t\treturn moduleResolve(moduleId, baseURL, new Set(['node', 'import']));\n\t} catch (error) {\n\t\tdebug(`Failed to resolve '${moduleId}' from '${baseURL.href}': ${String(error)}`);\n\t}\n}\n\nasync function tryImport(fileURL) {\n\tif (!fileURL) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tdebug(`Trying to determine file extension for '${fileURL.href}'`);\n\t\tconst filePath = fileURLToPath(fileURL);\n\t\tconst asJSON = extname(filePath) === '.json';\n\n\t\tdebug(`Trying to import '${fileURL.href}'${asJSON ? ' as JSON' : ''}`);\n\t\treturn asJSON ? require(filePath) : await import(fileURL);\n\t} catch (error) {\n\t\tdebug(`Failed to determine file extension or to import '${fileURL.href}': ${String(error)}`);\n\t\tif (error instanceof SyntaxError) {\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n\nasync function importFrom(fromDirectory, moduleId) {\n\tdebug(`Executing importFrom('${fromDirectory}', '${moduleId}')`);\n\n\tlet loadedModule;\n\n\tif (/^(\\/|\\.\\.\\/|\\.\\/|[a-zA-Z]:)/.test(moduleId)) {\n\t\t// If moduleId begins with '/', '../', './' or Windows path (e.g. \"C:\"),\n\t\t// resolve manually (so we can support extensionless imports)\n\t\t// - https://nodejs.org/api/modules.html#file-modules\n\t\tdebug(`'${moduleId}' is a file module`);\n\n\t\tconst localModulePath = resolveToFileURL(fromDirectory, moduleId);\n\n\t\t// Try to resolve exact file path\n\t\tloadedModule = await tryImport(localModulePath);\n\n\t\tif (!loadedModule && !EXTENSIONS.includes(extname(moduleId))) {\n\t\t\t// Try to resolve file path with added extensions\n\n\t\t\tfor (const ext of EXTENSIONS) {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\tloadedModule = await tryImport(`${localModulePath}${ext}`);\n\t\t\t\tif (loadedModule) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// Let `import-meta-resolve` deal with resolving packages & import maps\n\t\t// - https://nodejs.org/api/modules.html#loading-from-node_modules-folders\n\t\t// - https://nodejs.org/api/packages.html#subpath-imports\n\t\tdebug(`'${moduleId}' is not a file module`);\n\n\t\tconst parentModulePath = resolveToFileURL(fromDirectory, 'noop.js');\n\t\tloadedModule = await tryImport(tryResolve(moduleId, parentModulePath));\n\n\t\t// Support for extensionless subpaths (not subpath exports)\n\t\tif (!loadedModule && !moduleId.startsWith('#')) {\n\t\t\t// Try to resolve file path with added extensions\n\t\t\tfor (const ext of EXTENSIONS) {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\tloadedModule = await tryImport(tryResolve(`${moduleId}${ext}`, parentModulePath));\n\n\t\t\t\tif (loadedModule) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Support for extensionless subpaths index files\n\t\t\tif (!loadedModule) {\n\t\t\t\t// Treat `moduleId` as a directory and try to resolve its index with added extensions\n\t\t\t\tfor (const ext of EXTENSIONS) {\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tloadedModule = await tryImport(\n\t\t\t\t\t\ttryResolve(`${moduleId}/index${ext}`, parentModulePath),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (loadedModule) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!loadedModule) {\n\t\tconst errorString = `Cannot find module '${moduleId}'`;\n\t\tdebug(errorString);\n\t\tconst error = new Error(errorString);\n\t\terror.code = 'MODULE_NOT_FOUND';\n\t\tthrow error;\n\t}\n\n\tdebug(`Successfully loaded module '${moduleId}' from '${fromDirectory}'`);\n\n\treturn loadedModule.default ?? loadedModule;\n}\n\nimportFrom.silent = async function (fromDirectory, moduleId) {\n\ttry {\n\t\treturn await importFrom(fromDirectory, moduleId);\n\t} catch {}\n};\n\nexport default importFrom;\n","// Manually “tree shaken” from:\n// <https://github.com/nodejs/node/blob/81a9a97/lib/internal/modules/esm/resolve.js>\n// Last checked on: Apr 29, 2023.\n\n/**\n * @typedef {import('node:fs').Stats} Stats\n * @typedef {import('./errors.js').ErrnoException} ErrnoException\n * @typedef {import('./package-json-reader.js').PackageConfig} PackageConfig\n */\n\nimport assert from 'node:assert'\nimport {statSync, realpathSync} from 'node:fs'\nimport process from 'node:process'\nimport {URL, fileURLToPath, pathToFileURL} from 'node:url'\nimport path from 'node:path'\nimport {builtinModules} from 'node:module'\nimport {defaultGetFormatWithoutErrors} from './get-format.js'\nimport {codes} from './errors.js'\nimport {getPackageScopeConfig, read} from './package-json-reader.js'\nimport {getConditionsSet} from './utils.js'\n\nconst RegExpPrototypeSymbolReplace = RegExp.prototype[Symbol.replace]\n\nconst {\n ERR_NETWORK_IMPORT_DISALLOWED,\n ERR_INVALID_MODULE_SPECIFIER,\n ERR_INVALID_PACKAGE_CONFIG,\n ERR_INVALID_PACKAGE_TARGET,\n ERR_MODULE_NOT_FOUND,\n ERR_PACKAGE_IMPORT_NOT_DEFINED,\n ERR_PACKAGE_PATH_NOT_EXPORTED,\n ERR_UNSUPPORTED_DIR_IMPORT,\n ERR_UNSUPPORTED_RESOLVE_REQUEST\n} = codes\n\nconst own = {}.hasOwnProperty\n\nconst invalidSegmentRegEx =\n /(^|\\\\|\\/)((\\.|%2e)(\\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))?(\\\\|\\/|$)/i\nconst deprecatedInvalidSegmentRegEx =\n /(^|\\\\|\\/)((\\.|%2e)(\\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\\\|\\/|$)/i\nconst invalidPackageNameRegEx = /^\\.|%|\\\\/\nconst patternRegEx = /\\*/g\nconst encodedSeparatorRegEx = /%2f|%5c/i\n/** @type {Set<string>} */\nconst emittedPackageWarnings = new Set()\n\nconst doubleSlashRegEx = /[/\\\\]{2}/\n\n/**\n *\n * @param {string} target\n * @param {string} request\n * @param {string} match\n * @param {URL} packageJsonUrl\n * @param {boolean} internal\n * @param {URL} base\n * @param {boolean} isTarget\n */\nfunction emitInvalidSegmentDeprecation(\n target,\n request,\n match,\n packageJsonUrl,\n internal,\n base,\n isTarget\n) {\n // @ts-expect-error: apparently it does exist, TS.\n if (process.noDeprecation) {\n return\n }\n\n const pjsonPath = fileURLToPath(packageJsonUrl)\n const double = doubleSlashRegEx.exec(isTarget ? target : request) !== null\n process.emitWarning(\n `Use of deprecated ${\n double ? 'double slash' : 'leading or trailing slash matching'\n } resolving \"${target}\" for module ` +\n `request \"${request}\" ${\n request === match ? '' : `matched to \"${match}\" `\n }in the \"${\n internal ? 'imports' : 'exports'\n }\" field module resolution of the package at ${pjsonPath}${\n base ? ` imported from ${fileURLToPath(base)}` : ''\n }.`,\n 'DeprecationWarning',\n 'DEP0166'\n )\n}\n\n/**\n * @param {URL} url\n * @param {URL} packageJsonUrl\n * @param {URL} base\n * @param {string} [main]\n * @returns {void}\n */\nfunction emitLegacyIndexDeprecation(url, packageJsonUrl, base, main) {\n // @ts-expect-error: apparently it does exist, TS.\n if (process.noDeprecation) {\n return\n }\n\n const format = defaultGetFormatWithoutErrors(url, {parentURL: base.href})\n if (format !== 'module') return\n const urlPath = fileURLToPath(url.href)\n const packagePath = fileURLToPath(new URL('.', packageJsonUrl))\n const basePath = fileURLToPath(base)\n if (!main) {\n process.emitWarning(\n `No \"main\" or \"exports\" field defined in the package.json for ${packagePath} resolving the main entry point \"${urlPath.slice(\n packagePath.length\n )}\", imported from ${basePath}.\\nDefault \"index\" lookups for the main are deprecated for ES modules.`,\n 'DeprecationWarning',\n 'DEP0151'\n )\n } else if (path.resolve(packagePath, main) !== urlPath) {\n process.emitWarning(\n `Package ${packagePath} has a \"main\" field set to \"${main}\", ` +\n `excluding the full filename and extension to the resolved file at \"${urlPath.slice(\n packagePath.length\n )}\", imported from ${basePath}.\\n Automatic extension resolution of the \"main\" field is ` +\n 'deprecated for ES modules.',\n 'DeprecationWarning',\n 'DEP0151'\n )\n }\n}\n\n/**\n * @param {string} path\n * @returns {Stats | undefined}\n */\nfunction tryStatSync(path) {\n // Note: from Node 15 onwards we can use `throwIfNoEntry: false` instead.\n try {\n return statSync(path)\n } catch {\n // Note: in Node code this returns `new Stats`,\n // but in Node 22 that’s marked as a deprecated internal API.\n // Which, well, we kinda are, but still to prevent that warning,\n // just yield `undefined`.\n }\n}\n\n/**\n * Legacy CommonJS main resolution:\n * 1. let M = pkg_url + (json main field)\n * 2. TRY(M, M.js, M.json, M.node)\n * 3. TRY(M/index.js, M/index.json, M/index.node)\n * 4. TRY(pkg_url/index.js, pkg_url/index.json, pkg_url/index.node)\n * 5. NOT_FOUND\n *\n * @param {URL} url\n * @returns {boolean}\n */\nfunction fileExists(url) {\n const stats = statSync(url, {throwIfNoEntry: false})\n const isFile = stats ? stats.isFile() : undefined\n return isFile === null || isFile === undefined ? false : isFile\n}\n\n/**\n * @param {URL} packageJsonUrl\n * @param {PackageConfig} packageConfig\n * @param {URL} base\n * @returns {URL}\n */\nfunction legacyMainResolve(packageJsonUrl, packageConfig, base) {\n /** @type {URL | undefined} */\n let guess\n if (packageConfig.main !== undefined) {\n guess = new URL(packageConfig.main, packageJsonUrl)\n // Note: fs check redundances will be handled by Descriptor cache here.\n if (fileExists(guess)) return guess\n\n const tries = [\n `./${packageConfig.main}.js`,\n `./${packageConfig.main}.json`,\n `./${packageConfig.main}.node`,\n `./${packageConfig.main}/index.js`,\n `./${packageConfig.main}/index.json`,\n `./${packageConfig.main}/index.node`\n ]\n let i = -1\n\n while (++i < tries.length) {\n guess = new URL(tries[i], packageJsonUrl)\n if (fileExists(guess)) break\n guess = undefined\n }\n\n if (guess) {\n emitLegacyIndexDeprecation(\n guess,\n packageJsonUrl,\n base,\n packageConfig.main\n )\n return guess\n }\n // Fallthrough.\n }\n\n const tries = ['./index.js', './index.json', './index.node']\n let i = -1\n\n while (++i < tries.length) {\n guess = new URL(tries[i], packageJsonUrl)\n if (fileExists(guess)) break\n guess = undefined\n }\n\n if (guess) {\n emitLegacyIndexDeprecation(guess, packageJsonUrl, base, packageConfig.main)\n return guess\n }\n\n // Not found.\n throw new ERR_MODULE_NOT_FOUND(\n fileURLToPath(new URL('.', packageJsonUrl)),\n fileURLToPath(base)\n )\n}\n\n/**\n * @param {URL} resolved\n * @param {URL} base\n * @param {boolean} [preserveSymlinks]\n * @returns {URL}\n */\nfunction finalizeResolution(resolved, base, preserveSymlinks) {\n if (encodedSeparatorRegEx.exec(resolved.pathname) !== null) {\n throw new ERR_INVALID_MODULE_SPECIFIER(\n resolved.pathname,\n 'must not include encoded \"/\" or \"\\\\\" characters',\n fileURLToPath(base)\n )\n }\n\n /** @type {string} */\n let filePath\n\n try {\n filePath = fileURLToPath(resolved)\n } catch (error) {\n const cause = /** @type {ErrnoException} */ (error)\n Object.defineProperty(cause, 'input', {value: String(resolved)})\n Object.defineProperty(cause, 'module', {value: String(base)})\n throw cause\n }\n\n const stats = tryStatSync(\n filePath.endsWith('/') ? filePath.slice(-1) : filePath\n )\n\n if (stats && stats.isDirectory()) {\n const error = new ERR_UNSUPPORTED_DIR_IMPORT(filePath, fileURLToPath(base))\n // @ts-expect-error Add this for `import.meta.resolve`.\n error.url = String(resolved)\n throw error\n }\n\n if (!stats || !stats.isFile()) {\n const error = new ERR_MODULE_NOT_FOUND(\n filePath || resolved.pathname,\n base && fileURLToPath(base),\n true\n )\n // @ts-expect-error Add this for `import.meta.resolve`.\n error.url = String(resolved)\n throw error\n }\n\n if (!preserveSymlinks) {\n const real = realpathSync(filePath)\n const {search, hash} = resolved\n resolved = pathToFileURL(real + (filePath.endsWith(path.sep) ? '/' : ''))\n resolved.search = search\n resolved.hash = hash\n }\n\n return resolved\n}\n\n/**\n * @param {string} specifier\n * @param {URL | undefined} packageJsonUrl\n * @param {URL} base\n * @returns {Error}\n */\nfunction importNotDefined(specifier, packageJsonUrl, base) {\n return new ERR_PACKAGE_IMPORT_NOT_DEFINED(\n specifier,\n packageJsonUrl && fileURLToPath(new URL('.', packageJsonUrl)),\n fileURLToPath(base)\n )\n}\n\n/**\n * @param {string} subpath\n * @param {URL} packageJsonUrl\n * @param {URL} base\n * @returns {Error}\n */\nfunction exportsNotFound(subpath, packageJsonUrl, base) {\n return new ERR_PACKAGE_PATH_NOT_EXPORTED(\n fileURLToPath(new URL('.', packageJsonUrl)),\n subpath,\n base && fileURLToPath(base)\n )\n}\n\n/**\n * @param {string} request\n * @param {string} match\n * @param {URL} packageJsonUrl\n * @param {boolean} internal\n * @param {URL} [base]\n * @returns {never}\n */\nfunction throwInvalidSubpath(request, match, packageJsonUrl, internal, base) {\n const reason = `request is not a valid match in pattern \"${match}\" for the \"${\n internal ? 'imports' : 'exports'\n }\" resolution of ${fileURLToPath(packageJsonUrl)}`\n throw new ERR_INVALID_MODULE_SPECIFIER(\n request,\n reason,\n base && fileURLToPath(base)\n )\n}\n\n/**\n * @param {string} subpath\n * @param {unknown} target\n * @param {URL} packageJsonUrl\n * @param {boolean} internal\n * @param {URL} [base]\n * @returns {Error}\n */\nfunction invalidPackageTarget(subpath, target, packageJsonUrl, internal, base) {\n target =\n typeof target === 'object' && target !== null\n ? JSON.stringify(target, null, '')\n : `${target}`\n\n return new ERR_INVALID_PACKAGE_TARGET(\n fileURLToPath(new URL('.', packageJsonUrl)),\n subpath,\n target,\n internal,\n base && fileURLToPath(base)\n )\n}\n\n/**\n * @param {string} target\n * @param {string} subpath\n * @param {string} match\n * @param {URL} packageJsonUrl\n * @param {URL} base\n * @param {boolean} pattern\n * @param {boolean} internal\n * @param {boolean} isPathMap\n * @param {Set<string> | undefined} conditions\n * @returns {URL}\n */\nfunction resolvePackageTargetString(\n target,\n subpath,\n match,\n packageJsonUrl,\n base,\n pattern,\n internal,\n isPathMap,\n conditions\n) {\n if (subpath !== '' && !pattern && target[target.length - 1] !== '/')\n throw invalidPackageTarget(match, target, packageJsonUrl, internal, base)\n\n if (!target.startsWith('./')) {\n if (internal && !target.startsWith('../') && !target.startsWith('/')) {\n let isURL = false\n\n try {\n new URL(target)\n isURL = true\n } catch {\n // Continue regardless of error.\n }\n\n if (!isURL) {\n const exportTarget = pattern\n ? RegExpPrototypeSymbolReplace.call(\n patternRegEx,\n target,\n () => subpath\n )\n : target + subpath\n\n return packageResolve(exportTarget, packageJsonUrl, conditions)\n }\n }\n\n throw invalidPackageTarget(match, target, packageJsonUrl, internal, base)\n }\n\n if (invalidSegmentRegEx.exec(target.slice(2)) !== null) {\n if (deprecatedInvalidSegmentRegEx.exec(target.slice(2)) === null) {\n if (!isPathMap) {\n const request = pattern\n ? match.replace('*', () => subpath)\n : match + subpath\n const resolvedTarget = pattern\n ? RegExpPrototypeSymbolReplace.call(\n patternRegEx,\n target,\n () => subpath\n )\n : target\n emitInvalidSegmentDeprecation(\n resolvedTarget,\n request,\n match,\n packageJsonUrl,\n internal,\n base,\n true\n )\n }\n } else {\n throw invalidPackageTarget(match, target, packageJsonUrl, internal, base)\n }\n }\n\n const resolved = new URL(target, packageJsonUrl)\n const resolvedPath = resolved.pathname\n const packagePath = new URL('.', packageJsonUrl).pathname\n\n if (!resolvedPath.startsWith(packagePath))\n throw invalidPackageTarget(match, target, packageJsonUrl, internal, base)\n\n if (subpath === '') return resolved\n\n if (invalidSegmentRegEx.exec(subpath) !== null) {\n const request = pattern\n ? match.replace('*', () => subpath)\n : match + subpath\n if (deprecatedInvalidSegmentRegEx.exec(subpath) === null) {\n if (!isPathMap) {\n const resolvedTarget = pattern\n ? RegExpPrototypeSymbolReplace.call(\n patternRegEx,\n target,\n () => subpath\n )\n : target\n emitInvalidSegmentDeprecation(\n resolvedTarget,\n request,\n match,\n packageJsonUrl,\n internal,\n base,\n false\n )\n }\n } else {\n throwInvalidSubpath(request, match, packageJsonUrl, internal, base)\n }\n }\n\n if (pattern) {\n return new URL(\n RegExpPrototypeSymbolReplace.call(\n patternRegEx,\n resolved.href,\n () => subpath\n )\n )\n }\n\n return new URL(subpath, resolved)\n}\n\n/**\n * @param {string} key\n * @returns {boolean}\n */\nfunction isArrayIndex(key) {\n const keyNumber = Number(key)\n if (`${keyNumber}` !== key) return false\n return keyNumber >= 0 && keyNumber < 0xff_ff_ff_ff\n}\n\n/**\n * @param {URL} packageJsonUrl\n * @param {unknown} target\n * @param {string} subpath\n * @param {string} packageSubpath\n * @param {URL} base\n * @param {boolean} pattern\n * @param {boolean} internal\n * @param {boolean} isPathMap\n * @param {Set<string> | undefined} conditions\n * @returns {URL | null}\n */\nfunction resolvePackageTarget(\n packageJsonUrl,\n target,\n subpath,\n packageSubpath,\n base,\n pattern,\n internal,\n isPathMap,\n conditions\n) {\n if (typeof target === 'string') {\n return resolvePackageTargetString(\n target,\n subpath,\n packageSubpath,\n packageJsonUrl,\n base,\n pattern,\n internal,\n isPathMap,\n conditions\n )\n }\n\n if (Array.isArray(target)) {\n /** @type {Array<unknown>} */\n const targetList = target\n if (targetList.length === 0) return null\n\n /** @type {ErrnoException | null | undefined} */\n let lastException\n let i = -1\n\n while (++i < targetList.length) {\n const targetItem = targetList[i]\n /** @type {URL | null} */\n let resolveResult\n try {\n resolveResult = resolvePackageTarget(\n packageJsonUrl,\n targetItem,\n subpath,\n packageSubpath,\n base,\n pattern,\n internal,\n isPathMap,\n conditions\n )\n } catch (error) {\n const exception = /** @type {ErrnoException} */ (error)\n lastException = exception\n if (exception.code === 'ERR_INVALID_PACKAGE_TARGET') continue\n throw error\n }\n\n if (resolveResult === undefined) continue\n\n if (resolveResult === null) {\n lastException = null\n continue\n }\n\n return resolveResult\n }\n\n if (lastException === undefined || lastException === null) {\n return null\n }\n\n throw lastException\n }\n\n if (typeof target === 'object' && target !== null) {\n const keys = Object.getOwnPropertyNames(target)\n let i = -1\n\n while (++i < keys.length) {\n const key = keys[i]\n if (isArrayIndex(key)) {\n throw new ERR_INVALID_PACKAGE_CONFIG(\n fileURLToPath(packageJsonUrl),\n base,\n '\"exports\" cannot contain numeric property keys.'\n )\n }\n }\n\n i = -1\n\n while (++i < keys.length) {\n const key = keys[i]\n if (key === 'default' || (conditions && conditions.has(key))) {\n // @ts-expect-error: indexable.\n const conditionalTarget = /** @type {unknown} */ (target[key])\n const resolveResult = resolvePackageTarget(\n packageJsonUrl,\n conditionalTarget,\n subpath,\n packageSubpath,\n base,\n pattern,\n internal,\n isPathMap,\n conditions\n )\n if (resolveResult === undefined) continue\n return resolveResult\n }\n }\n\n return null\n }\n\n if (target === null) {\n return null\n }\n\n throw invalidPackageTarget(\n packageSubpath,\n target,\n packageJsonUrl,\n internal,\n base\n )\n}\n\n/**\n * @param {unknown} exports\n * @param {URL} packageJsonUrl\n * @param {URL} base\n * @returns {boolean}\n */\nfunction isConditionalExportsMainSugar(exports, packageJsonUrl, base) {\n if (typeof exports === 'string' || Array.isArray(exports)) return true\n if (typeof exports !== 'object' || exports === null) return false\n\n const keys = Object.getOwnPropertyNames(exports)\n let isConditionalSugar = false\n let i = 0\n let keyIndex = -1\n while (++keyIndex < keys.length) {\n const key = keys[keyIndex]\n const currentIsConditionalSugar = key === '' || key[0] !== '.'\n if (i++ === 0) {\n isConditionalSugar = currentIsConditionalSugar\n } else if (isConditionalSugar !== currentIsConditionalSugar) {\n throw new ERR_INVALID_PACKAGE_CONFIG(\n fileURLToPath(packageJsonUrl),\n base,\n '\"exports\" cannot contain some keys starting with \\'.\\' and some not.' +\n ' The exports object must either be an object of package subpath keys' +\n ' or an object of main entry condition name keys only.'\n )\n }\n }\n\n return isConditionalSugar\n}\n\n/**\n * @param {string} match\n * @param {URL} pjsonUrl\n * @param {URL} base\n */\nfunction emitTrailingSlashPatternDeprecation(match, pjsonUrl, base) {\n // @ts-expect-error: apparently it does exist, TS.\n if (process.noDeprecation) {\n return\n }\n\n const pjsonPath = fileURLToPath(pjsonUrl)\n if (emittedPackageWarnings.has(pjsonPath + '|' + match)) return\n emittedPackageWarnings.add(pjsonPath + '|' + match)\n process.emitWarning(\n `Use of deprecated trailing slash pattern mapping \"${match}\" in the ` +\n `\"exports\" field module resolution of the package at ${pjsonPath}${\n base ? ` imported from ${fileURLToPath(base)}` : ''\n }. Mapping specifiers ending in \"/\" is no longer supported.`,\n 'DeprecationWarning',\n 'DEP0155'\n )\n}\n\n/**\n * @param {URL} packageJsonUrl\n * @param {string} packageSubpath\n * @param {Record<string, unknown>} packageConfig\n * @param {URL} base\n * @param {Set<string> | undefined} conditions\n * @returns {URL}\n */\nfunction packageExportsResolve(\n packageJsonUrl,\n packageSubpath,\n packageConfig,\n base,\n conditions\n) {\n let exports = packageConfig.exports\n\n if (isConditionalExportsMainSugar(exports, packageJsonUrl, base)) {\n exports = {'.': exports}\n }\n\n if (\n own.call(exports, packageSubpath) &&\n !packageSubpath.includes('*') &&\n !packageSubpath.endsWith('/')\n ) {\n // @ts-expect-error: indexable.\n const target = exports[packageSubpath]\n const resolveResult = resolvePackageTarget(\n packageJsonUrl,\n target,\n '',\n packageSubpath,\n base,\n false,\n false,\n false,\n conditions\n )\n if (resolveResult === null || resolveResult === undefined) {\n throw exportsNotFound(packageSubpath, packageJsonUrl, base)\n }\n\n return resolveResult\n }\n\n let bestMatch = ''\n let bestMatchSubpath = ''\n const keys = Object.getOwnPropertyNames(exports)\n let i = -1\n\n while (++i < keys.length) {\n const key = keys[i]\n const patternIndex = key.indexOf('*')\n\n if (\n patternIndex !== -1 &&\n packageSubpath.startsWith(key.slice(0, patternIndex))\n ) {\n // When this reaches EOL, this can throw at the top of the whole function:\n //\n // if (StringPrototypeEndsWith(packageSubpath, '/'))\n // throwInvalidSubpath(packageSubpath)\n //\n // To match \"imports\" and the spec.\n if (packageSubpath.endsWith('/')) {\n emitTrailingSlashPatternDeprecation(\n packageSubpath,\n packageJsonUrl,\n base\n )\n }\n\n const patternTrailer = key.slice(patternIndex + 1)\n\n if (\n packageSubpath.length >= key.length &&\n packageSubpath.endsWith(patternTrailer) &&\n patternKeyCompare(bestMatch, key) === 1 &&\n key.lastIndexOf('*') === patternIndex\n ) {\n bestMatch = key\n bestMatchSubpath = packageSubpath.slice(\n patternIndex,\n packageSubpath.length - patternTrailer.length\n )\n }\n }\n }\n\n if (bestMatch) {\n // @ts-expect-error: indexable.\n const target = /** @type {unknown} */ (exports[bestMatch])\n const resolveResult = resolvePackageTarget(\n packageJsonUrl,\n target,\n bestMatchSubpath,\n bestMatch,\n base,\n true,\n false,\n packageSubpath.endsWith('/'),\n conditions\n )\n\n if (resolveResult === null || resolveResult === undefined) {\n throw exportsNotFound(packageSubpath, packageJsonUrl, base)\n }\n\n return resolveResult\n }\n\n throw exportsNotFound(packageSubpath, packageJsonUrl, base)\n}\n\n/**\n * @param {string} a\n * @param {string} b\n */\nfunction patternKeyCompare(a, b) {\n const aPatternIndex = a.indexOf('*')\n const bPatternIndex = b.indexOf('*')\n const baseLengthA = aPatternIndex === -1 ? a.length : aPatternIndex + 1\n const baseLengthB = bPatternIndex === -1 ? b.length : bPatternIndex + 1\n if (baseLengthA > baseLengthB) return -1\n if (baseLengthB > baseLengthA) return 1\n if (aPatternIndex === -1) return 1\n if (bPatternIndex === -1) return -1\n if (a.length > b.length) return -1\n if (b.length > a.length) return 1\n return 0\n}\n\n/**\n * @param {string} name\n * @param {URL} base\n * @param {Set<string>} [conditions]\n * @returns {URL}\n */\nfunction packageImportsResolve(name, base, conditions) {\n if (name === '#' || name.startsWith('#/') || name.endsWith('/')) {\n const reason = 'is not a valid internal imports specifier name'\n throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, fileURLToPath(base))\n }\n\n /** @type {URL | undefined} */\n let packageJsonUrl\n\n const packageConfig = getPackageScopeConfig(base)\n\n if (packageConfig.exists) {\n packageJsonUrl = pathToFileURL(packageConfig.pjsonPath)\n const imports = packageConfig.imports\n if (imports) {\n if (own.call(imports, name) && !name.includes('*')) {\n const resolveResult = resolvePackageTarget(\n packageJsonUrl,\n imports[name],\n '',\n name,\n base,\n false,\n true,\n false,\n conditions\n )\n if (resolveResult !== null && resolveResult !== undefined) {\n return resolveResult\n }\n } else {\n let bestMatch = ''\n let bestMatchSubpath = ''\n const keys = Object.getOwnPropertyNames(imports)\n let i = -1\n\n while (++i < keys.length) {\n const key = keys[i]\n const patternIndex = key.indexOf('*')\n\n if (patternIndex !== -1 && name.startsWith(key.slice(0, -1))) {\n const patternTrailer = key.slice(patternIndex + 1)\n if (\n name.length >= key.length &&\n name.endsWith(patternTrailer) &&\n patternKeyCompare(bestMatch, key) === 1 &&\n key.lastIndexOf('*') === patternIndex\n ) {\n bestMatch = key\n bestMatchSubpath = name.slice(\n patternIndex,\n name.length - patternTrailer.length\n )\n }\n }\n }\n\n if (bestMatch) {\n const target = imports[bestMatch]\n const resolveResult = resolvePackageTarget(\n packageJsonUrl,\n target,\n bestMatchSubpath,\n bestMatch,\n base,\n true,\n true,\n false,\n conditions\n )\n\n if (resolveResult !== null && resolveResult !== undefined) {\n return resolveResult\n }\n }\n }\n }\n }\n\n throw importNotDefined(name, packageJsonUrl, base)\n}\n\n/**\n * @param {string} specifier\n * @param {URL} base\n */\nfunction parsePackageName(specifier, base) {\n let separatorIndex = specifier.indexOf('/')\n let validPackageName = true\n let isScoped = false\n if (specifier[0] === '@') {\n isScoped = true\n if (separatorIndex === -1 || specifier.length === 0) {\n validPackageName = false\n } else {\n separatorIndex = specifier.indexOf('/', separatorIndex + 1)\n }\n }\n\n const packageName =\n separatorIndex === -1 ? specifier : specifier.slice(0, separatorIndex)\n\n // Package name cannot have leading . and cannot have percent-encoding or\n // \\\\ separators.\n if (invalidPackageNameRegEx.exec(packageName) !== null) {\n validPackageName = false\n }\n\n if (!validPackageName) {\n throw new ERR_INVALID_MODULE_SPECIFIER(\n specifier,\n 'is not a valid package name',\n fileURLToPath(base)\n )\n }\n\n const packageSubpath =\n '.' + (separatorIndex === -1 ? '' : specifier.slice(separatorIndex))\n\n return {packageName, packageSubpath, isScoped}\n}\n\n/**\n * @param {string} specifier\n * @param {URL} base\n * @param {Set<string> | undefined} conditions\n * @returns {URL}\n */\nfunction packageResolve(specifier, base, conditions) {\n if (builtinModules.includes(specifier)) {\n return new URL('node:' + specifier)\n }\n\n const {packageName, packageSubpath, isScoped} = parsePackageName(\n specifier,\n base\n )\n\n // ResolveSelf\n const packageConfig = getPackageScopeConfig(base)\n\n // Can’t test.\n /* c8 ignore next 16 */\n if (packageConfig.exists) {\n const packageJsonUrl = pathToFileURL(packageConfig.pjsonPath)\n if (\n packageConfig.name === packageName &&\n packageConfig.exports !== undefined &&\n packageConfig.exports !== null\n ) {\n return packageExportsResolve(\n packageJsonUrl,\n packageSubpath,\n packageConfig,\n base,\n conditions\n )\n }\n }\n\n let packageJsonUrl = new URL(\n './node_modules/' + packageName + '/package.json',\n base\n )\n let packageJsonPath = fileURLToPath(packageJsonUrl)\n /** @type {string} */\n let lastPath\n do {\n const stat = tryStatSync(packageJsonPath.slice(0, -13))\n if (!stat || !stat.isDirectory()) {\n lastPath = packageJsonPath\n packageJsonUrl = new URL(\n (isScoped ? '../../../../node_modules/' : '../../../node_modules/') +\n packageName +\n '/package.json',\n packageJsonUrl\n )\n packageJsonPath = fileURLToPath(packageJsonUrl)\n continue\n }\n\n // Package match.\n const packageConfig = read(packageJsonPath, {base, specifier})\n if (packageConfig.exports !== undefined && packageConfig.exports !== null) {\n return packageExportsResolve(\n packageJsonUrl,\n packageSubpath,\n packageConfig,\n base,\n conditions\n )\n }\n\n if (packageSubpath === '.') {\n return legacyMainResolve(packageJsonUrl, packageConfig, base)\n }\n\n return new URL(packageSubpath, packageJsonUrl)\n // Cross-platform root check.\n } while (packageJsonPath.length !== lastPath.length)\n\n throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), false)\n}\n\n/**\n * @param {string} specifier\n * @returns {boolean}\n */\nfunction isRelativeSpecifier(specifier) {\n if (specifier[0] === '.') {\n if (specifier.length === 1 || specifier[1] === '/') return true\n if (\n specifier[1] === '.' &&\n (specifier.length === 2 || specifier[2] === '/')\n ) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * @param {string} specifier\n * @returns {boolean}\n */\nfunction shouldBeTreatedAsRelativeOrAbsolutePath(specifier) {\n if (specifier === '') return false\n if (specifier[0] === '/') return true\n return isRelativeSpecifier(specifier)\n}\n\n/**\n * The “Resolver Algorithm Specification” as detailed in the Node docs (which is\n * sync and slightly lower-level than `resolve`).\n *\n * @param {string} specifier\n * `/example.js`, `./example.js`, `../example.js`, `some-package`, `fs`, etc.\n * @param {URL} base\n * Full URL (to a file) that `specifier` is resolved relative from.\n * @param {Set<string>} [conditions]\n * Conditions.\n * @param {boolean} [preserveSymlinks]\n * Keep symlinks instead of resolving them.\n * @returns {URL}\n * A URL object to the found thing.\n */\nexport function moduleResolve(specifier, base, conditions, preserveSymlinks) {\n // Note: The Node code supports `base` as a string (in this internal API) too,\n // we don’t.\n const protocol = base.protocol\n const isData = protocol === 'data:'\n const isRemote = isData || protocol === 'http:' || protocol === 'https:'\n // Order swapped from spec for minor perf gain.\n // Ok since relative URLs cannot parse as URLs.\n /** @type {URL | undefined} */\n let resolved\n\n if (shouldBeTreatedAsRelativeOrAbsolutePath(specifier)) {\n try {\n resolved = new URL(specifier, base)\n } catch (error_) {\n const error = new ERR_UNSUPPORTED_RESOLVE_REQUEST(specifier, base)\n error.cause = error_\n throw error\n }\n } else if (protocol === 'file:' && specifier[0] === '#') {\n resolved = packageImportsResolve(specifier, base, conditions)\n } else {\n try {\n resolved = new URL(specifier)\n } catch (error_) {\n // Note: actual code uses `canBeRequiredWithoutScheme`.\n if (isRemote && !builtinModules.includes(specifier)) {\n const error = new ERR_UNSUPPORTED_RESOLVE_REQUEST(specifier, base)\n error.cause = error_\n throw error\n }\n\n resolved = packageResolve(specifier, base, conditions)\n }\n }\n\n assert(resolved !== undefined, 'expected to be defined')\n\n if (resolved.protocol !== 'file:') {\n return resolved\n }\n\n return finalizeResolution(resolved, base, preserveSymlinks)\n}\n\n/**\n * @param {string} specifier\n * @param {URL | undefined} parsed\n * @param {URL | undefined} parsedParentURL\n */\nfunction checkIfDisallowedImport(specifier, parsed, parsedParentURL) {\n if (parsedParentURL) {\n // Avoid accessing the `protocol` property due to the lazy getters.\n const parentProtocol = parsedParentURL.protocol\n\n if (parentProtocol === 'http:' || parentProtocol === 'https:') {\n if (shouldBeTreatedAsRelativeOrAbsolutePath(specifier)) {\n // Avoid accessing the `protocol` property due to the lazy getters.\n const parsedProtocol = parsed?.protocol\n\n // `data:` and `blob:` disallowed due to allowing file: access via\n // indirection\n if (\n parsedProtocol &&\n parsedProtocol !== 'https:' &&\n parsedProtocol !== 'http:'\n ) {\n throw new ERR_NETWORK_IMPORT_DISALLOWED(\n specifier,\n parsedParentURL,\n 'remote imports cannot import from a local location.'\n )\n }\n\n return {url: parsed?.href || ''}\n }\n\n if (builtinModules.includes(specifier)) {\n throw new ERR_NETWORK_IMPORT_DISALLOWED(\n specifier,\n parsedParentURL,\n 'remote imports cannot import from a local location.'\n )\n }\n\n throw new ERR_NETWORK_IMPORT_DISALLOWED(\n specifier,\n parsedParentURL,\n 'only relative and absolute specifiers are supported.'\n )\n }\n }\n}\n\n// Note: this is from:\n// <https://github.com/nodejs/node/blob/3e74590/lib/internal/url.js#L687>\n/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * @template {unknown} Value\n * @param {Value} self\n * @returns {Value is URL}\n */\nfunction isURL(self) {\n return Boolean(\n self &&\n typeof self === 'object' &&\n 'href' in self &&\n typeof self.href === 'string' &&\n 'protocol' in self &&\n typeof self.protocol === 'string' &&\n self.href &&\n self.protocol\n )\n}\n\n/**\n * Validate user-input in `context` supplied by a custom loader.\n *\n * @param {unknown} parentURL\n * @returns {asserts parentURL is URL | string | undefined}\n */\nfunction throwIfInvalidParentURL(parentURL) {\n if (parentURL === undefined) {\n return // Main entry point, so no parent\n }\n\n if (typeof parentURL !== 'string' && !isURL(parentURL)) {\n throw new codes.ERR_INVALID_ARG_TYPE(\n 'parentURL',\n ['string', 'URL'],\n parentURL\n )\n }\n}\n\n/**\n * @param {string} specifier\n * @param {{parentURL?: string, conditions?: Array<string>}} context\n * @returns {{url: string, format?: string | null}}\n */\nexport function defaultResolve(specifier, context = {}) {\n const {parentURL} = context\n assert(parentURL !== undefined, 'expected `parentURL` to be defined')\n throwIfInvalidParentURL(parentURL)\n\n /** @type {URL | undefined} */\n let parsedParentURL\n if (parentURL) {\n try {\n parsedParentURL = new URL(parentURL)\n } catch {\n // Ignore exception\n }\n }\n\n /** @type {URL | undefined} */\n let parsed\n /** @type {string | undefined} */\n let protocol\n\n try {\n parsed = shouldBeTreatedAsRelativeOrAbsolutePath(specifier)\n ? new URL(specifier, parsedParentURL)\n : new URL(specifier)\n\n // Avoid accessing the `protocol` property due to the lazy getters.\n protocol = parsed.protocol\n\n if (protocol === 'data:') {\n return {url: parsed.href, format: null}\n }\n } catch {\n // Ignore exception\n }\n\n // There are multiple deep branches that can either throw or return; instead\n // of duplicating that deeply nested logic for the possible returns, DRY and\n // check for a return. This seems the least gnarly.\n const maybeReturn = checkIfDisallowedImport(\n specifier,\n parsed,\n parsedParentURL\n )\n\n if (maybeReturn) return maybeReturn\n\n // This must come after checkIfDisallowedImport\n if (protocol === undefined && parsed) {\n protocol = parsed.protocol\n }\n\n if (protocol === 'node:') {\n return {url: specifier}\n }\n\n // This must come after checkIfDisallowedImport\n if (parsed && parsed.protocol === 'node:') return {url: specifier}\n\n const conditions = getConditionsSet(context.conditions)\n\n const url = moduleResolve(specifier, new URL(parentURL), conditions, false)\n\n return {\n // Do NOT cast `url` to a string: that will work even when there are real\n // problems, silencing them\n url: url.href,\n format: defaultGetFormatWithoutErrors(url, {parentURL})\n }\n}\n","// Manually “tree shaken” from:\n// <https://github.com/nodejs/node/blob/7c3dce0/lib/internal/modules/esm/get_format.js>\n// Last checked on: Apr 29, 2023.\n\nimport {fileURLToPath} from 'node:url'\nimport {getPackageType} from './package-json-reader.js'\nimport {codes} from './errors.js'\n\nconst {ERR_UNKNOWN_FILE_EXTENSION} = codes\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/** @type {Record<string, string>} */\nconst extensionFormatMap = {\n // @ts-expect-error: hush.\n __proto__: null,\n '.cjs': 'commonjs',\n '.js': 'module',\n '.json': 'json',\n '.mjs': 'module'\n}\n\n/**\n * @param {string | null} mime\n * @returns {string | null}\n */\nfunction mimeToFormat(mime) {\n if (\n mime &&\n /\\s*(text|application)\\/javascript\\s*(;\\s*charset=utf-?8\\s*)?/i.test(mime)\n )\n return 'module'\n if (mime === 'application/json') return 'json'\n return null\n}\n\n/**\n * @callback ProtocolHandler\n * @param {URL} parsed\n * @param {{parentURL: string, source?: Buffer}} context\n * @param {boolean} ignoreErrors\n * @returns {string | null | void}\n */\n\n/**\n * @type {Record<string, ProtocolHandler>}\n */\nconst protocolHandlers = {\n // @ts-expect-error: hush.\n __proto__: null,\n 'data:': getDataProtocolModuleFormat,\n 'file:': getFileProtocolModuleFormat,\n 'http:': getHttpProtocolModuleFormat,\n 'https:': getHttpProtocolModuleFormat,\n 'node:'() {\n return 'builtin'\n }\n}\n\n/**\n * @param {URL} parsed\n */\nfunction getDataProtocolModuleFormat(parsed) {\n const {1: mime} = /^([^/]+\\/[^;,]+)[^,]*?(;base64)?,/.exec(\n parsed.pathname\n ) || [null, null, null]\n return mimeToFormat(mime)\n}\n\n/**\n * Returns the file extension from a URL.\n *\n * Should give similar result to\n * `require('node:path').extname(require('node:url').fileURLToPath(url))`\n * when used with a `file:` URL.\n *\n * @param {URL} url\n * @returns {string}\n */\nfunction extname(url) {\n const pathname = url.pathname\n let index = pathname.length\n\n while (index--) {\n const code = pathname.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n return ''\n }\n\n if (code === 46 /* `.` */) {\n return pathname.codePointAt(index - 1) === 47 /* `/` */\n ? ''\n : pathname.slice(index)\n }\n }\n\n return ''\n}\n\n/**\n * @type {ProtocolHandler}\n */\nfunction getFileProtocolModuleFormat(url, _context, ignoreErrors) {\n const value = extname(url)\n\n if (value === '.js') {\n const packageType = getPackageType(url)\n\n if (packageType !== 'none') {\n return packageType\n }\n\n return 'commonjs'\n }\n\n if (value === '') {\n const packageType = getPackageType(url)\n\n // Legacy behavior\n if (packageType === 'none' || packageType === 'commonjs') {\n return 'commonjs'\n }\n\n // Note: we don’t implement WASM, so we don’t need\n // `getFormatOfExtensionlessFile` from `formats`.\n return 'module'\n }\n\n const format = extensionFormatMap[value]\n if (format) return format\n\n // Explicit undefined return indicates load hook should rerun format check\n if (ignoreErrors) {\n return undefined\n }\n\n const filepath = fileURLToPath(url)\n throw new ERR_UNKNOWN_FILE_EXTENSION(value, filepath)\n}\n\nfunction getHttpProtocolModuleFormat() {\n // To do: HTTPS imports.\n}\n\n/**\n * @param {URL} url\n * @param {{parentURL: string}} context\n * @returns {string | null}\n */\nexport function defaultGetFormatWithoutErrors(url, context) {\n const protocol = url.protocol\n\n if (!hasOwnProperty.call(protocolHandlers, protocol)) {\n return null\n }\n\n return protocolHandlers[protocol](url, context, true) || null\n}\n","// Manually “tree shaken” from:\n// <https://github.com/nodejs/node/blob/7c3dce0/lib/internal/modules/package_json_reader.js>\n// Last checked on: Apr 29, 2023.\n// Removed the native dependency.\n// Also: no need to cache, we do that in resolve already.\n\n/**\n * @typedef {import('./errors.js').ErrnoException} ErrnoException\n *\n * @typedef {'commonjs' | 'module' | 'none'} PackageType\n *\n * @typedef PackageConfig\n * @property {string} pjsonPath\n * @property {boolean} exists\n * @property {string | undefined} [main]\n * @property {string | undefined} [name]\n * @property {PackageType} type\n * @property {Record<string, unknown> | undefined} [exports]\n * @property {Record<string, unknown> | undefined} [imports]\n */\n\nimport fs from 'node:fs'\nimport path from 'node:path'\nimport {fileURLToPath} from 'node:url'\nimport {codes} from './errors.js'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\nconst {ERR_INVALID_PACKAGE_CONFIG} = codes\n\n/** @type {Map<string, PackageConfig>} */\nconst cache = new Map()\n\n/**\n * @param {string} jsonPath\n * @param {{specifier: URL | string, base?: URL}} options\n * @returns {PackageConfig}\n */\nexport function read(jsonPath, {base, specifier}) {\n const existing = cache.get(jsonPath)\n\n if (existing) {\n return existing\n }\n\n /** @type {string | undefined} */\n let string\n\n try {\n string = fs.readFileSync(path.toNamespacedPath(jsonPath), 'utf8')\n } catch (error) {\n const exception = /** @type {ErrnoException} */ (error)\n\n if (exception.code !== 'ENOENT') {\n throw exception\n }\n }\n\n /** @type {PackageConfig} */\n const result = {\n exists: false,\n pjsonPath: jsonPath,\n main: undefined,\n name: undefined,\n type: 'none', // Ignore unknown types for forwards compatibility\n exports: undefined,\n imports: undefined\n }\n\n if (string !== undefined) {\n /** @type {Record<string, unknown>} */\n let parsed\n\n try {\n parsed = JSON.parse(string)\n } catch (error_) {\n const cause = /** @type {ErrnoException} */ (error_)\n const error = new ERR_INVALID_PACKAGE_CONFIG(\n jsonPath,\n (base ? `\"${specifier}\" from ` : '') + fileURLToPath(base || specifier),\n cause.message\n )\n error.cause = cause\n throw error\n }\n\n result.exists = true\n\n if (\n hasOwnProperty.call(parsed, 'name') &&\n typeof parsed.name === 'string'\n ) {\n result.name = parsed.name\n }\n\n if (\n hasOwnProperty.call(parsed, 'main') &&\n typeof parsed.main === 'string'\n ) {\n result.main = parsed.main\n }\n\n if (hasOwnProperty.call(parsed, 'exports')) {\n // @ts-expect-error: assume valid.\n result.exports = parsed.exports\n }\n\n if (hasOwnProperty.call(parsed, 'imports')) {\n // @ts-expect-error: assume valid.\n result.imports = parsed.imports\n }\n\n // Ignore unknown types for forwards compatibility\n if (\n hasOwnProperty.call(parsed, 'type') &&\n (parsed.type === 'commonjs' || parsed.type === 'module')\n ) {\n result.type = parsed.type\n }\n }\n\n cache.set(jsonPath, result)\n\n return result\n}\n\n/**\n * @param {URL | string} resolved\n * @returns {PackageConfig}\n */\nexport function getPackageScopeConfig(resolved) {\n // Note: in Node, this is now a native module.\n let packageJSONUrl = new URL('package.json', resolved)\n\n while (true) {\n const packageJSONPath = packageJSONUrl.pathname\n if (packageJSONPath.endsWith('node_modules/package.json')) {\n break\n }\n\n const packageConfig = read(fileURLToPath(packageJSONUrl), {\n specifier: resolved\n })\n\n if (packageConfig.exists) {\n return packageConfig\n }\n\n const lastPackageJSONUrl = packageJSONUrl\n packageJSONUrl = new URL('../package.json', packageJSONUrl)\n\n // Terminates at root where ../package.json equals ../../package.json\n // (can't just check \"/package.json\" for Windows support).\n if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) {\n break\n }\n }\n\n const packageJSONPath = fileURLToPath(packageJSONUrl)\n // ^^ Note: in Node, this is now a native module.\n\n return {\n pjsonPath: packageJSONPath,\n exists: false,\n type: 'none'\n }\n}\n\n/**\n * Returns the package type for a given URL.\n * @param {URL} url - The URL to get the package type for.\n * @returns {PackageType}\n */\nexport function getPackageType(url) {\n // To do @anonrig: Write a C++ function that returns only \"type\".\n return getPackageScopeConfig(url).type\n}\n","/**\n * @typedef ErrnoExceptionFields\n * @property {number | undefined} [errnode]\n * @property {string | undefined} [code]\n * @property {string | undefined} [path]\n * @property {string | undefined} [syscall]\n * @property {string | undefined} [url]\n *\n * @typedef {Error & ErrnoExceptionFields} ErrnoException\n */\n\n/**\n * @typedef {(...parameters: Array<any>) => string} MessageFunction\n */\n\n// Manually “tree shaken” from:\n// <https://github.com/nodejs/node/blob/45f5c9b/lib/internal/errors.js>\n// Last checked on: Nov 2, 2023.\nimport v8 from 'node:v8'\nimport assert from 'node:assert'\n// Needed for types.\n// eslint-disable-next-line no-unused-vars\nimport {URL} from 'node:url'\nimport {format, inspect} from 'node:util'\n\nconst own = {}.hasOwnProperty\n\nconst classRegExp = /^([A-Z][a-z\\d]*)+$/\n// Sorted by a rough estimate on most frequently used entries.\nconst kTypes = new Set([\n 'string',\n 'function',\n 'number',\n 'object',\n // Accept 'Function' and 'Object' as alternative to the lower cased version.\n 'Function',\n 'Object',\n 'boolean',\n 'bigint',\n 'symbol'\n])\n\nexport const codes = {}\n\n/**\n * Create a list string in the form like 'A and B' or 'A, B, ..., and Z'.\n * We cannot use Intl.ListFormat because it's not available in\n * --without-intl builds.\n *\n * @param {Array<string>} array\n * An array of strings.\n * @param {string} [type]\n * The list type to be inserted before the last element.\n * @returns {string}\n */\nfunction formatList(array, type = 'and') {\n return array.length < 3\n ? array.join(` ${type} `)\n : `${array.slice(0, -1).join(', ')}, ${type} ${array[array.length - 1]}`\n}\n\n/** @type {Map<string, MessageFunction | string>} */\nconst messages = new Map()\nconst nodeInternalPrefix = '__node_internal_'\n/** @type {number} */\nlet userStackTraceLimit\n\ncodes.ERR_INVALID_ARG_TYPE = createError(\n 'ERR_INVALID_ARG_TYPE',\n /**\n * @param {string} name\n * @param {Array<string> | string} expected\n * @param {unknown} actual\n */\n (name, expected, actual) => {\n assert(typeof name === 'string', \"'name' must be a string\")\n if (!Array.isArray(expected)) {\n expected = [expected]\n }\n\n let message = 'The '\n if (name.endsWith(' argument')) {\n // For cases like 'first argument'\n message += `${name} `\n } else {\n const type = name.includes('.') ? 'property' : 'argument'\n message += `\"${name}\" ${type} `\n }\n\n message += 'must be '\n\n /** @type {Array<string>} */\n const types = []\n /** @type {Array<string>} */\n const instances = []\n /** @type {Array<string>} */\n const other = []\n\n for (const value of expected) {\n assert(\n typeof value === 'string',\n 'All expected entries have to be of type string'\n )\n\n if (kTypes.has(value)) {\n types.push(value.toLowerCase())\n } else if (classRegExp.exec(value) === null) {\n assert(\n value !== 'object',\n 'The value \"object\" should be written as \"Object\"'\n )\n other.push(value)\n } else {\n instances.push(value)\n }\n }\n\n // Special handle `object` in case other instances are allowed to outline\n // the differences between each other.\n if (instances.length > 0) {\n const pos = types.indexOf('object')\n if (pos !== -1) {\n types.slice(pos, 1)\n instances.push('Object')\n }\n }\n\n if (types.length > 0) {\n message += `${types.length > 1 ? 'one of type' : 'of type'} ${formatList(\n types,\n 'or'\n )}`\n if (instances.length > 0 || other.length > 0) message += ' or '\n }\n\n if (instances.length > 0) {\n message += `an instance of ${formatList(instances, 'or')}`\n if (other.length > 0) message += ' or '\n }\n\n if (other.length > 0) {\n if (other.length > 1) {\n message += `one of ${formatList(other, 'or')}`\n } else {\n if (other[0].toLowerCase() !== other[0]) message += 'an '\n message += `${other[0]}`\n }\n }\n\n message += `. Received ${determineSpecificType(actual)}`\n\n return message\n },\n TypeError\n)\n\ncodes.ERR_INVALID_MODULE_SPECIFIER = createError(\n 'ERR_INVALID_MODULE_SPECIFIER',\n /**\n * @param {string} request\n * @param {string} reason\n * @param {string} [base]\n */\n (request, reason, base = undefined) => {\n return `Invalid module \"${request}\" ${reason}${\n base ? ` imported from ${base}` : ''\n }`\n },\n TypeError\n)\n\ncodes.ERR_INVALID_PACKAGE_CONFIG = createError(\n 'ERR_INVALID_PACKAGE_CONFIG',\n /**\n * @param {string} path\n * @param {string} [base]\n * @param {string} [message]\n */\n (path, base, message) => {\n return `Invalid package config ${path}${\n base ? ` while importing ${base}` : ''\n }${message ? `. ${message}` : ''}`\n },\n Error\n)\n\ncodes.ERR_INVALID_PACKAGE_TARGET = createError(\n 'ERR_INVALID_PACKAGE_TARGET',\n /**\n * @param {string} packagePath\n * @param {string} key\n * @param {unknown} target\n * @param {boolean} [isImport=false]\n * @param {string} [base]\n */\n (packagePath, key, target, isImport = false, base = undefined) => {\n const relatedError =\n typeof target === 'string' &&\n !isImport &&\n target.length > 0 &&\n !target.startsWith('./')\n if (key === '.') {\n assert(isImport === false)\n return (\n `Invalid \"exports\" main target ${JSON.stringify(target)} defined ` +\n `in the package config ${packagePath}package.json${\n base ? ` imported from ${base}` : ''\n }${relatedError ? '; targets must start with \"./\"' : ''}`\n )\n }\n\n return `Invalid \"${\n isImport ? 'imports' : 'exports'\n }\" target ${JSON.stringify(\n target\n )} defined for '${key}' in the package config ${packagePath}package.json${\n base ? ` imported from ${base}` : ''\n }${relatedError ? '; targets must start with \"./\"' : ''}`\n },\n Error\n)\n\ncodes.ERR_MODULE_NOT_FOUND = createError(\n 'ERR_MODULE_NOT_FOUND',\n /**\n * @param {string} path\n * @param {string} base\n * @param {boolean} [exactUrl]\n */\n (path, base, exactUrl = false) => {\n return `Cannot find ${\n exactUrl ? 'module' : 'package'\n } '${path}' imported from ${base}`\n },\n Error\n)\n\ncodes.ERR_NETWORK_IMPORT_DISALLOWED = createError(\n 'ERR_NETWORK_IMPORT_DISALLOWED',\n \"import of '%s' by %s is not supported: %s\",\n Error\n)\n\ncodes.ERR_PACKAGE_IMPORT_NOT_DEFINED = createError(\n 'ERR_PACKAGE_IMPORT_NOT_DEFINED',\n /**\n * @param {string} specifier\n * @param {string} packagePath\n * @param {string} base\n */\n (specifier, packagePath, base) => {\n return `Package import specifier \"${specifier}\" is not defined${\n packagePath ? ` in package ${packagePath}package.json` : ''\n } imported from ${base}`\n },\n TypeError\n)\n\ncodes.ERR_PACKAGE_PATH_NOT_EXPORTED = createError(\n 'ERR_PACKAGE_PATH_NOT_EXPORTED',\n /**\n * @param {string} packagePath\n * @param {string} subpath\n * @param {string} [base]\n */\n (packagePath, subpath, base = undefined) => {\n if (subpath === '.')\n return `No \"exports\" main defined in ${packagePath}package.json${\n base ? ` imported from ${base}` : ''\n }`\n return `Package subpath '${subpath}' is not defined by \"exports\" in ${packagePath}package.json${\n base ? ` imported from ${base}` : ''\n }`\n },\n Error\n)\n\ncodes.ERR_UNSUPPORTED_DIR_IMPORT = createError(\n 'ERR_UNSUPPORTED_DIR_IMPORT',\n \"Directory import '%s' is not supported \" +\n 'resolving ES modules imported from %s',\n Error\n)\n\ncodes.ERR_UNSUPPORTED_RESOLVE_REQUEST = createError(\n 'ERR_UNSUPPORTED_RESOLVE_REQUEST',\n 'Failed to resolve module specifier \"%s\" from \"%s\": Invalid relative URL or base scheme is not hierarchical.',\n TypeError\n)\n\ncodes.ERR_UNKNOWN_FILE_EXTENSION = createError(\n 'ERR_UNKNOWN_FILE_EXTENSION',\n /**\n * @param {string} extension\n * @param {string} path\n */\n (extension, path) => {\n return `Unknown file extension \"${extension}\" for ${path}`\n },\n TypeError\n)\n\ncodes.ERR_INVALID_ARG_VALUE = createError(\n 'ERR_INVALID_ARG_VALUE',\n /**\n * @param {string} name\n * @param {unknown} value\n * @param {string} [reason='is invalid']\n */\n (name, value, reason = 'is invalid') => {\n let inspected = inspect(value)\n\n if (inspected.length > 128) {\n inspected = `${inspected.slice(0, 128)}...`\n }\n\n const type = name.includes('.') ? 'property' : 'argument'\n\n return `The ${type} '${name}' ${reason}. Received ${inspected}`\n },\n TypeError\n // Note: extra classes have been shaken out.\n // , RangeError\n)\n\n/**\n * Utility function for registering the error codes. Only used here. Exported\n * *only* to allow for testing.\n * @param {string} sym\n * @param {MessageFunction | string} value\n * @param {ErrorConstructor} constructor\n * @returns {new (...parameters: Array<any>) => Error}\n */\nfunction createError(sym, value, constructor) {\n // Special case for SystemError that formats the error message differently\n // The SystemErrors only have SystemError as their base classes.\n messages.set(sym, value)\n\n return makeNodeErrorWithCode(constructor, sym)\n}\n\n/**\n * @param {ErrorConstructor} Base\n * @param {string} key\n * @returns {ErrorConstructor}\n */\nfunction makeNodeErrorWithCode(Base, key) {\n // @ts-expect-error It’s a Node error.\n return NodeError\n /**\n * @param {Array<unknown>} parameters\n */\n function NodeError(...parameters) {\n const limit = Error.stackTraceLimit\n if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = 0\n const error = new Base()\n // Reset the limit and setting the name property.\n if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = limit\n const message = getMessage(key, parameters, error)\n Object.defineProperties(error, {\n // Note: no need to implement `kIsNodeError` symbol, would be hard,\n // probably.\n message: {\n value: message,\n enumerable: false,\n writable: true,\n configurable: true\n },\n toString: {\n /** @this {Error} */\n value() {\n return `${this.name} [${key}]: ${this.message}`\n },\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n\n captureLargerStackTrace(error)\n // @ts-expect-error It’s a Node error.\n error.code = key\n return error\n }\n}\n\n/**\n * @returns {boolean}\n */\nfunction isErrorStackTraceLimitWritable() {\n // Do no touch Error.stackTraceLimit as V8 would attempt to install\n // it again during deserialization.\n try {\n if (v8.startupSnapshot.isBuildingSnapshot()) {\n return false\n }\n } catch {}\n\n const desc = Object.getOwnPropertyDescriptor(Error, 'stackTraceLimit')\n if (desc === undefined) {\n return Object.isExtensible(Error)\n }\n\n return own.call(desc, 'writable') && desc.writable !== undefined\n ? desc.writable\n : desc.set !== undefined\n}\n\n/**\n * This function removes unnecessary frames from Node.js core errors.\n * @template {(...parameters: unknown[]) => unknown} T\n * @param {T} wrappedFunction\n * @returns {T}\n */\nfunction hideStackFrames(wrappedFunction) {\n // We rename the functions that will be hidden to cut off the stacktrace\n // at the outermost one\n const hidden = nodeInternalPrefix + wrappedFunction.name\n Object.defineProperty(wrappedFunction, 'name', {value: hidden})\n return wrappedFunction\n}\n\nconst captureLargerStackTrace = hideStackFrames(\n /**\n * @param {Error} error\n * @returns {Error}\n */\n // @ts-expect-error: fine\n function (error) {\n const stackTraceLimitIsWritable = isErrorStackTraceLimitWritable()\n if (stackTraceLimitIsWritable) {\n userStackTraceLimit = Error.stackTraceLimit\n Error.stackTraceLimit = Number.POSITIVE_INFINITY\n }\n\n Error.captureStackTrace(error)\n\n // Reset the limit\n if (stackTraceLimitIsWritable) Error.stackTraceLimit = userStackTraceLimit\n\n return error\n }\n)\n\n/**\n * @param {string} key\n * @param {Array<unknown>} parameters\n * @param {Error} self\n * @returns {string}\n */\nfunction getMessage(key, parameters, self) {\n const message = messages.get(key)\n assert(message !== undefined, 'expected `message` to be found')\n\n if (typeof message === 'function') {\n assert(\n message.length <= parameters.length, // Default options do not count.\n `Code: ${key}; The provided arguments length (${parameters.length}) does not ` +\n `match the required ones (${message.length}).`\n )\n return Reflect.apply(message, self, parameters)\n }\n\n const regex = /%[dfijoOs]/g\n let expectedLength = 0\n while (regex.exec(message) !== null) expectedLength++\n assert(\n expectedLength === parameters.length,\n `Code: ${key}; The provided arguments length (${parameters.length}) does not ` +\n `match the required ones (${expectedLength}).`\n )\n if (parameters.length === 0) return message\n\n parameters.unshift(message)\n return Reflect.apply(format, null, parameters)\n}\n\n/**\n * Determine the specific type of a value for type-mismatch errors.\n * @param {unknown} value\n * @returns {string}\n */\nfunction determineSpecificType(value) {\n if (value === null || value === undefined) {\n return String(value)\n }\n\n if (typeof value === 'function' && value.name) {\n return `function ${value.name}`\n }\n\n if (typeof value === 'object') {\n if (value.constructor && value.constructor.name) {\n return `an instance of ${value.constructor.name}`\n }\n\n return `${inspect(value, {depth: -1})}`\n }\n\n let inspected = inspect(value, {colors: false})\n\n if (inspected.length > 28) {\n inspected = `${inspected.slice(0, 25)}...`\n }\n\n return `type ${typeof value} (${inspected})`\n}\n","import gitLogParser from \"git-log-parser\";\nimport getStream from \"get-stream\";\nimport { execa } from \"execa\";\nimport debugGit from \"debug\";\nimport { merge } from \"lodash-es\";\nimport { GIT_NOTE_REF } from \"./definitions/constants.js\";\n\nconst debug = debugGit(\"semantic-release:git\");\n\nObject.assign(gitLogParser.fields, { hash: \"H\", message: \"B\", gitTags: \"d\", committerDate: { key: \"ci\", type: Date } });\n\n/**\n * Get the commit sha for a given tag.\n *\n * @param {String} tagName Tag name for which to retrieve the commit sha.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @return {String} The commit sha of the tag in parameter or `null`.\n */\nexport async function getTagHead(tagName, execaOptions) {\n return (await execa(\"git\", [\"rev-list\", \"-1\", tagName], execaOptions)).stdout;\n}\n\n/**\n * Get all the tags for a given branch.\n *\n * @param {String} branch The branch for which to retrieve the tags.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @return {Array<String>} List of git tags.\n * @throws {Error} If the `git` command fails.\n */\nexport async function getTags(branch, execaOptions) {\n return (await execa(\"git\", [\"tag\", \"--merged\", branch], execaOptions)).stdout\n .split(\"\\n\")\n .map((tag) => tag.trim())\n .filter(Boolean);\n}\n\n/**\n * Retrieve a range of commits.\n *\n * @param {String} from to includes all commits made after this sha (does not include this sha).\n * @param {String} to to includes all commits made before this sha (also include this sha).\n * @param {Object} [execaOpts] Options to pass to `execa`.\n * @return {Promise<Array<Object>>} The list of commits between `from` and `to`.\n */\nexport async function getCommits(from, to, execaOptions) {\n return (\n await getStream.array(\n gitLogParser.parse(\n { _: `${from ? from + \"..\" : \"\"}${to}` },\n { cwd: execaOptions.cwd, env: { ...process.env, ...execaOptions.env } }\n )\n )\n ).map(({ message, gitTags, ...commit }) => ({ ...commit, message: message.trim(), gitTags: gitTags.trim() }));\n}\n\n/**\n * Get all the repository branches.\n *\n * @param {String} repositoryUrl The remote repository URL.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @return {Array<String>} List of git branches.\n * @throws {Error} If the `git` command fails.\n */\nexport async function getBranches(repositoryUrl, execaOptions) {\n return (await execa(\"git\", [\"ls-remote\", \"--heads\", repositoryUrl], execaOptions)).stdout\n .split(\"\\n\")\n .filter(Boolean)\n .map((branch) => branch.match(/^.+refs\\/heads\\/(?<branch>.+)$/)[1]);\n}\n\n/**\n * Verify if the `ref` exits\n *\n * @param {String} ref The reference to verify.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @return {Boolean} `true` if the reference exists, falsy otherwise.\n */\nexport async function isRefExists(ref, execaOptions) {\n try {\n return (await execa(\"git\", [\"rev-parse\", \"--verify\", ref], execaOptions)).exitCode === 0;\n } catch (error) {\n debug(error);\n }\n}\n\n/**\n * Fetch all the tags from a branch. Unshallow if necessary.\n * This will update the local branch from the latest on the remote if:\n * - The branch is not the one that triggered the CI\n * - The CI created a detached head\n *\n * Otherwise it just calls `git fetch` without specifying the `refspec` option to avoid overwritting the head commit set by the CI.\n *\n * The goal is to retrieve the informations on all the release branches without \"disturbing\" the CI, leaving the trigger branch or the detached head intact.\n *\n * @param {String} repositoryUrl The remote repository URL.\n * @param {String} branch The repository branch to fetch.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n */\nexport async function fetch(repositoryUrl, branch, ciBranch, execaOptions) {\n const isDetachedHead =\n (await execa(\"git\", [\"rev-parse\", \"--abbrev-ref\", \"HEAD\"], { ...execaOptions, reject: false })).stdout === \"HEAD\";\n\n try {\n await execa(\n \"git\",\n [\n \"fetch\",\n \"--unshallow\",\n \"--tags\",\n ...(branch === ciBranch && !isDetachedHead\n ? [repositoryUrl]\n : [\"--update-head-ok\", repositoryUrl, `+refs/heads/${branch}:refs/heads/${branch}`]),\n ],\n execaOptions\n );\n } catch {\n await execa(\n \"git\",\n [\n \"fetch\",\n \"--tags\",\n ...(branch === ciBranch && !isDetachedHead\n ? [repositoryUrl]\n : [\"--update-head-ok\", repositoryUrl, `+refs/heads/${branch}:refs/heads/${branch}`]),\n ],\n execaOptions\n );\n }\n}\n\n/**\n * Unshallow the git repository if necessary and fetch all the notes.\n *\n * @param {String} repositoryUrl The remote repository URL.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n */\nexport async function fetchNotes(repositoryUrl, execaOptions) {\n try {\n await execa(\"git\", [\"fetch\", \"--unshallow\", repositoryUrl, `+refs/notes/*:refs/notes/*`], execaOptions);\n } catch {\n await execa(\"git\", [\"fetch\", repositoryUrl, `+refs/notes/*:refs/notes/*`], {\n ...execaOptions,\n reject: false,\n });\n }\n}\n\n/**\n * Get the HEAD sha.\n *\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @return {String} the sha of the HEAD commit.\n */\nexport async function getGitHead(execaOptions) {\n return (await execa(\"git\", [\"rev-parse\", \"HEAD\"], execaOptions)).stdout;\n}\n\n/**\n * Get the repository remote URL.\n *\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @return {string} The value of the remote git URL.\n */\nexport async function repoUrl(execaOptions) {\n try {\n return (await execa(\"git\", [\"config\", \"--get\", \"remote.origin.url\"], execaOptions)).stdout;\n } catch (error) {\n debug(error);\n }\n}\n\n/**\n * Test if the current working directory is a Git repository.\n *\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @return {Boolean} `true` if the current working directory is in a git repository, falsy otherwise.\n */\nexport async function isGitRepo(execaOptions) {\n try {\n return (await execa(\"git\", [\"rev-parse\", \"--git-dir\"], execaOptions)).exitCode === 0;\n } catch (error) {\n debug(error);\n }\n}\n\n/**\n * Verify the write access authorization to remote repository with push dry-run.\n *\n * @param {String} repositoryUrl The remote repository URL.\n * @param {String} branch The repository branch for which to verify write access.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @throws {Error} if not authorized to push.\n */\nexport async function verifyAuth(repositoryUrl, branch, execaOptions) {\n try {\n await execa(\"git\", [\"push\", \"--dry-run\", \"--no-verify\", repositoryUrl, `HEAD:${branch}`], execaOptions);\n } catch (error) {\n debug(error);\n throw error;\n }\n}\n\n/**\n * Tag the commit head on the local repository.\n *\n * @param {String} tagName The name of the tag.\n * @param {String} ref The Git reference to tag.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @throws {Error} if the tag creation failed.\n */\nexport async function tag(tagName, ref, execaOptions) {\n await execa(\"git\", [\"tag\", tagName, ref], execaOptions);\n}\n\n/**\n * Push to the remote repository.\n *\n * @param {String} repositoryUrl The remote repository URL.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @throws {Error} if the push failed.\n */\nexport async function push(repositoryUrl, execaOptions) {\n await execa(\"git\", [\"push\", \"--tags\", repositoryUrl], execaOptions);\n}\n\n/**\n * Push notes to the remote repository.\n *\n * @param {String} repositoryUrl The remote repository URL.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @throws {Error} if the push failed.\n */\nexport async function pushNotes(repositoryUrl, ref, execaOptions) {\n await execa(\"git\", [\"push\", repositoryUrl, `refs/notes/${GIT_NOTE_REF}-${ref}`], execaOptions);\n}\n\n/**\n * Verify a tag name is a valid Git reference.\n *\n * @param {String} tagName the tag name to verify.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @return {Boolean} `true` if valid, falsy otherwise.\n */\nexport async function verifyTagName(tagName, execaOptions) {\n try {\n return (await execa(\"git\", [\"check-ref-format\", `refs/tags/${tagName}`], execaOptions)).exitCode === 0;\n } catch (error) {\n debug(error);\n }\n}\n\n/**\n * Verify a branch name is a valid Git reference.\n *\n * @param {String} branch the branch name to verify.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @return {Boolean} `true` if valid, falsy otherwise.\n */\nexport async function verifyBranchName(branch, execaOptions) {\n try {\n return (await execa(\"git\", [\"check-ref-format\", `refs/heads/${branch}`], execaOptions)).exitCode === 0;\n } catch (error) {\n debug(error);\n }\n}\n\n/**\n * Verify the local branch is up to date with the remote one.\n *\n * @param {String} repositoryUrl The remote repository URL.\n * @param {String} branch The repository branch for which to verify status.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @return {Boolean} `true` is the HEAD of the current local branch is the same as the HEAD of the remote branch, falsy otherwise.\n */\nexport async function isBranchUpToDate(repositoryUrl, branch, execaOptions) {\n return (\n (await getGitHead(execaOptions)) ===\n (await execa(\"git\", [\"ls-remote\", \"--heads\", repositoryUrl, branch], execaOptions)).stdout.match(/^(?<ref>\\w+)?/)[1]\n );\n}\n\n/**\n * Get and parse the JSON note of a given reference.\n *\n * @param {String} ref The Git reference for which to retrieve the note.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n *\n * @return {Object} the parsed JSON note if there is one, an empty object otherwise.\n */\nexport async function getNote(ref, execaOptions) {\n const handleError = (error) => {\n if (error.exitCode === 1) {\n return { stdout: \"{}\" };\n }\n\n debug(error);\n throw error;\n };\n\n try {\n return merge(\n JSON.parse(\n // Used for retro-compatibility\n (await execa(\"git\", [\"notes\", \"--ref\", GIT_NOTE_REF, \"show\", ref], execaOptions).catch(handleError)).stdout\n ),\n JSON.parse(\n (await execa(\"git\", [\"notes\", \"--ref\", `${GIT_NOTE_REF}-${ref}`, \"show\", ref], execaOptions).catch(handleError))\n .stdout\n )\n );\n } catch (error) {\n if (error.exitCode === 1) {\n return {};\n }\n\n debug(error);\n throw error;\n }\n}\n\n/**\n * Add JSON note to a given reference.\n *\n * @param {Object} note The object to save in the reference note.\n * @param {String} ref The Git reference to add the note to.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n */\nexport async function addNote(note, ref, execaOptions) {\n await execa(\n \"git\",\n [\"notes\", \"--ref\", `${GIT_NOTE_REF}-${ref}`, \"add\", \"-f\", \"-m\", JSON.stringify(note), ref],\n execaOptions\n );\n}\n\n/**\n * Get the reference of a tag\n *\n * @param {String} tag The tag name to get the reference of.\n * @param {Object} [execaOpts] Options to pass to `execa`.\n **/\nexport async function getTagRef(tag, execaOptions) {\n return (await execa(\"git\", [\"show-ref\", tag, \"--hash\"], execaOptions)).stdout;\n}\n","import { isFunction, template, union } from \"lodash-es\";\nimport semver from \"semver\";\nimport hideSensitive from \"./hide-sensitive.js\";\n\nexport function extractErrors(err) {\n return err && err.errors ? [...err.errors] : [err];\n}\n\nexport function hideSensitiveValues(env, objs) {\n const hideFunction = hideSensitive(env);\n return objs.map((object) => {\n Object.getOwnPropertyNames(object).forEach((prop) => {\n if (object[prop]) {\n object[prop] = hideFunction(object[prop]);\n }\n });\n return object;\n });\n}\n\nexport function tagsToVersions(tags) {\n return tags.map(({ version }) => version);\n}\n\nexport function isMajorRange(range) {\n return /^\\d+\\.x(?:\\.x)?$/i.test(range);\n}\n\nexport function isMaintenanceRange(range) {\n return /^\\d+\\.(?:\\d+|x)(?:\\.x)?$/i.test(range);\n}\n\nexport function getUpperBound(range) {\n const result = semver.valid(range)\n ? range\n : ((semver.validRange(range) || \"\").match(/<(?<upperBound>\\d+\\.\\d+\\.\\d+(-\\d+)?)$/) || [])[1];\n\n return result\n ? // https://github.com/npm/node-semver/issues/322\n result.replace(/-\\d+$/, \"\")\n : result;\n}\n\nexport function getLowerBound(range) {\n return ((semver.validRange(range) || \"\").match(/(?<lowerBound>\\d+\\.\\d+\\.\\d+)/) || [])[1];\n}\n\nexport function highest(version1, version2) {\n return version1 && version2 ? (semver.gt(version1, version2) ? version1 : version2) : version1 || version2;\n}\n\nexport function lowest(version1, version2) {\n return version1 && version2 ? (semver.lt(version1, version2) ? version1 : version2) : version1 || version2;\n}\n\nexport function getLatestVersion(versions, { withPrerelease } = {}) {\n return versions.filter((version) => withPrerelease || !semver.prerelease(version)).sort(semver.rcompare)[0];\n}\n\nexport function getEarliestVersion(versions, { withPrerelease } = {}) {\n return versions.filter((version) => withPrerelease || !semver.prerelease(version)).sort(semver.compare)[0];\n}\n\nexport function getFirstVersion(versions, lowerBranches) {\n const lowerVersion = union(...lowerBranches.map(({ tags }) => tagsToVersions(tags))).sort(semver.rcompare);\n if (lowerVersion[0]) {\n return versions.sort(semver.compare).find((version) => semver.gt(version, lowerVersion[0]));\n }\n\n return getEarliestVersion(versions);\n}\n\nexport function getRange(min, max) {\n return `>=${min}${max ? ` <${max}` : \"\"}`;\n}\n\nexport function makeTag(tagFormat, version) {\n return template(tagFormat)({ version });\n}\n\nexport function isSameChannel(channel, otherChannel) {\n return channel === otherChannel || (!channel && !otherChannel);\n}\n","import { inspect } from \"node:util\";\nimport { createRequire } from \"node:module\";\nimport { isString, toLower, trim } from \"lodash-es\";\nimport { RELEASE_TYPE } from \"./constants.js\";\n\nconst require = createRequire(import.meta.url);\nconst pkg = require(\"../../package.json\");\n\nconst [homepage] = pkg.homepage.split(\"#\");\nconst stringify = (object) =>\n isString(object) ? object : inspect(object, { breakLength: Infinity, depth: 2, maxArrayLength: 5 });\nconst linkify = (file) => `${homepage}/blob/master/${file}`;\nconst wordsList = (words) =>\n `${words.slice(0, -1).join(\", \")}${words.length > 1 ? ` or ${words[words.length - 1]}` : trim(words[0])}`;\n\nexport function ENOGITREPO({ cwd }) {\n return {\n message: \"Not running from a git repository.\",\n details: `The \\`semantic-release\\` command must be executed from a Git repository.\n\nThe current working directory is \\`${cwd}\\`.\n\nPlease verify your CI configuration to make sure the \\`semantic-release\\` command is executed from the root of the cloned repository.`,\n };\n}\n\nexport function ENOREPOURL() {\n return {\n message: \"The `repositoryUrl` option is required.\",\n details: `The [repositoryUrl option](${linkify(\n \"docs/usage/configuration.md#repositoryurl\"\n )}) cannot be determined from the semantic-release configuration, the \\`package.json\\` nor the [git origin url](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes).\n\nPlease make sure to add the \\`repositoryUrl\\` to the [semantic-release configuration] (${linkify(\n \"docs/usage/configuration.md\"\n )}).`,\n };\n}\n\nexport function EGITNOPERMISSION({ options: { repositoryUrl }, branch: { name } }) {\n return {\n message: \"Cannot push to the Git repository.\",\n details: `**semantic-release** cannot push the version tag to the branch \\`${name}\\` on the remote Git repository with URL \\`${repositoryUrl}\\`.\n\nThis can be caused by:\n - a misconfiguration of the [repositoryUrl](${linkify(\"docs/usage/configuration.md#repositoryurl\")}) option\n - the repository being unavailable\n - or missing push permission for the user configured via the [Git credentials on your CI environment](${linkify(\n \"docs/usage/ci-configuration.md#authentication\"\n )})`,\n };\n}\n\nexport function EINVALIDTAGFORMAT({ options: { tagFormat } }) {\n return {\n message: \"Invalid `tagFormat` option.\",\n details: `The [tagFormat](${linkify(\n \"docs/usage/configuration.md#tagformat\"\n )}) must compile to a [valid Git reference](https://git-scm.com/docs/git-check-ref-format#_description).\n\nYour configuration for the \\`tagFormat\\` option is \\`${stringify(tagFormat)}\\`.`,\n };\n}\n\nexport function ETAGNOVERSION({ options: { tagFormat } }) {\n return {\n message: \"Invalid `tagFormat` option.\",\n details: `The [tagFormat](${linkify(\n \"docs/usage/configuration.md#tagformat\"\n )}) option must contain the variable \\`version\\` exactly once.\n\nYour configuration for the \\`tagFormat\\` option is \\`${stringify(tagFormat)}\\`.`,\n };\n}\n\nexport function EPLUGINCONF({ type, required, pluginConf }) {\n return {\n message: `The \\`${type}\\` plugin configuration is invalid.`,\n details: `The [${type} plugin configuration](${linkify(`docs/usage/plugins.md#${toLower(type)}-plugin`)}) ${\n required ? \"is required and \" : \"\"\n } must be a single or an array of plugins definition. A plugin definition is an npm module name, optionally wrapped in an array with an object.\n\nYour configuration for the \\`${type}\\` plugin is \\`${stringify(pluginConf)}\\`.`,\n };\n}\n\nexport function EPLUGINSCONF({ plugin }) {\n return {\n message: \"The `plugins` configuration is invalid.\",\n details: `The [plugins](${linkify(\n \"docs/usage/configuration.md#plugins\"\n )}) option must be an array of plugin definitions. A plugin definition is an npm module name, optionally wrapped in an array with an object.\n\nThe invalid configuration is \\`${stringify(plugin)}\\`.`,\n };\n}\n\nexport function EPLUGIN({ pluginName, type }) {\n return {\n message: `A plugin configured in the step ${type} is not a valid semantic-release plugin.`,\n details: `A valid \\`${type}\\` **semantic-release** plugin must be a function or an object with a function in the property \\`${type}\\`.\n\nThe plugin \\`${pluginName}\\` doesn't have the property \\`${type}\\` and cannot be used for the \\`${type}\\` step.\n\nPlease refer to the \\`${pluginName}\\` and [semantic-release plugins configuration](${linkify(\n \"docs/usage/plugins.md\"\n )}) documentation for more details.`,\n };\n}\n\nexport function EANALYZECOMMITSOUTPUT({ result, pluginName }) {\n return {\n message: \"The `analyzeCommits` plugin returned an invalid value. It must return a valid semver release type.\",\n details: `The \\`analyzeCommits\\` plugin must return a valid [semver](https://semver.org) release type. The valid values are: ${RELEASE_TYPE.map(\n (type) => `\\`${type}\\``\n ).join(\", \")}.\n\nThe \\`analyzeCommits\\` function of the \\`${pluginName}\\` returned \\`${stringify(result)}\\` instead.\n\nWe recommend to report the issue to the \\`${pluginName}\\` authors, providing the following informations:\n- The **semantic-release** version: \\`${pkg.version}\\`\n- The **semantic-release** logs from your CI job\n- The value returned by the plugin: \\`${stringify(result)}\\`\n- A link to the **semantic-release** plugin developer guide: [${linkify(\"docs/developer-guide/plugin.md\")}](${linkify(\n \"docs/developer-guide/plugin.md\"\n )})`,\n };\n}\n\nexport function EGENERATENOTESOUTPUT({ result, pluginName }) {\n return {\n message: \"The `generateNotes` plugin returned an invalid value. It must return a `String`.\",\n details: `The \\`generateNotes\\` plugin must return a \\`String\\`.\n\nThe \\`generateNotes\\` function of the \\`${pluginName}\\` returned \\`${stringify(result)}\\` instead.\n\nWe recommend to report the issue to the \\`${pluginName}\\` authors, providing the following informations:\n- The **semantic-release** version: \\`${pkg.version}\\`\n- The **semantic-release** logs from your CI job\n- The value returned by the plugin: \\`${stringify(result)}\\`\n- A link to the **semantic-release** plugin developer guide: [${linkify(\"docs/developer-guide/plugin.md\")}](${linkify(\n \"docs/developer-guide/plugin.md\"\n )})`,\n };\n}\n\nexport function EPUBLISHOUTPUT({ result, pluginName }) {\n return {\n message: \"A `publish` plugin returned an invalid value. It must return an `Object`.\",\n details: `The \\`publish\\` plugins must return an \\`Object\\`.\n\nThe \\`publish\\` function of the \\`${pluginName}\\` returned \\`${stringify(result)}\\` instead.\n\nWe recommend to report the issue to the \\`${pluginName}\\` authors, providing the following informations:\n- The **semantic-release** version: \\`${pkg.version}\\`\n- The **semantic-release** logs from your CI job\n- The value returned by the plugin: \\`${stringify(result)}\\`\n- A link to the **semantic-release** plugin developer guide: [${linkify(\"docs/developer-guide/plugin.md\")}](${linkify(\n \"docs/developer-guide/plugin.md\"\n )})`,\n };\n}\n\nexport function EADDCHANNELOUTPUT({ result, pluginName }) {\n return {\n message: \"A `addChannel` plugin returned an invalid value. It must return an `Object`.\",\n details: `The \\`addChannel\\` plugins must return an \\`Object\\`.\n\nThe \\`addChannel\\` function of the \\`${pluginName}\\` returned \\`${stringify(result)}\\` instead.\n\nWe recommend to report the issue to the \\`${pluginName}\\` authors, providing the following informations:\n- The **semantic-release** version: \\`${pkg.version}\\`\n- The **semantic-release** logs from your CI job\n- The value returned by the plugin: \\`${stringify(result)}\\`\n- A link to the **semantic-release** plugin developer guide: [${linkify(\"docs/developer-guide/plugin.md\")}](${linkify(\n \"docs/developer-guide/plugin.md\"\n )})`,\n };\n}\n\nexport function EINVALIDBRANCH({ branch }) {\n return {\n message: \"A branch is invalid in the `branches` configuration.\",\n details: `Each branch in the [branches configuration](${linkify(\n \"docs/usage/configuration.md#branches\"\n )}) must be either a string, a regexp or an object with a \\`name\\` property.\n\nYour configuration for the problematic branch is \\`${stringify(branch)}\\`.`,\n };\n}\n\nexport function EINVALIDBRANCHNAME({ branch }) {\n return {\n message: \"A branch name is invalid in the `branches` configuration.\",\n details: `Each branch in the [branches configuration](${linkify(\n \"docs/usage/configuration.md#branches\"\n )}) must be a [valid Git reference](https://git-scm.com/docs/git-check-ref-format#_description).\n\nYour configuration for the problematic branch is \\`${stringify(branch)}\\`.`,\n };\n}\n\nexport function EDUPLICATEBRANCHES({ duplicates }) {\n return {\n message: \"The `branches` configuration has duplicate branches.\",\n details: `Each branch in the [branches configuration](${linkify(\n \"docs/usage/configuration.md#branches\"\n )}) must havea unique name.\n\nYour configuration contains duplicates for the following branch names: \\`${stringify(duplicates)}\\`.`,\n };\n}\n\nexport function EMAINTENANCEBRANCH({ branch }) {\n return {\n message: \"A maintenance branch is invalid in the `branches` configuration.\",\n details: `Each maintenance branch in the [branches configuration](${linkify(\n \"docs/usage/configuration.md#branches\"\n )}) must have a \\`range\\` property formatted like \\`N.x\\`, \\`N.x.x\\` or \\`N.N.x\\` (\\`N\\` is a number).\n\nYour configuration for the problematic branch is \\`${stringify(branch)}\\`.`,\n };\n}\n\nexport function EMAINTENANCEBRANCHES({ branches }) {\n return {\n message: \"The maintenance branches are invalid in the `branches` configuration.\",\n details: `Each maintenance branch in the [branches configuration](${linkify(\n \"docs/usage/configuration.md#branches\"\n )}) must have a unique \\`range\\` property.\n\nYour configuration for the problematic branches is \\`${stringify(branches)}\\`.`,\n };\n}\n\nexport function ERELEASEBRANCHES({ branches }) {\n return {\n message: \"The release branches are invalid in the `branches` configuration.\",\n details: `A minimum of 1 and a maximum of 3 release branches are required in the [branches configuration](${linkify(\n \"docs/usage/configuration.md#branches\"\n )}).\n\nThis may occur if your repository does not have a release branch, such as \\`master\\` or \\`main\\`.\n\nYour configuration for the problematic branches is \\`${stringify(branches)}\\`.`,\n };\n}\n\nexport function EPRERELEASEBRANCH({ branch }) {\n return {\n message: \"A pre-release branch configuration is invalid in the `branches` configuration.\",\n details: `Each pre-release branch in the [branches configuration](${linkify(\n \"docs/usage/configuration.md#branches\"\n )}) must have a \\`prerelease\\` property valid per the [Semantic Versioning Specification](https://semver.org/#spec-item-9). If the \\`prerelease\\` property is set to \\`true\\`, then the \\`name\\` property is used instead.\n\nYour configuration for the problematic branch is \\`${stringify(branch)}\\`.`,\n };\n}\n\nexport function EPRERELEASEBRANCHES({ branches }) {\n return {\n message: \"The pre-release branches are invalid in the `branches` configuration.\",\n details: `Each pre-release branch in the [branches configuration](${linkify(\n \"docs/usage/configuration.md#branches\"\n )}) must have a unique \\`prerelease\\` property. If the \\`prerelease\\` property is set to \\`true\\`, then the \\`name\\` property is used instead.\n\nYour configuration for the problematic branches is \\`${stringify(branches)}\\`.`,\n };\n}\n\nexport function EINVALIDNEXTVERSION({ nextRelease: { version }, branch: { name, range }, commits, validBranches }) {\n return {\n message: `The release \\`${version}\\` on branch \\`${name}\\` cannot be published as it is out of range.`,\n details: `Based on the releases published on other branches, only versions within the range \\`${range}\\` can be published from branch \\`${name}\\`.\n\nThe following commit${commits.length > 1 ? \"s are\" : \" is\"} responsible for the invalid release:\n${commits.map(({ commit: { short }, subject }) => `- ${subject} (${short})`).join(\"\\n\")}\n\n${\n commits.length > 1 ? \"Those commits\" : \"This commit\"\n} should be moved to a valid branch with [git merge](https://git-scm.com/docs/git-merge) or [git cherry-pick](https://git-scm.com/docs/git-cherry-pick) and removed from branch \\`${name}\\` with [git revert](https://git-scm.com/docs/git-revert) or [git reset](https://git-scm.com/docs/git-reset).\n\nA valid branch could be ${wordsList(validBranches.map(({ name }) => `\\`${name}\\``))}.\n\nSee the [workflow configuration documentation](${linkify(\"docs/usage/workflow-configuration.md\")}) for more details.`,\n };\n}\n\nexport function EINVALIDMAINTENANCEMERGE({ nextRelease: { channel, gitTag, version }, branch: { mergeRange, name } }) {\n return {\n message: `The release \\`${version}\\` on branch \\`${name}\\` cannot be published as it is out of range.`,\n details: `Only releases within the range \\`${mergeRange}\\` can be merged into the maintenance branch \\`${name}\\` and published to the \\`${channel}\\` distribution channel.\n\nThe branch \\`${name}\\` head should be [reset](https://git-scm.com/docs/git-reset) to a previous commit so the commit with tag \\`${gitTag}\\` is removed from the branch history.\n\nSee the [workflow configuration documentation](${linkify(\"docs/usage/workflow-configuration.md\")}) for more details.`,\n };\n}\n","import { dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { castArray, isArray, isFunction, isNil, isPlainObject, isString } from \"lodash-es\";\nimport resolveFrom from \"resolve-from\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst validateSteps = (conf) => {\n return conf.every((conf) => {\n if (\n isArray(conf) &&\n (conf.length === 1 || conf.length === 2) &&\n (isString(conf[0]) || isFunction(conf[0])) &&\n (isNil(conf[1]) || isPlainObject(conf[1]))\n ) {\n return true;\n }\n\n conf = castArray(conf);\n\n if (conf.length !== 1) {\n return false;\n }\n\n const [name, config] = parseConfig(conf[0]);\n return (isString(name) || isFunction(name)) && isPlainObject(config);\n });\n};\n\nexport function validatePlugin(conf) {\n return (\n isString(conf) ||\n (isArray(conf) &&\n (conf.length === 1 || conf.length === 2) &&\n (isString(conf[0]) || isPlainObject(conf[0])) &&\n (isNil(conf[1]) || isPlainObject(conf[1]))) ||\n (isPlainObject(conf) && (isNil(conf.path) || isString(conf.path) || isPlainObject(conf.path)))\n );\n}\n\nexport function validateStep({ required }, conf) {\n conf = castArray(conf).filter(Boolean);\n if (required) {\n return conf.length >= 1 && validateSteps(conf);\n }\n\n return conf.length === 0 || validateSteps(conf);\n}\n\nexport async function loadPlugin({ cwd }, name, pluginsPath) {\n const basePath = pluginsPath[name]\n ? dirname(resolveFrom.silent(__dirname, pluginsPath[name]) || resolveFrom(cwd, pluginsPath[name]))\n : __dirname;\n\n if (isFunction(name)) {\n return name;\n }\n\n const file = resolveFrom.silent(basePath, name) || resolveFrom(cwd, name);\n const { default: cjsExport, ...esmNamedExports } = await import(`file://${file}`);\n\n if (cjsExport) {\n return cjsExport;\n }\n\n return esmNamedExports;\n}\n\nexport function parseConfig(plugin) {\n let path;\n let config;\n if (isArray(plugin)) {\n [path, config] = plugin;\n } else if (isPlainObject(plugin) && !isNil(plugin.path)) {\n ({ path, ...config } = plugin);\n } else {\n path = plugin;\n }\n\n return [path, config || {}];\n}\n","import { cloneDeep, isFunction, isPlainObject, noop, omit } from \"lodash-es\";\nimport debugPlugins from \"debug\";\nimport getError from \"../get-error.js\";\nimport { extractErrors } from \"../utils.js\";\nimport PLUGINS_DEFINITIONS from \"../definitions/plugins.js\";\nimport { loadPlugin, parseConfig } from \"./utils.js\";\n\nconst debug = debugPlugins(\"semantic-release:plugins\");\n\nexport default async (context, type, pluginOpt, pluginsPath) => {\n const { stdout, stderr, options, logger } = context;\n if (!pluginOpt) {\n return noop;\n }\n\n const [name, config] = parseConfig(pluginOpt);\n const pluginName = name.pluginName ? name.pluginName : isFunction(name) ? `[Function: ${name.name}]` : name;\n const plugin = await loadPlugin(context, name, pluginsPath);\n\n debug(`options for ${pluginName}/${type}: %O`, config);\n\n let func;\n if (isFunction(plugin)) {\n func = plugin.bind(null, cloneDeep({ ...options, ...config }));\n } else if (isPlainObject(plugin) && plugin[type] && isFunction(plugin[type])) {\n func = plugin[type].bind(null, cloneDeep({ ...options, ...config }));\n } else {\n throw getError(\"EPLUGIN\", { type, pluginName });\n }\n\n const validator = async (input) => {\n const { dryRun, outputValidator } = PLUGINS_DEFINITIONS[type] || {};\n try {\n if (!input.options.dryRun || dryRun) {\n logger.log(`Start step \"${type}\" of plugin \"${pluginName}\"`);\n const result = await func({\n ...cloneDeep(omit(input, [\"stdout\", \"stderr\", \"logger\"])),\n stdout,\n stderr,\n logger: logger.scope(logger.scopeName, pluginName),\n });\n if (outputValidator && !outputValidator(result)) {\n throw getError(`E${type.toUpperCase()}OUTPUT`, { result, pluginName });\n }\n\n logger.success(`Completed step \"${type}\" of plugin \"${pluginName}\"`);\n return result;\n }\n\n logger.warn(`Skip step \"${type}\" of plugin \"${pluginName}\" in dry-run mode`);\n } catch (error) {\n logger.error(`Failed step \"${type}\" of plugin \"${pluginName}\"`);\n extractErrors(error).forEach((err) => Object.assign(err, { pluginName }));\n throw error;\n }\n };\n\n Reflect.defineProperty(validator, \"pluginName\", { value: pluginName, writable: false, enumerable: true });\n\n if (!isFunction(pluginOpt)) {\n if (pluginsPath[name]) {\n logger.success(`Loaded plugin \"${type}\" from \"${pluginName}\" in shareable config \"${pluginsPath[name]}\"`);\n } else {\n logger.success(`Loaded plugin \"${type}\" from \"${pluginName}\"`);\n }\n }\n\n return validator;\n};\n","import semver from \"semver\";\nimport { FIRST_RELEASE, FIRSTPRERELEASE } from \"./definitions/constants.js\";\nimport { getLatestVersion, highest, isSameChannel, tagsToVersions } from \"./utils.js\";\n\nexport default ({ branch, nextRelease: { type, channel }, lastRelease, logger }) => {\n let version;\n if (lastRelease.version) {\n const { major, minor, patch } = semver.parse(lastRelease.version);\n\n if (branch.type === \"prerelease\") {\n if (\n semver.prerelease(lastRelease.version) &&\n lastRelease.channels.some((lastReleaseChannel) => isSameChannel(lastReleaseChannel, channel))\n ) {\n version = highest(\n semver.inc(lastRelease.version, \"prerelease\"),\n `${semver.inc(getLatestVersion(tagsToVersions(branch.tags), { withPrerelease: true }), type)}-${\n branch.prerelease\n }.${FIRSTPRERELEASE}`\n );\n } else {\n version = `${semver.inc(`${major}.${minor}.${patch}`, type)}-${branch.prerelease}.${FIRSTPRERELEASE}`;\n }\n } else {\n version = semver.inc(lastRelease.version, type);\n }\n\n logger.log(\"The next release version is %s\", version);\n } else {\n version = branch.type === \"prerelease\" ? `${FIRST_RELEASE}-${branch.prerelease}.${FIRSTPRERELEASE}` : FIRST_RELEASE;\n logger.log(`There is no previous release, the next release version is ${version}`);\n }\n\n return version;\n};\n","import debugCommits from \"debug\";\nimport { getCommits } from \"./git.js\";\n\nconst debug = debugCommits(\"semantic-release:get-commits\");\n\n/**\n * Retrieve the list of commits on the current branch since the commit sha associated with the last release, or all the commits of the current branch if there is no last released version.\n *\n * @param {Object} context semantic-release context.\n *\n * @return {Promise<Array<Object>>} The list of commits on the branch `branch` since the last release.\n */\nexport default async ({\n cwd,\n env,\n lastRelease: { gitHead: from },\n nextRelease: { gitHead: to = \"HEAD\" } = {},\n logger,\n}) => {\n if (from) {\n debug(\"Use from: %s\", from);\n } else {\n logger.log(\"No previous release found, retrieving all commits\");\n }\n\n const commits = await getCommits(from, to, { cwd, env });\n\n logger.log(`Found ${commits.length} commits since last release`);\n debug(\"Parsed commits: %o\", commits);\n return commits;\n};\n","import { isUndefined } from \"lodash-es\";\nimport semver from \"semver\";\nimport { isSameChannel, makeTag } from \"./utils.js\";\n\n/**\n * Last release.\n *\n * @typedef {Object} LastRelease\n * @property {string} version The version number of the last release.\n * @property {string} gitHead The Git reference used to make the last release.\n * @property {string} gitTag The git tag associated with the last release.\n * @property {string} channel The channel on which of the last release was published.\n * @property {string} name The name of the last release.\n */\n\n/**\n * Determine the Git tag and version of the last tagged release.\n *\n * - Filter out the branch tags that are not valid semantic version\n * - Sort the versions\n * - Retrieve the highest version\n *\n * @param {Object} context semantic-release context.\n * @param {Object} params Function parameters.\n * @param {Object} params.before Find only releases with version number lower than this version.\n *\n * @return {LastRelease} The last tagged release or empty object if none is found.\n */\nexport default ({ branch, options: { tagFormat } }, { before } = {}) => {\n const [{ version, gitTag, channels } = {}] = branch.tags\n .filter(\n (tag) =>\n ((branch.type === \"prerelease\" &&\n tag.channels.some((channel) => isSameChannel(branch.channel, channel)) &&\n semver\n .parse(tag.version)\n .prerelease.includes(branch.prerelease === true ? branch.name : branch.prerelease)) ||\n !semver.prerelease(tag.version)) &&\n (isUndefined(before) || semver.lt(tag.version, before))\n )\n .sort((a, b) => semver.rcompare(a.version, b.version));\n\n if (gitTag) {\n return { version, gitTag, channels, gitHead: gitTag, name: makeTag(tagFormat, version) };\n }\n\n return {};\n};\n","import { intersection, uniqBy } from \"lodash-es\";\nimport semver from \"semver\";\nimport semverDiff from \"semver-diff\";\nimport getLastRelease from \"./get-last-release.js\";\nimport { getLowerBound, makeTag } from \"./utils.js\";\n\n/**\n * Find releases that have been merged from a higher branch but not added on the channel of the current branch.\n *\n * @param {Object} context semantic-release context.\n *\n * @return {Array<Object>} Last release and next release to be added on the channel of the current branch.\n */\nexport default (context) => {\n const {\n branch,\n branches,\n options: { tagFormat },\n } = context;\n\n const higherChannels = branches\n // Consider only releases of higher branches\n .slice(branches.findIndex(({ name }) => name === branch.name) + 1)\n // Exclude prerelease branches\n .filter(({ type }) => type !== \"prerelease\")\n .map(({ channel }) => channel || null);\n\n const versiontoAdd = uniqBy(\n branch.tags.filter(\n ({ channels, version }) =>\n !channels.includes(branch.channel || null) &&\n intersection(channels, higherChannels).length > 0 &&\n (branch.type !== \"maintenance\" || semver.gte(version, getLowerBound(branch.mergeRange)))\n ),\n \"version\"\n ).sort((a, b) => semver.compare(b.version, a.version))[0];\n\n if (versiontoAdd) {\n const { version, gitTag, channels } = versiontoAdd;\n const lastRelease = getLastRelease(context, { before: version });\n if (semver.gt(getLastRelease(context).version, version)) {\n return;\n }\n\n const type = lastRelease.version ? semverDiff(lastRelease.version, version) : \"major\";\n const name = makeTag(tagFormat, version);\n return {\n lastRelease,\n currentRelease: { type, version, channels, gitTag, name, gitHead: gitTag },\n nextRelease: {\n type,\n version,\n channel: branch.channel || null,\n gitTag: makeTag(tagFormat, version),\n name,\n gitHead: gitTag,\n },\n };\n }\n};\n","import semver from 'semver';\n\nexport default function semverDiff(versionA, versionB) {\n\tversionA = semver.parse(versionA);\n\tversionB = semver.parse(versionB);\n\n\tif (semver.compareBuild(versionA, versionB) >= 0) {\n\t\treturn;\n\t}\n\n\treturn semver.diff(versionA, versionB) || 'build';\n}\n","import { format, parse } from \"node:url\";\nimport { isNil } from \"lodash-es\";\nimport hostedGitInfo from \"hosted-git-info\";\nimport debugAuthUrl from \"debug\";\nimport { verifyAuth } from \"./git.js\";\n\nconst debug = debugAuthUrl(\"semantic-release:get-git-auth-url\");\n\n/**\n * Machinery to format a repository URL with the given credentials\n *\n * @param {String} protocol URL protocol (which should not be present in repositoryUrl)\n * @param {String} repositoryUrl User-given repository URL\n * @param {String} gitCredentials The basic auth part of the URL\n *\n * @return {String} The formatted Git repository URL.\n */\nfunction formatAuthUrl(protocol, repositoryUrl, gitCredentials) {\n const [match, auth, host, basePort, path] =\n /^(?!.+:\\/\\/)(?:(?<auth>.*)@)?(?<host>.*?):(?<port>\\d+)?:?\\/?(?<path>.*)$/.exec(repositoryUrl) || [];\n const { port, hostname, ...parsed } = parse(\n match ? `ssh://${auth ? `${auth}@` : \"\"}${host}${basePort ? `:${basePort}` : \"\"}/${path}` : repositoryUrl\n );\n\n return format({\n ...parsed,\n auth: gitCredentials,\n host: `${hostname}${protocol === \"ssh:\" ? \"\" : port ? `:${port}` : \"\"}`,\n protocol: protocol && /http[^s]/.test(protocol) ? \"http\" : \"https\",\n });\n}\n\n/**\n * Verify authUrl by calling git.verifyAuth, but don't throw on failure\n *\n * @param {Object} context semantic-release context.\n * @param {String} authUrl Repository URL to verify\n *\n * @return {String} The authUrl as is if the connection was successful, null otherwise\n */\nasync function ensureValidAuthUrl({ cwd, env, branch }, authUrl) {\n try {\n await verifyAuth(authUrl, branch.name, { cwd, env });\n return authUrl;\n } catch (error) {\n debug(error);\n return null;\n }\n}\n\n/**\n * Determine the git repository URL to use to push, either:\n * - The `repositoryUrl` as is if allowed to push\n * - The `repositoryUrl` converted to `https` or `http` with Basic Authentication\n *\n * In addition, expand shortcut URLs (`owner/repo` => `https://github.com/owner/repo.git`) and transform `git+https` / `git+http` URLs to `https` / `http`.\n *\n * @param {Object} context semantic-release context.\n *\n * @return {String} The formatted Git repository URL.\n */\nexport default async (context) => {\n const { cwd, env, branch } = context;\n const GIT_TOKENS = {\n GIT_CREDENTIALS: undefined,\n GH_TOKEN: undefined,\n // GitHub Actions require the \"x-access-token:\" prefix for git access\n // https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation\n GITHUB_TOKEN: isNil(env.GITHUB_ACTION) ? undefined : \"x-access-token:\",\n GL_TOKEN: \"gitlab-ci-token:\",\n GITLAB_TOKEN: \"gitlab-ci-token:\",\n BB_TOKEN: \"x-token-auth:\",\n BITBUCKET_TOKEN: \"x-token-auth:\",\n BB_TOKEN_BASIC_AUTH: \"\",\n BITBUCKET_TOKEN_BASIC_AUTH: \"\",\n };\n\n let { repositoryUrl } = context.options;\n const info = hostedGitInfo.fromUrl(repositoryUrl, { noGitPlus: true });\n const { protocol, ...parsed } = parse(repositoryUrl);\n\n if (info && info.getDefaultRepresentation() === \"shortcut\") {\n // Expand shorthand URLs (such as `owner/repo` or `gitlab:owner/repo`)\n repositoryUrl = info.https();\n } else if (protocol && protocol.includes(\"http\")) {\n // Replace `git+https` and `git+http` with `https` or `http`\n repositoryUrl = format({ ...parsed, protocol: protocol.includes(\"https\") ? \"https\" : \"http\", href: null });\n }\n\n // Test if push is allowed without transforming the URL (e.g. is ssh keys are set up)\n try {\n debug(\"Verifying ssh auth by attempting to push to %s\", repositoryUrl);\n await verifyAuth(repositoryUrl, branch.name, { cwd, env });\n } catch {\n debug(\"SSH key auth failed, falling back to https.\");\n const envVars = Object.keys(GIT_TOKENS).filter((envVar) => !isNil(env[envVar]));\n\n // Skip verification if there is no ambiguity on which env var to use for authentication\n if (envVars.length === 1) {\n const gitCredentials = `${GIT_TOKENS[envVars[0]] || \"\"}${env[envVars[0]]}`;\n return formatAuthUrl(protocol, repositoryUrl, gitCredentials);\n }\n\n if (envVars.length > 1) {\n debug(`Found ${envVars.length} credentials in environment, trying all of them`);\n\n const candidateRepositoryUrls = [];\n for (const envVar of envVars) {\n const gitCredentials = `${GIT_TOKENS[envVar] || \"\"}${env[envVar]}`;\n const authUrl = formatAuthUrl(protocol, repositoryUrl, gitCredentials);\n candidateRepositoryUrls.push(ensureValidAuthUrl(context, authUrl));\n }\n\n const validRepositoryUrls = await Promise.all(candidateRepositoryUrls);\n const chosenAuthUrlIndex = validRepositoryUrls.findIndex((url) => url !== null);\n if (chosenAuthUrlIndex > -1) {\n debug(`Using \"${envVars[chosenAuthUrlIndex]}\" to authenticate`);\n return validRepositoryUrls[chosenAuthUrlIndex];\n }\n }\n }\n\n return repositoryUrl;\n};\n","const pEachSeries = async (iterable, iterator) => {\n\tlet index = 0;\n\n\tfor (const value of iterable) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst returnValue = await iterator(await value, index++);\n\n\t\tif (returnValue === pEachSeries.stop) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn iterable;\n};\n\npEachSeries.stop = Symbol('pEachSeries.stop');\n\nexport default pEachSeries;\n","import { isNil, uniqBy } from \"lodash-es\";\nimport semver from \"semver\";\nimport { isMaintenanceRange } from \"../utils.js\";\n\nexport const maintenance = {\n filter: ({ name, range }) => (!isNil(range) && range !== false) || isMaintenanceRange(name),\n branchValidator: ({ range }) => (isNil(range) ? true : isMaintenanceRange(range)),\n branchesValidator: (branches) => uniqBy(branches, ({ range }) => semver.validRange(range)).length === branches.length,\n};\n\nexport const prerelease = {\n filter: ({ prerelease }) => !isNil(prerelease) && prerelease !== false,\n branchValidator: ({ name, prerelease }) =>\n Boolean(prerelease) && Boolean(semver.valid(`1.0.0-${prerelease === true ? name : prerelease}.1`)),\n branchesValidator: (branches) => uniqBy(branches, \"prerelease\").length === branches.length,\n};\n\nexport const release = {\n // eslint-disable-next-line unicorn/no-fn-reference-in-iterator\n filter: (branch) => !maintenance.filter(branch) && !prerelease.filter(branch),\n branchesValidator: (branches) => branches.length <= 3 && branches.length > 0,\n};\n","import { isString, mapValues, omit, remove, template } from \"lodash-es\";\nimport micromatch from \"micromatch\";\nimport { getBranches } from \"../git.js\";\n\nexport default async (repositoryUrl, { cwd }, branches) => {\n const gitBranches = await getBranches(repositoryUrl, { cwd });\n\n return branches.reduce(\n (branches, branch) => [\n ...branches,\n ...remove(gitBranches, (name) => micromatch(gitBranches, branch.name).includes(name)).map((name) => ({\n name,\n ...mapValues(omit(branch, \"name\"), (value) => (isString(value) ? template(value)({ name }) : value)),\n })),\n ],\n []\n );\n};\n","import { escapeRegExp, template } from \"lodash-es\";\nimport semver from \"semver\";\nimport pReduce from \"p-reduce\";\nimport debugTags from \"debug\";\nimport { getNote, getTags } from \"../../lib/git.js\";\n\nconst debug = debugTags(\"semantic-release:get-tags\");\n\nexport default async ({ cwd, env, options: { tagFormat } }, branches) => {\n // Generate a regex to parse tags formatted with `tagFormat`\n // by replacing the `version` variable in the template by `(.+)`.\n // The `tagFormat` is compiled with space as the `version` as it's an invalid tag character,\n // so it's guaranteed to no be present in the `tagFormat`.\n const tagRegexp = `^${escapeRegExp(template(tagFormat)({ version: \" \" })).replace(\" \", \"(.+)\")}`;\n\n return pReduce(\n branches,\n async (branches, branch) => {\n const branchTags = await pReduce(\n await getTags(branch.name, { cwd, env }),\n async (branchTags, tag) => {\n const [, version] = tag.match(tagRegexp) || [];\n return version && semver.valid(semver.clean(version))\n ? [...branchTags, { gitTag: tag, version, channels: (await getNote(tag, { cwd, env })).channels || [null] }]\n : branchTags;\n },\n []\n );\n\n debug(\"found tags for branch %s: %o\", branch.name, branchTags);\n return [...branches, { ...branch, tags: branchTags }];\n },\n []\n );\n};\n","import signale from \"signale\";\nimport figures from \"figures\";\n\nconst { Signale } = signale;\n\nexport default ({ stdout, stderr }) =>\n new Signale({\n config: { displayTimestamp: true, underlineMessage: false, displayLabel: false },\n disabled: false,\n interactive: false,\n scope: \"semantic-release\",\n stream: [stdout],\n types: {\n error: { badge: figures.cross, color: \"red\", label: \"\", stream: [stderr] },\n log: { badge: figures.info, color: \"magenta\", label: \"\", stream: [stdout] },\n success: { badge: figures.tick, color: \"green\", label: \"\", stream: [stdout] },\n },\n });\n","import { type PublishContext } from 'semantic-release';\nimport {\n type MajorAndMinorPart,\n type NormalizedPluginConfigTags,\n type NormalizedPluginConfig,\n type PluginConfig,\n type PluginConfigTagKeys,\n type TagTask,\n type PublishResponse\n} from './types.js';\nimport { execa } from 'execa';\n\nexport {\n type PluginConfig,\n type NormalizedPluginConfigTags,\n type NormalizedPluginConfig,\n type PluginConfigTagKeys,\n type MajorAndMinorPart,\n type TagTask\n};\n\nlet IS_REGCTL_AVAILABLE: boolean | undefined = undefined;\n\nexport function parseConfig (config: PluginConfig): NormalizedPluginConfig {\n const result: NormalizedPluginConfig = {\n images: [],\n tag: {\n latest: true,\n major: true,\n minor: true,\n version: true,\n channel: true\n }\n };\n\n if (typeof config.images === 'string') {\n result.images.push(config.images);\n } else if (Array.isArray(config.images)) {\n config.images\n .filter(image => typeof image === 'string')\n .forEach(image => result.images.push(image));\n } else {\n throw new Error('Configuration invalid: No image defined!');\n }\n\n const tagNames = Object.keys(result.tag) as PluginConfigTagKeys[];\n tagNames.forEach(name => {\n const value = config.tag ? config.tag[name] : undefined;\n if (value === true || value === false) {\n result.tag[name] = value;\n }\n });\n\n return result;\n}\n\nexport function getBaseImage (input: string): string {\n let p = input.split('@')[0].split(':');\n\n // it's a \":port\"\n if (p[1] && p[1].includes('/')) {\n p = [p[0] + ':' + p[1], p[2]];\n }\n\n return p[0];\n}\n\nexport function isPreRelease (context: PublishContext): boolean {\n return Boolean(context.nextRelease && context.nextRelease.version.includes('-'));\n}\n\nexport function getMajorAndMinorPart (version: string | undefined): MajorAndMinorPart {\n if (!version) {\n return {\n major: null,\n minor: null\n };\n }\n\n const parts = version.split('.', 2);\n return {\n major: parts[0],\n minor: parts[1]\n };\n}\n\nexport function getTagTasks (config: NormalizedPluginConfig, context: PublishContext): TagTask[] {\n const result: TagTask[] = [];\n\n if (!context.nextRelease) {\n return [];\n }\n\n const version = context.nextRelease.version;\n config.images.forEach(input => {\n const outputBase = getBaseImage(input);\n\n // version\n if (config.tag.version && version) {\n result.push({\n input,\n output: `${outputBase}:${version}`\n });\n }\n\n if (!isPreRelease(context)) {\n const { major, minor } = getMajorAndMinorPart(version);\n\n // latest\n if (config.tag.latest) {\n result.push({\n input,\n output: `${outputBase}:latest`\n });\n }\n\n // major\n if (config.tag.major && major) {\n result.push({\n input,\n output: `${outputBase}:${major}`\n });\n }\n\n // minor\n if (config.tag.minor && major && minor) {\n result.push({\n input,\n output: `${outputBase}:${major}.${minor}`\n });\n }\n }\n\n // channel\n const channel = context.nextRelease?.channel;\n if (config.tag.channel && channel) {\n result.push({\n input,\n output: `${outputBase}:${channel}`\n });\n }\n });\n\n return result;\n}\n\nexport function getUrlFromImage (image: string): string | undefined {\n const parts = getBaseImage(image).split('/');\n if (parts[0] === 'ghcr.io' && parts.length === 3) {\n return `https://github.com/${parts[1]}/${parts[2]}/pkgs/container/${parts[2]}`;\n }\n if (parts[0] === 'registry.gitlab.com' && parts.length >= 3) {\n return `https://gitlab.com/${parts[1]}/${parts[2]}/container_registry`;\n }\n\n const couldBeAHostname = parts[0].includes('.');\n if (!couldBeAHostname && parts.length === 2) {\n return `https://hub.docker.com/r/${parts[0]}/${parts[1]}/tags`;\n }\n if (!couldBeAHostname && parts.length === 1) {\n return `https://hub.docker.com/_/${parts[0]}/tags`;\n }\n}\n\nexport async function exec (file: string, args: string[]): Promise<void> {\n try {\n await execa(file, args);\n } catch (error) {\n if (typeof error === 'object' && error !== null && 'command' in error && 'message' in error) {\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n throw new Error(`Unable to run \"${error.command}\": ${error.message}`);\n } else {\n throw new Error(`Unable to run \"${args.join(' ')}\": ${error}`);\n }\n }\n}\n\nexport async function isRegCtlAvailable (): Promise<boolean> {\n if(IS_REGCTL_AVAILABLE !== undefined) {\n return IS_REGCTL_AVAILABLE;\n }\n\n try {\n await execa('which', ['regctl']);\n IS_REGCTL_AVAILABLE = true;\n return true;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n catch(error) {\n IS_REGCTL_AVAILABLE = false;\n return false;\n }\n}\n\nexport async function tagImage (input: string, output: string): Promise<void> {\n await exec('docker', ['tag', input, output]);\n}\n\nexport async function pushImage (image: string): Promise<void> {\n await exec('docker', ['push', image]);\n}\n\nexport async function copyImage (input: string, output: string): Promise<void> {\n await exec('regctl', ['image', 'copy', input, output]);\n}\n\nexport async function publish (pluginConfig: PluginConfig, context: PublishContext): Promise<boolean | PublishResponse> {\n if (!context.nextRelease) {\n context.logger.log('No release schedules, so no images to tag.');\n return false;\n }\n\n const config = parseConfig(pluginConfig);\n const tasks = getTagTasks(config, context);\n if (!tasks.length) {\n return false;\n }\n\n for (const task of tasks) {\n if(await isRegCtlAvailable()) {\n context.logger.log(`Copy with regctl ${task.input} → ${task.output}`);\n\n try {\n await copyImage(task.input, task.output);\n continue;\n }\n catch(error) {\n context.logger.error(error);\n context.logger.log('Retry without regctl…');\n }\n }\n\n context.logger.log(`Tag ${task.input} → ${task.output}`);\n await tagImage(task.input, task.output);\n\n context.logger.log(`Push ${task.output}`);\n await pushImage(task.output);\n }\n\n const channel = context.nextRelease?.channel;\n const firstTask = tasks[0];\n return {\n name: `Docker container (${firstTask.output})`,\n url: getUrlFromImage(firstTask.output),\n channel\n };\n}\n\nexport default {\n publish\n};\n"],"mappings":"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,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,KAAK,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,IAAI,KAAK,KAAK,EAAE,IAAI,EAEj+CC,GAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,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","names":["require_constants","__commonJSMin","exports","module","SEMVER_SPEC_VERSION","MAX_SAFE_INTEGER","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","require_debug","__commonJSMin","exports","module","debug","args","require_re","__commonJSMin","exports","module","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_LENGTH","debug","re","safeRe","src","t","R","LETTERDASHNUMBER","safeRegexReplacements","makeSafeRegex","value","token","max","createToken","name","isGlobal","safe","index","require_parse_options","__commonJSMin","exports","module","looseOption","emptyOpts","parseOptions","options","require_identifiers","__commonJSMin","exports","module","numeric","compareIdentifiers","a","b","anum","bnum","rcompareIdentifiers","require_semver","__commonJSMin","exports","module","debug","MAX_LENGTH","MAX_SAFE_INTEGER","re","t","parseOptions","compareIdentifiers","SemVer","_SemVer","version","options","m","id","num","other","i","a","b","release","identifier","identifierBase","base","prerelease","require_parse","__commonJSMin","exports","module","SemVer","parse","version","options","throwErrors","er","require_valid","__commonJSMin","exports","module","parse","valid","version","options","v","require_clean","__commonJSMin","exports","module","parse","clean","version","options","s","require_inc","__commonJSMin","exports","module","SemVer","inc","version","release","options","identifier","identifierBase","require_diff","__commonJSMin","exports","module","parse","diff","version1","version2","v1","v2","comparison","v1Higher","highVersion","lowVersion","highHasPre","prefix","require_major","__commonJSMin","exports","module","SemVer","major","a","loose","require_minor","__commonJSMin","exports","module","SemVer","minor","a","loose","require_patch","__commonJSMin","exports","module","SemVer","patch","a","loose","require_prerelease","__commonJSMin","exports","module","parse","prerelease","version","options","parsed","require_compare","__commonJSMin","exports","module","SemVer","compare","a","b","loose","require_rcompare","__commonJSMin","exports","module","compare","rcompare","a","b","loose","require_compare_loose","__commonJSMin","exports","module","compare","compareLoose","a","b","require_compare_build","__commonJSMin","exports","module","SemVer","compareBuild","a","b","loose","versionA","versionB","require_sort","__commonJSMin","exports","module","compareBuild","sort","list","loose","a","b","require_rsort","__commonJSMin","exports","module","compareBuild","rsort","list","loose","a","b","require_gt","__commonJSMin","exports","module","compare","gt","a","b","loose","require_lt","__commonJSMin","exports","module","compare","lt","a","b","loose","require_eq","__commonJSMin","exports","module","compare","eq","a","b","loose","require_neq","__commonJSMin","exports","module","compare","neq","a","b","loose","require_gte","__commonJSMin","exports","module","compare","gte","a","b","loose","require_lte","__commonJSMin","exports","module","compare","lte","a","b","loose","require_cmp","__commonJSMin","exports","module","eq","neq","gt","gte","lt","lte","cmp","a","op","b","loose","require_coerce","__commonJSMin","exports","module","SemVer","parse","re","t","coerce","version","options","match","coerceRtlRegex","next","major","minor","patch","prerelease","build","require_lrucache","__commonJSMin","exports","module","LRUCache","key","value","firstKey","require_range","__commonJSMin","exports","module","Range","_Range","range","options","parseOptions","Comparator","r","c","first","isNullSet","isAny","comps","memoKey","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","cached","cache","loose","hr","re","t","hyphenReplace","debug","comparatorTrimReplace","tildeTrimReplace","caretTrimReplace","rangeList","comp","parseComparator","replaceGTE0","rangeMap","comparators","result","thisComparators","isSatisfiable","rangeComparators","thisComparator","rangeComparator","version","SemVer","i","testSet","LRU","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","id","replaceTilde","_","M","m","p","pr","ret","replaceCaret","z","replaceXRange","gtlt","xM","xm","xp","anyX","incPr","$0","from","fM","fm","fp","fpr","fb","to","tM","tm","tp","tpr","set","allowed","require_comparator","__commonJSMin","exports","module","ANY","Comparator","_Comparator","comp","options","parseOptions","debug","re","t","m","SemVer","version","cmp","Range","require_satisfies","__commonJSMin","exports","module","Range","satisfies","version","range","options","require_to_comparators","__commonJSMin","exports","module","Range","toComparators","range","options","comp","c","require_max_satisfying","__commonJSMin","exports","module","SemVer","Range","maxSatisfying","versions","range","options","max","maxSV","rangeObj","v","require_min_satisfying","__commonJSMin","exports","module","SemVer","Range","minSatisfying","versions","range","options","min","minSV","rangeObj","v","require_min_version","__commonJSMin","exports","module","SemVer","Range","gt","minVersion","range","loose","minver","i","comparators","setMin","comparator","compver","require_valid","__commonJSMin","exports","module","Range","validRange","range","options","require_outside","__commonJSMin","exports","module","SemVer","Comparator","ANY","Range","satisfies","gt","lt","lte","gte","outside","version","range","hilo","options","gtfn","ltefn","ltfn","comp","ecomp","i","comparators","high","low","comparator","require_gtr","__commonJSMin","exports","module","outside","gtr","version","range","options","require_ltr","__commonJSMin","exports","module","outside","ltr","version","range","options","require_intersects","__commonJSMin","exports","module","Range","intersects","r1","r2","options","require_simplify","__commonJSMin","exports","module","satisfies","compare","versions","range","options","set","first","prev","v","a","b","version","ranges","min","max","simplified","original","require_subset","__commonJSMin","exports","module","Range","Comparator","ANY","satisfies","compare","subset","sub","dom","options","sawNonNull","OUTER","simpleSub","simpleDom","isSub","simpleSubset","minimumVersionWithPreRelease","minimumVersion","eqSet","gt","lt","c","higherGT","lowerLT","gtltComp","eq","higher","lower","hasDomLT","hasDomGT","needDomLTPre","needDomGTPre","a","b","comp","require_semver","__commonJSMin","exports","module","internalRe","constants","SemVer","identifiers","parse","valid","clean","inc","diff","major","minor","patch","prerelease","compare","rcompare","compareLoose","compareBuild","sort","rsort","gt","lt","eq","neq","gte","lte","cmp","coerce","Comparator","Range","satisfies","toComparators","maxSatisfying","minSatisfying","minVersion","validRange","outside","gtr","ltr","intersects","simplifyRange","subset","require_js_tokens","__commonJSMin","exports","match","token","nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","set","pos","i","length","isIdentifierStart","test","String","fromCharCode","isIdentifierChar","isIdentifierName","name","isFirst","cp","charCodeAt","trail","reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword","_identifier","require","_keyword","require_escape_string_regexp","__commonJSMin","exports","module","matchOperatorsRe","str","require_color_name","__commonJSMin","exports","module","require_conversions","__commonJSMin","exports","module","cssKeywords","reverseKeywords","key","convert","model","channels","labels","rgb","r","g","b","min","max","delta","h","s","l","rdif","gdif","bdif","v","diff","diffc","c","w","m","y","k","comparativeDistance","x","reversed","currentClosestDistance","currentClosestKeyword","keyword","value","distance","z","xyz","a","hsl","t1","t2","t3","val","i","smin","lmin","sv","hsv","hi","f","p","q","t","vmin","sl","hwb","wh","bl","ratio","n","cmyk","lab","y2","x2","z2","hr","lch","args","ansi","color","mult","rem","integer","string","match","colorString","char","chroma","grayscale","hue","hcg","pure","mg","apple","gray","require_route","__commonJSMin","exports","module","conversions","buildGraph","graph","models","len","i","deriveBFS","fromModel","queue","current","adjacents","adjacent","node","link","from","to","args","wrapConversion","toModel","path","fn","cur","conversion","require_color_convert","__commonJSMin","exports","module","conversions","route","convert","models","wrapRaw","fn","wrappedFn","args","wrapRounded","result","len","i","fromModel","routes","routeModels","toModel","require_ansi_styles","__commonJSMin","exports","module","colorConvert","wrapAnsi16","fn","offset","wrapAnsi256","code","wrapAnsi16m","rgb","assembleStyles","codes","styles","groupName","group","styleName","style","ansi2ansi","n","rgb2rgb","r","g","b","key","suite","require_has_flag","__commonJSMin","exports","module","flag","argv","prefix","pos","terminatorPos","require_supports_color","__commonJSMin","exports","module","os","hasFlag","env","forceColor","translateLevel","level","supportsColor","stream","min","osRelease","sign","version","getSupportLevel","require_templates","__commonJSMin","exports","module","TEMPLATE_REGEX","STYLE_REGEX","STRING_REGEX","ESCAPE_REGEX","ESCAPES","unescape","c","parseArguments","name","args","results","chunks","matches","chunk","m","escape","chr","parseStyle","style","buildStyle","chalk","styles","enabled","layer","current","styleName","tmp","escapeChar","inverse","close","str","errMsg","require_chalk","__commonJSMin","exports","module","escapeStringRegexp","ansiStyles","stdoutColor","template","isSimpleWindowsTerm","levelMapping","skipModels","styles","applyOptions","obj","options","scLevel","Chalk","chalk","args","chalkTag","key","codes","build","model","level","bgModel","proto","_styles","_empty","builder","applyStyle","self","enabled","argsLen","str","a","originalDim","code","strings","parts","_jsTokens","require","_helperValidatorIdentifier","_chalk","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","sometimesKeywords","Set","getDefs","chalk","keyword","cyan","capitalized","yellow","jsxIdentifier","punctuator","number","magenta","string","green","regex","comment","grey","invalid","white","bgRed","bold","NEWLINE","BRACKET","tokenize","JSX_TAG","getTokenType","token","offset","text","type","isKeyword","value","isStrictReservedWord","test","slice","toLowerCase","match","jsTokens","exec","matchToToken","index","highlightTokens","defs","highlighted","colorize","split","map","str","join","shouldHighlight","options","level","forceColor","chalkWithForcedColor","getChalk","_chalkWithForcedColor","constructor","enabled","exports","highlight","code","require_escape_string_regexp","__commonJSMin","exports","module","matchOperatorsRe","str","require_color_name","__commonJSMin","exports","module","require_conversions","__commonJSMin","exports","module","cssKeywords","reverseKeywords","key","convert","model","channels","labels","rgb","r","g","b","min","max","delta","h","s","l","rdif","gdif","bdif","v","diff","diffc","c","w","m","y","k","comparativeDistance","x","reversed","currentClosestDistance","currentClosestKeyword","keyword","value","distance","z","xyz","a","hsl","t1","t2","t3","val","i","smin","lmin","sv","hsv","hi","f","p","q","t","vmin","sl","hwb","wh","bl","ratio","n","cmyk","lab","y2","x2","z2","hr","lch","args","ansi","color","mult","rem","integer","string","match","colorString","char","chroma","grayscale","hue","hcg","pure","mg","apple","gray","require_route","__commonJSMin","exports","module","conversions","buildGraph","graph","models","len","i","deriveBFS","fromModel","queue","current","adjacents","adjacent","node","link","from","to","args","wrapConversion","toModel","path","fn","cur","conversion","require_color_convert","__commonJSMin","exports","module","conversions","route","convert","models","wrapRaw","fn","wrappedFn","args","wrapRounded","result","len","i","fromModel","routes","routeModels","toModel","require_ansi_styles","__commonJSMin","exports","module","colorConvert","wrapAnsi16","fn","offset","wrapAnsi256","code","wrapAnsi16m","rgb","assembleStyles","codes","styles","groupName","group","styleName","style","ansi2ansi","n","rgb2rgb","r","g","b","key","suite","require_has_flag","__commonJSMin","exports","module","flag","argv","prefix","pos","terminatorPos","require_supports_color","__commonJSMin","exports","module","os","hasFlag","env","forceColor","translateLevel","level","supportsColor","stream","min","osRelease","sign","version","getSupportLevel","require_templates","__commonJSMin","exports","module","TEMPLATE_REGEX","STYLE_REGEX","STRING_REGEX","ESCAPE_REGEX","ESCAPES","unescape","c","parseArguments","name","args","results","chunks","matches","chunk","m","escape","chr","parseStyle","style","buildStyle","chalk","styles","enabled","layer","current","styleName","tmp","escapeChar","inverse","close","str","errMsg","require_chalk","__commonJSMin","exports","module","escapeStringRegexp","ansiStyles","stdoutColor","template","isSimpleWindowsTerm","levelMapping","skipModels","styles","applyOptions","obj","options","scLevel","Chalk","chalk","args","chalkTag","key","codes","build","model","level","bgModel","proto","_styles","_empty","builder","applyStyle","self","enabled","argsLen","str","a","originalDim","code","strings","parts","_highlight","require","_chalk","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","chalkWithForcedColor","getChalk","forceColor","_chalkWithForcedColor","chalk","constructor","enabled","level","deprecationWarningShown","getDefs","gutter","grey","marker","red","bold","message","NEWLINE","getMarkerLines","loc","source","opts","startLoc","assign","column","line","start","endLoc","end","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","Math","max","min","length","lineDiff","markerLines","i","lineNumber","sourceLength","codeFrameColumns","rawLines","highlighted","highlightCode","shouldHighlight","defs","maybeHighlight","chalkFn","string","lines","split","hasColumns","numberMaxWidth","String","frame","highlight","slice","map","index","number","hasMarker","lastMarkerLine","markerLine","Array","isArray","markerSpacing","replace","numberOfMarkers","repeat","join","reset","_default","colNumber","process","emitWarning","deprecationError","Error","name","console","warn","require_resolve_from","__commonJSMin","exports","module","path","Module","fs","resolveFrom","fromDir","moduleId","silent","err","fromFile","resolveFileName","require_callsites","__commonJSMin","exports","module","callsites","_prepareStackTrace","_","stack","require_parent_module","__commonJSMin","exports","module","callsites","filepath","stacks","seenVal","stack","parentFilepath","require_import_fresh","__commonJSMin","exports","module","path","resolveFrom","parentModule","moduleId","parentPath","cwd","filePath","oldModule","__require","i","parent","require_is_arrayish","__commonJSMin","exports","module","obj","require_error_ex","__commonJSMin","exports","module","util","isArrayish","errorEx","name","properties","errorExError","ErrorEXError","message","newMessage","key","modifier","v","overwrittenStack","stackDescriptor","stackGetter","stackValue","newstack","stack","lineCount","line","str","def","require_json_parse_even_better_errors","__commonJSMin","exports","module","hexify","char","h","parseError","txt","context","badToken","errIdx","msg","start","end","slice","JSONParseError","er","caller","metadata","n","kIndent","kNewline","formatRE","emptyRE","parseJson","reviver","parseText","stripBOM","newline","indent","result","e","isEmptyArray","dist_exports","__export","dist_default","LF","CR","LinesAndColumns","init_dist","__esmMin","string","offsets","offset","index","line","column","location","nextOffset","require_parse_json","__commonJSMin","exports","module","errorEx","fallback","LinesAndColumns","codeFrameColumns","JSONError","parseJson","string","reviver","filename","error","indexMatch","jsonError","lines","index","location","codeFrame","require_common","__commonJSMin","exports","module","isNothing","subject","isObject","toArray","sequence","extend","target","source","index","length","key","sourceKeys","repeat","string","count","result","cycle","isNegativeZero","number","require_exception","__commonJSMin","exports","module","formatError","exception","compact","where","message","YAMLException","reason","mark","require_snippet","__commonJSMin","exports","module","common","getLine","buffer","lineStart","lineEnd","position","maxLineLength","head","tail","maxHalfLength","padStart","string","max","makeSnippet","mark","options","re","lineStarts","lineEnds","match","foundLineNo","result","i","line","lineNoLength","require_type","__commonJSMin","exports","module","YAMLException","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","compileStyleAliases","map","result","style","alias","Type","tag","options","name","data","require_schema","__commonJSMin","exports","module","YAMLException","Type","compileList","schema","name","result","currentType","newIndex","previousType","previousIndex","compileMap","index","length","collectType","type","Schema","definition","implicit","explicit","require_str","__commonJSMin","exports","module","Type","data","require_seq","__commonJSMin","exports","module","Type","data","require_map","__commonJSMin","exports","module","Type","data","require_failsafe","__commonJSMin","exports","module","Schema","require_null","__commonJSMin","exports","module","Type","resolveYamlNull","data","max","constructYamlNull","isNull","object","require_bool","__commonJSMin","exports","module","Type","resolveYamlBoolean","data","max","constructYamlBoolean","isBoolean","object","require_int","__commonJSMin","exports","module","common","Type","isHexCode","c","isOctCode","isDecCode","resolveYamlInteger","data","max","index","hasDigits","ch","constructYamlInteger","value","sign","isInteger","object","obj","require_float","__commonJSMin","exports","module","common","Type","YAML_FLOAT_PATTERN","resolveYamlFloat","data","constructYamlFloat","value","sign","SCIENTIFIC_WITHOUT_DOT","representYamlFloat","object","style","res","isFloat","require_json","__commonJSMin","exports","module","require_core","__commonJSMin","exports","module","require_timestamp","__commonJSMin","exports","module","Type","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","resolveYamlTimestamp","data","constructYamlTimestamp","match","year","month","day","hour","minute","second","fraction","delta","tz_hour","tz_minute","date","representYamlTimestamp","object","require_merge","__commonJSMin","exports","module","Type","resolveYamlMerge","data","require_binary","__commonJSMin","exports","module","Type","BASE64_MAP","resolveYamlBinary","data","code","idx","bitlen","max","map","constructYamlBinary","tailbits","input","bits","result","representYamlBinary","object","tail","isBinary","obj","require_omap","__commonJSMin","exports","module","Type","_hasOwnProperty","_toString","resolveYamlOmap","data","objectKeys","index","length","pair","pairKey","pairHasKey","object","constructYamlOmap","require_pairs","__commonJSMin","exports","module","Type","_toString","resolveYamlPairs","data","index","length","pair","keys","result","object","constructYamlPairs","require_set","__commonJSMin","exports","module","Type","_hasOwnProperty","resolveYamlSet","data","key","object","constructYamlSet","require_default","__commonJSMin","exports","module","require_loader","__commonJSMin","exports","module","common","YAMLException","makeSnippet","DEFAULT_SCHEMA","_hasOwnProperty","CONTEXT_FLOW_IN","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_IN","CONTEXT_BLOCK_OUT","CHOMPING_CLIP","CHOMPING_STRIP","CHOMPING_KEEP","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","obj","is_EOL","c","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","simpleEscapeCheck","simpleEscapeMap","i","State","input","options","generateError","state","message","mark","throwError","throwWarning","directiveHandlers","name","args","match","major","minor","handle","prefix","captureSegment","start","end","checkJson","_position","_length","_character","_result","mergeMappings","destination","source","overridableKeys","sourceKeys","key","index","quantity","storeMappingPair","keyTag","keyNode","valueNode","startLine","startLineStart","startPos","readLineBreak","ch","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","count","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","readFlowCollection","readNext","_pos","_tag","_anchor","terminator","isPair","isExplicitPair","isMapping","composeNode","readBlockScalar","folding","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockSequence","detected","readBlockMapping","flowIndent","allowCompact","_keyLine","_keyLineStart","_keyPos","atExplicitKey","readTagProperty","isVerbatim","isNamed","tagHandle","tagName","readAnchorProperty","readAlias","alias","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","indentStatus","atNewLine","hasContent","typeIndex","typeQuantity","typeList","type","blockIndent","readDocument","documentStart","directiveName","directiveArgs","hasDirectives","loadDocuments","nullpos","loadAll","iterator","documents","length","load","require_dumper","__commonJSMin","exports","module","common","YAMLException","DEFAULT_SCHEMA","_toString","_hasOwnProperty","CHAR_BOM","CHAR_TAB","CHAR_LINE_FEED","CHAR_CARRIAGE_RETURN","CHAR_SPACE","CHAR_EXCLAMATION","CHAR_DOUBLE_QUOTE","CHAR_SHARP","CHAR_PERCENT","CHAR_AMPERSAND","CHAR_SINGLE_QUOTE","CHAR_ASTERISK","CHAR_COMMA","CHAR_MINUS","CHAR_COLON","CHAR_EQUALS","CHAR_GREATER_THAN","CHAR_QUESTION","CHAR_COMMERCIAL_AT","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_GRAVE_ACCENT","CHAR_LEFT_CURLY_BRACKET","CHAR_VERTICAL_LINE","CHAR_RIGHT_CURLY_BRACKET","ESCAPE_SEQUENCES","DEPRECATED_BOOLEANS_SYNTAX","DEPRECATED_BASE60_SYNTAX","compileStyleMap","schema","map","result","keys","index","length","tag","style","type","encodeHex","character","string","handle","QUOTING_TYPE_SINGLE","QUOTING_TYPE_DOUBLE","State","options","indentString","spaces","ind","position","next","line","generateNextLine","state","level","testImplicitResolving","str","isWhitespace","c","isPrintable","isNsCharOrWhitespace","isPlainSafe","prev","inblock","cIsNsCharOrWhitespace","cIsNsChar","isPlainSafeFirst","isPlainSafeLast","codePointAt","pos","first","second","needIndentIndicator","leadingSpaceRe","STYLE_PLAIN","STYLE_SINGLE","STYLE_LITERAL","STYLE_FOLDED","STYLE_DOUBLE","chooseScalarStyle","singleLineOnly","indentPerLevel","lineWidth","testAmbiguousType","quotingType","forceQuotes","i","char","prevChar","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","writeScalar","iskey","indent","testAmbiguity","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","clip","keep","chomp","width","lineRe","nextLF","foldLine","prevMoreIndented","moreIndented","match","prefix","breakRe","start","end","curr","escapeSeq","writeFlowSequence","object","_result","_tag","value","writeNode","writeBlockSequence","compact","writeFlowMapping","objectKeyList","objectKey","objectValue","pairBuffer","writeBlockMapping","explicitPair","detectType","explicit","typeList","block","isblockseq","tagStr","objectOrArray","duplicateIndex","duplicate","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","dump","input","require_js_yaml","__commonJSMin","exports","module","loader","dumper","renamed","from","to","fs_1","promises_1","path_1","__importDefault","url_1","importFresh","loadJsSync","filepath","exports","loadJs","href","error","requireError","parseJson","loadJson","content","yaml","loadYaml","typescript","loadTsSync","compiledFilepath","config","resolveTsConfig","loadTs","transpiledContent","directory","filePath","fileName","path","loaders_1","getDefaultSearchPlaces","moduleName","exports","getDefaultSearchPlacesSync","require_env_paths","__commonJSMin","exports","module","path","os","homedir","tmpdir","env","macos","name","library","windows","appData","localAppData","linux","username","envPaths","options","fs_1","__importStar","emplace","map","key","fn","cached","result","exports","getPropertyByPath","source","path","previous","removeUndefinedValuesFromObject","options","value","isDirectory","e","isDirectorySync","env_paths_1","__importDefault","os_1","path_1","util_js_1","ExplorerBase","#loadingMetaConfig","options","#validateConfig","value","config","place","extension","loader","getExtensionDescription","filepath","packageProp","containingFilePath","imports","importStack","fileDirectory","importPath","fullPath","idx","path","i","dir","globalConfigPlaces","startDir","stopDir","currentDir","parentDir","exports","exports","objToString","isPlainObject","obj","merge","target","source","options","key","newValue","mergeAll","objects","promises_1","__importDefault","path_1","defaults_1","ExplorerBase_js_1","merge_1","util_js_1","Explorer","filepath","load","#readConfiguration","from","config","dirs","#getDirs","firstDirIter","currentDir","search","result","error","nextDirIter","importStack","contents","#loadConfigFileWithImports","loadedContent","#loadConfiguration","fileDirectory","imports","ownContent","importPaths","newImportStack","importedConfigs","importPath","fullPath","extension","loader","loadedContents","#fileExists","path","startDir","ext","packageFile","parentDir","exports","fs_1","__importDefault","path_1","defaults_1","ExplorerBase_js_1","merge_1","util_js_1","ExplorerSync","filepath","load","#readConfiguration","from","config","dirs","#getDirs","firstDirIter","currentDir","search","result","error","nextDirIter","importStack","contents","#loadConfigFileWithImports","loadedContent","#loadConfiguration","fileDirectory","imports","ownContent","importPaths","newImportStack","importedConfigs","importPath","fullPath","extension","loader","loadedContents","#fileExists","path","startDir","ext","packageFile","parentDir","exports","defaults_1","exports","Explorer_js_1","ExplorerSync_js_1","util_1","identity","x","getUserDefinedOptionsFromMetaConfig","metaConfig","overrideOptions","getResolvedSearchPlaces","moduleName","toolDefinedSearchPlaces","userConfiguredOptions","userConfiguredSearchPlaces","path","mergeOptionsBase","defaults","options","userDefinedConfig","validateOptions","mergeOptions","mergeOptionsSync","cosmiconfig","normalizedOptions","explorer","cosmiconfigSync","explorerSync","require_ms","__commonJSMin","exports","module","s","m","h","d","w","y","val","options","type","parse","fmtLong","fmtShort","str","match","n","ms","msAbs","plural","name","isPlural","require_common","__commonJSMin","exports","module","setup","env","createDebug","coerce","disable","enable","enabled","destroy","key","selectColor","namespace","hash","i","prevTime","enableOverride","namespacesCache","enabledCache","debug","args","self","curr","ms","index","match","format","formatter","val","extend","v","delimiter","newDebug","namespaces","split","len","toNamespace","name","regexp","require_browser","__commonJSMin","exports","module","formatArgs","save","load","useColors","localstorage","warned","m","args","c","index","lastC","match","namespaces","r","formatters","v","error","require_node","__commonJSMin","exports","module","tty","util","init","log","formatArgs","save","load","useColors","supportsColor","key","obj","prop","_","k","val","args","name","c","colorCode","prefix","getDate","namespaces","debug","keys","i","formatters","v","str","require_src","__commonJSMin","exports","module","require_process_nextick_args","__commonJSMin","exports","module","nextTick","fn","arg1","arg2","arg3","len","args","i","require_isarray","__commonJSMin","exports","module","toString","arr","require_stream","__commonJSMin","exports","module","require_safe_buffer","__commonJSMin","exports","module","buffer","Buffer","copyProps","src","dst","key","SafeBuffer","arg","encodingOrOffset","length","size","fill","encoding","buf","require_util","__commonJSMin","exports","isArray","arg","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","re","isObject","isDate","d","isError","isFunction","isPrimitive","o","require_inherits_browser","__commonJSMin","exports","module","ctor","superCtor","TempCtor","require_inherits","__commonJSMin","exports","module","util","require_BufferList","__commonJSMin","exports","module","_classCallCheck","instance","Constructor","Buffer","util","copyBuffer","src","target","offset","BufferList","v","entry","ret","s","p","n","i","obj","require_destroy","__commonJSMin","exports","module","pna","destroy","err","cb","_this","readableDestroyed","writableDestroyed","emitErrorNT","undestroy","self","require_node","__commonJSMin","exports","module","require_stream_writable","__commonJSMin","exports","module","pna","Writable","CorkedRequest","state","_this","onCorkedFinish","asyncWrite","Duplex","WritableState","util","internalUtil","Stream","Buffer","OurUint8Array","_uint8ArrayToBuffer","chunk","_isUint8Array","obj","destroyImpl","nop","options","stream","isDuplex","hwm","writableHwm","defaultHwm","noDecode","er","onwrite","current","out","realHasInstance","object","writeAfterEnd","cb","validChunk","valid","encoding","ret","isBuf","writeOrBuffer","clearBuffer","decodeChunk","newChunk","len","last","doWrite","writev","onwriteError","sync","finishMaybe","onwriteStateUpdate","finished","needFinish","afterWrite","onwriteDrain","entry","l","buffer","holder","count","allBuffers","endWritable","callFinal","err","prefinish","need","corkReq","value","require_stream_duplex","__commonJSMin","exports","module","pna","objectKeys","obj","keys","key","Duplex","util","Readable","Writable","v","method","options","onend","onEndNT","self","value","err","cb","require_string_decoder","__commonJSMin","exports","Buffer","isEncoding","encoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","StringDecoder","nb","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","buf","r","i","utf8End","utf8Text","utf8CheckByte","byte","utf8CheckIncomplete","self","j","utf8CheckExtraBytes","p","total","end","c","n","require_stream_readable","__commonJSMin","exports","module","pna","Readable","isArray","Duplex","ReadableState","EE","EElistenerCount","emitter","type","Stream","Buffer","OurUint8Array","_uint8ArrayToBuffer","chunk","_isUint8Array","obj","util","debugUtil","debug","BufferList","destroyImpl","StringDecoder","kProxyEvents","prependListener","event","fn","options","stream","isDuplex","hwm","readableHwm","defaultHwm","value","err","cb","encoding","state","skipChunkCheck","readableAddChunk","addToFront","onEofChunk","er","chunkInvalid","addChunk","maybeReadMore","needMoreData","emitReadable","enc","MAX_HWM","computeNewHighWaterMark","n","howMuchToRead","nOrig","endReadable","doRead","ret","fromList","emitReadable_","flow","maybeReadMore_","len","dest","pipeOpts","src","doEnd","endFn","onend","unpipe","onunpipe","readable","unpipeInfo","cleanup","ondrain","pipeOnDrain","cleanedUp","onclose","onfinish","onerror","ondata","increasedAwaitDrain","indexOf","dests","i","index","ev","res","nReadingNextTick","self","resume","resume_","_this","paused","method","fromListPartial","list","hasStrings","copyFromBufferString","copyFromBuffer","p","c","str","nb","buf","endReadableNT","xs","x","l","require_stream_transform","__commonJSMin","exports","module","Transform","Duplex","util","afterTransform","er","data","ts","cb","rs","options","prefinish","_this","done","chunk","encoding","n","err","_this2","err2","stream","require_stream_passthrough","__commonJSMin","exports","module","PassThrough","Transform","util","options","chunk","encoding","cb","require_readable","__commonJSMin","exports","module","Stream","require_immutable","__commonJSMin","exports","module","extend","hasOwnProperty","target","i","source","key","require_through2","__commonJSMin","exports","module","Transform","inherits","xtend","DestroyableTransform","opts","err","self","noop","chunk","enc","callback","through2","construct","options","transform","flush","t2","Through2","override","require_split2","__commonJSMin","exports","module","through","transform","chunk","enc","cb","list","remaining","i","push","flush","self","val","noop","incoming","split","matcher","mapper","options","stream","require_traverse","__commonJSMin","exports","module","toS","obj","isDate","isRegExp","isError","isBoolean","isNumber","isString","isArray","xs","forEach","fn","i","objectKeys","res","key","propertyIsEnumerable","getOwnPropertySymbols","ownEnumerableKeys","symbols","hasOwnProperty","copy","src","dst","proto","T","walk","root","cb","immutable","path","parents","alive","walker","node_","node","modifiers","keepGoing","state","x","stopHere","f","updateState","ret","child","Traverse","ps","value","init","skip","acc","nodes","clone","traverse","args","t","require_fields","__commonJSMin","exports","traverse","fields","node","typed","require_src","__commonJSMin","exports","argify","key","value","single","options","object","arg","args","require_duplexer2","__commonJSMin","exports","module","stream","DuplexWrapper","options","writable","readable","self","err","input","encoding","done","buf","reads","require_stream_combiner2","__commonJSMin","exports","module","PassThrough","Readable","duplexer","streams","combine","opts","i","wrap","first","last","thepipe","recurse","onerror","args","tr","require_src","__commonJSMin","exports","module","createErr","code","stderr","child","errFactory","chunk","require_src","__commonJSMin","exports","spawn","through","split","traverse","fields","toArgv","combine","fwd","END","FIELD","format","fieldMap","field","trim","chunk","enc","callback","log","args","options","code","stderr","config","map","parsed","index","value","require_buffer_stream","__commonJSMin","exports","module","PassThroughStream","options","array","encoding","isBuffer","objectMode","stream","length","chunks","chunk","require_get_stream","__commonJSMin","exports","module","BufferConstants","stream","promisify","bufferStream","streamPipelinePromisified","MaxBufferError","getStream","inputStream","options","maxBuffer","resolve","reject","rejectPromise","error","require_resolve_from","__commonJSMin","exports","module","path","Module","fs","resolveFrom","fromDirectory","moduleId","silent","error","fromFile","resolveFileName","perf","warned","PROCESS","emitWarning","msg","type","code","fn","AC","AS","_","warnACPolyfill","reason","printACPolyfillWarning","shouldWarn","TYPE","isPosInt","n","getUintArray","max","ZeroArray","size","Stack","_Stack","#constructing","HeapCls","s","LRUCache","_LRUCache","#max","#maxSize","#dispose","#disposeAfter","#fetchMethod","#memoMethod","#size","#calculatedSize","#keyMap","#keyList","#valList","#next","#prev","#head","#tail","#free","#disposed","#sizes","#starts","#ttls","#hasDispose","#hasFetchMethod","#hasDisposeAfter","c","p","#isBackgroundFetch","k","index","options","context","#backgroundFetch","#moveToTail","#indexes","#rindexes","#isStale","ttl","ttlResolution","ttlAutopurge","updateAgeOnGet","updateAgeOnHas","allowStale","dispose","disposeAfter","noDisposeOnSet","noUpdateTTL","maxSize","maxEntrySize","sizeCalculation","fetchMethod","memoMethod","noDeleteOnFetchRejection","noDeleteOnStaleGet","allowStaleOnFetchRejection","allowStaleOnFetchAbort","ignoreFetchAbort","UintArray","#initializeSizeTracking","#initializeTTLTracking","key","ttls","starts","#setItemTTL","start","t","#delete","#updateItemAge","#statusTTL","status","cachedNow","getNow","age","sizes","#removeItemSize","#requireSize","v","#addItemSize","#evict","_i","_s","_st","_k","_v","i","#isValidIndex","getOptions","value","thisp","deleted","entry","remain","arr","setOptions","oldVal","oldValue","dt","task","val","free","head","hasOptions","peekOptions","ac","signal","fetchOpts","cb","updateCache","aborted","ignoreAbort","fetchFail","bf","eb","er","allowStaleAborted","noDelete","pcall","res","rej","fmp","b","fetchOptions","forceRefresh","stale","isStale","staleVal","memoOptions","vv","fetching","#connect","#clear","pi","ni","exports","require_hosts","__commonJSMin","exports","module","maybeJoin","args","arg","maybeEncode","formatHashFragment","f","defaults","domain","user","project","committish","editpath","path","treepath","fragment","hashformat","blobpath","auth","type","hosts","url","aux","segments","name","host","require_parse_url","__commonJSMin","exports","module","url","lastIndexOfBefore","str","char","beforeChar","startPosition","safeUrl","u","correctProtocol","arg","protocols","firstColon","proto","firstAt","correctUrl","giturl","lastColonBeforeHash","withProtocol","require_from_url","__commonJSMin","exports","module","parseUrl","isGitHubShorthand","arg","firstHash","firstSlash","secondSlash","firstColon","firstSpace","firstAt","spaceOnlyAfterHash","atOnlyAfterHash","colonOnlyAfterHash","secondSlashOnlyAfterHash","hasSlash","doesNotEndWithSlash","doesNotStartWithDot","giturl","opts","gitHosts","protocols","correctedUrl","parsed","gitHostShortcut","gitHostDomain","gitHostName","gitHostInfo","auth","committish","user","project","defaultRepresentation","pathname","lastSlash","segments","err","require_lib","__commonJSMin","exports","module","LRUCache","hosts","fromUrl","parseUrl","cache","GitHost","_GitHost","type","user","auth","project","committish","defaultRepresentation","opts","#gitHosts","#protocols","name","host","giturl","key","hostArgs","url","#fill","template","options","result","path","args","require_utils","__commonJSMin","exports","num","node","type","min","max","step","limit","block","n","nodes","acc","args","result","flat","arr","ele","require_stringify","__commonJSMin","exports","module","utils","ast","options","stringify","node","parent","invalidBlock","invalidNode","output","child","require_is_number","__commonJSMin","exports","module","num","require_to_regex_range","__commonJSMin","exports","module","isNumber","toRegexRange","min","max","options","opts","relax","shorthand","capture","wrap","cacheKey","a","b","result","isPadded","hasPadding","state","positives","negatives","newMin","splitToPatterns","collatePatterns","neg","pos","onlyNegative","filterPatterns","onlyPositive","intersected","splitToRanges","nines","zeros","stop","countNines","stops","countZeros","compare","rangeToPattern","start","zipped","zip","digits","pattern","count","i","startDigit","stopDigit","toCharacterClass","tok","ranges","tokens","prev","obj","toQuantifier","padZeros","arr","comparison","prefix","intersection","ele","string","contains","key","val","len","integer","str","value","diff","require_fill_range","__commonJSMin","exports","module","util","toRegexRange","isObject","val","transform","toNumber","value","isValidValue","isNumber","num","zeros","input","index","stringify","start","end","options","pad","maxLength","dash","toMaxLen","negative","toSequence","parts","a","b","prefix","positives","negatives","result","toRange","isNumbers","stop","toRegex","wrap","rangeError","args","invalidRange","invalidStep","step","fillNumbers","descending","startString","endString","stepString","padded","maxLen","format","push","range","fillLetters","min","max","fill","opts","require_compile","__commonJSMin","exports","module","fill","utils","compile","ast","options","walk","node","parent","invalidBlock","invalidNode","invalid","prefix","output","args","range","child","require_expand","__commonJSMin","exports","module","fill","stringify","utils","append","queue","stash","enclose","result","ele","item","value","expand","ast","options","rangeLimit","walk","node","parent","p","q","args","range","block","i","child","require_constants","__commonJSMin","exports","module","require_parse","__commonJSMin","exports","module","stringify","MAX_LENGTH","CHAR_BACKSLASH","CHAR_BACKTICK","CHAR_COMMA","CHAR_DOT","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_LEFT_CURLY_BRACE","CHAR_RIGHT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_DOUBLE_QUOTE","CHAR_SINGLE_QUOTE","CHAR_NO_BREAK_SPACE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","parse","input","options","opts","max","ast","stack","block","prev","brackets","length","index","depth","value","memo","advance","push","node","closed","next","open","brace","type","siblings","before","parent","require_braces","__commonJSMin","exports","module","stringify","compile","expand","parse","braces","input","options","output","pattern","result","require_constants","__commonJSMin","exports","module","path","WIN_SLASH","WIN_NO_SLASH","DOT_LITERAL","PLUS_LITERAL","QMARK_LITERAL","SLASH_LITERAL","ONE_CHAR","QMARK","END_ANCHOR","START_ANCHOR","DOTS_SLASH","NO_DOT","NO_DOTS","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK_NO_DOT","STAR","POSIX_CHARS","WINDOWS_CHARS","POSIX_REGEX_SOURCE","chars","win32","require_utils","__commonJSMin","exports","path","win32","REGEX_BACKSLASH","REGEX_REMOVE_BACKSLASH","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_GLOBAL","val","str","match","segs","options","input","char","lastIdx","idx","state","output","prepend","append","require_scan","__commonJSMin","exports","module","utils","CHAR_ASTERISK","CHAR_AT","CHAR_BACKWARD_SLASH","CHAR_COMMA","CHAR_DOT","CHAR_EXCLAMATION_MARK","CHAR_FORWARD_SLASH","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_PARENTHESES","CHAR_LEFT_SQUARE_BRACKET","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_PARENTHESES","CHAR_RIGHT_SQUARE_BRACKET","isPathSeparator","code","depth","token","scan","input","options","opts","length","scanToEnd","slashes","tokens","parts","str","index","start","lastIndex","isBrace","isBracket","isGlob","isExtglob","isGlobstar","braceEscaped","backslashes","negated","negatedExtglob","finished","braces","prev","eos","peek","advance","next","base","prefix","glob","state","prevIndex","idx","n","i","value","require_parse","__commonJSMin","exports","module","constants","utils","MAX_LENGTH","POSIX_REGEX_SOURCE","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REPLACEMENTS","expandRange","args","options","value","v","syntaxError","type","char","parse","input","opts","max","len","bos","tokens","capture","win32","PLATFORM_CHARS","EXTGLOB_CHARS","DOT_LITERAL","PLUS_LITERAL","SLASH_LITERAL","ONE_CHAR","DOTS_SLASH","NO_DOT","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK","QMARK_NO_DOT","STAR","START_ANCHOR","globstar","nodot","qmarkNoDot","star","state","extglobs","braces","stack","prev","eos","peek","n","advance","remaining","consume","num","append","token","negate","count","increment","decrement","push","tok","isBrace","isExtglob","extglobOpen","output","extglobClose","rest","extglobStar","backslashes","m","esc","chars","first","index","next","match","slashes","inner","idx","pre","posix","extglob","prevValue","escaped","open","brace","arr","range","i","out","toks","t","prior","before","isStart","afterStar","after","end","NO_DOTS","slashDot","create","str","source","require_picomatch","__commonJSMin","exports","module","path","scan","parse","utils","constants","isObject","val","picomatch","glob","options","returnState","fns","input","str","isMatch","state","isState","opts","posix","regex","isIgnored","ignoreOpts","matcher","returnObject","match","output","result","format","patterns","pattern","p","returnOutput","prepend","append","source","parsed","err","require_picomatch","__commonJSMin","exports","module","require_micromatch","__commonJSMin","exports","module","util","braces","picomatch","utils","isEmptyString","val","micromatch","list","patterns","options","omit","keep","items","negatives","onResult","state","i","isMatch","negated","item","matched","matches","p","pattern","str","result","obj","keys","res","key","glob","input","posix","match","v","args","require_escape_string_regexp","__commonJSMin","exports","module","matchOperatorsRe","str","require_color_name","__commonJSMin","exports","module","require_conversions","__commonJSMin","exports","module","cssKeywords","reverseKeywords","key","convert","model","channels","labels","rgb","r","g","b","min","max","delta","h","s","l","rdif","gdif","bdif","v","diff","diffc","c","w","m","y","k","comparativeDistance","x","reversed","currentClosestDistance","currentClosestKeyword","keyword","value","distance","z","xyz","a","hsl","t1","t2","t3","val","i","smin","lmin","sv","hsv","hi","f","p","q","t","vmin","sl","hwb","wh","bl","ratio","n","cmyk","lab","y2","x2","z2","hr","lch","args","ansi","color","mult","rem","integer","string","match","colorString","char","chroma","grayscale","hue","hcg","pure","mg","apple","gray","require_route","__commonJSMin","exports","module","conversions","buildGraph","graph","models","len","i","deriveBFS","fromModel","queue","current","adjacents","adjacent","node","link","from","to","args","wrapConversion","toModel","path","fn","cur","conversion","require_color_convert","__commonJSMin","exports","module","conversions","route","convert","models","wrapRaw","fn","wrappedFn","args","wrapRounded","result","len","i","fromModel","routes","routeModels","toModel","require_ansi_styles","__commonJSMin","exports","module","colorConvert","wrapAnsi16","fn","offset","wrapAnsi256","code","wrapAnsi16m","rgb","assembleStyles","codes","styles","groupName","group","styleName","style","ansi2ansi","n","rgb2rgb","r","g","b","key","suite","require_has_flag","__commonJSMin","exports","module","flag","argv","prefix","pos","terminatorPos","require_supports_color","__commonJSMin","exports","module","os","hasFlag","env","forceColor","translateLevel","level","supportsColor","stream","min","osRelease","sign","version","getSupportLevel","require_templates","__commonJSMin","exports","module","TEMPLATE_REGEX","STYLE_REGEX","STRING_REGEX","ESCAPE_REGEX","ESCAPES","unescape","c","parseArguments","name","args","results","chunks","matches","chunk","m","escape","chr","parseStyle","style","buildStyle","chalk","styles","enabled","layer","current","styleName","tmp","escapeChar","inverse","close","str","errMsg","require_chalk","__commonJSMin","exports","module","escapeStringRegexp","ansiStyles","stdoutColor","template","isSimpleWindowsTerm","levelMapping","skipModels","styles","applyOptions","obj","options","scLevel","Chalk","chalk","args","chalkTag","key","codes","build","model","level","bgModel","proto","_styles","_empty","builder","applyStyle","self","enabled","argsLen","str","a","originalDim","code","strings","parts","require_figures","__commonJSMin","exports","module","escapeStringRegexp","platform","main","win","figures","fn","str","key","require_path_exists","__commonJSMin","exports","module","fs","fp","resolve","err","require_p_try","__commonJSMin","exports","module","cb","resolve","require_p_limit","__commonJSMin","exports","module","pTry","concurrency","queue","activeCount","next","fn","resolve","reject","run","val","err","require_p_locate","__commonJSMin","exports","module","pLimit","EndError","value","finder","el","val","iterable","tester","opts","limit","items","checkLimit","err","require_locate_path","__commonJSMin","exports","module","path","pathExists","pLocate","iterable","opts","el","require_find_up","__commonJSMin","exports","module","path","locatePath","filename","opts","startDir","root","filenames","resolve","find","dir","file","require_polyfills","__commonJSMin","exports","module","constants","origCwd","cwd","platform","chdir","d","patch","fs","patchLchmod","patchLutimes","chownFix","chmodFix","chownFixSync","chmodFixSync","statFix","statFixSync","path","mode","cb","uid","gid","fs$rename","rename","from","to","start","backoff","CB","er","stater","st","fs$read","read","fd","buffer","offset","length","position","callback_","callback","eagCounter","_","__","fs$readSync","err","err2","threw","ret","at","mt","er2","_a","_b","_c","orig","target","chownErOk","options","stats","nonroot","require_legacy_streams","__commonJSMin","exports","module","Stream","legacy","fs","ReadStream","WriteStream","path","options","self","keys","index","length","key","err","fd","require_clone","__commonJSMin","exports","module","clone","getPrototypeOf","obj","copy","key","require_graceful_fs","__commonJSMin","exports","module","fs","polyfills","legacy","clone","util","gracefulQueue","previousSymbol","noop","publishQueue","context","queue","debug","m","fs$close","close","fd","cb","err","resetQueue","fs$closeSync","closeSync","patch","createReadStream","createWriteStream","fs$readFile","readFile","path","options","go$readFile","startTime","enqueue","fs$writeFile","writeFile","data","go$writeFile","fs$appendFile","appendFile","go$appendFile","fs$copyFile","copyFile","src","dest","flags","go$copyFile","fs$readdir","readdir","noReaddirOptionVersions","go$readdir","fs$readdirCallback","files","legStreams","ReadStream","WriteStream","fs$ReadStream","ReadStream$open","fs$WriteStream","WriteStream$open","val","FileReadStream","FileWriteStream","that","open","fs$open","mode","go$open","elem","retry","retryTimer","now","i","fn","args","lastTime","sinceAttempt","sinceStart","desiredDelay","require_strip_bom","__commonJSMin","exports","module","x","require_json_parse_better_errors","__commonJSMin","exports","module","parseJson","txt","reviver","context","e","errorMessage","syntaxErr","errIdx","start","end","require_parse_json","__commonJSMin","exports","module","errorEx","fallback","JSONError","input","reviver","filename","err","jsonErr","require_pify","__commonJSMin","exports","module","processFn","fn","opts","P","args","resolve","reject","err","result","results","i","obj","filter","key","match","pattern","ret","x","require_load_json_file","__commonJSMin","exports","module","path","fs","stripBom","parseJson","pify","parse","data","fp","require_pkg_conf","__commonJSMin","exports","module","path","findUp","loadJsonFile","filepaths","filepath","conf","findNextCwd","pkgPath","addFp","obj","fp","pkgConf","namespace","opts","pkg","newOpts","sync","require_package","__commonJSMin","exports","module","require_types","__commonJSMin","exports","module","figures","require_signale","__commonJSMin","exports","module","util","path","readline","chalk","figures","pkgConf","pkg","defaultTypes","green","grey","red","underline","yellow","isPreviousLogInteractive","defaults","namespace","Signale","_Signale","options","type","_","error","stack","callers","x","firstExternalFilePath","configObj","then","_types","y","level","standard","custom","types","message","_secrets","safeMessage","secret","stream","str","meta","item","suffix","prefix","args","msg","additional","signale","label","name","rest","streams","logLevel","messageObj","targetLength","secrets","is","span","require_signale","__commonJSMin","exports","module","Signale","createRequire","_getDefaults","_defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","html","encode","unescapeTest","unescape","_","n","caret","edit","regex","opt","source","obj","name","val","valSource","cleanUrl","href","noopTest","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","rtrim","c","invert","l","suffLen","currChar","findClosingBracket","b","level","i","outputLink","cap","link","raw","lexer","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","_Tokenizer","options","src","trimmed","top","tokens","bull","isordered","list","itemRegex","itemContents","endsWithBlankLine","endEarly","line","t","nextLine","indent","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","istask","ischecked","spacers","hasMultipleLineBreaks","tag","headers","aligns","rows","item","align","header","cell","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","linkString","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","newline","blockCode","fences","hr","heading","bullet","lheading","_paragraph","blockText","_blockLabel","def","_tag","_comment","paragraph","blockquote","blockNormal","gfmTable","blockGfm","blockPedantic","inlineCode","br","inlineText","_punctuation","punctuation","blockSkip","emStrongLDelim","emStrongRDelimAst","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","_inlineLabel","reflink","nolink","reflinkSearch","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","block","inline","_Lexer","__Lexer","rules","next","leading","tabs","lastToken","cutSrc","lastParagraphClipped","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","code","infostring","lang","quote","body","ordered","start","type","startatt","task","checked","content","flags","cleanHref","out","_TextRenderer","_Parser","__Parser","genericToken","ret","headingToken","codeToken","tableToken","j","k","blockquoteToken","listToken","loose","itemBody","checkbox","htmlToken","paragraphToken","textToken","renderer","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","_Hooks","markdown","Marked","#parseMarkdown","args","callback","values","childTokens","extensions","pack","opts","ext","prevRenderer","extLevel","prop","rendererProp","rendererFunc","tokenizer","tokenizerProp","tokenizerFunc","prevTokenizer","hooks","hooksProp","hooksFunc","prevHook","arg","walkTokens","packWalktokens","parser","origOpt","throwError","#onError","e","silent","async","msg","markedInstance","marked","setOptions","use","parseInline","parser","_Parser","lexer","_Lexer","execaSync","import_semver","dirname","fileURLToPath","import_cosmiconfig","import_debug","createRequire","extname","resolve","fileURLToPath","pathToFileURL","assert","statSync","realpathSync","process","URL","fileURLToPath","pathToFileURL","path","builtinModules","fileURLToPath","fs","path","fileURLToPath","v8","assert","format","inspect","own","classRegExp","kTypes","codes","formatList","array","type","messages","nodeInternalPrefix","userStackTraceLimit","createError","name","expected","actual","assert","message","types","instances","other","value","pos","determineSpecificType","request","reason","base","path","packagePath","key","target","isImport","relatedError","exactUrl","specifier","subpath","extension","inspected","sym","constructor","makeNodeErrorWithCode","Base","NodeError","parameters","limit","isErrorStackTraceLimitWritable","error","getMessage","captureLargerStackTrace","v8","desc","hideStackFrames","wrappedFunction","hidden","stackTraceLimitIsWritable","self","regex","expectedLength","hasOwnProperty","ERR_INVALID_PACKAGE_CONFIG","codes","cache","read","jsonPath","base","specifier","existing","string","fs","path","error","exception","result","parsed","error_","cause","fileURLToPath","getPackageScopeConfig","resolved","packageJSONUrl","packageConfig","lastPackageJSONUrl","getPackageType","url","ERR_UNKNOWN_FILE_EXTENSION","codes","hasOwnProperty","extensionFormatMap","mimeToFormat","mime","protocolHandlers","getDataProtocolModuleFormat","getFileProtocolModuleFormat","getHttpProtocolModuleFormat","parsed","extname","url","pathname","index","code","_context","ignoreErrors","value","packageType","getPackageType","format","filepath","fileURLToPath","defaultGetFormatWithoutErrors","context","protocol","RegExpPrototypeSymbolReplace","ERR_NETWORK_IMPORT_DISALLOWED","ERR_INVALID_MODULE_SPECIFIER","ERR_INVALID_PACKAGE_CONFIG","ERR_INVALID_PACKAGE_TARGET","ERR_MODULE_NOT_FOUND","ERR_PACKAGE_IMPORT_NOT_DEFINED","ERR_PACKAGE_PATH_NOT_EXPORTED","ERR_UNSUPPORTED_DIR_IMPORT","ERR_UNSUPPORTED_RESOLVE_REQUEST","codes","own","invalidSegmentRegEx","deprecatedInvalidSegmentRegEx","invalidPackageNameRegEx","patternRegEx","encodedSeparatorRegEx","emittedPackageWarnings","doubleSlashRegEx","emitInvalidSegmentDeprecation","target","request","match","packageJsonUrl","internal","base","isTarget","process","pjsonPath","fileURLToPath","double","emitLegacyIndexDeprecation","url","main","defaultGetFormatWithoutErrors","urlPath","packagePath","URL","basePath","path","tryStatSync","statSync","fileExists","stats","isFile","legacyMainResolve","packageConfig","guess","tries","i","finalizeResolution","resolved","preserveSymlinks","filePath","error","cause","real","realpathSync","search","hash","pathToFileURL","importNotDefined","specifier","exportsNotFound","subpath","throwInvalidSubpath","reason","invalidPackageTarget","resolvePackageTargetString","pattern","isPathMap","conditions","isURL","exportTarget","packageResolve","resolvedTarget","resolvedPath","isArrayIndex","key","keyNumber","resolvePackageTarget","packageSubpath","targetList","lastException","targetItem","resolveResult","exception","keys","conditionalTarget","isConditionalExportsMainSugar","exports","isConditionalSugar","keyIndex","currentIsConditionalSugar","emitTrailingSlashPatternDeprecation","pjsonUrl","packageExportsResolve","bestMatch","bestMatchSubpath","patternIndex","patternTrailer","patternKeyCompare","a","b","aPatternIndex","bPatternIndex","baseLengthA","baseLengthB","packageImportsResolve","name","getPackageScopeConfig","imports","parsePackageName","separatorIndex","validPackageName","isScoped","packageName","builtinModules","packageJsonPath","lastPath","stat","read","isRelativeSpecifier","shouldBeTreatedAsRelativeOrAbsolutePath","moduleResolve","protocol","isRemote","error_","assert","debug","createDebug","require","createRequire","EXTENSIONS","resolveToFileURL","paths","pathToFileURL","resolve","tryResolve","moduleId","baseURL","moduleResolve","error","tryImport","fileURL","filePath","fileURLToPath","asJSON","extname","importFrom","fromDirectory","loadedModule","localModulePath","ext","parentModulePath","errorString","import_debug","import_git_log_parser","import_get_stream","import_debug","execa","debug","debugGit","gitLogParser","import_semver","createRequire","require","createRequire","pkg","homepage","dirname","fileURLToPath","import_resolve_from","__dirname","dirname","fileURLToPath","import_debug","debug","debugPlugins","debug","debugConfig","__dirname","dirname","fileURLToPath","import_semver","import_debug","debug","debugCommits","import_semver","import_semver","import_semver","import_hosted_git_info","import_debug","debug","debugAuthUrl","pEachSeries","iterable","iterator","index","value","import_semver","import_micromatch","import_semver","import_debug","debug","debugTags","import_signale","Signale","signale","require","createRequire","pkg","execa","IS_REGCTL_AVAILABLE","parseConfig","config","result","image","name","value","getBaseImage","input","p","isPreRelease","context","getMajorAndMinorPart","version","parts","getTagTasks","outputBase","major","minor","channel","getUrlFromImage","couldBeAHostname","exec","file","args","execa","error","isRegCtlAvailable","tagImage","output","pushImage","copyImage","publish","pluginConfig","tasks","task","firstTask","lib_default"]}
|