ocx 1.0.8 → 1.0.10

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/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/error.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/argument.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/help.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/option.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/suggestSimilar.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/command.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/index.js", "../../../node_modules/.bun/ansis@4.2.0/node_modules/ansis/index.cjs", "../../../node_modules/.bun/cli-spinners@2.9.2/node_modules/cli-spinners/index.js", "../../../node_modules/.bun/fuzzysort@3.1.0/node_modules/fuzzysort/fuzzysort.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/esm.mjs", "../src/commands/add.ts", "../../../node_modules/.bun/@antfu+ni@28.0.0/node_modules/@antfu/ni/dist/shared/ni.coPIfvxW.mjs", "../../../node_modules/.bun/ansis@4.2.0/node_modules/ansis/index.mjs", "../../../node_modules/.bun/package-manager-detector@1.6.0/node_modules/package-manager-detector/dist/commands.mjs", "../../../node_modules/.bun/package-manager-detector@1.6.0/node_modules/package-manager-detector/dist/constants.mjs", "../../../node_modules/.bun/package-manager-detector@1.6.0/node_modules/package-manager-detector/dist/detect.mjs", "../../../node_modules/.bun/tinyexec@1.0.2/node_modules/tinyexec/dist/main.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.js", "../src/utils/errors.ts", "../src/schemas/registry.ts", "../src/registry/fetcher.ts", "../../../node_modules/.bun/remeda@2.33.0/node_modules/remeda/dist/lazyDataLastImpl-DtF3cihj.js", "../../../node_modules/.bun/remeda@2.33.0/node_modules/remeda/dist/purry-GjwKKIlp.js", "../../../node_modules/.bun/remeda@2.33.0/node_modules/remeda/dist/isPlainObject.js", "../../../node_modules/.bun/remeda@2.33.0/node_modules/remeda/dist/mergeDeep.js", "../src/registry/resolver.ts", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/string-intern.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/format.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/parser.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/edit.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/main.js", "../src/schemas/config.ts", "../src/updaters/update-opencode-config.ts", "../src/utils/env.ts", "../../../node_modules/.bun/kleur@4.1.5/node_modules/kleur/index.mjs", "../src/utils/logger.ts", "../src/utils/handle-error.ts", "../src/utils/json-output.ts", "../../../node_modules/.bun/ora@8.2.0/node_modules/ora/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/utilities.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/index.js", "../../../node_modules/.bun/cli-cursor@5.0.0/node_modules/cli-cursor/index.js", "../../../node_modules/.bun/restore-cursor@5.1.0/node_modules/restore-cursor/index.js", "../../../node_modules/.bun/mimic-function@5.0.1/node_modules/mimic-function/index.js", "../../../node_modules/.bun/onetime@7.0.0/node_modules/onetime/index.js", "../../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js", "../../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js", "../../../node_modules/.bun/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js", "../../../node_modules/.bun/log-symbols@6.0.0/node_modules/log-symbols/index.js", "../../../node_modules/.bun/ansi-regex@6.2.2/node_modules/ansi-regex/index.js", "../../../node_modules/.bun/strip-ansi@7.1.2/node_modules/strip-ansi/index.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js", "../../../node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs", "../../../node_modules/.bun/string-width@7.2.0/node_modules/string-width/index.js", "../../../node_modules/.bun/is-interactive@2.0.0/node_modules/is-interactive/index.js", "../../../node_modules/.bun/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js", "../../../node_modules/.bun/stdin-discarder@0.2.2/node_modules/stdin-discarder/index.js", "../src/utils/spinner.ts", "../src/commands/build.ts", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/base.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/character.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/util/string.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/word.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/line.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/sentence.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/css.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/json.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/array.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/patch/create.js", "../src/commands/diff.ts", "../src/commands/init.ts", "../src/constants.ts", "../src/commands/registry.ts", "../src/commands/search.ts", "../src/index.ts"],
3
+ "sources": ["../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/error.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/argument.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/help.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/option.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/suggestSimilar.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/command.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/index.js", "../../../node_modules/.bun/cli-spinners@2.9.2/node_modules/cli-spinners/index.js", "../../../node_modules/.bun/fuzzysort@3.1.0/node_modules/fuzzysort/fuzzysort.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/esm.mjs", "../src/commands/add.ts", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.js", "../src/utils/errors.ts", "../src/schemas/registry.ts", "../src/registry/fetcher.ts", "../../../node_modules/.bun/remeda@2.33.0/node_modules/remeda/dist/lazyDataLastImpl-DtF3cihj.js", "../../../node_modules/.bun/remeda@2.33.0/node_modules/remeda/dist/purry-GjwKKIlp.js", "../../../node_modules/.bun/remeda@2.33.0/node_modules/remeda/dist/isPlainObject.js", "../../../node_modules/.bun/remeda@2.33.0/node_modules/remeda/dist/mergeDeep.js", "../src/registry/resolver.ts", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/string-intern.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/format.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/parser.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/edit.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/main.js", "../src/schemas/config.ts", "../src/updaters/update-opencode-config.ts", "../src/utils/env.ts", "../../../node_modules/.bun/kleur@4.1.5/node_modules/kleur/index.mjs", "../src/utils/logger.ts", "../src/utils/handle-error.ts", "../src/utils/json-output.ts", "../../../node_modules/.bun/ora@8.2.0/node_modules/ora/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/utilities.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/index.js", "../../../node_modules/.bun/cli-cursor@5.0.0/node_modules/cli-cursor/index.js", "../../../node_modules/.bun/restore-cursor@5.1.0/node_modules/restore-cursor/index.js", "../../../node_modules/.bun/mimic-function@5.0.1/node_modules/mimic-function/index.js", "../../../node_modules/.bun/onetime@7.0.0/node_modules/onetime/index.js", "../../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js", "../../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js", "../../../node_modules/.bun/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js", "../../../node_modules/.bun/log-symbols@6.0.0/node_modules/log-symbols/index.js", "../../../node_modules/.bun/ansi-regex@6.2.2/node_modules/ansi-regex/index.js", "../../../node_modules/.bun/strip-ansi@7.1.2/node_modules/strip-ansi/index.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js", "../../../node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs", "../../../node_modules/.bun/string-width@7.2.0/node_modules/string-width/index.js", "../../../node_modules/.bun/is-interactive@2.0.0/node_modules/is-interactive/index.js", "../../../node_modules/.bun/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js", "../../../node_modules/.bun/stdin-discarder@0.2.2/node_modules/stdin-discarder/index.js", "../src/utils/spinner.ts", "../src/commands/build.ts", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/base.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/character.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/util/string.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/word.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/line.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/sentence.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/css.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/json.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/array.js", "../../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/patch/create.js", "../src/commands/diff.ts", "../src/commands/init.ts", "../src/constants.ts", "../src/commands/registry.ts", "../src/commands/search.ts", "../src/index.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * CommanderError class\n */\nclass CommanderError extends Error {\n /**\n * Constructs the CommanderError class\n * @param {number} exitCode suggested exit code which could be used with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n */\n constructor(exitCode, code, message) {\n super(message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n this.code = code;\n this.exitCode = exitCode;\n this.nestedError = undefined;\n }\n}\n\n/**\n * InvalidArgumentError class\n */\nclass InvalidArgumentError extends CommanderError {\n /**\n * Constructs the InvalidArgumentError class\n * @param {string} [message] explanation of why argument is invalid\n */\n constructor(message) {\n super(1, 'commander.invalidArgument', message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n }\n}\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\n",
6
6
  "const { InvalidArgumentError } = require('./error.js');\n\nclass Argument {\n /**\n * Initialize a new command argument with the given name and description.\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @param {string} name\n * @param {string} [description]\n */\n\n constructor(name, description) {\n this.description = description || '';\n this.variadic = false;\n this.parseArg = undefined;\n this.defaultValue = undefined;\n this.defaultValueDescription = undefined;\n this.argChoices = undefined;\n\n switch (name[0]) {\n case '<': // e.g. <required>\n this.required = true;\n this._name = name.slice(1, -1);\n break;\n case '[': // e.g. [optional]\n this.required = false;\n this._name = name.slice(1, -1);\n break;\n default:\n this.required = true;\n this._name = name;\n break;\n }\n\n if (this._name.endsWith('...')) {\n this.variadic = true;\n this._name = this._name.slice(0, -3);\n }\n }\n\n /**\n * Return argument name.\n *\n * @return {string}\n */\n\n name() {\n return this._name;\n }\n\n /**\n * @package\n */\n\n _collectValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n previous.push(value);\n return previous;\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Argument}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI command arguments into argument values.\n *\n * @param {Function} [fn]\n * @return {Argument}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Only allow argument value to be one of choices.\n *\n * @param {string[]} values\n * @return {Argument}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._collectValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Make argument required.\n *\n * @returns {Argument}\n */\n argRequired() {\n this.required = true;\n return this;\n }\n\n /**\n * Make argument optional.\n *\n * @returns {Argument}\n */\n argOptional() {\n this.required = false;\n return this;\n }\n}\n\n/**\n * Takes an argument and returns its human readable equivalent for help usage.\n *\n * @param {Argument} arg\n * @return {string}\n * @private\n */\n\nfunction humanReadableArgName(arg) {\n const nameOutput = arg.name() + (arg.variadic === true ? '...' : '');\n\n return arg.required ? '<' + nameOutput + '>' : '[' + nameOutput + ']';\n}\n\nexports.Argument = Argument;\nexports.humanReadableArgName = humanReadableArgName;\n",
@@ -9,17 +9,10 @@
9
9
  "const maxDistance = 3;\n\nfunction editDistance(a, b) {\n // https://en.wikipedia.org/wiki/Damerau–Levenshtein_distance\n // Calculating optimal string alignment distance, no substring is edited more than once.\n // (Simple implementation.)\n\n // Quick early exit, return worst case.\n if (Math.abs(a.length - b.length) > maxDistance)\n return Math.max(a.length, b.length);\n\n // distance between prefix substrings of a and b\n const d = [];\n\n // pure deletions turn a into empty string\n for (let i = 0; i <= a.length; i++) {\n d[i] = [i];\n }\n // pure insertions turn empty string into b\n for (let j = 0; j <= b.length; j++) {\n d[0][j] = j;\n }\n\n // fill matrix\n for (let j = 1; j <= b.length; j++) {\n for (let i = 1; i <= a.length; i++) {\n let cost = 1;\n if (a[i - 1] === b[j - 1]) {\n cost = 0;\n } else {\n cost = 1;\n }\n d[i][j] = Math.min(\n d[i - 1][j] + 1, // deletion\n d[i][j - 1] + 1, // insertion\n d[i - 1][j - 1] + cost, // substitution\n );\n // transposition\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1);\n }\n }\n }\n\n return d[a.length][b.length];\n}\n\n/**\n * Find close matches, restricted to same number of edits.\n *\n * @param {string} word\n * @param {string[]} candidates\n * @returns {string}\n */\n\nfunction suggestSimilar(word, candidates) {\n if (!candidates || candidates.length === 0) return '';\n // remove possible duplicates\n candidates = Array.from(new Set(candidates));\n\n const searchingOptions = word.startsWith('--');\n if (searchingOptions) {\n word = word.slice(2);\n candidates = candidates.map((candidate) => candidate.slice(2));\n }\n\n let similar = [];\n let bestDistance = maxDistance;\n const minSimilarity = 0.4;\n candidates.forEach((candidate) => {\n if (candidate.length <= 1) return; // no one character guesses\n\n const distance = editDistance(word, candidate);\n const length = Math.max(word.length, candidate.length);\n const similarity = (length - distance) / length;\n if (similarity > minSimilarity) {\n if (distance < bestDistance) {\n // better edit distance, throw away previous worse matches\n bestDistance = distance;\n similar = [candidate];\n } else if (distance === bestDistance) {\n similar.push(candidate);\n }\n }\n });\n\n similar.sort((a, b) => a.localeCompare(b));\n if (searchingOptions) {\n similar = similar.map((candidate) => `--${candidate}`);\n }\n\n if (similar.length > 1) {\n return `\\n(Did you mean one of ${similar.join(', ')}?)`;\n }\n if (similar.length === 1) {\n return `\\n(Did you mean ${similar[0]}?)`;\n }\n return '';\n}\n\nexports.suggestSimilar = suggestSimilar;\n",
10
10
  "const EventEmitter = require('node:events').EventEmitter;\nconst childProcess = require('node:child_process');\nconst path = require('node:path');\nconst fs = require('node:fs');\nconst process = require('node:process');\n\nconst { Argument, humanReadableArgName } = require('./argument.js');\nconst { CommanderError } = require('./error.js');\nconst { Help, stripColor } = require('./help.js');\nconst { Option, DualOptions } = require('./option.js');\nconst { suggestSimilar } = require('./suggestSimilar');\n\nclass Command extends EventEmitter {\n /**\n * Initialize a new `Command`.\n *\n * @param {string} [name]\n */\n\n constructor(name) {\n super();\n /** @type {Command[]} */\n this.commands = [];\n /** @type {Option[]} */\n this.options = [];\n this.parent = null;\n this._allowUnknownOption = false;\n this._allowExcessArguments = false;\n /** @type {Argument[]} */\n this.registeredArguments = [];\n this._args = this.registeredArguments; // deprecated old name\n /** @type {string[]} */\n this.args = []; // cli args with options removed\n this.rawArgs = [];\n this.processedArgs = []; // like .args but after custom processing and collecting variadic\n this._scriptPath = null;\n this._name = name || '';\n this._optionValues = {};\n this._optionValueSources = {}; // default, env, cli etc\n this._storeOptionsAsProperties = false;\n this._actionHandler = null;\n this._executableHandler = false;\n this._executableFile = null; // custom name for executable\n this._executableDir = null; // custom search directory for subcommands\n this._defaultCommandName = null;\n this._exitCallback = null;\n this._aliases = [];\n this._combineFlagAndOptionalValue = true;\n this._description = '';\n this._summary = '';\n this._argsDescription = undefined; // legacy\n this._enablePositionalOptions = false;\n this._passThroughOptions = false;\n this._lifeCycleHooks = {}; // a hash of arrays\n /** @type {(boolean | string)} */\n this._showHelpAfterError = false;\n this._showSuggestionAfterError = true;\n this._savedState = null; // used in save/restoreStateBeforeParse\n\n // see configureOutput() for docs\n this._outputConfiguration = {\n writeOut: (str) => process.stdout.write(str),\n writeErr: (str) => process.stderr.write(str),\n outputError: (str, write) => write(str),\n getOutHelpWidth: () =>\n process.stdout.isTTY ? process.stdout.columns : undefined,\n getErrHelpWidth: () =>\n process.stderr.isTTY ? process.stderr.columns : undefined,\n getOutHasColors: () =>\n useColor() ?? (process.stdout.isTTY && process.stdout.hasColors?.()),\n getErrHasColors: () =>\n useColor() ?? (process.stderr.isTTY && process.stderr.hasColors?.()),\n stripColor: (str) => stripColor(str),\n };\n\n this._hidden = false;\n /** @type {(Option | null | undefined)} */\n this._helpOption = undefined; // Lazy created on demand. May be null if help option is disabled.\n this._addImplicitHelpCommand = undefined; // undecided whether true or false yet, not inherited\n /** @type {Command} */\n this._helpCommand = undefined; // lazy initialised, inherited\n this._helpConfiguration = {};\n /** @type {string | undefined} */\n this._helpGroupHeading = undefined; // soft initialised when added to parent\n /** @type {string | undefined} */\n this._defaultCommandGroup = undefined;\n /** @type {string | undefined} */\n this._defaultOptionGroup = undefined;\n }\n\n /**\n * Copy settings that are useful to have in common across root command and subcommands.\n *\n * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.)\n *\n * @param {Command} sourceCommand\n * @return {Command} `this` command for chaining\n */\n copyInheritedSettings(sourceCommand) {\n this._outputConfiguration = sourceCommand._outputConfiguration;\n this._helpOption = sourceCommand._helpOption;\n this._helpCommand = sourceCommand._helpCommand;\n this._helpConfiguration = sourceCommand._helpConfiguration;\n this._exitCallback = sourceCommand._exitCallback;\n this._storeOptionsAsProperties = sourceCommand._storeOptionsAsProperties;\n this._combineFlagAndOptionalValue =\n sourceCommand._combineFlagAndOptionalValue;\n this._allowExcessArguments = sourceCommand._allowExcessArguments;\n this._enablePositionalOptions = sourceCommand._enablePositionalOptions;\n this._showHelpAfterError = sourceCommand._showHelpAfterError;\n this._showSuggestionAfterError = sourceCommand._showSuggestionAfterError;\n\n return this;\n }\n\n /**\n * @returns {Command[]}\n * @private\n */\n\n _getCommandAndAncestors() {\n const result = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n for (let command = this; command; command = command.parent) {\n result.push(command);\n }\n return result;\n }\n\n /**\n * Define a command.\n *\n * There are two styles of command: pay attention to where to put the description.\n *\n * @example\n * // Command implemented using action handler (description is supplied separately to `.command`)\n * program\n * .command('clone <source> [destination]')\n * .description('clone a repository into a newly created directory')\n * .action((source, destination) => {\n * console.log('clone command called');\n * });\n *\n * // Command implemented using separate executable file (description is second parameter to `.command`)\n * program\n * .command('start <service>', 'start named service')\n * .command('stop [service]', 'stop named service, or all if no name supplied');\n *\n * @param {string} nameAndArgs - command name and arguments, args are `<required>` or `[optional]` and last may also be `variadic...`\n * @param {(object | string)} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable)\n * @param {object} [execOpts] - configuration options (for executable)\n * @return {Command} returns new command for action handler, or `this` for executable command\n */\n\n command(nameAndArgs, actionOptsOrExecDesc, execOpts) {\n let desc = actionOptsOrExecDesc;\n let opts = execOpts;\n if (typeof desc === 'object' && desc !== null) {\n opts = desc;\n desc = null;\n }\n opts = opts || {};\n const [, name, args] = nameAndArgs.match(/([^ ]+) *(.*)/);\n\n const cmd = this.createCommand(name);\n if (desc) {\n cmd.description(desc);\n cmd._executableHandler = true;\n }\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n cmd._hidden = !!(opts.noHelp || opts.hidden); // noHelp is deprecated old name for hidden\n cmd._executableFile = opts.executableFile || null; // Custom name for executable file, set missing to null to match constructor\n if (args) cmd.arguments(args);\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd.copyInheritedSettings(this);\n\n if (desc) return this;\n return cmd;\n }\n\n /**\n * Factory routine to create a new unattached command.\n *\n * See .command() for creating an attached subcommand, which uses this routine to\n * create the command. You can override createCommand to customise subcommands.\n *\n * @param {string} [name]\n * @return {Command} new command\n */\n\n createCommand(name) {\n return new Command(name);\n }\n\n /**\n * You can customise the help with a subclass of Help by overriding createHelp,\n * or by overriding Help properties using configureHelp().\n *\n * @return {Help}\n */\n\n createHelp() {\n return Object.assign(new Help(), this.configureHelp());\n }\n\n /**\n * You can customise the help by overriding Help properties using configureHelp(),\n * or with a subclass of Help by overriding createHelp().\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureHelp(configuration) {\n if (configuration === undefined) return this._helpConfiguration;\n\n this._helpConfiguration = configuration;\n return this;\n }\n\n /**\n * The default output goes to stdout and stderr. You can customise this for special\n * applications. You can also customise the display of errors by overriding outputError.\n *\n * The configuration properties are all functions:\n *\n * // change how output being written, defaults to stdout and stderr\n * writeOut(str)\n * writeErr(str)\n * // change how output being written for errors, defaults to writeErr\n * outputError(str, write) // used for displaying errors and not used for displaying help\n * // specify width for wrapping help\n * getOutHelpWidth()\n * getErrHelpWidth()\n * // color support, currently only used with Help\n * getOutHasColors()\n * getErrHasColors()\n * stripColor() // used to remove ANSI escape codes if output does not have colors\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureOutput(configuration) {\n if (configuration === undefined) return this._outputConfiguration;\n\n this._outputConfiguration = {\n ...this._outputConfiguration,\n ...configuration,\n };\n return this;\n }\n\n /**\n * Display the help or a custom message after an error occurs.\n *\n * @param {(boolean|string)} [displayHelp]\n * @return {Command} `this` command for chaining\n */\n showHelpAfterError(displayHelp = true) {\n if (typeof displayHelp !== 'string') displayHelp = !!displayHelp;\n this._showHelpAfterError = displayHelp;\n return this;\n }\n\n /**\n * Display suggestion of similar commands for unknown commands, or options for unknown options.\n *\n * @param {boolean} [displaySuggestion]\n * @return {Command} `this` command for chaining\n */\n showSuggestionAfterError(displaySuggestion = true) {\n this._showSuggestionAfterError = !!displaySuggestion;\n return this;\n }\n\n /**\n * Add a prepared subcommand.\n *\n * See .command() for creating an attached subcommand which inherits settings from its parent.\n *\n * @param {Command} cmd - new subcommand\n * @param {object} [opts] - configuration options\n * @return {Command} `this` command for chaining\n */\n\n addCommand(cmd, opts) {\n if (!cmd._name) {\n throw new Error(`Command passed to .addCommand() must have a name\n- specify the name in Command constructor or using .name()`);\n }\n\n opts = opts || {};\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n if (opts.noHelp || opts.hidden) cmd._hidden = true; // modifying passed command due to existing implementation\n\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd._checkForBrokenPassThrough();\n\n return this;\n }\n\n /**\n * Factory routine to create a new unattached argument.\n *\n * See .argument() for creating an attached argument, which uses this routine to\n * create the argument. You can override createArgument to return a custom argument.\n *\n * @param {string} name\n * @param {string} [description]\n * @return {Argument} new argument\n */\n\n createArgument(name, description) {\n return new Argument(name, description);\n }\n\n /**\n * Define argument syntax for command.\n *\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @example\n * program.argument('<input-file>');\n * program.argument('[output-file]');\n *\n * @param {string} name\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom argument processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n argument(name, description, parseArg, defaultValue) {\n const argument = this.createArgument(name, description);\n if (typeof parseArg === 'function') {\n argument.default(defaultValue).argParser(parseArg);\n } else {\n argument.default(parseArg);\n }\n this.addArgument(argument);\n return this;\n }\n\n /**\n * Define argument syntax for command, adding multiple at once (without descriptions).\n *\n * See also .argument().\n *\n * @example\n * program.arguments('<cmd> [env]');\n *\n * @param {string} names\n * @return {Command} `this` command for chaining\n */\n\n arguments(names) {\n names\n .trim()\n .split(/ +/)\n .forEach((detail) => {\n this.argument(detail);\n });\n return this;\n }\n\n /**\n * Define argument syntax for command, adding a prepared argument.\n *\n * @param {Argument} argument\n * @return {Command} `this` command for chaining\n */\n addArgument(argument) {\n const previousArgument = this.registeredArguments.slice(-1)[0];\n if (previousArgument?.variadic) {\n throw new Error(\n `only the last argument can be variadic '${previousArgument.name()}'`,\n );\n }\n if (\n argument.required &&\n argument.defaultValue !== undefined &&\n argument.parseArg === undefined\n ) {\n throw new Error(\n `a default value for a required argument is never used: '${argument.name()}'`,\n );\n }\n this.registeredArguments.push(argument);\n return this;\n }\n\n /**\n * Customise or override default help command. By default a help command is automatically added if your command has subcommands.\n *\n * @example\n * program.helpCommand('help [cmd]');\n * program.helpCommand('help [cmd]', 'show help');\n * program.helpCommand(false); // suppress default help command\n * program.helpCommand(true); // add help command even if no subcommands\n *\n * @param {string|boolean} enableOrNameAndArgs - enable with custom name and/or arguments, or boolean to override whether added\n * @param {string} [description] - custom description\n * @return {Command} `this` command for chaining\n */\n\n helpCommand(enableOrNameAndArgs, description) {\n if (typeof enableOrNameAndArgs === 'boolean') {\n this._addImplicitHelpCommand = enableOrNameAndArgs;\n if (enableOrNameAndArgs && this._defaultCommandGroup) {\n // make the command to store the group\n this._initCommandGroup(this._getHelpCommand());\n }\n return this;\n }\n\n const nameAndArgs = enableOrNameAndArgs ?? 'help [command]';\n const [, helpName, helpArgs] = nameAndArgs.match(/([^ ]+) *(.*)/);\n const helpDescription = description ?? 'display help for command';\n\n const helpCommand = this.createCommand(helpName);\n helpCommand.helpOption(false);\n if (helpArgs) helpCommand.arguments(helpArgs);\n if (helpDescription) helpCommand.description(helpDescription);\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n // init group unless lazy create\n if (enableOrNameAndArgs || description) this._initCommandGroup(helpCommand);\n\n return this;\n }\n\n /**\n * Add prepared custom help command.\n *\n * @param {(Command|string|boolean)} helpCommand - custom help command, or deprecated enableOrNameAndArgs as for `.helpCommand()`\n * @param {string} [deprecatedDescription] - deprecated custom description used with custom name only\n * @return {Command} `this` command for chaining\n */\n addHelpCommand(helpCommand, deprecatedDescription) {\n // If not passed an object, call through to helpCommand for backwards compatibility,\n // as addHelpCommand was originally used like helpCommand is now.\n if (typeof helpCommand !== 'object') {\n this.helpCommand(helpCommand, deprecatedDescription);\n return this;\n }\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n this._initCommandGroup(helpCommand);\n return this;\n }\n\n /**\n * Lazy create help command.\n *\n * @return {(Command|null)}\n * @package\n */\n _getHelpCommand() {\n const hasImplicitHelpCommand =\n this._addImplicitHelpCommand ??\n (this.commands.length &&\n !this._actionHandler &&\n !this._findCommand('help'));\n\n if (hasImplicitHelpCommand) {\n if (this._helpCommand === undefined) {\n this.helpCommand(undefined, undefined); // use default name and description\n }\n return this._helpCommand;\n }\n return null;\n }\n\n /**\n * Add hook for life cycle event.\n *\n * @param {string} event\n * @param {Function} listener\n * @return {Command} `this` command for chaining\n */\n\n hook(event, listener) {\n const allowedValues = ['preSubcommand', 'preAction', 'postAction'];\n if (!allowedValues.includes(event)) {\n throw new Error(`Unexpected value for event passed to hook : '${event}'.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n if (this._lifeCycleHooks[event]) {\n this._lifeCycleHooks[event].push(listener);\n } else {\n this._lifeCycleHooks[event] = [listener];\n }\n return this;\n }\n\n /**\n * Register callback to use as replacement for calling process.exit.\n *\n * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing\n * @return {Command} `this` command for chaining\n */\n\n exitOverride(fn) {\n if (fn) {\n this._exitCallback = fn;\n } else {\n this._exitCallback = (err) => {\n if (err.code !== 'commander.executeSubCommandAsync') {\n throw err;\n } else {\n // Async callback from spawn events, not useful to throw.\n }\n };\n }\n return this;\n }\n\n /**\n * Call process.exit, and _exitCallback if defined.\n *\n * @param {number} exitCode exit code for using with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n * @return never\n * @private\n */\n\n _exit(exitCode, code, message) {\n if (this._exitCallback) {\n this._exitCallback(new CommanderError(exitCode, code, message));\n // Expecting this line is not reached.\n }\n process.exit(exitCode);\n }\n\n /**\n * Register callback `fn` for the command.\n *\n * @example\n * program\n * .command('serve')\n * .description('start service')\n * .action(function() {\n * // do work here\n * });\n *\n * @param {Function} fn\n * @return {Command} `this` command for chaining\n */\n\n action(fn) {\n const listener = (args) => {\n // The .action callback takes an extra parameter which is the command or options.\n const expectedArgsCount = this.registeredArguments.length;\n const actionArgs = args.slice(0, expectedArgsCount);\n if (this._storeOptionsAsProperties) {\n actionArgs[expectedArgsCount] = this; // backwards compatible \"options\"\n } else {\n actionArgs[expectedArgsCount] = this.opts();\n }\n actionArgs.push(this);\n\n return fn.apply(this, actionArgs);\n };\n this._actionHandler = listener;\n return this;\n }\n\n /**\n * Factory routine to create a new unattached option.\n *\n * See .option() for creating an attached option, which uses this routine to\n * create the option. You can override createOption to return a custom option.\n *\n * @param {string} flags\n * @param {string} [description]\n * @return {Option} new option\n */\n\n createOption(flags, description) {\n return new Option(flags, description);\n }\n\n /**\n * Wrap parseArgs to catch 'commander.invalidArgument'.\n *\n * @param {(Option | Argument)} target\n * @param {string} value\n * @param {*} previous\n * @param {string} invalidArgumentMessage\n * @private\n */\n\n _callParseArg(target, value, previous, invalidArgumentMessage) {\n try {\n return target.parseArg(value, previous);\n } catch (err) {\n if (err.code === 'commander.invalidArgument') {\n const message = `${invalidArgumentMessage} ${err.message}`;\n this.error(message, { exitCode: err.exitCode, code: err.code });\n }\n throw err;\n }\n }\n\n /**\n * Check for option flag conflicts.\n * Register option if no conflicts found, or throw on conflict.\n *\n * @param {Option} option\n * @private\n */\n\n _registerOption(option) {\n const matchingOption =\n (option.short && this._findOption(option.short)) ||\n (option.long && this._findOption(option.long));\n if (matchingOption) {\n const matchingFlag =\n option.long && this._findOption(option.long)\n ? option.long\n : option.short;\n throw new Error(`Cannot add option '${option.flags}'${this._name && ` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'\n- already used by option '${matchingOption.flags}'`);\n }\n\n this._initOptionGroup(option);\n this.options.push(option);\n }\n\n /**\n * Check for command name and alias conflicts with existing commands.\n * Register command if no conflicts found, or throw on conflict.\n *\n * @param {Command} command\n * @private\n */\n\n _registerCommand(command) {\n const knownBy = (cmd) => {\n return [cmd.name()].concat(cmd.aliases());\n };\n\n const alreadyUsed = knownBy(command).find((name) =>\n this._findCommand(name),\n );\n if (alreadyUsed) {\n const existingCmd = knownBy(this._findCommand(alreadyUsed)).join('|');\n const newCmd = knownBy(command).join('|');\n throw new Error(\n `cannot add command '${newCmd}' as already have command '${existingCmd}'`,\n );\n }\n\n this._initCommandGroup(command);\n this.commands.push(command);\n }\n\n /**\n * Add an option.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addOption(option) {\n this._registerOption(option);\n\n const oname = option.name();\n const name = option.attributeName();\n\n // store default value\n if (option.negate) {\n // --no-foo is special and defaults foo to true, unless a --foo option is already defined\n const positiveLongFlag = option.long.replace(/^--no-/, '--');\n if (!this._findOption(positiveLongFlag)) {\n this.setOptionValueWithSource(\n name,\n option.defaultValue === undefined ? true : option.defaultValue,\n 'default',\n );\n }\n } else if (option.defaultValue !== undefined) {\n this.setOptionValueWithSource(name, option.defaultValue, 'default');\n }\n\n // handler for cli and env supplied values\n const handleOptionValue = (val, invalidValueMessage, valueSource) => {\n // val is null for optional option used without an optional-argument.\n // val is undefined for boolean and negated option.\n if (val == null && option.presetArg !== undefined) {\n val = option.presetArg;\n }\n\n // custom processing\n const oldValue = this.getOptionValue(name);\n if (val !== null && option.parseArg) {\n val = this._callParseArg(option, val, oldValue, invalidValueMessage);\n } else if (val !== null && option.variadic) {\n val = option._collectValue(val, oldValue);\n }\n\n // Fill-in appropriate missing values. Long winded but easy to follow.\n if (val == null) {\n if (option.negate) {\n val = false;\n } else if (option.isBoolean() || option.optional) {\n val = true;\n } else {\n val = ''; // not normal, parseArg might have failed or be a mock function for testing\n }\n }\n this.setOptionValueWithSource(name, val, valueSource);\n };\n\n this.on('option:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' argument '${val}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'cli');\n });\n\n if (option.envVar) {\n this.on('optionEnv:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' value '${val}' from env '${option.envVar}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'env');\n });\n }\n\n return this;\n }\n\n /**\n * Internal implementation shared by .option() and .requiredOption()\n *\n * @return {Command} `this` command for chaining\n * @private\n */\n _optionEx(config, flags, description, fn, defaultValue) {\n if (typeof flags === 'object' && flags instanceof Option) {\n throw new Error(\n 'To add an Option object use addOption() instead of option() or requiredOption()',\n );\n }\n const option = this.createOption(flags, description);\n option.makeOptionMandatory(!!config.mandatory);\n if (typeof fn === 'function') {\n option.default(defaultValue).argParser(fn);\n } else if (fn instanceof RegExp) {\n // deprecated\n const regex = fn;\n fn = (val, def) => {\n const m = regex.exec(val);\n return m ? m[0] : def;\n };\n option.default(defaultValue).argParser(fn);\n } else {\n option.default(fn);\n }\n\n return this.addOption(option);\n }\n\n /**\n * Define option with `flags`, `description`, and optional argument parsing function or `defaultValue` or both.\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. A required\n * option-argument is indicated by `<>` and an optional option-argument by `[]`.\n *\n * See the README for more details, and see also addOption() and requiredOption().\n *\n * @example\n * program\n * .option('-p, --pepper', 'add pepper')\n * .option('--pt, --pizza-type <TYPE>', 'type of pizza') // required option-argument\n * .option('-c, --cheese [CHEESE]', 'add extra cheese', 'mozzarella') // optional option-argument with default\n * .option('-t, --tip <VALUE>', 'add tip to purchase cost', parseFloat) // custom parse function\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n option(flags, description, parseArg, defaultValue) {\n return this._optionEx({}, flags, description, parseArg, defaultValue);\n }\n\n /**\n * Add a required option which must have a value after parsing. This usually means\n * the option must be specified on the command line. (Otherwise the same as .option().)\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space.\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n requiredOption(flags, description, parseArg, defaultValue) {\n return this._optionEx(\n { mandatory: true },\n flags,\n description,\n parseArg,\n defaultValue,\n );\n }\n\n /**\n * Alter parsing of short flags with optional values.\n *\n * @example\n * // for `.option('-f,--flag [value]'):\n * program.combineFlagAndOptionalValue(true); // `-f80` is treated like `--flag=80`, this is the default behaviour\n * program.combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b`\n *\n * @param {boolean} [combine] - if `true` or omitted, an optional value can be specified directly after the flag.\n * @return {Command} `this` command for chaining\n */\n combineFlagAndOptionalValue(combine = true) {\n this._combineFlagAndOptionalValue = !!combine;\n return this;\n }\n\n /**\n * Allow unknown options on the command line.\n *\n * @param {boolean} [allowUnknown] - if `true` or omitted, no error will be thrown for unknown options.\n * @return {Command} `this` command for chaining\n */\n allowUnknownOption(allowUnknown = true) {\n this._allowUnknownOption = !!allowUnknown;\n return this;\n }\n\n /**\n * Allow excess command-arguments on the command line. Pass false to make excess arguments an error.\n *\n * @param {boolean} [allowExcess] - if `true` or omitted, no error will be thrown for excess arguments.\n * @return {Command} `this` command for chaining\n */\n allowExcessArguments(allowExcess = true) {\n this._allowExcessArguments = !!allowExcess;\n return this;\n }\n\n /**\n * Enable positional options. Positional means global options are specified before subcommands which lets\n * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions.\n * The default behaviour is non-positional and global options may appear anywhere on the command line.\n *\n * @param {boolean} [positional]\n * @return {Command} `this` command for chaining\n */\n enablePositionalOptions(positional = true) {\n this._enablePositionalOptions = !!positional;\n return this;\n }\n\n /**\n * Pass through options that come after command-arguments rather than treat them as command-options,\n * so actual command-options come before command-arguments. Turning this on for a subcommand requires\n * positional options to have been enabled on the program (parent commands).\n * The default behaviour is non-positional and options may appear before or after command-arguments.\n *\n * @param {boolean} [passThrough] for unknown options.\n * @return {Command} `this` command for chaining\n */\n passThroughOptions(passThrough = true) {\n this._passThroughOptions = !!passThrough;\n this._checkForBrokenPassThrough();\n return this;\n }\n\n /**\n * @private\n */\n\n _checkForBrokenPassThrough() {\n if (\n this.parent &&\n this._passThroughOptions &&\n !this.parent._enablePositionalOptions\n ) {\n throw new Error(\n `passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`,\n );\n }\n }\n\n /**\n * Whether to store option values as properties on command object,\n * or store separately (specify false). In both cases the option values can be accessed using .opts().\n *\n * @param {boolean} [storeAsProperties=true]\n * @return {Command} `this` command for chaining\n */\n\n storeOptionsAsProperties(storeAsProperties = true) {\n if (this.options.length) {\n throw new Error('call .storeOptionsAsProperties() before adding options');\n }\n if (Object.keys(this._optionValues).length) {\n throw new Error(\n 'call .storeOptionsAsProperties() before setting option values',\n );\n }\n this._storeOptionsAsProperties = !!storeAsProperties;\n return this;\n }\n\n /**\n * Retrieve option value.\n *\n * @param {string} key\n * @return {object} value\n */\n\n getOptionValue(key) {\n if (this._storeOptionsAsProperties) {\n return this[key];\n }\n return this._optionValues[key];\n }\n\n /**\n * Store option value.\n *\n * @param {string} key\n * @param {object} value\n * @return {Command} `this` command for chaining\n */\n\n setOptionValue(key, value) {\n return this.setOptionValueWithSource(key, value, undefined);\n }\n\n /**\n * Store option value and where the value came from.\n *\n * @param {string} key\n * @param {object} value\n * @param {string} source - expected values are default/config/env/cli/implied\n * @return {Command} `this` command for chaining\n */\n\n setOptionValueWithSource(key, value, source) {\n if (this._storeOptionsAsProperties) {\n this[key] = value;\n } else {\n this._optionValues[key] = value;\n }\n this._optionValueSources[key] = source;\n return this;\n }\n\n /**\n * Get source of option value.\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSource(key) {\n return this._optionValueSources[key];\n }\n\n /**\n * Get source of option value. See also .optsWithGlobals().\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSourceWithGlobals(key) {\n // global overwrites local, like optsWithGlobals\n let source;\n this._getCommandAndAncestors().forEach((cmd) => {\n if (cmd.getOptionValueSource(key) !== undefined) {\n source = cmd.getOptionValueSource(key);\n }\n });\n return source;\n }\n\n /**\n * Get user arguments from implied or explicit arguments.\n * Side-effects: set _scriptPath if args included script. Used for default program name, and subcommand searches.\n *\n * @private\n */\n\n _prepareUserArgs(argv, parseOptions) {\n if (argv !== undefined && !Array.isArray(argv)) {\n throw new Error('first parameter to parse must be array or undefined');\n }\n parseOptions = parseOptions || {};\n\n // auto-detect argument conventions if nothing supplied\n if (argv === undefined && parseOptions.from === undefined) {\n if (process.versions?.electron) {\n parseOptions.from = 'electron';\n }\n // check node specific options for scenarios where user CLI args follow executable without scriptname\n const execArgv = process.execArgv ?? [];\n if (\n execArgv.includes('-e') ||\n execArgv.includes('--eval') ||\n execArgv.includes('-p') ||\n execArgv.includes('--print')\n ) {\n parseOptions.from = 'eval'; // internal usage, not documented\n }\n }\n\n // default to using process.argv\n if (argv === undefined) {\n argv = process.argv;\n }\n this.rawArgs = argv.slice();\n\n // extract the user args and scriptPath\n let userArgs;\n switch (parseOptions.from) {\n case undefined:\n case 'node':\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n break;\n case 'electron':\n // @ts-ignore: because defaultApp is an unknown property\n if (process.defaultApp) {\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n } else {\n userArgs = argv.slice(1);\n }\n break;\n case 'user':\n userArgs = argv.slice(0);\n break;\n case 'eval':\n userArgs = argv.slice(1);\n break;\n default:\n throw new Error(\n `unexpected parse option { from: '${parseOptions.from}' }`,\n );\n }\n\n // Find default name for program from arguments.\n if (!this._name && this._scriptPath)\n this.nameFromFilename(this._scriptPath);\n this._name = this._name || 'program';\n\n return userArgs;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Use parseAsync instead of parse if any of your action handlers are async.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * program.parse(); // parse process.argv and auto-detect electron and special node flags\n * program.parse(process.argv); // assume argv[0] is app and argv[1] is script\n * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv] - optional, defaults to process.argv\n * @param {object} [parseOptions] - optionally specify style of options with from: node/user/electron\n * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron'\n * @return {Command} `this` command for chaining\n */\n\n parse(argv, parseOptions) {\n this._prepareForParse();\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n this._parseCommand([], userArgs);\n\n return this;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * await program.parseAsync(); // parse process.argv and auto-detect electron and special node flags\n * await program.parseAsync(process.argv); // assume argv[0] is app and argv[1] is script\n * await program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv]\n * @param {object} [parseOptions]\n * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron'\n * @return {Promise}\n */\n\n async parseAsync(argv, parseOptions) {\n this._prepareForParse();\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n await this._parseCommand([], userArgs);\n\n return this;\n }\n\n _prepareForParse() {\n if (this._savedState === null) {\n this.saveStateBeforeParse();\n } else {\n this.restoreStateBeforeParse();\n }\n }\n\n /**\n * Called the first time parse is called to save state and allow a restore before subsequent calls to parse.\n * Not usually called directly, but available for subclasses to save their custom state.\n *\n * This is called in a lazy way. Only commands used in parsing chain will have state saved.\n */\n saveStateBeforeParse() {\n this._savedState = {\n // name is stable if supplied by author, but may be unspecified for root command and deduced during parsing\n _name: this._name,\n // option values before parse have default values (including false for negated options)\n // shallow clones\n _optionValues: { ...this._optionValues },\n _optionValueSources: { ...this._optionValueSources },\n };\n }\n\n /**\n * Restore state before parse for calls after the first.\n * Not usually called directly, but available for subclasses to save their custom state.\n *\n * This is called in a lazy way. Only commands used in parsing chain will have state restored.\n */\n restoreStateBeforeParse() {\n if (this._storeOptionsAsProperties)\n throw new Error(`Can not call parse again when storeOptionsAsProperties is true.\n- either make a new Command for each call to parse, or stop storing options as properties`);\n\n // clear state from _prepareUserArgs\n this._name = this._savedState._name;\n this._scriptPath = null;\n this.rawArgs = [];\n // clear state from setOptionValueWithSource\n this._optionValues = { ...this._savedState._optionValues };\n this._optionValueSources = { ...this._savedState._optionValueSources };\n // clear state from _parseCommand\n this.args = [];\n // clear state from _processArguments\n this.processedArgs = [];\n }\n\n /**\n * Throw if expected executable is missing. Add lots of help for author.\n *\n * @param {string} executableFile\n * @param {string} executableDir\n * @param {string} subcommandName\n */\n _checkForMissingExecutable(executableFile, executableDir, subcommandName) {\n if (fs.existsSync(executableFile)) return;\n\n const executableDirMessage = executableDir\n ? `searched for local subcommand relative to directory '${executableDir}'`\n : 'no directory for search for local subcommand, use .executableDir() to supply a custom directory';\n const executableMissing = `'${executableFile}' does not exist\n - if '${subcommandName}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead\n - if the default executable name is not suitable, use the executableFile option to supply a custom name or path\n - ${executableDirMessage}`;\n throw new Error(executableMissing);\n }\n\n /**\n * Execute a sub-command executable.\n *\n * @private\n */\n\n _executeSubCommand(subcommand, args) {\n args = args.slice();\n let launchWithNode = false; // Use node for source targets so do not need to get permissions correct, and on Windows.\n const sourceExt = ['.js', '.ts', '.tsx', '.mjs', '.cjs'];\n\n function findFile(baseDir, baseName) {\n // Look for specified file\n const localBin = path.resolve(baseDir, baseName);\n if (fs.existsSync(localBin)) return localBin;\n\n // Stop looking if candidate already has an expected extension.\n if (sourceExt.includes(path.extname(baseName))) return undefined;\n\n // Try all the extensions.\n const foundExt = sourceExt.find((ext) =>\n fs.existsSync(`${localBin}${ext}`),\n );\n if (foundExt) return `${localBin}${foundExt}`;\n\n return undefined;\n }\n\n // Not checking for help first. Unlikely to have mandatory and executable, and can't robustly test for help flags in external command.\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // executableFile and executableDir might be full path, or just a name\n let executableFile =\n subcommand._executableFile || `${this._name}-${subcommand._name}`;\n let executableDir = this._executableDir || '';\n if (this._scriptPath) {\n let resolvedScriptPath; // resolve possible symlink for installed npm binary\n try {\n resolvedScriptPath = fs.realpathSync(this._scriptPath);\n } catch {\n resolvedScriptPath = this._scriptPath;\n }\n executableDir = path.resolve(\n path.dirname(resolvedScriptPath),\n executableDir,\n );\n }\n\n // Look for a local file in preference to a command in PATH.\n if (executableDir) {\n let localFile = findFile(executableDir, executableFile);\n\n // Legacy search using prefix of script name instead of command name\n if (!localFile && !subcommand._executableFile && this._scriptPath) {\n const legacyName = path.basename(\n this._scriptPath,\n path.extname(this._scriptPath),\n );\n if (legacyName !== this._name) {\n localFile = findFile(\n executableDir,\n `${legacyName}-${subcommand._name}`,\n );\n }\n }\n executableFile = localFile || executableFile;\n }\n\n launchWithNode = sourceExt.includes(path.extname(executableFile));\n\n let proc;\n if (process.platform !== 'win32') {\n if (launchWithNode) {\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n\n proc = childProcess.spawn(process.argv[0], args, { stdio: 'inherit' });\n } else {\n proc = childProcess.spawn(executableFile, args, { stdio: 'inherit' });\n }\n } else {\n this._checkForMissingExecutable(\n executableFile,\n executableDir,\n subcommand._name,\n );\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n proc = childProcess.spawn(process.execPath, args, { stdio: 'inherit' });\n }\n\n if (!proc.killed) {\n // testing mainly to avoid leak warnings during unit tests with mocked spawn\n const signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP'];\n signals.forEach((signal) => {\n process.on(signal, () => {\n if (proc.killed === false && proc.exitCode === null) {\n // @ts-ignore because signals not typed to known strings\n proc.kill(signal);\n }\n });\n });\n }\n\n // By default terminate process when spawned process terminates.\n const exitCallback = this._exitCallback;\n proc.on('close', (code) => {\n code = code ?? 1; // code is null if spawned process terminated due to a signal\n if (!exitCallback) {\n process.exit(code);\n } else {\n exitCallback(\n new CommanderError(\n code,\n 'commander.executeSubCommandAsync',\n '(close)',\n ),\n );\n }\n });\n proc.on('error', (err) => {\n // @ts-ignore: because err.code is an unknown property\n if (err.code === 'ENOENT') {\n this._checkForMissingExecutable(\n executableFile,\n executableDir,\n subcommand._name,\n );\n // @ts-ignore: because err.code is an unknown property\n } else if (err.code === 'EACCES') {\n throw new Error(`'${executableFile}' not executable`);\n }\n if (!exitCallback) {\n process.exit(1);\n } else {\n const wrappedError = new CommanderError(\n 1,\n 'commander.executeSubCommandAsync',\n '(error)',\n );\n wrappedError.nestedError = err;\n exitCallback(wrappedError);\n }\n });\n\n // Store the reference to the child process\n this.runningCommand = proc;\n }\n\n /**\n * @private\n */\n\n _dispatchSubcommand(commandName, operands, unknown) {\n const subCommand = this._findCommand(commandName);\n if (!subCommand) this.help({ error: true });\n\n subCommand._prepareForParse();\n let promiseChain;\n promiseChain = this._chainOrCallSubCommandHook(\n promiseChain,\n subCommand,\n 'preSubcommand',\n );\n promiseChain = this._chainOrCall(promiseChain, () => {\n if (subCommand._executableHandler) {\n this._executeSubCommand(subCommand, operands.concat(unknown));\n } else {\n return subCommand._parseCommand(operands, unknown);\n }\n });\n return promiseChain;\n }\n\n /**\n * Invoke help directly if possible, or dispatch if necessary.\n * e.g. help foo\n *\n * @private\n */\n\n _dispatchHelpCommand(subcommandName) {\n if (!subcommandName) {\n this.help();\n }\n const subCommand = this._findCommand(subcommandName);\n if (subCommand && !subCommand._executableHandler) {\n subCommand.help();\n }\n\n // Fallback to parsing the help flag to invoke the help.\n return this._dispatchSubcommand(\n subcommandName,\n [],\n [this._getHelpOption()?.long ?? this._getHelpOption()?.short ?? '--help'],\n );\n }\n\n /**\n * Check this.args against expected this.registeredArguments.\n *\n * @private\n */\n\n _checkNumberOfArguments() {\n // too few\n this.registeredArguments.forEach((arg, i) => {\n if (arg.required && this.args[i] == null) {\n this.missingArgument(arg.name());\n }\n });\n // too many\n if (\n this.registeredArguments.length > 0 &&\n this.registeredArguments[this.registeredArguments.length - 1].variadic\n ) {\n return;\n }\n if (this.args.length > this.registeredArguments.length) {\n this._excessArguments(this.args);\n }\n }\n\n /**\n * Process this.args using this.registeredArguments and save as this.processedArgs!\n *\n * @private\n */\n\n _processArguments() {\n const myParseArg = (argument, value, previous) => {\n // Extra processing for nice error message on parsing failure.\n let parsedValue = value;\n if (value !== null && argument.parseArg) {\n const invalidValueMessage = `error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`;\n parsedValue = this._callParseArg(\n argument,\n value,\n previous,\n invalidValueMessage,\n );\n }\n return parsedValue;\n };\n\n this._checkNumberOfArguments();\n\n const processedArgs = [];\n this.registeredArguments.forEach((declaredArg, index) => {\n let value = declaredArg.defaultValue;\n if (declaredArg.variadic) {\n // Collect together remaining arguments for passing together as an array.\n if (index < this.args.length) {\n value = this.args.slice(index);\n if (declaredArg.parseArg) {\n value = value.reduce((processed, v) => {\n return myParseArg(declaredArg, v, processed);\n }, declaredArg.defaultValue);\n }\n } else if (value === undefined) {\n value = [];\n }\n } else if (index < this.args.length) {\n value = this.args[index];\n if (declaredArg.parseArg) {\n value = myParseArg(declaredArg, value, declaredArg.defaultValue);\n }\n }\n processedArgs[index] = value;\n });\n this.processedArgs = processedArgs;\n }\n\n /**\n * Once we have a promise we chain, but call synchronously until then.\n *\n * @param {(Promise|undefined)} promise\n * @param {Function} fn\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCall(promise, fn) {\n // thenable\n if (promise?.then && typeof promise.then === 'function') {\n // already have a promise, chain callback\n return promise.then(() => fn());\n }\n // callback might return a promise\n return fn();\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallHooks(promise, event) {\n let result = promise;\n const hooks = [];\n this._getCommandAndAncestors()\n .reverse()\n .filter((cmd) => cmd._lifeCycleHooks[event] !== undefined)\n .forEach((hookedCommand) => {\n hookedCommand._lifeCycleHooks[event].forEach((callback) => {\n hooks.push({ hookedCommand, callback });\n });\n });\n if (event === 'postAction') {\n hooks.reverse();\n }\n\n hooks.forEach((hookDetail) => {\n result = this._chainOrCall(result, () => {\n return hookDetail.callback(hookDetail.hookedCommand, this);\n });\n });\n return result;\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {Command} subCommand\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallSubCommandHook(promise, subCommand, event) {\n let result = promise;\n if (this._lifeCycleHooks[event] !== undefined) {\n this._lifeCycleHooks[event].forEach((hook) => {\n result = this._chainOrCall(result, () => {\n return hook(this, subCommand);\n });\n });\n }\n return result;\n }\n\n /**\n * Process arguments in context of this command.\n * Returns action result, in case it is a promise.\n *\n * @private\n */\n\n _parseCommand(operands, unknown) {\n const parsed = this.parseOptions(unknown);\n this._parseOptionsEnv(); // after cli, so parseArg not called on both cli and env\n this._parseOptionsImplied();\n operands = operands.concat(parsed.operands);\n unknown = parsed.unknown;\n this.args = operands.concat(unknown);\n\n if (operands && this._findCommand(operands[0])) {\n return this._dispatchSubcommand(operands[0], operands.slice(1), unknown);\n }\n if (\n this._getHelpCommand() &&\n operands[0] === this._getHelpCommand().name()\n ) {\n return this._dispatchHelpCommand(operands[1]);\n }\n if (this._defaultCommandName) {\n this._outputHelpIfRequested(unknown); // Run the help for default command from parent rather than passing to default command\n return this._dispatchSubcommand(\n this._defaultCommandName,\n operands,\n unknown,\n );\n }\n if (\n this.commands.length &&\n this.args.length === 0 &&\n !this._actionHandler &&\n !this._defaultCommandName\n ) {\n // probably missing subcommand and no handler, user needs help (and exit)\n this.help({ error: true });\n }\n\n this._outputHelpIfRequested(parsed.unknown);\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // We do not always call this check to avoid masking a \"better\" error, like unknown command.\n const checkForUnknownOptions = () => {\n if (parsed.unknown.length > 0) {\n this.unknownOption(parsed.unknown[0]);\n }\n };\n\n const commandEvent = `command:${this.name()}`;\n if (this._actionHandler) {\n checkForUnknownOptions();\n this._processArguments();\n\n let promiseChain;\n promiseChain = this._chainOrCallHooks(promiseChain, 'preAction');\n promiseChain = this._chainOrCall(promiseChain, () =>\n this._actionHandler(this.processedArgs),\n );\n if (this.parent) {\n promiseChain = this._chainOrCall(promiseChain, () => {\n this.parent.emit(commandEvent, operands, unknown); // legacy\n });\n }\n promiseChain = this._chainOrCallHooks(promiseChain, 'postAction');\n return promiseChain;\n }\n if (this.parent?.listenerCount(commandEvent)) {\n checkForUnknownOptions();\n this._processArguments();\n this.parent.emit(commandEvent, operands, unknown); // legacy\n } else if (operands.length) {\n if (this._findCommand('*')) {\n // legacy default command\n return this._dispatchSubcommand('*', operands, unknown);\n }\n if (this.listenerCount('command:*')) {\n // skip option check, emit event for possible misspelling suggestion\n this.emit('command:*', operands, unknown);\n } else if (this.commands.length) {\n this.unknownCommand();\n } else {\n checkForUnknownOptions();\n this._processArguments();\n }\n } else if (this.commands.length) {\n checkForUnknownOptions();\n // This command has subcommands and nothing hooked up at this level, so display help (and exit).\n this.help({ error: true });\n } else {\n checkForUnknownOptions();\n this._processArguments();\n // fall through for caller to handle after calling .parse()\n }\n }\n\n /**\n * Find matching command.\n *\n * @private\n * @return {Command | undefined}\n */\n _findCommand(name) {\n if (!name) return undefined;\n return this.commands.find(\n (cmd) => cmd._name === name || cmd._aliases.includes(name),\n );\n }\n\n /**\n * Return an option matching `arg` if any.\n *\n * @param {string} arg\n * @return {Option}\n * @package\n */\n\n _findOption(arg) {\n return this.options.find((option) => option.is(arg));\n }\n\n /**\n * Display an error message if a mandatory option does not have a value.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n\n _checkForMissingMandatoryOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd.options.forEach((anOption) => {\n if (\n anOption.mandatory &&\n cmd.getOptionValue(anOption.attributeName()) === undefined\n ) {\n cmd.missingMandatoryOptionValue(anOption);\n }\n });\n });\n }\n\n /**\n * Display an error message if conflicting options are used together in this.\n *\n * @private\n */\n _checkForConflictingLocalOptions() {\n const definedNonDefaultOptions = this.options.filter((option) => {\n const optionKey = option.attributeName();\n if (this.getOptionValue(optionKey) === undefined) {\n return false;\n }\n return this.getOptionValueSource(optionKey) !== 'default';\n });\n\n const optionsWithConflicting = definedNonDefaultOptions.filter(\n (option) => option.conflictsWith.length > 0,\n );\n\n optionsWithConflicting.forEach((option) => {\n const conflictingAndDefined = definedNonDefaultOptions.find((defined) =>\n option.conflictsWith.includes(defined.attributeName()),\n );\n if (conflictingAndDefined) {\n this._conflictingOption(option, conflictingAndDefined);\n }\n });\n }\n\n /**\n * Display an error message if conflicting options are used together.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n _checkForConflictingOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd._checkForConflictingLocalOptions();\n });\n }\n\n /**\n * Parse options from `argv` removing known options,\n * and return argv split into operands and unknown arguments.\n *\n * Side effects: modifies command by storing options. Does not reset state if called again.\n *\n * Examples:\n *\n * argv => operands, unknown\n * --known kkk op => [op], []\n * op --known kkk => [op], []\n * sub --unknown uuu op => [sub], [--unknown uuu op]\n * sub -- --unknown uuu op => [sub --unknown uuu op], []\n *\n * @param {string[]} args\n * @return {{operands: string[], unknown: string[]}}\n */\n\n parseOptions(args) {\n const operands = []; // operands, not options or values\n const unknown = []; // first unknown option and remaining unknown args\n let dest = operands;\n\n function maybeOption(arg) {\n return arg.length > 1 && arg[0] === '-';\n }\n\n const negativeNumberArg = (arg) => {\n // return false if not a negative number\n if (!/^-(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?$/.test(arg)) return false;\n // negative number is ok unless digit used as an option in command hierarchy\n return !this._getCommandAndAncestors().some((cmd) =>\n cmd.options\n .map((opt) => opt.short)\n .some((short) => /^-\\d$/.test(short)),\n );\n };\n\n // parse options\n let activeVariadicOption = null;\n let activeGroup = null; // working through group of short options, like -abc\n let i = 0;\n while (i < args.length || activeGroup) {\n const arg = activeGroup ?? args[i++];\n activeGroup = null;\n\n // literal\n if (arg === '--') {\n if (dest === unknown) dest.push(arg);\n dest.push(...args.slice(i));\n break;\n }\n\n if (\n activeVariadicOption &&\n (!maybeOption(arg) || negativeNumberArg(arg))\n ) {\n this.emit(`option:${activeVariadicOption.name()}`, arg);\n continue;\n }\n activeVariadicOption = null;\n\n if (maybeOption(arg)) {\n const option = this._findOption(arg);\n // recognised option, call listener to assign value with possible custom processing\n if (option) {\n if (option.required) {\n const value = args[i++];\n if (value === undefined) this.optionMissingArgument(option);\n this.emit(`option:${option.name()}`, value);\n } else if (option.optional) {\n let value = null;\n // historical behaviour is optional value is following arg unless an option\n if (\n i < args.length &&\n (!maybeOption(args[i]) || negativeNumberArg(args[i]))\n ) {\n value = args[i++];\n }\n this.emit(`option:${option.name()}`, value);\n } else {\n // boolean flag\n this.emit(`option:${option.name()}`);\n }\n activeVariadicOption = option.variadic ? option : null;\n continue;\n }\n }\n\n // Look for combo options following single dash, eat first one if known.\n if (arg.length > 2 && arg[0] === '-' && arg[1] !== '-') {\n const option = this._findOption(`-${arg[1]}`);\n if (option) {\n if (\n option.required ||\n (option.optional && this._combineFlagAndOptionalValue)\n ) {\n // option with value following in same argument\n this.emit(`option:${option.name()}`, arg.slice(2));\n } else {\n // boolean option\n this.emit(`option:${option.name()}`);\n // remove the processed option and keep processing group\n activeGroup = `-${arg.slice(2)}`;\n }\n continue;\n }\n }\n\n // Look for known long flag with value, like --foo=bar\n if (/^--[^=]+=/.test(arg)) {\n const index = arg.indexOf('=');\n const option = this._findOption(arg.slice(0, index));\n if (option && (option.required || option.optional)) {\n this.emit(`option:${option.name()}`, arg.slice(index + 1));\n continue;\n }\n }\n\n // Not a recognised option by this command.\n // Might be a command-argument, or subcommand option, or unknown option, or help command or option.\n\n // An unknown option means further arguments also classified as unknown so can be reprocessed by subcommands.\n // A negative number in a leaf command is not an unknown option.\n if (\n dest === operands &&\n maybeOption(arg) &&\n !(this.commands.length === 0 && negativeNumberArg(arg))\n ) {\n dest = unknown;\n }\n\n // If using positionalOptions, stop processing our options at subcommand.\n if (\n (this._enablePositionalOptions || this._passThroughOptions) &&\n operands.length === 0 &&\n unknown.length === 0\n ) {\n if (this._findCommand(arg)) {\n operands.push(arg);\n unknown.push(...args.slice(i));\n break;\n } else if (\n this._getHelpCommand() &&\n arg === this._getHelpCommand().name()\n ) {\n operands.push(arg, ...args.slice(i));\n break;\n } else if (this._defaultCommandName) {\n unknown.push(arg, ...args.slice(i));\n break;\n }\n }\n\n // If using passThroughOptions, stop processing options at first command-argument.\n if (this._passThroughOptions) {\n dest.push(arg, ...args.slice(i));\n break;\n }\n\n // add arg\n dest.push(arg);\n }\n\n return { operands, unknown };\n }\n\n /**\n * Return an object containing local option values as key-value pairs.\n *\n * @return {object}\n */\n opts() {\n if (this._storeOptionsAsProperties) {\n // Preserve original behaviour so backwards compatible when still using properties\n const result = {};\n const len = this.options.length;\n\n for (let i = 0; i < len; i++) {\n const key = this.options[i].attributeName();\n result[key] =\n key === this._versionOptionName ? this._version : this[key];\n }\n return result;\n }\n\n return this._optionValues;\n }\n\n /**\n * Return an object containing merged local and global option values as key-value pairs.\n *\n * @return {object}\n */\n optsWithGlobals() {\n // globals overwrite locals\n return this._getCommandAndAncestors().reduce(\n (combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()),\n {},\n );\n }\n\n /**\n * Display error message and exit (or call exitOverride).\n *\n * @param {string} message\n * @param {object} [errorOptions]\n * @param {string} [errorOptions.code] - an id string representing the error\n * @param {number} [errorOptions.exitCode] - used with process.exit\n */\n error(message, errorOptions) {\n // output handling\n this._outputConfiguration.outputError(\n `${message}\\n`,\n this._outputConfiguration.writeErr,\n );\n if (typeof this._showHelpAfterError === 'string') {\n this._outputConfiguration.writeErr(`${this._showHelpAfterError}\\n`);\n } else if (this._showHelpAfterError) {\n this._outputConfiguration.writeErr('\\n');\n this.outputHelp({ error: true });\n }\n\n // exit handling\n const config = errorOptions || {};\n const exitCode = config.exitCode || 1;\n const code = config.code || 'commander.error';\n this._exit(exitCode, code, message);\n }\n\n /**\n * Apply any option related environment variables, if option does\n * not have a value from cli or client code.\n *\n * @private\n */\n _parseOptionsEnv() {\n this.options.forEach((option) => {\n if (option.envVar && option.envVar in process.env) {\n const optionKey = option.attributeName();\n // Priority check. Do not overwrite cli or options from unknown source (client-code).\n if (\n this.getOptionValue(optionKey) === undefined ||\n ['default', 'config', 'env'].includes(\n this.getOptionValueSource(optionKey),\n )\n ) {\n if (option.required || option.optional) {\n // option can take a value\n // keep very simple, optional always takes value\n this.emit(`optionEnv:${option.name()}`, process.env[option.envVar]);\n } else {\n // boolean\n // keep very simple, only care that envVar defined and not the value\n this.emit(`optionEnv:${option.name()}`);\n }\n }\n }\n });\n }\n\n /**\n * Apply any implied option values, if option is undefined or default value.\n *\n * @private\n */\n _parseOptionsImplied() {\n const dualHelper = new DualOptions(this.options);\n const hasCustomOptionValue = (optionKey) => {\n return (\n this.getOptionValue(optionKey) !== undefined &&\n !['default', 'implied'].includes(this.getOptionValueSource(optionKey))\n );\n };\n this.options\n .filter(\n (option) =>\n option.implied !== undefined &&\n hasCustomOptionValue(option.attributeName()) &&\n dualHelper.valueFromOption(\n this.getOptionValue(option.attributeName()),\n option,\n ),\n )\n .forEach((option) => {\n Object.keys(option.implied)\n .filter((impliedKey) => !hasCustomOptionValue(impliedKey))\n .forEach((impliedKey) => {\n this.setOptionValueWithSource(\n impliedKey,\n option.implied[impliedKey],\n 'implied',\n );\n });\n });\n }\n\n /**\n * Argument `name` is missing.\n *\n * @param {string} name\n * @private\n */\n\n missingArgument(name) {\n const message = `error: missing required argument '${name}'`;\n this.error(message, { code: 'commander.missingArgument' });\n }\n\n /**\n * `Option` is missing an argument.\n *\n * @param {Option} option\n * @private\n */\n\n optionMissingArgument(option) {\n const message = `error: option '${option.flags}' argument missing`;\n this.error(message, { code: 'commander.optionMissingArgument' });\n }\n\n /**\n * `Option` does not have a value, and is a mandatory option.\n *\n * @param {Option} option\n * @private\n */\n\n missingMandatoryOptionValue(option) {\n const message = `error: required option '${option.flags}' not specified`;\n this.error(message, { code: 'commander.missingMandatoryOptionValue' });\n }\n\n /**\n * `Option` conflicts with another option.\n *\n * @param {Option} option\n * @param {Option} conflictingOption\n * @private\n */\n _conflictingOption(option, conflictingOption) {\n // The calling code does not know whether a negated option is the source of the\n // value, so do some work to take an educated guess.\n const findBestOptionFromValue = (option) => {\n const optionKey = option.attributeName();\n const optionValue = this.getOptionValue(optionKey);\n const negativeOption = this.options.find(\n (target) => target.negate && optionKey === target.attributeName(),\n );\n const positiveOption = this.options.find(\n (target) => !target.negate && optionKey === target.attributeName(),\n );\n if (\n negativeOption &&\n ((negativeOption.presetArg === undefined && optionValue === false) ||\n (negativeOption.presetArg !== undefined &&\n optionValue === negativeOption.presetArg))\n ) {\n return negativeOption;\n }\n return positiveOption || option;\n };\n\n const getErrorMessage = (option) => {\n const bestOption = findBestOptionFromValue(option);\n const optionKey = bestOption.attributeName();\n const source = this.getOptionValueSource(optionKey);\n if (source === 'env') {\n return `environment variable '${bestOption.envVar}'`;\n }\n return `option '${bestOption.flags}'`;\n };\n\n const message = `error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;\n this.error(message, { code: 'commander.conflictingOption' });\n }\n\n /**\n * Unknown option `flag`.\n *\n * @param {string} flag\n * @private\n */\n\n unknownOption(flag) {\n if (this._allowUnknownOption) return;\n let suggestion = '';\n\n if (flag.startsWith('--') && this._showSuggestionAfterError) {\n // Looping to pick up the global options too\n let candidateFlags = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n do {\n const moreFlags = command\n .createHelp()\n .visibleOptions(command)\n .filter((option) => option.long)\n .map((option) => option.long);\n candidateFlags = candidateFlags.concat(moreFlags);\n command = command.parent;\n } while (command && !command._enablePositionalOptions);\n suggestion = suggestSimilar(flag, candidateFlags);\n }\n\n const message = `error: unknown option '${flag}'${suggestion}`;\n this.error(message, { code: 'commander.unknownOption' });\n }\n\n /**\n * Excess arguments, more than expected.\n *\n * @param {string[]} receivedArgs\n * @private\n */\n\n _excessArguments(receivedArgs) {\n if (this._allowExcessArguments) return;\n\n const expected = this.registeredArguments.length;\n const s = expected === 1 ? '' : 's';\n const forSubcommand = this.parent ? ` for '${this.name()}'` : '';\n const message = `error: too many arguments${forSubcommand}. Expected ${expected} argument${s} but got ${receivedArgs.length}.`;\n this.error(message, { code: 'commander.excessArguments' });\n }\n\n /**\n * Unknown command.\n *\n * @private\n */\n\n unknownCommand() {\n const unknownName = this.args[0];\n let suggestion = '';\n\n if (this._showSuggestionAfterError) {\n const candidateNames = [];\n this.createHelp()\n .visibleCommands(this)\n .forEach((command) => {\n candidateNames.push(command.name());\n // just visible alias\n if (command.alias()) candidateNames.push(command.alias());\n });\n suggestion = suggestSimilar(unknownName, candidateNames);\n }\n\n const message = `error: unknown command '${unknownName}'${suggestion}`;\n this.error(message, { code: 'commander.unknownCommand' });\n }\n\n /**\n * Get or set the program version.\n *\n * This method auto-registers the \"-V, --version\" option which will print the version number.\n *\n * You can optionally supply the flags and description to override the defaults.\n *\n * @param {string} [str]\n * @param {string} [flags]\n * @param {string} [description]\n * @return {(this | string | undefined)} `this` command for chaining, or version string if no arguments\n */\n\n version(str, flags, description) {\n if (str === undefined) return this._version;\n this._version = str;\n flags = flags || '-V, --version';\n description = description || 'output the version number';\n const versionOption = this.createOption(flags, description);\n this._versionOptionName = versionOption.attributeName();\n this._registerOption(versionOption);\n\n this.on('option:' + versionOption.name(), () => {\n this._outputConfiguration.writeOut(`${str}\\n`);\n this._exit(0, 'commander.version', str);\n });\n return this;\n }\n\n /**\n * Set the description.\n *\n * @param {string} [str]\n * @param {object} [argsDescription]\n * @return {(string|Command)}\n */\n description(str, argsDescription) {\n if (str === undefined && argsDescription === undefined)\n return this._description;\n this._description = str;\n if (argsDescription) {\n this._argsDescription = argsDescription;\n }\n return this;\n }\n\n /**\n * Set the summary. Used when listed as subcommand of parent.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n summary(str) {\n if (str === undefined) return this._summary;\n this._summary = str;\n return this;\n }\n\n /**\n * Set an alias for the command.\n *\n * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help.\n *\n * @param {string} [alias]\n * @return {(string|Command)}\n */\n\n alias(alias) {\n if (alias === undefined) return this._aliases[0]; // just return first, for backwards compatibility\n\n /** @type {Command} */\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n if (\n this.commands.length !== 0 &&\n this.commands[this.commands.length - 1]._executableHandler\n ) {\n // assume adding alias for last added executable subcommand, rather than this\n command = this.commands[this.commands.length - 1];\n }\n\n if (alias === command._name)\n throw new Error(\"Command alias can't be the same as its name\");\n const matchingCommand = this.parent?._findCommand(alias);\n if (matchingCommand) {\n // c.f. _registerCommand\n const existingCmd = [matchingCommand.name()]\n .concat(matchingCommand.aliases())\n .join('|');\n throw new Error(\n `cannot add alias '${alias}' to command '${this.name()}' as already have command '${existingCmd}'`,\n );\n }\n\n command._aliases.push(alias);\n return this;\n }\n\n /**\n * Set aliases for the command.\n *\n * Only the first alias is shown in the auto-generated help.\n *\n * @param {string[]} [aliases]\n * @return {(string[]|Command)}\n */\n\n aliases(aliases) {\n // Getter for the array of aliases is the main reason for having aliases() in addition to alias().\n if (aliases === undefined) return this._aliases;\n\n aliases.forEach((alias) => this.alias(alias));\n return this;\n }\n\n /**\n * Set / get the command usage `str`.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n usage(str) {\n if (str === undefined) {\n if (this._usage) return this._usage;\n\n const args = this.registeredArguments.map((arg) => {\n return humanReadableArgName(arg);\n });\n return []\n .concat(\n this.options.length || this._helpOption !== null ? '[options]' : [],\n this.commands.length ? '[command]' : [],\n this.registeredArguments.length ? args : [],\n )\n .join(' ');\n }\n\n this._usage = str;\n return this;\n }\n\n /**\n * Get or set the name of the command.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n name(str) {\n if (str === undefined) return this._name;\n this._name = str;\n return this;\n }\n\n /**\n * Set/get the help group heading for this subcommand in parent command's help.\n *\n * @param {string} [heading]\n * @return {Command | string}\n */\n\n helpGroup(heading) {\n if (heading === undefined) return this._helpGroupHeading ?? '';\n this._helpGroupHeading = heading;\n return this;\n }\n\n /**\n * Set/get the default help group heading for subcommands added to this command.\n * (This does not override a group set directly on the subcommand using .helpGroup().)\n *\n * @example\n * program.commandsGroup('Development Commands:);\n * program.command('watch')...\n * program.command('lint')...\n * ...\n *\n * @param {string} [heading]\n * @returns {Command | string}\n */\n commandsGroup(heading) {\n if (heading === undefined) return this._defaultCommandGroup ?? '';\n this._defaultCommandGroup = heading;\n return this;\n }\n\n /**\n * Set/get the default help group heading for options added to this command.\n * (This does not override a group set directly on the option using .helpGroup().)\n *\n * @example\n * program\n * .optionsGroup('Development Options:')\n * .option('-d, --debug', 'output extra debugging')\n * .option('-p, --profile', 'output profiling information')\n *\n * @param {string} [heading]\n * @returns {Command | string}\n */\n optionsGroup(heading) {\n if (heading === undefined) return this._defaultOptionGroup ?? '';\n this._defaultOptionGroup = heading;\n return this;\n }\n\n /**\n * @param {Option} option\n * @private\n */\n _initOptionGroup(option) {\n if (this._defaultOptionGroup && !option.helpGroupHeading)\n option.helpGroup(this._defaultOptionGroup);\n }\n\n /**\n * @param {Command} cmd\n * @private\n */\n _initCommandGroup(cmd) {\n if (this._defaultCommandGroup && !cmd.helpGroup())\n cmd.helpGroup(this._defaultCommandGroup);\n }\n\n /**\n * Set the name of the command from script filename, such as process.argv[1],\n * or require.main.filename, or __filename.\n *\n * (Used internally and public although not documented in README.)\n *\n * @example\n * program.nameFromFilename(require.main.filename);\n *\n * @param {string} filename\n * @return {Command}\n */\n\n nameFromFilename(filename) {\n this._name = path.basename(filename, path.extname(filename));\n\n return this;\n }\n\n /**\n * Get or set the directory for searching for executable subcommands of this command.\n *\n * @example\n * program.executableDir(__dirname);\n * // or\n * program.executableDir('subcommands');\n *\n * @param {string} [path]\n * @return {(string|null|Command)}\n */\n\n executableDir(path) {\n if (path === undefined) return this._executableDir;\n this._executableDir = path;\n return this;\n }\n\n /**\n * Return program help documentation.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to wrap for stderr instead of stdout\n * @return {string}\n */\n\n helpInformation(contextOptions) {\n const helper = this.createHelp();\n const context = this._getOutputContext(contextOptions);\n helper.prepareContext({\n error: context.error,\n helpWidth: context.helpWidth,\n outputHasColors: context.hasColors,\n });\n const text = helper.formatHelp(this, helper);\n if (context.hasColors) return text;\n return this._outputConfiguration.stripColor(text);\n }\n\n /**\n * @typedef HelpContext\n * @type {object}\n * @property {boolean} error\n * @property {number} helpWidth\n * @property {boolean} hasColors\n * @property {function} write - includes stripColor if needed\n *\n * @returns {HelpContext}\n * @private\n */\n\n _getOutputContext(contextOptions) {\n contextOptions = contextOptions || {};\n const error = !!contextOptions.error;\n let baseWrite;\n let hasColors;\n let helpWidth;\n if (error) {\n baseWrite = (str) => this._outputConfiguration.writeErr(str);\n hasColors = this._outputConfiguration.getErrHasColors();\n helpWidth = this._outputConfiguration.getErrHelpWidth();\n } else {\n baseWrite = (str) => this._outputConfiguration.writeOut(str);\n hasColors = this._outputConfiguration.getOutHasColors();\n helpWidth = this._outputConfiguration.getOutHelpWidth();\n }\n const write = (str) => {\n if (!hasColors) str = this._outputConfiguration.stripColor(str);\n return baseWrite(str);\n };\n return { error, write, hasColors, helpWidth };\n }\n\n /**\n * Output help information for this command.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n outputHelp(contextOptions) {\n let deprecatedCallback;\n if (typeof contextOptions === 'function') {\n deprecatedCallback = contextOptions;\n contextOptions = undefined;\n }\n\n const outputContext = this._getOutputContext(contextOptions);\n /** @type {HelpTextEventContext} */\n const eventContext = {\n error: outputContext.error,\n write: outputContext.write,\n command: this,\n };\n\n this._getCommandAndAncestors()\n .reverse()\n .forEach((command) => command.emit('beforeAllHelp', eventContext));\n this.emit('beforeHelp', eventContext);\n\n let helpInformation = this.helpInformation({ error: outputContext.error });\n if (deprecatedCallback) {\n helpInformation = deprecatedCallback(helpInformation);\n if (\n typeof helpInformation !== 'string' &&\n !Buffer.isBuffer(helpInformation)\n ) {\n throw new Error('outputHelp callback must return a string or a Buffer');\n }\n }\n outputContext.write(helpInformation);\n\n if (this._getHelpOption()?.long) {\n this.emit(this._getHelpOption().long); // deprecated\n }\n this.emit('afterHelp', eventContext);\n this._getCommandAndAncestors().forEach((command) =>\n command.emit('afterAllHelp', eventContext),\n );\n }\n\n /**\n * You can pass in flags and a description to customise the built-in help option.\n * Pass in false to disable the built-in help option.\n *\n * @example\n * program.helpOption('-?, --help' 'show help'); // customise\n * program.helpOption(false); // disable\n *\n * @param {(string | boolean)} flags\n * @param {string} [description]\n * @return {Command} `this` command for chaining\n */\n\n helpOption(flags, description) {\n // Support enabling/disabling built-in help option.\n if (typeof flags === 'boolean') {\n if (flags) {\n if (this._helpOption === null) this._helpOption = undefined; // reenable\n if (this._defaultOptionGroup) {\n // make the option to store the group\n this._initOptionGroup(this._getHelpOption());\n }\n } else {\n this._helpOption = null; // disable\n }\n return this;\n }\n\n // Customise flags and description.\n this._helpOption = this.createOption(\n flags ?? '-h, --help',\n description ?? 'display help for command',\n );\n // init group unless lazy create\n if (flags || description) this._initOptionGroup(this._helpOption);\n\n return this;\n }\n\n /**\n * Lazy create help option.\n * Returns null if has been disabled with .helpOption(false).\n *\n * @returns {(Option | null)} the help option\n * @package\n */\n _getHelpOption() {\n // Lazy create help option on demand.\n if (this._helpOption === undefined) {\n this.helpOption(undefined, undefined);\n }\n return this._helpOption;\n }\n\n /**\n * Supply your own option to use for the built-in help option.\n * This is an alternative to using helpOption() to customise the flags and description etc.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addHelpOption(option) {\n this._helpOption = option;\n this._initOptionGroup(option);\n return this;\n }\n\n /**\n * Output help information and exit.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n help(contextOptions) {\n this.outputHelp(contextOptions);\n let exitCode = Number(process.exitCode ?? 0); // process.exitCode does allow a string or an integer, but we prefer just a number\n if (\n exitCode === 0 &&\n contextOptions &&\n typeof contextOptions !== 'function' &&\n contextOptions.error\n ) {\n exitCode = 1;\n }\n // message: do not have all displayed text available so only passing placeholder.\n this._exit(exitCode, 'commander.help', '(outputHelp)');\n }\n\n /**\n * // Do a little typing to coordinate emit and listener for the help text events.\n * @typedef HelpTextEventContext\n * @type {object}\n * @property {boolean} error\n * @property {Command} command\n * @property {function} write\n */\n\n /**\n * Add additional text to be displayed with the built-in help.\n *\n * Position is 'before' or 'after' to affect just this command,\n * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.\n *\n * @param {string} position - before or after built-in help\n * @param {(string | Function)} text - string to add, or a function returning a string\n * @return {Command} `this` command for chaining\n */\n\n addHelpText(position, text) {\n const allowedValues = ['beforeAll', 'before', 'after', 'afterAll'];\n if (!allowedValues.includes(position)) {\n throw new Error(`Unexpected value for position to addHelpText.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n\n const helpEvent = `${position}Help`;\n this.on(helpEvent, (/** @type {HelpTextEventContext} */ context) => {\n let helpStr;\n if (typeof text === 'function') {\n helpStr = text({ error: context.error, command: context.command });\n } else {\n helpStr = text;\n }\n // Ignore falsy value when nothing to output.\n if (helpStr) {\n context.write(`${helpStr}\\n`);\n }\n });\n return this;\n }\n\n /**\n * Output help information if help flags specified\n *\n * @param {Array} args - array of options to search for help flags\n * @private\n */\n\n _outputHelpIfRequested(args) {\n const helpOption = this._getHelpOption();\n const helpRequested = helpOption && args.find((arg) => helpOption.is(arg));\n if (helpRequested) {\n this.outputHelp();\n // (Do not have all displayed text available so only passing placeholder.)\n this._exit(0, 'commander.helpDisplayed', '(outputHelp)');\n }\n }\n}\n\n/**\n * Scan arguments and increment port number for inspect calls (to avoid conflicts when spawning new command).\n *\n * @param {string[]} args - array of arguments from node.execArgv\n * @returns {string[]}\n * @private\n */\n\nfunction incrementNodeInspectorPort(args) {\n // Testing for these options:\n // --inspect[=[host:]port]\n // --inspect-brk[=[host:]port]\n // --inspect-port=[host:]port\n return args.map((arg) => {\n if (!arg.startsWith('--inspect')) {\n return arg;\n }\n let debugOption;\n let debugHost = '127.0.0.1';\n let debugPort = '9229';\n let match;\n if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {\n // e.g. --inspect\n debugOption = match[1];\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null\n ) {\n debugOption = match[1];\n if (/^\\d+$/.test(match[3])) {\n // e.g. --inspect=1234\n debugPort = match[3];\n } else {\n // e.g. --inspect=localhost\n debugHost = match[3];\n }\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\\d+)$/)) !== null\n ) {\n // e.g. --inspect=localhost:1234\n debugOption = match[1];\n debugHost = match[3];\n debugPort = match[4];\n }\n\n if (debugOption && debugPort !== '0') {\n return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;\n }\n return arg;\n });\n}\n\n/**\n * @returns {boolean | undefined}\n * @package\n */\nfunction useColor() {\n // Test for common conventions.\n // NB: the observed behaviour is in combination with how author adds color! For example:\n // - we do not test NODE_DISABLE_COLORS, but util:styletext does\n // - we do test NO_COLOR, but Chalk does not\n //\n // References:\n // https://no-color.org\n // https://bixense.com/clicolors/\n // https://github.com/nodejs/node/blob/0a00217a5f67ef4a22384cfc80eb6dd9a917fdc1/lib/internal/tty.js#L109\n // https://github.com/chalk/supports-color/blob/c214314a14bcb174b12b3014b2b0a8de375029ae/index.js#L33\n // (https://force-color.org recent web page from 2023, does not match major javascript implementations)\n\n if (\n process.env.NO_COLOR ||\n process.env.FORCE_COLOR === '0' ||\n process.env.FORCE_COLOR === 'false'\n )\n return false;\n if (process.env.FORCE_COLOR || process.env.CLICOLOR_FORCE !== undefined)\n return true;\n return undefined;\n}\n\nexports.Command = Command;\nexports.useColor = useColor; // exporting for tests\n",
11
11
  "const { Argument } = require('./lib/argument.js');\nconst { Command } = require('./lib/command.js');\nconst { CommanderError, InvalidArgumentError } = require('./lib/error.js');\nconst { Help } = require('./lib/help.js');\nconst { Option } = require('./lib/option.js');\n\nexports.program = new Command();\n\nexports.createCommand = (name) => new Command(name);\nexports.createOption = (flags, description) => new Option(flags, description);\nexports.createArgument = (name, description) => new Argument(name, description);\n\n/**\n * Expose classes\n */\n\nexports.Command = Command;\nexports.Option = Option;\nexports.Argument = Argument;\nexports.Help = Help;\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\nexports.InvalidOptionArgumentError = InvalidArgumentError; // Deprecated\n",
12
- "let e,t,r,{defineProperty:l,setPrototypeOf:n,create:o,keys:s}=Object,i=\"\",{round:c,max:a}=Math,p=e=>{let t=/([a-f\\d]{3,6})/i.exec(e)?.[1],r=t?.length,l=parseInt(6^r?3^r?\"0\":t[0]+t[0]+t[1]+t[1]+t[2]+t[2]:t,16);return[l>>16&255,l>>8&255,255&l]},u=(e,t,r)=>e^t||t^r?16+36*c(e/51)+6*c(t/51)+c(r/51):8>e?16:e>248?231:c(24*(e-8)/247)+232,d=e=>{let t,r,l,n,o;return 8>e?30+e:16>e?e-8+90:(232>e?(o=(e-=16)%36,t=(e/36|0)/5,r=(o/6|0)/5,l=o%6/5):t=r=l=(10*(e-232)+8)/255,n=2*a(t,r,l),n?30+(c(l)<<2|c(r)<<1|c(t))+(2^n?0:60):30)},f=(()=>{let r=e=>o.some((t=>e.test(t))),l=globalThis,n=l.process??{},o=n.argv??[],i=n.env??{},c=-1;try{e=\",\"+s(i).join(\",\")}catch(e){i={},c=0}let a=\"FORCE_COLOR\",p={false:0,0:0,1:1,2:2,3:3}[i[a]]??-1,u=a in i&&p||r(/^--color=?(true|always)?$/);return u&&(c=p),~c||(c=((r,l,n)=>(t=r.TERM,{\"24bit\":3,truecolor:3,ansi256:2,ansi:1}[r.COLORTERM]||(r.CI?/,GITHUB/.test(e)?3:1:l&&\"dumb\"!==t?n?3:/-256/.test(t)?2:1:0)))(i,!!i.PM2_HOME||i.NEXT_RUNTIME?.includes(\"edge\")||!!n.stdout?.isTTY,\"win32\"===n.platform)),!p||i.NO_COLOR||r(/^--(no-color|color=(false|never))$/)?0:l.window?.chrome||u&&!c?3:c})(),g={open:i,close:i},h=39,b=49,O={},m=({p:e},{open:t,close:l})=>{let o=(e,...r)=>{if(!e){if(t&&t===l)return t;if((e??i)===i)return i}let n,s=e.raw?String.raw({raw:e},...r):i+e,c=o.p,a=c.o,p=c.c;if(s.includes(\"\u001B\"))for(;c;c=c.p){let{open:e,close:t}=c,r=t.length,l=i,o=0;if(r)for(;~(n=s.indexOf(t,o));o=n+r)l+=s.slice(o,n)+e;s=l+s.slice(o)}return a+(s.includes(\"\\n\")?s.replace(/(\\r?\\n)/g,p+\"$1\"+a):s)+p},s=t,c=l;return e&&(s=e.o+t,c=l+e.c),n(o,r),o.p={open:t,close:l,o:s,c,p:e},o.open=s,o.close=c,o};const w=new function e(t=f){let s={Ansis:e,level:t,isSupported:()=>a,strip:e=>e.replace(/[\u001B›][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,i),extend(e){for(let t in e){let r=e[t],l=(typeof r)[0];\"s\"===l?(c(t,T(...p(r))),c(_(t),v(...p(r)))):c(t,r,\"f\"===l)}return r=o({},O),n(s,r),s}},c=(e,t,r)=>{O[e]={get(){let n=r?(...e)=>m(this,t(...e)):m(this,t);return l(this,e,{value:n}),n}}},a=t>0,w=(e,t)=>a?{open:`\u001B[${e}m`,close:`\u001B[${t}m`}:g,y=e=>t=>e(...p(t)),R=(e,t)=>(r,l,n)=>w(`${e}8;2;${r};${l};${n}`,t),$=(e,t)=>(r,l,n)=>w(((e,t,r)=>d(u(e,t,r)))(r,l,n)+e,t),x=e=>(t,r,l)=>e(u(t,r,l)),T=R(3,h),v=R(4,b),C=e=>w(\"38;5;\"+e,h),E=e=>w(\"48;5;\"+e,b);2===t?(T=x(C),v=x(E)):1===t&&(T=$(0,h),v=$(10,b),C=e=>w(d(e),h),E=e=>w(d(e)+10,b));let M,I={fg:C,bg:E,rgb:T,bgRgb:v,hex:y(T),bgHex:y(v),visible:g,reset:w(0,0),bold:w(1,22),dim:w(2,22),italic:w(3,23),underline:w(4,24),inverse:w(7,27),hidden:w(8,28),strikethrough:w(9,29)},_=e=>\"bg\"+e[0].toUpperCase()+e.slice(1),k=\"Bright\";return\"black,red,green,yellow,blue,magenta,cyan,white,gray\".split(\",\").map(((e,t)=>{M=_(e),8>t?(I[e+k]=w(90+t,h),I[M+k]=w(100+t,b)):t=60,I[e]=w(30+t,h),I[M]=w(40+t,b)})),s.extend(I)};module.exports=w,w.default=w;\n",
13
12
  "'use strict';\n\nconst spinners = Object.assign({}, require('./spinners.json')); // eslint-disable-line import/extensions\n\nconst spinnersList = Object.keys(spinners);\n\nObject.defineProperty(spinners, 'random', {\n\tget() {\n\t\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\t\tconst spinnerName = spinnersList[randomIndex];\n\t\treturn spinners[spinnerName];\n\t}\n});\n\nmodule.exports = spinners;\n",
14
13
  "// https://github.com/farzher/fuzzysort v3.0.2\r\n\r\n// UMD (Universal Module Definition) for fuzzysort\r\n;((root, UMD) => {\r\n if(typeof define === 'function' && define.amd) define([], UMD)\r\n else if(typeof module === 'object' && module.exports) module.exports = UMD()\r\n else root['fuzzysort'] = UMD()\r\n})(this, _ => {\r\n 'use strict'\r\n\r\n var single = (search, target) => {\r\n if(!search || !target) return NULL\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n var searchBitflags = preparedSearch.bitflags\r\n if((searchBitflags & target._bitflags) !== searchBitflags) return NULL\r\n\r\n return algorithm(preparedSearch, target)\r\n }\r\n\r\n var go = (search, targets, options) => {\r\n if(!search) return options?.all ? all(targets, options) : noResults\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n var searchBitflags = preparedSearch.bitflags\r\n var containsSpace = preparedSearch.containsSpace\r\n\r\n var threshold = denormalizeScore( options?.threshold || 0 )\r\n var limit = options?.limit || INFINITY\r\n\r\n var resultsLen = 0; var limitedCount = 0\r\n var targetsLen = targets.length\r\n\r\n function push_result(result) {\r\n if(resultsLen < limit) { q.add(result); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(result._score > q.peek()._score) q.replaceTop(result)\r\n }\r\n }\r\n\r\n // This code is copy/pasted 3 times for performance reasons [options.key, options.keys, no keys]\r\n\r\n // options.key\r\n if(options?.key) {\r\n var key = options.key\r\n for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n var target = getValue(obj, key)\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n result.obj = obj\r\n push_result(result)\r\n }\r\n\r\n // options.keys\r\n } else if(options?.keys) {\r\n var keys = options.keys\r\n var keysLen = keys.length\r\n\r\n outer: for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n\r\n { // early out based on bitflags\r\n var keysBitflags = 0\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n var key = keys[keyI]\r\n var target = getValue(obj, key)\r\n if(!target) { tmpTargets[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n tmpTargets[keyI] = target\r\n\r\n keysBitflags |= target._bitflags\r\n }\r\n\r\n if((searchBitflags & keysBitflags) !== searchBitflags) continue\r\n }\r\n\r\n if(containsSpace) for(let i=0; i<preparedSearch.spaceSearches.length; i++) keysSpacesBestScores[i] = NEGATIVE_INFINITY\r\n\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n target = tmpTargets[keyI]\r\n if(target === noTarget) { tmpResults[keyI] = noTarget; continue }\r\n\r\n tmpResults[keyI] = algorithm(preparedSearch, target, /*allowSpaces=*/false, /*allowPartialMatch=*/containsSpace)\r\n if(tmpResults[keyI] === NULL) { tmpResults[keyI] = noTarget; continue }\r\n\r\n // todo: this seems weird and wrong. like what if our first match wasn't good. this should just replace it instead of averaging with it\r\n // if our second match isn't good we ignore it instead of averaging with it\r\n if(containsSpace) for(let i=0; i<preparedSearch.spaceSearches.length; i++) {\r\n if(allowPartialMatchScores[i] > -1000) {\r\n if(keysSpacesBestScores[i] > NEGATIVE_INFINITY) {\r\n var tmp = (keysSpacesBestScores[i] + allowPartialMatchScores[i]) / 4/*bonus score for having multiple matches*/\r\n if(tmp > keysSpacesBestScores[i]) keysSpacesBestScores[i] = tmp\r\n }\r\n }\r\n if(allowPartialMatchScores[i] > keysSpacesBestScores[i]) keysSpacesBestScores[i] = allowPartialMatchScores[i]\r\n }\r\n }\r\n\r\n if(containsSpace) {\r\n for(let i=0; i<preparedSearch.spaceSearches.length; i++) { if(keysSpacesBestScores[i] === NEGATIVE_INFINITY) continue outer }\r\n } else {\r\n var hasAtLeast1Match = false\r\n for(let i=0; i < keysLen; i++) { if(tmpResults[i]._score !== NEGATIVE_INFINITY) { hasAtLeast1Match = true; break } }\r\n if(!hasAtLeast1Match) continue\r\n }\r\n\r\n var objResults = new KeysResult(keysLen)\r\n for(let i=0; i < keysLen; i++) { objResults[i] = tmpResults[i] }\r\n\r\n if(containsSpace) {\r\n var score = 0\r\n for(let i=0; i<preparedSearch.spaceSearches.length; i++) score += keysSpacesBestScores[i]\r\n } else {\r\n // todo could rewrite this scoring to be more similar to when there's spaces\r\n // if we match multiple keys give us bonus points\r\n var score = NEGATIVE_INFINITY\r\n for(let i=0; i<keysLen; i++) {\r\n var result = objResults[i]\r\n if(result._score > -1000) {\r\n if(score > NEGATIVE_INFINITY) {\r\n var tmp = (score + result._score) / 4/*bonus score for having multiple matches*/\r\n if(tmp > score) score = tmp\r\n }\r\n }\r\n if(result._score > score) score = result._score\r\n }\r\n }\r\n\r\n objResults.obj = obj\r\n objResults._score = score\r\n if(options?.scoreFn) {\r\n score = options.scoreFn(objResults)\r\n if(!score) continue\r\n score = denormalizeScore(score)\r\n objResults._score = score\r\n }\r\n\r\n if(score < threshold) continue\r\n push_result(objResults)\r\n }\r\n\r\n // no keys\r\n } else {\r\n for(var i = 0; i < targetsLen; ++i) { var target = targets[i]\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n push_result(result)\r\n }\r\n }\r\n\r\n if(resultsLen === 0) return noResults\r\n var results = new Array(resultsLen)\r\n for(var i = resultsLen - 1; i >= 0; --i) results[i] = q.poll()\r\n results.total = resultsLen + limitedCount\r\n return results\r\n }\r\n\r\n\r\n // this is written as 1 function instead of 2 for minification. perf seems fine ...\r\n // except when minified. the perf is very slow\r\n var highlight = (result, open='<b>', close='</b>') => {\r\n var callback = typeof open === 'function' ? open : undefined\r\n\r\n var target = result.target\r\n var targetLen = target.length\r\n var indexes = result.indexes\r\n var highlighted = ''\r\n var matchI = 0\r\n var indexesI = 0\r\n var opened = false\r\n var parts = []\r\n\r\n for(var i = 0; i < targetLen; ++i) { var char = target[i]\r\n if(indexes[indexesI] === i) {\r\n ++indexesI\r\n if(!opened) { opened = true\r\n if(callback) {\r\n parts.push(highlighted); highlighted = ''\r\n } else {\r\n highlighted += open\r\n }\r\n }\r\n\r\n if(indexesI === indexes.length) {\r\n if(callback) {\r\n highlighted += char\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n parts.push(target.substr(i+1))\r\n } else {\r\n highlighted += char + close + target.substr(i+1)\r\n }\r\n break\r\n }\r\n } else {\r\n if(opened) { opened = false\r\n if(callback) {\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n } else {\r\n highlighted += close\r\n }\r\n }\r\n }\r\n highlighted += char\r\n }\r\n\r\n return callback ? parts : highlighted\r\n }\r\n\r\n\r\n var prepare = (target) => {\r\n if(typeof target === 'number') target = ''+target\r\n else if(typeof target !== 'string') target = ''\r\n var info = prepareLowerInfo(target)\r\n return new_result(target, {_targetLower:info._lower, _targetLowerCodes:info.lowerCodes, _bitflags:info.bitflags})\r\n }\r\n\r\n var cleanup = () => { preparedCache.clear(); preparedSearchCache.clear() }\r\n\r\n\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n\r\n\r\n class Result {\r\n get ['indexes']() { return this._indexes.slice(0, this._indexes.len).sort((a,b)=>a-b) }\r\n set ['indexes'](indexes) { return this._indexes = indexes }\r\n ['highlight'](open, close) { return highlight(this, open, close) }\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n class KeysResult extends Array {\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n var new_result = (target, options) => {\r\n const result = new Result()\r\n result['target'] = target\r\n result['obj'] = options.obj ?? NULL\r\n result._score = options._score ?? NEGATIVE_INFINITY\r\n result._indexes = options._indexes ?? []\r\n result._targetLower = options._targetLower ?? ''\r\n result._targetLowerCodes = options._targetLowerCodes ?? NULL\r\n result._nextBeginningIndexes = options._nextBeginningIndexes ?? NULL\r\n result._bitflags = options._bitflags ?? 0\r\n return result\r\n }\r\n\r\n\r\n var normalizeScore = score => {\r\n if(score === NEGATIVE_INFINITY) return 0\r\n if(score > 1) return score\r\n return Math.E ** ( ((-score + 1)**.04307 - 1) * -2)\r\n }\r\n var denormalizeScore = normalizedScore => {\r\n if(normalizedScore === 0) return NEGATIVE_INFINITY\r\n if(normalizedScore > 1) return normalizedScore\r\n return 1 - Math.pow((Math.log(normalizedScore) / -2 + 1), 1 / 0.04307)\r\n }\r\n\r\n\r\n var prepareSearch = (search) => {\r\n if(typeof search === 'number') search = ''+search\r\n else if(typeof search !== 'string') search = ''\r\n search = search.trim()\r\n var info = prepareLowerInfo(search)\r\n\r\n var spaceSearches = []\r\n if(info.containsSpace) {\r\n var searches = search.split(/\\s+/)\r\n searches = [...new Set(searches)] // distinct\r\n for(var i=0; i<searches.length; i++) {\r\n if(searches[i] === '') continue\r\n var _info = prepareLowerInfo(searches[i])\r\n spaceSearches.push({lowerCodes:_info.lowerCodes, _lower:searches[i].toLowerCase(), containsSpace:false})\r\n }\r\n }\r\n\r\n return {lowerCodes: info.lowerCodes, _lower: info._lower, containsSpace: info.containsSpace, bitflags: info.bitflags, spaceSearches: spaceSearches}\r\n }\r\n\r\n\r\n\r\n var getPrepared = (target) => {\r\n if(target.length > 999) return prepare(target) // don't cache huge targets\r\n var targetPrepared = preparedCache.get(target)\r\n if(targetPrepared !== undefined) return targetPrepared\r\n targetPrepared = prepare(target)\r\n preparedCache.set(target, targetPrepared)\r\n return targetPrepared\r\n }\r\n var getPreparedSearch = (search) => {\r\n if(search.length > 999) return prepareSearch(search) // don't cache huge searches\r\n var searchPrepared = preparedSearchCache.get(search)\r\n if(searchPrepared !== undefined) return searchPrepared\r\n searchPrepared = prepareSearch(search)\r\n preparedSearchCache.set(search, searchPrepared)\r\n return searchPrepared\r\n }\r\n\r\n\r\n var all = (targets, options) => {\r\n var results = []; results.total = targets.length // this total can be wrong if some targets are skipped\r\n\r\n var limit = options?.limit || INFINITY\r\n\r\n if(options?.key) {\r\n for(var i=0;i<targets.length;i++) { var obj = targets[i]\r\n var target = getValue(obj, options.key)\r\n if(target == NULL) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n var result = new_result(target.target, {_score: target._score, obj: obj})\r\n results.push(result); if(results.length >= limit) return results\r\n }\r\n } else if(options?.keys) {\r\n for(var i=0;i<targets.length;i++) { var obj = targets[i]\r\n var objResults = new KeysResult(options.keys.length)\r\n for (var keyI = options.keys.length - 1; keyI >= 0; --keyI) {\r\n var target = getValue(obj, options.keys[keyI])\r\n if(!target) { objResults[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n target._score = NEGATIVE_INFINITY\r\n target._indexes.len = 0\r\n objResults[keyI] = target\r\n }\r\n objResults.obj = obj\r\n objResults._score = NEGATIVE_INFINITY\r\n results.push(objResults); if(results.length >= limit) return results\r\n }\r\n } else {\r\n for(var i=0;i<targets.length;i++) { var target = targets[i]\r\n if(target == NULL) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n target._score = NEGATIVE_INFINITY\r\n target._indexes.len = 0\r\n results.push(target); if(results.length >= limit) return results\r\n }\r\n }\r\n\r\n return results\r\n }\r\n\r\n\r\n var algorithm = (preparedSearch, prepared, allowSpaces=false, allowPartialMatch=false) => {\r\n if(allowSpaces===false && preparedSearch.containsSpace) return algorithmSpaces(preparedSearch, prepared, allowPartialMatch)\r\n\r\n var searchLower = preparedSearch._lower\r\n var searchLowerCodes = preparedSearch.lowerCodes\r\n var searchLowerCode = searchLowerCodes[0]\r\n var targetLowerCodes = prepared._targetLowerCodes\r\n var searchLen = searchLowerCodes.length\r\n var targetLen = targetLowerCodes.length\r\n var searchI = 0 // where we at\r\n var targetI = 0 // where you at\r\n var matchesSimpleLen = 0\r\n\r\n // very basic fuzzy match; to remove non-matching targets ASAP!\r\n // walk through target. find sequential matches.\r\n // if all chars aren't found then exit\r\n for(;;) {\r\n var isMatch = searchLowerCode === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesSimple[matchesSimpleLen++] = targetI\r\n ++searchI; if(searchI === searchLen) break\r\n searchLowerCode = searchLowerCodes[searchI]\r\n }\r\n ++targetI; if(targetI >= targetLen) return NULL // Failed to find searchI\r\n }\r\n\r\n var searchI = 0\r\n var successStrict = false\r\n var matchesStrictLen = 0\r\n\r\n var nextBeginningIndexes = prepared._nextBeginningIndexes\r\n if(nextBeginningIndexes === NULL) nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target)\r\n targetI = matchesSimple[0]===0 ? 0 : nextBeginningIndexes[matchesSimple[0]-1]\r\n\r\n // Our target string successfully matched all characters in sequence!\r\n // Let's try a more advanced and strict test to improve the score\r\n // only count it as a match if it's consecutive or a beginning character!\r\n var backtrackCount = 0\r\n if(targetI !== targetLen) for(;;) {\r\n if(targetI >= targetLen) {\r\n // We failed to find a good spot for this search char, go back to the previous search char and force it forward\r\n if(searchI <= 0) break // We failed to push chars forward for a better match\r\n\r\n ++backtrackCount; if(backtrackCount > 200) break // exponential backtracking is taking too long, just give up and return a bad match\r\n\r\n --searchI\r\n var lastMatch = matchesStrict[--matchesStrictLen]\r\n targetI = nextBeginningIndexes[lastMatch]\r\n\r\n } else {\r\n var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesStrict[matchesStrictLen++] = targetI\r\n ++searchI; if(searchI === searchLen) { successStrict = true; break }\r\n ++targetI\r\n } else {\r\n targetI = nextBeginningIndexes[targetI]\r\n }\r\n }\r\n }\r\n\r\n // check if it's a substring match\r\n var substringIndex = searchLen <= 1 ? -1 : prepared._targetLower.indexOf(searchLower, matchesSimple[0]) // perf: this is slow\r\n var isSubstring = !!~substringIndex\r\n var isSubstringBeginning = !isSubstring ? false : substringIndex===0 || prepared._nextBeginningIndexes[substringIndex-1] === substringIndex\r\n\r\n // if it's a substring match but not at a beginning index, let's try to find a substring starting at a beginning index for a better score\r\n if(isSubstring && !isSubstringBeginning) {\r\n for(var i=0; i<nextBeginningIndexes.length; i=nextBeginningIndexes[i]) {\r\n if(i <= substringIndex) continue\r\n\r\n for(var s=0; s<searchLen; s++) if(searchLowerCodes[s] !== prepared._targetLowerCodes[i+s]) break\r\n if(s === searchLen) { substringIndex = i; isSubstringBeginning = true; break }\r\n }\r\n }\r\n\r\n // tally up the score & keep track of matches for highlighting later\r\n // if it's a simple match, we'll switch to a substring match if a substring exists\r\n // if it's a strict match, we'll switch to a substring match only if that's a better score\r\n\r\n var calculateScore = matches => {\r\n var score = 0\r\n\r\n var extraMatchGroupCount = 0\r\n for(var i = 1; i < searchLen; ++i) {\r\n if(matches[i] - matches[i-1] !== 1) {score -= matches[i]; ++extraMatchGroupCount}\r\n }\r\n var unmatchedDistance = matches[searchLen-1] - matches[0] - (searchLen-1)\r\n\r\n score -= (12+unmatchedDistance) * extraMatchGroupCount // penality for more groups\r\n\r\n if(matches[0] !== 0) score -= matches[0]*matches[0]*.2 // penality for not starting near the beginning\r\n\r\n if(!successStrict) {\r\n score *= 1000\r\n } else {\r\n // successStrict on a target with too many beginning indexes loses points for being a bad target\r\n var uniqueBeginningIndexes = 1\r\n for(var i = nextBeginningIndexes[0]; i < targetLen; i=nextBeginningIndexes[i]) ++uniqueBeginningIndexes\r\n\r\n if(uniqueBeginningIndexes > 24) score *= (uniqueBeginningIndexes-24)*10 // quite arbitrary numbers here ...\r\n }\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n if(isSubstring) score /= 1+searchLen*searchLen*1 // bonus for being a full substring\r\n if(isSubstringBeginning) score /= 1+searchLen*searchLen*1 // bonus for substring starting on a beginningIndex\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n return score\r\n }\r\n\r\n if(!successStrict) {\r\n if(isSubstring) for(var i=0; i<searchLen; ++i) matchesSimple[i] = substringIndex+i // at this point it's safe to overwrite matchehsSimple with substr matches\r\n var matchesBest = matchesSimple\r\n var score = calculateScore(matchesBest)\r\n } else {\r\n if(isSubstringBeginning) {\r\n for(var i=0; i<searchLen; ++i) matchesSimple[i] = substringIndex+i // at this point it's safe to overwrite matchehsSimple with substr matches\r\n var matchesBest = matchesSimple\r\n var score = calculateScore(matchesSimple)\r\n } else {\r\n var matchesBest = matchesStrict\r\n var score = calculateScore(matchesStrict)\r\n }\r\n }\r\n\r\n prepared._score = score\r\n\r\n for(var i = 0; i < searchLen; ++i) prepared._indexes[i] = matchesBest[i]\r\n prepared._indexes.len = searchLen\r\n\r\n const result = new Result()\r\n result.target = prepared.target\r\n result._score = prepared._score\r\n result._indexes = prepared._indexes\r\n return result\r\n }\r\n var algorithmSpaces = (preparedSearch, target, allowPartialMatch) => {\r\n var seen_indexes = new Set()\r\n var score = 0\r\n var result = NULL\r\n\r\n var first_seen_index_last_search = 0\r\n var searches = preparedSearch.spaceSearches\r\n var searchesLen = searches.length\r\n var changeslen = 0\r\n\r\n // Return _nextBeginningIndexes back to its normal state\r\n var resetNextBeginningIndexes = () => {\r\n for(let i=changeslen-1; i>=0; i--) target._nextBeginningIndexes[nextBeginningIndexesChanges[i*2 + 0]] = nextBeginningIndexesChanges[i*2 + 1]\r\n }\r\n\r\n var hasAtLeast1Match = false\r\n for(var i=0; i<searchesLen; ++i) {\r\n allowPartialMatchScores[i] = NEGATIVE_INFINITY\r\n var search = searches[i]\r\n\r\n result = algorithm(search, target)\r\n if(allowPartialMatch) {\r\n if(result === NULL) continue\r\n hasAtLeast1Match = true\r\n } else {\r\n if(result === NULL) {resetNextBeginningIndexes(); return NULL}\r\n }\r\n\r\n // if not the last search, we need to mutate _nextBeginningIndexes for the next search\r\n var isTheLastSearch = i === searchesLen - 1\r\n if(!isTheLastSearch) {\r\n var indexes = result._indexes\r\n\r\n var indexesIsConsecutiveSubstring = true\r\n for(let i=0; i<indexes.len-1; i++) {\r\n if(indexes[i+1] - indexes[i] !== 1) {\r\n indexesIsConsecutiveSubstring = false; break;\r\n }\r\n }\r\n\r\n if(indexesIsConsecutiveSubstring) {\r\n var newBeginningIndex = indexes[indexes.len-1] + 1\r\n var toReplace = target._nextBeginningIndexes[newBeginningIndex-1]\r\n for(let i=newBeginningIndex-1; i>=0; i--) {\r\n if(toReplace !== target._nextBeginningIndexes[i]) break\r\n target._nextBeginningIndexes[i] = newBeginningIndex\r\n nextBeginningIndexesChanges[changeslen*2 + 0] = i\r\n nextBeginningIndexesChanges[changeslen*2 + 1] = toReplace\r\n changeslen++\r\n }\r\n }\r\n }\r\n\r\n score += result._score / searchesLen\r\n allowPartialMatchScores[i] = result._score / searchesLen\r\n\r\n // dock points based on order otherwise \"c man\" returns Manifest.cpp instead of CheatManager.h\r\n if(result._indexes[0] < first_seen_index_last_search) {\r\n score -= (first_seen_index_last_search - result._indexes[0]) * 2\r\n }\r\n first_seen_index_last_search = result._indexes[0]\r\n\r\n for(var j=0; j<result._indexes.len; ++j) seen_indexes.add(result._indexes[j])\r\n }\r\n\r\n if(allowPartialMatch && !hasAtLeast1Match) return NULL\r\n\r\n resetNextBeginningIndexes()\r\n\r\n // allows a search with spaces that's an exact substring to score well\r\n var allowSpacesResult = algorithm(preparedSearch, target, /*allowSpaces=*/true)\r\n if(allowSpacesResult !== NULL && allowSpacesResult._score > score) {\r\n if(allowPartialMatch) {\r\n for(var i=0; i<searchesLen; ++i) {\r\n allowPartialMatchScores[i] = allowSpacesResult._score / searchesLen\r\n }\r\n }\r\n return allowSpacesResult\r\n }\r\n\r\n if(allowPartialMatch) result = target\r\n result._score = score\r\n\r\n var i = 0\r\n for (let index of seen_indexes) result._indexes[i++] = index\r\n result._indexes.len = i\r\n\r\n return result\r\n }\r\n\r\n // we use this instead of just .normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') because that screws with japanese characters\r\n var remove_accents = (str) => str.replace(/\\p{Script=Latin}+/gu, match => match.normalize('NFD')).replace(/[\\u0300-\\u036f]/g, '')\r\n\r\n var prepareLowerInfo = (str) => {\r\n str = remove_accents(str)\r\n var strLen = str.length\r\n var lower = str.toLowerCase()\r\n var lowerCodes = [] // new Array(strLen) sparse array is too slow\r\n var bitflags = 0\r\n var containsSpace = false // space isn't stored in bitflags because of how searching with a space works\r\n\r\n for(var i = 0; i < strLen; ++i) {\r\n var lowerCode = lowerCodes[i] = lower.charCodeAt(i)\r\n\r\n if(lowerCode === 32) {\r\n containsSpace = true\r\n continue // it's important that we don't set any bitflags for space\r\n }\r\n\r\n var bit = lowerCode>=97&&lowerCode<=122 ? lowerCode-97 // alphabet\r\n : lowerCode>=48&&lowerCode<=57 ? 26 // numbers\r\n // 3 bits available\r\n : lowerCode<=127 ? 30 // other ascii\r\n : 31 // other utf8\r\n bitflags |= 1<<bit\r\n }\r\n\r\n return {lowerCodes:lowerCodes, bitflags:bitflags, containsSpace:containsSpace, _lower:lower}\r\n }\r\n var prepareBeginningIndexes = (target) => {\r\n var targetLen = target.length\r\n var beginningIndexes = []; var beginningIndexesLen = 0\r\n var wasUpper = false\r\n var wasAlphanum = false\r\n for(var i = 0; i < targetLen; ++i) {\r\n var targetCode = target.charCodeAt(i)\r\n var isUpper = targetCode>=65&&targetCode<=90\r\n var isAlphanum = isUpper || targetCode>=97&&targetCode<=122 || targetCode>=48&&targetCode<=57\r\n var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum\r\n wasUpper = isUpper\r\n wasAlphanum = isAlphanum\r\n if(isBeginning) beginningIndexes[beginningIndexesLen++] = i\r\n }\r\n return beginningIndexes\r\n }\r\n var prepareNextBeginningIndexes = (target) => {\r\n target = remove_accents(target)\r\n var targetLen = target.length\r\n var beginningIndexes = prepareBeginningIndexes(target)\r\n var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow\r\n var lastIsBeginning = beginningIndexes[0]\r\n var lastIsBeginningI = 0\r\n for(var i = 0; i < targetLen; ++i) {\r\n if(lastIsBeginning > i) {\r\n nextBeginningIndexes[i] = lastIsBeginning\r\n } else {\r\n lastIsBeginning = beginningIndexes[++lastIsBeginningI]\r\n nextBeginningIndexes[i] = lastIsBeginning===undefined ? targetLen : lastIsBeginning\r\n }\r\n }\r\n return nextBeginningIndexes\r\n }\r\n\r\n var preparedCache = new Map()\r\n var preparedSearchCache = new Map()\r\n\r\n // the theory behind these being globals is to reduce garbage collection by not making new arrays\r\n var matchesSimple = []; var matchesStrict = []\r\n var nextBeginningIndexesChanges = [] // allows straw berry to match strawberry well, by modifying the end of a substring to be considered a beginning index for the rest of the search\r\n var keysSpacesBestScores = []; var allowPartialMatchScores = []\r\n var tmpTargets = []; var tmpResults = []\r\n\r\n // prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]\r\n // prop = 'key1.key2' 10ms\r\n // prop = ['key1', 'key2'] 27ms\r\n // prop = obj => obj.tags.join() ??ms\r\n var getValue = (obj, prop) => {\r\n var tmp = obj[prop]; if(tmp !== undefined) return tmp\r\n if(typeof prop === 'function') return prop(obj) // this should run first. but that makes string props slower\r\n var segs = prop\r\n if(!Array.isArray(prop)) segs = prop.split('.')\r\n var len = segs.length\r\n var i = -1\r\n while (obj && (++i < len)) obj = obj[segs[i]]\r\n return obj\r\n }\r\n\r\n var isPrepared = (x) => { return typeof x === 'object' && typeof x._bitflags === 'number' }\r\n var INFINITY = Infinity; var NEGATIVE_INFINITY = -INFINITY\r\n var noResults = []; noResults.total = 0\r\n var NULL = null\r\n\r\n var noTarget = prepare('')\r\n\r\n // Hacked version of https://github.com/lemire/FastPriorityQueue.js\r\n var fastpriorityqueue=r=>{var e=[],o=0,a={},v=r=>{for(var a=0,v=e[a],c=1;c<o;){var s=c+1;a=c,s<o&&e[s]._score<e[c]._score&&(a=s),e[a-1>>1]=e[a],c=1+(a<<1)}for(var f=a-1>>1;a>0&&v._score<e[f]._score;f=(a=f)-1>>1)e[a]=e[f];e[a]=v};return a.add=(r=>{var a=o;e[o++]=r;for(var v=a-1>>1;a>0&&r._score<e[v]._score;v=(a=v)-1>>1)e[a]=e[v];e[a]=r}),a.poll=(r=>{if(0!==o){var a=e[0];return e[0]=e[--o],v(),a}}),a.peek=(r=>{if(0!==o)return e[0]}),a.replaceTop=(r=>{e[0]=r,v()}),a}\r\n var q = fastpriorityqueue() // reuse this\r\n\r\n // fuzzysort is written this way for minification. all names are mangeled unless quoted\r\n return {'single':single, 'go':go, 'prepare':prepare, 'cleanup':cleanup}\r\n}) // UMD\r\n",
15
14
  "import commander from './index.js';\n\n// wrapper to provide named exports for ESM.\nexport const {\n program,\n createCommand,\n createArgument,\n createOption,\n CommanderError,\n InvalidArgumentError,\n InvalidOptionArgumentError, // deprecated old name\n Command,\n Argument,\n Option,\n Help,\n} = commander;\n",
16
- "/**\n * OCX CLI - add command\n * Install components from registries\n */\n\nimport { createHash } from \"node:crypto\"\nimport { existsSync } from \"node:fs\"\nimport { mkdir, writeFile } from \"node:fs/promises\"\nimport { dirname, join } from \"node:path\"\nimport { parseNi, run } from \"@antfu/ni\"\nimport type { Command } from \"commander\"\nimport { fetchFileContent, fetchRegistryIndex } from \"../registry/fetcher.js\"\nimport type { ResolvedComponent } from \"../registry/resolver.js\"\nimport { type ResolvedDependencies, resolveDependencies } from \"../registry/resolver.js\"\nimport { type OcxLock, readOcxConfig, readOcxLock } from \"../schemas/config.js\"\nimport type { ComponentFileObject } from \"../schemas/registry.js\"\nimport { updateOpencodeConfig } from \"../updaters/update-opencode-config.js\"\nimport { ConfigError, ConflictError, IntegrityError } from \"../utils/errors.js\"\nimport { createSpinner, handleError, logger } from \"../utils/index.js\"\n\ninterface AddOptions {\n\tyes?: boolean\n\tdryRun?: boolean\n\tcwd?: string\n\tquiet?: boolean\n\tverbose?: boolean\n\tjson?: boolean\n}\n\nexport function registerAddCommand(program: Command): void {\n\tprogram\n\t\t.command(\"add\")\n\t\t.description(\"Add components to your project\")\n\t\t.argument(\"<components...>\", \"Components to install\")\n\t\t.option(\"-y, --yes\", \"Skip prompts\")\n\t\t.option(\"--dry-run\", \"Show what would be installed without making changes\")\n\t\t.option(\"--cwd <path>\", \"Working directory\", process.cwd())\n\t\t.option(\"-q, --quiet\", \"Suppress output\")\n\t\t.option(\"-v, --verbose\", \"Verbose output\")\n\t\t.option(\"--json\", \"Output as JSON\")\n\t\t.action(async (components: string[], options: AddOptions) => {\n\t\t\ttry {\n\t\t\t\tawait runAdd(components, options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n\nasync function runAdd(componentNames: string[], options: AddOptions): Promise<void> {\n\tconst cwd = options.cwd ?? process.cwd()\n\tconst lockPath = join(cwd, \"ocx.lock\")\n\n\t// Load config\n\tconst config = await readOcxConfig(cwd)\n\tif (!config) {\n\t\tthrow new ConfigError(\"No ocx.jsonc found. Run 'ocx init' first.\")\n\t}\n\n\t// Load or create lock\n\tlet lock: OcxLock = { lockVersion: 1, installed: {} }\n\tconst existingLock = await readOcxLock(cwd)\n\tif (existingLock) {\n\t\tlock = existingLock\n\t}\n\n\tconst spin = options.quiet ? null : createSpinner({ text: \"Resolving dependencies...\" })\n\tspin?.start()\n\n\ttry {\n\t\t// Resolve all dependencies across all configured registries\n\t\tconst resolved = await resolveDependencies(config.registries, componentNames)\n\n\t\tspin?.succeed(`Resolved ${resolved.components.length} components`)\n\n\t\tif (options.verbose) {\n\t\t\tlogger.info(\"Install order:\")\n\t\t\tfor (const name of resolved.installOrder) {\n\t\t\t\tlogger.info(` - ${name}`)\n\t\t\t}\n\t\t}\n\n\t\tif (options.dryRun) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Dry run - no changes made\")\n\t\t\tlogResolved(resolved)\n\t\t\treturn\n\t\t}\n\n\t\t// Install components\n\t\tconst installSpin = options.quiet ? null : createSpinner({ text: \"Installing components...\" })\n\t\tinstallSpin?.start()\n\n\t\tfor (const component of resolved.components) {\n\t\t\t// Fetch component files and compute bundle hash\n\t\t\tconst files: { path: string; content: Buffer }[] = []\n\t\t\tfor (const file of component.files) {\n\t\t\t\tconst content = await fetchFileContent(component.baseUrl, component.name, file.path)\n\t\t\t\tfiles.push({ path: file.path, content: Buffer.from(content) })\n\t\t\t}\n\n\t\t\tconst computedHash = await hashBundle(files)\n\n\t\t\t// Verify integrity if already in lock (use qualifiedName as key)\n\t\t\tconst existingEntry = lock.installed[component.qualifiedName]\n\t\t\tif (existingEntry && existingEntry.hash !== computedHash) {\n\t\t\t\tthrow new IntegrityError(component.qualifiedName, existingEntry.hash, computedHash)\n\t\t\t}\n\n\t\t\t// Check for file conflicts with components from other namespaces\n\t\t\tfor (const file of component.files) {\n\t\t\t\tconst targetPath = join(cwd, file.target)\n\t\t\t\tif (existsSync(targetPath)) {\n\t\t\t\t\t// File exists - check if it's from the same component (re-install) or different (conflict)\n\t\t\t\t\tconst conflictingComponent = findComponentByFile(lock, file.target)\n\t\t\t\t\tif (conflictingComponent && conflictingComponent !== component.qualifiedName) {\n\t\t\t\t\t\tthrow new ConflictError(\n\t\t\t\t\t\t\t`File conflict: ${file.target} already exists (installed by '${conflictingComponent}').\\n\\n` +\n\t\t\t\t\t\t\t\t`To resolve:\\n` +\n\t\t\t\t\t\t\t\t` 1. Remove existing: rm ${file.target}\\n` +\n\t\t\t\t\t\t\t\t` 2. Or rename it manually and update references\\n` +\n\t\t\t\t\t\t\t\t` 3. Then run: ocx add ${component.qualifiedName}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Install component\n\t\t\tawait installComponent(component, files, cwd)\n\n\t\t\t// Fetch registry index to get version for lockfile\n\t\t\tconst index = await fetchRegistryIndex(component.baseUrl)\n\n\t\t\t// Update lock with qualifiedName as key (namespace/component format)\n\t\t\tlock.installed[component.qualifiedName] = {\n\t\t\t\tregistry: component.registryName,\n\t\t\t\tversion: index.version,\n\t\t\t\thash: computedHash,\n\t\t\t\tfiles: component.files.map((f) => f.target),\n\t\t\t\tinstalledAt: new Date().toISOString(),\n\t\t\t}\n\t\t}\n\n\t\tinstallSpin?.succeed(`Installed ${resolved.components.length} components`)\n\n\t\t// Apply opencode.json changes (MCP servers, plugins, agent configs, instructions, disabled tools)\n\t\tconst hasMcpChanges =\n\t\t\tObject.keys(resolved.mcpServers).length > 0 || resolved.agentMcpBindings.length > 0\n\t\tconst hasDisabledTools = resolved.disabledTools.length > 0\n\t\tconst hasPlugins = resolved.plugins.length > 0\n\t\tconst hasAgentConfigs = Object.keys(resolved.agentConfigs).length > 0\n\t\tconst hasInstructions = resolved.instructions.length > 0\n\n\t\tif (hasMcpChanges || hasDisabledTools || hasPlugins || hasAgentConfigs || hasInstructions) {\n\t\t\tconst result = await updateOpencodeConfig(cwd, {\n\t\t\t\tmcpServers: resolved.mcpServers,\n\t\t\t\tagentMcpBindings: resolved.agentMcpBindings,\n\t\t\t\tdisabledTools: resolved.disabledTools,\n\t\t\t\tplugins: resolved.plugins,\n\t\t\t\tagentConfigs: resolved.agentConfigs,\n\t\t\t\tinstructions: resolved.instructions,\n\t\t\t})\n\n\t\t\tif (result.mcpSkipped.length > 0 && !options.quiet) {\n\t\t\t\tfor (const name of result.mcpSkipped) {\n\t\t\t\t\tlogger.warn(`MCP server \"${name}\" already configured, skipped`)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!options.quiet && result.mcpAdded.length > 0) {\n\t\t\t\tlogger.info(`Configured ${result.mcpAdded.length} MCP servers`)\n\n\t\t\t\t// Log agent-scoped bindings\n\t\t\t\tfor (const binding of resolved.agentMcpBindings) {\n\t\t\t\t\tlogger.info(` Scoped to agent \"${binding.agentName}\": ${binding.serverNames.join(\", \")}`)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!options.quiet && result.toolsDisabled.length > 0) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`Disabled ${result.toolsDisabled.length} tools: ${result.toolsDisabled.join(\", \")}`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (!options.quiet && result.pluginsAdded.length > 0) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`Added ${result.pluginsAdded.length} plugins: ${result.pluginsAdded.join(\", \")}`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (!options.quiet && result.agentsConfigured.length > 0) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`Configured ${result.agentsConfigured.length} agents: ${result.agentsConfigured.join(\", \")}`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (!options.quiet && result.instructionsAdded.length > 0) {\n\t\t\t\tlogger.info(`Added ${result.instructionsAdded.length} instructions`)\n\t\t\t}\n\t\t}\n\n\t\t// Install npm dependencies\n\t\tconst hasNpmDeps = resolved.npmDependencies.length > 0\n\t\tconst hasNpmDevDeps = resolved.npmDevDependencies.length > 0\n\n\t\tif (hasNpmDeps || hasNpmDevDeps) {\n\t\t\tconst npmSpin = options.quiet\n\t\t\t\t? null\n\t\t\t\t: createSpinner({ text: \"Installing npm dependencies...\" })\n\t\t\tnpmSpin?.start()\n\n\t\t\ttry {\n\t\t\t\tawait installNpmDependencies(\n\t\t\t\t\tresolved.npmDependencies,\n\t\t\t\t\tresolved.npmDevDependencies,\n\t\t\t\t\tcwd,\n\t\t\t\t\toptions,\n\t\t\t\t)\n\t\t\t\tconst totalDeps = resolved.npmDependencies.length + resolved.npmDevDependencies.length\n\t\t\t\tnpmSpin?.succeed(`Installed ${totalDeps} npm dependencies`)\n\t\t\t} catch (error) {\n\t\t\t\tnpmSpin?.fail(\"Failed to install npm dependencies\")\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\n\t\t// Save lock file\n\t\tawait writeFile(lockPath, JSON.stringify(lock, null, 2), \"utf-8\")\n\n\t\tif (options.json) {\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tinstalled: resolved.installOrder,\n\t\t\t\t\t\tmcpServers: Object.keys(resolved.mcpServers),\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2,\n\t\t\t\t),\n\t\t\t)\n\t\t} else if (!options.quiet) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.success(`Done! Installed ${resolved.components.length} components.`)\n\t\t}\n\t} catch (error) {\n\t\tspin?.fail(\"Failed to resolve dependencies\")\n\t\tthrow error\n\t}\n}\n\nasync function installComponent(\n\tcomponent: ResolvedComponent,\n\tfiles: { path: string; content: Buffer }[],\n\tcwd: string,\n): Promise<void> {\n\tfor (const file of files) {\n\t\tconst componentFile = component.files.find((f: ComponentFileObject) => f.path === file.path)\n\t\tif (!componentFile) continue\n\n\t\tconst targetPath = join(cwd, componentFile.target)\n\t\tconst targetDir = dirname(targetPath)\n\n\t\t// Create directory if needed\n\t\tif (!existsSync(targetDir)) {\n\t\t\tawait mkdir(targetDir, { recursive: true })\n\t\t}\n\n\t\tawait writeFile(targetPath, file.content)\n\t}\n}\n\nasync function hashContent(content: string | Buffer): Promise<string> {\n\treturn createHash(\"sha256\").update(content).digest(\"hex\")\n}\n\nasync function hashBundle(files: { path: string; content: Buffer }[]): Promise<string> {\n\t// Sort files for deterministic hashing\n\tconst sorted = [...files].sort((a, b) => a.path.localeCompare(b.path))\n\n\t// Create a manifest of file hashes\n\tconst manifestParts: string[] = []\n\tfor (const file of sorted) {\n\t\tconst hash = await hashContent(file.content)\n\t\tmanifestParts.push(`${file.path}:${hash}`)\n\t}\n\n\t// Hash the manifest itself\n\treturn hashContent(manifestParts.join(\"\\n\"))\n}\n\nfunction logResolved(resolved: ResolvedDependencies): void {\n\tlogger.info(\"\")\n\tlogger.info(\"Would install:\")\n\tfor (const component of resolved.components) {\n\t\tlogger.info(` ${component.name} (${component.type}) from ${component.registryName}`)\n\t}\n\n\tif (Object.keys(resolved.mcpServers).length > 0) {\n\t\tlogger.info(\"\")\n\t\tlogger.info(\"Would configure MCP servers:\")\n\t\tfor (const name of Object.keys(resolved.mcpServers)) {\n\t\t\tlogger.info(` ${name}`)\n\t\t}\n\t}\n\n\tif (resolved.npmDependencies.length > 0) {\n\t\tlogger.info(\"\")\n\t\tlogger.info(\"Would install npm dependencies:\")\n\t\tfor (const dep of resolved.npmDependencies) {\n\t\t\tlogger.info(` ${dep}`)\n\t\t}\n\t}\n\n\tif (resolved.npmDevDependencies.length > 0) {\n\t\tlogger.info(\"\")\n\t\tlogger.info(\"Would install npm dev dependencies:\")\n\t\tfor (const dep of resolved.npmDevDependencies) {\n\t\t\tlogger.info(` ${dep}`)\n\t\t}\n\t}\n}\n\nasync function installNpmDependencies(\n\tdependencies: string[],\n\tdevDependencies: string[],\n\tcwd: string,\n\toptions: AddOptions,\n): Promise<void> {\n\t// Install regular dependencies\n\tif (dependencies.length > 0) {\n\t\tif (options.verbose) {\n\t\t\tlogger.info(`Installing: ${dependencies.join(\", \")}`)\n\t\t}\n\t\tawait run(parseNi, dependencies, { cwd })\n\t}\n\n\t// Install dev dependencies\n\tif (devDependencies.length > 0) {\n\t\tif (options.verbose) {\n\t\t\tlogger.info(`Installing dev: ${devDependencies.join(\", \")}`)\n\t\t}\n\t\tawait run(parseNi, [...devDependencies, \"-D\"], { cwd })\n\t}\n}\n\n/**\n * Find which component installed a given file path\n */\nfunction findComponentByFile(lock: OcxLock, filePath: string): string | null {\n\tfor (const [qualifiedName, entry] of Object.entries(lock.installed)) {\n\t\tif (entry.files.includes(filePath)) {\n\t\t\treturn qualifiedName\n\t\t}\n\t}\n\treturn null\n}\n",
17
- "import path, { join, dirname, resolve } from 'node:path';\nimport process$1 from 'node:process';\nimport require$$0 from 'readline';\nimport require$$2 from 'events';\nimport c from 'ansis';\nimport { detect as detect$1, AGENTS } from 'package-manager-detector';\nimport { x } from 'tinyexec';\nimport fs, { promises, existsSync } from 'node:fs';\nimport { INSTALL_PAGE } from 'package-manager-detector/constants';\nimport require$$0$1 from 'os';\nimport require$$1 from 'tty';\nimport os from 'node:os';\nimport require$$0$2 from 'fs';\nimport require$$1$1 from 'fs/promises';\nimport require$$1$2 from 'path';\nimport { COMMANDS, constructCommand } from 'package-manager-detector/commands';\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar ini$1;\nvar hasRequiredIni;\n\nfunction requireIni () {\n\tif (hasRequiredIni) return ini$1;\n\thasRequiredIni = 1;\n\tconst { hasOwnProperty } = Object.prototype;\n\n\tconst encode = (obj, opt = {}) => {\n\t if (typeof opt === 'string') {\n\t opt = { section: opt };\n\t }\n\t opt.align = opt.align === true;\n\t opt.newline = opt.newline === true;\n\t opt.sort = opt.sort === true;\n\t opt.whitespace = opt.whitespace === true || opt.align === true;\n\t // The `typeof` check is required because accessing the `process` directly fails on browsers.\n\t /* istanbul ignore next */\n\t opt.platform = opt.platform || (typeof process !== 'undefined' && process.platform);\n\t opt.bracketedArray = opt.bracketedArray !== false;\n\n\t /* istanbul ignore next */\n\t const eol = opt.platform === 'win32' ? '\\r\\n' : '\\n';\n\t const separator = opt.whitespace ? ' = ' : '=';\n\t const children = [];\n\n\t const keys = opt.sort ? Object.keys(obj).sort() : Object.keys(obj);\n\n\t let padToChars = 0;\n\t // If aligning on the separator, then padToChars is determined as follows:\n\t // 1. Get the keys\n\t // 2. Exclude keys pointing to objects unless the value is null or an array\n\t // 3. Add `[]` to array keys\n\t // 4. Ensure non empty set of keys\n\t // 5. Reduce the set to the longest `safe` key\n\t // 6. Get the `safe` length\n\t if (opt.align) {\n\t padToChars = safe(\n\t (\n\t keys\n\t .filter(k => obj[k] === null || Array.isArray(obj[k]) || typeof obj[k] !== 'object')\n\t .map(k => Array.isArray(obj[k]) ? `${k}[]` : k)\n\t )\n\t .concat([''])\n\t .reduce((a, b) => safe(a).length >= safe(b).length ? a : b)\n\t ).length;\n\t }\n\n\t let out = '';\n\t const arraySuffix = opt.bracketedArray ? '[]' : '';\n\n\t for (const k of keys) {\n\t const val = obj[k];\n\t if (val && Array.isArray(val)) {\n\t for (const item of val) {\n\t out += safe(`${k}${arraySuffix}`).padEnd(padToChars, ' ') + separator + safe(item) + eol;\n\t }\n\t } else if (val && typeof val === 'object') {\n\t children.push(k);\n\t } else {\n\t out += safe(k).padEnd(padToChars, ' ') + separator + safe(val) + eol;\n\t }\n\t }\n\n\t if (opt.section && out.length) {\n\t out = '[' + safe(opt.section) + ']' + (opt.newline ? eol + eol : eol) + out;\n\t }\n\n\t for (const k of children) {\n\t const nk = splitSections(k, '.').join('\\\\.');\n\t const section = (opt.section ? opt.section + '.' : '') + nk;\n\t const child = encode(obj[k], {\n\t ...opt,\n\t section,\n\t });\n\t if (out.length && child.length) {\n\t out += eol;\n\t }\n\n\t out += child;\n\t }\n\n\t return out\n\t};\n\n\tfunction splitSections (str, separator) {\n\t var lastMatchIndex = 0;\n\t var lastSeparatorIndex = 0;\n\t var nextIndex = 0;\n\t var sections = [];\n\n\t do {\n\t nextIndex = str.indexOf(separator, lastMatchIndex);\n\n\t if (nextIndex !== -1) {\n\t lastMatchIndex = nextIndex + separator.length;\n\n\t if (nextIndex > 0 && str[nextIndex - 1] === '\\\\') {\n\t continue\n\t }\n\n\t sections.push(str.slice(lastSeparatorIndex, nextIndex));\n\t lastSeparatorIndex = nextIndex + separator.length;\n\t }\n\t } while (nextIndex !== -1)\n\n\t sections.push(str.slice(lastSeparatorIndex));\n\n\t return sections\n\t}\n\n\tconst decode = (str, opt = {}) => {\n\t opt.bracketedArray = opt.bracketedArray !== false;\n\t const out = Object.create(null);\n\t let p = out;\n\t let section = null;\n\t // section |key = value\n\t const re = /^\\[([^\\]]*)\\]\\s*$|^([^=]+)(=(.*))?$/i;\n\t const lines = str.split(/[\\r\\n]+/g);\n\t const duplicates = {};\n\n\t for (const line of lines) {\n\t if (!line || line.match(/^\\s*[;#]/) || line.match(/^\\s*$/)) {\n\t continue\n\t }\n\t const match = line.match(re);\n\t if (!match) {\n\t continue\n\t }\n\t if (match[1] !== undefined) {\n\t section = unsafe(match[1]);\n\t if (section === '__proto__') {\n\t // not allowed\n\t // keep parsing the section, but don't attach it.\n\t p = Object.create(null);\n\t continue\n\t }\n\t p = out[section] = out[section] || Object.create(null);\n\t continue\n\t }\n\t const keyRaw = unsafe(match[2]);\n\t let isArray;\n\t if (opt.bracketedArray) {\n\t isArray = keyRaw.length > 2 && keyRaw.slice(-2) === '[]';\n\t } else {\n\t duplicates[keyRaw] = (duplicates?.[keyRaw] || 0) + 1;\n\t isArray = duplicates[keyRaw] > 1;\n\t }\n\t const key = isArray && keyRaw.endsWith('[]')\n\t ? keyRaw.slice(0, -2) : keyRaw;\n\n\t if (key === '__proto__') {\n\t continue\n\t }\n\t const valueRaw = match[3] ? unsafe(match[4]) : true;\n\t const value = valueRaw === 'true' ||\n\t valueRaw === 'false' ||\n\t valueRaw === 'null' ? JSON.parse(valueRaw)\n\t : valueRaw;\n\n\t // Convert keys with '[]' suffix to an array\n\t if (isArray) {\n\t if (!hasOwnProperty.call(p, key)) {\n\t p[key] = [];\n\t } else if (!Array.isArray(p[key])) {\n\t p[key] = [p[key]];\n\t }\n\t }\n\n\t // safeguard against resetting a previously defined\n\t // array by accidentally forgetting the brackets\n\t if (Array.isArray(p[key])) {\n\t p[key].push(value);\n\t } else {\n\t p[key] = value;\n\t }\n\t }\n\n\t // {a:{y:1},\"a.b\":{x:2}} --> {a:{y:1,b:{x:2}}}\n\t // use a filter to return the keys that have to be deleted.\n\t const remove = [];\n\t for (const k of Object.keys(out)) {\n\t if (!hasOwnProperty.call(out, k) ||\n\t typeof out[k] !== 'object' ||\n\t Array.isArray(out[k])) {\n\t continue\n\t }\n\n\t // see if the parent section is also an object.\n\t // if so, add it to that, and mark this one for deletion\n\t const parts = splitSections(k, '.');\n\t p = out;\n\t const l = parts.pop();\n\t const nl = l.replace(/\\\\\\./g, '.');\n\t for (const part of parts) {\n\t if (part === '__proto__') {\n\t continue\n\t }\n\t if (!hasOwnProperty.call(p, part) || typeof p[part] !== 'object') {\n\t p[part] = Object.create(null);\n\t }\n\t p = p[part];\n\t }\n\t if (p === out && nl === l) {\n\t continue\n\t }\n\n\t p[nl] = out[k];\n\t remove.push(k);\n\t }\n\t for (const del of remove) {\n\t delete out[del];\n\t }\n\n\t return out\n\t};\n\n\tconst isQuoted = val => {\n\t return (val.startsWith('\"') && val.endsWith('\"')) ||\n\t (val.startsWith(\"'\") && val.endsWith(\"'\"))\n\t};\n\n\tconst safe = val => {\n\t if (\n\t typeof val !== 'string' ||\n\t val.match(/[=\\r\\n]/) ||\n\t val.match(/^\\[/) ||\n\t (val.length > 1 && isQuoted(val)) ||\n\t val !== val.trim()\n\t ) {\n\t return JSON.stringify(val)\n\t }\n\t return val.split(';').join('\\\\;').split('#').join('\\\\#')\n\t};\n\n\tconst unsafe = val => {\n\t val = (val || '').trim();\n\t if (isQuoted(val)) {\n\t // remove the single quotes before calling JSON.parse\n\t if (val.charAt(0) === \"'\") {\n\t val = val.slice(1, -1);\n\t }\n\t try {\n\t val = JSON.parse(val);\n\t } catch {\n\t // ignore errors\n\t }\n\t } else {\n\t // walk the val to find the first not-escaped ; character\n\t let esc = false;\n\t let unesc = '';\n\t for (let i = 0, l = val.length; i < l; i++) {\n\t const c = val.charAt(i);\n\t if (esc) {\n\t if ('\\\\;#'.indexOf(c) !== -1) {\n\t unesc += c;\n\t } else {\n\t unesc += '\\\\' + c;\n\t }\n\n\t esc = false;\n\t } else if (';#'.indexOf(c) !== -1) {\n\t break\n\t } else if (c === '\\\\') {\n\t esc = true;\n\t } else {\n\t unesc += c;\n\t }\n\t }\n\t if (esc) {\n\t unesc += '\\\\';\n\t }\n\n\t return unesc.trim()\n\t }\n\t return val\n\t};\n\n\tini$1 = {\n\t parse: decode,\n\t decode,\n\t stringify: encode,\n\t encode,\n\t safe,\n\t unsafe,\n\t};\n\treturn ini$1;\n}\n\nvar iniExports = requireIni();\nconst ini = /*@__PURE__*/getDefaultExportFromCjs(iniExports);\n\nvar prompts$2 = {};\n\nvar kleur;\nvar hasRequiredKleur;\n\nfunction requireKleur () {\n\tif (hasRequiredKleur) return kleur;\n\thasRequiredKleur = 1;\n\n\tlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\n\tif (typeof process !== 'undefined') {\n\t\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\t\tisTTY = process.stdout && process.stdout.isTTY;\n\t}\n\n\tconst $ = {\n\t\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t\t),\n\n\t\t// modifiers\n\t\treset: init(0, 0),\n\t\tbold: init(1, 22),\n\t\tdim: init(2, 22),\n\t\titalic: init(3, 23),\n\t\tunderline: init(4, 24),\n\t\tinverse: init(7, 27),\n\t\thidden: init(8, 28),\n\t\tstrikethrough: init(9, 29),\n\n\t\t// colors\n\t\tblack: init(30, 39),\n\t\tred: init(31, 39),\n\t\tgreen: init(32, 39),\n\t\tyellow: init(33, 39),\n\t\tblue: init(34, 39),\n\t\tmagenta: init(35, 39),\n\t\tcyan: init(36, 39),\n\t\twhite: init(37, 39),\n\t\tgray: init(90, 39),\n\t\tgrey: init(90, 39),\n\n\t\t// background colors\n\t\tbgBlack: init(40, 49),\n\t\tbgRed: init(41, 49),\n\t\tbgGreen: init(42, 49),\n\t\tbgYellow: init(43, 49),\n\t\tbgBlue: init(44, 49),\n\t\tbgMagenta: init(45, 49),\n\t\tbgCyan: init(46, 49),\n\t\tbgWhite: init(47, 49)\n\t};\n\n\tfunction run(arr, str) {\n\t\tlet i=0, tmp, beg='', end='';\n\t\tfor (; i < arr.length; i++) {\n\t\t\ttmp = arr[i];\n\t\t\tbeg += tmp.open;\n\t\t\tend += tmp.close;\n\t\t\tif (!!~str.indexOf(tmp.close)) {\n\t\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t\t}\n\t\t}\n\t\treturn beg + str + end;\n\t}\n\n\tfunction chain(has, keys) {\n\t\tlet ctx = { has, keys };\n\n\t\tctx.reset = $.reset.bind(ctx);\n\t\tctx.bold = $.bold.bind(ctx);\n\t\tctx.dim = $.dim.bind(ctx);\n\t\tctx.italic = $.italic.bind(ctx);\n\t\tctx.underline = $.underline.bind(ctx);\n\t\tctx.inverse = $.inverse.bind(ctx);\n\t\tctx.hidden = $.hidden.bind(ctx);\n\t\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\t\tctx.black = $.black.bind(ctx);\n\t\tctx.red = $.red.bind(ctx);\n\t\tctx.green = $.green.bind(ctx);\n\t\tctx.yellow = $.yellow.bind(ctx);\n\t\tctx.blue = $.blue.bind(ctx);\n\t\tctx.magenta = $.magenta.bind(ctx);\n\t\tctx.cyan = $.cyan.bind(ctx);\n\t\tctx.white = $.white.bind(ctx);\n\t\tctx.gray = $.gray.bind(ctx);\n\t\tctx.grey = $.grey.bind(ctx);\n\n\t\tctx.bgBlack = $.bgBlack.bind(ctx);\n\t\tctx.bgRed = $.bgRed.bind(ctx);\n\t\tctx.bgGreen = $.bgGreen.bind(ctx);\n\t\tctx.bgYellow = $.bgYellow.bind(ctx);\n\t\tctx.bgBlue = $.bgBlue.bind(ctx);\n\t\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\t\tctx.bgCyan = $.bgCyan.bind(ctx);\n\t\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\t\treturn ctx;\n\t}\n\n\tfunction init(open, close) {\n\t\tlet blk = {\n\t\t\topen: `\\x1b[${open}m`,\n\t\t\tclose: `\\x1b[${close}m`,\n\t\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t\t};\n\t\treturn function (txt) {\n\t\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\t\t!!~this.has.indexOf(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t\t}\n\t\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t\t};\n\t}\n\n\tkleur = $;\n\treturn kleur;\n}\n\nvar action;\nvar hasRequiredAction;\n\nfunction requireAction () {\n\tif (hasRequiredAction) return action;\n\thasRequiredAction = 1;\n\n\taction = (key, isSelect) => {\n\t if (key.meta && key.name !== 'escape') return;\n\n\t if (key.ctrl) {\n\t if (key.name === 'a') return 'first';\n\t if (key.name === 'c') return 'abort';\n\t if (key.name === 'd') return 'abort';\n\t if (key.name === 'e') return 'last';\n\t if (key.name === 'g') return 'reset';\n\t if (key.name === 'n') return 'down';\n\t if (key.name === 'p') return 'up';\n\t // avoid any non-ascii characters\n\t return\n\t }\n\n\t if (isSelect) {\n\t if (key.name === 'j') return 'down';\n\t if (key.name === 'k') return 'up';\n\t }\n\n\t if (key.name === 'return') return 'submit';\n\t if (key.name === 'enter') return 'submit'; // ctrl + J\n\t if (key.name === 'backspace') return 'delete';\n\t if (key.name === 'delete') return 'deleteForward';\n\t if (key.name === 'abort') return 'abort';\n\t if (key.name === 'escape') return 'exit';\n\t // TODO: shift tab for prev\n\t if (key.name === 'tab') return 'next';\n\t if (key.name === 'pagedown') return 'nextPage';\n\t if (key.name === 'pageup') return 'prevPage';\n\t // TODO create home() in prompt types (e.g. TextPrompt)\n\t if (key.name === 'home') return 'home';\n\t // TODO create end() in prompt types (e.g. TextPrompt)\n\t if (key.name === 'end') return 'end';\n\n\t if (key.name === 'up') return 'up';\n\t if (key.name === 'down') return 'down';\n\t if (key.name === 'right') return 'right';\n\t if (key.name === 'left') return 'left';\n\n\t return false;\n\t};\n\treturn action;\n}\n\nvar strip;\nvar hasRequiredStrip;\n\nfunction requireStrip () {\n\tif (hasRequiredStrip) return strip;\n\thasRequiredStrip = 1;\n\n\tstrip = str => {\n\t const pattern = [\n\t '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t '(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PRZcf-ntqry=><~]))'\n\t ].join('|');\n\n\t const RGX = new RegExp(pattern, 'g');\n\t return typeof str === 'string' ? str.replace(RGX, '') : str;\n\t};\n\treturn strip;\n}\n\nvar src;\nvar hasRequiredSrc;\n\nfunction requireSrc () {\n\tif (hasRequiredSrc) return src;\n\thasRequiredSrc = 1;\n\n\tconst ESC = '\\x1B';\n\tconst CSI = `${ESC}[`;\n\tconst beep = '\\u0007';\n\n\tconst cursor = {\n\t to(x, y) {\n\t if (!y) return `${CSI}${x + 1}G`;\n\t return `${CSI}${y + 1};${x + 1}H`;\n\t },\n\t move(x, y) {\n\t let ret = '';\n\n\t if (x < 0) ret += `${CSI}${-x}D`;\n\t else if (x > 0) ret += `${CSI}${x}C`;\n\n\t if (y < 0) ret += `${CSI}${-y}A`;\n\t else if (y > 0) ret += `${CSI}${y}B`;\n\n\t return ret;\n\t },\n\t up: (count = 1) => `${CSI}${count}A`,\n\t down: (count = 1) => `${CSI}${count}B`,\n\t forward: (count = 1) => `${CSI}${count}C`,\n\t backward: (count = 1) => `${CSI}${count}D`,\n\t nextLine: (count = 1) => `${CSI}E`.repeat(count),\n\t prevLine: (count = 1) => `${CSI}F`.repeat(count),\n\t left: `${CSI}G`,\n\t hide: `${CSI}?25l`,\n\t show: `${CSI}?25h`,\n\t save: `${ESC}7`,\n\t restore: `${ESC}8`\n\t};\n\n\tconst scroll = {\n\t up: (count = 1) => `${CSI}S`.repeat(count),\n\t down: (count = 1) => `${CSI}T`.repeat(count)\n\t};\n\n\tconst erase = {\n\t screen: `${CSI}2J`,\n\t up: (count = 1) => `${CSI}1J`.repeat(count),\n\t down: (count = 1) => `${CSI}J`.repeat(count),\n\t line: `${CSI}2K`,\n\t lineEnd: `${CSI}K`,\n\t lineStart: `${CSI}1K`,\n\t lines(count) {\n\t let clear = '';\n\t for (let i = 0; i < count; i++)\n\t clear += this.line + (i < count - 1 ? cursor.up() : '');\n\t if (count)\n\t clear += cursor.left;\n\t return clear;\n\t }\n\t};\n\n\tsrc = { cursor, scroll, erase, beep };\n\treturn src;\n}\n\nvar clear;\nvar hasRequiredClear;\n\nfunction requireClear () {\n\tif (hasRequiredClear) return clear;\n\thasRequiredClear = 1;\n\n\tconst strip = requireStrip();\n\tconst { erase, cursor } = requireSrc();\n\n\tconst width = str => [...strip(str)].length;\n\n\t/**\n\t * @param {string} prompt\n\t * @param {number} perLine\n\t */\n\tclear = function(prompt, perLine) {\n\t if (!perLine) return erase.line + cursor.to(0);\n\n\t let rows = 0;\n\t const lines = prompt.split(/\\r?\\n/);\n\t for (let line of lines) {\n\t rows += 1 + Math.floor(Math.max(width(line) - 1, 0) / perLine);\n\t }\n\n\t return erase.lines(rows);\n\t};\n\treturn clear;\n}\n\nvar figures_1;\nvar hasRequiredFigures;\n\nfunction requireFigures () {\n\tif (hasRequiredFigures) return figures_1;\n\thasRequiredFigures = 1;\n\n\t const main = {\n\t arrowUp: '↑',\n\t arrowDown: '↓',\n\t arrowLeft: '←',\n\t arrowRight: '→',\n\t radioOn: '◉',\n\t radioOff: '◯',\n\t tick: '✔',\t\n\t cross: '✖',\t\n\t ellipsis: '…',\t\n\t pointerSmall: '›',\t\n\t line: '─',\t\n\t pointer: '❯'\t\n\t};\t\n\tconst win = {\n\t arrowUp: main.arrowUp,\n\t arrowDown: main.arrowDown,\n\t arrowLeft: main.arrowLeft,\n\t arrowRight: main.arrowRight,\n\t radioOn: '(*)',\n\t radioOff: '( )',\t\n\t tick: '√',\t\n\t cross: '×',\t\n\t ellipsis: '...',\t\n\t pointerSmall: '»',\t\n\t line: '─',\t\n\t pointer: '>'\t\n\t};\t\n\tconst figures = process.platform === 'win32' ? win : main;\t\n\n\t figures_1 = figures;\n\treturn figures_1;\n}\n\nvar style;\nvar hasRequiredStyle;\n\nfunction requireStyle () {\n\tif (hasRequiredStyle) return style;\n\thasRequiredStyle = 1;\n\n\tconst c = requireKleur();\n\tconst figures = requireFigures();\n\n\t// rendering user input.\n\tconst styles = Object.freeze({\n\t password: { scale: 1, render: input => '*'.repeat(input.length) },\n\t emoji: { scale: 2, render: input => '😃'.repeat(input.length) },\n\t invisible: { scale: 0, render: input => '' },\n\t default: { scale: 1, render: input => `${input}` }\n\t});\n\tconst render = type => styles[type] || styles.default;\n\n\t// icon to signalize a prompt.\n\tconst symbols = Object.freeze({\n\t aborted: c.red(figures.cross),\n\t done: c.green(figures.tick),\n\t exited: c.yellow(figures.cross),\n\t default: c.cyan('?')\n\t});\n\n\tconst symbol = (done, aborted, exited) =>\n\t aborted ? symbols.aborted : exited ? symbols.exited : done ? symbols.done : symbols.default;\n\n\t// between the question and the user's input.\n\tconst delimiter = completing =>\n\t c.gray(completing ? figures.ellipsis : figures.pointerSmall);\n\n\tconst item = (expandable, expanded) =>\n\t c.gray(expandable ? (expanded ? figures.pointerSmall : '+') : figures.line);\n\n\tstyle = {\n\t styles,\n\t render,\n\t symbols,\n\t symbol,\n\t delimiter,\n\t item\n\t};\n\treturn style;\n}\n\nvar lines;\nvar hasRequiredLines;\n\nfunction requireLines () {\n\tif (hasRequiredLines) return lines;\n\thasRequiredLines = 1;\n\n\tconst strip = requireStrip();\n\n\t/**\n\t * @param {string} msg\n\t * @param {number} perLine\n\t */\n\tlines = function (msg, perLine) {\n\t let lines = String(strip(msg) || '').split(/\\r?\\n/);\n\n\t if (!perLine) return lines.length;\n\t return lines.map(l => Math.ceil(l.length / perLine))\n\t .reduce((a, b) => a + b);\n\t};\n\treturn lines;\n}\n\nvar wrap;\nvar hasRequiredWrap;\n\nfunction requireWrap () {\n\tif (hasRequiredWrap) return wrap;\n\thasRequiredWrap = 1;\n\n\t/**\n\t * @param {string} msg The message to wrap\n\t * @param {object} opts\n\t * @param {number|string} [opts.margin] Left margin\n\t * @param {number} opts.width Maximum characters per line including the margin\n\t */\n\twrap = (msg, opts = {}) => {\n\t const tab = Number.isSafeInteger(parseInt(opts.margin))\n\t ? new Array(parseInt(opts.margin)).fill(' ').join('')\n\t : (opts.margin || '');\n\n\t const width = opts.width;\n\n\t return (msg || '').split(/\\r?\\n/g)\n\t .map(line => line\n\t .split(/\\s+/g)\n\t .reduce((arr, w) => {\n\t if (w.length + tab.length >= width || arr[arr.length - 1].length + w.length + 1 < width)\n\t arr[arr.length - 1] += ` ${w}`;\n\t else arr.push(`${tab}${w}`);\n\t return arr;\n\t }, [ tab ])\n\t .join('\\n'))\n\t .join('\\n');\n\t};\n\treturn wrap;\n}\n\nvar entriesToDisplay;\nvar hasRequiredEntriesToDisplay;\n\nfunction requireEntriesToDisplay () {\n\tif (hasRequiredEntriesToDisplay) return entriesToDisplay;\n\thasRequiredEntriesToDisplay = 1;\n\n\t/**\n\t * Determine what entries should be displayed on the screen, based on the\n\t * currently selected index and the maximum visible. Used in list-based\n\t * prompts like `select` and `multiselect`.\n\t *\n\t * @param {number} cursor the currently selected entry\n\t * @param {number} total the total entries available to display\n\t * @param {number} [maxVisible] the number of entries that can be displayed\n\t */\n\tentriesToDisplay = (cursor, total, maxVisible) => {\n\t maxVisible = maxVisible || total;\n\n\t let startIndex = Math.min(total- maxVisible, cursor - Math.floor(maxVisible / 2));\n\t if (startIndex < 0) startIndex = 0;\n\n\t let endIndex = Math.min(startIndex + maxVisible, total);\n\n\t return { startIndex, endIndex };\n\t};\n\treturn entriesToDisplay;\n}\n\nvar util;\nvar hasRequiredUtil;\n\nfunction requireUtil () {\n\tif (hasRequiredUtil) return util;\n\thasRequiredUtil = 1;\n\n\tutil = {\n\t action: requireAction(),\n\t clear: requireClear(),\n\t style: requireStyle(),\n\t strip: requireStrip(),\n\t figures: requireFigures(),\n\t lines: requireLines(),\n\t wrap: requireWrap(),\n\t entriesToDisplay: requireEntriesToDisplay()\n\t};\n\treturn util;\n}\n\nvar prompt;\nvar hasRequiredPrompt;\n\nfunction requirePrompt () {\n\tif (hasRequiredPrompt) return prompt;\n\thasRequiredPrompt = 1;\n\n\tconst readline = require$$0;\n\tconst { action } = requireUtil();\n\tconst EventEmitter = require$$2;\n\tconst { beep, cursor } = requireSrc();\n\tconst color = requireKleur();\n\n\t/**\n\t * Base prompt skeleton\n\t * @param {Stream} [opts.stdin] The Readable stream to listen to\n\t * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n\t */\n\tclass Prompt extends EventEmitter {\n\t constructor(opts={}) {\n\t super();\n\n\t this.firstRender = true;\n\t this.in = opts.stdin || process.stdin;\n\t this.out = opts.stdout || process.stdout;\n\t this.onRender = (opts.onRender || (() => void 0)).bind(this);\n\t const rl = readline.createInterface({ input:this.in, escapeCodeTimeout:50 });\n\t readline.emitKeypressEvents(this.in, rl);\n\n\t if (this.in.isTTY) this.in.setRawMode(true);\n\t const isSelect = [ 'SelectPrompt', 'MultiselectPrompt' ].indexOf(this.constructor.name) > -1;\n\t const keypress = (str, key) => {\n\t let a = action(key, isSelect);\n\t if (a === false) {\n\t this._ && this._(str, key);\n\t } else if (typeof this[a] === 'function') {\n\t this[a](key);\n\t } else {\n\t this.bell();\n\t }\n\t };\n\n\t this.close = () => {\n\t this.out.write(cursor.show);\n\t this.in.removeListener('keypress', keypress);\n\t if (this.in.isTTY) this.in.setRawMode(false);\n\t rl.close();\n\t this.emit(this.aborted ? 'abort' : this.exited ? 'exit' : 'submit', this.value);\n\t this.closed = true;\n\t };\n\n\t this.in.on('keypress', keypress);\n\t }\n\n\t fire() {\n\t this.emit('state', {\n\t value: this.value,\n\t aborted: !!this.aborted,\n\t exited: !!this.exited\n\t });\n\t }\n\n\t bell() {\n\t this.out.write(beep);\n\t }\n\n\t render() {\n\t this.onRender(color);\n\t if (this.firstRender) this.firstRender = false;\n\t }\n\t}\n\n\tprompt = Prompt;\n\treturn prompt;\n}\n\nvar text;\nvar hasRequiredText;\n\nfunction requireText () {\n\tif (hasRequiredText) return text;\n\thasRequiredText = 1;\n\tconst color = requireKleur();\n\tconst Prompt = requirePrompt();\n\tconst { erase, cursor } = requireSrc();\n\tconst { style, clear, lines, figures } = requireUtil();\n\n\t/**\n\t * TextPrompt Base Element\n\t * @param {Object} opts Options\n\t * @param {String} opts.message Message\n\t * @param {String} [opts.style='default'] Render style\n\t * @param {String} [opts.initial] Default value\n\t * @param {Function} [opts.validate] Validate function\n\t * @param {Stream} [opts.stdin] The Readable stream to listen to\n\t * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n\t * @param {String} [opts.error] The invalid error label\n\t */\n\tclass TextPrompt extends Prompt {\n\t constructor(opts={}) {\n\t super(opts);\n\t this.transform = style.render(opts.style);\n\t this.scale = this.transform.scale;\n\t this.msg = opts.message;\n\t this.initial = opts.initial || ``;\n\t this.validator = opts.validate || (() => true);\n\t this.value = ``;\n\t this.errorMsg = opts.error || `Please Enter A Valid Value`;\n\t this.cursor = Number(!!this.initial);\n\t this.cursorOffset = 0;\n\t this.clear = clear(``, this.out.columns);\n\t this.render();\n\t }\n\n\t set value(v) {\n\t if (!v && this.initial) {\n\t this.placeholder = true;\n\t this.rendered = color.gray(this.transform.render(this.initial));\n\t } else {\n\t this.placeholder = false;\n\t this.rendered = this.transform.render(v);\n\t }\n\t this._value = v;\n\t this.fire();\n\t }\n\n\t get value() {\n\t return this._value;\n\t }\n\n\t reset() {\n\t this.value = ``;\n\t this.cursor = Number(!!this.initial);\n\t this.cursorOffset = 0;\n\t this.fire();\n\t this.render();\n\t }\n\n\t exit() {\n\t this.abort();\n\t }\n\n\t abort() {\n\t this.value = this.value || this.initial;\n\t this.done = this.aborted = true;\n\t this.error = false;\n\t this.red = false;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t async validate() {\n\t let valid = await this.validator(this.value);\n\t if (typeof valid === `string`) {\n\t this.errorMsg = valid;\n\t valid = false;\n\t }\n\t this.error = !valid;\n\t }\n\n\t async submit() {\n\t this.value = this.value || this.initial;\n\t this.cursorOffset = 0;\n\t this.cursor = this.rendered.length;\n\t await this.validate();\n\t if (this.error) {\n\t this.red = true;\n\t this.fire();\n\t this.render();\n\t return;\n\t }\n\t this.done = true;\n\t this.aborted = false;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t next() {\n\t if (!this.placeholder) return this.bell();\n\t this.value = this.initial;\n\t this.cursor = this.rendered.length;\n\t this.fire();\n\t this.render();\n\t }\n\n\t moveCursor(n) {\n\t if (this.placeholder) return;\n\t this.cursor = this.cursor+n;\n\t this.cursorOffset += n;\n\t }\n\n\t _(c, key) {\n\t let s1 = this.value.slice(0, this.cursor);\n\t let s2 = this.value.slice(this.cursor);\n\t this.value = `${s1}${c}${s2}`;\n\t this.red = false;\n\t this.cursor = this.placeholder ? 0 : s1.length+1;\n\t this.render();\n\t }\n\n\t delete() {\n\t if (this.isCursorAtStart()) return this.bell();\n\t let s1 = this.value.slice(0, this.cursor-1);\n\t let s2 = this.value.slice(this.cursor);\n\t this.value = `${s1}${s2}`;\n\t this.red = false;\n\t if (this.isCursorAtStart()) {\n\t this.cursorOffset = 0;\n\t } else {\n\t this.cursorOffset++;\n\t this.moveCursor(-1);\n\t }\n\t this.render();\n\t }\n\n\t deleteForward() {\n\t if(this.cursor*this.scale >= this.rendered.length || this.placeholder) return this.bell();\n\t let s1 = this.value.slice(0, this.cursor);\n\t let s2 = this.value.slice(this.cursor+1);\n\t this.value = `${s1}${s2}`;\n\t this.red = false;\n\t if (this.isCursorAtEnd()) {\n\t this.cursorOffset = 0;\n\t } else {\n\t this.cursorOffset++;\n\t }\n\t this.render();\n\t }\n\n\t first() {\n\t this.cursor = 0;\n\t this.render();\n\t }\n\n\t last() {\n\t this.cursor = this.value.length;\n\t this.render();\n\t }\n\n\t left() {\n\t if (this.cursor <= 0 || this.placeholder) return this.bell();\n\t this.moveCursor(-1);\n\t this.render();\n\t }\n\n\t right() {\n\t if (this.cursor*this.scale >= this.rendered.length || this.placeholder) return this.bell();\n\t this.moveCursor(1);\n\t this.render();\n\t }\n\n\t isCursorAtStart() {\n\t return this.cursor === 0 || (this.placeholder && this.cursor === 1);\n\t }\n\n\t isCursorAtEnd() {\n\t return this.cursor === this.rendered.length || (this.placeholder && this.cursor === this.rendered.length + 1)\n\t }\n\n\t render() {\n\t if (this.closed) return;\n\t if (!this.firstRender) {\n\t if (this.outputError)\n\t this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns));\n\t this.out.write(clear(this.outputText, this.out.columns));\n\t }\n\t super.render();\n\t this.outputError = '';\n\n\t this.outputText = [\n\t style.symbol(this.done, this.aborted),\n\t color.bold(this.msg),\n\t style.delimiter(this.done),\n\t this.red ? color.red(this.rendered) : this.rendered\n\t ].join(` `);\n\n\t if (this.error) {\n\t this.outputError += this.errorMsg.split(`\\n`)\n\t .reduce((a, l, i) => a + `\\n${i ? ' ' : figures.pointerSmall} ${color.red().italic(l)}`, ``);\n\t }\n\n\t this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore + cursor.move(this.cursorOffset, 0));\n\t }\n\t}\n\n\ttext = TextPrompt;\n\treturn text;\n}\n\nvar select;\nvar hasRequiredSelect;\n\nfunction requireSelect () {\n\tif (hasRequiredSelect) return select;\n\thasRequiredSelect = 1;\n\n\tconst color = requireKleur();\n\tconst Prompt = requirePrompt();\n\tconst { style, clear, figures, wrap, entriesToDisplay } = requireUtil();\n\tconst { cursor } = requireSrc();\n\n\t/**\n\t * SelectPrompt Base Element\n\t * @param {Object} opts Options\n\t * @param {String} opts.message Message\n\t * @param {Array} opts.choices Array of choice objects\n\t * @param {String} [opts.hint] Hint to display\n\t * @param {Number} [opts.initial] Index of default value\n\t * @param {Stream} [opts.stdin] The Readable stream to listen to\n\t * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n\t * @param {Number} [opts.optionsPerPage=10] Max options to display at once\n\t */\n\tclass SelectPrompt extends Prompt {\n\t constructor(opts={}) {\n\t super(opts);\n\t this.msg = opts.message;\n\t this.hint = opts.hint || '- Use arrow-keys. Return to submit.';\n\t this.warn = opts.warn || '- This option is disabled';\n\t this.cursor = opts.initial || 0;\n\t this.choices = opts.choices.map((ch, idx) => {\n\t if (typeof ch === 'string')\n\t ch = {title: ch, value: idx};\n\t return {\n\t title: ch && (ch.title || ch.value || ch),\n\t value: ch && (ch.value === undefined ? idx : ch.value),\n\t description: ch && ch.description,\n\t selected: ch && ch.selected,\n\t disabled: ch && ch.disabled\n\t };\n\t });\n\t this.optionsPerPage = opts.optionsPerPage || 10;\n\t this.value = (this.choices[this.cursor] || {}).value;\n\t this.clear = clear('', this.out.columns);\n\t this.render();\n\t }\n\n\t moveCursor(n) {\n\t this.cursor = n;\n\t this.value = this.choices[n].value;\n\t this.fire();\n\t }\n\n\t reset() {\n\t this.moveCursor(0);\n\t this.fire();\n\t this.render();\n\t }\n\n\t exit() {\n\t this.abort();\n\t }\n\n\t abort() {\n\t this.done = this.aborted = true;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t submit() {\n\t if (!this.selection.disabled) {\n\t this.done = true;\n\t this.aborted = false;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t } else\n\t this.bell();\n\t }\n\n\t first() {\n\t this.moveCursor(0);\n\t this.render();\n\t }\n\n\t last() {\n\t this.moveCursor(this.choices.length - 1);\n\t this.render();\n\t }\n\n\t up() {\n\t if (this.cursor === 0) {\n\t this.moveCursor(this.choices.length - 1);\n\t } else {\n\t this.moveCursor(this.cursor - 1);\n\t }\n\t this.render();\n\t }\n\n\t down() {\n\t if (this.cursor === this.choices.length - 1) {\n\t this.moveCursor(0);\n\t } else {\n\t this.moveCursor(this.cursor + 1);\n\t }\n\t this.render();\n\t }\n\n\t next() {\n\t this.moveCursor((this.cursor + 1) % this.choices.length);\n\t this.render();\n\t }\n\n\t _(c, key) {\n\t if (c === ' ') return this.submit();\n\t }\n\n\t get selection() {\n\t return this.choices[this.cursor];\n\t }\n\n\t render() {\n\t if (this.closed) return;\n\t if (this.firstRender) this.out.write(cursor.hide);\n\t else this.out.write(clear(this.outputText, this.out.columns));\n\t super.render();\n\n\t let { startIndex, endIndex } = entriesToDisplay(this.cursor, this.choices.length, this.optionsPerPage);\n\n\t // Print prompt\n\t this.outputText = [\n\t style.symbol(this.done, this.aborted),\n\t color.bold(this.msg),\n\t style.delimiter(false),\n\t this.done ? this.selection.title : this.selection.disabled\n\t ? color.yellow(this.warn) : color.gray(this.hint)\n\t ].join(' ');\n\n\t // Print choices\n\t if (!this.done) {\n\t this.outputText += '\\n';\n\t for (let i = startIndex; i < endIndex; i++) {\n\t let title, prefix, desc = '', v = this.choices[i];\n\n\t // Determine whether to display \"more choices\" indicators\n\t if (i === startIndex && startIndex > 0) {\n\t prefix = figures.arrowUp;\n\t } else if (i === endIndex - 1 && endIndex < this.choices.length) {\n\t prefix = figures.arrowDown;\n\t } else {\n\t prefix = ' ';\n\t }\n\n\t if (v.disabled) {\n\t title = this.cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);\n\t prefix = (this.cursor === i ? color.bold().gray(figures.pointer) + ' ' : ' ') + prefix;\n\t } else {\n\t title = this.cursor === i ? color.cyan().underline(v.title) : v.title;\n\t prefix = (this.cursor === i ? color.cyan(figures.pointer) + ' ' : ' ') + prefix;\n\t if (v.description && this.cursor === i) {\n\t desc = ` - ${v.description}`;\n\t if (prefix.length + title.length + desc.length >= this.out.columns\n\t || v.description.split(/\\r?\\n/).length > 1) {\n\t desc = '\\n' + wrap(v.description, { margin: 3, width: this.out.columns });\n\t }\n\t }\n\t }\n\n\t this.outputText += `${prefix} ${title}${color.gray(desc)}\\n`;\n\t }\n\t }\n\n\t this.out.write(this.outputText);\n\t }\n\t}\n\n\tselect = SelectPrompt;\n\treturn select;\n}\n\nvar toggle;\nvar hasRequiredToggle;\n\nfunction requireToggle () {\n\tif (hasRequiredToggle) return toggle;\n\thasRequiredToggle = 1;\n\tconst color = requireKleur();\n\tconst Prompt = requirePrompt();\n\tconst { style, clear } = requireUtil();\n\tconst { cursor, erase } = requireSrc();\n\n\t/**\n\t * TogglePrompt Base Element\n\t * @param {Object} opts Options\n\t * @param {String} opts.message Message\n\t * @param {Boolean} [opts.initial=false] Default value\n\t * @param {String} [opts.active='no'] Active label\n\t * @param {String} [opts.inactive='off'] Inactive label\n\t * @param {Stream} [opts.stdin] The Readable stream to listen to\n\t * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n\t */\n\tclass TogglePrompt extends Prompt {\n\t constructor(opts={}) {\n\t super(opts);\n\t this.msg = opts.message;\n\t this.value = !!opts.initial;\n\t this.active = opts.active || 'on';\n\t this.inactive = opts.inactive || 'off';\n\t this.initialValue = this.value;\n\t this.render();\n\t }\n\n\t reset() {\n\t this.value = this.initialValue;\n\t this.fire();\n\t this.render();\n\t }\n\n\t exit() {\n\t this.abort();\n\t }\n\n\t abort() {\n\t this.done = this.aborted = true;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t submit() {\n\t this.done = true;\n\t this.aborted = false;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t deactivate() {\n\t if (this.value === false) return this.bell();\n\t this.value = false;\n\t this.render();\n\t }\n\n\t activate() {\n\t if (this.value === true) return this.bell();\n\t this.value = true;\n\t this.render();\n\t }\n\n\t delete() {\n\t this.deactivate();\n\t }\n\t left() {\n\t this.deactivate();\n\t }\n\t right() {\n\t this.activate();\n\t }\n\t down() {\n\t this.deactivate();\n\t }\n\t up() {\n\t this.activate();\n\t }\n\n\t next() {\n\t this.value = !this.value;\n\t this.fire();\n\t this.render();\n\t }\n\n\t _(c, key) {\n\t if (c === ' ') {\n\t this.value = !this.value;\n\t } else if (c === '1') {\n\t this.value = true;\n\t } else if (c === '0') {\n\t this.value = false;\n\t } else return this.bell();\n\t this.render();\n\t }\n\n\t render() {\n\t if (this.closed) return;\n\t if (this.firstRender) this.out.write(cursor.hide);\n\t else this.out.write(clear(this.outputText, this.out.columns));\n\t super.render();\n\n\t this.outputText = [\n\t style.symbol(this.done, this.aborted),\n\t color.bold(this.msg),\n\t style.delimiter(this.done),\n\t this.value ? this.inactive : color.cyan().underline(this.inactive),\n\t color.gray('/'),\n\t this.value ? color.cyan().underline(this.active) : this.active\n\t ].join(' ');\n\n\t this.out.write(erase.line + cursor.to(0) + this.outputText);\n\t }\n\t}\n\n\ttoggle = TogglePrompt;\n\treturn toggle;\n}\n\nvar datepart;\nvar hasRequiredDatepart;\n\nfunction requireDatepart () {\n\tif (hasRequiredDatepart) return datepart;\n\thasRequiredDatepart = 1;\n\n\tclass DatePart {\n\t constructor({token, date, parts, locales}) {\n\t this.token = token;\n\t this.date = date || new Date();\n\t this.parts = parts || [this];\n\t this.locales = locales || {};\n\t }\n\n\t up() {}\n\n\t down() {}\n\n\t next() {\n\t const currentIdx = this.parts.indexOf(this);\n\t return this.parts.find((part, idx) => idx > currentIdx && part instanceof DatePart);\n\t }\n\n\t setTo(val) {}\n\n\t prev() {\n\t let parts = [].concat(this.parts).reverse();\n\t const currentIdx = parts.indexOf(this);\n\t return parts.find((part, idx) => idx > currentIdx && part instanceof DatePart);\n\t }\n\n\t toString() {\n\t return String(this.date);\n\t }\n\t}\n\n\tdatepart = DatePart;\n\treturn datepart;\n}\n\nvar meridiem;\nvar hasRequiredMeridiem;\n\nfunction requireMeridiem () {\n\tif (hasRequiredMeridiem) return meridiem;\n\thasRequiredMeridiem = 1;\n\n\tconst DatePart = requireDatepart();\n\n\tclass Meridiem extends DatePart {\n\t constructor(opts={}) {\n\t super(opts);\n\t }\n\n\t up() {\n\t this.date.setHours((this.date.getHours() + 12) % 24);\n\t }\n\n\t down() {\n\t this.up();\n\t }\n\n\t toString() {\n\t let meridiem = this.date.getHours() > 12 ? 'pm' : 'am';\n\t return /\\A/.test(this.token) ? meridiem.toUpperCase() : meridiem;\n\t }\n\t}\n\n\tmeridiem = Meridiem;\n\treturn meridiem;\n}\n\nvar day;\nvar hasRequiredDay;\n\nfunction requireDay () {\n\tif (hasRequiredDay) return day;\n\thasRequiredDay = 1;\n\n\tconst DatePart = requireDatepart();\n\n\tconst pos = n => {\n\t n = n % 10;\n\t return n === 1 ? 'st'\n\t : n === 2 ? 'nd'\n\t : n === 3 ? 'rd'\n\t : 'th';\n\t};\n\n\tclass Day extends DatePart {\n\t constructor(opts={}) {\n\t super(opts);\n\t }\n\n\t up() {\n\t this.date.setDate(this.date.getDate() + 1);\n\t }\n\n\t down() {\n\t this.date.setDate(this.date.getDate() - 1);\n\t }\n\n\t setTo(val) {\n\t this.date.setDate(parseInt(val.substr(-2)));\n\t }\n\n\t toString() {\n\t let date = this.date.getDate();\n\t let day = this.date.getDay();\n\t return this.token === 'DD' ? String(date).padStart(2, '0')\n\t : this.token === 'Do' ? date + pos(date)\n\t : this.token === 'd' ? day + 1\n\t : this.token === 'ddd' ? this.locales.weekdaysShort[day]\n\t : this.token === 'dddd' ? this.locales.weekdays[day]\n\t : date;\n\t }\n\t}\n\n\tday = Day;\n\treturn day;\n}\n\nvar hours;\nvar hasRequiredHours;\n\nfunction requireHours () {\n\tif (hasRequiredHours) return hours;\n\thasRequiredHours = 1;\n\n\tconst DatePart = requireDatepart();\n\n\tclass Hours extends DatePart {\n\t constructor(opts={}) {\n\t super(opts);\n\t }\n\n\t up() {\n\t this.date.setHours(this.date.getHours() + 1);\n\t }\n\n\t down() {\n\t this.date.setHours(this.date.getHours() - 1);\n\t }\n\n\t setTo(val) {\n\t this.date.setHours(parseInt(val.substr(-2)));\n\t }\n\n\t toString() {\n\t let hours = this.date.getHours();\n\t if (/h/.test(this.token))\n\t hours = (hours % 12) || 12;\n\t return this.token.length > 1 ? String(hours).padStart(2, '0') : hours;\n\t }\n\t}\n\n\thours = Hours;\n\treturn hours;\n}\n\nvar milliseconds;\nvar hasRequiredMilliseconds;\n\nfunction requireMilliseconds () {\n\tif (hasRequiredMilliseconds) return milliseconds;\n\thasRequiredMilliseconds = 1;\n\n\tconst DatePart = requireDatepart();\n\n\tclass Milliseconds extends DatePart {\n\t constructor(opts={}) {\n\t super(opts);\n\t }\n\n\t up() {\n\t this.date.setMilliseconds(this.date.getMilliseconds() + 1);\n\t }\n\n\t down() {\n\t this.date.setMilliseconds(this.date.getMilliseconds() - 1);\n\t }\n\n\t setTo(val) {\n\t this.date.setMilliseconds(parseInt(val.substr(-(this.token.length))));\n\t }\n\n\t toString() {\n\t return String(this.date.getMilliseconds()).padStart(4, '0')\n\t .substr(0, this.token.length);\n\t }\n\t}\n\n\tmilliseconds = Milliseconds;\n\treturn milliseconds;\n}\n\nvar minutes;\nvar hasRequiredMinutes;\n\nfunction requireMinutes () {\n\tif (hasRequiredMinutes) return minutes;\n\thasRequiredMinutes = 1;\n\n\tconst DatePart = requireDatepart();\n\n\tclass Minutes extends DatePart {\n\t constructor(opts={}) {\n\t super(opts);\n\t }\n\n\t up() {\n\t this.date.setMinutes(this.date.getMinutes() + 1);\n\t }\n\n\t down() {\n\t this.date.setMinutes(this.date.getMinutes() - 1);\n\t }\n\n\t setTo(val) {\n\t this.date.setMinutes(parseInt(val.substr(-2)));\n\t }\n\n\t toString() {\n\t let m = this.date.getMinutes();\n\t return this.token.length > 1 ? String(m).padStart(2, '0') : m;\n\t }\n\t}\n\n\tminutes = Minutes;\n\treturn minutes;\n}\n\nvar month;\nvar hasRequiredMonth;\n\nfunction requireMonth () {\n\tif (hasRequiredMonth) return month;\n\thasRequiredMonth = 1;\n\n\tconst DatePart = requireDatepart();\n\n\tclass Month extends DatePart {\n\t constructor(opts={}) {\n\t super(opts);\n\t }\n\n\t up() {\n\t this.date.setMonth(this.date.getMonth() + 1);\n\t }\n\n\t down() {\n\t this.date.setMonth(this.date.getMonth() - 1);\n\t }\n\n\t setTo(val) {\n\t val = parseInt(val.substr(-2)) - 1;\n\t this.date.setMonth(val < 0 ? 0 : val);\n\t }\n\n\t toString() {\n\t let month = this.date.getMonth();\n\t let tl = this.token.length;\n\t return tl === 2 ? String(month + 1).padStart(2, '0')\n\t : tl === 3 ? this.locales.monthsShort[month]\n\t : tl === 4 ? this.locales.months[month]\n\t : String(month + 1);\n\t }\n\t}\n\n\tmonth = Month;\n\treturn month;\n}\n\nvar seconds;\nvar hasRequiredSeconds;\n\nfunction requireSeconds () {\n\tif (hasRequiredSeconds) return seconds;\n\thasRequiredSeconds = 1;\n\n\tconst DatePart = requireDatepart();\n\n\tclass Seconds extends DatePart {\n\t constructor(opts={}) {\n\t super(opts);\n\t }\n\n\t up() {\n\t this.date.setSeconds(this.date.getSeconds() + 1);\n\t }\n\n\t down() {\n\t this.date.setSeconds(this.date.getSeconds() - 1);\n\t }\n\n\t setTo(val) {\n\t this.date.setSeconds(parseInt(val.substr(-2)));\n\t }\n\n\t toString() {\n\t let s = this.date.getSeconds();\n\t return this.token.length > 1 ? String(s).padStart(2, '0') : s;\n\t }\n\t}\n\n\tseconds = Seconds;\n\treturn seconds;\n}\n\nvar year;\nvar hasRequiredYear;\n\nfunction requireYear () {\n\tif (hasRequiredYear) return year;\n\thasRequiredYear = 1;\n\n\tconst DatePart = requireDatepart();\n\n\tclass Year extends DatePart {\n\t constructor(opts={}) {\n\t super(opts);\n\t }\n\n\t up() {\n\t this.date.setFullYear(this.date.getFullYear() + 1);\n\t }\n\n\t down() {\n\t this.date.setFullYear(this.date.getFullYear() - 1);\n\t }\n\n\t setTo(val) {\n\t this.date.setFullYear(val.substr(-4));\n\t }\n\n\t toString() {\n\t let year = String(this.date.getFullYear()).padStart(4, '0');\n\t return this.token.length === 2 ? year.substr(-2) : year;\n\t }\n\t}\n\n\tyear = Year;\n\treturn year;\n}\n\nvar dateparts;\nvar hasRequiredDateparts;\n\nfunction requireDateparts () {\n\tif (hasRequiredDateparts) return dateparts;\n\thasRequiredDateparts = 1;\n\n\tdateparts = {\n\t DatePart: requireDatepart(),\n\t Meridiem: requireMeridiem(),\n\t Day: requireDay(),\n\t Hours: requireHours(),\n\t Milliseconds: requireMilliseconds(),\n\t Minutes: requireMinutes(),\n\t Month: requireMonth(),\n\t Seconds: requireSeconds(),\n\t Year: requireYear(),\n\t};\n\treturn dateparts;\n}\n\nvar date;\nvar hasRequiredDate;\n\nfunction requireDate () {\n\tif (hasRequiredDate) return date;\n\thasRequiredDate = 1;\n\n\tconst color = requireKleur();\n\tconst Prompt = requirePrompt();\n\tconst { style, clear, figures } = requireUtil();\n\tconst { erase, cursor } = requireSrc();\n\tconst { DatePart, Meridiem, Day, Hours, Milliseconds, Minutes, Month, Seconds, Year } = requireDateparts();\n\n\tconst regex = /\\\\(.)|\"((?:\\\\[\"\\\\]|[^\"])+)\"|(D[Do]?|d{3,4}|d)|(M{1,4})|(YY(?:YY)?)|([aA])|([Hh]{1,2})|(m{1,2})|(s{1,2})|(S{1,4})|./g;\n\tconst regexGroups = {\n\t 1: ({token}) => token.replace(/\\\\(.)/g, '$1'),\n\t 2: (opts) => new Day(opts), // Day // TODO\n\t 3: (opts) => new Month(opts), // Month\n\t 4: (opts) => new Year(opts), // Year\n\t 5: (opts) => new Meridiem(opts), // AM/PM // TODO (special)\n\t 6: (opts) => new Hours(opts), // Hours\n\t 7: (opts) => new Minutes(opts), // Minutes\n\t 8: (opts) => new Seconds(opts), // Seconds\n\t 9: (opts) => new Milliseconds(opts), // Fractional seconds\n\t};\n\n\tconst dfltLocales = {\n\t months: 'January,February,March,April,May,June,July,August,September,October,November,December'.split(','),\n\t monthsShort: 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','),\n\t weekdays: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','),\n\t weekdaysShort: 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'.split(',')\n\t};\n\n\n\t/**\n\t * DatePrompt Base Element\n\t * @param {Object} opts Options\n\t * @param {String} opts.message Message\n\t * @param {Number} [opts.initial] Index of default value\n\t * @param {String} [opts.mask] The format mask\n\t * @param {object} [opts.locales] The date locales\n\t * @param {String} [opts.error] The error message shown on invalid value\n\t * @param {Function} [opts.validate] Function to validate the submitted value\n\t * @param {Stream} [opts.stdin] The Readable stream to listen to\n\t * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n\t */\n\tclass DatePrompt extends Prompt {\n\t constructor(opts={}) {\n\t super(opts);\n\t this.msg = opts.message;\n\t this.cursor = 0;\n\t this.typed = '';\n\t this.locales = Object.assign(dfltLocales, opts.locales);\n\t this._date = opts.initial || new Date();\n\t this.errorMsg = opts.error || 'Please Enter A Valid Value';\n\t this.validator = opts.validate || (() => true);\n\t this.mask = opts.mask || 'YYYY-MM-DD HH:mm:ss';\n\t this.clear = clear('', this.out.columns);\n\t this.render();\n\t }\n\n\t get value() {\n\t return this.date\n\t }\n\n\t get date() {\n\t return this._date;\n\t }\n\n\t set date(date) {\n\t if (date) this._date.setTime(date.getTime());\n\t }\n\n\t set mask(mask) {\n\t let result;\n\t this.parts = [];\n\t while(result = regex.exec(mask)) {\n\t let match = result.shift();\n\t let idx = result.findIndex(gr => gr != null);\n\t this.parts.push(idx in regexGroups\n\t ? regexGroups[idx]({ token: result[idx] || match, date: this.date, parts: this.parts, locales: this.locales })\n\t : result[idx] || match);\n\t }\n\n\t let parts = this.parts.reduce((arr, i) => {\n\t if (typeof i === 'string' && typeof arr[arr.length - 1] === 'string')\n\t arr[arr.length - 1] += i;\n\t else arr.push(i);\n\t return arr;\n\t }, []);\n\n\t this.parts.splice(0);\n\t this.parts.push(...parts);\n\t this.reset();\n\t }\n\n\t moveCursor(n) {\n\t this.typed = '';\n\t this.cursor = n;\n\t this.fire();\n\t }\n\n\t reset() {\n\t this.moveCursor(this.parts.findIndex(p => p instanceof DatePart));\n\t this.fire();\n\t this.render();\n\t }\n\n\t exit() {\n\t this.abort();\n\t }\n\n\t abort() {\n\t this.done = this.aborted = true;\n\t this.error = false;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t async validate() {\n\t let valid = await this.validator(this.value);\n\t if (typeof valid === 'string') {\n\t this.errorMsg = valid;\n\t valid = false;\n\t }\n\t this.error = !valid;\n\t }\n\n\t async submit() {\n\t await this.validate();\n\t if (this.error) {\n\t this.color = 'red';\n\t this.fire();\n\t this.render();\n\t return;\n\t }\n\t this.done = true;\n\t this.aborted = false;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t up() {\n\t this.typed = '';\n\t this.parts[this.cursor].up();\n\t this.render();\n\t }\n\n\t down() {\n\t this.typed = '';\n\t this.parts[this.cursor].down();\n\t this.render();\n\t }\n\n\t left() {\n\t let prev = this.parts[this.cursor].prev();\n\t if (prev == null) return this.bell();\n\t this.moveCursor(this.parts.indexOf(prev));\n\t this.render();\n\t }\n\n\t right() {\n\t let next = this.parts[this.cursor].next();\n\t if (next == null) return this.bell();\n\t this.moveCursor(this.parts.indexOf(next));\n\t this.render();\n\t }\n\n\t next() {\n\t let next = this.parts[this.cursor].next();\n\t this.moveCursor(next\n\t ? this.parts.indexOf(next)\n\t : this.parts.findIndex((part) => part instanceof DatePart));\n\t this.render();\n\t }\n\n\t _(c) {\n\t if (/\\d/.test(c)) {\n\t this.typed += c;\n\t this.parts[this.cursor].setTo(this.typed);\n\t this.render();\n\t }\n\t }\n\n\t render() {\n\t if (this.closed) return;\n\t if (this.firstRender) this.out.write(cursor.hide);\n\t else this.out.write(clear(this.outputText, this.out.columns));\n\t super.render();\n\n\t // Print prompt\n\t this.outputText = [\n\t style.symbol(this.done, this.aborted),\n\t color.bold(this.msg),\n\t style.delimiter(false),\n\t this.parts.reduce((arr, p, idx) => arr.concat(idx === this.cursor && !this.done ? color.cyan().underline(p.toString()) : p), [])\n\t .join('')\n\t ].join(' ');\n\n\t // Print error\n\t if (this.error) {\n\t this.outputText += this.errorMsg.split('\\n').reduce(\n\t (a, l, i) => a + `\\n${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``);\n\t }\n\n\t this.out.write(erase.line + cursor.to(0) + this.outputText);\n\t }\n\t}\n\n\tdate = DatePrompt;\n\treturn date;\n}\n\nvar number;\nvar hasRequiredNumber;\n\nfunction requireNumber () {\n\tif (hasRequiredNumber) return number;\n\thasRequiredNumber = 1;\n\tconst color = requireKleur();\n\tconst Prompt = requirePrompt();\n\tconst { cursor, erase } = requireSrc();\n\tconst { style, figures, clear, lines } = requireUtil();\n\n\tconst isNumber = /[0-9]/;\n\tconst isDef = any => any !== undefined;\n\tconst round = (number, precision) => {\n\t let factor = Math.pow(10, precision);\n\t return Math.round(number * factor) / factor;\n\t};\n\n\t/**\n\t * NumberPrompt Base Element\n\t * @param {Object} opts Options\n\t * @param {String} opts.message Message\n\t * @param {String} [opts.style='default'] Render style\n\t * @param {Number} [opts.initial] Default value\n\t * @param {Number} [opts.max=+Infinity] Max value\n\t * @param {Number} [opts.min=-Infinity] Min value\n\t * @param {Boolean} [opts.float=false] Parse input as floats\n\t * @param {Number} [opts.round=2] Round floats to x decimals\n\t * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys\n\t * @param {Function} [opts.validate] Validate function\n\t * @param {Stream} [opts.stdin] The Readable stream to listen to\n\t * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n\t * @param {String} [opts.error] The invalid error label\n\t */\n\tclass NumberPrompt extends Prompt {\n\t constructor(opts={}) {\n\t super(opts);\n\t this.transform = style.render(opts.style);\n\t this.msg = opts.message;\n\t this.initial = isDef(opts.initial) ? opts.initial : '';\n\t this.float = !!opts.float;\n\t this.round = opts.round || 2;\n\t this.inc = opts.increment || 1;\n\t this.min = isDef(opts.min) ? opts.min : -Infinity;\n\t this.max = isDef(opts.max) ? opts.max : Infinity;\n\t this.errorMsg = opts.error || `Please Enter A Valid Value`;\n\t this.validator = opts.validate || (() => true);\n\t this.color = `cyan`;\n\t this.value = ``;\n\t this.typed = ``;\n\t this.lastHit = 0;\n\t this.render();\n\t }\n\n\t set value(v) {\n\t if (!v && v !== 0) {\n\t this.placeholder = true;\n\t this.rendered = color.gray(this.transform.render(`${this.initial}`));\n\t this._value = ``;\n\t } else {\n\t this.placeholder = false;\n\t this.rendered = this.transform.render(`${round(v, this.round)}`);\n\t this._value = round(v, this.round);\n\t }\n\t this.fire();\n\t }\n\n\t get value() {\n\t return this._value;\n\t }\n\n\t parse(x) {\n\t return this.float ? parseFloat(x) : parseInt(x);\n\t }\n\n\t valid(c) {\n\t return c === `-` || c === `.` && this.float || isNumber.test(c)\n\t }\n\n\t reset() {\n\t this.typed = ``;\n\t this.value = ``;\n\t this.fire();\n\t this.render();\n\t }\n\n\t exit() {\n\t this.abort();\n\t }\n\n\t abort() {\n\t let x = this.value;\n\t this.value = x !== `` ? x : this.initial;\n\t this.done = this.aborted = true;\n\t this.error = false;\n\t this.fire();\n\t this.render();\n\t this.out.write(`\\n`);\n\t this.close();\n\t }\n\n\t async validate() {\n\t let valid = await this.validator(this.value);\n\t if (typeof valid === `string`) {\n\t this.errorMsg = valid;\n\t valid = false;\n\t }\n\t this.error = !valid;\n\t }\n\n\t async submit() {\n\t await this.validate();\n\t if (this.error) {\n\t this.color = `red`;\n\t this.fire();\n\t this.render();\n\t return;\n\t }\n\t let x = this.value;\n\t this.value = x !== `` ? x : this.initial;\n\t this.done = true;\n\t this.aborted = false;\n\t this.error = false;\n\t this.fire();\n\t this.render();\n\t this.out.write(`\\n`);\n\t this.close();\n\t }\n\n\t up() {\n\t this.typed = ``;\n\t if(this.value === '') {\n\t this.value = this.min - this.inc;\n\t }\n\t if (this.value >= this.max) return this.bell();\n\t this.value += this.inc;\n\t this.color = `cyan`;\n\t this.fire();\n\t this.render();\n\t }\n\n\t down() {\n\t this.typed = ``;\n\t if(this.value === '') {\n\t this.value = this.min + this.inc;\n\t }\n\t if (this.value <= this.min) return this.bell();\n\t this.value -= this.inc;\n\t this.color = `cyan`;\n\t this.fire();\n\t this.render();\n\t }\n\n\t delete() {\n\t let val = this.value.toString();\n\t if (val.length === 0) return this.bell();\n\t this.value = this.parse((val = val.slice(0, -1))) || ``;\n\t if (this.value !== '' && this.value < this.min) {\n\t this.value = this.min;\n\t }\n\t this.color = `cyan`;\n\t this.fire();\n\t this.render();\n\t }\n\n\t next() {\n\t this.value = this.initial;\n\t this.fire();\n\t this.render();\n\t }\n\n\t _(c, key) {\n\t if (!this.valid(c)) return this.bell();\n\n\t const now = Date.now();\n\t if (now - this.lastHit > 1000) this.typed = ``; // 1s elapsed\n\t this.typed += c;\n\t this.lastHit = now;\n\t this.color = `cyan`;\n\n\t if (c === `.`) return this.fire();\n\n\t this.value = Math.min(this.parse(this.typed), this.max);\n\t if (this.value > this.max) this.value = this.max;\n\t if (this.value < this.min) this.value = this.min;\n\t this.fire();\n\t this.render();\n\t }\n\n\t render() {\n\t if (this.closed) return;\n\t if (!this.firstRender) {\n\t if (this.outputError)\n\t this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns));\n\t this.out.write(clear(this.outputText, this.out.columns));\n\t }\n\t super.render();\n\t this.outputError = '';\n\n\t // Print prompt\n\t this.outputText = [\n\t style.symbol(this.done, this.aborted),\n\t color.bold(this.msg),\n\t style.delimiter(this.done),\n\t !this.done || (!this.done && !this.placeholder)\n\t ? color[this.color]().underline(this.rendered) : this.rendered\n\t ].join(` `);\n\n\t // Print error\n\t if (this.error) {\n\t this.outputError += this.errorMsg.split(`\\n`)\n\t .reduce((a, l, i) => a + `\\n${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``);\n\t }\n\n\t this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore);\n\t }\n\t}\n\n\tnumber = NumberPrompt;\n\treturn number;\n}\n\nvar multiselect;\nvar hasRequiredMultiselect;\n\nfunction requireMultiselect () {\n\tif (hasRequiredMultiselect) return multiselect;\n\thasRequiredMultiselect = 1;\n\n\tconst color = requireKleur();\n\tconst { cursor } = requireSrc();\n\tconst Prompt = requirePrompt();\n\tconst { clear, figures, style, wrap, entriesToDisplay } = requireUtil();\n\n\t/**\n\t * MultiselectPrompt Base Element\n\t * @param {Object} opts Options\n\t * @param {String} opts.message Message\n\t * @param {Array} opts.choices Array of choice objects\n\t * @param {String} [opts.hint] Hint to display\n\t * @param {String} [opts.warn] Hint shown for disabled choices\n\t * @param {Number} [opts.max] Max choices\n\t * @param {Number} [opts.cursor=0] Cursor start position\n\t * @param {Number} [opts.optionsPerPage=10] Max options to display at once\n\t * @param {Stream} [opts.stdin] The Readable stream to listen to\n\t * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n\t */\n\tclass MultiselectPrompt extends Prompt {\n\t constructor(opts={}) {\n\t super(opts);\n\t this.msg = opts.message;\n\t this.cursor = opts.cursor || 0;\n\t this.scrollIndex = opts.cursor || 0;\n\t this.hint = opts.hint || '';\n\t this.warn = opts.warn || '- This option is disabled -';\n\t this.minSelected = opts.min;\n\t this.showMinError = false;\n\t this.maxChoices = opts.max;\n\t this.instructions = opts.instructions;\n\t this.optionsPerPage = opts.optionsPerPage || 10;\n\t this.value = opts.choices.map((ch, idx) => {\n\t if (typeof ch === 'string')\n\t ch = {title: ch, value: idx};\n\t return {\n\t title: ch && (ch.title || ch.value || ch),\n\t description: ch && ch.description,\n\t value: ch && (ch.value === undefined ? idx : ch.value),\n\t selected: ch && ch.selected,\n\t disabled: ch && ch.disabled\n\t };\n\t });\n\t this.clear = clear('', this.out.columns);\n\t if (!opts.overrideRender) {\n\t this.render();\n\t }\n\t }\n\n\t reset() {\n\t this.value.map(v => !v.selected);\n\t this.cursor = 0;\n\t this.fire();\n\t this.render();\n\t }\n\n\t selected() {\n\t return this.value.filter(v => v.selected);\n\t }\n\n\t exit() {\n\t this.abort();\n\t }\n\n\t abort() {\n\t this.done = this.aborted = true;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t submit() {\n\t const selected = this.value\n\t .filter(e => e.selected);\n\t if (this.minSelected && selected.length < this.minSelected) {\n\t this.showMinError = true;\n\t this.render();\n\t } else {\n\t this.done = true;\n\t this.aborted = false;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\t }\n\n\t first() {\n\t this.cursor = 0;\n\t this.render();\n\t }\n\n\t last() {\n\t this.cursor = this.value.length - 1;\n\t this.render();\n\t }\n\t next() {\n\t this.cursor = (this.cursor + 1) % this.value.length;\n\t this.render();\n\t }\n\n\t up() {\n\t if (this.cursor === 0) {\n\t this.cursor = this.value.length - 1;\n\t } else {\n\t this.cursor--;\n\t }\n\t this.render();\n\t }\n\n\t down() {\n\t if (this.cursor === this.value.length - 1) {\n\t this.cursor = 0;\n\t } else {\n\t this.cursor++;\n\t }\n\t this.render();\n\t }\n\n\t left() {\n\t this.value[this.cursor].selected = false;\n\t this.render();\n\t }\n\n\t right() {\n\t if (this.value.filter(e => e.selected).length >= this.maxChoices) return this.bell();\n\t this.value[this.cursor].selected = true;\n\t this.render();\n\t }\n\n\t handleSpaceToggle() {\n\t const v = this.value[this.cursor];\n\n\t if (v.selected) {\n\t v.selected = false;\n\t this.render();\n\t } else if (v.disabled || this.value.filter(e => e.selected).length >= this.maxChoices) {\n\t return this.bell();\n\t } else {\n\t v.selected = true;\n\t this.render();\n\t }\n\t }\n\n\t toggleAll() {\n\t if (this.maxChoices !== undefined || this.value[this.cursor].disabled) {\n\t return this.bell();\n\t }\n\n\t const newSelected = !this.value[this.cursor].selected;\n\t this.value.filter(v => !v.disabled).forEach(v => v.selected = newSelected);\n\t this.render();\n\t }\n\n\t _(c, key) {\n\t if (c === ' ') {\n\t this.handleSpaceToggle();\n\t } else if (c === 'a') {\n\t this.toggleAll();\n\t } else {\n\t return this.bell();\n\t }\n\t }\n\n\t renderInstructions() {\n\t if (this.instructions === undefined || this.instructions) {\n\t if (typeof this.instructions === 'string') {\n\t return this.instructions;\n\t }\n\t return '\\nInstructions:\\n'\n\t + ` ${figures.arrowUp}/${figures.arrowDown}: Highlight option\\n`\n\t + ` ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection\\n`\n\t + (this.maxChoices === undefined ? ` a: Toggle all\\n` : '')\n\t + ` enter/return: Complete answer`;\n\t }\n\t return '';\n\t }\n\n\t renderOption(cursor, v, i, arrowIndicator) {\n\t const prefix = (v.selected ? color.green(figures.radioOn) : figures.radioOff) + ' ' + arrowIndicator + ' ';\n\t let title, desc;\n\n\t if (v.disabled) {\n\t title = cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);\n\t } else {\n\t title = cursor === i ? color.cyan().underline(v.title) : v.title;\n\t if (cursor === i && v.description) {\n\t desc = ` - ${v.description}`;\n\t if (prefix.length + title.length + desc.length >= this.out.columns\n\t || v.description.split(/\\r?\\n/).length > 1) {\n\t desc = '\\n' + wrap(v.description, { margin: prefix.length, width: this.out.columns });\n\t }\n\t }\n\t }\n\n\t return prefix + title + color.gray(desc || '');\n\t }\n\n\t // shared with autocompleteMultiselect\n\t paginateOptions(options) {\n\t if (options.length === 0) {\n\t return color.red('No matches for this query.');\n\t }\n\n\t let { startIndex, endIndex } = entriesToDisplay(this.cursor, options.length, this.optionsPerPage);\n\t let prefix, styledOptions = [];\n\n\t for (let i = startIndex; i < endIndex; i++) {\n\t if (i === startIndex && startIndex > 0) {\n\t prefix = figures.arrowUp;\n\t } else if (i === endIndex - 1 && endIndex < options.length) {\n\t prefix = figures.arrowDown;\n\t } else {\n\t prefix = ' ';\n\t }\n\t styledOptions.push(this.renderOption(this.cursor, options[i], i, prefix));\n\t }\n\n\t return '\\n' + styledOptions.join('\\n');\n\t }\n\n\t // shared with autocomleteMultiselect\n\t renderOptions(options) {\n\t if (!this.done) {\n\t return this.paginateOptions(options);\n\t }\n\t return '';\n\t }\n\n\t renderDoneOrInstructions() {\n\t if (this.done) {\n\t return this.value\n\t .filter(e => e.selected)\n\t .map(v => v.title)\n\t .join(', ');\n\t }\n\n\t const output = [color.gray(this.hint), this.renderInstructions()];\n\n\t if (this.value[this.cursor].disabled) {\n\t output.push(color.yellow(this.warn));\n\t }\n\t return output.join(' ');\n\t }\n\n\t render() {\n\t if (this.closed) return;\n\t if (this.firstRender) this.out.write(cursor.hide);\n\t super.render();\n\n\t // print prompt\n\t let prompt = [\n\t style.symbol(this.done, this.aborted),\n\t color.bold(this.msg),\n\t style.delimiter(false),\n\t this.renderDoneOrInstructions()\n\t ].join(' ');\n\t if (this.showMinError) {\n\t prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`);\n\t this.showMinError = false;\n\t }\n\t prompt += this.renderOptions(this.value);\n\n\t this.out.write(this.clear + prompt);\n\t this.clear = clear(prompt, this.out.columns);\n\t }\n\t}\n\n\tmultiselect = MultiselectPrompt;\n\treturn multiselect;\n}\n\nvar autocomplete;\nvar hasRequiredAutocomplete;\n\nfunction requireAutocomplete () {\n\tif (hasRequiredAutocomplete) return autocomplete;\n\thasRequiredAutocomplete = 1;\n\n\tconst color = requireKleur();\n\tconst Prompt = requirePrompt();\n\tconst { erase, cursor } = requireSrc();\n\tconst { style, clear, figures, wrap, entriesToDisplay } = requireUtil();\n\n\tconst getVal = (arr, i) => arr[i] && (arr[i].value || arr[i].title || arr[i]);\n\tconst getTitle = (arr, i) => arr[i] && (arr[i].title || arr[i].value || arr[i]);\n\tconst getIndex = (arr, valOrTitle) => {\n\t const index = arr.findIndex(el => el.value === valOrTitle || el.title === valOrTitle);\n\t return index > -1 ? index : undefined;\n\t};\n\n\t/**\n\t * TextPrompt Base Element\n\t * @param {Object} opts Options\n\t * @param {String} opts.message Message\n\t * @param {Array} opts.choices Array of auto-complete choices objects\n\t * @param {Function} [opts.suggest] Filter function. Defaults to sort by title\n\t * @param {Number} [opts.limit=10] Max number of results to show\n\t * @param {Number} [opts.cursor=0] Cursor start position\n\t * @param {String} [opts.style='default'] Render style\n\t * @param {String} [opts.fallback] Fallback message - initial to default value\n\t * @param {String} [opts.initial] Index of the default value\n\t * @param {Boolean} [opts.clearFirst] The first ESCAPE keypress will clear the input\n\t * @param {Stream} [opts.stdin] The Readable stream to listen to\n\t * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n\t * @param {String} [opts.noMatches] The no matches found label\n\t */\n\tclass AutocompletePrompt extends Prompt {\n\t constructor(opts={}) {\n\t super(opts);\n\t this.msg = opts.message;\n\t this.suggest = opts.suggest;\n\t this.choices = opts.choices;\n\t this.initial = typeof opts.initial === 'number'\n\t ? opts.initial\n\t : getIndex(opts.choices, opts.initial);\n\t this.select = this.initial || opts.cursor || 0;\n\t this.i18n = { noMatches: opts.noMatches || 'no matches found' };\n\t this.fallback = opts.fallback || this.initial;\n\t this.clearFirst = opts.clearFirst || false;\n\t this.suggestions = [];\n\t this.input = '';\n\t this.limit = opts.limit || 10;\n\t this.cursor = 0;\n\t this.transform = style.render(opts.style);\n\t this.scale = this.transform.scale;\n\t this.render = this.render.bind(this);\n\t this.complete = this.complete.bind(this);\n\t this.clear = clear('', this.out.columns);\n\t this.complete(this.render);\n\t this.render();\n\t }\n\n\t set fallback(fb) {\n\t this._fb = Number.isSafeInteger(parseInt(fb)) ? parseInt(fb) : fb;\n\t }\n\n\t get fallback() {\n\t let choice;\n\t if (typeof this._fb === 'number')\n\t choice = this.choices[this._fb];\n\t else if (typeof this._fb === 'string')\n\t choice = { title: this._fb };\n\t return choice || this._fb || { title: this.i18n.noMatches };\n\t }\n\n\t moveSelect(i) {\n\t this.select = i;\n\t if (this.suggestions.length > 0)\n\t this.value = getVal(this.suggestions, i);\n\t else this.value = this.fallback.value;\n\t this.fire();\n\t }\n\n\t async complete(cb) {\n\t const p = (this.completing = this.suggest(this.input, this.choices));\n\t const suggestions = await p;\n\n\t if (this.completing !== p) return;\n\t this.suggestions = suggestions\n\t .map((s, i, arr) => ({ title: getTitle(arr, i), value: getVal(arr, i), description: s.description }));\n\t this.completing = false;\n\t const l = Math.max(suggestions.length - 1, 0);\n\t this.moveSelect(Math.min(l, this.select));\n\n\t cb && cb();\n\t }\n\n\t reset() {\n\t this.input = '';\n\t this.complete(() => {\n\t this.moveSelect(this.initial !== void 0 ? this.initial : 0);\n\t this.render();\n\t });\n\t this.render();\n\t }\n\n\t exit() {\n\t if (this.clearFirst && this.input.length > 0) {\n\t this.reset();\n\t } else {\n\t this.done = this.exited = true; \n\t this.aborted = false;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\t }\n\n\t abort() {\n\t this.done = this.aborted = true;\n\t this.exited = false;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t submit() {\n\t this.done = true;\n\t this.aborted = this.exited = false;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t _(c, key) {\n\t let s1 = this.input.slice(0, this.cursor);\n\t let s2 = this.input.slice(this.cursor);\n\t this.input = `${s1}${c}${s2}`;\n\t this.cursor = s1.length+1;\n\t this.complete(this.render);\n\t this.render();\n\t }\n\n\t delete() {\n\t if (this.cursor === 0) return this.bell();\n\t let s1 = this.input.slice(0, this.cursor-1);\n\t let s2 = this.input.slice(this.cursor);\n\t this.input = `${s1}${s2}`;\n\t this.complete(this.render);\n\t this.cursor = this.cursor-1;\n\t this.render();\n\t }\n\n\t deleteForward() {\n\t if(this.cursor*this.scale >= this.rendered.length) return this.bell();\n\t let s1 = this.input.slice(0, this.cursor);\n\t let s2 = this.input.slice(this.cursor+1);\n\t this.input = `${s1}${s2}`;\n\t this.complete(this.render);\n\t this.render();\n\t }\n\n\t first() {\n\t this.moveSelect(0);\n\t this.render();\n\t }\n\n\t last() {\n\t this.moveSelect(this.suggestions.length - 1);\n\t this.render();\n\t }\n\n\t up() {\n\t if (this.select === 0) {\n\t this.moveSelect(this.suggestions.length - 1);\n\t } else {\n\t this.moveSelect(this.select - 1);\n\t }\n\t this.render();\n\t }\n\n\t down() {\n\t if (this.select === this.suggestions.length - 1) {\n\t this.moveSelect(0);\n\t } else {\n\t this.moveSelect(this.select + 1);\n\t }\n\t this.render();\n\t }\n\n\t next() {\n\t if (this.select === this.suggestions.length - 1) {\n\t this.moveSelect(0);\n\t } else this.moveSelect(this.select + 1);\n\t this.render();\n\t }\n\n\t nextPage() {\n\t this.moveSelect(Math.min(this.select + this.limit, this.suggestions.length - 1));\n\t this.render();\n\t }\n\n\t prevPage() {\n\t this.moveSelect(Math.max(this.select - this.limit, 0));\n\t this.render();\n\t }\n\n\t left() {\n\t if (this.cursor <= 0) return this.bell();\n\t this.cursor = this.cursor-1;\n\t this.render();\n\t }\n\n\t right() {\n\t if (this.cursor*this.scale >= this.rendered.length) return this.bell();\n\t this.cursor = this.cursor+1;\n\t this.render();\n\t }\n\n\t renderOption(v, hovered, isStart, isEnd) {\n\t let desc;\n\t let prefix = isStart ? figures.arrowUp : isEnd ? figures.arrowDown : ' ';\n\t let title = hovered ? color.cyan().underline(v.title) : v.title;\n\t prefix = (hovered ? color.cyan(figures.pointer) + ' ' : ' ') + prefix;\n\t if (v.description) {\n\t desc = ` - ${v.description}`;\n\t if (prefix.length + title.length + desc.length >= this.out.columns\n\t || v.description.split(/\\r?\\n/).length > 1) {\n\t desc = '\\n' + wrap(v.description, { margin: 3, width: this.out.columns });\n\t }\n\t }\n\t return prefix + ' ' + title + color.gray(desc || '');\n\t }\n\n\t render() {\n\t if (this.closed) return;\n\t if (this.firstRender) this.out.write(cursor.hide);\n\t else this.out.write(clear(this.outputText, this.out.columns));\n\t super.render();\n\n\t let { startIndex, endIndex } = entriesToDisplay(this.select, this.choices.length, this.limit);\n\n\t this.outputText = [\n\t style.symbol(this.done, this.aborted, this.exited),\n\t color.bold(this.msg),\n\t style.delimiter(this.completing),\n\t this.done && this.suggestions[this.select]\n\t ? this.suggestions[this.select].title\n\t : this.rendered = this.transform.render(this.input)\n\t ].join(' ');\n\n\t if (!this.done) {\n\t const suggestions = this.suggestions\n\t .slice(startIndex, endIndex)\n\t .map((item, i) => this.renderOption(item,\n\t this.select === i + startIndex,\n\t i === 0 && startIndex > 0,\n\t i + startIndex === endIndex - 1 && endIndex < this.choices.length))\n\t .join('\\n');\n\t this.outputText += `\\n` + (suggestions || color.gray(this.fallback.title));\n\t }\n\n\t this.out.write(erase.line + cursor.to(0) + this.outputText);\n\t }\n\t}\n\n\tautocomplete = AutocompletePrompt;\n\treturn autocomplete;\n}\n\nvar autocompleteMultiselect;\nvar hasRequiredAutocompleteMultiselect;\n\nfunction requireAutocompleteMultiselect () {\n\tif (hasRequiredAutocompleteMultiselect) return autocompleteMultiselect;\n\thasRequiredAutocompleteMultiselect = 1;\n\n\tconst color = requireKleur();\n\tconst { cursor } = requireSrc();\n\tconst MultiselectPrompt = requireMultiselect();\n\tconst { clear, style, figures } = requireUtil();\n\t/**\n\t * MultiselectPrompt Base Element\n\t * @param {Object} opts Options\n\t * @param {String} opts.message Message\n\t * @param {Array} opts.choices Array of choice objects\n\t * @param {String} [opts.hint] Hint to display\n\t * @param {String} [opts.warn] Hint shown for disabled choices\n\t * @param {Number} [opts.max] Max choices\n\t * @param {Number} [opts.cursor=0] Cursor start position\n\t * @param {Stream} [opts.stdin] The Readable stream to listen to\n\t * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n\t */\n\tclass AutocompleteMultiselectPrompt extends MultiselectPrompt {\n\t constructor(opts={}) {\n\t opts.overrideRender = true;\n\t super(opts);\n\t this.inputValue = '';\n\t this.clear = clear('', this.out.columns);\n\t this.filteredOptions = this.value;\n\t this.render();\n\t }\n\n\t last() {\n\t this.cursor = this.filteredOptions.length - 1;\n\t this.render();\n\t }\n\t next() {\n\t this.cursor = (this.cursor + 1) % this.filteredOptions.length;\n\t this.render();\n\t }\n\n\t up() {\n\t if (this.cursor === 0) {\n\t this.cursor = this.filteredOptions.length - 1;\n\t } else {\n\t this.cursor--;\n\t }\n\t this.render();\n\t }\n\n\t down() {\n\t if (this.cursor === this.filteredOptions.length - 1) {\n\t this.cursor = 0;\n\t } else {\n\t this.cursor++;\n\t }\n\t this.render();\n\t }\n\n\t left() {\n\t this.filteredOptions[this.cursor].selected = false;\n\t this.render();\n\t }\n\n\t right() {\n\t if (this.value.filter(e => e.selected).length >= this.maxChoices) return this.bell();\n\t this.filteredOptions[this.cursor].selected = true;\n\t this.render();\n\t }\n\n\t delete() {\n\t if (this.inputValue.length) {\n\t this.inputValue = this.inputValue.substr(0, this.inputValue.length - 1);\n\t this.updateFilteredOptions();\n\t }\n\t }\n\n\t updateFilteredOptions() {\n\t const currentHighlight = this.filteredOptions[this.cursor];\n\t this.filteredOptions = this.value\n\t .filter(v => {\n\t if (this.inputValue) {\n\t if (typeof v.title === 'string') {\n\t if (v.title.toLowerCase().includes(this.inputValue.toLowerCase())) {\n\t return true;\n\t }\n\t }\n\t if (typeof v.value === 'string') {\n\t if (v.value.toLowerCase().includes(this.inputValue.toLowerCase())) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t }\n\t return true;\n\t });\n\t const newHighlightIndex = this.filteredOptions.findIndex(v => v === currentHighlight);\n\t this.cursor = newHighlightIndex < 0 ? 0 : newHighlightIndex;\n\t this.render();\n\t }\n\n\t handleSpaceToggle() {\n\t const v = this.filteredOptions[this.cursor];\n\n\t if (v.selected) {\n\t v.selected = false;\n\t this.render();\n\t } else if (v.disabled || this.value.filter(e => e.selected).length >= this.maxChoices) {\n\t return this.bell();\n\t } else {\n\t v.selected = true;\n\t this.render();\n\t }\n\t }\n\n\t handleInputChange(c) {\n\t this.inputValue = this.inputValue + c;\n\t this.updateFilteredOptions();\n\t }\n\n\t _(c, key) {\n\t if (c === ' ') {\n\t this.handleSpaceToggle();\n\t } else {\n\t this.handleInputChange(c);\n\t }\n\t }\n\n\t renderInstructions() {\n\t if (this.instructions === undefined || this.instructions) {\n\t if (typeof this.instructions === 'string') {\n\t return this.instructions;\n\t }\n\t return `\nInstructions:\n ${figures.arrowUp}/${figures.arrowDown}: Highlight option\n ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection\n [a,b,c]/delete: Filter choices\n enter/return: Complete answer\n`;\n\t }\n\t return '';\n\t }\n\n\t renderCurrentInput() {\n\t return `\nFiltered results for: ${this.inputValue ? this.inputValue : color.gray('Enter something to filter')}\\n`;\n\t }\n\n\t renderOption(cursor, v, i, arrowIndicator) {\n\t const prefix = (v.selected ? color.green(figures.radioOn) : figures.radioOff) + ' ' + arrowIndicator + ' ';\n\t let title;\n\t if (v.disabled) title = cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);\n\t else title = cursor === i ? color.cyan().underline(v.title) : v.title;\n\t return prefix + title;\n\t }\n\n\t renderDoneOrInstructions() {\n\t if (this.done) {\n\t return this.value\n\t .filter(e => e.selected)\n\t .map(v => v.title)\n\t .join(', ');\n\t }\n\n\t const output = [color.gray(this.hint), this.renderInstructions(), this.renderCurrentInput()];\n\n\t if (this.filteredOptions.length && this.filteredOptions[this.cursor].disabled) {\n\t output.push(color.yellow(this.warn));\n\t }\n\t return output.join(' ');\n\t }\n\n\t render() {\n\t if (this.closed) return;\n\t if (this.firstRender) this.out.write(cursor.hide);\n\t super.render();\n\n\t // print prompt\n\n\t let prompt = [\n\t style.symbol(this.done, this.aborted),\n\t color.bold(this.msg),\n\t style.delimiter(false),\n\t this.renderDoneOrInstructions()\n\t ].join(' ');\n\n\t if (this.showMinError) {\n\t prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`);\n\t this.showMinError = false;\n\t }\n\t prompt += this.renderOptions(this.filteredOptions);\n\n\t this.out.write(this.clear + prompt);\n\t this.clear = clear(prompt, this.out.columns);\n\t }\n\t}\n\n\tautocompleteMultiselect = AutocompleteMultiselectPrompt;\n\treturn autocompleteMultiselect;\n}\n\nvar confirm;\nvar hasRequiredConfirm;\n\nfunction requireConfirm () {\n\tif (hasRequiredConfirm) return confirm;\n\thasRequiredConfirm = 1;\n\tconst color = requireKleur();\n\tconst Prompt = requirePrompt();\n\tconst { style, clear } = requireUtil();\n\tconst { erase, cursor } = requireSrc();\n\n\t/**\n\t * ConfirmPrompt Base Element\n\t * @param {Object} opts Options\n\t * @param {String} opts.message Message\n\t * @param {Boolean} [opts.initial] Default value (true/false)\n\t * @param {Stream} [opts.stdin] The Readable stream to listen to\n\t * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n\t * @param {String} [opts.yes] The \"Yes\" label\n\t * @param {String} [opts.yesOption] The \"Yes\" option when choosing between yes/no\n\t * @param {String} [opts.no] The \"No\" label\n\t * @param {String} [opts.noOption] The \"No\" option when choosing between yes/no\n\t */\n\tclass ConfirmPrompt extends Prompt {\n\t constructor(opts={}) {\n\t super(opts);\n\t this.msg = opts.message;\n\t this.value = opts.initial;\n\t this.initialValue = !!opts.initial;\n\t this.yesMsg = opts.yes || 'yes';\n\t this.yesOption = opts.yesOption || '(Y/n)';\n\t this.noMsg = opts.no || 'no';\n\t this.noOption = opts.noOption || '(y/N)';\n\t this.render();\n\t }\n\n\t reset() {\n\t this.value = this.initialValue;\n\t this.fire();\n\t this.render();\n\t }\n\n\t exit() {\n\t this.abort();\n\t }\n\n\t abort() {\n\t this.done = this.aborted = true;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t submit() {\n\t this.value = this.value || false;\n\t this.done = true;\n\t this.aborted = false;\n\t this.fire();\n\t this.render();\n\t this.out.write('\\n');\n\t this.close();\n\t }\n\n\t _(c, key) {\n\t if (c.toLowerCase() === 'y') {\n\t this.value = true;\n\t return this.submit();\n\t }\n\t if (c.toLowerCase() === 'n') {\n\t this.value = false;\n\t return this.submit();\n\t }\n\t return this.bell();\n\t }\n\n\t render() {\n\t if (this.closed) return;\n\t if (this.firstRender) this.out.write(cursor.hide);\n\t else this.out.write(clear(this.outputText, this.out.columns));\n\t super.render();\n\n\t this.outputText = [\n\t style.symbol(this.done, this.aborted),\n\t color.bold(this.msg),\n\t style.delimiter(this.done),\n\t this.done ? (this.value ? this.yesMsg : this.noMsg)\n\t : color.gray(this.initialValue ? this.yesOption : this.noOption)\n\t ].join(' ');\n\n\t this.out.write(erase.line + cursor.to(0) + this.outputText);\n\t }\n\t}\n\n\tconfirm = ConfirmPrompt;\n\treturn confirm;\n}\n\nvar elements;\nvar hasRequiredElements;\n\nfunction requireElements () {\n\tif (hasRequiredElements) return elements;\n\thasRequiredElements = 1;\n\n\telements = {\n\t TextPrompt: requireText(),\n\t SelectPrompt: requireSelect(),\n\t TogglePrompt: requireToggle(),\n\t DatePrompt: requireDate(),\n\t NumberPrompt: requireNumber(),\n\t MultiselectPrompt: requireMultiselect(),\n\t AutocompletePrompt: requireAutocomplete(),\n\t AutocompleteMultiselectPrompt: requireAutocompleteMultiselect(),\n\t ConfirmPrompt: requireConfirm()\n\t};\n\treturn elements;\n}\n\nvar hasRequiredPrompts$1;\n\nfunction requirePrompts$1 () {\n\tif (hasRequiredPrompts$1) return prompts$2;\n\thasRequiredPrompts$1 = 1;\n\t(function (exports) {\n\t\tconst $ = exports;\n\t\tconst el = requireElements();\n\t\tconst noop = v => v;\n\n\t\tfunction toPrompt(type, args, opts={}) {\n\t\t return new Promise((res, rej) => {\n\t\t const p = new el[type](args);\n\t\t const onAbort = opts.onAbort || noop;\n\t\t const onSubmit = opts.onSubmit || noop;\n\t\t const onExit = opts.onExit || noop;\n\t\t p.on('state', args.onState || noop);\n\t\t p.on('submit', x => res(onSubmit(x)));\n\t\t p.on('exit', x => res(onExit(x)));\n\t\t p.on('abort', x => rej(onAbort(x)));\n\t\t });\n\t\t}\n\n\t\t/**\n\t\t * Text prompt\n\t\t * @param {string} args.message Prompt message to display\n\t\t * @param {string} [args.initial] Default string value\n\t\t * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n\t\t * @param {function} [args.onState] On state change callback\n\t\t * @param {function} [args.validate] Function to validate user input\n\t\t * @param {Stream} [args.stdin] The Readable stream to listen to\n\t\t * @param {Stream} [args.stdout] The Writable stream to write readline data to\n\t\t * @returns {Promise} Promise with user input\n\t\t */\n\t\t$.text = args => toPrompt('TextPrompt', args);\n\n\t\t/**\n\t\t * Password prompt with masked input\n\t\t * @param {string} args.message Prompt message to display\n\t\t * @param {string} [args.initial] Default string value\n\t\t * @param {function} [args.onState] On state change callback\n\t\t * @param {function} [args.validate] Function to validate user input\n\t\t * @param {Stream} [args.stdin] The Readable stream to listen to\n\t\t * @param {Stream} [args.stdout] The Writable stream to write readline data to\n\t\t * @returns {Promise} Promise with user input\n\t\t */\n\t\t$.password = args => {\n\t\t args.style = 'password';\n\t\t return $.text(args);\n\t\t};\n\n\t\t/**\n\t\t * Prompt where input is invisible, like sudo\n\t\t * @param {string} args.message Prompt message to display\n\t\t * @param {string} [args.initial] Default string value\n\t\t * @param {function} [args.onState] On state change callback\n\t\t * @param {function} [args.validate] Function to validate user input\n\t\t * @param {Stream} [args.stdin] The Readable stream to listen to\n\t\t * @param {Stream} [args.stdout] The Writable stream to write readline data to\n\t\t * @returns {Promise} Promise with user input\n\t\t */\n\t\t$.invisible = args => {\n\t\t args.style = 'invisible';\n\t\t return $.text(args);\n\t\t};\n\n\t\t/**\n\t\t * Number prompt\n\t\t * @param {string} args.message Prompt message to display\n\t\t * @param {number} args.initial Default number value\n\t\t * @param {function} [args.onState] On state change callback\n\t\t * @param {number} [args.max] Max value\n\t\t * @param {number} [args.min] Min value\n\t\t * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n\t\t * @param {Boolean} [opts.float=false] Parse input as floats\n\t\t * @param {Number} [opts.round=2] Round floats to x decimals\n\t\t * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys\n\t\t * @param {function} [args.validate] Function to validate user input\n\t\t * @param {Stream} [args.stdin] The Readable stream to listen to\n\t\t * @param {Stream} [args.stdout] The Writable stream to write readline data to\n\t\t * @returns {Promise} Promise with user input\n\t\t */\n\t\t$.number = args => toPrompt('NumberPrompt', args);\n\n\t\t/**\n\t\t * Date prompt\n\t\t * @param {string} args.message Prompt message to display\n\t\t * @param {number} args.initial Default number value\n\t\t * @param {function} [args.onState] On state change callback\n\t\t * @param {number} [args.max] Max value\n\t\t * @param {number} [args.min] Min value\n\t\t * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n\t\t * @param {Boolean} [opts.float=false] Parse input as floats\n\t\t * @param {Number} [opts.round=2] Round floats to x decimals\n\t\t * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys\n\t\t * @param {function} [args.validate] Function to validate user input\n\t\t * @param {Stream} [args.stdin] The Readable stream to listen to\n\t\t * @param {Stream} [args.stdout] The Writable stream to write readline data to\n\t\t * @returns {Promise} Promise with user input\n\t\t */\n\t\t$.date = args => toPrompt('DatePrompt', args);\n\n\t\t/**\n\t\t * Classic yes/no prompt\n\t\t * @param {string} args.message Prompt message to display\n\t\t * @param {boolean} [args.initial=false] Default value\n\t\t * @param {function} [args.onState] On state change callback\n\t\t * @param {Stream} [args.stdin] The Readable stream to listen to\n\t\t * @param {Stream} [args.stdout] The Writable stream to write readline data to\n\t\t * @returns {Promise} Promise with user input\n\t\t */\n\t\t$.confirm = args => toPrompt('ConfirmPrompt', args);\n\n\t\t/**\n\t\t * List prompt, split intput string by `seperator`\n\t\t * @param {string} args.message Prompt message to display\n\t\t * @param {string} [args.initial] Default string value\n\t\t * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n\t\t * @param {string} [args.separator] String separator\n\t\t * @param {function} [args.onState] On state change callback\n\t\t * @param {Stream} [args.stdin] The Readable stream to listen to\n\t\t * @param {Stream} [args.stdout] The Writable stream to write readline data to\n\t\t * @returns {Promise} Promise with user input, in form of an `Array`\n\t\t */\n\t\t$.list = args => {\n\t\t const sep = args.separator || ',';\n\t\t return toPrompt('TextPrompt', args, {\n\t\t onSubmit: str => str.split(sep).map(s => s.trim())\n\t\t });\n\t\t};\n\n\t\t/**\n\t\t * Toggle/switch prompt\n\t\t * @param {string} args.message Prompt message to display\n\t\t * @param {boolean} [args.initial=false] Default value\n\t\t * @param {string} [args.active=\"on\"] Text for `active` state\n\t\t * @param {string} [args.inactive=\"off\"] Text for `inactive` state\n\t\t * @param {function} [args.onState] On state change callback\n\t\t * @param {Stream} [args.stdin] The Readable stream to listen to\n\t\t * @param {Stream} [args.stdout] The Writable stream to write readline data to\n\t\t * @returns {Promise} Promise with user input\n\t\t */\n\t\t$.toggle = args => toPrompt('TogglePrompt', args);\n\n\t\t/**\n\t\t * Interactive select prompt\n\t\t * @param {string} args.message Prompt message to display\n\t\t * @param {Array} args.choices Array of choices objects `[{ title, value }, ...]`\n\t\t * @param {number} [args.initial] Index of default value\n\t\t * @param {String} [args.hint] Hint to display\n\t\t * @param {function} [args.onState] On state change callback\n\t\t * @param {Stream} [args.stdin] The Readable stream to listen to\n\t\t * @param {Stream} [args.stdout] The Writable stream to write readline data to\n\t\t * @returns {Promise} Promise with user input\n\t\t */\n\t\t$.select = args => toPrompt('SelectPrompt', args);\n\n\t\t/**\n\t\t * Interactive multi-select / autocompleteMultiselect prompt\n\t\t * @param {string} args.message Prompt message to display\n\t\t * @param {Array} args.choices Array of choices objects `[{ title, value, [selected] }, ...]`\n\t\t * @param {number} [args.max] Max select\n\t\t * @param {string} [args.hint] Hint to display user\n\t\t * @param {Number} [args.cursor=0] Cursor start position\n\t\t * @param {function} [args.onState] On state change callback\n\t\t * @param {Stream} [args.stdin] The Readable stream to listen to\n\t\t * @param {Stream} [args.stdout] The Writable stream to write readline data to\n\t\t * @returns {Promise} Promise with user input\n\t\t */\n\t\t$.multiselect = args => {\n\t\t args.choices = [].concat(args.choices || []);\n\t\t const toSelected = items => items.filter(item => item.selected).map(item => item.value);\n\t\t return toPrompt('MultiselectPrompt', args, {\n\t\t onAbort: toSelected,\n\t\t onSubmit: toSelected\n\t\t });\n\t\t};\n\n\t\t$.autocompleteMultiselect = args => {\n\t\t args.choices = [].concat(args.choices || []);\n\t\t const toSelected = items => items.filter(item => item.selected).map(item => item.value);\n\t\t return toPrompt('AutocompleteMultiselectPrompt', args, {\n\t\t onAbort: toSelected,\n\t\t onSubmit: toSelected\n\t\t });\n\t\t};\n\n\t\tconst byTitle = (input, choices) => Promise.resolve(\n\t\t choices.filter(item => item.title.slice(0, input.length).toLowerCase() === input.toLowerCase())\n\t\t);\n\n\t\t/**\n\t\t * Interactive auto-complete prompt\n\t\t * @param {string} args.message Prompt message to display\n\t\t * @param {Array} args.choices Array of auto-complete choices objects `[{ title, value }, ...]`\n\t\t * @param {Function} [args.suggest] Function to filter results based on user input. Defaults to sort by `title`\n\t\t * @param {number} [args.limit=10] Max number of results to show\n\t\t * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n\t\t * @param {String} [args.initial] Index of the default value\n\t\t * @param {boolean} [opts.clearFirst] The first ESCAPE keypress will clear the input\n\t\t * @param {String} [args.fallback] Fallback message - defaults to initial value\n\t\t * @param {function} [args.onState] On state change callback\n\t\t * @param {Stream} [args.stdin] The Readable stream to listen to\n\t\t * @param {Stream} [args.stdout] The Writable stream to write readline data to\n\t\t * @returns {Promise} Promise with user input\n\t\t */\n\t\t$.autocomplete = args => {\n\t\t args.suggest = args.suggest || byTitle;\n\t\t args.choices = [].concat(args.choices || []);\n\t\t return toPrompt('AutocompletePrompt', args);\n\t\t}; \n\t} (prompts$2));\n\treturn prompts$2;\n}\n\nvar lib$1;\nvar hasRequiredLib$1;\n\nfunction requireLib$1 () {\n\tif (hasRequiredLib$1) return lib$1;\n\thasRequiredLib$1 = 1;\n\n\tconst prompts = requirePrompts$1();\n\n\tconst passOn = ['suggest', 'format', 'onState', 'validate', 'onRender', 'type'];\n\tconst noop = () => {};\n\n\t/**\n\t * Prompt for a series of questions\n\t * @param {Array|Object} questions Single question object or Array of question objects\n\t * @param {Function} [onSubmit] Callback function called on prompt submit\n\t * @param {Function} [onCancel] Callback function called on cancel/abort\n\t * @returns {Object} Object with values from user input\n\t */\n\tasync function prompt(questions=[], { onSubmit=noop, onCancel=noop }={}) {\n\t const answers = {};\n\t const override = prompt._override || {};\n\t questions = [].concat(questions);\n\t let answer, question, quit, name, type, lastPrompt;\n\n\t const getFormattedAnswer = async (question, answer, skipValidation = false) => {\n\t if (!skipValidation && question.validate && question.validate(answer) !== true) {\n\t return;\n\t }\n\t return question.format ? await question.format(answer, answers) : answer\n\t };\n\n\t for (question of questions) {\n\t ({ name, type } = question);\n\n\t // evaluate type first and skip if type is a falsy value\n\t if (typeof type === 'function') {\n\t type = await type(answer, { ...answers }, question);\n\t question['type'] = type;\n\t }\n\t if (!type) continue;\n\n\t // if property is a function, invoke it unless it's a special function\n\t for (let key in question) {\n\t if (passOn.includes(key)) continue;\n\t let value = question[key];\n\t question[key] = typeof value === 'function' ? await value(answer, { ...answers }, lastPrompt) : value;\n\t }\n\n\t lastPrompt = question;\n\n\t if (typeof question.message !== 'string') {\n\t throw new Error('prompt message is required');\n\t }\n\n\t // update vars in case they changed\n\t ({ name, type } = question);\n\n\t if (prompts[type] === void 0) {\n\t throw new Error(`prompt type (${type}) is not defined`);\n\t }\n\n\t if (override[question.name] !== undefined) {\n\t answer = await getFormattedAnswer(question, override[question.name]);\n\t if (answer !== undefined) {\n\t answers[name] = answer;\n\t continue;\n\t }\n\t }\n\n\t try {\n\t // Get the injected answer if there is one or prompt the user\n\t answer = prompt._injected ? getInjectedAnswer(prompt._injected, question.initial) : await prompts[type](question);\n\t answers[name] = answer = await getFormattedAnswer(question, answer, true);\n\t quit = await onSubmit(question, answer, answers);\n\t } catch (err) {\n\t quit = !(await onCancel(question, answers));\n\t }\n\n\t if (quit) return answers;\n\t }\n\n\t return answers;\n\t}\n\n\tfunction getInjectedAnswer(injected, deafultValue) {\n\t const answer = injected.shift();\n\t if (answer instanceof Error) {\n\t throw answer;\n\t }\n\n\t return (answer === undefined) ? deafultValue : answer;\n\t}\n\n\tfunction inject(answers) {\n\t prompt._injected = (prompt._injected || []).concat(answers);\n\t}\n\n\tfunction override(answers) {\n\t prompt._override = Object.assign({}, answers);\n\t}\n\n\tlib$1 = Object.assign(prompt, { prompt, prompts, inject, override });\n\treturn lib$1;\n}\n\nvar prompts$1;\nvar hasRequiredPrompts;\n\nfunction requirePrompts () {\n\tif (hasRequiredPrompts) return prompts$1;\n\thasRequiredPrompts = 1;\n\tprompts$1 = requireLib$1();\n\treturn prompts$1;\n}\n\nvar promptsExports = requirePrompts();\nconst prompts = /*@__PURE__*/getDefaultExportFromCjs(promptsExports);\n\n/* globals WorkerGlobalScope, DedicatedWorkerGlobalScope, SharedWorkerGlobalScope, ServiceWorkerGlobalScope */\n\nconst isBrowser = globalThis.window?.document !== undefined;\n\nglobalThis.process?.versions?.node !== undefined;\n\nglobalThis.process?.versions?.bun !== undefined;\n\nglobalThis.Deno?.version?.deno !== undefined;\n\nglobalThis.process?.versions?.electron !== undefined;\n\nglobalThis.navigator?.userAgent?.includes('jsdom') === true;\n\ntypeof WorkerGlobalScope !== 'undefined' && globalThis instanceof WorkerGlobalScope;\n\ntypeof DedicatedWorkerGlobalScope !== 'undefined' && globalThis instanceof DedicatedWorkerGlobalScope;\n\ntypeof SharedWorkerGlobalScope !== 'undefined' && globalThis instanceof SharedWorkerGlobalScope;\n\ntypeof ServiceWorkerGlobalScope !== 'undefined' && globalThis instanceof ServiceWorkerGlobalScope;\n\n// Note: I'm intentionally not DRYing up the other variables to keep them \"lazy\".\nconst platform = globalThis.navigator?.userAgentData?.platform;\n\nplatform === 'macOS'\n\t|| globalThis.navigator?.platform === 'MacIntel' // Even on Apple silicon Macs.\n\t|| globalThis.navigator?.userAgent?.includes(' Mac ') === true\n\t|| globalThis.process?.platform === 'darwin';\n\nplatform === 'Windows'\n\t|| globalThis.navigator?.platform === 'Win32'\n\t|| globalThis.process?.platform === 'win32';\n\nplatform === 'Linux'\n\t|| globalThis.navigator?.platform?.startsWith('Linux') === true\n\t|| globalThis.navigator?.userAgent?.includes(' Linux ') === true\n\t|| globalThis.process?.platform === 'linux';\n\nplatform === 'Android'\n\t|| globalThis.navigator?.platform === 'Android'\n\t|| globalThis.navigator?.userAgent?.includes(' Android ') === true\n\t|| globalThis.process?.platform === 'android';\n\nconst OSC = '\\u001B]';\nconst BEL = '\\u0007';\nconst SEP = ';';\n\n!isBrowser && process$1.env.TERM_PROGRAM === 'Apple_Terminal';\n!isBrowser && process$1.platform === 'win32';\n\nisBrowser ? () => {\n\tthrow new Error('`process.cwd()` only works in Node.js, not the browser.');\n} : process$1.cwd;\n\nconst link = (text, url) => [\n\tOSC,\n\t'8',\n\tSEP,\n\tSEP,\n\turl,\n\tBEL,\n\ttext,\n\tOSC,\n\t'8',\n\tSEP,\n\tSEP,\n\tBEL,\n].join('');\n\nvar hasFlag;\nvar hasRequiredHasFlag;\n\nfunction requireHasFlag () {\n\tif (hasRequiredHasFlag) return hasFlag;\n\thasRequiredHasFlag = 1;\n\n\thasFlag = (flag, argv = process.argv) => {\n\t\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\t\tconst position = argv.indexOf(prefix + flag);\n\t\tconst terminatorPosition = argv.indexOf('--');\n\t\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n\t};\n\treturn hasFlag;\n}\n\nvar supportsColor_1;\nvar hasRequiredSupportsColor;\n\nfunction requireSupportsColor () {\n\tif (hasRequiredSupportsColor) return supportsColor_1;\n\thasRequiredSupportsColor = 1;\n\tconst os = require$$0$1;\n\tconst tty = require$$1;\n\tconst hasFlag = requireHasFlag();\n\n\tconst {env} = process;\n\n\tlet forceColor;\n\tif (hasFlag('no-color') ||\n\t\thasFlag('no-colors') ||\n\t\thasFlag('color=false') ||\n\t\thasFlag('color=never')) {\n\t\tforceColor = 0;\n\t} else if (hasFlag('color') ||\n\t\thasFlag('colors') ||\n\t\thasFlag('color=true') ||\n\t\thasFlag('color=always')) {\n\t\tforceColor = 1;\n\t}\n\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\tforceColor = 1;\n\t\t} else if (env.FORCE_COLOR === 'false') {\n\t\t\tforceColor = 0;\n\t\t} else {\n\t\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t\t}\n\t}\n\n\tfunction translateLevel(level) {\n\t\tif (level === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn {\n\t\t\tlevel,\n\t\t\thasBasic: true,\n\t\t\thas256: level >= 2,\n\t\t\thas16m: level >= 3\n\t\t};\n\t}\n\n\tfunction supportsColor(haveStream, streamIsTTY) {\n\t\tif (forceColor === 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (hasFlag('color=16m') ||\n\t\t\thasFlag('color=full') ||\n\t\t\thasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\n\t\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst min = forceColor || 0;\n\n\t\tif (env.TERM === 'dumb') {\n\t\t\treturn min;\n\t\t}\n\n\t\tif (process.platform === 'win32') {\n\t\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\t\tconst osRelease = os.release().split('.');\n\t\t\tif (\n\t\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\t\tNumber(osRelease[2]) >= 10586\n\t\t\t) {\n\t\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t\t}\n\n\t\t\treturn 1;\n\t\t}\n\n\t\tif ('CI' in env) {\n\t\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\treturn min;\n\t\t}\n\n\t\tif ('TEAMCITY_VERSION' in env) {\n\t\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t\t}\n\n\t\tif (env.COLORTERM === 'truecolor') {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif ('TERM_PROGRAM' in env) {\n\t\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\t\tswitch (env.TERM_PROGRAM) {\n\t\t\t\tcase 'iTerm.app':\n\t\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t\tcase 'Apple_Terminal':\n\t\t\t\t\treturn 2;\n\t\t\t\t// No default\n\t\t\t}\n\t\t}\n\n\t\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\t\treturn 2;\n\t\t}\n\n\t\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif ('COLORTERM' in env) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tfunction getSupportLevel(stream) {\n\t\tconst level = supportsColor(stream, stream && stream.isTTY);\n\t\treturn translateLevel(level);\n\t}\n\n\tsupportsColor_1 = {\n\t\tsupportsColor: getSupportLevel,\n\t\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\t\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n\t};\n\treturn supportsColor_1;\n}\n\nvar supportsHyperlinks$1;\nvar hasRequiredSupportsHyperlinks;\n\nfunction requireSupportsHyperlinks () {\n\tif (hasRequiredSupportsHyperlinks) return supportsHyperlinks$1;\n\thasRequiredSupportsHyperlinks = 1;\n\tconst supportsColor = requireSupportsColor();\n\tconst hasFlag = requireHasFlag();\n\n\t/**\n\t@param {string} versionString\n\t@returns {{ major: number, minor: number, patch: number }}\n\t*/\n\tfunction parseVersion(versionString) {\n\t\tif (/^\\d{3,4}$/.test(versionString)) {\n\t\t\t// Env var doesn't always use dots. example: 4601 => 46.1.0\n\t\t\tconst m = /(\\d{1,2})(\\d{2})/.exec(versionString) || [];\n\t\t\treturn {\n\t\t\t\tmajor: 0,\n\t\t\t\tminor: parseInt(m[1], 10),\n\t\t\t\tpatch: parseInt(m[2], 10)\n\t\t\t};\n\t\t}\n\n\t\tconst versions = (versionString || '').split('.').map(n => parseInt(n, 10));\n\t\treturn {\n\t\t\tmajor: versions[0],\n\t\t\tminor: versions[1],\n\t\t\tpatch: versions[2]\n\t\t};\n\t}\n\n\t/**\n\t@param {{ isTTY?: boolean | undefined }} stream\n\t@returns {boolean}\n\t*/\n\t// eslint-disable-next-line complexity\n\tfunction supportsHyperlink(stream) {\n\t\tconst {\n\t\t\tCI,\n\t\t\tFORCE_HYPERLINK,\n\t\t\tNETLIFY,\n\t\t\tTEAMCITY_VERSION,\n\t\t\tTERM_PROGRAM,\n\t\t\tTERM_PROGRAM_VERSION,\n\t\t\tVTE_VERSION,\n\t\t\tTERM,\n\t\t} = process.env;\n\n\t\tif (FORCE_HYPERLINK) {\n\t\t\treturn !(FORCE_HYPERLINK.length > 0 && parseInt(FORCE_HYPERLINK, 10) === 0);\n\t\t}\n\n\t\tif (hasFlag('no-hyperlink') || hasFlag('no-hyperlinks') || hasFlag('hyperlink=false') || hasFlag('hyperlink=never')) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (hasFlag('hyperlink=true') || hasFlag('hyperlink=always')) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Netlify does not run a TTY, it does not need `supportsColor` check\n\t\tif (NETLIFY) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If they specify no colors, they probably don't want hyperlinks.\n\t\tif (!supportsColor.supportsColor(stream)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (stream && !stream.isTTY) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Windows Terminal\n\t\tif ('WT_SESSION' in process.env) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (process.platform === 'win32') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (CI) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (TEAMCITY_VERSION) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (TERM_PROGRAM) {\n\t\t\tconst version = parseVersion(TERM_PROGRAM_VERSION || '');\n\n\t\t\tswitch (TERM_PROGRAM) {\n\t\t\t\tcase 'iTerm.app':\n\t\t\t\t\tif (version.major === 3) {\n\t\t\t\t\t\treturn version.minor >= 1;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn version.major > 3;\n\t\t\t\tcase 'WezTerm':\n\t\t\t\t\treturn version.major >= 20200620;\n\t\t\t\tcase 'vscode':\n\t\t\t\t\t// eslint-disable-next-line no-mixed-operators\n\t\t\t\t\treturn version.major > 1 || version.major === 1 && version.minor >= 72;\n\t\t\t\tcase 'ghostty':\n\t\t\t\t\treturn true;\n\t\t\t\t// No default\n\t\t\t}\n\t\t}\n\n\t\tif (VTE_VERSION) {\n\t\t\t// 0.50.0 was supposed to support hyperlinks, but throws a segfault\n\t\t\tif (VTE_VERSION === '0.50.0') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst version = parseVersion(VTE_VERSION);\n\t\t\treturn version.major > 0 || version.minor >= 50;\n\t\t}\n\n\t\tswitch (TERM) {\n\t\t\tcase 'alacritty':\n\t\t\t\t// Support added in v0.11 (2022-10-13)\n\t\t\t\treturn true;\n\t\t\t// No default\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tsupportsHyperlinks$1 = {\n\t\tsupportsHyperlink,\n\t\tstdout: supportsHyperlink(process.stdout),\n\t\tstderr: supportsHyperlink(process.stderr)\n\t};\n\treturn supportsHyperlinks$1;\n}\n\nvar supportsHyperlinksExports = /*@__PURE__*/ requireSupportsHyperlinks();\nconst supportsHyperlinks = /*@__PURE__*/getDefaultExportFromCjs(supportsHyperlinksExports);\n\nfunction terminalLink(text, url, {target = 'stdout', ...options} = {}) {\n\tif (!supportsHyperlinks[target]) {\n\t\t// If the fallback has been explicitly disabled, don't modify the text itself.\n\t\tif (options.fallback === false) {\n\t\t\treturn text;\n\t\t}\n\n\t\treturn typeof options.fallback === 'function' ? options.fallback(text, url) : `${text} (\\u200B${url}\\u200B)`;\n\t}\n\n\treturn link(text, url);\n}\n\nterminalLink.isSupported = supportsHyperlinks.stdout;\nterminalLink.stderr = (text, url, options = {}) => terminalLink(text, url, {target: 'stderr', ...options});\nterminalLink.stderr.isSupported = supportsHyperlinks.stderr;\n\nvar cjs = {};\n\nvar posix = {};\n\nvar hasRequiredPosix;\n\nfunction requirePosix () {\n\tif (hasRequiredPosix) return posix;\n\thasRequiredPosix = 1;\n\t/**\n\t * This is the Posix implementation of isexe, which uses the file\n\t * mode and uid/gid values.\n\t *\n\t * @module\n\t */\n\tObject.defineProperty(posix, \"__esModule\", { value: true });\n\tposix.sync = posix.isexe = void 0;\n\tconst fs_1 = require$$0$2;\n\tconst promises_1 = require$$1$1;\n\t/**\n\t * Determine whether a path is executable according to the mode and\n\t * current (or specified) user and group IDs.\n\t */\n\tconst isexe = async (path, options = {}) => {\n\t const { ignoreErrors = false } = options;\n\t try {\n\t return checkStat(await (0, promises_1.stat)(path), options);\n\t }\n\t catch (e) {\n\t const er = e;\n\t if (ignoreErrors || er.code === 'EACCES')\n\t return false;\n\t throw er;\n\t }\n\t};\n\tposix.isexe = isexe;\n\t/**\n\t * Synchronously determine whether a path is executable according to\n\t * the mode and current (or specified) user and group IDs.\n\t */\n\tconst sync = (path, options = {}) => {\n\t const { ignoreErrors = false } = options;\n\t try {\n\t return checkStat((0, fs_1.statSync)(path), options);\n\t }\n\t catch (e) {\n\t const er = e;\n\t if (ignoreErrors || er.code === 'EACCES')\n\t return false;\n\t throw er;\n\t }\n\t};\n\tposix.sync = sync;\n\tconst checkStat = (stat, options) => stat.isFile() && checkMode(stat, options);\n\tconst checkMode = (stat, options) => {\n\t const myUid = options.uid ?? process.getuid?.();\n\t const myGroups = options.groups ?? process.getgroups?.() ?? [];\n\t const myGid = options.gid ?? process.getgid?.() ?? myGroups[0];\n\t if (myUid === undefined || myGid === undefined) {\n\t throw new Error('cannot get uid or gid');\n\t }\n\t const groups = new Set([myGid, ...myGroups]);\n\t const mod = stat.mode;\n\t const uid = stat.uid;\n\t const gid = stat.gid;\n\t const u = parseInt('100', 8);\n\t const g = parseInt('010', 8);\n\t const o = parseInt('001', 8);\n\t const ug = u | g;\n\t return !!(mod & o ||\n\t (mod & g && groups.has(gid)) ||\n\t (mod & u && uid === myUid) ||\n\t (mod & ug && myUid === 0));\n\t};\n\t\n\treturn posix;\n}\n\nvar win32 = {};\n\nvar hasRequiredWin32;\n\nfunction requireWin32 () {\n\tif (hasRequiredWin32) return win32;\n\thasRequiredWin32 = 1;\n\t/**\n\t * This is the Windows implementation of isexe, which uses the file\n\t * extension and PATHEXT setting.\n\t *\n\t * @module\n\t */\n\tObject.defineProperty(win32, \"__esModule\", { value: true });\n\twin32.sync = win32.isexe = void 0;\n\tconst fs_1 = require$$0$2;\n\tconst promises_1 = require$$1$1;\n\t/**\n\t * Determine whether a path is executable based on the file extension\n\t * and PATHEXT environment variable (or specified pathExt option)\n\t */\n\tconst isexe = async (path, options = {}) => {\n\t const { ignoreErrors = false } = options;\n\t try {\n\t return checkStat(await (0, promises_1.stat)(path), path, options);\n\t }\n\t catch (e) {\n\t const er = e;\n\t if (ignoreErrors || er.code === 'EACCES')\n\t return false;\n\t throw er;\n\t }\n\t};\n\twin32.isexe = isexe;\n\t/**\n\t * Synchronously determine whether a path is executable based on the file\n\t * extension and PATHEXT environment variable (or specified pathExt option)\n\t */\n\tconst sync = (path, options = {}) => {\n\t const { ignoreErrors = false } = options;\n\t try {\n\t return checkStat((0, fs_1.statSync)(path), path, options);\n\t }\n\t catch (e) {\n\t const er = e;\n\t if (ignoreErrors || er.code === 'EACCES')\n\t return false;\n\t throw er;\n\t }\n\t};\n\twin32.sync = sync;\n\tconst checkPathExt = (path, options) => {\n\t const { pathExt = process.env.PATHEXT || '' } = options;\n\t const peSplit = pathExt.split(';');\n\t if (peSplit.indexOf('') !== -1) {\n\t return true;\n\t }\n\t for (let i = 0; i < peSplit.length; i++) {\n\t const p = peSplit[i].toLowerCase();\n\t const ext = path.substring(path.length - p.length).toLowerCase();\n\t if (p && ext === p) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t};\n\tconst checkStat = (stat, path, options) => stat.isFile() && checkPathExt(path, options);\n\t\n\treturn win32;\n}\n\nvar options = {};\n\nvar hasRequiredOptions;\n\nfunction requireOptions () {\n\tif (hasRequiredOptions) return options;\n\thasRequiredOptions = 1;\n\tObject.defineProperty(options, \"__esModule\", { value: true });\n\t\n\treturn options;\n}\n\nvar hasRequiredCjs;\n\nfunction requireCjs () {\n\tif (hasRequiredCjs) return cjs;\n\thasRequiredCjs = 1;\n\t(function (exports) {\n\t\tvar __createBinding = (cjs && cjs.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t var desc = Object.getOwnPropertyDescriptor(m, k);\n\t\t if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n\t\t desc = { enumerable: true, get: function() { return m[k]; } };\n\t\t }\n\t\t Object.defineProperty(o, k2, desc);\n\t\t}) : (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t o[k2] = m[k];\n\t\t}));\n\t\tvar __setModuleDefault = (cjs && cjs.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t\t Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t\t}) : function(o, v) {\n\t\t o[\"default\"] = v;\n\t\t});\n\t\tvar __importStar = (cjs && cjs.__importStar) || function (mod) {\n\t\t if (mod && mod.__esModule) return mod;\n\t\t var result = {};\n\t\t if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t\t __setModuleDefault(result, mod);\n\t\t return result;\n\t\t};\n\t\tvar __exportStar = (cjs && cjs.__exportStar) || function(m, exports) {\n\t\t for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.sync = exports.isexe = exports.posix = exports.win32 = void 0;\n\t\tconst posix = __importStar(requirePosix());\n\t\texports.posix = posix;\n\t\tconst win32 = __importStar(requireWin32());\n\t\texports.win32 = win32;\n\t\t__exportStar(requireOptions(), exports);\n\t\tconst platform = process.env._ISEXE_TEST_PLATFORM_ || process.platform;\n\t\tconst impl = platform === 'win32' ? win32 : posix;\n\t\t/**\n\t\t * Determine whether a path is executable on the current platform.\n\t\t */\n\t\texports.isexe = impl.isexe;\n\t\t/**\n\t\t * Synchronously determine whether a path is executable on the\n\t\t * current platform.\n\t\t */\n\t\texports.sync = impl.sync;\n\t\t\n\t} (cjs));\n\treturn cjs;\n}\n\nvar lib;\nvar hasRequiredLib;\n\nfunction requireLib () {\n\tif (hasRequiredLib) return lib;\n\thasRequiredLib = 1;\n\tconst { isexe, sync: isexeSync } = requireCjs();\n\tconst { join, delimiter, sep, posix } = require$$1$2;\n\n\tconst isWindows = process.platform === 'win32';\n\n\t// used to check for slashed in commands passed in. always checks for the posix\n\t// seperator on all platforms, and checks for the current separator when not on\n\t// a posix platform. don't use the isWindows check for this since that is mocked\n\t// in tests but we still need the code to actually work when called. that is also\n\t// why it is ignored from coverage.\n\t/* istanbul ignore next */\n\tconst rSlash = new RegExp(`[${posix.sep}${sep === posix.sep ? '' : sep}]`.replace(/(\\\\)/g, '\\\\$1'));\n\tconst rRel = new RegExp(`^\\\\.${rSlash.source}`);\n\n\tconst getNotFoundError = (cmd) =>\n\t Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' });\n\n\tconst getPathInfo = (cmd, {\n\t path: optPath = process.env.PATH,\n\t pathExt: optPathExt = process.env.PATHEXT,\n\t delimiter: optDelimiter = delimiter,\n\t}) => {\n\t // If it has a slash, then we don't bother searching the pathenv.\n\t // just check the file itself, and that's it.\n\t const pathEnv = cmd.match(rSlash) ? [''] : [\n\t // windows always checks the cwd first\n\t ...(isWindows ? [process.cwd()] : []),\n\t ...(optPath || /* istanbul ignore next: very unusual */ '').split(optDelimiter),\n\t ];\n\n\t if (isWindows) {\n\t const pathExtExe = optPathExt ||\n\t ['.EXE', '.CMD', '.BAT', '.COM'].join(optDelimiter);\n\t const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()]);\n\t if (cmd.includes('.') && pathExt[0] !== '') {\n\t pathExt.unshift('');\n\t }\n\t return { pathEnv, pathExt, pathExtExe }\n\t }\n\n\t return { pathEnv, pathExt: [''] }\n\t};\n\n\tconst getPathPart = (raw, cmd) => {\n\t const pathPart = /^\".*\"$/.test(raw) ? raw.slice(1, -1) : raw;\n\t const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : '';\n\t return prefix + join(pathPart, cmd)\n\t};\n\n\tconst which = async (cmd, opt = {}) => {\n\t const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);\n\t const found = [];\n\n\t for (const envPart of pathEnv) {\n\t const p = getPathPart(envPart, cmd);\n\n\t for (const ext of pathExt) {\n\t const withExt = p + ext;\n\t const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true });\n\t if (is) {\n\t if (!opt.all) {\n\t return withExt\n\t }\n\t found.push(withExt);\n\t }\n\t }\n\t }\n\n\t if (opt.all && found.length) {\n\t return found\n\t }\n\n\t if (opt.nothrow) {\n\t return null\n\t }\n\n\t throw getNotFoundError(cmd)\n\t};\n\n\tconst whichSync = (cmd, opt = {}) => {\n\t const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);\n\t const found = [];\n\n\t for (const pathEnvPart of pathEnv) {\n\t const p = getPathPart(pathEnvPart, cmd);\n\n\t for (const ext of pathExt) {\n\t const withExt = p + ext;\n\t const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true });\n\t if (is) {\n\t if (!opt.all) {\n\t return withExt\n\t }\n\t found.push(withExt);\n\t }\n\t }\n\t }\n\n\t if (opt.all && found.length) {\n\t return found\n\t }\n\n\t if (opt.nothrow) {\n\t return null\n\t }\n\n\t throw getNotFoundError(cmd)\n\t};\n\n\tlib = which;\n\twhich.sync = whichSync;\n\treturn lib;\n}\n\nvar libExports = requireLib();\nconst which = /*@__PURE__*/getDefaultExportFromCjs(libExports);\n\nconst CLI_TEMP_DIR = join(os.tmpdir(), \"antfu-ni\");\nfunction remove(arr, v) {\n const index = arr.indexOf(v);\n if (index >= 0)\n arr.splice(index, 1);\n return arr;\n}\nfunction exclude(arr, ...v) {\n return arr.slice().filter((item) => !v.includes(item));\n}\nfunction cmdExists(cmd) {\n return which.sync(cmd, { nothrow: true }) !== null;\n}\nlet counter = 0;\nasync function openTemp() {\n if (!existsSync(CLI_TEMP_DIR))\n await promises.mkdir(CLI_TEMP_DIR, { recursive: true });\n const competitivePath = join(CLI_TEMP_DIR, `.${process$1.pid}.${counter}`);\n counter += 1;\n return promises.open(competitivePath, \"wx\").then((fd) => ({\n fd,\n path: competitivePath,\n cleanup() {\n fd.close().then(() => {\n if (existsSync(competitivePath))\n promises.unlink(competitivePath);\n });\n }\n })).catch((error) => {\n if (error && error.code === \"EEXIST\")\n return openTemp();\n else\n return void 0;\n });\n}\nasync function writeFileSafe(path, data = \"\") {\n const temp = await openTemp();\n if (temp) {\n promises.writeFile(temp.path, data).then(() => {\n const directory = dirname(path);\n if (!existsSync(directory))\n promises.mkdir(directory, { recursive: true });\n return promises.rename(temp.path, path).then(() => true).catch(() => false);\n }).catch(() => false).finally(temp.cleanup);\n }\n return false;\n}\nfunction limitText(text, maxWidth) {\n if (text.length <= maxWidth)\n return text;\n return `${text.slice(0, maxWidth)}${c.dim(\"\\u2026\")}`;\n}\nfunction formatPackageWithUrl(pkg, url, limits = 80) {\n return url ? terminalLink(\n pkg,\n url,\n {\n fallback: (_, url2) => pkg.length + url2.length > limits ? pkg : pkg + c.dim` - ${url2}`\n }\n ) : pkg;\n}\n\nasync function detect({ autoInstall, programmatic, cwd } = {}) {\n const targetDir = cwd ?? process$1.cwd();\n if (existsSync(path.join(targetDir, \"deno.json\")) || existsSync(path.join(targetDir, \"deno.jsonc\"))) {\n return \"deno\";\n }\n const {\n name,\n agent,\n version\n } = await detect$1({\n cwd,\n onUnknown: (packageManager) => {\n if (!programmatic) {\n console.warn(\"[ni] Unknown packageManager:\", packageManager);\n }\n return void 0;\n }\n }) || {};\n if (name && !cmdExists(name) && !programmatic) {\n if (!autoInstall) {\n console.warn(`[ni] Detected ${name} but it doesn't seem to be installed.\n`);\n if (process$1.env.CI)\n process$1.exit(1);\n const link = terminalLink(name, INSTALL_PAGE[name]);\n const { tryInstall } = await prompts({\n name: \"tryInstall\",\n type: \"confirm\",\n message: `Would you like to globally install ${link}?`\n });\n if (!tryInstall)\n process$1.exit(1);\n }\n await x(\n \"npm\",\n [\"i\", \"-g\", `${name}${version ? `@${version}` : \"\"}`],\n {\n nodeOptions: {\n stdio: \"inherit\",\n cwd\n },\n throwOnError: true\n }\n );\n }\n return agent;\n}\n\nconst customRcPath = process$1.env.NI_CONFIG_FILE;\nconst home = process$1.platform === \"win32\" ? process$1.env.USERPROFILE : process$1.env.HOME;\nconst defaultRcPath = path.join(home || \"~/\", \".nirc\");\nconst rcPath = customRcPath || defaultRcPath;\nconst defaultConfig = {\n defaultAgent: \"prompt\",\n globalAgent: \"npm\",\n runAgent: void 0,\n useSfw: false\n};\nlet config;\nasync function getConfig() {\n if (!config) {\n config = Object.assign(\n {},\n defaultConfig,\n fs.existsSync(rcPath) ? ini.parse(fs.readFileSync(rcPath, \"utf-8\")) : null\n );\n if (process$1.env.NI_DEFAULT_AGENT)\n config.defaultAgent = process$1.env.NI_DEFAULT_AGENT;\n if (process$1.env.NI_GLOBAL_AGENT)\n config.globalAgent = process$1.env.NI_GLOBAL_AGENT;\n if (process$1.env.NI_RUN_AGENT === \"node\")\n config.runAgent = process$1.env.NI_RUN_AGENT;\n if (process$1.env.NI_USE_SFW !== void 0)\n config.useSfw = process$1.env.NI_USE_SFW === \"true\";\n const agent = await detect({ programmatic: true });\n if (agent)\n config.defaultAgent = agent;\n }\n return config;\n}\nasync function getDefaultAgent(programmatic) {\n const { defaultAgent } = await getConfig();\n if (defaultAgent === \"prompt\" && (programmatic || process$1.env.CI))\n return \"npm\";\n return defaultAgent;\n}\nasync function getGlobalAgent() {\n const { globalAgent } = await getConfig();\n return globalAgent;\n}\nasync function getRunAgent() {\n const { runAgent } = await getConfig();\n return runAgent;\n}\nasync function getUseSfw() {\n const { useSfw } = await getConfig();\n return useSfw;\n}\n\nclass UnsupportedCommand extends Error {\n constructor({ agent, command }) {\n super(`Command \"${command}\" is not support by agent \"${agent}\"`);\n }\n}\nfunction getCommand(agent, command, args = []) {\n if (!COMMANDS[agent])\n throw new Error(`Unsupported agent \"${agent}\"`);\n if (!COMMANDS[agent][command])\n throw new UnsupportedCommand({ agent, command });\n return constructCommand(COMMANDS[agent][command], args);\n}\nconst parseNi = ((agent, args, ctx) => {\n if (agent === \"bun\")\n args = args.map((i) => i === \"-D\" ? \"-d\" : i);\n if (agent === \"npm\")\n args = args.map((i) => i === \"-P\" ? \"--omit=dev\" : i);\n if (args.includes(\"-P\"))\n args = args.map((i) => i === \"-P\" ? \"--production\" : i);\n if (args.includes(\"-g\"))\n return getCommand(agent, \"global\", exclude(args, \"-g\"));\n if (args.includes(\"--frozen-if-present\")) {\n args = exclude(args, \"--frozen-if-present\");\n return getCommand(agent, ctx?.hasLock ? \"frozen\" : \"install\", args);\n }\n if (args.includes(\"--frozen\"))\n return getCommand(agent, \"frozen\", exclude(args, \"--frozen\"));\n if (args.length === 0 || args.every((i) => i.startsWith(\"-\")))\n return getCommand(agent, \"install\", args);\n return getCommand(agent, \"add\", args);\n});\nconst parseNr = (async (agent, args, ctx) => {\n if (args.length === 0)\n args.push(\"start\");\n const runAgent = await getRunAgent();\n let runWithNode = false;\n if (runAgent === \"node\") {\n const [majorNodeVersion] = process$1.versions.node.split(\".\").map(Number);\n if (majorNodeVersion < 22) {\n throw new Error('The runAgent \"node\" requires Node.js 22.0.0 or higher');\n }\n runWithNode = true;\n }\n let hasIfPresent = false;\n if (args.includes(\"--if-present\")) {\n args = exclude(args, \"--if-present\");\n hasIfPresent = true;\n }\n if (args.includes(\"-p\"))\n args = exclude(args, \"-p\");\n const cmd = runWithNode ? { command: \"node --run\", args } : getCommand(agent, \"run\", args);\n if (ctx?.cwd)\n cmd.cwd = ctx.cwd;\n if (!cmd)\n return cmd;\n if (hasIfPresent && !runWithNode)\n cmd.args.splice(1, 0, \"--if-present\");\n return cmd;\n});\nconst parseNup = ((agent, args) => {\n if (args.includes(\"-i\"))\n return getCommand(agent, \"upgrade-interactive\", exclude(args, \"-i\"));\n return getCommand(agent, \"upgrade\", args);\n});\nconst parseNd = ((agent, args) => {\n if (agent === \"pnpm\")\n args = args.map((i) => i === \"-c\" ? \"--check\" : i);\n if (agent === \"npm\")\n args = args.map((i) => i === \"-c\" ? \"--dry-run\" : i);\n return getCommand(agent, \"dedupe\", args);\n});\nconst parseNun = ((agent, args) => {\n if (args.includes(\"-g\"))\n return getCommand(agent, \"global_uninstall\", exclude(args, \"-g\"));\n return getCommand(agent, \"uninstall\", args);\n});\nconst parseNlx = ((agent, args) => {\n return getCommand(agent, \"execute\", args);\n});\nconst parseNa = ((agent, args) => {\n return getCommand(agent, \"agent\", args);\n});\nfunction serializeCommand(command) {\n if (!command)\n return void 0;\n if (command.args.length === 0)\n return command.command;\n return `${command.command} ${command.args.map((i) => i.includes(\" \") ? `\"${i}\"` : i).join(\" \")}`;\n}\n\nconst version = \"28.0.0\";\n\nconst DEFAULT_ENVIRONMENT_OPTIONS = {\n autoInstall: false\n};\nfunction getEnvironmentOptions() {\n return {\n ...DEFAULT_ENVIRONMENT_OPTIONS,\n autoInstall: process$1.env.NI_AUTO_INSTALL === \"true\"\n };\n}\n\nconst DEBUG_SIGN = \"?\";\nasync function runCli(fn, options = {}) {\n options = {\n ...getEnvironmentOptions(),\n ...options\n };\n const {\n args = process$1.argv.slice(2).filter(Boolean)\n } = options;\n try {\n await run(fn, args, options);\n } catch (error) {\n if (error instanceof UnsupportedCommand && !options.programmatic)\n console.log(c.red(`\\u2717 ${error.message}`));\n if (!options.programmatic)\n process$1.exit(1);\n throw error;\n }\n}\nasync function getCliCommand(fn, args, options = {}, cwd = options.cwd ?? process$1.cwd()) {\n const isGlobal = args.includes(\"-g\");\n if (isGlobal)\n return await fn(await getGlobalAgent(), args);\n let agent = await detect({ ...options, cwd }) || await getDefaultAgent(options.programmatic);\n if (agent === \"prompt\") {\n agent = (await prompts({\n name: \"agent\",\n type: \"select\",\n message: \"Choose the agent\",\n choices: AGENTS.filter((i) => !i.includes(\"@\")).map((value) => ({ title: value, value }))\n })).agent;\n if (!agent)\n return;\n }\n return await fn(agent, args, {\n programmatic: options.programmatic,\n hasLock: Boolean(agent),\n cwd\n });\n}\nasync function run(fn, args, options = {}) {\n const { programmatic, detectVolta = true } = options;\n const debug = args.includes(DEBUG_SIGN);\n if (debug)\n remove(args, DEBUG_SIGN);\n let cwd = options.cwd ?? process$1.cwd();\n if (args[0] === \"-C\") {\n cwd = resolve(cwd, args[1]);\n args.splice(0, 2);\n }\n if (args.length === 1 && (args[0]?.toLowerCase() === \"-v\" || args[0] === \"--version\")) {\n const getCmd = (a) => AGENTS.includes(a) ? getCommand(a, \"agent\", [\"-v\"]) : { command: a, args: [\"-v\"] };\n const xVersionOptions = {\n nodeOptions: {\n cwd\n },\n throwOnError: true\n };\n const getV = (a) => {\n const { command: command2, args: args2 } = getCmd(a);\n return x(command2, args2, xVersionOptions).then((e) => e.stdout).then((e) => e.startsWith(\"v\") ? e : `v${e}`);\n };\n const globalAgentPromise = getGlobalAgent();\n const globalAgentVersionPromise = globalAgentPromise.then(getV);\n const agentPromise = detect({ ...options, cwd }).then((a) => a || \"\");\n const agentVersionPromise = agentPromise.then((a) => a && getV(a));\n const nodeVersionPromise = getV(\"node\");\n console.log(`@antfu/ni ${c.cyan`v${version}`}`);\n console.log(`node ${c.green(await nodeVersionPromise)}`);\n const [agent, agentVersion] = await Promise.all([agentPromise, agentVersionPromise]);\n if (agent)\n console.log(`${agent.padEnd(10)} ${c.blue(agentVersion)}`);\n else\n console.log(\"agent no lock file\");\n const [globalAgent, globalAgentVersion] = await Promise.all([globalAgentPromise, globalAgentVersionPromise]);\n console.log(`${`${globalAgent} -g`.padEnd(10)} ${c.blue(globalAgentVersion)}`);\n return;\n }\n if (args.length === 1 && [\"-h\", \"--help\"].includes(args[0])) {\n const dash = c.dim(\"-\");\n console.log(c.green.bold(\"@antfu/ni\") + c.dim` use the right package manager v${version}\\n`);\n console.log(`ni ${dash} install`);\n console.log(`nr ${dash} run`);\n console.log(`nlx ${dash} execute`);\n console.log(`nup ${dash} upgrade`);\n console.log(`nun ${dash} uninstall`);\n console.log(`nci ${dash} clean install`);\n console.log(`na ${dash} agent alias`);\n console.log(`nd ${dash} dedupe dependencies`);\n console.log(`ni -v ${dash} show used agent`);\n console.log(`ni -i ${dash} interactive package management`);\n console.log(c.yellow(\"\\ncheck https://github.com/antfu/ni for more documentation.\"));\n return;\n }\n const command = await getCliCommand(fn, args, options, cwd);\n if (!command)\n return;\n const useSfw = await getUseSfw();\n if (useSfw && cmdExists(\"sfw\")) {\n command.args = [command.command, ...command.args];\n command.command = \"sfw\";\n } else if (useSfw) {\n if (programmatic)\n throw new Error(\"sfw is enabled but not installed\");\n console.error(\"[ni] sfw is enabled but not installed.\");\n console.error(\"[ni] Install it with: npm install -g sfw\");\n process$1.exit(1);\n }\n if (detectVolta && cmdExists(\"volta\")) {\n command.args = [\"run\", command.command, ...command.args];\n command.command = \"volta\";\n }\n if (debug) {\n const commandStr = [command.command, ...command.args].join(\" \");\n console.log(commandStr);\n return;\n }\n const proc = x(\n command.command,\n command.args,\n {\n nodeOptions: {\n stdio: \"inherit\",\n cwd: command.cwd ?? cwd\n },\n throwOnError: true\n }\n );\n process$1.once(\"SIGINT\", async () => {\n await proc;\n process$1.exit(proc.exitCode);\n });\n await proc;\n}\n\nexport { CLI_TEMP_DIR as C, UnsupportedCommand as U, getDefaultAgent as a, getGlobalAgent as b, getRunAgent as c, getUseSfw as d, detect as e, getCommand as f, getConfig as g, parseNr as h, parseNup as i, parseNd as j, parseNun as k, parseNlx as l, parseNa as m, getCliCommand as n, run as o, parseNi as p, remove as q, runCli as r, serializeCommand as s, exclude as t, cmdExists as u, limitText as v, writeFileSafe as w, formatPackageWithUrl as x, prompts as y };\n",
18
- "import a from\"./index.cjs\";export default a;export const{Ansis,fg,bg,rgb,bgRgb,hex,bgHex,reset,inverse,hidden,visible,bold,dim,italic,underline,strikethrough,black,red,green,yellow,blue,magenta,cyan,white,gray,redBright,greenBright,yellowBright,blueBright,magentaBright,cyanBright,whiteBright,bgBlack,bgRed,bgGreen,bgYellow,bgBlue,bgMagenta,bgCyan,bgWhite,bgGray,bgRedBright,bgGreenBright,bgYellowBright,bgBlueBright,bgMagentaBright,bgCyanBright,bgWhiteBright}=a;",
19
- "function dashDashArg(agent, agentCommand) {\n return (args) => {\n if (args.length > 1) {\n return [agent, agentCommand, args[0], \"--\", ...args.slice(1)];\n } else {\n return [agent, agentCommand, args[0]];\n }\n };\n}\nfunction denoExecute() {\n return (args) => {\n return [\"deno\", \"run\", `npm:${args[0]}`, ...args.slice(1)];\n };\n}\nconst npm = {\n \"agent\": [\"npm\", 0],\n \"run\": dashDashArg(\"npm\", \"run\"),\n \"install\": [\"npm\", \"i\", 0],\n \"frozen\": [\"npm\", \"ci\", 0],\n \"global\": [\"npm\", \"i\", \"-g\", 0],\n \"add\": [\"npm\", \"i\", 0],\n \"upgrade\": [\"npm\", \"update\", 0],\n \"upgrade-interactive\": null,\n \"dedupe\": [\"npm\", \"dedupe\", 0],\n \"execute\": [\"npx\", 0],\n \"execute-local\": [\"npx\", 0],\n \"uninstall\": [\"npm\", \"uninstall\", 0],\n \"global_uninstall\": [\"npm\", \"uninstall\", \"-g\", 0]\n};\nconst yarn = {\n \"agent\": [\"yarn\", 0],\n \"run\": [\"yarn\", \"run\", 0],\n \"install\": [\"yarn\", \"install\", 0],\n \"frozen\": [\"yarn\", \"install\", \"--frozen-lockfile\", 0],\n \"global\": [\"yarn\", \"global\", \"add\", 0],\n \"add\": [\"yarn\", \"add\", 0],\n \"upgrade\": [\"yarn\", \"upgrade\", 0],\n \"upgrade-interactive\": [\"yarn\", \"upgrade-interactive\", 0],\n \"dedupe\": null,\n \"execute\": [\"npx\", 0],\n \"execute-local\": dashDashArg(\"yarn\", \"exec\"),\n \"uninstall\": [\"yarn\", \"remove\", 0],\n \"global_uninstall\": [\"yarn\", \"global\", \"remove\", 0]\n};\nconst yarnBerry = {\n ...yarn,\n \"frozen\": [\"yarn\", \"install\", \"--immutable\", 0],\n \"upgrade\": [\"yarn\", \"up\", 0],\n \"upgrade-interactive\": [\"yarn\", \"up\", \"-i\", 0],\n \"dedupe\": [\"yarn\", \"dedupe\", 0],\n \"execute\": [\"yarn\", \"dlx\", 0],\n \"execute-local\": [\"yarn\", \"exec\", 0],\n // Yarn 2+ removed 'global', see https://github.com/yarnpkg/berry/issues/821\n \"global\": [\"npm\", \"i\", \"-g\", 0],\n \"global_uninstall\": [\"npm\", \"uninstall\", \"-g\", 0]\n};\nconst pnpm = {\n \"agent\": [\"pnpm\", 0],\n \"run\": [\"pnpm\", \"run\", 0],\n \"install\": [\"pnpm\", \"i\", 0],\n \"frozen\": [\"pnpm\", \"i\", \"--frozen-lockfile\", 0],\n \"global\": [\"pnpm\", \"add\", \"-g\", 0],\n \"add\": [\"pnpm\", \"add\", 0],\n \"upgrade\": [\"pnpm\", \"update\", 0],\n \"upgrade-interactive\": [\"pnpm\", \"update\", \"-i\", 0],\n \"dedupe\": [\"pnpm\", \"dedupe\", 0],\n \"execute\": [\"pnpm\", \"dlx\", 0],\n \"execute-local\": [\"pnpm\", \"exec\", 0],\n \"uninstall\": [\"pnpm\", \"remove\", 0],\n \"global_uninstall\": [\"pnpm\", \"remove\", \"--global\", 0]\n};\nconst bun = {\n \"agent\": [\"bun\", 0],\n \"run\": [\"bun\", \"run\", 0],\n \"install\": [\"bun\", \"install\", 0],\n \"frozen\": [\"bun\", \"install\", \"--frozen-lockfile\", 0],\n \"global\": [\"bun\", \"add\", \"-g\", 0],\n \"add\": [\"bun\", \"add\", 0],\n \"upgrade\": [\"bun\", \"update\", 0],\n \"upgrade-interactive\": [\"bun\", \"update\", \"-i\", 0],\n \"dedupe\": null,\n \"execute\": [\"bun\", \"x\", 0],\n \"execute-local\": [\"bun\", \"x\", 0],\n \"uninstall\": [\"bun\", \"remove\", 0],\n \"global_uninstall\": [\"bun\", \"remove\", \"-g\", 0]\n};\nconst deno = {\n \"agent\": [\"deno\", 0],\n \"run\": [\"deno\", \"task\", 0],\n \"install\": [\"deno\", \"install\", 0],\n \"frozen\": [\"deno\", \"install\", \"--frozen\", 0],\n \"global\": [\"deno\", \"install\", \"-g\", 0],\n \"add\": [\"deno\", \"add\", 0],\n \"upgrade\": [\"deno\", \"outdated\", \"--update\", 0],\n \"upgrade-interactive\": [\"deno\", \"outdated\", \"--update\", 0],\n \"dedupe\": null,\n \"execute\": denoExecute(),\n \"execute-local\": [\"deno\", \"task\", \"--eval\", 0],\n \"uninstall\": [\"deno\", \"remove\", 0],\n \"global_uninstall\": [\"deno\", \"uninstall\", \"-g\", 0]\n};\nconst COMMANDS = {\n \"npm\": npm,\n \"yarn\": yarn,\n \"yarn@berry\": yarnBerry,\n \"pnpm\": pnpm,\n // pnpm v6.x or below\n \"pnpm@6\": {\n ...pnpm,\n run: dashDashArg(\"pnpm\", \"run\")\n },\n \"bun\": bun,\n \"deno\": deno\n};\nfunction resolveCommand(agent, command, args) {\n const value = COMMANDS[agent][command];\n return constructCommand(value, args);\n}\nfunction constructCommand(value, args) {\n if (value == null)\n return null;\n const list = typeof value === \"function\" ? value(args) : value.flatMap((v) => {\n if (typeof v === \"number\")\n return args;\n return [v];\n });\n return {\n command: list[0],\n args: list.slice(1)\n };\n}\n\nexport { COMMANDS, constructCommand, resolveCommand };\n",
20
- "const AGENTS = [\n \"npm\",\n \"yarn\",\n \"yarn@berry\",\n \"pnpm\",\n \"pnpm@6\",\n \"bun\",\n \"deno\"\n];\nconst LOCKS = {\n \"bun.lock\": \"bun\",\n \"bun.lockb\": \"bun\",\n \"deno.lock\": \"deno\",\n \"pnpm-lock.yaml\": \"pnpm\",\n \"pnpm-workspace.yaml\": \"pnpm\",\n \"yarn.lock\": \"yarn\",\n \"package-lock.json\": \"npm\",\n \"npm-shrinkwrap.json\": \"npm\"\n};\nconst INSTALL_METADATA = {\n \"node_modules/.deno/\": \"deno\",\n \"node_modules/.pnpm/\": \"pnpm\",\n \"node_modules/.yarn-state.yml\": \"yarn\",\n // yarn v2+ (node-modules)\n \"node_modules/.yarn_integrity\": \"yarn\",\n // yarn v1\n \"node_modules/.package-lock.json\": \"npm\",\n \".pnp.cjs\": \"yarn\",\n // yarn v3+ (pnp)\n \".pnp.js\": \"yarn\",\n // yarn v2 (pnp)\n \"bun.lock\": \"bun\",\n \"bun.lockb\": \"bun\"\n};\nconst INSTALL_PAGE = {\n \"bun\": \"https://bun.sh\",\n \"deno\": \"https://deno.com\",\n \"pnpm\": \"https://pnpm.io/installation\",\n \"pnpm@6\": \"https://pnpm.io/6.x/installation\",\n \"yarn\": \"https://classic.yarnpkg.com/en/docs/install\",\n \"yarn@berry\": \"https://yarnpkg.com/getting-started/install\",\n \"npm\": \"https://docs.npmjs.com/cli/configuring-npm/install\"\n};\n\nexport { AGENTS, INSTALL_METADATA, INSTALL_PAGE, LOCKS };\n",
21
- "import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport process from 'node:process';\nimport { INSTALL_METADATA, LOCKS, AGENTS } from './constants.mjs';\n\nasync function pathExists(path2, type) {\n try {\n const stat = await fs.stat(path2);\n return type === \"file\" ? stat.isFile() : stat.isDirectory();\n } catch {\n return false;\n }\n}\nfunction getUserAgent() {\n const userAgent = process.env.npm_config_user_agent;\n if (!userAgent) {\n return null;\n }\n const name = userAgent.split(\"/\")[0];\n return AGENTS.includes(name) ? name : null;\n}\nfunction* lookup(cwd = process.cwd()) {\n let directory = path.resolve(cwd);\n const { root } = path.parse(directory);\n while (directory && directory !== root) {\n yield directory;\n directory = path.dirname(directory);\n }\n}\nasync function parsePackageJson(filepath, options) {\n if (!filepath || !await pathExists(filepath, \"file\"))\n return null;\n return await handlePackageManager(filepath, options);\n}\nasync function detect(options = {}) {\n const {\n cwd,\n strategies = [\"lockfile\", \"packageManager-field\", \"devEngines-field\"]\n } = options;\n let stopDir;\n if (typeof options.stopDir === \"string\") {\n const resolved = path.resolve(options.stopDir);\n stopDir = (dir) => dir === resolved;\n } else {\n stopDir = options.stopDir;\n }\n for (const directory of lookup(cwd)) {\n for (const strategy of strategies) {\n switch (strategy) {\n case \"lockfile\": {\n for (const lock of Object.keys(LOCKS)) {\n if (await pathExists(path.join(directory, lock), \"file\")) {\n const name = LOCKS[lock];\n const result = await parsePackageJson(path.join(directory, \"package.json\"), options);\n if (result)\n return result;\n else\n return { name, agent: name };\n }\n }\n break;\n }\n case \"packageManager-field\":\n case \"devEngines-field\": {\n const result = await parsePackageJson(path.join(directory, \"package.json\"), options);\n if (result)\n return result;\n break;\n }\n case \"install-metadata\": {\n for (const metadata of Object.keys(INSTALL_METADATA)) {\n const fileOrDir = metadata.endsWith(\"/\") ? \"dir\" : \"file\";\n if (await pathExists(path.join(directory, metadata), fileOrDir)) {\n const name = INSTALL_METADATA[metadata];\n const agent = name === \"yarn\" ? isMetadataYarnClassic(metadata) ? \"yarn\" : \"yarn@berry\" : name;\n return { name, agent };\n }\n }\n break;\n }\n }\n }\n if (stopDir?.(directory))\n break;\n }\n return null;\n}\nfunction getNameAndVer(pkg) {\n const handelVer = (version) => version?.match(/\\d+(\\.\\d+){0,2}/)?.[0] ?? version;\n if (typeof pkg.packageManager === \"string\") {\n const [name, ver] = pkg.packageManager.replace(/^\\^/, \"\").split(\"@\");\n return { name, ver: handelVer(ver) };\n }\n if (typeof pkg.devEngines?.packageManager?.name === \"string\") {\n return {\n name: pkg.devEngines.packageManager.name,\n ver: handelVer(pkg.devEngines.packageManager.version)\n };\n }\n return void 0;\n}\nasync function handlePackageManager(filepath, options) {\n try {\n const content = await fs.readFile(filepath, \"utf8\");\n const pkg = options.packageJsonParser ? await options.packageJsonParser(content, filepath) : JSON.parse(content);\n let agent;\n const nameAndVer = getNameAndVer(pkg);\n if (nameAndVer) {\n const name = nameAndVer.name;\n const ver = nameAndVer.ver;\n let version = ver;\n if (name === \"yarn\" && ver && Number.parseInt(ver) > 1) {\n agent = \"yarn@berry\";\n version = \"berry\";\n return { name, agent, version };\n } else if (name === \"pnpm\" && ver && Number.parseInt(ver) < 7) {\n agent = \"pnpm@6\";\n return { name, agent, version };\n } else if (AGENTS.includes(name)) {\n agent = name;\n return { name, agent, version };\n } else {\n return options.onUnknown?.(pkg.packageManager) ?? null;\n }\n }\n } catch {\n }\n return null;\n}\nfunction isMetadataYarnClassic(metadataPath) {\n return metadataPath.endsWith(\".yarn_integrity\");\n}\n\nexport { detect, getUserAgent };\n",
22
- "import { createRequire as e } from \"module\";\nimport { spawn as t } from \"node:child_process\";\nimport { delimiter as n, dirname as r, normalize as i, resolve as a } from \"node:path\";\nimport { cwd as o } from \"node:process\";\nimport { PassThrough as s } from \"node:stream\";\nimport c from \"node:readline\";\nvar l = Object.create;\nvar u = Object.defineProperty;\nvar d = Object.getOwnPropertyDescriptor;\nvar f = Object.getOwnPropertyNames;\nvar p = Object.getPrototypeOf;\nvar m = Object.prototype.hasOwnProperty;\nvar h = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports);\nvar g = (e, t, n, r) => {\n\tif (t && typeof t === \"object\" || typeof t === \"function\") for (var i = f(t), a = 0, o = i.length, s; a < o; a++) {\n\t\ts = i[a];\n\t\tif (!m.call(e, s) && s !== n) u(e, s, {\n\t\t\tget: ((e) => t[e]).bind(null, s),\n\t\t\tenumerable: !(r = d(t, s)) || r.enumerable\n\t\t});\n\t}\n\treturn e;\n};\nvar _ = (e, t, n) => (n = e != null ? l(p(e)) : {}, g(t || !e || !e.__esModule ? u(n, \"default\", {\n\tvalue: e,\n\tenumerable: true\n}) : n, e));\nvar v = /* @__PURE__ */ e(import.meta.url);\nconst y = /^path$/i;\nconst b = {\n\tkey: \"PATH\",\n\tvalue: \"\"\n};\nfunction x(e) {\n\tfor (const t in e) {\n\t\tif (!Object.prototype.hasOwnProperty.call(e, t) || !y.test(t)) continue;\n\t\tconst n = e[t];\n\t\tif (!n) return b;\n\t\treturn {\n\t\t\tkey: t,\n\t\t\tvalue: n\n\t\t};\n\t}\n\treturn b;\n}\nfunction S(e, t) {\n\tconst i = t.value.split(n);\n\tlet o = e;\n\tlet s;\n\tdo {\n\t\ti.push(a(o, \"node_modules\", \".bin\"));\n\t\ts = o;\n\t\to = r(o);\n\t} while (o !== s);\n\treturn {\n\t\tkey: t.key,\n\t\tvalue: i.join(n)\n\t};\n}\nfunction C(e, t) {\n\tconst n = {\n\t\t...process.env,\n\t\t...t\n\t};\n\tconst r = S(e, x(n));\n\tn[r.key] = r.value;\n\treturn n;\n}\nconst w = (e) => {\n\tlet t = e.length;\n\tconst n = new s();\n\tconst r = () => {\n\t\tif (--t === 0) n.emit(\"end\");\n\t};\n\tfor (const t of e) {\n\t\tt.pipe(n, { end: false });\n\t\tt.on(\"end\", r);\n\t}\n\treturn n;\n};\nvar T = h((exports, t) => {\n\tt.exports = a;\n\ta.sync = o;\n\tvar n = v(\"fs\");\n\tfunction r(e, t) {\n\t\tvar n = t.pathExt !== void 0 ? t.pathExt : process.env.PATHEXT;\n\t\tif (!n) return true;\n\t\tn = n.split(\";\");\n\t\tif (n.indexOf(\"\") !== -1) return true;\n\t\tfor (var r = 0; r < n.length; r++) {\n\t\t\tvar i = n[r].toLowerCase();\n\t\t\tif (i && e.substr(-i.length).toLowerCase() === i) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tfunction i(e, t, n) {\n\t\tif (!e.isSymbolicLink() && !e.isFile()) return false;\n\t\treturn r(t, n);\n\t}\n\tfunction a(e, t, r) {\n\t\tn.stat(e, function(n, a) {\n\t\t\tr(n, n ? false : i(a, e, t));\n\t\t});\n\t}\n\tfunction o(e, t) {\n\t\treturn i(n.statSync(e), e, t);\n\t}\n});\nvar E = h((exports, t) => {\n\tt.exports = r;\n\tr.sync = i;\n\tvar n = v(\"fs\");\n\tfunction r(e, t, r) {\n\t\tn.stat(e, function(e, n) {\n\t\t\tr(e, e ? false : a(n, t));\n\t\t});\n\t}\n\tfunction i(e, t) {\n\t\treturn a(n.statSync(e), t);\n\t}\n\tfunction a(e, t) {\n\t\treturn e.isFile() && o(e, t);\n\t}\n\tfunction o(e, t) {\n\t\tvar n = e.mode;\n\t\tvar r = e.uid;\n\t\tvar i = e.gid;\n\t\tvar a = t.uid !== void 0 ? t.uid : process.getuid && process.getuid();\n\t\tvar o = t.gid !== void 0 ? t.gid : process.getgid && process.getgid();\n\t\tvar s = parseInt(\"100\", 8);\n\t\tvar c = parseInt(\"010\", 8);\n\t\tvar l = parseInt(\"001\", 8);\n\t\tvar u = s | c;\n\t\tvar d = n & l || n & c && i === o || n & s && r === a || n & u && a === 0;\n\t\treturn d;\n\t}\n});\nvar D = h((exports, t) => {\n\tvar n = v(\"fs\");\n\tvar r;\n\tif (process.platform === \"win32\" || global.TESTING_WINDOWS) r = T();\n\telse r = E();\n\tt.exports = i;\n\ti.sync = a;\n\tfunction i(e, t, n) {\n\t\tif (typeof t === \"function\") {\n\t\t\tn = t;\n\t\t\tt = {};\n\t\t}\n\t\tif (!n) {\n\t\t\tif (typeof Promise !== \"function\") throw new TypeError(\"callback not provided\");\n\t\t\treturn new Promise(function(n, r) {\n\t\t\t\ti(e, t || {}, function(e, t) {\n\t\t\t\t\tif (e) r(e);\n\t\t\t\t\telse n(t);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tr(e, t || {}, function(e, r) {\n\t\t\tif (e) {\n\t\t\t\tif (e.code === \"EACCES\" || t && t.ignoreErrors) {\n\t\t\t\t\te = null;\n\t\t\t\t\tr = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tn(e, r);\n\t\t});\n\t}\n\tfunction a(e, t) {\n\t\ttry {\n\t\t\treturn r.sync(e, t || {});\n\t\t} catch (e) {\n\t\t\tif (t && t.ignoreErrors || e.code === \"EACCES\") return false;\n\t\t\telse throw e;\n\t\t}\n\t}\n});\nvar O = h((exports, t) => {\n\tconst n = process.platform === \"win32\" || process.env.OSTYPE === \"cygwin\" || process.env.OSTYPE === \"msys\";\n\tconst r = v(\"path\");\n\tconst i = n ? \";\" : \":\";\n\tconst a = D();\n\tconst o = (e) => Object.assign(new Error(`not found: ${e}`), { code: \"ENOENT\" });\n\tconst s = (e, t) => {\n\t\tconst r = t.colon || i;\n\t\tconst a = e.match(/\\//) || n && e.match(/\\\\/) ? [\"\"] : [...n ? [process.cwd()] : [], ...(t.path || process.env.PATH || \"\").split(r)];\n\t\tconst o = n ? t.pathExt || process.env.PATHEXT || \".EXE;.CMD;.BAT;.COM\" : \"\";\n\t\tconst s = n ? o.split(r) : [\"\"];\n\t\tif (n) {\n\t\t\tif (e.indexOf(\".\") !== -1 && s[0] !== \"\") s.unshift(\"\");\n\t\t}\n\t\treturn {\n\t\t\tpathEnv: a,\n\t\t\tpathExt: s,\n\t\t\tpathExtExe: o\n\t\t};\n\t};\n\tconst c = (e, t, n) => {\n\t\tif (typeof t === \"function\") {\n\t\t\tn = t;\n\t\t\tt = {};\n\t\t}\n\t\tif (!t) t = {};\n\t\tconst { pathEnv: i, pathExt: c, pathExtExe: l } = s(e, t);\n\t\tconst u = [];\n\t\tconst d = (n) => new Promise((a, s) => {\n\t\t\tif (n === i.length) return t.all && u.length ? a(u) : s(o(e));\n\t\t\tconst c = i[n];\n\t\t\tconst l = /^\".*\"$/.test(c) ? c.slice(1, -1) : c;\n\t\t\tconst d = r.join(l, e);\n\t\t\tconst p = !l && /^\\.[\\\\\\/]/.test(e) ? e.slice(0, 2) + d : d;\n\t\t\ta(f(p, n, 0));\n\t\t});\n\t\tconst f = (e, n, r) => new Promise((i, o) => {\n\t\t\tif (r === c.length) return i(d(n + 1));\n\t\t\tconst s = c[r];\n\t\t\ta(e + s, { pathExt: l }, (a, o) => {\n\t\t\t\tif (!a && o) if (t.all) u.push(e + s);\n\t\t\t\telse return i(e + s);\n\t\t\t\treturn i(f(e, n, r + 1));\n\t\t\t});\n\t\t});\n\t\treturn n ? d(0).then((e) => n(null, e), n) : d(0);\n\t};\n\tconst l = (e, t) => {\n\t\tt = t || {};\n\t\tconst { pathEnv: n, pathExt: i, pathExtExe: c } = s(e, t);\n\t\tconst l = [];\n\t\tfor (let o = 0; o < n.length; o++) {\n\t\t\tconst s = n[o];\n\t\t\tconst u = /^\".*\"$/.test(s) ? s.slice(1, -1) : s;\n\t\t\tconst d = r.join(u, e);\n\t\t\tconst f = !u && /^\\.[\\\\\\/]/.test(e) ? e.slice(0, 2) + d : d;\n\t\t\tfor (let e = 0; e < i.length; e++) {\n\t\t\t\tconst n = f + i[e];\n\t\t\t\ttry {\n\t\t\t\t\tconst e = a.sync(n, { pathExt: c });\n\t\t\t\t\tif (e) if (t.all) l.push(n);\n\t\t\t\t\telse return n;\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\t\t}\n\t\tif (t.all && l.length) return l;\n\t\tif (t.nothrow) return null;\n\t\tthrow o(e);\n\t};\n\tt.exports = c;\n\tc.sync = l;\n});\nvar k = h((exports, t) => {\n\tconst n = (e = {}) => {\n\t\tconst t = e.env || process.env;\n\t\tconst n = e.platform || process.platform;\n\t\tif (n !== \"win32\") return \"PATH\";\n\t\treturn Object.keys(t).reverse().find((e) => e.toUpperCase() === \"PATH\") || \"Path\";\n\t};\n\tt.exports = n;\n\tt.exports.default = n;\n});\nvar A = h((exports, t) => {\n\tconst n = v(\"path\");\n\tconst r = O();\n\tconst i = k();\n\tfunction a(e, t) {\n\t\tconst a = e.options.env || process.env;\n\t\tconst o = process.cwd();\n\t\tconst s = e.options.cwd != null;\n\t\tconst c = s && process.chdir !== void 0 && !process.chdir.disabled;\n\t\tif (c) try {\n\t\t\tprocess.chdir(e.options.cwd);\n\t\t} catch (e) {}\n\t\tlet l;\n\t\ttry {\n\t\t\tl = r.sync(e.command, {\n\t\t\t\tpath: a[i({ env: a })],\n\t\t\t\tpathExt: t ? n.delimiter : void 0\n\t\t\t});\n\t\t} catch (e) {} finally {\n\t\t\tif (c) process.chdir(o);\n\t\t}\n\t\tif (l) l = n.resolve(s ? e.options.cwd : \"\", l);\n\t\treturn l;\n\t}\n\tfunction o(e) {\n\t\treturn a(e) || a(e, true);\n\t}\n\tt.exports = o;\n});\nvar j = h((exports, t) => {\n\tconst n = /([()\\][%!^\"`<>&|;, *?])/g;\n\tfunction r(e) {\n\t\te = e.replace(n, \"^$1\");\n\t\treturn e;\n\t}\n\tfunction i(e, t) {\n\t\te = `${e}`;\n\t\te = e.replace(/(\\\\*)\"/g, \"$1$1\\\\\\\"\");\n\t\te = e.replace(/(\\\\*)$/, \"$1$1\");\n\t\te = `\"${e}\"`;\n\t\te = e.replace(n, \"^$1\");\n\t\tif (t) e = e.replace(n, \"^$1\");\n\t\treturn e;\n\t}\n\tt.exports.command = r;\n\tt.exports.argument = i;\n});\nvar M = h((exports, t) => {\n\tt.exports = /^#!(.*)/;\n});\nvar N = h((exports, t) => {\n\tconst n = M();\n\tt.exports = (e = \"\") => {\n\t\tconst t = e.match(n);\n\t\tif (!t) return null;\n\t\tconst [r, i] = t[0].replace(/#! ?/, \"\").split(\" \");\n\t\tconst a = r.split(\"/\").pop();\n\t\tif (a === \"env\") return i;\n\t\treturn i ? `${a} ${i}` : a;\n\t};\n});\nvar P = h((exports, t) => {\n\tconst n = v(\"fs\");\n\tconst r = N();\n\tfunction i(e) {\n\t\tconst t = 150;\n\t\tconst i = Buffer.alloc(t);\n\t\tlet a;\n\t\ttry {\n\t\t\ta = n.openSync(e, \"r\");\n\t\t\tn.readSync(a, i, 0, t, 0);\n\t\t\tn.closeSync(a);\n\t\t} catch (e) {}\n\t\treturn r(i.toString());\n\t}\n\tt.exports = i;\n});\nvar F = h((exports, t) => {\n\tconst n = v(\"path\");\n\tconst r = A();\n\tconst i = j();\n\tconst a = P();\n\tconst o = process.platform === \"win32\";\n\tconst s = /\\.(?:com|exe)$/i;\n\tconst c = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\tfunction l(e) {\n\t\te.file = r(e);\n\t\tconst t = e.file && a(e.file);\n\t\tif (t) {\n\t\t\te.args.unshift(e.file);\n\t\t\te.command = t;\n\t\t\treturn r(e);\n\t\t}\n\t\treturn e.file;\n\t}\n\tfunction u(e) {\n\t\tif (!o) return e;\n\t\tconst t = l(e);\n\t\tconst r = !s.test(t);\n\t\tif (e.options.forceShell || r) {\n\t\t\tconst r = c.test(t);\n\t\t\te.command = n.normalize(e.command);\n\t\t\te.command = i.command(e.command);\n\t\t\te.args = e.args.map((e) => i.argument(e, r));\n\t\t\tconst a = [e.command].concat(e.args).join(\" \");\n\t\t\te.args = [\n\t\t\t\t\"/d\",\n\t\t\t\t\"/s\",\n\t\t\t\t\"/c\",\n\t\t\t\t`\"${a}\"`\n\t\t\t];\n\t\t\te.command = process.env.comspec || \"cmd.exe\";\n\t\t\te.options.windowsVerbatimArguments = true;\n\t\t}\n\t\treturn e;\n\t}\n\tfunction d(e, t, n) {\n\t\tif (t && !Array.isArray(t)) {\n\t\t\tn = t;\n\t\t\tt = null;\n\t\t}\n\t\tt = t ? t.slice(0) : [];\n\t\tn = Object.assign({}, n);\n\t\tconst r = {\n\t\t\tcommand: e,\n\t\t\targs: t,\n\t\t\toptions: n,\n\t\t\tfile: void 0,\n\t\t\toriginal: {\n\t\t\t\tcommand: e,\n\t\t\t\targs: t\n\t\t\t}\n\t\t};\n\t\treturn n.shell ? r : u(r);\n\t}\n\tt.exports = d;\n});\nvar I = h((exports, t) => {\n\tconst n = process.platform === \"win32\";\n\tfunction r(e, t) {\n\t\treturn Object.assign(new Error(`${t} ${e.command} ENOENT`), {\n\t\t\tcode: \"ENOENT\",\n\t\t\terrno: \"ENOENT\",\n\t\t\tsyscall: `${t} ${e.command}`,\n\t\t\tpath: e.command,\n\t\t\tspawnargs: e.args\n\t\t});\n\t}\n\tfunction i(e, t) {\n\t\tif (!n) return;\n\t\tconst r = e.emit;\n\t\te.emit = function(n, i) {\n\t\t\tif (n === \"exit\") {\n\t\t\t\tconst n = a(i, t, \"spawn\");\n\t\t\t\tif (n) return r.call(e, \"error\", n);\n\t\t\t}\n\t\t\treturn r.apply(e, arguments);\n\t\t};\n\t}\n\tfunction a(e, t) {\n\t\tif (n && e === 1 && !t.file) return r(t.original, \"spawn\");\n\t\treturn null;\n\t}\n\tfunction o(e, t) {\n\t\tif (n && e === 1 && !t.file) return r(t.original, \"spawnSync\");\n\t\treturn null;\n\t}\n\tt.exports = {\n\t\thookChildProcess: i,\n\t\tverifyENOENT: a,\n\t\tverifyENOENTSync: o,\n\t\tnotFoundError: r\n\t};\n});\nvar L = h((exports, t) => {\n\tconst n = v(\"child_process\");\n\tconst r = F();\n\tconst i = I();\n\tfunction a(e, t, a) {\n\t\tconst o = r(e, t, a);\n\t\tconst s = n.spawn(o.command, o.args, o.options);\n\t\ti.hookChildProcess(s, o);\n\t\treturn s;\n\t}\n\tfunction o(e, t, a) {\n\t\tconst o = r(e, t, a);\n\t\tconst s = n.spawnSync(o.command, o.args, o.options);\n\t\ts.error = s.error || i.verifyENOENTSync(s.status, o);\n\t\treturn s;\n\t}\n\tt.exports = a;\n\tt.exports.spawn = a;\n\tt.exports.sync = o;\n\tt.exports._parse = r;\n\tt.exports._enoent = i;\n});\nvar R = _(L(), 1);\nvar z = class extends Error {\n\tresult;\n\toutput;\n\tget exitCode() {\n\t\tif (this.result.exitCode !== null) return this.result.exitCode;\n\t\treturn void 0;\n\t}\n\tconstructor(e, t) {\n\t\tsuper(`Process exited with non-zero status (${e.exitCode})`);\n\t\tthis.result = e;\n\t\tthis.output = t;\n\t}\n};\nconst B = {\n\ttimeout: void 0,\n\tpersist: false\n};\nconst V = { windowsHide: true };\nfunction H(e, t) {\n\tconst n = i(e);\n\tconst r = t ?? [];\n\treturn {\n\t\tcommand: n,\n\t\targs: r\n\t};\n}\nfunction U(e) {\n\tconst t = new AbortController();\n\tfor (const n of e) {\n\t\tif (n.aborted) {\n\t\t\tt.abort();\n\t\t\treturn n;\n\t\t}\n\t\tconst e = () => {\n\t\t\tt.abort(n.reason);\n\t\t};\n\t\tn.addEventListener(\"abort\", e, { signal: t.signal });\n\t}\n\treturn t.signal;\n}\nasync function W(e) {\n\tlet t = \"\";\n\tfor await (const n of e) t += n.toString();\n\treturn t;\n}\nvar G = class {\n\t_process;\n\t_aborted = false;\n\t_options;\n\t_command;\n\t_args;\n\t_resolveClose;\n\t_processClosed;\n\t_thrownError;\n\tget process() {\n\t\treturn this._process;\n\t}\n\tget pid() {\n\t\treturn this._process?.pid;\n\t}\n\tget exitCode() {\n\t\tif (this._process && this._process.exitCode !== null) return this._process.exitCode;\n\t\treturn void 0;\n\t}\n\tconstructor(e, t, n) {\n\t\tthis._options = {\n\t\t\t...B,\n\t\t\t...n\n\t\t};\n\t\tthis._command = e;\n\t\tthis._args = t ?? [];\n\t\tthis._processClosed = new Promise((e) => {\n\t\t\tthis._resolveClose = e;\n\t\t});\n\t}\n\tkill(e) {\n\t\treturn this._process?.kill(e) === true;\n\t}\n\tget aborted() {\n\t\treturn this._aborted;\n\t}\n\tget killed() {\n\t\treturn this._process?.killed === true;\n\t}\n\tpipe(e, t, n) {\n\t\treturn q(e, t, {\n\t\t\t...n,\n\t\t\tstdin: this\n\t\t});\n\t}\n\tasync *[Symbol.asyncIterator]() {\n\t\tconst e = this._process;\n\t\tif (!e) return;\n\t\tconst t = [];\n\t\tif (this._streamErr) t.push(this._streamErr);\n\t\tif (this._streamOut) t.push(this._streamOut);\n\t\tconst n = w(t);\n\t\tconst r = c.createInterface({ input: n });\n\t\tfor await (const e of r) yield e.toString();\n\t\tawait this._processClosed;\n\t\te.removeAllListeners();\n\t\tif (this._thrownError) throw this._thrownError;\n\t\tif (this._options?.throwOnError && this.exitCode !== 0 && this.exitCode !== void 0) throw new z(this);\n\t}\n\tasync _waitForOutput() {\n\t\tconst e = this._process;\n\t\tif (!e) throw new Error(\"No process was started\");\n\t\tconst [t, n] = await Promise.all([this._streamOut ? W(this._streamOut) : \"\", this._streamErr ? W(this._streamErr) : \"\"]);\n\t\tawait this._processClosed;\n\t\tif (this._options?.stdin) await this._options.stdin;\n\t\te.removeAllListeners();\n\t\tif (this._thrownError) throw this._thrownError;\n\t\tconst r = {\n\t\t\tstderr: n,\n\t\t\tstdout: t,\n\t\t\texitCode: this.exitCode\n\t\t};\n\t\tif (this._options.throwOnError && this.exitCode !== 0 && this.exitCode !== void 0) throw new z(this, r);\n\t\treturn r;\n\t}\n\tthen(e, t) {\n\t\treturn this._waitForOutput().then(e, t);\n\t}\n\t_streamOut;\n\t_streamErr;\n\tspawn() {\n\t\tconst e = o();\n\t\tconst n = this._options;\n\t\tconst r = {\n\t\t\t...V,\n\t\t\t...n.nodeOptions\n\t\t};\n\t\tconst i = [];\n\t\tthis._resetState();\n\t\tif (n.timeout !== void 0) i.push(AbortSignal.timeout(n.timeout));\n\t\tif (n.signal !== void 0) i.push(n.signal);\n\t\tif (n.persist === true) r.detached = true;\n\t\tif (i.length > 0) r.signal = U(i);\n\t\tr.env = C(e, r.env);\n\t\tconst { command: a, args: s } = H(this._command, this._args);\n\t\tconst c = (0, R._parse)(a, s, r);\n\t\tconst l = t(c.command, c.args, c.options);\n\t\tif (l.stderr) this._streamErr = l.stderr;\n\t\tif (l.stdout) this._streamOut = l.stdout;\n\t\tthis._process = l;\n\t\tl.once(\"error\", this._onError);\n\t\tl.once(\"close\", this._onClose);\n\t\tif (n.stdin !== void 0 && l.stdin && n.stdin.process) {\n\t\t\tconst { stdout: e } = n.stdin.process;\n\t\t\tif (e) e.pipe(l.stdin);\n\t\t}\n\t}\n\t_resetState() {\n\t\tthis._aborted = false;\n\t\tthis._processClosed = new Promise((e) => {\n\t\t\tthis._resolveClose = e;\n\t\t});\n\t\tthis._thrownError = void 0;\n\t}\n\t_onError = (e) => {\n\t\tif (e.name === \"AbortError\" && (!(e.cause instanceof Error) || e.cause.name !== \"TimeoutError\")) {\n\t\t\tthis._aborted = true;\n\t\t\treturn;\n\t\t}\n\t\tthis._thrownError = e;\n\t};\n\t_onClose = () => {\n\t\tif (this._resolveClose) this._resolveClose();\n\t};\n};\nconst K = (e, t, n) => {\n\tconst r = new G(e, t, n);\n\tr.spawn();\n\treturn r;\n};\nconst q = K;\nexport { G as ExecProcess, z as NonZeroExitError, q as exec, K as x };\n",
15
+ "/**\n * OCX CLI - add command\n * Install components from registries\n */\n\nimport { createHash } from \"node:crypto\"\nimport { existsSync } from \"node:fs\"\nimport { mkdir, writeFile } from \"node:fs/promises\"\nimport { dirname, join } from \"node:path\"\n\nimport type { Command } from \"commander\"\nimport { fetchFileContent, fetchRegistryIndex } from \"../registry/fetcher.js\"\nimport type { ResolvedComponent } from \"../registry/resolver.js\"\nimport { type ResolvedDependencies, resolveDependencies } from \"../registry/resolver.js\"\nimport { type OcxLock, readOcxConfig, readOcxLock } from \"../schemas/config.js\"\nimport type { ComponentFileObject } from \"../schemas/registry.js\"\nimport { updateOpencodeConfig } from \"../updaters/update-opencode-config.js\"\nimport { ConfigError, ConflictError, IntegrityError, ValidationError } from \"../utils/errors.js\"\nimport { createSpinner, handleError, logger } from \"../utils/index.js\"\n\ninterface AddOptions {\n\tyes?: boolean\n\tdryRun?: boolean\n\tcwd?: string\n\tquiet?: boolean\n\tverbose?: boolean\n\tjson?: boolean\n}\n\nexport function registerAddCommand(program: Command): void {\n\tprogram\n\t\t.command(\"add\")\n\t\t.description(\"Add components to your project\")\n\t\t.argument(\"<components...>\", \"Components to install\")\n\t\t.option(\"-y, --yes\", \"Skip prompts\")\n\t\t.option(\"--dry-run\", \"Show what would be installed without making changes\")\n\t\t.option(\"--cwd <path>\", \"Working directory\", process.cwd())\n\t\t.option(\"-q, --quiet\", \"Suppress output\")\n\t\t.option(\"-v, --verbose\", \"Verbose output\")\n\t\t.option(\"--json\", \"Output as JSON\")\n\t\t.action(async (components: string[], options: AddOptions) => {\n\t\t\ttry {\n\t\t\t\tawait runAdd(components, options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n\nasync function runAdd(componentNames: string[], options: AddOptions): Promise<void> {\n\tconst cwd = options.cwd ?? process.cwd()\n\tconst lockPath = join(cwd, \"ocx.lock\")\n\n\t// Load config\n\tconst config = await readOcxConfig(cwd)\n\tif (!config) {\n\t\tthrow new ConfigError(\"No ocx.jsonc found. Run 'ocx init' first.\")\n\t}\n\n\t// Load or create lock\n\tlet lock: OcxLock = { lockVersion: 1, installed: {} }\n\tconst existingLock = await readOcxLock(cwd)\n\tif (existingLock) {\n\t\tlock = existingLock\n\t}\n\n\tconst spin = options.quiet ? null : createSpinner({ text: \"Resolving dependencies...\" })\n\tspin?.start()\n\n\ttry {\n\t\t// Resolve all dependencies across all configured registries\n\t\tconst resolved = await resolveDependencies(config.registries, componentNames)\n\n\t\tspin?.succeed(`Resolved ${resolved.components.length} components`)\n\n\t\tif (options.verbose) {\n\t\t\tlogger.info(\"Install order:\")\n\t\t\tfor (const name of resolved.installOrder) {\n\t\t\t\tlogger.info(` - ${name}`)\n\t\t\t}\n\t\t}\n\n\t\tif (options.dryRun) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Dry run - no changes made\")\n\t\t\tlogResolved(resolved)\n\t\t\treturn\n\t\t}\n\n\t\t// Install components\n\t\tconst installSpin = options.quiet ? null : createSpinner({ text: \"Installing components...\" })\n\t\tinstallSpin?.start()\n\n\t\tfor (const component of resolved.components) {\n\t\t\t// Fetch component files and compute bundle hash\n\t\t\tconst files: { path: string; content: Buffer }[] = []\n\t\t\tfor (const file of component.files) {\n\t\t\t\tconst content = await fetchFileContent(component.baseUrl, component.name, file.path)\n\t\t\t\tfiles.push({ path: file.path, content: Buffer.from(content) })\n\t\t\t}\n\n\t\t\tconst computedHash = await hashBundle(files)\n\n\t\t\t// Verify integrity if already in lock (use qualifiedName as key)\n\t\t\tconst existingEntry = lock.installed[component.qualifiedName]\n\t\t\tif (existingEntry && existingEntry.hash !== computedHash) {\n\t\t\t\tthrow new IntegrityError(component.qualifiedName, existingEntry.hash, computedHash)\n\t\t\t}\n\n\t\t\t// Check for file conflicts with components from other namespaces\n\t\t\tfor (const file of component.files) {\n\t\t\t\tconst targetPath = join(cwd, file.target)\n\t\t\t\tif (existsSync(targetPath)) {\n\t\t\t\t\t// File exists - check if it's from the same component (re-install) or different (conflict)\n\t\t\t\t\tconst conflictingComponent = findComponentByFile(lock, file.target)\n\t\t\t\t\tif (conflictingComponent && conflictingComponent !== component.qualifiedName) {\n\t\t\t\t\t\tthrow new ConflictError(\n\t\t\t\t\t\t\t`File conflict: ${file.target} already exists (installed by '${conflictingComponent}').\\n\\n` +\n\t\t\t\t\t\t\t\t`To resolve:\\n` +\n\t\t\t\t\t\t\t\t` 1. Remove existing: rm ${file.target}\\n` +\n\t\t\t\t\t\t\t\t` 2. Or rename it manually and update references\\n` +\n\t\t\t\t\t\t\t\t` 3. Then run: ocx add ${component.qualifiedName}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Install component\n\t\t\tawait installComponent(component, files, cwd)\n\n\t\t\t// Fetch registry index to get version for lockfile\n\t\t\tconst index = await fetchRegistryIndex(component.baseUrl)\n\n\t\t\t// Update lock with qualifiedName as key (namespace/component format)\n\t\t\tlock.installed[component.qualifiedName] = {\n\t\t\t\tregistry: component.registryName,\n\t\t\t\tversion: index.version,\n\t\t\t\thash: computedHash,\n\t\t\t\tfiles: component.files.map((f) => f.target),\n\t\t\t\tinstalledAt: new Date().toISOString(),\n\t\t\t}\n\t\t}\n\n\t\tinstallSpin?.succeed(`Installed ${resolved.components.length} components`)\n\n\t\t// Apply opencode.json changes (MCP servers, plugins, agent configs, instructions, disabled tools)\n\t\tconst hasMcpChanges =\n\t\t\tObject.keys(resolved.mcpServers).length > 0 || resolved.agentMcpBindings.length > 0\n\t\tconst hasDisabledTools = resolved.disabledTools.length > 0\n\t\tconst hasPlugins = resolved.plugins.length > 0\n\t\tconst hasAgentConfigs = Object.keys(resolved.agentConfigs).length > 0\n\t\tconst hasInstructions = resolved.instructions.length > 0\n\n\t\tif (hasMcpChanges || hasDisabledTools || hasPlugins || hasAgentConfigs || hasInstructions) {\n\t\t\tconst result = await updateOpencodeConfig(cwd, {\n\t\t\t\tmcpServers: resolved.mcpServers,\n\t\t\t\tagentMcpBindings: resolved.agentMcpBindings,\n\t\t\t\tdisabledTools: resolved.disabledTools,\n\t\t\t\tplugins: resolved.plugins,\n\t\t\t\tagentConfigs: resolved.agentConfigs,\n\t\t\t\tinstructions: resolved.instructions,\n\t\t\t})\n\n\t\t\tif (result.mcpSkipped.length > 0 && !options.quiet) {\n\t\t\t\tfor (const name of result.mcpSkipped) {\n\t\t\t\t\tlogger.warn(`MCP server \"${name}\" already configured, skipped`)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!options.quiet && result.mcpAdded.length > 0) {\n\t\t\t\tlogger.info(`Configured ${result.mcpAdded.length} MCP servers`)\n\n\t\t\t\t// Log agent-scoped bindings\n\t\t\t\tfor (const binding of resolved.agentMcpBindings) {\n\t\t\t\t\tlogger.info(` Scoped to agent \"${binding.agentName}\": ${binding.serverNames.join(\", \")}`)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!options.quiet && result.toolsDisabled.length > 0) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`Disabled ${result.toolsDisabled.length} tools: ${result.toolsDisabled.join(\", \")}`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (!options.quiet && result.pluginsAdded.length > 0) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`Added ${result.pluginsAdded.length} plugins: ${result.pluginsAdded.join(\", \")}`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (!options.quiet && result.agentsConfigured.length > 0) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`Configured ${result.agentsConfigured.length} agents: ${result.agentsConfigured.join(\", \")}`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (!options.quiet && result.instructionsAdded.length > 0) {\n\t\t\t\tlogger.info(`Added ${result.instructionsAdded.length} instructions`)\n\t\t\t}\n\t\t}\n\n\t\t// Update .opencode/package.json with npm dependencies\n\t\tconst hasNpmDeps = resolved.npmDependencies.length > 0\n\t\tconst hasNpmDevDeps = resolved.npmDevDependencies.length > 0\n\n\t\tif (hasNpmDeps || hasNpmDevDeps) {\n\t\t\tconst npmSpin = options.quiet\n\t\t\t\t? null\n\t\t\t\t: createSpinner({ text: \"Updating .opencode/package.json...\" })\n\t\t\tnpmSpin?.start()\n\n\t\t\ttry {\n\t\t\t\tawait updateOpencodeDevDependencies(\n\t\t\t\t\tcwd,\n\t\t\t\t\tresolved.npmDependencies,\n\t\t\t\t\tresolved.npmDevDependencies,\n\t\t\t\t)\n\t\t\t\tconst totalDeps = resolved.npmDependencies.length + resolved.npmDevDependencies.length\n\t\t\t\tnpmSpin?.succeed(`Added ${totalDeps} dependencies to .opencode/package.json`)\n\t\t\t} catch (error) {\n\t\t\t\tnpmSpin?.fail(\"Failed to update .opencode/package.json\")\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\n\t\t// Save lock file\n\t\tawait writeFile(lockPath, JSON.stringify(lock, null, 2), \"utf-8\")\n\n\t\tif (options.json) {\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tinstalled: resolved.installOrder,\n\t\t\t\t\t\tmcpServers: Object.keys(resolved.mcpServers),\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2,\n\t\t\t\t),\n\t\t\t)\n\t\t} else if (!options.quiet) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.success(`Done! Installed ${resolved.components.length} components.`)\n\t\t}\n\t} catch (error) {\n\t\tspin?.fail(\"Failed to resolve dependencies\")\n\t\tthrow error\n\t}\n}\n\nasync function installComponent(\n\tcomponent: ResolvedComponent,\n\tfiles: { path: string; content: Buffer }[],\n\tcwd: string,\n): Promise<void> {\n\tfor (const file of files) {\n\t\tconst componentFile = component.files.find((f: ComponentFileObject) => f.path === file.path)\n\t\tif (!componentFile) continue\n\n\t\tconst targetPath = join(cwd, componentFile.target)\n\t\tconst targetDir = dirname(targetPath)\n\n\t\t// Create directory if needed\n\t\tif (!existsSync(targetDir)) {\n\t\t\tawait mkdir(targetDir, { recursive: true })\n\t\t}\n\n\t\tawait writeFile(targetPath, file.content)\n\t}\n}\n\nasync function hashContent(content: string | Buffer): Promise<string> {\n\treturn createHash(\"sha256\").update(content).digest(\"hex\")\n}\n\nasync function hashBundle(files: { path: string; content: Buffer }[]): Promise<string> {\n\t// Sort files for deterministic hashing\n\tconst sorted = [...files].sort((a, b) => a.path.localeCompare(b.path))\n\n\t// Create a manifest of file hashes\n\tconst manifestParts: string[] = []\n\tfor (const file of sorted) {\n\t\tconst hash = await hashContent(file.content)\n\t\tmanifestParts.push(`${file.path}:${hash}`)\n\t}\n\n\t// Hash the manifest itself\n\treturn hashContent(manifestParts.join(\"\\n\"))\n}\n\nfunction logResolved(resolved: ResolvedDependencies): void {\n\tlogger.info(\"\")\n\tlogger.info(\"Would install:\")\n\tfor (const component of resolved.components) {\n\t\tlogger.info(` ${component.name} (${component.type}) from ${component.registryName}`)\n\t}\n\n\tif (Object.keys(resolved.mcpServers).length > 0) {\n\t\tlogger.info(\"\")\n\t\tlogger.info(\"Would configure MCP servers:\")\n\t\tfor (const name of Object.keys(resolved.mcpServers)) {\n\t\t\tlogger.info(` ${name}`)\n\t\t}\n\t}\n\n\tif (resolved.npmDependencies.length > 0) {\n\t\tlogger.info(\"\")\n\t\tlogger.info(\"Would install npm dependencies:\")\n\t\tfor (const dep of resolved.npmDependencies) {\n\t\t\tlogger.info(` ${dep}`)\n\t\t}\n\t}\n\n\tif (resolved.npmDevDependencies.length > 0) {\n\t\tlogger.info(\"\")\n\t\tlogger.info(\"Would install npm dev dependencies:\")\n\t\tfor (const dep of resolved.npmDevDependencies) {\n\t\t\tlogger.info(` ${dep}`)\n\t\t}\n\t}\n}\n\n// ============================================================================\n// NPM Dependency Management\n// ============================================================================\n\ninterface NpmDependency {\n\tname: string\n\tversion: string\n}\n\ninterface OpencodePackageJson {\n\tname?: string\n\tprivate?: boolean\n\ttype?: string\n\tdependencies?: Record<string, string>\n\tdevDependencies?: Record<string, string>\n}\n\nconst DEFAULT_PACKAGE_JSON: OpencodePackageJson = {\n\tname: \"opencode-plugins\",\n\tprivate: true,\n\ttype: \"module\",\n}\n\n/**\n * Parses an npm dependency spec into name and version.\n * Handles: \"lodash\", \"lodash@4.0.0\", \"@types/node\", \"@types/node@1.0.0\"\n */\nfunction parseNpmDependency(spec: string): NpmDependency {\n\t// Guard: invalid input\n\tif (!spec?.trim()) {\n\t\tthrow new ValidationError(`Invalid npm dependency: expected non-empty string, got \"${spec}\"`)\n\t}\n\n\tconst trimmed = spec.trim()\n\tconst lastAt = trimmed.lastIndexOf(\"@\")\n\n\t// Has version: \"lodash@4.0.0\" or \"@types/node@1.0.0\"\n\tif (lastAt > 0) {\n\t\tconst name = trimmed.slice(0, lastAt)\n\t\tconst version = trimmed.slice(lastAt + 1)\n\t\tif (!version) {\n\t\t\tthrow new ValidationError(`Invalid npm dependency: missing version after @ in \"${spec}\"`)\n\t\t}\n\t\treturn { name, version }\n\t}\n\n\t// No version: \"lodash\" or \"@types/node\" → use \"*\"\n\treturn { name: trimmed, version: \"*\" }\n}\n\n/**\n * Merges new dependencies into existing package.json structure.\n * Pure function: same inputs always produce same output.\n */\nfunction mergeDevDependencies(\n\texisting: OpencodePackageJson,\n\tnewDeps: NpmDependency[],\n): OpencodePackageJson {\n\tconst merged: Record<string, string> = { ...existing.devDependencies }\n\tfor (const dep of newDeps) {\n\t\tmerged[dep.name] = dep.version\n\t}\n\treturn { ...existing, devDependencies: merged }\n}\n\n/**\n * Reads .opencode/package.json or returns default structure if missing.\n */\nasync function readOpencodePackageJson(opencodeDir: string): Promise<OpencodePackageJson> {\n\tconst pkgPath = join(opencodeDir, \"package.json\")\n\n\t// Guard: file doesn't exist - return default\n\tif (!existsSync(pkgPath)) {\n\t\treturn { ...DEFAULT_PACKAGE_JSON }\n\t}\n\n\t// Try to parse, fail fast on invalid JSON\n\ttry {\n\t\tconst content = await Bun.file(pkgPath).text()\n\t\treturn JSON.parse(content) as OpencodePackageJson\n\t} catch (e) {\n\t\tconst message = e instanceof Error ? e.message : String(e)\n\t\tthrow new ConfigError(`Invalid .opencode/package.json: ${message}`)\n\t}\n}\n\n/**\n * Modifies .opencode/.gitignore to ensure package.json and bun.lock are tracked.\n * Creates the file with sensible defaults if missing.\n */\nasync function ensureManifestFilesAreTracked(opencodeDir: string): Promise<void> {\n\tconst gitignorePath = join(opencodeDir, \".gitignore\")\n\tconst filesToTrack = new Set([\"package.json\", \"bun.lock\"])\n\tconst requiredIgnores = [\"node_modules\"]\n\n\t// Read existing lines or start fresh\n\tlet lines: string[] = []\n\tif (existsSync(gitignorePath)) {\n\t\tconst content = await Bun.file(gitignorePath).text()\n\t\tlines = content\n\t\t\t.split(\"\\n\")\n\t\t\t.map((l) => l.trim())\n\t\t\t.filter(Boolean)\n\t}\n\n\t// Remove entries that should be tracked (not ignored)\n\tlines = lines.filter((line) => !filesToTrack.has(line))\n\n\t// Ensure required ignores are present\n\tfor (const ignore of requiredIgnores) {\n\t\tif (!lines.includes(ignore)) {\n\t\t\tlines.push(ignore)\n\t\t}\n\t}\n\n\tawait Bun.write(gitignorePath, `${lines.join(\"\\n\")}\\n`)\n}\n\n/**\n * Updates .opencode/package.json with new devDependencies and ensures\n * manifest files are tracked by git.\n */\nasync function updateOpencodeDevDependencies(\n\tcwd: string,\n\tnpmDeps: string[],\n\tnpmDevDeps: string[],\n): Promise<void> {\n\t// Guard: no deps to process\n\tconst allDepSpecs = [...npmDeps, ...npmDevDeps]\n\tif (allDepSpecs.length === 0) return\n\n\tconst opencodeDir = join(cwd, \".opencode\")\n\n\t// Ensure directory exists\n\tawait mkdir(opencodeDir, { recursive: true })\n\n\t// Parse all deps - fails fast on invalid\n\tconst parsedDeps = allDepSpecs.map(parseNpmDependency)\n\n\t// Read → merge → write\n\tconst existing = await readOpencodePackageJson(opencodeDir)\n\tconst updated = mergeDevDependencies(existing, parsedDeps)\n\tawait Bun.write(join(opencodeDir, \"package.json\"), `${JSON.stringify(updated, null, 2)}\\n`)\n\n\t// Ensure manifest files are tracked by git\n\tawait ensureManifestFilesAreTracked(opencodeDir)\n}\n\n/**\n * Find which component installed a given file path\n */\nfunction findComponentByFile(lock: OcxLock, filePath: string): string | null {\n\tfor (const [qualifiedName, entry] of Object.entries(lock.installed)) {\n\t\tif (entry.files.includes(filePath)) {\n\t\t\treturn qualifiedName\n\t\t}\n\t}\n\treturn null\n}\n",
23
16
  "export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n",
24
17
  "import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n",
25
18
  "import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n",
@@ -28,21 +21,21 @@
28
21
  "export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n",
29
22
  "import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[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// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n",
30
23
  "/**\n * Custom error classes with error codes\n * Following fail-fast philosophy - clear, actionable errors\n */\n\nexport type ErrorCode =\n\t| \"NOT_FOUND\"\n\t| \"NETWORK_ERROR\"\n\t| \"CONFIG_ERROR\"\n\t| \"VALIDATION_ERROR\"\n\t| \"CONFLICT\"\n\t| \"PERMISSION_ERROR\"\n\t| \"INTEGRITY_ERROR\"\n\nexport const EXIT_CODES = {\n\tSUCCESS: 0,\n\tGENERAL: 1,\n\tNOT_FOUND: 66,\n\tNETWORK: 69,\n\tCONFIG: 78,\n\tINTEGRITY: 1, // Exit code for integrity failures\n} as const\n\nexport class OCXError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly code: ErrorCode,\n\t\tpublic readonly exitCode: number = EXIT_CODES.GENERAL,\n\t) {\n\t\tsuper(message)\n\t\tthis.name = \"OCXError\"\n\t}\n}\n\nexport class NotFoundError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"NOT_FOUND\", EXIT_CODES.NOT_FOUND)\n\t\tthis.name = \"NotFoundError\"\n\t}\n}\n\nexport class NetworkError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"NETWORK_ERROR\", EXIT_CODES.NETWORK)\n\t\tthis.name = \"NetworkError\"\n\t}\n}\n\nexport class ConfigError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"CONFIG_ERROR\", EXIT_CODES.CONFIG)\n\t\tthis.name = \"ConfigError\"\n\t}\n}\n\nexport class ValidationError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"VALIDATION_ERROR\", EXIT_CODES.GENERAL)\n\t\tthis.name = \"ValidationError\"\n\t}\n}\n\nexport class ConflictError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"CONFLICT\", EXIT_CODES.GENERAL)\n\t\tthis.name = \"ConflictError\"\n\t}\n}\n\nexport class IntegrityError extends OCXError {\n\tconstructor(component: string, expected: string, found: string) {\n\t\tconst message =\n\t\t\t`Integrity verification failed for \"${component}\"\\n` +\n\t\t\t` Expected: ${expected}\\n` +\n\t\t\t` Found: ${found}\\n\\n` +\n\t\t\t`The registry content has changed since this component was locked.\\n` +\n\t\t\t`This could indicate tampering or an unauthorized update.`\n\t\tsuper(message, \"INTEGRITY_ERROR\", EXIT_CODES.INTEGRITY)\n\t\tthis.name = \"IntegrityError\"\n\t}\n}\n",
31
- "/**\n * Registry & Component Schemas\n *\n * Zod schemas with fail-fast validation following the 5 Laws of Elegant Defense.\n * Uses Cargo-style union types: string for simple defaults, object for full control.\n */\n\nimport { z } from \"zod\"\nimport { ValidationError } from \"../utils/errors.js\"\n\n// =============================================================================\n// OPENCODE NAMING CONSTRAINTS (from OpenCode docs)\n// =============================================================================\n\n/**\n * OpenCode name schema following official constraints:\n * - 1-64 characters\n * - Lowercase alphanumeric with single hyphen separators\n * - Cannot start or end with hyphen\n * - Cannot contain consecutive hyphens\n *\n * Regex: ^[a-z0-9]+(-[a-z0-9]+)*$\n */\nexport const openCodeNameSchema = z\n\t.string()\n\t.min(1, \"Name cannot be empty\")\n\t.max(64, \"Name cannot exceed 64 characters\")\n\t.regex(/^[a-z0-9]+(-[a-z0-9]+)*$/, {\n\t\tmessage:\n\t\t\t\"Must be lowercase alphanumeric with single hyphen separators (e.g., 'my-component', 'my-plugin'). Cannot start/end with hyphen or have consecutive hyphens.\",\n\t})\n\n/**\n * Namespace schema - valid identifier for registry namespace\n * Same rules as openCodeNameSchema\n */\nexport const namespaceSchema = openCodeNameSchema\n\n/**\n * Qualified component reference: namespace/component\n * Used in CLI commands and lockfile keys\n */\nexport const qualifiedComponentSchema = z\n\t.string()\n\t.regex(/^[a-z0-9]+(-[a-z0-9]+)*\\/[a-z0-9]+(-[a-z0-9]+)*$/, {\n\t\tmessage:\n\t\t\t'Must be in format \"namespace/component\" (e.g., \"kdco/librarian\"). Both parts must be lowercase alphanumeric with hyphens.',\n\t})\n\n/**\n * Parse a qualified component reference into namespace and component.\n * Throws ValidationError if format is invalid (Law 4: Fail Fast, Fail Loud).\n */\nexport function parseQualifiedComponent(ref: string): { namespace: string; component: string } {\n\tif (!ref.includes(\"/\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid component reference: \"${ref}\". Use format: namespace/component`,\n\t\t)\n\t}\n\tconst [namespace, component] = ref.split(\"/\")\n\tif (!namespace || !component) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid component reference: \"${ref}\". Both namespace and component are required.`,\n\t\t)\n\t}\n\treturn { namespace, component }\n}\n\n/**\n * Create a qualified component reference from namespace and component\n */\nexport function createQualifiedComponent(namespace: string, component: string): string {\n\treturn `${namespace}/${component}`\n}\n\n/**\n * Dependency reference schema (Cargo-style):\n * - Bare string: \"utils\" -> same namespace (implicit)\n * - Qualified: \"acme/utils\" -> cross-namespace (explicit)\n */\nexport const dependencyRefSchema = z.string().refine(\n\t(dep) => {\n\t\t// Either a bare component name or a qualified namespace/component\n\t\tconst barePattern = /^[a-z0-9]+(-[a-z0-9]+)*$/\n\t\tconst qualifiedPattern = /^[a-z0-9]+(-[a-z0-9]+)*\\/[a-z0-9]+(-[a-z0-9]+)*$/\n\t\treturn barePattern.test(dep) || qualifiedPattern.test(dep)\n\t},\n\t{\n\t\tmessage:\n\t\t\t'Dependency must be either a bare name (e.g., \"utils\") or qualified (e.g., \"acme/utils\")',\n\t},\n)\n\n/**\n * Parse a dependency reference, resolving bare names to the parent namespace\n */\nexport function parseDependencyRef(\n\tdep: string,\n\tparentNamespace: string,\n): { namespace: string; component: string } {\n\tif (dep.includes(\"/\")) {\n\t\treturn parseQualifiedComponent(dep)\n\t}\n\treturn { namespace: parentNamespace, component: dep }\n}\n\n// =============================================================================\n// FILE TARGET SCHEMAS\n// =============================================================================\n\n/**\n * Valid component types and their target directories\n */\nexport const COMPONENT_TYPE_DIRS = {\n\t\"ocx:agent\": \"agent\",\n\t\"ocx:skill\": \"skill\",\n\t\"ocx:plugin\": \"plugin\",\n\t\"ocx:command\": \"command\",\n\t\"ocx:tool\": \"tool\",\n\t\"ocx:bundle\": null, // Bundles don't have a target directory\n} as const\n\nexport const componentTypeSchema = z.enum([\n\t\"ocx:agent\",\n\t\"ocx:skill\",\n\t\"ocx:plugin\",\n\t\"ocx:command\",\n\t\"ocx:tool\",\n\t\"ocx:bundle\",\n])\n\nexport type ComponentType = z.infer<typeof componentTypeSchema>\n\n/**\n * Target path must be inside .opencode/ with valid subdirectory\n */\nexport const targetPathSchema = z\n\t.string()\n\t.refine((path) => path.startsWith(\".opencode/\"), {\n\t\tmessage: 'Target path must start with \".opencode/\"',\n\t})\n\t.refine(\n\t\t(path) => {\n\t\t\tconst parts = path.split(\"/\")\n\t\t\tconst dir = parts[1]\n\t\t\tif (!dir) return false\n\t\t\treturn [\"agent\", \"skill\", \"plugin\", \"command\", \"tool\", \"philosophy\"].includes(dir)\n\t\t},\n\t\t{\n\t\t\tmessage:\n\t\t\t\t'Target must be in a valid directory: \".opencode/{agent|skill|plugin|command|tool|philosophy}/...\"',\n\t\t},\n\t)\n\n/**\n * Skill-specific target validation.\n * Skills must be in: .opencode/skill/<name>/SKILL.md\n */\nexport const skillTargetSchema = z\n\t.string()\n\t.regex(/^\\.opencode\\/skill\\/[a-z0-9]+(-[a-z0-9]+)*\\/SKILL\\.md$/, {\n\t\tmessage:\n\t\t\t'Skill target must match pattern \".opencode/skill/<name>/SKILL.md\" where name follows OpenCode naming rules',\n\t})\n\n// =============================================================================\n// MCP SERVER SCHEMA (Cargo-style: string URL or full object)\n// =============================================================================\n\n/**\n * Full MCP server configuration object\n */\nexport const mcpServerObjectSchema = z\n\t.object({\n\t\ttype: z.enum([\"remote\", \"local\"]),\n\t\turl: z.string().url().optional(),\n\t\tcommand: z.array(z.string()).optional(),\n\t\targs: z.array(z.string()).optional(),\n\t\tenvironment: z.record(z.string()).optional(),\n\t\theaders: z.record(z.string()).optional(),\n\t\toauth: z.boolean().optional(),\n\t\tenabled: z.boolean().default(true),\n\t})\n\t.refine(\n\t\t(data) => {\n\t\t\tif (data.type === \"remote\" && !data.url) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (data.type === \"local\" && !data.command) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\t{\n\t\t\tmessage: \"Remote MCP servers require 'url', local servers require 'command'\",\n\t\t},\n\t)\n\nexport type McpServerObject = z.infer<typeof mcpServerObjectSchema>\n\n/**\n * Cargo-style MCP server schema:\n * - String: URL shorthand for remote server (e.g., \"https://mcp.example.com\")\n * - Object: Full configuration\n */\nexport const mcpServerSchema = z.union([z.string().url(), mcpServerObjectSchema])\n\nexport type McpServer = z.infer<typeof mcpServerSchema>\n\n// =============================================================================\n// COMPONENT FILE SCHEMA (Cargo-style: string path or full object)\n// =============================================================================\n\n/**\n * Full file configuration object\n */\nexport const componentFileObjectSchema = z.object({\n\t/** Source path in registry */\n\tpath: z.string().min(1, \"File path cannot be empty\"),\n\t/** Target path in .opencode/ */\n\ttarget: targetPathSchema,\n})\n\nexport type ComponentFileObject = z.infer<typeof componentFileObjectSchema>\n\n/**\n * Cargo-style file schema:\n * - String: Path shorthand, target auto-inferred (e.g., \"plugin/foo.ts\" -> \".opencode/plugin/foo.ts\")\n * - Object: Full configuration with explicit target\n */\nexport const componentFileSchema = z.union([\n\tz.string().min(1, \"File path cannot be empty\"),\n\tcomponentFileObjectSchema,\n])\n\nexport type ComponentFile = z.infer<typeof componentFileSchema>\n\n// =============================================================================\n// OPENCODE CONFIG BLOCK SCHEMA\n// =============================================================================\n\n/**\n * Agent configuration options (matches opencode.json agent schema)\n * Note: No hardcoded 'model' - that's a user preference\n */\nexport const agentConfigSchema = z.object({\n\t/** Tool enable/disable patterns */\n\ttools: z.record(z.boolean()).optional(),\n\t/** Sampling temperature */\n\ttemperature: z.number().min(0).max(2).optional(),\n\t/** Additional prompt text */\n\tprompt: z.string().optional(),\n\t/** Permission matrix for file operations */\n\tpermission: z.record(z.enum([\"allow\", \"deny\"])).optional(),\n})\n\nexport type AgentConfig = z.infer<typeof agentConfigSchema>\n\n/**\n * OpenCode configuration block\n * Mirrors opencode.json structure for intuitive mapping\n */\nexport const opencodeConfigSchema = z.object({\n\t/** NPM plugin packages to add to opencode.json 'plugin' array */\n\tplugins: z.array(z.string()).optional(),\n\n\t/** Tool enable/disable patterns */\n\ttools: z.record(z.boolean()).optional(),\n\n\t/** Per-agent configuration */\n\tagent: z.record(agentConfigSchema).optional(),\n\n\t/** Global instructions to append */\n\tinstructions: z.array(z.string()).optional(),\n})\n\nexport type OpencodeConfig = z.infer<typeof opencodeConfigSchema>\n\n// =============================================================================\n// COMPONENT MANIFEST SCHEMA\n// =============================================================================\n\nexport const componentManifestSchema = z.object({\n\t/** Component name (clean, no namespace prefix) */\n\tname: openCodeNameSchema,\n\n\t/** Component type */\n\ttype: componentTypeSchema,\n\n\t/** Human-readable description */\n\tdescription: z.string().min(1).max(1024),\n\n\t/**\n\t * Files to install (Cargo-style)\n\t * - String: \"plugin/foo.ts\" -> auto-infers target as \".opencode/plugin/foo.ts\"\n\t * - Object: { path: \"...\", target: \"...\" } for explicit control\n\t */\n\tfiles: z.array(componentFileSchema),\n\n\t/**\n\t * Dependencies on other components (Cargo-style)\n\t * - Bare string: \"utils\" -> same namespace (implicit)\n\t * - Qualified: \"acme/utils\" -> cross-namespace (explicit)\n\t */\n\tdependencies: z.array(dependencyRefSchema).default([]),\n\n\t/** NPM dependencies to install (supports pkg@version syntax) */\n\tnpmDependencies: z.array(z.string()).optional(),\n\n\t/** NPM dev dependencies to install (supports pkg@version syntax) */\n\tnpmDevDependencies: z.array(z.string()).optional(),\n\n\t/**\n\t * MCP servers this component needs (Cargo-style)\n\t * - String value: URL shorthand for remote server\n\t * - Object value: Full MCP configuration\n\t */\n\tmcpServers: z.record(mcpServerSchema).optional(),\n\n\t/** Scope MCP servers to this agent only? Default: \"agent\" */\n\tmcpScope: z.enum([\"agent\", \"global\"]).default(\"agent\"),\n\n\t/**\n\t * OpenCode configuration to merge into opencode.json\n\t * Use this for: plugins, tools, agent config, instructions\n\t */\n\topencode: opencodeConfigSchema.optional(),\n\n\t/**\n\t * @deprecated Use opencode.tools instead\n\t * Tools to disable globally when this component is installed\n\t */\n\tdisabledTools: z.array(z.string()).optional(),\n})\n\nexport type ComponentManifest = z.infer<typeof componentManifestSchema>\n\n// =============================================================================\n// NORMALIZER FUNCTIONS (Parse, Don't Validate - Law 2)\n// =============================================================================\n\n/**\n * Infer target path from source path\n * e.g., \"plugin/foo.ts\" -> \".opencode/plugin/foo.ts\"\n */\nexport function inferTargetPath(sourcePath: string): string {\n\treturn `.opencode/${sourcePath}`\n}\n\n/**\n * Normalize a file entry from string shorthand to full object\n */\nexport function normalizeFile(file: ComponentFile): ComponentFileObject {\n\tif (typeof file === \"string\") {\n\t\treturn {\n\t\t\tpath: file,\n\t\t\ttarget: inferTargetPath(file),\n\t\t}\n\t}\n\treturn file\n}\n\n/**\n * Normalize an MCP server entry from URL shorthand to full object\n */\nexport function normalizeMcpServer(server: McpServer): McpServerObject {\n\tif (typeof server === \"string\") {\n\t\treturn {\n\t\t\ttype: \"remote\",\n\t\t\turl: server,\n\t\t\tenabled: true,\n\t\t}\n\t}\n\treturn server\n}\n\n/**\n * Normalize all Cargo-style shorthands in a component manifest\n * Call this at the parse boundary to get fully-typed objects\n */\nexport function normalizeComponentManifest(\n\tmanifest: ComponentManifest,\n): NormalizedComponentManifest {\n\treturn {\n\t\t...manifest,\n\t\tfiles: manifest.files.map(normalizeFile),\n\t\tmcpServers: manifest.mcpServers\n\t\t\t? Object.fromEntries(\n\t\t\t\t\tObject.entries(manifest.mcpServers).map(([name, server]) => [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tnormalizeMcpServer(server),\n\t\t\t\t\t]),\n\t\t\t\t)\n\t\t\t: undefined,\n\t}\n}\n\n/**\n * Normalized component manifest with all shorthands expanded\n */\nexport interface NormalizedComponentManifest\n\textends Omit<ComponentManifest, \"files\" | \"mcpServers\"> {\n\tfiles: ComponentFileObject[]\n\tmcpServers?: Record<string, McpServerObject>\n}\n\n// =============================================================================\n// REGISTRY SCHEMA\n// =============================================================================\n\n/**\n * Semver regex for version validation\n */\nconst semverRegex = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/\n\nexport const registrySchema = z\n\t.object({\n\t\t/** Registry name */\n\t\tname: z.string().min(1, \"Registry name cannot be empty\"),\n\n\t\t/** Registry namespace - used in qualified component references (e.g., kdco/librarian) */\n\t\tnamespace: namespaceSchema,\n\n\t\t/** Registry version (semver) */\n\t\tversion: z.string().regex(semverRegex, {\n\t\t\tmessage: \"Version must be valid semver (e.g., '1.0.0', '2.1.0-beta.1')\",\n\t\t}),\n\n\t\t/** Registry author */\n\t\tauthor: z.string().min(1, \"Author cannot be empty\"),\n\n\t\t/** Components in this registry */\n\t\tcomponents: z.array(componentManifestSchema),\n\t})\n\t.refine(\n\t\t(data) => {\n\t\t\t// All dependencies must either:\n\t\t\t// 1. Be a bare name that exists in this registry\n\t\t\t// 2. Be a qualified cross-namespace reference (validated at install time)\n\t\t\tconst componentNames = new Set(data.components.map((c) => c.name))\n\t\t\tfor (const component of data.components) {\n\t\t\t\tfor (const dep of component.dependencies) {\n\t\t\t\t\t// Only validate bare (same-namespace) dependencies\n\t\t\t\t\tif (!dep.includes(\"/\") && !componentNames.has(dep)) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\t{\n\t\t\tmessage:\n\t\t\t\t\"Bare dependencies must reference components that exist in the registry. Use qualified references (e.g., 'other-registry/component') for cross-namespace dependencies.\",\n\t\t},\n\t)\n\nexport type Registry = z.infer<typeof registrySchema>\n\n// =============================================================================\n// PACKUMENT SCHEMA (npm-style versioned component)\n// =============================================================================\n\nexport const packumentSchema = z.object({\n\t/** Component name */\n\tname: openCodeNameSchema,\n\n\t/** Latest version */\n\t\"dist-tags\": z.object({\n\t\tlatest: z.string(),\n\t}),\n\n\t/** All versions */\n\tversions: z.record(componentManifestSchema),\n})\n\nexport type Packument = z.infer<typeof packumentSchema>\n\n// =============================================================================\n// REGISTRY INDEX SCHEMA\n// =============================================================================\n\nexport const registryIndexSchema = z.object({\n\t/** Registry metadata */\n\tname: z.string(),\n\tnamespace: namespaceSchema,\n\tversion: z.string(),\n\tauthor: z.string(),\n\n\t/** Component summaries for search */\n\tcomponents: z.array(\n\t\tz.object({\n\t\t\tname: openCodeNameSchema,\n\t\t\ttype: componentTypeSchema,\n\t\t\tdescription: z.string(),\n\t\t}),\n\t),\n})\n\nexport type RegistryIndex = z.infer<typeof registryIndexSchema>\n",
24
+ "/**\n * Registry & Component Schemas\n *\n * Zod schemas with fail-fast validation following the 5 Laws of Elegant Defense.\n * Uses Cargo-style union types: string for simple defaults, object for full control.\n */\n\nimport { z } from \"zod\"\nimport { ValidationError } from \"../utils/errors.js\"\n\n// =============================================================================\n// OPENCODE NAMING CONSTRAINTS (from OpenCode docs)\n// =============================================================================\n\n/**\n * OpenCode name schema following official constraints:\n * - 1-64 characters\n * - Lowercase alphanumeric with single hyphen separators\n * - Cannot start or end with hyphen\n * - Cannot contain consecutive hyphens\n *\n * Regex: ^[a-z0-9]+(-[a-z0-9]+)*$\n */\nexport const openCodeNameSchema = z\n\t.string()\n\t.min(1, \"Name cannot be empty\")\n\t.max(64, \"Name cannot exceed 64 characters\")\n\t.regex(/^[a-z0-9]+(-[a-z0-9]+)*$/, {\n\t\tmessage:\n\t\t\t\"Must be lowercase alphanumeric with single hyphen separators (e.g., 'my-component', 'my-plugin'). Cannot start/end with hyphen or have consecutive hyphens.\",\n\t})\n\n/**\n * Namespace schema - valid identifier for registry namespace\n * Same rules as openCodeNameSchema\n */\nexport const namespaceSchema = openCodeNameSchema\n\n/**\n * Qualified component reference: namespace/component\n * Used in CLI commands and lockfile keys\n */\nexport const qualifiedComponentSchema = z\n\t.string()\n\t.regex(/^[a-z0-9]+(-[a-z0-9]+)*\\/[a-z0-9]+(-[a-z0-9]+)*$/, {\n\t\tmessage:\n\t\t\t'Must be in format \"namespace/component\" (e.g., \"kdco/librarian\"). Both parts must be lowercase alphanumeric with hyphens.',\n\t})\n\n/**\n * Parse a qualified component reference into namespace and component.\n * Throws ValidationError if format is invalid (Law 4: Fail Fast, Fail Loud).\n */\nexport function parseQualifiedComponent(ref: string): { namespace: string; component: string } {\n\tif (!ref.includes(\"/\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid component reference: \"${ref}\". Use format: namespace/component`,\n\t\t)\n\t}\n\tconst [namespace, component] = ref.split(\"/\")\n\tif (!namespace || !component) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid component reference: \"${ref}\". Both namespace and component are required.`,\n\t\t)\n\t}\n\treturn { namespace, component }\n}\n\n/**\n * Create a qualified component reference from namespace and component\n */\nexport function createQualifiedComponent(namespace: string, component: string): string {\n\treturn `${namespace}/${component}`\n}\n\n/**\n * Dependency reference schema (Cargo-style):\n * - Bare string: \"utils\" -> same namespace (implicit)\n * - Qualified: \"acme/utils\" -> cross-namespace (explicit)\n */\nexport const dependencyRefSchema = z.string().refine(\n\t(dep) => {\n\t\t// Either a bare component name or a qualified namespace/component\n\t\tconst barePattern = /^[a-z0-9]+(-[a-z0-9]+)*$/\n\t\tconst qualifiedPattern = /^[a-z0-9]+(-[a-z0-9]+)*\\/[a-z0-9]+(-[a-z0-9]+)*$/\n\t\treturn barePattern.test(dep) || qualifiedPattern.test(dep)\n\t},\n\t{\n\t\tmessage:\n\t\t\t'Dependency must be either a bare name (e.g., \"utils\") or qualified (e.g., \"acme/utils\")',\n\t},\n)\n\n/**\n * Parse a dependency reference, resolving bare names to the parent namespace\n */\nexport function parseDependencyRef(\n\tdep: string,\n\tparentNamespace: string,\n): { namespace: string; component: string } {\n\tif (dep.includes(\"/\")) {\n\t\treturn parseQualifiedComponent(dep)\n\t}\n\treturn { namespace: parentNamespace, component: dep }\n}\n\n// =============================================================================\n// FILE TARGET SCHEMAS\n// =============================================================================\n\n/**\n * Valid component types and their target directories\n */\nexport const COMPONENT_TYPE_DIRS = {\n\t\"ocx:agent\": \"agent\",\n\t\"ocx:skill\": \"skill\",\n\t\"ocx:plugin\": \"plugin\",\n\t\"ocx:command\": \"command\",\n\t\"ocx:tool\": \"tool\",\n\t\"ocx:bundle\": null, // Bundles don't have a target directory\n} as const\n\nexport const componentTypeSchema = z.enum([\n\t\"ocx:agent\",\n\t\"ocx:skill\",\n\t\"ocx:plugin\",\n\t\"ocx:command\",\n\t\"ocx:tool\",\n\t\"ocx:bundle\",\n])\n\nexport type ComponentType = z.infer<typeof componentTypeSchema>\n\n/**\n * Target path must be inside .opencode/ with valid subdirectory\n */\nexport const targetPathSchema = z\n\t.string()\n\t.refine((path) => path.startsWith(\".opencode/\"), {\n\t\tmessage: 'Target path must start with \".opencode/\"',\n\t})\n\t.refine(\n\t\t(path) => {\n\t\t\tconst parts = path.split(\"/\")\n\t\t\tconst dir = parts[1]\n\t\t\tif (!dir) return false\n\t\t\treturn [\"agent\", \"skill\", \"plugin\", \"command\", \"tool\", \"philosophy\"].includes(dir)\n\t\t},\n\t\t{\n\t\t\tmessage:\n\t\t\t\t'Target must be in a valid directory: \".opencode/{agent|skill|plugin|command|tool|philosophy}/...\"',\n\t\t},\n\t)\n\n/**\n * Skill-specific target validation.\n * Skills must be in: .opencode/skill/<name>/SKILL.md\n */\nexport const skillTargetSchema = z\n\t.string()\n\t.regex(/^\\.opencode\\/skill\\/[a-z0-9]+(-[a-z0-9]+)*\\/SKILL\\.md$/, {\n\t\tmessage:\n\t\t\t'Skill target must match pattern \".opencode/skill/<name>/SKILL.md\" where name follows OpenCode naming rules',\n\t})\n\n// =============================================================================\n// MCP SERVER SCHEMA (Cargo-style: string URL or full object)\n// =============================================================================\n\n/**\n * Full MCP server configuration object\n */\nexport const mcpServerObjectSchema = z\n\t.object({\n\t\ttype: z.enum([\"remote\", \"local\"]),\n\t\turl: z.string().url().optional(),\n\t\tcommand: z.array(z.string()).optional(),\n\t\targs: z.array(z.string()).optional(),\n\t\tenvironment: z.record(z.string()).optional(),\n\t\theaders: z.record(z.string()).optional(),\n\t\toauth: z.boolean().optional(),\n\t\tenabled: z.boolean().default(true),\n\t})\n\t.refine(\n\t\t(data) => {\n\t\t\tif (data.type === \"remote\" && !data.url) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (data.type === \"local\" && !data.command) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\t{\n\t\t\tmessage: \"Remote MCP servers require 'url', local servers require 'command'\",\n\t\t},\n\t)\n\nexport type McpServer = z.infer<typeof mcpServerObjectSchema>\n\n/**\n * Cargo-style MCP server reference:\n * - String: URL shorthand for remote server (e.g., \"https://mcp.example.com\")\n * - Object: Full configuration\n */\nexport const mcpServerRefSchema = z.union([z.string().url(), mcpServerObjectSchema])\n\nexport type McpServerRef = z.infer<typeof mcpServerRefSchema>\n\n// =============================================================================\n// COMPONENT FILE SCHEMA (Cargo-style: string path or full object)\n// =============================================================================\n\n/**\n * Full file configuration object\n */\nexport const componentFileObjectSchema = z.object({\n\t/** Source path in registry */\n\tpath: z.string().min(1, \"File path cannot be empty\"),\n\t/** Target path in .opencode/ */\n\ttarget: targetPathSchema,\n})\n\nexport type ComponentFileObject = z.infer<typeof componentFileObjectSchema>\n\n/**\n * Cargo-style file schema:\n * - String: Path shorthand, target auto-inferred (e.g., \"plugin/foo.ts\" -> \".opencode/plugin/foo.ts\")\n * - Object: Full configuration with explicit target\n */\nexport const componentFileSchema = z.union([\n\tz.string().min(1, \"File path cannot be empty\"),\n\tcomponentFileObjectSchema,\n])\n\nexport type ComponentFile = z.infer<typeof componentFileSchema>\n\n// =============================================================================\n// OPENCODE CONFIG BLOCK SCHEMA\n// =============================================================================\n\n/**\n * Agent configuration options (matches opencode.json agent schema)\n * Note: No hardcoded 'model' - that's a user preference\n */\nexport const agentConfigSchema = z.object({\n\t/** Tool enable/disable patterns */\n\ttools: z.record(z.boolean()).optional(),\n\t/** Sampling temperature */\n\ttemperature: z.number().min(0).max(2).optional(),\n\t/** Additional prompt text */\n\tprompt: z.string().optional(),\n\t/** Permission matrix for file operations */\n\tpermission: z.record(z.enum([\"allow\", \"deny\"])).optional(),\n})\n\nexport type AgentConfig = z.infer<typeof agentConfigSchema>\n\n/**\n * OpenCode configuration block\n * Mirrors opencode.json structure for intuitive mapping\n */\nexport const opencodeConfigSchema = z.object({\n\t/** NPM plugin packages to add to opencode.json 'plugin' array */\n\tplugins: z.array(z.string()).optional(),\n\n\t/** Tool enable/disable patterns */\n\ttools: z.record(z.boolean()).optional(),\n\n\t/** Per-agent configuration */\n\tagent: z.record(agentConfigSchema).optional(),\n\n\t/** Global instructions to append */\n\tinstructions: z.array(z.string()).optional(),\n})\n\nexport type OpencodeConfig = z.infer<typeof opencodeConfigSchema>\n\n// =============================================================================\n// COMPONENT MANIFEST SCHEMA\n// =============================================================================\n\nexport const componentManifestSchema = z.object({\n\t/** Component name (clean, no namespace prefix) */\n\tname: openCodeNameSchema,\n\n\t/** Component type */\n\ttype: componentTypeSchema,\n\n\t/** Human-readable description */\n\tdescription: z.string().min(1).max(1024),\n\n\t/**\n\t * Files to install (Cargo-style)\n\t * - String: \"plugin/foo.ts\" -> auto-infers target as \".opencode/plugin/foo.ts\"\n\t * - Object: { path: \"...\", target: \"...\" } for explicit control\n\t */\n\tfiles: z.array(componentFileSchema),\n\n\t/**\n\t * Dependencies on other components (Cargo-style)\n\t * - Bare string: \"utils\" -> same namespace (implicit)\n\t * - Qualified: \"acme/utils\" -> cross-namespace (explicit)\n\t */\n\tdependencies: z.array(dependencyRefSchema).default([]),\n\n\t/** NPM dependencies to install (supports pkg@version syntax) */\n\tnpmDependencies: z.array(z.string()).optional(),\n\n\t/** NPM dev dependencies to install (supports pkg@version syntax) */\n\tnpmDevDependencies: z.array(z.string()).optional(),\n\n\t/**\n\t * MCP servers this component needs (Cargo-style)\n\t * - String value: URL shorthand for remote server\n\t * - Object value: Full MCP configuration\n\t */\n\tmcpServers: z.record(mcpServerRefSchema).optional(),\n\n\t/** Scope MCP servers to this agent only? Default: \"agent\" */\n\tmcpScope: z.enum([\"agent\", \"global\"]).default(\"agent\"),\n\n\t/**\n\t * OpenCode configuration to merge into opencode.json\n\t * Use this for: plugins, tools, agent config, instructions\n\t */\n\topencode: opencodeConfigSchema.optional(),\n\n\t/**\n\t * @deprecated Use opencode.tools instead\n\t * Tools to disable globally when this component is installed\n\t */\n\tdisabledTools: z.array(z.string()).optional(),\n})\n\nexport type ComponentManifest = z.infer<typeof componentManifestSchema>\n\n// =============================================================================\n// NORMALIZER FUNCTIONS (Parse, Don't Validate - Law 2)\n// =============================================================================\n\n/**\n * Infer target path from source path\n * e.g., \"plugin/foo.ts\" -> \".opencode/plugin/foo.ts\"\n */\nexport function inferTargetPath(sourcePath: string): string {\n\treturn `.opencode/${sourcePath}`\n}\n\n/**\n * Normalize a file entry from string shorthand to full object\n */\nexport function normalizeFile(file: ComponentFile): ComponentFileObject {\n\tif (typeof file === \"string\") {\n\t\treturn {\n\t\t\tpath: file,\n\t\t\ttarget: inferTargetPath(file),\n\t\t}\n\t}\n\treturn file\n}\n\n/**\n * Normalize an MCP server entry from URL shorthand to full object\n */\nexport function normalizeMcpServer(server: McpServerRef): McpServer {\n\tif (typeof server === \"string\") {\n\t\treturn {\n\t\t\ttype: \"remote\",\n\t\t\turl: server,\n\t\t\tenabled: true,\n\t\t}\n\t}\n\treturn server\n}\n\n/**\n * Normalize all Cargo-style shorthands in a component manifest\n * Call this at the parse boundary to get fully-typed objects\n */\nexport function normalizeComponentManifest(\n\tmanifest: ComponentManifest,\n): NormalizedComponentManifest {\n\treturn {\n\t\t...manifest,\n\t\tfiles: manifest.files.map(normalizeFile),\n\t\tmcpServers: manifest.mcpServers\n\t\t\t? Object.fromEntries(\n\t\t\t\t\tObject.entries(manifest.mcpServers).map(([name, server]) => [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tnormalizeMcpServer(server),\n\t\t\t\t\t]),\n\t\t\t\t)\n\t\t\t: undefined,\n\t}\n}\n\n/**\n * Normalized component manifest with all shorthands expanded\n */\nexport interface NormalizedComponentManifest\n\textends Omit<ComponentManifest, \"files\" | \"mcpServers\"> {\n\tfiles: ComponentFileObject[]\n\tmcpServers?: Record<string, McpServer>\n}\n\n// =============================================================================\n// REGISTRY SCHEMA\n// =============================================================================\n\n/**\n * Semver regex for version validation\n */\nconst semverRegex = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/\n\nexport const registrySchema = z\n\t.object({\n\t\t/** Registry name */\n\t\tname: z.string().min(1, \"Registry name cannot be empty\"),\n\n\t\t/** Registry namespace - used in qualified component references (e.g., kdco/librarian) */\n\t\tnamespace: namespaceSchema,\n\n\t\t/** Registry version (semver) */\n\t\tversion: z.string().regex(semverRegex, {\n\t\t\tmessage: \"Version must be valid semver (e.g., '1.0.0', '2.1.0-beta.1')\",\n\t\t}),\n\n\t\t/** Registry author */\n\t\tauthor: z.string().min(1, \"Author cannot be empty\"),\n\n\t\t/** Components in this registry */\n\t\tcomponents: z.array(componentManifestSchema),\n\t})\n\t.refine(\n\t\t(data) => {\n\t\t\t// All dependencies must either:\n\t\t\t// 1. Be a bare name that exists in this registry\n\t\t\t// 2. Be a qualified cross-namespace reference (validated at install time)\n\t\t\tconst componentNames = new Set(data.components.map((c) => c.name))\n\t\t\tfor (const component of data.components) {\n\t\t\t\tfor (const dep of component.dependencies) {\n\t\t\t\t\t// Only validate bare (same-namespace) dependencies\n\t\t\t\t\tif (!dep.includes(\"/\") && !componentNames.has(dep)) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\t{\n\t\t\tmessage:\n\t\t\t\t\"Bare dependencies must reference components that exist in the registry. Use qualified references (e.g., 'other-registry/component') for cross-namespace dependencies.\",\n\t\t},\n\t)\n\nexport type Registry = z.infer<typeof registrySchema>\n\n// =============================================================================\n// PACKUMENT SCHEMA (npm-style versioned component)\n// =============================================================================\n\nexport const packumentSchema = z.object({\n\t/** Component name */\n\tname: openCodeNameSchema,\n\n\t/** Latest version */\n\t\"dist-tags\": z.object({\n\t\tlatest: z.string(),\n\t}),\n\n\t/** All versions */\n\tversions: z.record(componentManifestSchema),\n})\n\nexport type Packument = z.infer<typeof packumentSchema>\n\n// =============================================================================\n// REGISTRY INDEX SCHEMA\n// =============================================================================\n\nexport const registryIndexSchema = z.object({\n\t/** Registry metadata */\n\tname: z.string(),\n\tnamespace: namespaceSchema,\n\tversion: z.string(),\n\tauthor: z.string(),\n\n\t/** Component summaries for search */\n\tcomponents: z.array(\n\t\tz.object({\n\t\t\tname: openCodeNameSchema,\n\t\t\ttype: componentTypeSchema,\n\t\t\tdescription: z.string(),\n\t\t}),\n\t),\n})\n\nexport type RegistryIndex = z.infer<typeof registryIndexSchema>\n",
32
25
  "/**\n * Registry Fetcher with in-memory caching\n * Based on: https://github.com/shadcn-ui/ui/blob/main/packages/shadcn/src/registry/fetcher.ts\n */\n\nimport type { ComponentManifest, McpServer, RegistryIndex } from \"../schemas/registry.js\"\nimport {\n\tcomponentManifestSchema,\n\tpackumentSchema,\n\tregistryIndexSchema,\n} from \"../schemas/registry.js\"\nimport { NetworkError, NotFoundError, ValidationError } from \"../utils/errors.js\"\n\n// In-memory cache for deduplication\nconst cache = new Map<string, Promise<unknown>>()\n\n/**\n * Fetch with caching - deduplicates concurrent requests\n */\nasync function fetchWithCache<T>(url: string, parse: (data: unknown) => T): Promise<T> {\n\tconst cached = cache.get(url)\n\tif (cached) {\n\t\treturn cached as Promise<T>\n\t}\n\n\tconst promise = (async () => {\n\t\tconst response = await fetch(url)\n\n\t\tif (!response.ok) {\n\t\t\tif (response.status === 404) {\n\t\t\t\tthrow new NotFoundError(`Not found: ${url}`)\n\t\t\t}\n\t\t\tthrow new NetworkError(`Failed to fetch ${url}: ${response.status} ${response.statusText}`)\n\t\t}\n\n\t\tconst data = await response.json()\n\t\treturn parse(data)\n\t})()\n\n\tcache.set(url, promise)\n\n\t// Clean up cache on error\n\tpromise.catch(() => cache.delete(url))\n\n\treturn promise\n}\n\n/**\n * Clear the fetch cache\n */\nexport function clearCache(): void {\n\tcache.clear()\n}\n\n/**\n * Fetch registry index\n */\nexport async function fetchRegistryIndex(baseUrl: string): Promise<RegistryIndex> {\n\tconst url = `${baseUrl.replace(/\\/$/, \"\")}/index.json`\n\n\treturn fetchWithCache(url, (data) => {\n\t\tconst result = registryIndexSchema.safeParse(data)\n\t\tif (!result.success) {\n\t\t\tthrow new ValidationError(`Invalid registry format at ${url}: ${result.error.message}`)\n\t\t}\n\t\treturn result.data\n\t})\n}\n\n/**\n * Fetch a component from registry and return the latest manifest\n */\nexport async function fetchComponent(baseUrl: string, name: string): Promise<ComponentManifest> {\n\tconst url = `${baseUrl.replace(/\\/$/, \"\")}/components/${name}.json`\n\n\treturn fetchWithCache(url, (data) => {\n\t\t// 1. Parse as packument\n\t\tconst packumentResult = packumentSchema.safeParse(data)\n\t\tif (!packumentResult.success) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid packument format for \"${name}\": ${packumentResult.error.message}`,\n\t\t\t)\n\t\t}\n\n\t\tconst packument = packumentResult.data\n\t\tconst latestVersion = packument[\"dist-tags\"].latest\n\t\tconst manifest = packument.versions[latestVersion]\n\n\t\tif (!manifest) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Component \"${name}\" has no manifest for latest version ${latestVersion}`,\n\t\t\t)\n\t\t}\n\n\t\t// 2. Validate manifest\n\t\tconst manifestResult = componentManifestSchema.safeParse(manifest)\n\t\tif (!manifestResult.success) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid component manifest for \"${name}@${latestVersion}\": ${manifestResult.error.message}`,\n\t\t\t)\n\t\t}\n\n\t\treturn manifestResult.data\n\t})\n}\n\n/**\n * Fetch multiple components in parallel\n */\nexport async function fetchComponents(\n\tbaseUrl: string,\n\tnames: string[],\n): Promise<ComponentManifest[]> {\n\tconst results = await Promise.allSettled(names.map((name) => fetchComponent(baseUrl, name)))\n\n\tconst components: ComponentManifest[] = []\n\tconst errors: string[] = []\n\n\tfor (const [i, result] of results.entries()) {\n\t\tif (result.status === \"fulfilled\") {\n\t\t\tcomponents.push(result.value)\n\t\t} else {\n\t\t\tconst name = names[i] ?? \"unknown\"\n\t\t\terrors.push(`${name}: ${result.reason.message}`)\n\t\t}\n\t}\n\n\tif (errors.length > 0) {\n\t\tthrow new NetworkError(`Failed to fetch components:\\n${errors.join(\"\\n\")}`)\n\t}\n\n\treturn components\n}\n\n/**\n * Check if a component exists in registry\n */\nexport async function componentExists(baseUrl: string, name: string): Promise<boolean> {\n\ttry {\n\t\tawait fetchComponent(baseUrl, name)\n\t\treturn true\n\t} catch {\n\t\treturn false\n\t}\n}\n\n/**\n * Fetch actual file content from registry\n */\nexport async function fetchFileContent(\n\tbaseUrl: string,\n\tcomponentName: string,\n\tfilePath: string,\n): Promise<string> {\n\tconst url = `${baseUrl.replace(/\\/$/, \"\")}/components/${componentName}/${filePath}`\n\n\tconst response = await fetch(url)\n\tif (!response.ok) {\n\t\tthrow new NetworkError(\n\t\t\t`Failed to fetch file ${filePath} for ${componentName}: ${response.status} ${response.statusText}`,\n\t\t)\n\t}\n\n\treturn response.text()\n}\n\n// Re-export types for convenience\nexport type { ComponentManifest, RegistryIndex, McpServer }\n",
33
26
  "function e(e,t,n){let r=n=>e(n,...t);return n===void 0?r:Object.assign(r,{lazy:n,lazyArgs:t})}export{e as t};\n//# sourceMappingURL=lazyDataLastImpl-DtF3cihj.js.map",
34
27
  "import{t as e}from\"./lazyDataLastImpl-DtF3cihj.js\";function t(t,n,r){let i=t.length-n.length;if(i===0)return t(...n);if(i===1)return e(t,n,r);throw Error(`Wrong number of arguments`)}export{t};\n//# sourceMappingURL=purry-GjwKKIlp.js.map",
35
28
  "function e(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}export{e as isPlainObject};\n//# sourceMappingURL=isPlainObject.js.map",
36
29
  "import{t as e}from\"./purry-GjwKKIlp.js\";import{isPlainObject as t}from\"./isPlainObject.js\";function n(...t){return e(r,t)}function r(e,n){let i={...e,...n};for(let a in n){if(!(a in e))continue;let{[a]:o}=e;if(!t(o))continue;let{[a]:s}=n;t(s)&&(i[a]=r(o,s))}return i}export{n as mergeDeep};\n//# sourceMappingURL=mergeDeep.js.map",
37
- "/**\n * Dependency Resolver with topological sort\n * Based on: https://github.com/shadcn-ui/ui/blob/main/packages/shadcn/src/registry/resolver.ts\n */\n\nimport { mergeDeep } from \"remeda\"\nimport type { RegistryConfig } from \"../schemas/config.js\"\nimport {\n\ttype ComponentManifest,\n\tcreateQualifiedComponent,\n\ttype McpServerObject,\n\ttype NormalizedComponentManifest,\n\tnormalizeComponentManifest,\n\tparseQualifiedComponent,\n} from \"../schemas/registry.js\"\nimport { ConfigError, OCXError, ValidationError } from \"../utils/errors.js\"\nimport { fetchComponent } from \"./fetcher.js\"\n\n/**\n * Parse a component reference into namespace and component name.\n * - \"kdco/librarian\" -> { namespace: \"kdco\", component: \"librarian\" }\n * - \"librarian\" (with defaultNamespace) -> { namespace: defaultNamespace, component: \"librarian\" }\n * - \"librarian\" (without defaultNamespace) -> throws error\n */\nexport function parseComponentRef(\n\tref: string,\n\tdefaultNamespace?: string,\n): { namespace: string; component: string } {\n\t// Check if it's a qualified reference (contains /)\n\tif (ref.includes(\"/\")) {\n\t\treturn parseQualifiedComponent(ref)\n\t}\n\n\t// Bare name - use default namespace if provided\n\tif (defaultNamespace) {\n\t\treturn { namespace: defaultNamespace, component: ref }\n\t}\n\n\tthrow new ValidationError(`Component '${ref}' must include a namespace (e.g., 'kdco/${ref}')`)\n}\n\nexport interface ResolvedComponent extends NormalizedComponentManifest {\n\t/** The namespace this component belongs to */\n\tnamespace: string\n\t/** The registry name from ocx.jsonc */\n\tregistryName: string\n\tbaseUrl: string\n\t/** Qualified name (namespace/component) */\n\tqualifiedName: string\n}\n\n/** Binding between an agent and its scoped MCP servers */\nexport interface AgentMcpBinding {\n\t/** Agent component name (e.g., \"librarian\") */\n\tagentName: string\n\t/** MCP server names scoped to this agent */\n\tserverNames: string[]\n}\n\nexport interface ResolvedDependencies {\n\t/** All components in dependency order (dependencies first) */\n\tcomponents: ResolvedComponent[]\n\t/** Install order (component names) */\n\tinstallOrder: string[]\n\t/** Aggregated MCP servers from all components (normalized to objects) */\n\tmcpServers: Record<string, McpServerObject>\n\t/** Agent-to-MCP bindings for agent-scoped servers */\n\tagentMcpBindings: AgentMcpBinding[]\n\t/** Aggregated npm dependencies from all components */\n\tnpmDependencies: string[]\n\t/** Aggregated npm dev dependencies from all components */\n\tnpmDevDependencies: string[]\n\t/** Tools to disable globally */\n\tdisabledTools: string[]\n\t/** OpenCode plugins (npm packages) to add to opencode.json plugin array */\n\tplugins: string[]\n\t/** Agent configurations to merge into opencode.json agent key */\n\tagentConfigs: Record<string, Record<string, unknown>>\n\t/** Global instructions to append to opencode.json instructions array */\n\tinstructions: string[]\n}\n\n/**\n * Resolve all dependencies for a set of components across multiple registries\n * Returns components in topological order (dependencies first)\n */\nexport async function resolveDependencies(\n\tregistries: Record<string, RegistryConfig>,\n\tcomponentNames: string[],\n): Promise<ResolvedDependencies> {\n\tconst resolved = new Map<string, ResolvedComponent>()\n\tconst visiting = new Set<string>()\n\tconst mcpServers: Record<string, McpServerObject> = {}\n\tconst agentMcpBindings: AgentMcpBinding[] = []\n\tconst npmDeps = new Set<string>()\n\tconst npmDevDeps = new Set<string>()\n\tconst disabledTools = new Set<string>()\n\tconst plugins = new Set<string>()\n\tconst agentConfigs: Record<string, Record<string, unknown>> = {}\n\tconst instructionsSet = new Set<string>()\n\n\tasync function resolve(\n\t\tcomponentNamespace: string,\n\t\tcomponentName: string,\n\t\tpath: string[] = [],\n\t): Promise<void> {\n\t\tconst qualifiedName = createQualifiedComponent(componentNamespace, componentName)\n\n\t\t// Already resolved\n\t\tif (resolved.has(qualifiedName)) {\n\t\t\treturn\n\t\t}\n\n\t\t// Cycle detection\n\t\tif (visiting.has(qualifiedName)) {\n\t\t\tconst cycle = [...path, qualifiedName].join(\" → \")\n\t\t\tthrow new ValidationError(`Circular dependency detected: ${cycle}`)\n\t\t}\n\n\t\tvisiting.add(qualifiedName)\n\n\t\t// Look up the registry for this namespace\n\t\tconst regConfig = registries[componentNamespace]\n\t\tif (!regConfig) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t`Registry '${componentNamespace}' not configured. Add it to ocx.jsonc registries.`,\n\t\t\t)\n\t\t}\n\n\t\t// Fetch component from the specific registry\n\t\tlet component: ComponentManifest\n\t\ttry {\n\t\t\tcomponent = await fetchComponent(regConfig.url, componentName)\n\t\t} catch (_err) {\n\t\t\tthrow new OCXError(\n\t\t\t\t`Component '${componentName}' not found in registry '${componentNamespace}'.`,\n\t\t\t\t\"NOT_FOUND\",\n\t\t\t)\n\t\t}\n\n\t\t// Resolve dependencies first (depth-first)\n\t\tfor (const dep of component.dependencies) {\n\t\t\t// Parse dependency: bare name = same namespace, \"foo/bar\" = cross-namespace\n\t\t\tconst depRef = parseComponentRef(dep, componentNamespace)\n\t\t\tawait resolve(depRef.namespace, depRef.component, [...path, qualifiedName])\n\t\t}\n\n\t\t// Normalize the component (expand Cargo-style shorthands)\n\t\tconst normalizedComponent = normalizeComponentManifest(component)\n\n\t\t// Add to resolved (dependencies are already added)\n\t\tresolved.set(qualifiedName, {\n\t\t\t...normalizedComponent,\n\t\t\tnamespace: componentNamespace,\n\t\t\tregistryName: componentNamespace,\n\t\t\tbaseUrl: regConfig.url,\n\t\t\tqualifiedName,\n\t\t})\n\t\tvisiting.delete(qualifiedName)\n\n\t\t// Collect MCP servers and track agent bindings\n\t\tif (normalizedComponent.mcpServers) {\n\t\t\tconst serverNames: string[] = []\n\t\t\tfor (const [serverName, config] of Object.entries(normalizedComponent.mcpServers)) {\n\t\t\t\t// Use already-normalized MCP server from normalizeComponentManifest\n\t\t\t\tmcpServers[serverName] = config\n\t\t\t\tserverNames.push(serverName)\n\t\t\t}\n\n\t\t\t// Track agent-scoped MCP bindings (default scope is \"agent\")\n\t\t\tconst scope = component.mcpScope ?? \"agent\"\n\t\t\tif (component.type === \"ocx:agent\" && scope === \"agent\" && serverNames.length > 0) {\n\t\t\t\tagentMcpBindings.push({\n\t\t\t\t\tagentName: component.name,\n\t\t\t\t\tserverNames,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Collect npm dependencies\n\t\tif (component.npmDependencies) {\n\t\t\tfor (const dep of component.npmDependencies) {\n\t\t\t\tnpmDeps.add(dep)\n\t\t\t}\n\t\t}\n\t\tif (component.npmDevDependencies) {\n\t\t\tfor (const dep of component.npmDevDependencies) {\n\t\t\t\tnpmDevDeps.add(dep)\n\t\t\t}\n\t\t}\n\n\t\t// Collect disabled tools\n\t\tif (component.disabledTools) {\n\t\t\tfor (const tool of component.disabledTools) {\n\t\t\t\tdisabledTools.add(tool)\n\t\t\t}\n\t\t}\n\n\t\t// Collect opencode config: plugins, agent configs, instructions\n\t\tif (component.opencode) {\n\t\t\t// Collect plugins (npm packages for opencode.json plugin array)\n\t\t\tif (component.opencode.plugins) {\n\t\t\t\tfor (const plugin of component.opencode.plugins) {\n\t\t\t\t\tplugins.add(plugin)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Collect agent configurations\n\t\t\tif (component.opencode.agent) {\n\t\t\t\tfor (const [agentName, config] of Object.entries(component.opencode.agent)) {\n\t\t\t\t\t// Deep merge agent configs (later components override earlier ones)\n\t\t\t\t\tagentConfigs[agentName] = mergeDeep(agentConfigs[agentName] ?? {}, config)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Collect instructions\n\t\t\tif (component.opencode.instructions) {\n\t\t\t\tfor (const instruction of component.opencode.instructions) {\n\t\t\t\t\tinstructionsSet.add(instruction)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Collect tools config (converts to disabledTools for false values)\n\t\t\tif (component.opencode.tools) {\n\t\t\t\tfor (const [tool, enabled] of Object.entries(component.opencode.tools)) {\n\t\t\t\t\tif (enabled === false) {\n\t\t\t\t\t\tdisabledTools.add(tool)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Resolve all requested components\n\tfor (const name of componentNames) {\n\t\t// Parse qualified component name (must include namespace)\n\t\tconst ref = parseComponentRef(name)\n\t\tawait resolve(ref.namespace, ref.component)\n\t}\n\n\t// Convert to array (already in topological order due to depth-first)\n\tconst components = Array.from(resolved.values())\n\tconst installOrder = Array.from(resolved.keys())\n\n\treturn {\n\t\tcomponents,\n\t\tinstallOrder,\n\t\tmcpServers,\n\t\tagentMcpBindings,\n\t\tnpmDependencies: Array.from(npmDeps),\n\t\tnpmDevDependencies: Array.from(npmDevDeps),\n\t\tdisabledTools: Array.from(disabledTools),\n\t\tplugins: Array.from(plugins),\n\t\tagentConfigs,\n\t\tinstructions: Array.from(instructionsSet),\n\t}\n}\n\n/**\n * Check if installing components would create conflicts\n */\nexport function checkConflicts(existing: string[], toInstall: string[]): string[] {\n\tconst conflicts: string[] = []\n\tconst existingSet = new Set(existing)\n\n\tfor (const name of toInstall) {\n\t\tif (existingSet.has(name)) {\n\t\t\tconflicts.push(name)\n\t\t}\n\t}\n\n\treturn conflicts\n}\n",
30
+ "/**\n * Dependency Resolver with topological sort\n * Based on: https://github.com/shadcn-ui/ui/blob/main/packages/shadcn/src/registry/resolver.ts\n */\n\nimport { mergeDeep } from \"remeda\"\nimport type { RegistryConfig } from \"../schemas/config.js\"\nimport {\n\ttype ComponentManifest,\n\tcreateQualifiedComponent,\n\ttype McpServer,\n\ttype NormalizedComponentManifest,\n\tnormalizeComponentManifest,\n\tparseQualifiedComponent,\n} from \"../schemas/registry.js\"\nimport { ConfigError, OCXError, ValidationError } from \"../utils/errors.js\"\nimport { fetchComponent } from \"./fetcher.js\"\n\n/**\n * Parse a component reference into namespace and component name.\n * - \"kdco/librarian\" -> { namespace: \"kdco\", component: \"librarian\" }\n * - \"librarian\" (with defaultNamespace) -> { namespace: defaultNamespace, component: \"librarian\" }\n * - \"librarian\" (without defaultNamespace) -> throws error\n */\nexport function parseComponentRef(\n\tref: string,\n\tdefaultNamespace?: string,\n): { namespace: string; component: string } {\n\t// Check if it's a qualified reference (contains /)\n\tif (ref.includes(\"/\")) {\n\t\treturn parseQualifiedComponent(ref)\n\t}\n\n\t// Bare name - use default namespace if provided\n\tif (defaultNamespace) {\n\t\treturn { namespace: defaultNamespace, component: ref }\n\t}\n\n\tthrow new ValidationError(`Component '${ref}' must include a namespace (e.g., 'kdco/${ref}')`)\n}\n\nexport interface ResolvedComponent extends NormalizedComponentManifest {\n\t/** The namespace this component belongs to */\n\tnamespace: string\n\t/** The registry name from ocx.jsonc */\n\tregistryName: string\n\tbaseUrl: string\n\t/** Qualified name (namespace/component) */\n\tqualifiedName: string\n}\n\n/** Binding between an agent and its scoped MCP servers */\nexport interface AgentMcpBinding {\n\t/** Agent component name (e.g., \"librarian\") */\n\tagentName: string\n\t/** MCP server names scoped to this agent */\n\tserverNames: string[]\n}\n\nexport interface ResolvedDependencies {\n\t/** All components in dependency order (dependencies first) */\n\tcomponents: ResolvedComponent[]\n\t/** Install order (component names) */\n\tinstallOrder: string[]\n\t/** Aggregated MCP servers from all components (normalized to objects) */\n\tmcpServers: Record<string, McpServer>\n\t/** Agent-to-MCP bindings for agent-scoped servers */\n\tagentMcpBindings: AgentMcpBinding[]\n\t/** Aggregated npm dependencies from all components */\n\tnpmDependencies: string[]\n\t/** Aggregated npm dev dependencies from all components */\n\tnpmDevDependencies: string[]\n\t/** Tools to disable globally */\n\tdisabledTools: string[]\n\t/** OpenCode plugins (npm packages) to add to opencode.json plugin array */\n\tplugins: string[]\n\t/** Agent configurations to merge into opencode.json agent key */\n\tagentConfigs: Record<string, Record<string, unknown>>\n\t/** Global instructions to append to opencode.json instructions array */\n\tinstructions: string[]\n}\n\n/**\n * Resolve all dependencies for a set of components across multiple registries\n * Returns components in topological order (dependencies first)\n */\nexport async function resolveDependencies(\n\tregistries: Record<string, RegistryConfig>,\n\tcomponentNames: string[],\n): Promise<ResolvedDependencies> {\n\tconst resolved = new Map<string, ResolvedComponent>()\n\tconst visiting = new Set<string>()\n\tconst mcpServers: Record<string, McpServer> = {}\n\tconst agentMcpBindings: AgentMcpBinding[] = []\n\tconst npmDeps = new Set<string>()\n\tconst npmDevDeps = new Set<string>()\n\tconst disabledTools = new Set<string>()\n\tconst plugins = new Set<string>()\n\tconst agentConfigs: Record<string, Record<string, unknown>> = {}\n\tconst instructionsSet = new Set<string>()\n\n\tasync function resolve(\n\t\tcomponentNamespace: string,\n\t\tcomponentName: string,\n\t\tpath: string[] = [],\n\t): Promise<void> {\n\t\tconst qualifiedName = createQualifiedComponent(componentNamespace, componentName)\n\n\t\t// Already resolved\n\t\tif (resolved.has(qualifiedName)) {\n\t\t\treturn\n\t\t}\n\n\t\t// Cycle detection\n\t\tif (visiting.has(qualifiedName)) {\n\t\t\tconst cycle = [...path, qualifiedName].join(\" → \")\n\t\t\tthrow new ValidationError(`Circular dependency detected: ${cycle}`)\n\t\t}\n\n\t\tvisiting.add(qualifiedName)\n\n\t\t// Look up the registry for this namespace\n\t\tconst regConfig = registries[componentNamespace]\n\t\tif (!regConfig) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t`Registry '${componentNamespace}' not configured. Add it to ocx.jsonc registries.`,\n\t\t\t)\n\t\t}\n\n\t\t// Fetch component from the specific registry\n\t\tlet component: ComponentManifest\n\t\ttry {\n\t\t\tcomponent = await fetchComponent(regConfig.url, componentName)\n\t\t} catch (_err) {\n\t\t\tthrow new OCXError(\n\t\t\t\t`Component '${componentName}' not found in registry '${componentNamespace}'.`,\n\t\t\t\t\"NOT_FOUND\",\n\t\t\t)\n\t\t}\n\n\t\t// Resolve dependencies first (depth-first)\n\t\tfor (const dep of component.dependencies) {\n\t\t\t// Parse dependency: bare name = same namespace, \"foo/bar\" = cross-namespace\n\t\t\tconst depRef = parseComponentRef(dep, componentNamespace)\n\t\t\tawait resolve(depRef.namespace, depRef.component, [...path, qualifiedName])\n\t\t}\n\n\t\t// Normalize the component (expand Cargo-style shorthands)\n\t\tconst normalizedComponent = normalizeComponentManifest(component)\n\n\t\t// Add to resolved (dependencies are already added)\n\t\tresolved.set(qualifiedName, {\n\t\t\t...normalizedComponent,\n\t\t\tnamespace: componentNamespace,\n\t\t\tregistryName: componentNamespace,\n\t\t\tbaseUrl: regConfig.url,\n\t\t\tqualifiedName,\n\t\t})\n\t\tvisiting.delete(qualifiedName)\n\n\t\t// Collect MCP servers and track agent bindings\n\t\tif (normalizedComponent.mcpServers) {\n\t\t\tconst serverNames: string[] = []\n\t\t\tfor (const [serverName, config] of Object.entries(normalizedComponent.mcpServers)) {\n\t\t\t\t// Use already-normalized MCP server from normalizeComponentManifest\n\t\t\t\tmcpServers[serverName] = config\n\t\t\t\tserverNames.push(serverName)\n\t\t\t}\n\n\t\t\t// Track agent-scoped MCP bindings (default scope is \"agent\")\n\t\t\tconst scope = component.mcpScope ?? \"agent\"\n\t\t\tif (component.type === \"ocx:agent\" && scope === \"agent\" && serverNames.length > 0) {\n\t\t\t\tagentMcpBindings.push({\n\t\t\t\t\tagentName: component.name,\n\t\t\t\t\tserverNames,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Collect npm dependencies\n\t\tif (component.npmDependencies) {\n\t\t\tfor (const dep of component.npmDependencies) {\n\t\t\t\tnpmDeps.add(dep)\n\t\t\t}\n\t\t}\n\t\tif (component.npmDevDependencies) {\n\t\t\tfor (const dep of component.npmDevDependencies) {\n\t\t\t\tnpmDevDeps.add(dep)\n\t\t\t}\n\t\t}\n\n\t\t// Collect disabled tools\n\t\tif (component.disabledTools) {\n\t\t\tfor (const tool of component.disabledTools) {\n\t\t\t\tdisabledTools.add(tool)\n\t\t\t}\n\t\t}\n\n\t\t// Collect opencode config: plugins, agent configs, instructions\n\t\tif (component.opencode) {\n\t\t\t// Collect plugins (npm packages for opencode.json plugin array)\n\t\t\tif (component.opencode.plugins) {\n\t\t\t\tfor (const plugin of component.opencode.plugins) {\n\t\t\t\t\tplugins.add(plugin)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Collect agent configurations\n\t\t\tif (component.opencode.agent) {\n\t\t\t\tfor (const [agentName, config] of Object.entries(component.opencode.agent)) {\n\t\t\t\t\t// Deep merge agent configs (later components override earlier ones)\n\t\t\t\t\tagentConfigs[agentName] = mergeDeep(agentConfigs[agentName] ?? {}, config)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Collect instructions\n\t\t\tif (component.opencode.instructions) {\n\t\t\t\tfor (const instruction of component.opencode.instructions) {\n\t\t\t\t\tinstructionsSet.add(instruction)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Collect tools config (converts to disabledTools for false values)\n\t\t\tif (component.opencode.tools) {\n\t\t\t\tfor (const [tool, enabled] of Object.entries(component.opencode.tools)) {\n\t\t\t\t\tif (enabled === false) {\n\t\t\t\t\t\tdisabledTools.add(tool)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Resolve all requested components\n\tfor (const name of componentNames) {\n\t\t// Parse qualified component name (must include namespace)\n\t\tconst ref = parseComponentRef(name)\n\t\tawait resolve(ref.namespace, ref.component)\n\t}\n\n\t// Convert to array (already in topological order due to depth-first)\n\tconst components = Array.from(resolved.values())\n\tconst installOrder = Array.from(resolved.keys())\n\n\treturn {\n\t\tcomponents,\n\t\tinstallOrder,\n\t\tmcpServers,\n\t\tagentMcpBindings,\n\t\tnpmDependencies: Array.from(npmDeps),\n\t\tnpmDevDependencies: Array.from(npmDevDeps),\n\t\tdisabledTools: Array.from(disabledTools),\n\t\tplugins: Array.from(plugins),\n\t\tagentConfigs,\n\t\tinstructions: Array.from(instructionsSet),\n\t}\n}\n\n/**\n * Check if installing components would create conflicts\n */\nexport function checkConflicts(existing: string[], toInstall: string[]): string[] {\n\tconst conflicts: string[] = []\n\tconst existingSet = new Set(existing)\n\n\tfor (const name of toInstall) {\n\t\tif (existingSet.has(name)) {\n\t\t\tconflicts.push(name)\n\t\t}\n\t}\n\n\treturn conflicts\n}\n",
38
31
  "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport function createScanner(text, ignoreTrivia = false) {\n const len = text.length;\n let pos = 0, value = '', tokenOffset = 0, token = 16 /* SyntaxKind.Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* ScanError.None */;\n function scanHexDigits(count, exact) {\n let digits = 0;\n let value = 0;\n while (digits < count || !exact) {\n let ch = text.charCodeAt(pos);\n if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) {\n value = value * 16 + ch - 48 /* CharacterCodes._0 */;\n }\n else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) {\n value = value * 16 + ch - 65 /* CharacterCodes.A */ + 10;\n }\n else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) {\n value = value * 16 + ch - 97 /* CharacterCodes.a */ + 10;\n }\n else {\n break;\n }\n pos++;\n digits++;\n }\n if (digits < count) {\n value = -1;\n }\n return value;\n }\n function setPosition(newPosition) {\n pos = newPosition;\n value = '';\n tokenOffset = 0;\n token = 16 /* SyntaxKind.Unknown */;\n scanError = 0 /* ScanError.None */;\n }\n function scanNumber() {\n let start = pos;\n if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) {\n pos++;\n }\n else {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) {\n pos++;\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n else {\n scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n return text.substring(start, pos);\n }\n }\n let end = pos;\n if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) {\n pos++;\n if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) {\n pos++;\n }\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n end = pos;\n }\n else {\n scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n }\n }\n return text.substring(start, end);\n }\n function scanString() {\n let result = '', start = pos;\n while (true) {\n if (pos >= len) {\n result += text.substring(start, pos);\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n const ch = text.charCodeAt(pos);\n if (ch === 34 /* CharacterCodes.doubleQuote */) {\n result += text.substring(start, pos);\n pos++;\n break;\n }\n if (ch === 92 /* CharacterCodes.backslash */) {\n result += text.substring(start, pos);\n pos++;\n if (pos >= len) {\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n const ch2 = text.charCodeAt(pos++);\n switch (ch2) {\n case 34 /* CharacterCodes.doubleQuote */:\n result += '\\\"';\n break;\n case 92 /* CharacterCodes.backslash */:\n result += '\\\\';\n break;\n case 47 /* CharacterCodes.slash */:\n result += '/';\n break;\n case 98 /* CharacterCodes.b */:\n result += '\\b';\n break;\n case 102 /* CharacterCodes.f */:\n result += '\\f';\n break;\n case 110 /* CharacterCodes.n */:\n result += '\\n';\n break;\n case 114 /* CharacterCodes.r */:\n result += '\\r';\n break;\n case 116 /* CharacterCodes.t */:\n result += '\\t';\n break;\n case 117 /* CharacterCodes.u */:\n const ch3 = scanHexDigits(4, true);\n if (ch3 >= 0) {\n result += String.fromCharCode(ch3);\n }\n else {\n scanError = 4 /* ScanError.InvalidUnicode */;\n }\n break;\n default:\n scanError = 5 /* ScanError.InvalidEscapeCharacter */;\n }\n start = pos;\n continue;\n }\n if (ch >= 0 && ch <= 0x1f) {\n if (isLineBreak(ch)) {\n result += text.substring(start, pos);\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n else {\n scanError = 6 /* ScanError.InvalidCharacter */;\n // mark as error but continue with string\n }\n }\n pos++;\n }\n return result;\n }\n function scanNext() {\n value = '';\n scanError = 0 /* ScanError.None */;\n tokenOffset = pos;\n lineStartOffset = lineNumber;\n prevTokenLineStartOffset = tokenLineStartOffset;\n if (pos >= len) {\n // at the end\n tokenOffset = len;\n return token = 17 /* SyntaxKind.EOF */;\n }\n let code = text.charCodeAt(pos);\n // trivia: whitespace\n if (isWhiteSpace(code)) {\n do {\n pos++;\n value += String.fromCharCode(code);\n code = text.charCodeAt(pos);\n } while (isWhiteSpace(code));\n return token = 15 /* SyntaxKind.Trivia */;\n }\n // trivia: newlines\n if (isLineBreak(code)) {\n pos++;\n value += String.fromCharCode(code);\n if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n pos++;\n value += '\\n';\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n return token = 14 /* SyntaxKind.LineBreakTrivia */;\n }\n switch (code) {\n // tokens: []{}:,\n case 123 /* CharacterCodes.openBrace */:\n pos++;\n return token = 1 /* SyntaxKind.OpenBraceToken */;\n case 125 /* CharacterCodes.closeBrace */:\n pos++;\n return token = 2 /* SyntaxKind.CloseBraceToken */;\n case 91 /* CharacterCodes.openBracket */:\n pos++;\n return token = 3 /* SyntaxKind.OpenBracketToken */;\n case 93 /* CharacterCodes.closeBracket */:\n pos++;\n return token = 4 /* SyntaxKind.CloseBracketToken */;\n case 58 /* CharacterCodes.colon */:\n pos++;\n return token = 6 /* SyntaxKind.ColonToken */;\n case 44 /* CharacterCodes.comma */:\n pos++;\n return token = 5 /* SyntaxKind.CommaToken */;\n // strings\n case 34 /* CharacterCodes.doubleQuote */:\n pos++;\n value = scanString();\n return token = 10 /* SyntaxKind.StringLiteral */;\n // comments\n case 47 /* CharacterCodes.slash */:\n const start = pos - 1;\n // Single-line comment\n if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n pos += 2;\n while (pos < len) {\n if (isLineBreak(text.charCodeAt(pos))) {\n break;\n }\n pos++;\n }\n value = text.substring(start, pos);\n return token = 12 /* SyntaxKind.LineCommentTrivia */;\n }\n // Multi-line comment\n if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) {\n pos += 2;\n const safeLength = len - 1; // For lookahead.\n let commentClosed = false;\n while (pos < safeLength) {\n const ch = text.charCodeAt(pos);\n if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n pos += 2;\n commentClosed = true;\n break;\n }\n pos++;\n if (isLineBreak(ch)) {\n if (ch === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n pos++;\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n }\n }\n if (!commentClosed) {\n pos++;\n scanError = 1 /* ScanError.UnexpectedEndOfComment */;\n }\n value = text.substring(start, pos);\n return token = 13 /* SyntaxKind.BlockCommentTrivia */;\n }\n // just a single slash\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* SyntaxKind.Unknown */;\n // numbers\n case 45 /* CharacterCodes.minus */:\n value += String.fromCharCode(code);\n pos++;\n if (pos === len || !isDigit(text.charCodeAt(pos))) {\n return token = 16 /* SyntaxKind.Unknown */;\n }\n // found a minus, followed by a number so\n // we fall through to proceed with scanning\n // numbers\n case 48 /* CharacterCodes._0 */:\n case 49 /* CharacterCodes._1 */:\n case 50 /* CharacterCodes._2 */:\n case 51 /* CharacterCodes._3 */:\n case 52 /* CharacterCodes._4 */:\n case 53 /* CharacterCodes._5 */:\n case 54 /* CharacterCodes._6 */:\n case 55 /* CharacterCodes._7 */:\n case 56 /* CharacterCodes._8 */:\n case 57 /* CharacterCodes._9 */:\n value += scanNumber();\n return token = 11 /* SyntaxKind.NumericLiteral */;\n // literals and unknown symbols\n default:\n // is a literal? Read the full word.\n while (pos < len && isUnknownContentCharacter(code)) {\n pos++;\n code = text.charCodeAt(pos);\n }\n if (tokenOffset !== pos) {\n value = text.substring(tokenOffset, pos);\n // keywords: true, false, null\n switch (value) {\n case 'true': return token = 8 /* SyntaxKind.TrueKeyword */;\n case 'false': return token = 9 /* SyntaxKind.FalseKeyword */;\n case 'null': return token = 7 /* SyntaxKind.NullKeyword */;\n }\n return token = 16 /* SyntaxKind.Unknown */;\n }\n // some\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* SyntaxKind.Unknown */;\n }\n }\n function isUnknownContentCharacter(code) {\n if (isWhiteSpace(code) || isLineBreak(code)) {\n return false;\n }\n switch (code) {\n case 125 /* CharacterCodes.closeBrace */:\n case 93 /* CharacterCodes.closeBracket */:\n case 123 /* CharacterCodes.openBrace */:\n case 91 /* CharacterCodes.openBracket */:\n case 34 /* CharacterCodes.doubleQuote */:\n case 58 /* CharacterCodes.colon */:\n case 44 /* CharacterCodes.comma */:\n case 47 /* CharacterCodes.slash */:\n return false;\n }\n return true;\n }\n function scanNextNonTrivia() {\n let result;\n do {\n result = scanNext();\n } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */);\n return result;\n }\n return {\n setPosition: setPosition,\n getPosition: () => pos,\n scan: ignoreTrivia ? scanNextNonTrivia : scanNext,\n getToken: () => token,\n getTokenValue: () => value,\n getTokenOffset: () => tokenOffset,\n getTokenLength: () => pos - tokenOffset,\n getTokenStartLine: () => lineStartOffset,\n getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset,\n getTokenError: () => scanError,\n };\n}\nfunction isWhiteSpace(ch) {\n return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */;\n}\nfunction isLineBreak(ch) {\n return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */;\n}\nfunction isDigit(ch) {\n return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */;\n}\nvar CharacterCodes;\n(function (CharacterCodes) {\n CharacterCodes[CharacterCodes[\"lineFeed\"] = 10] = \"lineFeed\";\n CharacterCodes[CharacterCodes[\"carriageReturn\"] = 13] = \"carriageReturn\";\n CharacterCodes[CharacterCodes[\"space\"] = 32] = \"space\";\n CharacterCodes[CharacterCodes[\"_0\"] = 48] = \"_0\";\n CharacterCodes[CharacterCodes[\"_1\"] = 49] = \"_1\";\n CharacterCodes[CharacterCodes[\"_2\"] = 50] = \"_2\";\n CharacterCodes[CharacterCodes[\"_3\"] = 51] = \"_3\";\n CharacterCodes[CharacterCodes[\"_4\"] = 52] = \"_4\";\n CharacterCodes[CharacterCodes[\"_5\"] = 53] = \"_5\";\n CharacterCodes[CharacterCodes[\"_6\"] = 54] = \"_6\";\n CharacterCodes[CharacterCodes[\"_7\"] = 55] = \"_7\";\n CharacterCodes[CharacterCodes[\"_8\"] = 56] = \"_8\";\n CharacterCodes[CharacterCodes[\"_9\"] = 57] = \"_9\";\n CharacterCodes[CharacterCodes[\"a\"] = 97] = \"a\";\n CharacterCodes[CharacterCodes[\"b\"] = 98] = \"b\";\n CharacterCodes[CharacterCodes[\"c\"] = 99] = \"c\";\n CharacterCodes[CharacterCodes[\"d\"] = 100] = \"d\";\n CharacterCodes[CharacterCodes[\"e\"] = 101] = \"e\";\n CharacterCodes[CharacterCodes[\"f\"] = 102] = \"f\";\n CharacterCodes[CharacterCodes[\"g\"] = 103] = \"g\";\n CharacterCodes[CharacterCodes[\"h\"] = 104] = \"h\";\n CharacterCodes[CharacterCodes[\"i\"] = 105] = \"i\";\n CharacterCodes[CharacterCodes[\"j\"] = 106] = \"j\";\n CharacterCodes[CharacterCodes[\"k\"] = 107] = \"k\";\n CharacterCodes[CharacterCodes[\"l\"] = 108] = \"l\";\n CharacterCodes[CharacterCodes[\"m\"] = 109] = \"m\";\n CharacterCodes[CharacterCodes[\"n\"] = 110] = \"n\";\n CharacterCodes[CharacterCodes[\"o\"] = 111] = \"o\";\n CharacterCodes[CharacterCodes[\"p\"] = 112] = \"p\";\n CharacterCodes[CharacterCodes[\"q\"] = 113] = \"q\";\n CharacterCodes[CharacterCodes[\"r\"] = 114] = \"r\";\n CharacterCodes[CharacterCodes[\"s\"] = 115] = \"s\";\n CharacterCodes[CharacterCodes[\"t\"] = 116] = \"t\";\n CharacterCodes[CharacterCodes[\"u\"] = 117] = \"u\";\n CharacterCodes[CharacterCodes[\"v\"] = 118] = \"v\";\n CharacterCodes[CharacterCodes[\"w\"] = 119] = \"w\";\n CharacterCodes[CharacterCodes[\"x\"] = 120] = \"x\";\n CharacterCodes[CharacterCodes[\"y\"] = 121] = \"y\";\n CharacterCodes[CharacterCodes[\"z\"] = 122] = \"z\";\n CharacterCodes[CharacterCodes[\"A\"] = 65] = \"A\";\n CharacterCodes[CharacterCodes[\"B\"] = 66] = \"B\";\n CharacterCodes[CharacterCodes[\"C\"] = 67] = \"C\";\n CharacterCodes[CharacterCodes[\"D\"] = 68] = \"D\";\n CharacterCodes[CharacterCodes[\"E\"] = 69] = \"E\";\n CharacterCodes[CharacterCodes[\"F\"] = 70] = \"F\";\n CharacterCodes[CharacterCodes[\"G\"] = 71] = \"G\";\n CharacterCodes[CharacterCodes[\"H\"] = 72] = \"H\";\n CharacterCodes[CharacterCodes[\"I\"] = 73] = \"I\";\n CharacterCodes[CharacterCodes[\"J\"] = 74] = \"J\";\n CharacterCodes[CharacterCodes[\"K\"] = 75] = \"K\";\n CharacterCodes[CharacterCodes[\"L\"] = 76] = \"L\";\n CharacterCodes[CharacterCodes[\"M\"] = 77] = \"M\";\n CharacterCodes[CharacterCodes[\"N\"] = 78] = \"N\";\n CharacterCodes[CharacterCodes[\"O\"] = 79] = \"O\";\n CharacterCodes[CharacterCodes[\"P\"] = 80] = \"P\";\n CharacterCodes[CharacterCodes[\"Q\"] = 81] = \"Q\";\n CharacterCodes[CharacterCodes[\"R\"] = 82] = \"R\";\n CharacterCodes[CharacterCodes[\"S\"] = 83] = \"S\";\n CharacterCodes[CharacterCodes[\"T\"] = 84] = \"T\";\n CharacterCodes[CharacterCodes[\"U\"] = 85] = \"U\";\n CharacterCodes[CharacterCodes[\"V\"] = 86] = \"V\";\n CharacterCodes[CharacterCodes[\"W\"] = 87] = \"W\";\n CharacterCodes[CharacterCodes[\"X\"] = 88] = \"X\";\n CharacterCodes[CharacterCodes[\"Y\"] = 89] = \"Y\";\n CharacterCodes[CharacterCodes[\"Z\"] = 90] = \"Z\";\n CharacterCodes[CharacterCodes[\"asterisk\"] = 42] = \"asterisk\";\n CharacterCodes[CharacterCodes[\"backslash\"] = 92] = \"backslash\";\n CharacterCodes[CharacterCodes[\"closeBrace\"] = 125] = \"closeBrace\";\n CharacterCodes[CharacterCodes[\"closeBracket\"] = 93] = \"closeBracket\";\n CharacterCodes[CharacterCodes[\"colon\"] = 58] = \"colon\";\n CharacterCodes[CharacterCodes[\"comma\"] = 44] = \"comma\";\n CharacterCodes[CharacterCodes[\"dot\"] = 46] = \"dot\";\n CharacterCodes[CharacterCodes[\"doubleQuote\"] = 34] = \"doubleQuote\";\n CharacterCodes[CharacterCodes[\"minus\"] = 45] = \"minus\";\n CharacterCodes[CharacterCodes[\"openBrace\"] = 123] = \"openBrace\";\n CharacterCodes[CharacterCodes[\"openBracket\"] = 91] = \"openBracket\";\n CharacterCodes[CharacterCodes[\"plus\"] = 43] = \"plus\";\n CharacterCodes[CharacterCodes[\"slash\"] = 47] = \"slash\";\n CharacterCodes[CharacterCodes[\"formFeed\"] = 12] = \"formFeed\";\n CharacterCodes[CharacterCodes[\"tab\"] = 9] = \"tab\";\n})(CharacterCodes || (CharacterCodes = {}));\n",
39
32
  "export const cachedSpaces = new Array(20).fill(0).map((_, index) => {\n return ' '.repeat(index);\n});\nconst maxCachedValues = 200;\nexport const cachedBreakLinesWithSpaces = {\n ' ': {\n '\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\n' + ' '.repeat(index);\n }),\n '\\r': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r' + ' '.repeat(index);\n }),\n '\\r\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r\\n' + ' '.repeat(index);\n }),\n },\n '\\t': {\n '\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\n' + '\\t'.repeat(index);\n }),\n '\\r': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r' + '\\t'.repeat(index);\n }),\n '\\r\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r\\n' + '\\t'.repeat(index);\n }),\n }\n};\nexport const supportedEols = ['\\n', '\\r', '\\r\\n'];\n",
40
33
  "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { createScanner } from './scanner';\nimport { cachedSpaces, cachedBreakLinesWithSpaces, supportedEols } from './string-intern';\nexport function format(documentText, range, options) {\n let initialIndentLevel;\n let formatText;\n let formatTextStart;\n let rangeStart;\n let rangeEnd;\n if (range) {\n rangeStart = range.offset;\n rangeEnd = rangeStart + range.length;\n formatTextStart = rangeStart;\n while (formatTextStart > 0 && !isEOL(documentText, formatTextStart - 1)) {\n formatTextStart--;\n }\n let endOffset = rangeEnd;\n while (endOffset < documentText.length && !isEOL(documentText, endOffset)) {\n endOffset++;\n }\n formatText = documentText.substring(formatTextStart, endOffset);\n initialIndentLevel = computeIndentLevel(formatText, options);\n }\n else {\n formatText = documentText;\n initialIndentLevel = 0;\n formatTextStart = 0;\n rangeStart = 0;\n rangeEnd = documentText.length;\n }\n const eol = getEOL(options, documentText);\n const eolFastPathSupported = supportedEols.includes(eol);\n let numberLineBreaks = 0;\n let indentLevel = 0;\n let indentValue;\n if (options.insertSpaces) {\n indentValue = cachedSpaces[options.tabSize || 4] ?? repeat(cachedSpaces[1], options.tabSize || 4);\n }\n else {\n indentValue = '\\t';\n }\n const indentType = indentValue === '\\t' ? '\\t' : ' ';\n let scanner = createScanner(formatText, false);\n let hasError = false;\n function newLinesAndIndent() {\n if (numberLineBreaks > 1) {\n return repeat(eol, numberLineBreaks) + repeat(indentValue, initialIndentLevel + indentLevel);\n }\n const amountOfSpaces = indentValue.length * (initialIndentLevel + indentLevel);\n if (!eolFastPathSupported || amountOfSpaces > cachedBreakLinesWithSpaces[indentType][eol].length) {\n return eol + repeat(indentValue, initialIndentLevel + indentLevel);\n }\n if (amountOfSpaces <= 0) {\n return eol;\n }\n return cachedBreakLinesWithSpaces[indentType][eol][amountOfSpaces];\n }\n function scanNext() {\n let token = scanner.scan();\n numberLineBreaks = 0;\n while (token === 15 /* SyntaxKind.Trivia */ || token === 14 /* SyntaxKind.LineBreakTrivia */) {\n if (token === 14 /* SyntaxKind.LineBreakTrivia */ && options.keepLines) {\n numberLineBreaks += 1;\n }\n else if (token === 14 /* SyntaxKind.LineBreakTrivia */) {\n numberLineBreaks = 1;\n }\n token = scanner.scan();\n }\n hasError = token === 16 /* SyntaxKind.Unknown */ || scanner.getTokenError() !== 0 /* ScanError.None */;\n return token;\n }\n const editOperations = [];\n function addEdit(text, startOffset, endOffset) {\n if (!hasError && (!range || (startOffset < rangeEnd && endOffset > rangeStart)) && documentText.substring(startOffset, endOffset) !== text) {\n editOperations.push({ offset: startOffset, length: endOffset - startOffset, content: text });\n }\n }\n let firstToken = scanNext();\n if (options.keepLines && numberLineBreaks > 0) {\n addEdit(repeat(eol, numberLineBreaks), 0, 0);\n }\n if (firstToken !== 17 /* SyntaxKind.EOF */) {\n let firstTokenStart = scanner.getTokenOffset() + formatTextStart;\n let initialIndent = (indentValue.length * initialIndentLevel < 20) && options.insertSpaces\n ? cachedSpaces[indentValue.length * initialIndentLevel]\n : repeat(indentValue, initialIndentLevel);\n addEdit(initialIndent, formatTextStart, firstTokenStart);\n }\n while (firstToken !== 17 /* SyntaxKind.EOF */) {\n let firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n let secondToken = scanNext();\n let replaceContent = '';\n let needsLineBreak = false;\n while (numberLineBreaks === 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {\n let commentTokenStart = scanner.getTokenOffset() + formatTextStart;\n addEdit(cachedSpaces[1], firstTokenEnd, commentTokenStart);\n firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n needsLineBreak = secondToken === 12 /* SyntaxKind.LineCommentTrivia */;\n replaceContent = needsLineBreak ? newLinesAndIndent() : '';\n secondToken = scanNext();\n }\n if (secondToken === 2 /* SyntaxKind.CloseBraceToken */) {\n if (firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {\n indentLevel--;\n }\n ;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {\n replaceContent = newLinesAndIndent();\n }\n else if (options.keepLines) {\n replaceContent = cachedSpaces[1];\n }\n }\n else if (secondToken === 4 /* SyntaxKind.CloseBracketToken */) {\n if (firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {\n indentLevel--;\n }\n ;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {\n replaceContent = newLinesAndIndent();\n }\n else if (options.keepLines) {\n replaceContent = cachedSpaces[1];\n }\n }\n else {\n switch (firstToken) {\n case 3 /* SyntaxKind.OpenBracketToken */:\n case 1 /* SyntaxKind.OpenBraceToken */:\n indentLevel++;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 5 /* SyntaxKind.CommaToken */:\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 12 /* SyntaxKind.LineCommentTrivia */:\n replaceContent = newLinesAndIndent();\n break;\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n if (numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (!needsLineBreak) {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 6 /* SyntaxKind.ColonToken */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (!needsLineBreak) {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 10 /* SyntaxKind.StringLiteral */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (secondToken === 6 /* SyntaxKind.ColonToken */ && !needsLineBreak) {\n replaceContent = '';\n }\n break;\n case 7 /* SyntaxKind.NullKeyword */:\n case 8 /* SyntaxKind.TrueKeyword */:\n case 9 /* SyntaxKind.FalseKeyword */:\n case 11 /* SyntaxKind.NumericLiteral */:\n case 2 /* SyntaxKind.CloseBraceToken */:\n case 4 /* SyntaxKind.CloseBracketToken */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else {\n if ((secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */) && !needsLineBreak) {\n replaceContent = cachedSpaces[1];\n }\n else if (secondToken !== 5 /* SyntaxKind.CommaToken */ && secondToken !== 17 /* SyntaxKind.EOF */) {\n hasError = true;\n }\n }\n break;\n case 16 /* SyntaxKind.Unknown */:\n hasError = true;\n break;\n }\n if (numberLineBreaks > 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {\n replaceContent = newLinesAndIndent();\n }\n }\n if (secondToken === 17 /* SyntaxKind.EOF */) {\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = options.insertFinalNewline ? eol : '';\n }\n }\n const secondTokenStart = scanner.getTokenOffset() + formatTextStart;\n addEdit(replaceContent, firstTokenEnd, secondTokenStart);\n firstToken = secondToken;\n }\n return editOperations;\n}\nfunction repeat(s, count) {\n let result = '';\n for (let i = 0; i < count; i++) {\n result += s;\n }\n return result;\n}\nfunction computeIndentLevel(content, options) {\n let i = 0;\n let nChars = 0;\n const tabSize = options.tabSize || 4;\n while (i < content.length) {\n let ch = content.charAt(i);\n if (ch === cachedSpaces[1]) {\n nChars++;\n }\n else if (ch === '\\t') {\n nChars += tabSize;\n }\n else {\n break;\n }\n i++;\n }\n return Math.floor(nChars / tabSize);\n}\nfunction getEOL(options, text) {\n for (let i = 0; i < text.length; i++) {\n const ch = text.charAt(i);\n if (ch === '\\r') {\n if (i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n return '\\r\\n';\n }\n return '\\r';\n }\n else if (ch === '\\n') {\n return '\\n';\n }\n }\n return (options && options.eol) || '\\n';\n}\nexport function isEOL(text, offset) {\n return '\\r\\n'.indexOf(text.charAt(offset)) !== -1;\n}\n",
41
34
  "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { createScanner } from './scanner';\nvar ParseOptions;\n(function (ParseOptions) {\n ParseOptions.DEFAULT = {\n allowTrailingComma: false\n };\n})(ParseOptions || (ParseOptions = {}));\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport function getLocation(text, position) {\n const segments = []; // strings or numbers\n const earlyReturnException = new Object();\n let previousNode = undefined;\n const previousNodeInst = {\n value: {},\n offset: 0,\n length: 0,\n type: 'object',\n parent: undefined\n };\n let isAtPropertyKey = false;\n function setPreviousNode(value, offset, length, type) {\n previousNodeInst.value = value;\n previousNodeInst.offset = offset;\n previousNodeInst.length = length;\n previousNodeInst.type = type;\n previousNodeInst.colonOffset = undefined;\n previousNode = previousNodeInst;\n }\n try {\n visit(text, {\n onObjectBegin: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n isAtPropertyKey = position > offset;\n segments.push(''); // push a placeholder (will be replaced)\n },\n onObjectProperty: (name, offset, length) => {\n if (position < offset) {\n throw earlyReturnException;\n }\n setPreviousNode(name, offset, length, 'property');\n segments[segments.length - 1] = name;\n if (position <= offset + length) {\n throw earlyReturnException;\n }\n },\n onObjectEnd: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.pop();\n },\n onArrayBegin: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.push(0);\n },\n onArrayEnd: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.pop();\n },\n onLiteralValue: (value, offset, length) => {\n if (position < offset) {\n throw earlyReturnException;\n }\n setPreviousNode(value, offset, length, getNodeType(value));\n if (position <= offset + length) {\n throw earlyReturnException;\n }\n },\n onSeparator: (sep, offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n if (sep === ':' && previousNode && previousNode.type === 'property') {\n previousNode.colonOffset = offset;\n isAtPropertyKey = false;\n previousNode = undefined;\n }\n else if (sep === ',') {\n const last = segments[segments.length - 1];\n if (typeof last === 'number') {\n segments[segments.length - 1] = last + 1;\n }\n else {\n isAtPropertyKey = true;\n segments[segments.length - 1] = '';\n }\n previousNode = undefined;\n }\n }\n });\n }\n catch (e) {\n if (e !== earlyReturnException) {\n throw e;\n }\n }\n return {\n path: segments,\n previousNode,\n isAtPropertyKey,\n matches: (pattern) => {\n let k = 0;\n for (let i = 0; k < pattern.length && i < segments.length; i++) {\n if (pattern[k] === segments[i] || pattern[k] === '*') {\n k++;\n }\n else if (pattern[k] !== '**') {\n return false;\n }\n }\n return k === pattern.length;\n }\n };\n}\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore always check the errors list to find out if the input was valid.\n */\nexport function parse(text, errors = [], options = ParseOptions.DEFAULT) {\n let currentProperty = null;\n let currentParent = [];\n const previousParents = [];\n function onValue(value) {\n if (Array.isArray(currentParent)) {\n currentParent.push(value);\n }\n else if (currentProperty !== null) {\n currentParent[currentProperty] = value;\n }\n }\n const visitor = {\n onObjectBegin: () => {\n const object = {};\n onValue(object);\n previousParents.push(currentParent);\n currentParent = object;\n currentProperty = null;\n },\n onObjectProperty: (name) => {\n currentProperty = name;\n },\n onObjectEnd: () => {\n currentParent = previousParents.pop();\n },\n onArrayBegin: () => {\n const array = [];\n onValue(array);\n previousParents.push(currentParent);\n currentParent = array;\n currentProperty = null;\n },\n onArrayEnd: () => {\n currentParent = previousParents.pop();\n },\n onLiteralValue: onValue,\n onError: (error, offset, length) => {\n errors.push({ error, offset, length });\n }\n };\n visit(text, visitor, options);\n return currentParent[0];\n}\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport function parseTree(text, errors = [], options = ParseOptions.DEFAULT) {\n let currentParent = { type: 'array', offset: -1, length: -1, children: [], parent: undefined }; // artificial root\n function ensurePropertyComplete(endOffset) {\n if (currentParent.type === 'property') {\n currentParent.length = endOffset - currentParent.offset;\n currentParent = currentParent.parent;\n }\n }\n function onValue(valueNode) {\n currentParent.children.push(valueNode);\n return valueNode;\n }\n const visitor = {\n onObjectBegin: (offset) => {\n currentParent = onValue({ type: 'object', offset, length: -1, parent: currentParent, children: [] });\n },\n onObjectProperty: (name, offset, length) => {\n currentParent = onValue({ type: 'property', offset, length: -1, parent: currentParent, children: [] });\n currentParent.children.push({ type: 'string', value: name, offset, length, parent: currentParent });\n },\n onObjectEnd: (offset, length) => {\n ensurePropertyComplete(offset + length); // in case of a missing value for a property: make sure property is complete\n currentParent.length = offset + length - currentParent.offset;\n currentParent = currentParent.parent;\n ensurePropertyComplete(offset + length);\n },\n onArrayBegin: (offset, length) => {\n currentParent = onValue({ type: 'array', offset, length: -1, parent: currentParent, children: [] });\n },\n onArrayEnd: (offset, length) => {\n currentParent.length = offset + length - currentParent.offset;\n currentParent = currentParent.parent;\n ensurePropertyComplete(offset + length);\n },\n onLiteralValue: (value, offset, length) => {\n onValue({ type: getNodeType(value), offset, length, parent: currentParent, value });\n ensurePropertyComplete(offset + length);\n },\n onSeparator: (sep, offset, length) => {\n if (currentParent.type === 'property') {\n if (sep === ':') {\n currentParent.colonOffset = offset;\n }\n else if (sep === ',') {\n ensurePropertyComplete(offset);\n }\n }\n },\n onError: (error, offset, length) => {\n errors.push({ error, offset, length });\n }\n };\n visit(text, visitor, options);\n const result = currentParent.children[0];\n if (result) {\n delete result.parent;\n }\n return result;\n}\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport function findNodeAtLocation(root, path) {\n if (!root) {\n return undefined;\n }\n let node = root;\n for (let segment of path) {\n if (typeof segment === 'string') {\n if (node.type !== 'object' || !Array.isArray(node.children)) {\n return undefined;\n }\n let found = false;\n for (const propertyNode of node.children) {\n if (Array.isArray(propertyNode.children) && propertyNode.children[0].value === segment && propertyNode.children.length === 2) {\n node = propertyNode.children[1];\n found = true;\n break;\n }\n }\n if (!found) {\n return undefined;\n }\n }\n else {\n const index = segment;\n if (node.type !== 'array' || index < 0 || !Array.isArray(node.children) || index >= node.children.length) {\n return undefined;\n }\n node = node.children[index];\n }\n }\n return node;\n}\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport function getNodePath(node) {\n if (!node.parent || !node.parent.children) {\n return [];\n }\n const path = getNodePath(node.parent);\n if (node.parent.type === 'property') {\n const key = node.parent.children[0].value;\n path.push(key);\n }\n else if (node.parent.type === 'array') {\n const index = node.parent.children.indexOf(node);\n if (index !== -1) {\n path.push(index);\n }\n }\n return path;\n}\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport function getNodeValue(node) {\n switch (node.type) {\n case 'array':\n return node.children.map(getNodeValue);\n case 'object':\n const obj = Object.create(null);\n for (let prop of node.children) {\n const valueNode = prop.children[1];\n if (valueNode) {\n obj[prop.children[0].value] = getNodeValue(valueNode);\n }\n }\n return obj;\n case 'null':\n case 'string':\n case 'number':\n case 'boolean':\n return node.value;\n default:\n return undefined;\n }\n}\nexport function contains(node, offset, includeRightBound = false) {\n return (offset >= node.offset && offset < (node.offset + node.length)) || includeRightBound && (offset === (node.offset + node.length));\n}\n/**\n * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport function findNodeAtOffset(node, offset, includeRightBound = false) {\n if (contains(node, offset, includeRightBound)) {\n const children = node.children;\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length && children[i].offset <= offset; i++) {\n const item = findNodeAtOffset(children[i], offset, includeRightBound);\n if (item) {\n return item;\n }\n }\n }\n return node;\n }\n return undefined;\n}\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport function visit(text, visitor, options = ParseOptions.DEFAULT) {\n const _scanner = createScanner(text, false);\n // Important: Only pass copies of this to visitor functions to prevent accidental modification, and\n // to not affect visitor functions which stored a reference to a previous JSONPath\n const _jsonPath = [];\n // Depth of onXXXBegin() callbacks suppressed. onXXXEnd() decrements this if it isn't 0 already.\n // Callbacks are only called when this value is 0.\n let suppressedCallbacks = 0;\n function toNoArgVisit(visitFunction) {\n return visitFunction ? () => suppressedCallbacks === 0 && visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n }\n function toOneArgVisit(visitFunction) {\n return visitFunction ? (arg) => suppressedCallbacks === 0 && visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n }\n function toOneArgVisitWithPath(visitFunction) {\n return visitFunction ? (arg) => suppressedCallbacks === 0 && visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;\n }\n function toBeginVisit(visitFunction) {\n return visitFunction ?\n () => {\n if (suppressedCallbacks > 0) {\n suppressedCallbacks++;\n }\n else {\n let cbReturn = visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice());\n if (cbReturn === false) {\n suppressedCallbacks = 1;\n }\n }\n }\n : () => true;\n }\n function toEndVisit(visitFunction) {\n return visitFunction ?\n () => {\n if (suppressedCallbacks > 0) {\n suppressedCallbacks--;\n }\n if (suppressedCallbacks === 0) {\n visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter());\n }\n }\n : () => true;\n }\n const onObjectBegin = toBeginVisit(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toEndVisit(visitor.onObjectEnd), onArrayBegin = toBeginVisit(visitor.onArrayBegin), onArrayEnd = toEndVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);\n const disallowComments = options && options.disallowComments;\n const allowTrailingComma = options && options.allowTrailingComma;\n function scanNext() {\n while (true) {\n const token = _scanner.scan();\n switch (_scanner.getTokenError()) {\n case 4 /* ScanError.InvalidUnicode */:\n handleError(14 /* ParseErrorCode.InvalidUnicode */);\n break;\n case 5 /* ScanError.InvalidEscapeCharacter */:\n handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);\n break;\n case 3 /* ScanError.UnexpectedEndOfNumber */:\n handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);\n break;\n case 1 /* ScanError.UnexpectedEndOfComment */:\n if (!disallowComments) {\n handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);\n }\n break;\n case 2 /* ScanError.UnexpectedEndOfString */:\n handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);\n break;\n case 6 /* ScanError.InvalidCharacter */:\n handleError(16 /* ParseErrorCode.InvalidCharacter */);\n break;\n }\n switch (token) {\n case 12 /* SyntaxKind.LineCommentTrivia */:\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n if (disallowComments) {\n handleError(10 /* ParseErrorCode.InvalidCommentToken */);\n }\n else {\n onComment();\n }\n break;\n case 16 /* SyntaxKind.Unknown */:\n handleError(1 /* ParseErrorCode.InvalidSymbol */);\n break;\n case 15 /* SyntaxKind.Trivia */:\n case 14 /* SyntaxKind.LineBreakTrivia */:\n break;\n default:\n return token;\n }\n }\n }\n function handleError(error, skipUntilAfter = [], skipUntil = []) {\n onError(error);\n if (skipUntilAfter.length + skipUntil.length > 0) {\n let token = _scanner.getToken();\n while (token !== 17 /* SyntaxKind.EOF */) {\n if (skipUntilAfter.indexOf(token) !== -1) {\n scanNext();\n break;\n }\n else if (skipUntil.indexOf(token) !== -1) {\n break;\n }\n token = scanNext();\n }\n }\n }\n function parseString(isValue) {\n const value = _scanner.getTokenValue();\n if (isValue) {\n onLiteralValue(value);\n }\n else {\n onObjectProperty(value);\n // add property name afterwards\n _jsonPath.push(value);\n }\n scanNext();\n return true;\n }\n function parseLiteral() {\n switch (_scanner.getToken()) {\n case 11 /* SyntaxKind.NumericLiteral */:\n const tokenValue = _scanner.getTokenValue();\n let value = Number(tokenValue);\n if (isNaN(value)) {\n handleError(2 /* ParseErrorCode.InvalidNumberFormat */);\n value = 0;\n }\n onLiteralValue(value);\n break;\n case 7 /* SyntaxKind.NullKeyword */:\n onLiteralValue(null);\n break;\n case 8 /* SyntaxKind.TrueKeyword */:\n onLiteralValue(true);\n break;\n case 9 /* SyntaxKind.FalseKeyword */:\n onLiteralValue(false);\n break;\n default:\n return false;\n }\n scanNext();\n return true;\n }\n function parseProperty() {\n if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {\n handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n return false;\n }\n parseString(false);\n if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {\n onSeparator(':');\n scanNext(); // consume colon\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n }\n else {\n handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n _jsonPath.pop(); // remove processed property name\n return true;\n }\n function parseObject() {\n onObjectBegin();\n scanNext(); // consume open brace\n let needsComma = false;\n while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n }\n if (!parseProperty()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n needsComma = true;\n }\n onObjectEnd();\n if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {\n handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);\n }\n else {\n scanNext(); // consume close brace\n }\n return true;\n }\n function parseArray() {\n onArrayBegin();\n scanNext(); // consume open bracket\n let isFirstElement = true;\n let needsComma = false;\n while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n }\n if (isFirstElement) {\n _jsonPath.push(0);\n isFirstElement = false;\n }\n else {\n _jsonPath[_jsonPath.length - 1]++;\n }\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n needsComma = true;\n }\n onArrayEnd();\n if (!isFirstElement) {\n _jsonPath.pop(); // remove array index\n }\n if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {\n handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);\n }\n else {\n scanNext(); // consume close bracket\n }\n return true;\n }\n function parseValue() {\n switch (_scanner.getToken()) {\n case 3 /* SyntaxKind.OpenBracketToken */:\n return parseArray();\n case 1 /* SyntaxKind.OpenBraceToken */:\n return parseObject();\n case 10 /* SyntaxKind.StringLiteral */:\n return parseString(true);\n default:\n return parseLiteral();\n }\n }\n scanNext();\n if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {\n if (options.allowEmptyContent) {\n return true;\n }\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n return false;\n }\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n return false;\n }\n if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);\n }\n return true;\n}\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport function stripComments(text, replaceCh) {\n let _scanner = createScanner(text), parts = [], kind, offset = 0, pos;\n do {\n pos = _scanner.getPosition();\n kind = _scanner.scan();\n switch (kind) {\n case 12 /* SyntaxKind.LineCommentTrivia */:\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n case 17 /* SyntaxKind.EOF */:\n if (offset !== pos) {\n parts.push(text.substring(offset, pos));\n }\n if (replaceCh !== undefined) {\n parts.push(_scanner.getTokenValue().replace(/[^\\r\\n]/g, replaceCh));\n }\n offset = _scanner.getPosition();\n break;\n }\n } while (kind !== 17 /* SyntaxKind.EOF */);\n return parts.join('');\n}\nexport function getNodeType(value) {\n switch (typeof value) {\n case 'boolean': return 'boolean';\n case 'number': return 'number';\n case 'string': return 'string';\n case 'object': {\n if (!value) {\n return 'null';\n }\n else if (Array.isArray(value)) {\n return 'array';\n }\n return 'object';\n }\n default: return 'null';\n }\n}\n",
42
35
  "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { format, isEOL } from './format';\nimport { parseTree, findNodeAtLocation } from './parser';\nexport function removeProperty(text, path, options) {\n return setProperty(text, path, void 0, options);\n}\nexport function setProperty(text, originalPath, value, options) {\n const path = originalPath.slice();\n const errors = [];\n const root = parseTree(text, errors);\n let parent = void 0;\n let lastSegment = void 0;\n while (path.length > 0) {\n lastSegment = path.pop();\n parent = findNodeAtLocation(root, path);\n if (parent === void 0 && value !== void 0) {\n if (typeof lastSegment === 'string') {\n value = { [lastSegment]: value };\n }\n else {\n value = [value];\n }\n }\n else {\n break;\n }\n }\n if (!parent) {\n // empty document\n if (value === void 0) { // delete\n throw new Error('Can not delete in empty document');\n }\n return withFormatting(text, { offset: root ? root.offset : 0, length: root ? root.length : 0, content: JSON.stringify(value) }, options);\n }\n else if (parent.type === 'object' && typeof lastSegment === 'string' && Array.isArray(parent.children)) {\n const existing = findNodeAtLocation(parent, [lastSegment]);\n if (existing !== void 0) {\n if (value === void 0) { // delete\n if (!existing.parent) {\n throw new Error('Malformed AST');\n }\n const propertyIndex = parent.children.indexOf(existing.parent);\n let removeBegin;\n let removeEnd = existing.parent.offset + existing.parent.length;\n if (propertyIndex > 0) {\n // remove the comma of the previous node\n let previous = parent.children[propertyIndex - 1];\n removeBegin = previous.offset + previous.length;\n }\n else {\n removeBegin = parent.offset + 1;\n if (parent.children.length > 1) {\n // remove the comma of the next node\n let next = parent.children[1];\n removeEnd = next.offset;\n }\n }\n return withFormatting(text, { offset: removeBegin, length: removeEnd - removeBegin, content: '' }, options);\n }\n else {\n // set value of existing property\n return withFormatting(text, { offset: existing.offset, length: existing.length, content: JSON.stringify(value) }, options);\n }\n }\n else {\n if (value === void 0) { // delete\n return []; // property does not exist, nothing to do\n }\n const newProperty = `${JSON.stringify(lastSegment)}: ${JSON.stringify(value)}`;\n const index = options.getInsertionIndex ? options.getInsertionIndex(parent.children.map(p => p.children[0].value)) : parent.children.length;\n let edit;\n if (index > 0) {\n let previous = parent.children[index - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n else if (parent.children.length === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n }\n else {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty + ',' };\n }\n return withFormatting(text, edit, options);\n }\n }\n else if (parent.type === 'array' && typeof lastSegment === 'number' && Array.isArray(parent.children)) {\n const insertIndex = lastSegment;\n if (insertIndex === -1) {\n // Insert\n const newProperty = `${JSON.stringify(value)}`;\n let edit;\n if (parent.children.length === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n }\n else {\n const previous = parent.children[parent.children.length - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n return withFormatting(text, edit, options);\n }\n else if (value === void 0 && parent.children.length >= 0) {\n // Removal\n const removalIndex = lastSegment;\n const toRemove = parent.children[removalIndex];\n let edit;\n if (parent.children.length === 1) {\n // only item\n edit = { offset: parent.offset + 1, length: parent.length - 2, content: '' };\n }\n else if (parent.children.length - 1 === removalIndex) {\n // last item\n let previous = parent.children[removalIndex - 1];\n let offset = previous.offset + previous.length;\n let parentEndOffset = parent.offset + parent.length;\n edit = { offset, length: parentEndOffset - 2 - offset, content: '' };\n }\n else {\n edit = { offset: toRemove.offset, length: parent.children[removalIndex + 1].offset - toRemove.offset, content: '' };\n }\n return withFormatting(text, edit, options);\n }\n else if (value !== void 0) {\n let edit;\n const newProperty = `${JSON.stringify(value)}`;\n if (!options.isArrayInsertion && parent.children.length > lastSegment) {\n const toModify = parent.children[lastSegment];\n edit = { offset: toModify.offset, length: toModify.length, content: newProperty };\n }\n else if (parent.children.length === 0 || lastSegment === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: parent.children.length === 0 ? newProperty : newProperty + ',' };\n }\n else {\n const index = lastSegment > parent.children.length ? parent.children.length : lastSegment;\n const previous = parent.children[index - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n return withFormatting(text, edit, options);\n }\n else {\n throw new Error(`Can not ${value === void 0 ? 'remove' : (options.isArrayInsertion ? 'insert' : 'modify')} Array index ${insertIndex} as length is not sufficient`);\n }\n }\n else {\n throw new Error(`Can not add ${typeof lastSegment !== 'number' ? 'index' : 'property'} to parent of type ${parent.type}`);\n }\n}\nfunction withFormatting(text, edit, options) {\n if (!options.formattingOptions) {\n return [edit];\n }\n // apply the edit\n let newText = applyEdit(text, edit);\n // format the new text\n let begin = edit.offset;\n let end = edit.offset + edit.content.length;\n if (edit.length === 0 || edit.content.length === 0) { // insert or remove\n while (begin > 0 && !isEOL(newText, begin - 1)) {\n begin--;\n }\n while (end < newText.length && !isEOL(newText, end)) {\n end++;\n }\n }\n const edits = format(newText, { offset: begin, length: end - begin }, { ...options.formattingOptions, keepLines: false });\n // apply the formatting edits and track the begin and end offsets of the changes\n for (let i = edits.length - 1; i >= 0; i--) {\n const edit = edits[i];\n newText = applyEdit(newText, edit);\n begin = Math.min(begin, edit.offset);\n end = Math.max(end, edit.offset + edit.length);\n end += edit.content.length - edit.length;\n }\n // create a single edit with all changes\n const editLength = text.length - (newText.length - end) - begin;\n return [{ offset: begin, length: editLength, content: newText.substring(begin, end) }];\n}\nexport function applyEdit(text, edit) {\n return text.substring(0, edit.offset) + edit.content + text.substring(edit.offset + edit.length);\n}\nexport function isWS(text, offset) {\n return '\\r\\n \\t'.indexOf(text.charAt(offset)) !== -1;\n}\n",
43
36
  "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport * as formatter from './impl/format';\nimport * as edit from './impl/edit';\nimport * as scanner from './impl/scanner';\nimport * as parser from './impl/parser';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport const createScanner = scanner.createScanner;\nexport var ScanError;\n(function (ScanError) {\n ScanError[ScanError[\"None\"] = 0] = \"None\";\n ScanError[ScanError[\"UnexpectedEndOfComment\"] = 1] = \"UnexpectedEndOfComment\";\n ScanError[ScanError[\"UnexpectedEndOfString\"] = 2] = \"UnexpectedEndOfString\";\n ScanError[ScanError[\"UnexpectedEndOfNumber\"] = 3] = \"UnexpectedEndOfNumber\";\n ScanError[ScanError[\"InvalidUnicode\"] = 4] = \"InvalidUnicode\";\n ScanError[ScanError[\"InvalidEscapeCharacter\"] = 5] = \"InvalidEscapeCharacter\";\n ScanError[ScanError[\"InvalidCharacter\"] = 6] = \"InvalidCharacter\";\n})(ScanError || (ScanError = {}));\nexport var SyntaxKind;\n(function (SyntaxKind) {\n SyntaxKind[SyntaxKind[\"OpenBraceToken\"] = 1] = \"OpenBraceToken\";\n SyntaxKind[SyntaxKind[\"CloseBraceToken\"] = 2] = \"CloseBraceToken\";\n SyntaxKind[SyntaxKind[\"OpenBracketToken\"] = 3] = \"OpenBracketToken\";\n SyntaxKind[SyntaxKind[\"CloseBracketToken\"] = 4] = \"CloseBracketToken\";\n SyntaxKind[SyntaxKind[\"CommaToken\"] = 5] = \"CommaToken\";\n SyntaxKind[SyntaxKind[\"ColonToken\"] = 6] = \"ColonToken\";\n SyntaxKind[SyntaxKind[\"NullKeyword\"] = 7] = \"NullKeyword\";\n SyntaxKind[SyntaxKind[\"TrueKeyword\"] = 8] = \"TrueKeyword\";\n SyntaxKind[SyntaxKind[\"FalseKeyword\"] = 9] = \"FalseKeyword\";\n SyntaxKind[SyntaxKind[\"StringLiteral\"] = 10] = \"StringLiteral\";\n SyntaxKind[SyntaxKind[\"NumericLiteral\"] = 11] = \"NumericLiteral\";\n SyntaxKind[SyntaxKind[\"LineCommentTrivia\"] = 12] = \"LineCommentTrivia\";\n SyntaxKind[SyntaxKind[\"BlockCommentTrivia\"] = 13] = \"BlockCommentTrivia\";\n SyntaxKind[SyntaxKind[\"LineBreakTrivia\"] = 14] = \"LineBreakTrivia\";\n SyntaxKind[SyntaxKind[\"Trivia\"] = 15] = \"Trivia\";\n SyntaxKind[SyntaxKind[\"Unknown\"] = 16] = \"Unknown\";\n SyntaxKind[SyntaxKind[\"EOF\"] = 17] = \"EOF\";\n})(SyntaxKind || (SyntaxKind = {}));\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport const getLocation = parser.getLocation;\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore, always check the errors list to find out if the input was valid.\n */\nexport const parse = parser.parse;\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport const parseTree = parser.parseTree;\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport const findNodeAtLocation = parser.findNodeAtLocation;\n/**\n * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport const findNodeAtOffset = parser.findNodeAtOffset;\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport const getNodePath = parser.getNodePath;\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport const getNodeValue = parser.getNodeValue;\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport const visit = parser.visit;\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport const stripComments = parser.stripComments;\nexport var ParseErrorCode;\n(function (ParseErrorCode) {\n ParseErrorCode[ParseErrorCode[\"InvalidSymbol\"] = 1] = \"InvalidSymbol\";\n ParseErrorCode[ParseErrorCode[\"InvalidNumberFormat\"] = 2] = \"InvalidNumberFormat\";\n ParseErrorCode[ParseErrorCode[\"PropertyNameExpected\"] = 3] = \"PropertyNameExpected\";\n ParseErrorCode[ParseErrorCode[\"ValueExpected\"] = 4] = \"ValueExpected\";\n ParseErrorCode[ParseErrorCode[\"ColonExpected\"] = 5] = \"ColonExpected\";\n ParseErrorCode[ParseErrorCode[\"CommaExpected\"] = 6] = \"CommaExpected\";\n ParseErrorCode[ParseErrorCode[\"CloseBraceExpected\"] = 7] = \"CloseBraceExpected\";\n ParseErrorCode[ParseErrorCode[\"CloseBracketExpected\"] = 8] = \"CloseBracketExpected\";\n ParseErrorCode[ParseErrorCode[\"EndOfFileExpected\"] = 9] = \"EndOfFileExpected\";\n ParseErrorCode[ParseErrorCode[\"InvalidCommentToken\"] = 10] = \"InvalidCommentToken\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfComment\"] = 11] = \"UnexpectedEndOfComment\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfString\"] = 12] = \"UnexpectedEndOfString\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfNumber\"] = 13] = \"UnexpectedEndOfNumber\";\n ParseErrorCode[ParseErrorCode[\"InvalidUnicode\"] = 14] = \"InvalidUnicode\";\n ParseErrorCode[ParseErrorCode[\"InvalidEscapeCharacter\"] = 15] = \"InvalidEscapeCharacter\";\n ParseErrorCode[ParseErrorCode[\"InvalidCharacter\"] = 16] = \"InvalidCharacter\";\n})(ParseErrorCode || (ParseErrorCode = {}));\nexport function printParseErrorCode(code) {\n switch (code) {\n case 1 /* ParseErrorCode.InvalidSymbol */: return 'InvalidSymbol';\n case 2 /* ParseErrorCode.InvalidNumberFormat */: return 'InvalidNumberFormat';\n case 3 /* ParseErrorCode.PropertyNameExpected */: return 'PropertyNameExpected';\n case 4 /* ParseErrorCode.ValueExpected */: return 'ValueExpected';\n case 5 /* ParseErrorCode.ColonExpected */: return 'ColonExpected';\n case 6 /* ParseErrorCode.CommaExpected */: return 'CommaExpected';\n case 7 /* ParseErrorCode.CloseBraceExpected */: return 'CloseBraceExpected';\n case 8 /* ParseErrorCode.CloseBracketExpected */: return 'CloseBracketExpected';\n case 9 /* ParseErrorCode.EndOfFileExpected */: return 'EndOfFileExpected';\n case 10 /* ParseErrorCode.InvalidCommentToken */: return 'InvalidCommentToken';\n case 11 /* ParseErrorCode.UnexpectedEndOfComment */: return 'UnexpectedEndOfComment';\n case 12 /* ParseErrorCode.UnexpectedEndOfString */: return 'UnexpectedEndOfString';\n case 13 /* ParseErrorCode.UnexpectedEndOfNumber */: return 'UnexpectedEndOfNumber';\n case 14 /* ParseErrorCode.InvalidUnicode */: return 'InvalidUnicode';\n case 15 /* ParseErrorCode.InvalidEscapeCharacter */: return 'InvalidEscapeCharacter';\n case 16 /* ParseErrorCode.InvalidCharacter */: return 'InvalidCharacter';\n }\n return '<unknown ParseErrorCode>';\n}\n/**\n * Computes the edit operations needed to format a JSON document.\n *\n * @param documentText The input text\n * @param range The range to format or `undefined` to format the full content\n * @param options The formatting options\n * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}.\n * To apply the edit operations to the input, use {@linkcode applyEdits}.\n */\nexport function format(documentText, range, options) {\n return formatter.format(documentText, range, options);\n}\n/**\n * Computes the edit operations needed to modify a value in the JSON document.\n *\n * @param documentText The input text\n * @param path The path of the value to change. The path represents either to the document root, a property or an array item.\n * If the path points to an non-existing property or item, it will be created.\n * @param value The new value for the specified property or item. If the value is undefined,\n * the property or item will be removed.\n * @param options Options\n * @returns The edit operations describing the changes to the original document, following the format described in {@linkcode EditResult}.\n * To apply the edit operations to the input, use {@linkcode applyEdits}.\n */\nexport function modify(text, path, value, options) {\n return edit.setProperty(text, path, value, options);\n}\n/**\n * Applies edits to an input string.\n * @param text The input text\n * @param edits Edit operations following the format described in {@linkcode EditResult}.\n * @returns The text with the applied edits.\n * @throws An error if the edit operations are not well-formed as described in {@linkcode EditResult}.\n */\nexport function applyEdits(text, edits) {\n let sortedEdits = edits.slice(0).sort((a, b) => {\n const diff = a.offset - b.offset;\n if (diff === 0) {\n return a.length - b.length;\n }\n return diff;\n });\n let lastModifiedOffset = text.length;\n for (let i = sortedEdits.length - 1; i >= 0; i--) {\n let e = sortedEdits[i];\n if (e.offset + e.length <= lastModifiedOffset) {\n text = edit.applyEdit(text, e);\n }\n else {\n throw new Error('Overlapping edit');\n }\n lastModifiedOffset = e.offset;\n }\n return text;\n}\n",
44
- "/**\n * Config & Lockfile Schemas\n *\n * Schemas for ocx.jsonc (user config) and ocx.lock (auto-generated lockfile).\n */\n\nimport { parse as parseJsonc } from \"jsonc-parser\"\nimport { z } from \"zod\"\nimport { mcpServerSchema, qualifiedComponentSchema } from \"./registry.js\"\n\n// =============================================================================\n// OCX CONFIG SCHEMA (ocx.jsonc)\n// =============================================================================\n\n/**\n * Registry configuration in ocx.jsonc\n */\nexport const registryConfigSchema = z.object({\n\t/** Registry URL */\n\turl: z.string().url(\"Registry URL must be a valid URL\"),\n\n\t/** Optional version pin */\n\tversion: z.string().optional(),\n\n\t/** Optional auth headers (supports ${ENV_VAR} expansion) */\n\theaders: z.record(z.string()).optional(),\n})\n\nexport type RegistryConfig = z.infer<typeof registryConfigSchema>\n\n/**\n * Main OCX config schema (ocx.jsonc)\n */\nexport const ocxConfigSchema = z.object({\n\t/** Schema URL for IDE support */\n\t$schema: z.string().optional(),\n\n\t/** Configured registries */\n\tregistries: z.record(registryConfigSchema).default({}),\n\n\t/** Lock registries - prevent adding/removing (enterprise feature) */\n\tlockRegistries: z.boolean().default(false),\n})\n\nexport type OcxConfig = z.infer<typeof ocxConfigSchema>\n\n// =============================================================================\n// OCX LOCKFILE SCHEMA (ocx.lock)\n// =============================================================================\n\n/**\n * Installed component entry in lockfile\n * Key format: \"namespace/component\" (e.g., \"kdco/librarian\")\n */\nexport const installedComponentSchema = z.object({\n\t/** Registry namespace this was installed from */\n\tregistry: z.string(),\n\n\t/** Version at time of install */\n\tversion: z.string(),\n\n\t/** SHA-256 hash of installed files for integrity */\n\thash: z.string(),\n\n\t/** Target files where installed (clean paths, no namespace prefix) */\n\tfiles: z.array(z.string()),\n\n\t/** ISO timestamp of installation */\n\tinstalledAt: z.string(),\n\n\t/** Optional alias if installed with --as flag */\n\talias: z.string().optional(),\n})\n\nexport type InstalledComponent = z.infer<typeof installedComponentSchema>\n\n/**\n * OCX lockfile schema (ocx.lock)\n * Keys are qualified component refs: \"namespace/component\"\n */\nexport const ocxLockSchema = z.object({\n\t/** Lockfile format version */\n\tlockVersion: z.literal(1),\n\n\t/** Installed components, keyed by \"namespace/component\" */\n\tinstalled: z.record(qualifiedComponentSchema, installedComponentSchema).default({}),\n})\n\nexport type OcxLock = z.infer<typeof ocxLockSchema>\n\n// =============================================================================\n// OPENCODE.JSON MODIFICATION SCHEMAS\n// =============================================================================\n\n/**\n * MCP server config for opencode.json\n */\nexport const opencodeMcpSchema = z.record(mcpServerSchema)\n\n/**\n * Agent config for opencode.json\n */\nexport const opencodeAgentSchema = z.object({\n\tdisable: z.boolean().optional(),\n\ttools: z.record(z.boolean()).optional(),\n\ttemperature: z.number().min(0).max(2).optional(),\n\tprompt: z.string().optional(),\n\tpermission: z.record(z.enum([\"allow\", \"deny\"])).optional(),\n})\n\n/**\n * Partial opencode.json schema (what OCX modifies)\n */\nexport const opencodeConfigPatchSchema = z.object({\n\t/** Default agent */\n\tdefault_agent: z.string().optional(),\n\n\t/** MCP servers */\n\tmcp: opencodeMcpSchema.optional(),\n\n\t/** Tool configuration */\n\ttools: z.record(z.boolean()).optional(),\n\n\t/** Agent configuration */\n\tagent: z.record(opencodeAgentSchema).optional(),\n\n\t/** NPM plugins */\n\tplugin: z.array(z.string()).optional(),\n\n\t/** Global instructions */\n\tinstructions: z.array(z.string()).optional(),\n})\n\nexport type OpencodeConfigPatch = z.infer<typeof opencodeConfigPatchSchema>\n\n// =============================================================================\n// SCHEMA INDEX\n// =============================================================================\n\nexport const schemas = {\n\tconfig: ocxConfigSchema,\n\tlock: ocxLockSchema,\n\tregistryConfig: registryConfigSchema,\n\tinstalledComponent: installedComponentSchema,\n\topencodeConfigPatch: opencodeConfigPatchSchema,\n} as const\n\n// =============================================================================\n// CONFIG FILE HELPERS\n// =============================================================================\n\nconst CONFIG_FILE = \"ocx.jsonc\"\nconst LOCK_FILE = \"ocx.lock\"\n\n/**\n * Read ocx.jsonc config file\n */\nexport async function readOcxConfig(cwd: string): Promise<OcxConfig | null> {\n\tconst configPath = `${cwd}/${CONFIG_FILE}`\n\tconst file = Bun.file(configPath)\n\n\tif (!(await file.exists())) {\n\t\treturn null\n\t}\n\n\tconst content = await file.text()\n\ttry {\n\t\tconst json = parseJsonc(content, [], { allowTrailingComma: true })\n\t\treturn ocxConfigSchema.parse(json)\n\t} catch (error) {\n\t\t// If parsing fails, we want to know why\n\t\tconsole.error(`Error parsing ${configPath}:`, error)\n\t\tthrow error\n\t}\n}\n\n/**\n * Write ocx.jsonc config file\n */\nexport async function writeOcxConfig(cwd: string, config: OcxConfig): Promise<void> {\n\tconst configPath = `${cwd}/${CONFIG_FILE}`\n\tconst content = JSON.stringify(config, null, 2)\n\tawait Bun.write(configPath, content)\n}\n\n/**\n * Read ocx.lock lockfile\n */\nexport async function readOcxLock(cwd: string): Promise<OcxLock | null> {\n\tconst lockPath = `${cwd}/${LOCK_FILE}`\n\tconst file = Bun.file(lockPath)\n\n\tif (!(await file.exists())) {\n\t\treturn null\n\t}\n\n\tconst content = await file.text()\n\tconst json = parseJsonc(content, [], { allowTrailingComma: true })\n\treturn ocxLockSchema.parse(json)\n}\n\n/**\n * Write ocx.lock lockfile\n */\nexport async function writeOcxLock(cwd: string, lock: OcxLock): Promise<void> {\n\tconst lockPath = `${cwd}/${LOCK_FILE}`\n\tconst content = JSON.stringify(lock, null, 2)\n\tawait Bun.write(lockPath, content)\n}\n",
45
- "/**\n * OpenCode Config Updater\n *\n * ShadCN-style updater for opencode.json configuration.\n * Handles MCP server definitions, global tool settings, and per-agent tool scoping.\n *\n * Key features:\n * - Preserves JSONC comments using jsonc-parser's modify/applyEdits\n * - Non-destructive updates (only modifies specified paths, preserves rest)\n * - Agent-scoped MCP servers (disabled globally, enabled per-agent)\n */\n\nimport { applyEdits, type ModificationOptions, modify, parse as parseJsonc } from \"jsonc-parser\"\nimport { mergeDeep } from \"remeda\"\nimport type { McpServerObject, AgentConfig as RegistryAgentConfig } from \"../schemas/registry.js\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface OpencodeConfig {\n\t$schema?: string\n\tmcp?: Record<string, McpServerConfig>\n\ttools?: Record<string, boolean>\n\tagent?: Record<string, AgentConfig>\n\tdefault_agent?: string\n\t[key: string]: unknown\n}\n\nexport interface McpServerConfig {\n\ttype: \"remote\" | \"local\"\n\turl?: string\n\tcommand?: string[]\n\theaders?: Record<string, string>\n\tenabled?: boolean\n}\n\nexport interface AgentConfig {\n\tdisable?: boolean\n\ttools?: Record<string, boolean>\n\t[key: string]: unknown\n}\n\n/** Binding between an agent and its owned MCP servers */\nexport interface AgentMcpBinding {\n\t/** Agent name (e.g., \"kdco-librarian\") */\n\tagentName: string\n\t/** MCP server names owned by this agent */\n\tserverNames: string[]\n}\n\nexport interface UpdateOpencodeConfigOptions {\n\t/** MCP servers to add (global scope) - already normalized to objects */\n\tmcpServers?: Record<string, McpServerObject>\n\t/** Agent-to-MCP bindings for scoped access */\n\tagentMcpBindings?: AgentMcpBinding[]\n\t/** Default agent to set (if not already set) */\n\tdefaultAgent?: string\n\t/** Tools to disable globally (e.g., [\"WebFetch\"]) */\n\tdisabledTools?: string[]\n\t/** NPM plugin packages to add to opencode.json 'plugin' array */\n\tplugins?: string[]\n\t/** Per-agent configuration to merge into opencode.json 'agent' key */\n\tagentConfigs?: Record<string, RegistryAgentConfig>\n\t/** Global instructions to append to opencode.json 'instructions' array */\n\tinstructions?: string[]\n}\n\nexport interface UpdateOpencodeConfigResult {\n\t/** Path to the config file */\n\tpath: string\n\t/** Whether the file was created (vs updated) */\n\tcreated: boolean\n\t/** MCP servers that were added */\n\tmcpAdded: string[]\n\t/** MCP servers that were skipped (already exist) */\n\tmcpSkipped: string[]\n\t/** Agents that had tools configured */\n\tagentsConfigured: string[]\n\t/** Tools that were disabled globally */\n\ttoolsDisabled: string[]\n\t/** Plugins that were added */\n\tpluginsAdded: string[]\n\t/** Instructions that were appended */\n\tinstructionsAdded: string[]\n}\n\n// =============================================================================\n// JSONC MODIFICATION OPTIONS\n// =============================================================================\n\nconst JSONC_OPTIONS: ModificationOptions = {\n\tformattingOptions: {\n\t\ttabSize: 2,\n\t\tinsertSpaces: false,\n\t\teol: \"\\n\",\n\t},\n}\n\n// =============================================================================\n// FILE OPERATIONS\n// =============================================================================\n\n/**\n * Read opencode.json or opencode.jsonc from a directory\n * Returns both parsed config and raw content (for comment preservation)\n */\nexport async function readOpencodeConfig(cwd: string): Promise<{\n\tconfig: OpencodeConfig\n\tcontent: string\n\tpath: string\n} | null> {\n\tconst jsonPath = `${cwd}/opencode.json`\n\tconst jsoncPath = `${cwd}/opencode.jsonc`\n\n\tfor (const configPath of [jsoncPath, jsonPath]) {\n\t\tconst file = Bun.file(configPath)\n\t\tif (await file.exists()) {\n\t\t\tconst content = await file.text()\n\t\t\treturn {\n\t\t\t\tconfig: parseJsonc(content, [], { allowTrailingComma: true }) as OpencodeConfig,\n\t\t\t\tcontent,\n\t\t\t\tpath: configPath,\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null\n}\n\n/**\n * Write config content to file\n */\nasync function writeOpencodeConfig(path: string, content: string): Promise<void> {\n\tawait Bun.write(path, content)\n}\n\n// =============================================================================\n// CONFIG MODIFICATION FUNCTIONS\n// =============================================================================\n\n/**\n * Add MCP server definitions to config\n * Returns list of added and skipped server names\n */\nfunction applyMcpServers(\n\tcontent: string,\n\tconfig: OpencodeConfig,\n\tmcpServers: Record<string, McpServerObject>,\n): { content: string; added: string[]; skipped: string[] } {\n\tconst added: string[] = []\n\tconst skipped: string[] = []\n\tlet updatedContent = content\n\n\tconst existingMcp = config.mcp ?? {}\n\n\tfor (const [name, server] of Object.entries(mcpServers)) {\n\t\tif (existingMcp[name]) {\n\t\t\tskipped.push(name)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Build server config\n\t\tconst serverConfig: McpServerConfig = {\n\t\t\ttype: server.type,\n\t\t}\n\n\t\tif (server.type === \"remote\" && server.url) {\n\t\t\tserverConfig.url = server.url\n\t\t}\n\t\tif (server.type === \"local\" && server.command) {\n\t\t\tserverConfig.command = server.command\n\t\t}\n\t\tif (server.headers) {\n\t\t\tserverConfig.headers = server.headers\n\t\t}\n\t\tif (server.enabled !== undefined) {\n\t\t\tserverConfig.enabled = server.enabled\n\t\t}\n\n\t\t// Apply edit using jsonc-parser (preserves comments)\n\t\tconst edits = modify(updatedContent, [\"mcp\", name], serverConfig, JSONC_OPTIONS)\n\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\tadded.push(name)\n\t}\n\n\treturn { content: updatedContent, added, skipped }\n}\n\n/**\n * Disable MCP tools globally\n * Sets tools: { \"servername_*\": false } for each server\n */\nfunction applyGlobalToolDisables(content: string, serverNames: string[]): string {\n\tlet updatedContent = content\n\n\tfor (const name of serverNames) {\n\t\tconst toolPattern = `${name}_*`\n\t\tconst edits = modify(updatedContent, [\"tools\", toolPattern], false, JSONC_OPTIONS)\n\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t}\n\n\treturn updatedContent\n}\n\n/**\n * Disable specific tools globally\n * Sets tools: { \"ToolName\": false } for each tool\n */\nfunction applyDisabledTools(content: string, toolNames: string[]): string {\n\tlet updatedContent = content\n\n\tfor (const name of toolNames) {\n\t\tconst edits = modify(updatedContent, [\"tools\", name], false, JSONC_OPTIONS)\n\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t}\n\n\treturn updatedContent\n}\n\n/**\n * Enable MCP tools for specific agents\n * Sets agent.NAME.tools: { \"servername_*\": true }\n */\nfunction applyAgentToolEnables(\n\tcontent: string,\n\tbindings: AgentMcpBinding[],\n): {\n\tcontent: string\n\tagentsConfigured: string[]\n} {\n\tlet updatedContent = content\n\tconst agentsConfigured: string[] = []\n\n\tfor (const binding of bindings) {\n\t\tfor (const serverName of binding.serverNames) {\n\t\t\tconst toolPattern = `${serverName}_*`\n\t\t\tconst edits = modify(\n\t\t\t\tupdatedContent,\n\t\t\t\t[\"agent\", binding.agentName, \"tools\", toolPattern],\n\t\t\t\ttrue,\n\t\t\t\tJSONC_OPTIONS,\n\t\t\t)\n\t\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\t}\n\t\tif (binding.serverNames.length > 0) {\n\t\t\tagentsConfigured.push(binding.agentName)\n\t\t}\n\t}\n\n\treturn { content: updatedContent, agentsConfigured: [...new Set(agentsConfigured)] }\n}\n\n/**\n * Set default agent if not already set\n */\nfunction applyDefaultAgent(content: string, config: OpencodeConfig, defaultAgent: string): string {\n\tif (config.default_agent) {\n\t\treturn content\n\t}\n\n\tconst edits = modify(content, [\"default_agent\"], defaultAgent, JSONC_OPTIONS)\n\treturn applyEdits(content, edits)\n}\n\n/**\n * Add plugin packages to opencode.json 'plugin' array\n * Returns list of added plugins (skips duplicates)\n */\nfunction applyPlugins(\n\tcontent: string,\n\tconfig: OpencodeConfig,\n\tplugins: string[],\n): { content: string; added: string[] } {\n\tconst added: string[] = []\n\tlet updatedContent = content\n\n\t// Get existing plugins array\n\tconst existingPlugins = (config as { plugin?: string[] }).plugin ?? []\n\n\tfor (const plugin of plugins) {\n\t\tif (existingPlugins.includes(plugin)) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Add to the plugin array at the next index\n\t\tconst newIndex = existingPlugins.length + added.length\n\t\tconst edits = modify(updatedContent, [\"plugin\", newIndex], plugin, JSONC_OPTIONS)\n\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\tadded.push(plugin)\n\t}\n\n\treturn { content: updatedContent, added }\n}\n\n/**\n * Merge agent configurations into opencode.json 'agent' key\n * Component config is treated as defaults; user config takes precedence.\n * Only sets values that don't already exist in user config.\n */\nfunction applyAgentConfigs(\n\tcontent: string,\n\texistingConfig: OpencodeConfig,\n\tagentConfigs: Record<string, RegistryAgentConfig>,\n): { content: string; agentsConfigured: string[] } {\n\tlet updatedContent = content\n\tconst agentsConfigured: string[] = []\n\n\tfor (const [agentName, componentAgentConfig] of Object.entries(agentConfigs)) {\n\t\tconst existingAgentConfig = existingConfig.agent?.[agentName] ?? {}\n\n\t\t// Deep merge: component as base, user as override (user wins)\n\t\tconst merged = mergeDeep(componentAgentConfig, existingAgentConfig) as RegistryAgentConfig\n\n\t\t// Apply each field of the merged config\n\t\tif (merged.tools) {\n\t\t\tfor (const [toolPattern, enabled] of Object.entries(merged.tools)) {\n\t\t\t\tconst edits = modify(\n\t\t\t\t\tupdatedContent,\n\t\t\t\t\t[\"agent\", agentName, \"tools\", toolPattern],\n\t\t\t\t\tenabled,\n\t\t\t\t\tJSONC_OPTIONS,\n\t\t\t\t)\n\t\t\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\t\t}\n\t\t}\n\n\t\tif (merged.temperature !== undefined) {\n\t\t\tconst edits = modify(\n\t\t\t\tupdatedContent,\n\t\t\t\t[\"agent\", agentName, \"temperature\"],\n\t\t\t\tmerged.temperature,\n\t\t\t\tJSONC_OPTIONS,\n\t\t\t)\n\t\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\t}\n\n\t\tif (merged.prompt) {\n\t\t\tconst edits = modify(\n\t\t\t\tupdatedContent,\n\t\t\t\t[\"agent\", agentName, \"prompt\"],\n\t\t\t\tmerged.prompt,\n\t\t\t\tJSONC_OPTIONS,\n\t\t\t)\n\t\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\t}\n\n\t\tif (merged.permission) {\n\t\t\tfor (const [pattern, permission] of Object.entries(merged.permission)) {\n\t\t\t\tconst edits = modify(\n\t\t\t\t\tupdatedContent,\n\t\t\t\t\t[\"agent\", agentName, \"permission\", pattern],\n\t\t\t\t\tpermission,\n\t\t\t\t\tJSONC_OPTIONS,\n\t\t\t\t)\n\t\t\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\t\t}\n\t\t}\n\n\t\tagentsConfigured.push(agentName)\n\t}\n\n\treturn { content: updatedContent, agentsConfigured }\n}\n\n/**\n * Append global instructions to opencode.json 'instructions' array\n * Returns list of added instructions (skips duplicates)\n */\nfunction applyInstructions(\n\tcontent: string,\n\tconfig: OpencodeConfig,\n\tinstructions: string[],\n): { content: string; added: string[] } {\n\tconst added: string[] = []\n\tlet updatedContent = content\n\n\t// Get existing instructions array\n\tconst existingInstructions = (config as { instructions?: string[] }).instructions ?? []\n\n\tfor (const instruction of instructions) {\n\t\tif (existingInstructions.includes(instruction)) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Add to the instructions array at the next index\n\t\tconst newIndex = existingInstructions.length + added.length\n\t\tconst edits = modify(updatedContent, [\"instructions\", newIndex], instruction, JSONC_OPTIONS)\n\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\tadded.push(instruction)\n\t}\n\n\treturn { content: updatedContent, added }\n}\n\n// =============================================================================\n// MAIN UPDATER\n// =============================================================================\n\n/**\n * Update opencode.json with MCP servers, tool settings, and agent configuration.\n *\n * For agent-scoped MCPs (mcpScope: \"agent\"):\n * 1. Adds MCP definition to global `mcp` section\n * 2. Disables MCP tools globally with `tools: { \"name_*\": false }`\n * 3. Enables for owning agent with `agent.NAME.tools: { \"name_*\": true }`\n *\n * For global MCPs (mcpScope: \"global\"):\n * 1. Only adds MCP definition to global `mcp` section (available to all)\n */\nexport async function updateOpencodeConfig(\n\tcwd: string,\n\toptions: UpdateOpencodeConfigOptions,\n): Promise<UpdateOpencodeConfigResult> {\n\tconst existing = await readOpencodeConfig(cwd)\n\n\tlet content: string\n\tlet config: OpencodeConfig\n\tlet configPath: string\n\tlet created = false\n\n\tif (existing) {\n\t\tcontent = existing.content\n\t\tconfig = existing.config\n\t\tconfigPath = existing.path\n\t} else {\n\t\t// Create new config with schema\n\t\tconfig = { $schema: \"https://opencode.ai/config.json\" }\n\t\tcontent = JSON.stringify(config, null, \"\\t\")\n\t\tconfigPath = `${cwd}/opencode.json`\n\t\tcreated = true\n\t}\n\n\tlet mcpAdded: string[] = []\n\tlet mcpSkipped: string[] = []\n\tlet agentsConfigured: string[] = []\n\tlet toolsDisabled: string[] = []\n\tlet pluginsAdded: string[] = []\n\tlet instructionsAdded: string[] = []\n\n\t// Apply MCP servers\n\tif (options.mcpServers && Object.keys(options.mcpServers).length > 0) {\n\t\tconst result = applyMcpServers(content, config, options.mcpServers)\n\t\tcontent = result.content\n\t\tmcpAdded = result.added\n\t\tmcpSkipped = result.skipped\n\t}\n\n\t// Apply agent-scoped tool configuration\n\t// Note: We apply scoping for ALL servers in bindings, not just newly added ones.\n\t// This ensures agent scoping is configured even if MCPs already existed.\n\tif (options.agentMcpBindings && options.agentMcpBindings.length > 0) {\n\t\t// Collect all unique server names that need agent scoping\n\t\tconst allScopedServers = [...new Set(options.agentMcpBindings.flatMap((b) => b.serverNames))]\n\n\t\tif (allScopedServers.length > 0) {\n\t\t\t// Disable globally\n\t\t\tcontent = applyGlobalToolDisables(content, allScopedServers)\n\n\t\t\t// Enable per-agent\n\t\t\tconst agentResult = applyAgentToolEnables(content, options.agentMcpBindings)\n\t\t\tcontent = agentResult.content\n\t\t\tagentsConfigured = agentResult.agentsConfigured\n\t\t}\n\t}\n\n\t// Apply default agent\n\tif (options.defaultAgent) {\n\t\t// Re-parse config after modifications\n\t\tconst updatedConfig = parseJsonc(content, [], { allowTrailingComma: true }) as OpencodeConfig\n\t\tcontent = applyDefaultAgent(content, updatedConfig, options.defaultAgent)\n\t}\n\n\t// Apply disabled tools\n\tif (options.disabledTools && options.disabledTools.length > 0) {\n\t\tcontent = applyDisabledTools(content, options.disabledTools)\n\t\ttoolsDisabled = options.disabledTools\n\t}\n\n\t// Apply plugins\n\tif (options.plugins && options.plugins.length > 0) {\n\t\t// Re-parse config after modifications\n\t\tconst updatedConfig = parseJsonc(content, [], { allowTrailingComma: true }) as OpencodeConfig\n\t\tconst result = applyPlugins(content, updatedConfig, options.plugins)\n\t\tcontent = result.content\n\t\tpluginsAdded = result.added\n\t}\n\n\t// Apply agent configs\n\tif (options.agentConfigs && Object.keys(options.agentConfigs).length > 0) {\n\t\t// Re-parse config after modifications to get current user settings\n\t\tconst updatedConfig = parseJsonc(content, [], { allowTrailingComma: true }) as OpencodeConfig\n\t\tconst result = applyAgentConfigs(content, updatedConfig, options.agentConfigs)\n\t\tcontent = result.content\n\t\t// Merge with existing agentsConfigured from MCP bindings\n\t\tagentsConfigured = [...new Set([...agentsConfigured, ...result.agentsConfigured])]\n\t}\n\n\t// Apply instructions\n\tif (options.instructions && options.instructions.length > 0) {\n\t\t// Re-parse config after modifications\n\t\tconst updatedConfig = parseJsonc(content, [], { allowTrailingComma: true }) as OpencodeConfig\n\t\tconst result = applyInstructions(content, updatedConfig, options.instructions)\n\t\tcontent = result.content\n\t\tinstructionsAdded = result.added\n\t}\n\n\t// Write config\n\tawait writeOpencodeConfig(configPath, content)\n\n\treturn {\n\t\tpath: configPath,\n\t\tcreated,\n\t\tmcpAdded,\n\t\tmcpSkipped,\n\t\tagentsConfigured,\n\t\ttoolsDisabled,\n\t\tpluginsAdded,\n\t\tinstructionsAdded,\n\t}\n}\n",
37
+ "/**\n * Config & Lockfile Schemas\n *\n * Schemas for ocx.jsonc (user config) and ocx.lock (auto-generated lockfile).\n */\n\nimport { parse as parseJsonc } from \"jsonc-parser\"\nimport { z } from \"zod\"\nimport { mcpServerRefSchema, qualifiedComponentSchema } from \"./registry.js\"\n\n// =============================================================================\n// OCX CONFIG SCHEMA (ocx.jsonc)\n// =============================================================================\n\n/**\n * Registry configuration in ocx.jsonc\n */\nexport const registryConfigSchema = z.object({\n\t/** Registry URL */\n\turl: z.string().url(\"Registry URL must be a valid URL\"),\n\n\t/** Optional version pin */\n\tversion: z.string().optional(),\n\n\t/** Optional auth headers (supports ${ENV_VAR} expansion) */\n\theaders: z.record(z.string()).optional(),\n})\n\nexport type RegistryConfig = z.infer<typeof registryConfigSchema>\n\n/**\n * Main OCX config schema (ocx.jsonc)\n */\nexport const ocxConfigSchema = z.object({\n\t/** Schema URL for IDE support */\n\t$schema: z.string().optional(),\n\n\t/** Configured registries */\n\tregistries: z.record(registryConfigSchema).default({}),\n\n\t/** Lock registries - prevent adding/removing (enterprise feature) */\n\tlockRegistries: z.boolean().default(false),\n})\n\nexport type OcxConfig = z.infer<typeof ocxConfigSchema>\n\n// =============================================================================\n// OCX LOCKFILE SCHEMA (ocx.lock)\n// =============================================================================\n\n/**\n * Installed component entry in lockfile\n * Key format: \"namespace/component\" (e.g., \"kdco/librarian\")\n */\nexport const installedComponentSchema = z.object({\n\t/** Registry namespace this was installed from */\n\tregistry: z.string(),\n\n\t/** Version at time of install */\n\tversion: z.string(),\n\n\t/** SHA-256 hash of installed files for integrity */\n\thash: z.string(),\n\n\t/** Target files where installed (clean paths, no namespace prefix) */\n\tfiles: z.array(z.string()),\n\n\t/** ISO timestamp of installation */\n\tinstalledAt: z.string(),\n\n\t/** Optional alias if installed with --as flag */\n\talias: z.string().optional(),\n})\n\nexport type InstalledComponent = z.infer<typeof installedComponentSchema>\n\n/**\n * OCX lockfile schema (ocx.lock)\n * Keys are qualified component refs: \"namespace/component\"\n */\nexport const ocxLockSchema = z.object({\n\t/** Lockfile format version */\n\tlockVersion: z.literal(1),\n\n\t/** Installed components, keyed by \"namespace/component\" */\n\tinstalled: z.record(qualifiedComponentSchema, installedComponentSchema).default({}),\n})\n\nexport type OcxLock = z.infer<typeof ocxLockSchema>\n\n// =============================================================================\n// OPENCODE.JSON MODIFICATION SCHEMAS\n// =============================================================================\n\n/**\n * MCP server config for opencode.json\n */\nexport const opencodeMcpSchema = z.record(mcpServerRefSchema)\n\n/**\n * Agent config for opencode.json\n */\nexport const opencodeAgentSchema = z.object({\n\tdisable: z.boolean().optional(),\n\ttools: z.record(z.boolean()).optional(),\n\ttemperature: z.number().min(0).max(2).optional(),\n\tprompt: z.string().optional(),\n\tpermission: z.record(z.enum([\"allow\", \"deny\"])).optional(),\n})\n\n/**\n * Partial opencode.json schema (what OCX modifies)\n */\nexport const opencodeConfigPatchSchema = z.object({\n\t/** Default agent */\n\tdefault_agent: z.string().optional(),\n\n\t/** MCP servers */\n\tmcp: opencodeMcpSchema.optional(),\n\n\t/** Tool configuration */\n\ttools: z.record(z.boolean()).optional(),\n\n\t/** Agent configuration */\n\tagent: z.record(opencodeAgentSchema).optional(),\n\n\t/** NPM plugins */\n\tplugin: z.array(z.string()).optional(),\n\n\t/** Global instructions */\n\tinstructions: z.array(z.string()).optional(),\n})\n\nexport type OpencodeConfigPatch = z.infer<typeof opencodeConfigPatchSchema>\n\n// =============================================================================\n// SCHEMA INDEX\n// =============================================================================\n\nexport const schemas = {\n\tconfig: ocxConfigSchema,\n\tlock: ocxLockSchema,\n\tregistryConfig: registryConfigSchema,\n\tinstalledComponent: installedComponentSchema,\n\topencodeConfigPatch: opencodeConfigPatchSchema,\n} as const\n\n// =============================================================================\n// CONFIG FILE HELPERS\n// =============================================================================\n\nconst CONFIG_FILE = \"ocx.jsonc\"\nconst LOCK_FILE = \"ocx.lock\"\n\n/**\n * Read ocx.jsonc config file\n */\nexport async function readOcxConfig(cwd: string): Promise<OcxConfig | null> {\n\tconst configPath = `${cwd}/${CONFIG_FILE}`\n\tconst file = Bun.file(configPath)\n\n\tif (!(await file.exists())) {\n\t\treturn null\n\t}\n\n\tconst content = await file.text()\n\ttry {\n\t\tconst json = parseJsonc(content, [], { allowTrailingComma: true })\n\t\treturn ocxConfigSchema.parse(json)\n\t} catch (error) {\n\t\t// If parsing fails, we want to know why\n\t\tconsole.error(`Error parsing ${configPath}:`, error)\n\t\tthrow error\n\t}\n}\n\n/**\n * Write ocx.jsonc config file\n */\nexport async function writeOcxConfig(cwd: string, config: OcxConfig): Promise<void> {\n\tconst configPath = `${cwd}/${CONFIG_FILE}`\n\tconst content = JSON.stringify(config, null, 2)\n\tawait Bun.write(configPath, content)\n}\n\n/**\n * Read ocx.lock lockfile\n */\nexport async function readOcxLock(cwd: string): Promise<OcxLock | null> {\n\tconst lockPath = `${cwd}/${LOCK_FILE}`\n\tconst file = Bun.file(lockPath)\n\n\tif (!(await file.exists())) {\n\t\treturn null\n\t}\n\n\tconst content = await file.text()\n\tconst json = parseJsonc(content, [], { allowTrailingComma: true })\n\treturn ocxLockSchema.parse(json)\n}\n\n/**\n * Write ocx.lock lockfile\n */\nexport async function writeOcxLock(cwd: string, lock: OcxLock): Promise<void> {\n\tconst lockPath = `${cwd}/${LOCK_FILE}`\n\tconst content = JSON.stringify(lock, null, 2)\n\tawait Bun.write(lockPath, content)\n}\n",
38
+ "/**\n * OpenCode Config Updater\n *\n * ShadCN-style updater for opencode.json configuration.\n * Handles MCP server definitions, global tool settings, and per-agent tool scoping.\n *\n * Key features:\n * - Preserves JSONC comments using jsonc-parser's modify/applyEdits\n * - Non-destructive updates (only modifies specified paths, preserves rest)\n * - Agent-scoped MCP servers (disabled globally, enabled per-agent)\n */\n\nimport { applyEdits, type ModificationOptions, modify, parse as parseJsonc } from \"jsonc-parser\"\nimport { mergeDeep } from \"remeda\"\nimport type { McpServer, AgentConfig as RegistryAgentConfig } from \"../schemas/registry.js\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface OpencodeConfig {\n\t$schema?: string\n\tmcp?: Record<string, McpServerConfig>\n\ttools?: Record<string, boolean>\n\tagent?: Record<string, AgentConfig>\n\tdefault_agent?: string\n\t[key: string]: unknown\n}\n\nexport interface McpServerConfig {\n\ttype: \"remote\" | \"local\"\n\turl?: string\n\tcommand?: string[]\n\targs?: string[]\n\theaders?: Record<string, string>\n\toauth?: boolean\n\tenabled?: boolean\n\tenvironment?: Record<string, string>\n}\n\nexport interface AgentConfig {\n\tdisable?: boolean\n\ttools?: Record<string, boolean>\n\t[key: string]: unknown\n}\n\n/** Binding between an agent and its owned MCP servers */\nexport interface AgentMcpBinding {\n\t/** Agent name (e.g., \"kdco-librarian\") */\n\tagentName: string\n\t/** MCP server names owned by this agent */\n\tserverNames: string[]\n}\n\nexport interface UpdateOpencodeConfigOptions {\n\t/** MCP servers to add (global scope) - already normalized to objects */\n\tmcpServers?: Record<string, McpServer>\n\t/** Agent-to-MCP bindings for scoped access */\n\tagentMcpBindings?: AgentMcpBinding[]\n\t/** Default agent to set (if not already set) */\n\tdefaultAgent?: string\n\t/** Tools to disable globally (e.g., [\"WebFetch\"]) */\n\tdisabledTools?: string[]\n\t/** NPM plugin packages to add to opencode.json 'plugin' array */\n\tplugins?: string[]\n\t/** Per-agent configuration to merge into opencode.json 'agent' key */\n\tagentConfigs?: Record<string, RegistryAgentConfig>\n\t/** Global instructions to append to opencode.json 'instructions' array */\n\tinstructions?: string[]\n}\n\nexport interface UpdateOpencodeConfigResult {\n\t/** Path to the config file */\n\tpath: string\n\t/** Whether the file was created (vs updated) */\n\tcreated: boolean\n\t/** MCP servers that were added */\n\tmcpAdded: string[]\n\t/** MCP servers that were skipped (already exist) */\n\tmcpSkipped: string[]\n\t/** Agents that had tools configured */\n\tagentsConfigured: string[]\n\t/** Tools that were disabled globally */\n\ttoolsDisabled: string[]\n\t/** Plugins that were added */\n\tpluginsAdded: string[]\n\t/** Instructions that were appended */\n\tinstructionsAdded: string[]\n}\n\n// =============================================================================\n// JSONC MODIFICATION OPTIONS\n// =============================================================================\n\nconst JSONC_OPTIONS: ModificationOptions = {\n\tformattingOptions: {\n\t\ttabSize: 2,\n\t\tinsertSpaces: false,\n\t\teol: \"\\n\",\n\t},\n}\n\n// =============================================================================\n// FILE OPERATIONS\n// =============================================================================\n\n/**\n * Read opencode.json or opencode.jsonc from a directory\n * Returns both parsed config and raw content (for comment preservation)\n */\nexport async function readOpencodeConfig(cwd: string): Promise<{\n\tconfig: OpencodeConfig\n\tcontent: string\n\tpath: string\n} | null> {\n\tconst jsonPath = `${cwd}/opencode.json`\n\tconst jsoncPath = `${cwd}/opencode.jsonc`\n\n\tfor (const configPath of [jsoncPath, jsonPath]) {\n\t\tconst file = Bun.file(configPath)\n\t\tif (await file.exists()) {\n\t\t\tconst content = await file.text()\n\t\t\treturn {\n\t\t\t\tconfig: parseJsonc(content, [], { allowTrailingComma: true }) as OpencodeConfig,\n\t\t\t\tcontent,\n\t\t\t\tpath: configPath,\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null\n}\n\n/**\n * Write config content to file\n */\nasync function writeOpencodeConfig(path: string, content: string): Promise<void> {\n\tawait Bun.write(path, content)\n}\n\n// =============================================================================\n// CONFIG MODIFICATION FUNCTIONS\n// =============================================================================\n\n/**\n * Add MCP server definitions to config\n * Returns list of added and skipped server names\n */\nfunction applyMcpServers(\n\tcontent: string,\n\tconfig: OpencodeConfig,\n\tmcpServers: Record<string, McpServer>,\n): { content: string; added: string[]; skipped: string[] } {\n\tconst added: string[] = []\n\tconst skipped: string[] = []\n\tlet updatedContent = content\n\n\tconst existingMcp = config.mcp ?? {}\n\n\tfor (const [name, server] of Object.entries(mcpServers)) {\n\t\tif (existingMcp[name]) {\n\t\t\tskipped.push(name)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Build server config\n\t\tconst serverConfig: McpServerConfig = {\n\t\t\ttype: server.type,\n\t\t}\n\n\t\tif (server.type === \"remote\" && server.url) {\n\t\t\tserverConfig.url = server.url\n\t\t}\n\t\tif (server.type === \"local\" && server.command) {\n\t\t\tserverConfig.command = server.command\n\t\t}\n\t\tif (server.args) {\n\t\t\tserverConfig.args = server.args\n\t\t}\n\t\tif (server.headers) {\n\t\t\tserverConfig.headers = server.headers\n\t\t}\n\t\tif (server.oauth !== undefined) {\n\t\t\tserverConfig.oauth = server.oauth\n\t\t}\n\t\tif (server.enabled !== undefined) {\n\t\t\tserverConfig.enabled = server.enabled\n\t\t}\n\t\tif (server.environment) {\n\t\t\tserverConfig.environment = server.environment\n\t\t}\n\n\t\t// Apply edit using jsonc-parser (preserves comments)\n\t\tconst edits = modify(updatedContent, [\"mcp\", name], serverConfig, JSONC_OPTIONS)\n\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\tadded.push(name)\n\t}\n\n\treturn { content: updatedContent, added, skipped }\n}\n\n/**\n * Disable MCP tools globally\n * Sets tools: { \"servername_*\": false } for each server\n */\nfunction applyGlobalToolDisables(content: string, serverNames: string[]): string {\n\tlet updatedContent = content\n\n\tfor (const name of serverNames) {\n\t\tconst toolPattern = `${name}_*`\n\t\tconst edits = modify(updatedContent, [\"tools\", toolPattern], false, JSONC_OPTIONS)\n\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t}\n\n\treturn updatedContent\n}\n\n/**\n * Disable specific tools globally\n * Sets tools: { \"ToolName\": false } for each tool\n */\nfunction applyDisabledTools(content: string, toolNames: string[]): string {\n\tlet updatedContent = content\n\n\tfor (const name of toolNames) {\n\t\tconst edits = modify(updatedContent, [\"tools\", name], false, JSONC_OPTIONS)\n\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t}\n\n\treturn updatedContent\n}\n\n/**\n * Enable MCP tools for specific agents\n * Sets agent.NAME.tools: { \"servername_*\": true }\n */\nfunction applyAgentToolEnables(\n\tcontent: string,\n\tbindings: AgentMcpBinding[],\n): {\n\tcontent: string\n\tagentsConfigured: string[]\n} {\n\tlet updatedContent = content\n\tconst agentsConfigured: string[] = []\n\n\tfor (const binding of bindings) {\n\t\tfor (const serverName of binding.serverNames) {\n\t\t\tconst toolPattern = `${serverName}_*`\n\t\t\tconst edits = modify(\n\t\t\t\tupdatedContent,\n\t\t\t\t[\"agent\", binding.agentName, \"tools\", toolPattern],\n\t\t\t\ttrue,\n\t\t\t\tJSONC_OPTIONS,\n\t\t\t)\n\t\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\t}\n\t\tif (binding.serverNames.length > 0) {\n\t\t\tagentsConfigured.push(binding.agentName)\n\t\t}\n\t}\n\n\treturn { content: updatedContent, agentsConfigured: [...new Set(agentsConfigured)] }\n}\n\n/**\n * Set default agent if not already set\n */\nfunction applyDefaultAgent(content: string, config: OpencodeConfig, defaultAgent: string): string {\n\tif (config.default_agent) {\n\t\treturn content\n\t}\n\n\tconst edits = modify(content, [\"default_agent\"], defaultAgent, JSONC_OPTIONS)\n\treturn applyEdits(content, edits)\n}\n\n/**\n * Add plugin packages to opencode.json 'plugin' array\n * Returns list of added plugins (skips duplicates)\n */\nfunction applyPlugins(\n\tcontent: string,\n\tconfig: OpencodeConfig,\n\tplugins: string[],\n): { content: string; added: string[] } {\n\tconst added: string[] = []\n\tlet updatedContent = content\n\n\t// Get existing plugins array\n\tconst existingPlugins = (config as { plugin?: string[] }).plugin ?? []\n\n\tfor (const plugin of plugins) {\n\t\tif (existingPlugins.includes(plugin)) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Add to the plugin array at the next index\n\t\tconst newIndex = existingPlugins.length + added.length\n\t\tconst edits = modify(updatedContent, [\"plugin\", newIndex], plugin, JSONC_OPTIONS)\n\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\tadded.push(plugin)\n\t}\n\n\treturn { content: updatedContent, added }\n}\n\n/**\n * Merge agent configurations into opencode.json 'agent' key\n * Component config is treated as defaults; user config takes precedence.\n * Only sets values that don't already exist in user config.\n */\nfunction applyAgentConfigs(\n\tcontent: string,\n\texistingConfig: OpencodeConfig,\n\tagentConfigs: Record<string, RegistryAgentConfig>,\n): { content: string; agentsConfigured: string[] } {\n\tlet updatedContent = content\n\tconst agentsConfigured: string[] = []\n\n\tfor (const [agentName, componentAgentConfig] of Object.entries(agentConfigs)) {\n\t\tconst existingAgentConfig = existingConfig.agent?.[agentName] ?? {}\n\n\t\t// Deep merge: component as base, user as override (user wins)\n\t\tconst merged = mergeDeep(componentAgentConfig, existingAgentConfig) as RegistryAgentConfig\n\n\t\t// Apply each field of the merged config\n\t\tif (merged.tools) {\n\t\t\tfor (const [toolPattern, enabled] of Object.entries(merged.tools)) {\n\t\t\t\tconst edits = modify(\n\t\t\t\t\tupdatedContent,\n\t\t\t\t\t[\"agent\", agentName, \"tools\", toolPattern],\n\t\t\t\t\tenabled,\n\t\t\t\t\tJSONC_OPTIONS,\n\t\t\t\t)\n\t\t\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\t\t}\n\t\t}\n\n\t\tif (merged.temperature !== undefined) {\n\t\t\tconst edits = modify(\n\t\t\t\tupdatedContent,\n\t\t\t\t[\"agent\", agentName, \"temperature\"],\n\t\t\t\tmerged.temperature,\n\t\t\t\tJSONC_OPTIONS,\n\t\t\t)\n\t\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\t}\n\n\t\tif (merged.prompt) {\n\t\t\tconst edits = modify(\n\t\t\t\tupdatedContent,\n\t\t\t\t[\"agent\", agentName, \"prompt\"],\n\t\t\t\tmerged.prompt,\n\t\t\t\tJSONC_OPTIONS,\n\t\t\t)\n\t\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\t}\n\n\t\tif (merged.permission) {\n\t\t\tfor (const [pattern, permission] of Object.entries(merged.permission)) {\n\t\t\t\tconst edits = modify(\n\t\t\t\t\tupdatedContent,\n\t\t\t\t\t[\"agent\", agentName, \"permission\", pattern],\n\t\t\t\t\tpermission,\n\t\t\t\t\tJSONC_OPTIONS,\n\t\t\t\t)\n\t\t\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\t\t}\n\t\t}\n\n\t\tagentsConfigured.push(agentName)\n\t}\n\n\treturn { content: updatedContent, agentsConfigured }\n}\n\n/**\n * Append global instructions to opencode.json 'instructions' array\n * Returns list of added instructions (skips duplicates)\n */\nfunction applyInstructions(\n\tcontent: string,\n\tconfig: OpencodeConfig,\n\tinstructions: string[],\n): { content: string; added: string[] } {\n\tconst added: string[] = []\n\tlet updatedContent = content\n\n\t// Get existing instructions array\n\tconst existingInstructions = (config as { instructions?: string[] }).instructions ?? []\n\n\tfor (const instruction of instructions) {\n\t\tif (existingInstructions.includes(instruction)) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Add to the instructions array at the next index\n\t\tconst newIndex = existingInstructions.length + added.length\n\t\tconst edits = modify(updatedContent, [\"instructions\", newIndex], instruction, JSONC_OPTIONS)\n\t\tupdatedContent = applyEdits(updatedContent, edits)\n\t\tadded.push(instruction)\n\t}\n\n\treturn { content: updatedContent, added }\n}\n\n// =============================================================================\n// MAIN UPDATER\n// =============================================================================\n\n/**\n * Update opencode.json with MCP servers, tool settings, and agent configuration.\n *\n * For agent-scoped MCPs (mcpScope: \"agent\"):\n * 1. Adds MCP definition to global `mcp` section\n * 2. Disables MCP tools globally with `tools: { \"name_*\": false }`\n * 3. Enables for owning agent with `agent.NAME.tools: { \"name_*\": true }`\n *\n * For global MCPs (mcpScope: \"global\"):\n * 1. Only adds MCP definition to global `mcp` section (available to all)\n */\nexport async function updateOpencodeConfig(\n\tcwd: string,\n\toptions: UpdateOpencodeConfigOptions,\n): Promise<UpdateOpencodeConfigResult> {\n\tconst existing = await readOpencodeConfig(cwd)\n\n\tlet content: string\n\tlet config: OpencodeConfig\n\tlet configPath: string\n\tlet created = false\n\n\tif (existing) {\n\t\tcontent = existing.content\n\t\tconfig = existing.config\n\t\tconfigPath = existing.path\n\t} else {\n\t\t// Create new config with schema\n\t\tconfig = { $schema: \"https://opencode.ai/config.json\" }\n\t\tcontent = JSON.stringify(config, null, \"\\t\")\n\t\tconfigPath = `${cwd}/opencode.json`\n\t\tcreated = true\n\t}\n\n\tlet mcpAdded: string[] = []\n\tlet mcpSkipped: string[] = []\n\tlet agentsConfigured: string[] = []\n\tlet toolsDisabled: string[] = []\n\tlet pluginsAdded: string[] = []\n\tlet instructionsAdded: string[] = []\n\n\t// Apply MCP servers\n\tif (options.mcpServers && Object.keys(options.mcpServers).length > 0) {\n\t\tconst result = applyMcpServers(content, config, options.mcpServers)\n\t\tcontent = result.content\n\t\tmcpAdded = result.added\n\t\tmcpSkipped = result.skipped\n\t}\n\n\t// Apply agent-scoped tool configuration\n\t// Note: We apply scoping for ALL servers in bindings, not just newly added ones.\n\t// This ensures agent scoping is configured even if MCPs already existed.\n\tif (options.agentMcpBindings && options.agentMcpBindings.length > 0) {\n\t\t// Collect all unique server names that need agent scoping\n\t\tconst allScopedServers = [...new Set(options.agentMcpBindings.flatMap((b) => b.serverNames))]\n\n\t\tif (allScopedServers.length > 0) {\n\t\t\t// Disable globally\n\t\t\tcontent = applyGlobalToolDisables(content, allScopedServers)\n\n\t\t\t// Enable per-agent\n\t\t\tconst agentResult = applyAgentToolEnables(content, options.agentMcpBindings)\n\t\t\tcontent = agentResult.content\n\t\t\tagentsConfigured = agentResult.agentsConfigured\n\t\t}\n\t}\n\n\t// Apply default agent\n\tif (options.defaultAgent) {\n\t\t// Re-parse config after modifications\n\t\tconst updatedConfig = parseJsonc(content, [], { allowTrailingComma: true }) as OpencodeConfig\n\t\tcontent = applyDefaultAgent(content, updatedConfig, options.defaultAgent)\n\t}\n\n\t// Apply disabled tools\n\tif (options.disabledTools && options.disabledTools.length > 0) {\n\t\tcontent = applyDisabledTools(content, options.disabledTools)\n\t\ttoolsDisabled = options.disabledTools\n\t}\n\n\t// Apply plugins\n\tif (options.plugins && options.plugins.length > 0) {\n\t\t// Re-parse config after modifications\n\t\tconst updatedConfig = parseJsonc(content, [], { allowTrailingComma: true }) as OpencodeConfig\n\t\tconst result = applyPlugins(content, updatedConfig, options.plugins)\n\t\tcontent = result.content\n\t\tpluginsAdded = result.added\n\t}\n\n\t// Apply agent configs\n\tif (options.agentConfigs && Object.keys(options.agentConfigs).length > 0) {\n\t\t// Re-parse config after modifications to get current user settings\n\t\tconst updatedConfig = parseJsonc(content, [], { allowTrailingComma: true }) as OpencodeConfig\n\t\tconst result = applyAgentConfigs(content, updatedConfig, options.agentConfigs)\n\t\tcontent = result.content\n\t\t// Merge with existing agentsConfigured from MCP bindings\n\t\tagentsConfigured = [...new Set([...agentsConfigured, ...result.agentsConfigured])]\n\t}\n\n\t// Apply instructions\n\tif (options.instructions && options.instructions.length > 0) {\n\t\t// Re-parse config after modifications\n\t\tconst updatedConfig = parseJsonc(content, [], { allowTrailingComma: true }) as OpencodeConfig\n\t\tconst result = applyInstructions(content, updatedConfig, options.instructions)\n\t\tcontent = result.content\n\t\tinstructionsAdded = result.added\n\t}\n\n\t// Write config\n\tawait writeOpencodeConfig(configPath, content)\n\n\treturn {\n\t\tpath: configPath,\n\t\tcreated,\n\t\tmcpAdded,\n\t\tmcpSkipped,\n\t\tagentsConfigured,\n\t\ttoolsDisabled,\n\t\tpluginsAdded,\n\t\tinstructionsAdded,\n\t}\n}\n",
46
39
  "/**\n * Environment detection utilities\n * Detects CI, TTY, color support for proper output handling\n */\n\n/** Running in CI environment */\nexport const isCI = Boolean(\n\tprocess.env.CI ||\n\t\tprocess.env.GITHUB_ACTIONS ||\n\t\tprocess.env.GITLAB_CI ||\n\t\tprocess.env.CIRCLECI ||\n\t\tprocess.env.JENKINS_URL ||\n\t\tprocess.env.BUILDKITE,\n)\n\n/** Running in interactive terminal */\nexport const isTTY = Boolean(process.stdout.isTTY && !isCI)\n\n/** Terminal supports colors */\nexport const supportsColor = Boolean(\n\tisTTY && process.env.FORCE_COLOR !== \"0\" && process.env.NO_COLOR === undefined,\n)\n\n/** Get terminal width, default to 80 */\nexport function getTerminalWidth(): number {\n\treturn process.stdout.columns || 80\n}\n",
47
40
  "'use strict';\n\nlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nconst $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t),\n\n\t// modifiers\n\treset: init(0, 0),\n\tbold: init(1, 22),\n\tdim: init(2, 22),\n\titalic: init(3, 23),\n\tunderline: init(4, 24),\n\tinverse: init(7, 27),\n\thidden: init(8, 28),\n\tstrikethrough: init(9, 29),\n\n\t// colors\n\tblack: init(30, 39),\n\tred: init(31, 39),\n\tgreen: init(32, 39),\n\tyellow: init(33, 39),\n\tblue: init(34, 39),\n\tmagenta: init(35, 39),\n\tcyan: init(36, 39),\n\twhite: init(37, 39),\n\tgray: init(90, 39),\n\tgrey: init(90, 39),\n\n\t// background colors\n\tbgBlack: init(40, 49),\n\tbgRed: init(41, 49),\n\tbgGreen: init(42, 49),\n\tbgYellow: init(43, 49),\n\tbgBlue: init(44, 49),\n\tbgMagenta: init(45, 49),\n\tbgCyan: init(46, 49),\n\tbgWhite: init(47, 49)\n};\n\nfunction run(arr, str) {\n\tlet i=0, tmp, beg='', end='';\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tbeg += tmp.open;\n\t\tend += tmp.close;\n\t\tif (!!~str.indexOf(tmp.close)) {\n\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t}\n\t}\n\treturn beg + str + end;\n}\n\nfunction chain(has, keys) {\n\tlet ctx = { has, keys };\n\n\tctx.reset = $.reset.bind(ctx);\n\tctx.bold = $.bold.bind(ctx);\n\tctx.dim = $.dim.bind(ctx);\n\tctx.italic = $.italic.bind(ctx);\n\tctx.underline = $.underline.bind(ctx);\n\tctx.inverse = $.inverse.bind(ctx);\n\tctx.hidden = $.hidden.bind(ctx);\n\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\tctx.black = $.black.bind(ctx);\n\tctx.red = $.red.bind(ctx);\n\tctx.green = $.green.bind(ctx);\n\tctx.yellow = $.yellow.bind(ctx);\n\tctx.blue = $.blue.bind(ctx);\n\tctx.magenta = $.magenta.bind(ctx);\n\tctx.cyan = $.cyan.bind(ctx);\n\tctx.white = $.white.bind(ctx);\n\tctx.gray = $.gray.bind(ctx);\n\tctx.grey = $.grey.bind(ctx);\n\n\tctx.bgBlack = $.bgBlack.bind(ctx);\n\tctx.bgRed = $.bgRed.bind(ctx);\n\tctx.bgGreen = $.bgGreen.bind(ctx);\n\tctx.bgYellow = $.bgYellow.bind(ctx);\n\tctx.bgBlue = $.bgBlue.bind(ctx);\n\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\tctx.bgCyan = $.bgCyan.bind(ctx);\n\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\treturn ctx;\n}\n\nfunction init(open, close) {\n\tlet blk = {\n\t\topen: `\\x1b[${open}m`,\n\t\tclose: `\\x1b[${close}m`,\n\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t};\n\treturn function (txt) {\n\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\t!!~this.has.indexOf(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t}\n\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t};\n}\n\nexport default $;\n",
48
41
  "/**\n * Logger utility with quiet/verbose modes\n * Inspired by ShadCN's logger pattern\n */\n\nimport kleur from \"kleur\"\nimport { supportsColor } from \"./env\"\n\n// Disable colors if not supported\nif (!supportsColor) {\n\tkleur.enabled = false\n}\n\nexport interface LoggerOptions {\n\tquiet?: boolean\n\tverbose?: boolean\n}\n\nlet options: LoggerOptions = {}\n\nexport function setLoggerOptions(opts: LoggerOptions): void {\n\toptions = opts\n}\n\nexport const logger = {\n\tinfo(...args: unknown[]): void {\n\t\tif (options.quiet) return\n\t\tconsole.log(kleur.blue(\"info\"), ...args)\n\t},\n\n\tsuccess(...args: unknown[]): void {\n\t\tif (options.quiet) return\n\t\tconsole.log(kleur.green(\"✓\"), ...args)\n\t},\n\n\twarn(...args: unknown[]): void {\n\t\tif (options.quiet) return\n\t\tconsole.warn(kleur.yellow(\"warn\"), ...args)\n\t},\n\n\terror(...args: unknown[]): void {\n\t\t// Errors are always shown\n\t\tconsole.error(kleur.red(\"error\"), ...args)\n\t},\n\n\tdebug(...args: unknown[]): void {\n\t\tif (!options.verbose) return\n\t\tconsole.log(kleur.gray(\"debug\"), ...args)\n\t},\n\n\tlog(...args: unknown[]): void {\n\t\tif (options.quiet) return\n\t\tconsole.log(...args)\n\t},\n\n\t/** Print a blank line */\n\tbreak(): void {\n\t\tif (options.quiet) return\n\t\tconsole.log(\"\")\n\t},\n}\n\n/** Highlight text with color */\nexport const highlight = {\n\tcomponent: (text: string) => kleur.cyan(text),\n\tpath: (text: string) => kleur.green(text),\n\tcommand: (text: string) => kleur.yellow(text),\n\turl: (text: string) => kleur.blue().underline(text),\n\terror: (text: string) => kleur.red(text),\n\tdim: (text: string) => kleur.gray(text),\n\tbold: (text: string) => kleur.bold(text),\n}\n",
@@ -89,7 +82,7 @@
89
82
  "/**\n * Search/List Command\n *\n * Search for components across registries or list installed.\n */\n\nimport type { Command } from \"commander\"\nimport fuzzysort from \"fuzzysort\"\nimport kleur from \"kleur\"\nimport { fetchRegistryIndex } from \"../registry/fetcher.js\"\nimport { readOcxConfig, readOcxLock } from \"../schemas/config.js\"\nimport { createSpinner, handleError, logger, outputJson } from \"../utils/index.js\"\n\ninterface SearchOptions {\n\tcwd: string\n\tjson: boolean\n\tquiet: boolean\n\tverbose: boolean\n\tinstalled: boolean\n\tlimit: number\n}\n\nexport function registerSearchCommand(program: Command): void {\n\tprogram\n\t\t.command(\"search\")\n\t\t.alias(\"list\")\n\t\t.description(\"Search for components across registries or list installed\")\n\t\t.argument(\"[query]\", \"Search query\")\n\t\t.option(\"--cwd <path>\", \"Working directory\", process.cwd())\n\t\t.option(\"--json\", \"Output as JSON\", false)\n\t\t.option(\"-q, --quiet\", \"Suppress output\", false)\n\t\t.option(\"-v, --verbose\", \"Verbose output\", false)\n\t\t.option(\"-i, --installed\", \"List installed components only\", false)\n\t\t.option(\"-l, --limit <n>\", \"Limit results\", \"20\")\n\t\t.action(async (query: string | undefined, options: SearchOptions) => {\n\t\t\ttry {\n\t\t\t\tconst limit = parseInt(String(options.limit), 10)\n\n\t\t\t\t// List installed only\n\t\t\t\tif (options.installed) {\n\t\t\t\t\tconst lock = await readOcxLock(options.cwd)\n\t\t\t\t\tif (!lock) {\n\t\t\t\t\t\tif (options.json) {\n\t\t\t\t\t\t\toutputJson({ success: true, data: { components: [] } })\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlogger.info(\"No components installed.\")\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tconst installed = Object.entries(lock.installed).map(([name, info]) => ({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tregistry: info.registry,\n\t\t\t\t\t\tversion: info.version,\n\t\t\t\t\t\tinstalledAt: info.installedAt,\n\t\t\t\t\t}))\n\n\t\t\t\t\tif (options.json) {\n\t\t\t\t\t\toutputJson({ success: true, data: { components: installed } })\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlogger.info(`Installed components (${installed.length}):`)\n\t\t\t\t\t\tfor (const comp of installed) {\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t` ${kleur.cyan(comp.name)} ${kleur.dim(`v${comp.version}`)} from ${comp.registry}`,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// Search across registries\n\t\t\t\tconst config = await readOcxConfig(options.cwd)\n\t\t\t\tif (!config) {\n\t\t\t\t\tlogger.warn(\"No ocx.jsonc found. Run 'ocx init' first.\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (options.verbose) {\n\t\t\t\t\tlogger.info(`Searching in ${Object.keys(config.registries).length} registries...`)\n\t\t\t\t}\n\n\t\t\t\tconst allComponents: Array<{\n\t\t\t\t\tname: string\n\t\t\t\t\tdescription: string\n\t\t\t\t\ttype: string\n\t\t\t\t\tregistry: string\n\t\t\t\t}> = []\n\n\t\t\t\tconst spinner = createSpinner({\n\t\t\t\t\ttext: \"Searching registries...\",\n\t\t\t\t\tquiet: options.quiet || options.verbose,\n\t\t\t\t})\n\n\t\t\t\tif (!options.json && !options.verbose) {\n\t\t\t\t\tspinner.start()\n\t\t\t\t}\n\n\t\t\t\tfor (const [registryName, registryConfig] of Object.entries(config.registries)) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (options.verbose) {\n\t\t\t\t\t\t\tlogger.info(`Fetching index from ${registryName} (${registryConfig.url})...`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst index = await fetchRegistryIndex(registryConfig.url)\n\t\t\t\t\t\tif (options.verbose) {\n\t\t\t\t\t\t\tlogger.info(`Found ${index.components.length} components in ${registryName}`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const comp of index.components) {\n\t\t\t\t\t\t\tallComponents.push({\n\t\t\t\t\t\t\t\tname: `${index.namespace}/${comp.name}`,\n\t\t\t\t\t\t\t\tdescription: comp.description,\n\t\t\t\t\t\t\t\ttype: comp.type,\n\t\t\t\t\t\t\t\tregistry: registryName,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (options.verbose) {\n\t\t\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t\t\t`Failed to fetch registry ${registryName}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Skip failed registries\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!options.json && !options.verbose) {\n\t\t\t\t\tspinner.stop()\n\t\t\t\t}\n\n\t\t\t\t// Filter by query if provided\n\t\t\t\tlet results = allComponents\n\t\t\t\tif (query) {\n\t\t\t\t\tconst fuzzyResults = fuzzysort.go(query, allComponents, {\n\t\t\t\t\t\tkeys: [\"name\", \"description\"],\n\t\t\t\t\t\tlimit,\n\t\t\t\t\t})\n\t\t\t\t\tresults = fuzzyResults.map((r) => r.obj)\n\t\t\t\t} else {\n\t\t\t\t\tresults = results.slice(0, limit)\n\t\t\t\t}\n\n\t\t\t\tif (options.json) {\n\t\t\t\t\toutputJson({ success: true, data: { components: results } })\n\t\t\t\t} else {\n\t\t\t\t\tif (results.length === 0) {\n\t\t\t\t\t\tlogger.info(\"No components found.\")\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlogger.info(`Found ${results.length} components:`)\n\t\t\t\t\t\tfor (const comp of results) {\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t` ${kleur.cyan(comp.name)} ${kleur.dim(`(${comp.type})`)} - ${comp.description}`,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n",
90
83
  "#!/usr/bin/env bun\n/**\n * OCX CLI - OpenCode Extensions\n *\n * A ShadCN-style CLI for installing agents, skills, plugins, and commands\n * into OpenCode projects.\n */\n\nimport { Command } from \"commander\"\nimport { registerAddCommand } from \"./commands/add.js\"\nimport { registerBuildCommand } from \"./commands/build.js\"\nimport { registerDiffCommand } from \"./commands/diff.js\"\nimport { registerInitCommand } from \"./commands/init.js\"\nimport { registerRegistryCommand } from \"./commands/registry.js\"\nimport { registerSearchCommand } from \"./commands/search.js\"\nimport { handleError } from \"./utils/index.js\"\n\n// Version injected at build time\ndeclare const __VERSION__: string\nconst version = typeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"0.0.0-dev\"\n\nasync function main() {\n\tconst program = new Command()\n\t\t.name(\"ocx\")\n\t\t.description(\"OpenCode Extensions - Install agents, skills, plugins, and commands\")\n\t\t.version(version)\n\n\t// Register all commands using the registration pattern\n\tregisterInitCommand(program)\n\tregisterAddCommand(program)\n\tregisterDiffCommand(program)\n\tregisterSearchCommand(program)\n\tregisterRegistryCommand(program)\n\tregisterBuildCommand(program)\n\n\t// Parse and handle errors\n\tawait program.parseAsync(process.argv)\n}\n\nmain().catch((err) => {\n\thandleError(err)\n})\n"
91
84
  ],
92
- "mappings": "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C5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gB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AAM,QACN,MAAK,QAAU,MAAK,QACpB,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,MAAK,QAAU,MAAK,QACpB,MAAK,QAAU,MAAK,QACpB,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,OAAM,QACN,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,MAAK,QAAU,MAAK,QACpB,MAAK,QAAU,MAAK,QACpB,MAAK,QAAU,MAAK,QACpB,MAAK,QAAU,MAAK,QACpB,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,OAAM,QACN,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,MAAK,QAAU,MAAK,QACpB,MAAK,QAAU,MAAK,QACpB,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,OAAM,QACN,O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",
93
- "debugId": "4504091B3609ACE764756E2164756E21",
85
+ "mappings": "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EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,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",
86
+ "debugId": "D9C733580818864264756E2164756E21",
94
87
  "names": []
95
88
  }