{"version":3,"file":"cli.cjs","names":["path","fs","process","commander","constants","Stream","fs","util","env","IS_USER_ROOT","IS_USER_ROOT","process","fs","process","process","process","Interceptor","path","fs","path","isObject","path","fs","os","validate","#options","#fetch","#decorateResponse","#getNormalizedOptions","#retryCount","#cancelResponseBody","#retry","#originalRequest","#cancelBody","#normalizeSearchParams","#input","#userProvidedAbortSignal","#abortController","#wrapRequestWithUploadProgress","#calculateRetryDelay","#calculateDelay","#assignRequest","#cachedNormalizedOptions","fs","path","Stream","fs","exports","path","fs","ini","url","fs","path","path","fs","path","os","path","path","packageJson","semver","packageJson","process","process","ini","fs","path","os","path","__dirname","path","fs","emojiRegex","process","cliBoxes","chalk","env","__dirname","path","#options","#packageVersion","#updateCheckInterval","#isDisabled","process","ConfigStore","chalk"],"sources":["../node_modules/commander/lib/error.js","../node_modules/commander/lib/argument.js","../node_modules/commander/lib/help.js","../node_modules/commander/lib/option.js","../node_modules/commander/lib/suggestSimilar.js","../node_modules/commander/lib/command.js","../node_modules/commander/index.js","../node_modules/commander/esm.mjs","../node_modules/rfdc/index.js","../node_modules/graceful-fs/polyfills.js","../node_modules/graceful-fs/legacy-streams.js","../node_modules/graceful-fs/clone.js","../node_modules/graceful-fs/graceful-fs.js","../node_modules/xdg-basedir/index.js","../node_modules/stubborn-utils/dist/attemptify_async.js","../node_modules/stubborn-utils/dist/attemptify_sync.js","../node_modules/stubborn-utils/dist/retryify_async.js","../node_modules/stubborn-utils/dist/retryify_sync.js","../node_modules/stubborn-fs/dist/handlers.js","../node_modules/stubborn-fs/dist/constants.js","../node_modules/stubborn-fs/dist/index.js","../node_modules/atomically/dist/constants.js","../node_modules/atomically/dist/utils/lang.js","../node_modules/when-exit/dist/node/constants.js","../node_modules/when-exit/dist/node/signals.js","../node_modules/when-exit/dist/node/interceptor.js","../node_modules/when-exit/dist/node/index.js","../node_modules/atomically/dist/utils/temp.js","../node_modules/atomically/dist/index.js","../node_modules/dot-prop/index.js","../node_modules/configstore/index.js","../node_modules/ky/distribution/errors/HTTPError.js","../node_modules/ky/distribution/errors/NonError.js","../node_modules/ky/distribution/errors/ForceRetryError.js","../node_modules/ky/distribution/core/constants.js","../node_modules/ky/distribution/utils/body.js","../node_modules/ky/distribution/utils/is.js","../node_modules/ky/distribution/utils/merge.js","../node_modules/ky/distribution/utils/normalize.js","../node_modules/ky/distribution/errors/TimeoutError.js","../node_modules/ky/distribution/utils/timeout.js","../node_modules/ky/distribution/utils/delay.js","../node_modules/ky/distribution/utils/options.js","../node_modules/ky/distribution/utils/type-guards.js","../node_modules/ky/distribution/core/Ky.js","../node_modules/ky/distribution/index.js","../node_modules/rc/node_modules/ini/ini.js","../node_modules/rc/node_modules/strip-json-comments/index.js","../node_modules/rc/lib/utils.js","../node_modules/deep-extend/lib/deep-extend.js","../node_modules/minimist/index.js","../node_modules/rc/index.js","../node_modules/registry-url/index.js","../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/polyfills.js","../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/legacy-streams.js","../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/clone.js","../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/graceful-fs.js","../node_modules/@pnpm/network.ca-file/dist/ca-file.js","../node_modules/@pnpm/network.ca-file/dist/index.js","../node_modules/proto-list/proto-list.js","../node_modules/config-chain/node_modules/ini/ini.js","../node_modules/config-chain/index.js","../node_modules/@pnpm/npm-conf/lib/envKeyToSetting.js","../node_modules/@pnpm/config.env-replace/dist/env-replace.js","../node_modules/@pnpm/config.env-replace/dist/index.js","../node_modules/@pnpm/npm-conf/lib/util.js","../node_modules/@pnpm/npm-conf/lib/types.js","../node_modules/@pnpm/npm-conf/lib/conf.js","../node_modules/@pnpm/npm-conf/lib/defaults.js","../node_modules/@pnpm/npm-conf/index.js","../node_modules/registry-auth-token/index.js","../node_modules/package-json/index.js","../node_modules/latest-version/index.js","../node_modules/is-npm/index.js","../node_modules/global-directory/node_modules/ini/lib/ini.js","../node_modules/global-directory/index.js","../node_modules/is-installed-globally/node_modules/is-path-inside/index.js","../node_modules/is-installed-globally/index.js","../node_modules/ansi-regex/index.js","../node_modules/strip-ansi/index.js","../node_modules/get-east-asian-width/lookup-data.js","../node_modules/get-east-asian-width/utilities.js","../node_modules/get-east-asian-width/lookup.js","../node_modules/get-east-asian-width/index.js","../node_modules/update-notifier/node_modules/emoji-regex/index.mjs","../node_modules/update-notifier/node_modules/string-width/index.js","../node_modules/update-notifier/node_modules/widest-line/index.js","../node_modules/cli-boxes/boxes.json","../node_modules/cli-boxes/index.js","../node_modules/update-notifier/node_modules/camelcase/index.js","../node_modules/ansi-align/node_modules/ansi-regex/index.js","../node_modules/ansi-align/node_modules/strip-ansi/index.js","../node_modules/ansi-align/node_modules/emoji-regex/index.js","../node_modules/ansi-align/node_modules/string-width/index.js","../node_modules/ansi-align/index.js","../node_modules/update-notifier/node_modules/ansi-styles/index.js","../node_modules/update-notifier/node_modules/wrap-ansi/index.js","../node_modules/update-notifier/node_modules/boxen/index.js","../node_modules/is-in-ci/index.js","../node_modules/escape-goat/index.js","../node_modules/pupa/index.js","../node_modules/update-notifier/update-notifier.js","../node_modules/update-notifier/index.js","../src/bin/cli.ts"],"sourcesContent":["/**\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","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","const { humanReadableArgName } = require('./argument.js');\n\n/**\n * TypeScript import types for JSDoc, used by Visual Studio Code IntelliSense and `npm run typescript-checkJS`\n * https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#import-types\n * @typedef { import(\"./argument.js\").Argument } Argument\n * @typedef { import(\"./command.js\").Command } Command\n * @typedef { import(\"./option.js\").Option } Option\n */\n\n// Although this is a class, methods are static in style to allow override using subclass or just functions.\nclass Help {\n  constructor() {\n    this.helpWidth = undefined;\n    this.minWidthToWrap = 40;\n    this.sortSubcommands = false;\n    this.sortOptions = false;\n    this.showGlobalOptions = false;\n  }\n\n  /**\n   * prepareContext is called by Commander after applying overrides from `Command.configureHelp()`\n   * and just before calling `formatHelp()`.\n   *\n   * Commander just uses the helpWidth and the rest is provided for optional use by more complex subclasses.\n   *\n   * @param {{ error?: boolean, helpWidth?: number, outputHasColors?: boolean }} contextOptions\n   */\n  prepareContext(contextOptions) {\n    this.helpWidth = this.helpWidth ?? contextOptions.helpWidth ?? 80;\n  }\n\n  /**\n   * Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one.\n   *\n   * @param {Command} cmd\n   * @returns {Command[]}\n   */\n\n  visibleCommands(cmd) {\n    const visibleCommands = cmd.commands.filter((cmd) => !cmd._hidden);\n    const helpCommand = cmd._getHelpCommand();\n    if (helpCommand && !helpCommand._hidden) {\n      visibleCommands.push(helpCommand);\n    }\n    if (this.sortSubcommands) {\n      visibleCommands.sort((a, b) => {\n        // @ts-ignore: because overloaded return type\n        return a.name().localeCompare(b.name());\n      });\n    }\n    return visibleCommands;\n  }\n\n  /**\n   * Compare options for sort.\n   *\n   * @param {Option} a\n   * @param {Option} b\n   * @returns {number}\n   */\n  compareOptions(a, b) {\n    const getSortKey = (option) => {\n      // WYSIWYG for order displayed in help. Short used for comparison if present. No special handling for negated.\n      return option.short\n        ? option.short.replace(/^-/, '')\n        : option.long.replace(/^--/, '');\n    };\n    return getSortKey(a).localeCompare(getSortKey(b));\n  }\n\n  /**\n   * Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one.\n   *\n   * @param {Command} cmd\n   * @returns {Option[]}\n   */\n\n  visibleOptions(cmd) {\n    const visibleOptions = cmd.options.filter((option) => !option.hidden);\n    // Built-in help option.\n    const helpOption = cmd._getHelpOption();\n    if (helpOption && !helpOption.hidden) {\n      // Automatically hide conflicting flags. Bit dubious but a historical behaviour that is convenient for single-command programs.\n      const removeShort = helpOption.short && cmd._findOption(helpOption.short);\n      const removeLong = helpOption.long && cmd._findOption(helpOption.long);\n      if (!removeShort && !removeLong) {\n        visibleOptions.push(helpOption); // no changes needed\n      } else if (helpOption.long && !removeLong) {\n        visibleOptions.push(\n          cmd.createOption(helpOption.long, helpOption.description),\n        );\n      } else if (helpOption.short && !removeShort) {\n        visibleOptions.push(\n          cmd.createOption(helpOption.short, helpOption.description),\n        );\n      }\n    }\n    if (this.sortOptions) {\n      visibleOptions.sort(this.compareOptions);\n    }\n    return visibleOptions;\n  }\n\n  /**\n   * Get an array of the visible global options. (Not including help.)\n   *\n   * @param {Command} cmd\n   * @returns {Option[]}\n   */\n\n  visibleGlobalOptions(cmd) {\n    if (!this.showGlobalOptions) return [];\n\n    const globalOptions = [];\n    for (\n      let ancestorCmd = cmd.parent;\n      ancestorCmd;\n      ancestorCmd = ancestorCmd.parent\n    ) {\n      const visibleOptions = ancestorCmd.options.filter(\n        (option) => !option.hidden,\n      );\n      globalOptions.push(...visibleOptions);\n    }\n    if (this.sortOptions) {\n      globalOptions.sort(this.compareOptions);\n    }\n    return globalOptions;\n  }\n\n  /**\n   * Get an array of the arguments if any have a description.\n   *\n   * @param {Command} cmd\n   * @returns {Argument[]}\n   */\n\n  visibleArguments(cmd) {\n    // Side effect! Apply the legacy descriptions before the arguments are displayed.\n    if (cmd._argsDescription) {\n      cmd.registeredArguments.forEach((argument) => {\n        argument.description =\n          argument.description || cmd._argsDescription[argument.name()] || '';\n      });\n    }\n\n    // If there are any arguments with a description then return all the arguments.\n    if (cmd.registeredArguments.find((argument) => argument.description)) {\n      return cmd.registeredArguments;\n    }\n    return [];\n  }\n\n  /**\n   * Get the command term to show in the list of subcommands.\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  subcommandTerm(cmd) {\n    // Legacy. Ignores custom usage string, and nested commands.\n    const args = cmd.registeredArguments\n      .map((arg) => humanReadableArgName(arg))\n      .join(' ');\n    return (\n      cmd._name +\n      (cmd._aliases[0] ? '|' + cmd._aliases[0] : '') +\n      (cmd.options.length ? ' [options]' : '') + // simplistic check for non-help option\n      (args ? ' ' + args : '')\n    );\n  }\n\n  /**\n   * Get the option term to show in the list of options.\n   *\n   * @param {Option} option\n   * @returns {string}\n   */\n\n  optionTerm(option) {\n    return option.flags;\n  }\n\n  /**\n   * Get the argument term to show in the list of arguments.\n   *\n   * @param {Argument} argument\n   * @returns {string}\n   */\n\n  argumentTerm(argument) {\n    return argument.name();\n  }\n\n  /**\n   * Get the longest command term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestSubcommandTermLength(cmd, helper) {\n    return helper.visibleCommands(cmd).reduce((max, command) => {\n      return Math.max(\n        max,\n        this.displayWidth(\n          helper.styleSubcommandTerm(helper.subcommandTerm(command)),\n        ),\n      );\n    }, 0);\n  }\n\n  /**\n   * Get the longest option term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestOptionTermLength(cmd, helper) {\n    return helper.visibleOptions(cmd).reduce((max, option) => {\n      return Math.max(\n        max,\n        this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option))),\n      );\n    }, 0);\n  }\n\n  /**\n   * Get the longest global option term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestGlobalOptionTermLength(cmd, helper) {\n    return helper.visibleGlobalOptions(cmd).reduce((max, option) => {\n      return Math.max(\n        max,\n        this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option))),\n      );\n    }, 0);\n  }\n\n  /**\n   * Get the longest argument term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestArgumentTermLength(cmd, helper) {\n    return helper.visibleArguments(cmd).reduce((max, argument) => {\n      return Math.max(\n        max,\n        this.displayWidth(\n          helper.styleArgumentTerm(helper.argumentTerm(argument)),\n        ),\n      );\n    }, 0);\n  }\n\n  /**\n   * Get the command usage to be displayed at the top of the built-in help.\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  commandUsage(cmd) {\n    // Usage\n    let cmdName = cmd._name;\n    if (cmd._aliases[0]) {\n      cmdName = cmdName + '|' + cmd._aliases[0];\n    }\n    let ancestorCmdNames = '';\n    for (\n      let ancestorCmd = cmd.parent;\n      ancestorCmd;\n      ancestorCmd = ancestorCmd.parent\n    ) {\n      ancestorCmdNames = ancestorCmd.name() + ' ' + ancestorCmdNames;\n    }\n    return ancestorCmdNames + cmdName + ' ' + cmd.usage();\n  }\n\n  /**\n   * Get the description for the command.\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  commandDescription(cmd) {\n    // @ts-ignore: because overloaded return type\n    return cmd.description();\n  }\n\n  /**\n   * Get the subcommand summary to show in the list of subcommands.\n   * (Fallback to description for backwards compatibility.)\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  subcommandDescription(cmd) {\n    // @ts-ignore: because overloaded return type\n    return cmd.summary() || cmd.description();\n  }\n\n  /**\n   * Get the option description to show in the list of options.\n   *\n   * @param {Option} option\n   * @return {string}\n   */\n\n  optionDescription(option) {\n    const extraInfo = [];\n\n    if (option.argChoices) {\n      extraInfo.push(\n        // use stringify to match the display of the default value\n        `choices: ${option.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n      );\n    }\n    if (option.defaultValue !== undefined) {\n      // default for boolean and negated more for programmer than end user,\n      // but show true/false for boolean option as may be for hand-rolled env or config processing.\n      const showDefault =\n        option.required ||\n        option.optional ||\n        (option.isBoolean() && typeof option.defaultValue === 'boolean');\n      if (showDefault) {\n        extraInfo.push(\n          `default: ${option.defaultValueDescription || JSON.stringify(option.defaultValue)}`,\n        );\n      }\n    }\n    // preset for boolean and negated are more for programmer than end user\n    if (option.presetArg !== undefined && option.optional) {\n      extraInfo.push(`preset: ${JSON.stringify(option.presetArg)}`);\n    }\n    if (option.envVar !== undefined) {\n      extraInfo.push(`env: ${option.envVar}`);\n    }\n    if (extraInfo.length > 0) {\n      const extraDescription = `(${extraInfo.join(', ')})`;\n      if (option.description) {\n        return `${option.description} ${extraDescription}`;\n      }\n      return extraDescription;\n    }\n\n    return option.description;\n  }\n\n  /**\n   * Get the argument description to show in the list of arguments.\n   *\n   * @param {Argument} argument\n   * @return {string}\n   */\n\n  argumentDescription(argument) {\n    const extraInfo = [];\n    if (argument.argChoices) {\n      extraInfo.push(\n        // use stringify to match the display of the default value\n        `choices: ${argument.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n      );\n    }\n    if (argument.defaultValue !== undefined) {\n      extraInfo.push(\n        `default: ${argument.defaultValueDescription || JSON.stringify(argument.defaultValue)}`,\n      );\n    }\n    if (extraInfo.length > 0) {\n      const extraDescription = `(${extraInfo.join(', ')})`;\n      if (argument.description) {\n        return `${argument.description} ${extraDescription}`;\n      }\n      return extraDescription;\n    }\n    return argument.description;\n  }\n\n  /**\n   * Format a list of items, given a heading and an array of formatted items.\n   *\n   * @param {string} heading\n   * @param {string[]} items\n   * @param {Help} helper\n   * @returns string[]\n   */\n  formatItemList(heading, items, helper) {\n    if (items.length === 0) return [];\n\n    return [helper.styleTitle(heading), ...items, ''];\n  }\n\n  /**\n   * Group items by their help group heading.\n   *\n   * @param {Command[] | Option[]} unsortedItems\n   * @param {Command[] | Option[]} visibleItems\n   * @param {Function} getGroup\n   * @returns {Map<string, Command[] | Option[]>}\n   */\n  groupItems(unsortedItems, visibleItems, getGroup) {\n    const result = new Map();\n    // Add groups in order of appearance in unsortedItems.\n    unsortedItems.forEach((item) => {\n      const group = getGroup(item);\n      if (!result.has(group)) result.set(group, []);\n    });\n    // Add items in order of appearance in visibleItems.\n    visibleItems.forEach((item) => {\n      const group = getGroup(item);\n      if (!result.has(group)) {\n        result.set(group, []);\n      }\n      result.get(group).push(item);\n    });\n    return result;\n  }\n\n  /**\n   * Generate the built-in help text.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {string}\n   */\n\n  formatHelp(cmd, helper) {\n    const termWidth = helper.padWidth(cmd, helper);\n    const helpWidth = helper.helpWidth ?? 80; // in case prepareContext() was not called\n\n    function callFormatItem(term, description) {\n      return helper.formatItem(term, termWidth, description, helper);\n    }\n\n    // Usage\n    let output = [\n      `${helper.styleTitle('Usage:')} ${helper.styleUsage(helper.commandUsage(cmd))}`,\n      '',\n    ];\n\n    // Description\n    const commandDescription = helper.commandDescription(cmd);\n    if (commandDescription.length > 0) {\n      output = output.concat([\n        helper.boxWrap(\n          helper.styleCommandDescription(commandDescription),\n          helpWidth,\n        ),\n        '',\n      ]);\n    }\n\n    // Arguments\n    const argumentList = helper.visibleArguments(cmd).map((argument) => {\n      return callFormatItem(\n        helper.styleArgumentTerm(helper.argumentTerm(argument)),\n        helper.styleArgumentDescription(helper.argumentDescription(argument)),\n      );\n    });\n    output = output.concat(\n      this.formatItemList('Arguments:', argumentList, helper),\n    );\n\n    // Options\n    const optionGroups = this.groupItems(\n      cmd.options,\n      helper.visibleOptions(cmd),\n      (option) => option.helpGroupHeading ?? 'Options:',\n    );\n    optionGroups.forEach((options, group) => {\n      const optionList = options.map((option) => {\n        return callFormatItem(\n          helper.styleOptionTerm(helper.optionTerm(option)),\n          helper.styleOptionDescription(helper.optionDescription(option)),\n        );\n      });\n      output = output.concat(this.formatItemList(group, optionList, helper));\n    });\n\n    if (helper.showGlobalOptions) {\n      const globalOptionList = helper\n        .visibleGlobalOptions(cmd)\n        .map((option) => {\n          return callFormatItem(\n            helper.styleOptionTerm(helper.optionTerm(option)),\n            helper.styleOptionDescription(helper.optionDescription(option)),\n          );\n        });\n      output = output.concat(\n        this.formatItemList('Global Options:', globalOptionList, helper),\n      );\n    }\n\n    // Commands\n    const commandGroups = this.groupItems(\n      cmd.commands,\n      helper.visibleCommands(cmd),\n      (sub) => sub.helpGroup() || 'Commands:',\n    );\n    commandGroups.forEach((commands, group) => {\n      const commandList = commands.map((sub) => {\n        return callFormatItem(\n          helper.styleSubcommandTerm(helper.subcommandTerm(sub)),\n          helper.styleSubcommandDescription(helper.subcommandDescription(sub)),\n        );\n      });\n      output = output.concat(this.formatItemList(group, commandList, helper));\n    });\n\n    return output.join('\\n');\n  }\n\n  /**\n   * Return display width of string, ignoring ANSI escape sequences. Used in padding and wrapping calculations.\n   *\n   * @param {string} str\n   * @returns {number}\n   */\n  displayWidth(str) {\n    return stripColor(str).length;\n  }\n\n  /**\n   * Style the title for displaying in the help. Called with 'Usage:', 'Options:', etc.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  styleTitle(str) {\n    return str;\n  }\n\n  styleUsage(str) {\n    // Usage has lots of parts the user might like to color separately! Assume default usage string which is formed like:\n    //    command subcommand [options] [command] <foo> [bar]\n    return str\n      .split(' ')\n      .map((word) => {\n        if (word === '[options]') return this.styleOptionText(word);\n        if (word === '[command]') return this.styleSubcommandText(word);\n        if (word[0] === '[' || word[0] === '<')\n          return this.styleArgumentText(word);\n        return this.styleCommandText(word); // Restrict to initial words?\n      })\n      .join(' ');\n  }\n  styleCommandDescription(str) {\n    return this.styleDescriptionText(str);\n  }\n  styleOptionDescription(str) {\n    return this.styleDescriptionText(str);\n  }\n  styleSubcommandDescription(str) {\n    return this.styleDescriptionText(str);\n  }\n  styleArgumentDescription(str) {\n    return this.styleDescriptionText(str);\n  }\n  styleDescriptionText(str) {\n    return str;\n  }\n  styleOptionTerm(str) {\n    return this.styleOptionText(str);\n  }\n  styleSubcommandTerm(str) {\n    // This is very like usage with lots of parts! Assume default string which is formed like:\n    //    subcommand [options] <foo> [bar]\n    return str\n      .split(' ')\n      .map((word) => {\n        if (word === '[options]') return this.styleOptionText(word);\n        if (word[0] === '[' || word[0] === '<')\n          return this.styleArgumentText(word);\n        return this.styleSubcommandText(word); // Restrict to initial words?\n      })\n      .join(' ');\n  }\n  styleArgumentTerm(str) {\n    return this.styleArgumentText(str);\n  }\n  styleOptionText(str) {\n    return str;\n  }\n  styleArgumentText(str) {\n    return str;\n  }\n  styleSubcommandText(str) {\n    return str;\n  }\n  styleCommandText(str) {\n    return str;\n  }\n\n  /**\n   * Calculate the pad width from the maximum term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  padWidth(cmd, helper) {\n    return Math.max(\n      helper.longestOptionTermLength(cmd, helper),\n      helper.longestGlobalOptionTermLength(cmd, helper),\n      helper.longestSubcommandTermLength(cmd, helper),\n      helper.longestArgumentTermLength(cmd, helper),\n    );\n  }\n\n  /**\n   * Detect manually wrapped and indented strings by checking for line break followed by whitespace.\n   *\n   * @param {string} str\n   * @returns {boolean}\n   */\n  preformatted(str) {\n    return /\\n[^\\S\\r\\n]/.test(str);\n  }\n\n  /**\n   * Format the \"item\", which consists of a term and description. Pad the term and wrap the description, indenting the following lines.\n   *\n   * So \"TTT\", 5, \"DDD DDDD DD DDD\" might be formatted for this.helpWidth=17 like so:\n   *   TTT  DDD DDDD\n   *        DD DDD\n   *\n   * @param {string} term\n   * @param {number} termWidth\n   * @param {string} description\n   * @param {Help} helper\n   * @returns {string}\n   */\n  formatItem(term, termWidth, description, helper) {\n    const itemIndent = 2;\n    const itemIndentStr = ' '.repeat(itemIndent);\n    if (!description) return itemIndentStr + term;\n\n    // Pad the term out to a consistent width, so descriptions are aligned.\n    const paddedTerm = term.padEnd(\n      termWidth + term.length - helper.displayWidth(term),\n    );\n\n    // Format the description.\n    const spacerWidth = 2; // between term and description\n    const helpWidth = this.helpWidth ?? 80; // in case prepareContext() was not called\n    const remainingWidth = helpWidth - termWidth - spacerWidth - itemIndent;\n    let formattedDescription;\n    if (\n      remainingWidth < this.minWidthToWrap ||\n      helper.preformatted(description)\n    ) {\n      formattedDescription = description;\n    } else {\n      const wrappedDescription = helper.boxWrap(description, remainingWidth);\n      formattedDescription = wrappedDescription.replace(\n        /\\n/g,\n        '\\n' + ' '.repeat(termWidth + spacerWidth),\n      );\n    }\n\n    // Construct and overall indent.\n    return (\n      itemIndentStr +\n      paddedTerm +\n      ' '.repeat(spacerWidth) +\n      formattedDescription.replace(/\\n/g, `\\n${itemIndentStr}`)\n    );\n  }\n\n  /**\n   * Wrap a string at whitespace, preserving existing line breaks.\n   * Wrapping is skipped if the width is less than `minWidthToWrap`.\n   *\n   * @param {string} str\n   * @param {number} width\n   * @returns {string}\n   */\n  boxWrap(str, width) {\n    if (width < this.minWidthToWrap) return str;\n\n    const rawLines = str.split(/\\r\\n|\\n/);\n    // split up text by whitespace\n    const chunkPattern = /[\\s]*[^\\s]+/g;\n    const wrappedLines = [];\n    rawLines.forEach((line) => {\n      const chunks = line.match(chunkPattern);\n      if (chunks === null) {\n        wrappedLines.push('');\n        return;\n      }\n\n      let sumChunks = [chunks.shift()];\n      let sumWidth = this.displayWidth(sumChunks[0]);\n      chunks.forEach((chunk) => {\n        const visibleWidth = this.displayWidth(chunk);\n        // Accumulate chunks while they fit into width.\n        if (sumWidth + visibleWidth <= width) {\n          sumChunks.push(chunk);\n          sumWidth += visibleWidth;\n          return;\n        }\n        wrappedLines.push(sumChunks.join(''));\n\n        const nextChunk = chunk.trimStart(); // trim space at line break\n        sumChunks = [nextChunk];\n        sumWidth = this.displayWidth(nextChunk);\n      });\n      wrappedLines.push(sumChunks.join(''));\n    });\n\n    return wrappedLines.join('\\n');\n  }\n}\n\n/**\n * Strip style ANSI escape sequences from the string. In particular, SGR (Select Graphic Rendition) codes.\n *\n * @param {string} str\n * @returns {string}\n * @package\n */\n\nfunction stripColor(str) {\n  // eslint-disable-next-line no-control-regex\n  const sgrPattern = /\\x1b\\[\\d*(;\\d*)*m/g;\n  return str.replace(sgrPattern, '');\n}\n\nexports.Help = Help;\nexports.stripColor = stripColor;\n","const { InvalidArgumentError } = require('./error.js');\n\nclass Option {\n  /**\n   * Initialize a new `Option` with the given `flags` and `description`.\n   *\n   * @param {string} flags\n   * @param {string} [description]\n   */\n\n  constructor(flags, description) {\n    this.flags = flags;\n    this.description = description || '';\n\n    this.required = flags.includes('<'); // A value must be supplied when the option is specified.\n    this.optional = flags.includes('['); // A value is optional when the option is specified.\n    // variadic test ignores <value,...> et al which might be used to describe custom splitting of single argument\n    this.variadic = /\\w\\.\\.\\.[>\\]]$/.test(flags); // The option can take multiple values.\n    this.mandatory = false; // The option must have a value after parsing, which usually means it must be specified on command line.\n    const optionFlags = splitOptionFlags(flags);\n    this.short = optionFlags.shortFlag; // May be a short flag, undefined, or even a long flag (if option has two long flags).\n    this.long = optionFlags.longFlag;\n    this.negate = false;\n    if (this.long) {\n      this.negate = this.long.startsWith('--no-');\n    }\n    this.defaultValue = undefined;\n    this.defaultValueDescription = undefined;\n    this.presetArg = undefined;\n    this.envVar = undefined;\n    this.parseArg = undefined;\n    this.hidden = false;\n    this.argChoices = undefined;\n    this.conflictsWith = [];\n    this.implied = undefined;\n    this.helpGroupHeading = undefined; // soft initialised when option added to command\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 {Option}\n   */\n\n  default(value, description) {\n    this.defaultValue = value;\n    this.defaultValueDescription = description;\n    return this;\n  }\n\n  /**\n   * Preset to use when option used without option-argument, especially optional but also boolean and negated.\n   * The custom processing (parseArg) is called.\n   *\n   * @example\n   * new Option('--color').default('GREYSCALE').preset('RGB');\n   * new Option('--donate [amount]').preset('20').argParser(parseFloat);\n   *\n   * @param {*} arg\n   * @return {Option}\n   */\n\n  preset(arg) {\n    this.presetArg = arg;\n    return this;\n  }\n\n  /**\n   * Add option name(s) that conflict with this option.\n   * An error will be displayed if conflicting options are found during parsing.\n   *\n   * @example\n   * new Option('--rgb').conflicts('cmyk');\n   * new Option('--js').conflicts(['ts', 'jsx']);\n   *\n   * @param {(string | string[])} names\n   * @return {Option}\n   */\n\n  conflicts(names) {\n    this.conflictsWith = this.conflictsWith.concat(names);\n    return this;\n  }\n\n  /**\n   * Specify implied option values for when this option is set and the implied options are not.\n   *\n   * The custom processing (parseArg) is not called on the implied values.\n   *\n   * @example\n   * program\n   *   .addOption(new Option('--log', 'write logging information to file'))\n   *   .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' }));\n   *\n   * @param {object} impliedOptionValues\n   * @return {Option}\n   */\n  implies(impliedOptionValues) {\n    let newImplied = impliedOptionValues;\n    if (typeof impliedOptionValues === 'string') {\n      // string is not documented, but easy mistake and we can do what user probably intended.\n      newImplied = { [impliedOptionValues]: true };\n    }\n    this.implied = Object.assign(this.implied || {}, newImplied);\n    return this;\n  }\n\n  /**\n   * Set environment variable to check for option value.\n   *\n   * An environment variable is only used if when processed the current option value is\n   * undefined, or the source of the current value is 'default' or 'config' or 'env'.\n   *\n   * @param {string} name\n   * @return {Option}\n   */\n\n  env(name) {\n    this.envVar = name;\n    return this;\n  }\n\n  /**\n   * Set the custom handler for processing CLI option arguments into option values.\n   *\n   * @param {Function} [fn]\n   * @return {Option}\n   */\n\n  argParser(fn) {\n    this.parseArg = fn;\n    return this;\n  }\n\n  /**\n   * Whether the option is mandatory and must have a value after parsing.\n   *\n   * @param {boolean} [mandatory=true]\n   * @return {Option}\n   */\n\n  makeOptionMandatory(mandatory = true) {\n    this.mandatory = !!mandatory;\n    return this;\n  }\n\n  /**\n   * Hide option in help.\n   *\n   * @param {boolean} [hide=true]\n   * @return {Option}\n   */\n\n  hideHelp(hide = true) {\n    this.hidden = !!hide;\n    return this;\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   * Only allow option value to be one of choices.\n   *\n   * @param {string[]} values\n   * @return {Option}\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   * Return option name.\n   *\n   * @return {string}\n   */\n\n  name() {\n    if (this.long) {\n      return this.long.replace(/^--/, '');\n    }\n    return this.short.replace(/^-/, '');\n  }\n\n  /**\n   * Return option name, in a camelcase format that can be used\n   * as an object attribute key.\n   *\n   * @return {string}\n   */\n\n  attributeName() {\n    if (this.negate) {\n      return camelcase(this.name().replace(/^no-/, ''));\n    }\n    return camelcase(this.name());\n  }\n\n  /**\n   * Set the help group heading.\n   *\n   * @param {string} heading\n   * @return {Option}\n   */\n  helpGroup(heading) {\n    this.helpGroupHeading = heading;\n    return this;\n  }\n\n  /**\n   * Check if `arg` matches the short or long flag.\n   *\n   * @param {string} arg\n   * @return {boolean}\n   * @package\n   */\n\n  is(arg) {\n    return this.short === arg || this.long === arg;\n  }\n\n  /**\n   * Return whether a boolean option.\n   *\n   * Options are one of boolean, negated, required argument, or optional argument.\n   *\n   * @return {boolean}\n   * @package\n   */\n\n  isBoolean() {\n    return !this.required && !this.optional && !this.negate;\n  }\n}\n\n/**\n * This class is to make it easier to work with dual options, without changing the existing\n * implementation. We support separate dual options for separate positive and negative options,\n * like `--build` and `--no-build`, which share a single option value. This works nicely for some\n * use cases, but is tricky for others where we want separate behaviours despite\n * the single shared option value.\n */\nclass DualOptions {\n  /**\n   * @param {Option[]} options\n   */\n  constructor(options) {\n    this.positiveOptions = new Map();\n    this.negativeOptions = new Map();\n    this.dualOptions = new Set();\n    options.forEach((option) => {\n      if (option.negate) {\n        this.negativeOptions.set(option.attributeName(), option);\n      } else {\n        this.positiveOptions.set(option.attributeName(), option);\n      }\n    });\n    this.negativeOptions.forEach((value, key) => {\n      if (this.positiveOptions.has(key)) {\n        this.dualOptions.add(key);\n      }\n    });\n  }\n\n  /**\n   * Did the value come from the option, and not from possible matching dual option?\n   *\n   * @param {*} value\n   * @param {Option} option\n   * @returns {boolean}\n   */\n  valueFromOption(value, option) {\n    const optionKey = option.attributeName();\n    if (!this.dualOptions.has(optionKey)) return true;\n\n    // Use the value to deduce if (probably) came from the option.\n    const preset = this.negativeOptions.get(optionKey).presetArg;\n    const negativeValue = preset !== undefined ? preset : false;\n    return option.negate === (negativeValue === value);\n  }\n}\n\n/**\n * Convert string from kebab-case to camelCase.\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction camelcase(str) {\n  return str.split('-').reduce((str, word) => {\n    return str + word[0].toUpperCase() + word.slice(1);\n  });\n}\n\n/**\n * Split the short and long flag out of something like '-m,--mixed <value>'\n *\n * @private\n */\n\nfunction splitOptionFlags(flags) {\n  let shortFlag;\n  let longFlag;\n  // short flag, single dash and single character\n  const shortFlagExp = /^-[^-]$/;\n  // long flag, double dash and at least one character\n  const longFlagExp = /^--[^-]/;\n\n  const flagParts = flags.split(/[ |,]+/).concat('guard');\n  // Normal is short and/or long.\n  if (shortFlagExp.test(flagParts[0])) shortFlag = flagParts.shift();\n  if (longFlagExp.test(flagParts[0])) longFlag = flagParts.shift();\n  // Long then short. Rarely used but fine.\n  if (!shortFlag && shortFlagExp.test(flagParts[0]))\n    shortFlag = flagParts.shift();\n  // Allow two long flags, like '--ws, --workspace'\n  // This is the supported way to have a shortish option flag.\n  if (!shortFlag && longFlagExp.test(flagParts[0])) {\n    shortFlag = longFlag;\n    longFlag = flagParts.shift();\n  }\n\n  // Check for unprocessed flag. Fail noisily rather than silently ignore.\n  if (flagParts[0].startsWith('-')) {\n    const unsupportedFlag = flagParts[0];\n    const baseError = `option creation failed due to '${unsupportedFlag}' in option flags '${flags}'`;\n    if (/^-[^-][^-]/.test(unsupportedFlag))\n      throw new Error(\n        `${baseError}\n- a short flag is a single dash and a single character\n  - either use a single dash and a single character (for a short flag)\n  - or use a double dash for a long option (and can have two, like '--ws, --workspace')`,\n      );\n    if (shortFlagExp.test(unsupportedFlag))\n      throw new Error(`${baseError}\n- too many short flags`);\n    if (longFlagExp.test(unsupportedFlag))\n      throw new Error(`${baseError}\n- too many long flags`);\n\n    throw new Error(`${baseError}\n- unrecognised flag format`);\n  }\n  if (shortFlag === undefined && longFlag === undefined)\n    throw new Error(\n      `option creation failed due to no flags found in '${flags}'.`,\n    );\n\n  return { shortFlag, longFlag };\n}\n\nexports.Option = Option;\nexports.DualOptions = DualOptions;\n","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","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","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","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","'use strict'\nmodule.exports = rfdc\n\nfunction copyBuffer (cur) {\n  if (cur instanceof Buffer) {\n    return Buffer.from(cur)\n  }\n\n  return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length)\n}\n\nfunction rfdc (opts) {\n  opts = opts || {}\n  if (opts.circles) return rfdcCircles(opts)\n\n  const constructorHandlers = new Map()\n  constructorHandlers.set(Date, (o) => new Date(o))\n  constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)))\n  constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)))\n  if (opts.constructorHandlers) {\n    for (const handler of opts.constructorHandlers) {\n      constructorHandlers.set(handler[0], handler[1])\n    }\n  }\n\n  let handler = null\n\n  return opts.proto ? cloneProto : clone\n\n  function cloneArray (a, fn) {\n    const keys = Object.keys(a)\n    const a2 = new Array(keys.length)\n    for (let i = 0; i < keys.length; i++) {\n      const k = keys[i]\n      const cur = a[k]\n      if (typeof cur !== 'object' || cur === null) {\n        a2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        a2[k] = handler(cur, fn)\n      } else if (ArrayBuffer.isView(cur)) {\n        a2[k] = copyBuffer(cur)\n      } else {\n        a2[k] = fn(cur)\n      }\n    }\n    return a2\n  }\n\n  function clone (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (Array.isArray(o)) return cloneArray(o, clone)\n    if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n      return handler(o, clone)\n    }\n    const o2 = {}\n    for (const k in o) {\n      if (Object.hasOwnProperty.call(o, k) === false) continue\n      const cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        o2[k] = handler(cur, clone)\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        o2[k] = clone(cur)\n      }\n    }\n    return o2\n  }\n\n  function cloneProto (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (Array.isArray(o)) return cloneArray(o, cloneProto)\n    if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n      return handler(o, cloneProto)\n    }\n    const o2 = {}\n    for (const k in o) {\n      const cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        o2[k] = handler(cur, cloneProto)\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        o2[k] = cloneProto(cur)\n      }\n    }\n    return o2\n  }\n}\n\nfunction rfdcCircles (opts) {\n  const refs = []\n  const refsNew = []\n\n  const constructorHandlers = new Map()\n  constructorHandlers.set(Date, (o) => new Date(o))\n  constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)))\n  constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)))\n  if (opts.constructorHandlers) {\n    for (const handler of opts.constructorHandlers) {\n      constructorHandlers.set(handler[0], handler[1])\n    }\n  }\n\n  let handler = null\n  return opts.proto ? cloneProto : clone\n\n  function cloneArray (a, fn) {\n    const keys = Object.keys(a)\n    const a2 = new Array(keys.length)\n    for (let i = 0; i < keys.length; i++) {\n      const k = keys[i]\n      const cur = a[k]\n      if (typeof cur !== 'object' || cur === null) {\n        a2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        a2[k] = handler(cur, fn)\n      } else if (ArrayBuffer.isView(cur)) {\n        a2[k] = copyBuffer(cur)\n      } else {\n        const index = refs.indexOf(cur)\n        if (index !== -1) {\n          a2[k] = refsNew[index]\n        } else {\n          a2[k] = fn(cur)\n        }\n      }\n    }\n    return a2\n  }\n\n  function clone (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (Array.isArray(o)) return cloneArray(o, clone)\n    if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n      return handler(o, clone)\n    }\n    const o2 = {}\n    refs.push(o)\n    refsNew.push(o2)\n    for (const k in o) {\n      if (Object.hasOwnProperty.call(o, k) === false) continue\n      const cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        o2[k] = handler(cur, clone)\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        const i = refs.indexOf(cur)\n        if (i !== -1) {\n          o2[k] = refsNew[i]\n        } else {\n          o2[k] = clone(cur)\n        }\n      }\n    }\n    refs.pop()\n    refsNew.pop()\n    return o2\n  }\n\n  function cloneProto (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (Array.isArray(o)) return cloneArray(o, cloneProto)\n    if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n      return handler(o, cloneProto)\n    }\n    const o2 = {}\n    refs.push(o)\n    refsNew.push(o2)\n    for (const k in o) {\n      const cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        o2[k] = handler(cur, cloneProto)\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        const i = refs.indexOf(cur)\n        if (i !== -1) {\n          o2[k] = refsNew[i]\n        } else {\n          o2[k] = cloneProto(cur)\n        }\n      }\n    }\n    refs.pop()\n    refsNew.pop()\n    return o2\n  }\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n  if (!cwd)\n    cwd = origCwd.call(process)\n  return cwd\n}\ntry {\n  process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n  var chdir = process.chdir\n  process.chdir = function (d) {\n    cwd = null\n    chdir.call(process, d)\n  }\n  if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n  // (re-)implement some things that are known busted or missing.\n\n  // lchmod, broken prior to 0.6.2\n  // back-port the fix here.\n  if (constants.hasOwnProperty('O_SYMLINK') &&\n      process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n    patchLchmod(fs)\n  }\n\n  // lutimes implementation, or no-op\n  if (!fs.lutimes) {\n    patchLutimes(fs)\n  }\n\n  // https://github.com/isaacs/node-graceful-fs/issues/4\n  // Chown should not fail on einval or eperm if non-root.\n  // It should not fail on enosys ever, as this just indicates\n  // that a fs doesn't support the intended operation.\n\n  fs.chown = chownFix(fs.chown)\n  fs.fchown = chownFix(fs.fchown)\n  fs.lchown = chownFix(fs.lchown)\n\n  fs.chmod = chmodFix(fs.chmod)\n  fs.fchmod = chmodFix(fs.fchmod)\n  fs.lchmod = chmodFix(fs.lchmod)\n\n  fs.chownSync = chownFixSync(fs.chownSync)\n  fs.fchownSync = chownFixSync(fs.fchownSync)\n  fs.lchownSync = chownFixSync(fs.lchownSync)\n\n  fs.chmodSync = chmodFixSync(fs.chmodSync)\n  fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n  fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n  fs.stat = statFix(fs.stat)\n  fs.fstat = statFix(fs.fstat)\n  fs.lstat = statFix(fs.lstat)\n\n  fs.statSync = statFixSync(fs.statSync)\n  fs.fstatSync = statFixSync(fs.fstatSync)\n  fs.lstatSync = statFixSync(fs.lstatSync)\n\n  // if lchmod/lchown do not exist, then make them no-ops\n  if (fs.chmod && !fs.lchmod) {\n    fs.lchmod = function (path, mode, cb) {\n      if (cb) process.nextTick(cb)\n    }\n    fs.lchmodSync = function () {}\n  }\n  if (fs.chown && !fs.lchown) {\n    fs.lchown = function (path, uid, gid, cb) {\n      if (cb) process.nextTick(cb)\n    }\n    fs.lchownSync = function () {}\n  }\n\n  // on Windows, A/V software can lock the directory, causing this\n  // to fail with an EACCES or EPERM if the directory contains newly\n  // created files.  Try again on failure, for up to 60 seconds.\n\n  // Set the timeout this long because some Windows Anti-Virus, such as Parity\n  // bit9, may lock files for up to a minute, causing npm package install\n  // failures. Also, take care to yield the scheduler. Windows scheduling gives\n  // CPU to a busy looping process, which can cause the program causing the lock\n  // contention to be starved of CPU by node, so the contention doesn't resolve.\n  if (platform === \"win32\") {\n    fs.rename = typeof fs.rename !== 'function' ? fs.rename\n    : (function (fs$rename) {\n      function rename (from, to, cb) {\n        var start = Date.now()\n        var backoff = 0;\n        fs$rename(from, to, function CB (er) {\n          if (er\n              && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n              && Date.now() - start < 60000) {\n            setTimeout(function() {\n              fs.stat(to, function (stater, st) {\n                if (stater && stater.code === \"ENOENT\")\n                  fs$rename(from, to, CB);\n                else\n                  cb(er)\n              })\n            }, backoff)\n            if (backoff < 100)\n              backoff += 10;\n            return;\n          }\n          if (cb) cb(er)\n        })\n      }\n      if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n      return rename\n    })(fs.rename)\n  }\n\n  // if read() returns EAGAIN, then just try it again.\n  fs.read = typeof fs.read !== 'function' ? fs.read\n  : (function (fs$read) {\n    function read (fd, buffer, offset, length, position, callback_) {\n      var callback\n      if (callback_ && typeof callback_ === 'function') {\n        var eagCounter = 0\n        callback = function (er, _, __) {\n          if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n            eagCounter ++\n            return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n          }\n          callback_.apply(this, arguments)\n        }\n      }\n      return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n    }\n\n    // This ensures `util.promisify` works as it does for native `fs.read`.\n    if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n    return read\n  })(fs.read)\n\n  fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n  : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n    var eagCounter = 0\n    while (true) {\n      try {\n        return fs$readSync.call(fs, fd, buffer, offset, length, position)\n      } catch (er) {\n        if (er.code === 'EAGAIN' && eagCounter < 10) {\n          eagCounter ++\n          continue\n        }\n        throw er\n      }\n    }\n  }})(fs.readSync)\n\n  function patchLchmod (fs) {\n    fs.lchmod = function (path, mode, callback) {\n      fs.open( path\n             , constants.O_WRONLY | constants.O_SYMLINK\n             , mode\n             , function (err, fd) {\n        if (err) {\n          if (callback) callback(err)\n          return\n        }\n        // prefer to return the chmod error, if one occurs,\n        // but still try to close, and report closing errors if they occur.\n        fs.fchmod(fd, mode, function (err) {\n          fs.close(fd, function(err2) {\n            if (callback) callback(err || err2)\n          })\n        })\n      })\n    }\n\n    fs.lchmodSync = function (path, mode) {\n      var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n      // prefer to return the chmod error, if one occurs,\n      // but still try to close, and report closing errors if they occur.\n      var threw = true\n      var ret\n      try {\n        ret = fs.fchmodSync(fd, mode)\n        threw = false\n      } finally {\n        if (threw) {\n          try {\n            fs.closeSync(fd)\n          } catch (er) {}\n        } else {\n          fs.closeSync(fd)\n        }\n      }\n      return ret\n    }\n  }\n\n  function patchLutimes (fs) {\n    if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n      fs.lutimes = function (path, at, mt, cb) {\n        fs.open(path, constants.O_SYMLINK, function (er, fd) {\n          if (er) {\n            if (cb) cb(er)\n            return\n          }\n          fs.futimes(fd, at, mt, function (er) {\n            fs.close(fd, function (er2) {\n              if (cb) cb(er || er2)\n            })\n          })\n        })\n      }\n\n      fs.lutimesSync = function (path, at, mt) {\n        var fd = fs.openSync(path, constants.O_SYMLINK)\n        var ret\n        var threw = true\n        try {\n          ret = fs.futimesSync(fd, at, mt)\n          threw = false\n        } finally {\n          if (threw) {\n            try {\n              fs.closeSync(fd)\n            } catch (er) {}\n          } else {\n            fs.closeSync(fd)\n          }\n        }\n        return ret\n      }\n\n    } else if (fs.futimes) {\n      fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n      fs.lutimesSync = function () {}\n    }\n  }\n\n  function chmodFix (orig) {\n    if (!orig) return orig\n    return function (target, mode, cb) {\n      return orig.call(fs, target, mode, function (er) {\n        if (chownErOk(er)) er = null\n        if (cb) cb.apply(this, arguments)\n      })\n    }\n  }\n\n  function chmodFixSync (orig) {\n    if (!orig) return orig\n    return function (target, mode) {\n      try {\n        return orig.call(fs, target, mode)\n      } catch (er) {\n        if (!chownErOk(er)) throw er\n      }\n    }\n  }\n\n\n  function chownFix (orig) {\n    if (!orig) return orig\n    return function (target, uid, gid, cb) {\n      return orig.call(fs, target, uid, gid, function (er) {\n        if (chownErOk(er)) er = null\n        if (cb) cb.apply(this, arguments)\n      })\n    }\n  }\n\n  function chownFixSync (orig) {\n    if (!orig) return orig\n    return function (target, uid, gid) {\n      try {\n        return orig.call(fs, target, uid, gid)\n      } catch (er) {\n        if (!chownErOk(er)) throw er\n      }\n    }\n  }\n\n  function statFix (orig) {\n    if (!orig) return orig\n    // Older versions of Node erroneously returned signed integers for\n    // uid + gid.\n    return function (target, options, cb) {\n      if (typeof options === 'function') {\n        cb = options\n        options = null\n      }\n      function callback (er, stats) {\n        if (stats) {\n          if (stats.uid < 0) stats.uid += 0x100000000\n          if (stats.gid < 0) stats.gid += 0x100000000\n        }\n        if (cb) cb.apply(this, arguments)\n      }\n      return options ? orig.call(fs, target, options, callback)\n        : orig.call(fs, target, callback)\n    }\n  }\n\n  function statFixSync (orig) {\n    if (!orig) return orig\n    // Older versions of Node erroneously returned signed integers for\n    // uid + gid.\n    return function (target, options) {\n      var stats = options ? orig.call(fs, target, options)\n        : orig.call(fs, target)\n      if (stats) {\n        if (stats.uid < 0) stats.uid += 0x100000000\n        if (stats.gid < 0) stats.gid += 0x100000000\n      }\n      return stats;\n    }\n  }\n\n  // ENOSYS means that the fs doesn't support the op. Just ignore\n  // that, because it doesn't matter.\n  //\n  // if there's no getuid, or if getuid() is something other\n  // than 0, and the error is EINVAL or EPERM, then just ignore\n  // it.\n  //\n  // This specific case is a silent failure in cp, install, tar,\n  // and most other unix tools that manage permissions.\n  //\n  // When running as root, or if other types of errors are\n  // encountered, then it's strict.\n  function chownErOk (er) {\n    if (!er)\n      return true\n\n    if (er.code === \"ENOSYS\")\n      return true\n\n    var nonroot = !process.getuid || process.getuid() !== 0\n    if (nonroot) {\n      if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n        return true\n    }\n\n    return false\n  }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n  return {\n    ReadStream: ReadStream,\n    WriteStream: WriteStream\n  }\n\n  function ReadStream (path, options) {\n    if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n    Stream.call(this);\n\n    var self = this;\n\n    this.path = path;\n    this.fd = null;\n    this.readable = true;\n    this.paused = false;\n\n    this.flags = 'r';\n    this.mode = 438; /*=0666*/\n    this.bufferSize = 64 * 1024;\n\n    options = options || {};\n\n    // Mixin options into this\n    var keys = Object.keys(options);\n    for (var index = 0, length = keys.length; index < length; index++) {\n      var key = keys[index];\n      this[key] = options[key];\n    }\n\n    if (this.encoding) this.setEncoding(this.encoding);\n\n    if (this.start !== undefined) {\n      if ('number' !== typeof this.start) {\n        throw TypeError('start must be a Number');\n      }\n      if (this.end === undefined) {\n        this.end = Infinity;\n      } else if ('number' !== typeof this.end) {\n        throw TypeError('end must be a Number');\n      }\n\n      if (this.start > this.end) {\n        throw new Error('start must be <= end');\n      }\n\n      this.pos = this.start;\n    }\n\n    if (this.fd !== null) {\n      process.nextTick(function() {\n        self._read();\n      });\n      return;\n    }\n\n    fs.open(this.path, this.flags, this.mode, function (err, fd) {\n      if (err) {\n        self.emit('error', err);\n        self.readable = false;\n        return;\n      }\n\n      self.fd = fd;\n      self.emit('open', fd);\n      self._read();\n    })\n  }\n\n  function WriteStream (path, options) {\n    if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n    Stream.call(this);\n\n    this.path = path;\n    this.fd = null;\n    this.writable = true;\n\n    this.flags = 'w';\n    this.encoding = 'binary';\n    this.mode = 438; /*=0666*/\n    this.bytesWritten = 0;\n\n    options = options || {};\n\n    // Mixin options into this\n    var keys = Object.keys(options);\n    for (var index = 0, length = keys.length; index < length; index++) {\n      var key = keys[index];\n      this[key] = options[key];\n    }\n\n    if (this.start !== undefined) {\n      if ('number' !== typeof this.start) {\n        throw TypeError('start must be a Number');\n      }\n      if (this.start < 0) {\n        throw new Error('start must be >= zero');\n      }\n\n      this.pos = this.start;\n    }\n\n    this.busy = false;\n    this._queue = [];\n\n    if (this.fd === null) {\n      this._open = fs.open;\n      this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n      this.flush();\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n  return obj.__proto__\n}\n\nfunction clone (obj) {\n  if (obj === null || typeof obj !== 'object')\n    return obj\n\n  if (obj instanceof Object)\n    var copy = { __proto__: getPrototypeOf(obj) }\n  else\n    var copy = Object.create(null)\n\n  Object.getOwnPropertyNames(obj).forEach(function (key) {\n    Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n  })\n\n  return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n  gracefulQueue = Symbol.for('graceful-fs.queue')\n  // This is used in testing by future versions\n  previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n  gracefulQueue = '___graceful-fs.queue'\n  previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n  Object.defineProperty(context, gracefulQueue, {\n    get: function() {\n      return queue\n    }\n  })\n}\n\nvar debug = noop\nif (util.debuglog)\n  debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n  debug = function() {\n    var m = util.format.apply(util, arguments)\n    m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n    console.error(m)\n  }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n  // This queue can be shared by multiple loaded instances\n  var queue = global[gracefulQueue] || []\n  publishQueue(fs, queue)\n\n  // Patch fs.close/closeSync to shared queue version, because we need\n  // to retry() whenever a close happens *anywhere* in the program.\n  // This is essential when multiple graceful-fs instances are\n  // in play at the same time.\n  fs.close = (function (fs$close) {\n    function close (fd, cb) {\n      return fs$close.call(fs, fd, function (err) {\n        // This function uses the graceful-fs shared queue\n        if (!err) {\n          resetQueue()\n        }\n\n        if (typeof cb === 'function')\n          cb.apply(this, arguments)\n      })\n    }\n\n    Object.defineProperty(close, previousSymbol, {\n      value: fs$close\n    })\n    return close\n  })(fs.close)\n\n  fs.closeSync = (function (fs$closeSync) {\n    function closeSync (fd) {\n      // This function uses the graceful-fs shared queue\n      fs$closeSync.apply(fs, arguments)\n      resetQueue()\n    }\n\n    Object.defineProperty(closeSync, previousSymbol, {\n      value: fs$closeSync\n    })\n    return closeSync\n  })(fs.closeSync)\n\n  if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n    process.on('exit', function() {\n      debug(fs[gracefulQueue])\n      require('assert').equal(fs[gracefulQueue].length, 0)\n    })\n  }\n}\n\nif (!global[gracefulQueue]) {\n  publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n    module.exports = patch(fs)\n    fs.__patched = true;\n}\n\nfunction patch (fs) {\n  // Everything that references the open() function needs to be in here\n  polyfills(fs)\n  fs.gracefulify = patch\n\n  fs.createReadStream = createReadStream\n  fs.createWriteStream = createWriteStream\n  var fs$readFile = fs.readFile\n  fs.readFile = readFile\n  function readFile (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$readFile(path, options, cb)\n\n    function go$readFile (path, options, cb, startTime) {\n      return fs$readFile(path, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$writeFile = fs.writeFile\n  fs.writeFile = writeFile\n  function writeFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$writeFile(path, data, options, cb)\n\n    function go$writeFile (path, data, options, cb, startTime) {\n      return fs$writeFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$appendFile = fs.appendFile\n  if (fs$appendFile)\n    fs.appendFile = appendFile\n  function appendFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$appendFile(path, data, options, cb)\n\n    function go$appendFile (path, data, options, cb, startTime) {\n      return fs$appendFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$copyFile = fs.copyFile\n  if (fs$copyFile)\n    fs.copyFile = copyFile\n  function copyFile (src, dest, flags, cb) {\n    if (typeof flags === 'function') {\n      cb = flags\n      flags = 0\n    }\n    return go$copyFile(src, dest, flags, cb)\n\n    function go$copyFile (src, dest, flags, cb, startTime) {\n      return fs$copyFile(src, dest, flags, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$readdir = fs.readdir\n  fs.readdir = readdir\n  var noReaddirOptionVersions = /^v[0-5]\\./\n  function readdir (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    var go$readdir = noReaddirOptionVersions.test(process.version)\n      ? function go$readdir (path, options, cb, startTime) {\n        return fs$readdir(path, fs$readdirCallback(\n          path, options, cb, startTime\n        ))\n      }\n      : function go$readdir (path, options, cb, startTime) {\n        return fs$readdir(path, options, fs$readdirCallback(\n          path, options, cb, startTime\n        ))\n      }\n\n    return go$readdir(path, options, cb)\n\n    function fs$readdirCallback (path, options, cb, startTime) {\n      return function (err, files) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([\n            go$readdir,\n            [path, options, cb],\n            err,\n            startTime || Date.now(),\n            Date.now()\n          ])\n        else {\n          if (files && files.sort)\n            files.sort()\n\n          if (typeof cb === 'function')\n            cb.call(this, err, files)\n        }\n      }\n    }\n  }\n\n  if (process.version.substr(0, 4) === 'v0.8') {\n    var legStreams = legacy(fs)\n    ReadStream = legStreams.ReadStream\n    WriteStream = legStreams.WriteStream\n  }\n\n  var fs$ReadStream = fs.ReadStream\n  if (fs$ReadStream) {\n    ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n    ReadStream.prototype.open = ReadStream$open\n  }\n\n  var fs$WriteStream = fs.WriteStream\n  if (fs$WriteStream) {\n    WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n    WriteStream.prototype.open = WriteStream$open\n  }\n\n  Object.defineProperty(fs, 'ReadStream', {\n    get: function () {\n      return ReadStream\n    },\n    set: function (val) {\n      ReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  Object.defineProperty(fs, 'WriteStream', {\n    get: function () {\n      return WriteStream\n    },\n    set: function (val) {\n      WriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  // legacy names\n  var FileReadStream = ReadStream\n  Object.defineProperty(fs, 'FileReadStream', {\n    get: function () {\n      return FileReadStream\n    },\n    set: function (val) {\n      FileReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  var FileWriteStream = WriteStream\n  Object.defineProperty(fs, 'FileWriteStream', {\n    get: function () {\n      return FileWriteStream\n    },\n    set: function (val) {\n      FileWriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  function ReadStream (path, options) {\n    if (this instanceof ReadStream)\n      return fs$ReadStream.apply(this, arguments), this\n    else\n      return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n  }\n\n  function ReadStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        if (that.autoClose)\n          that.destroy()\n\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n        that.read()\n      }\n    })\n  }\n\n  function WriteStream (path, options) {\n    if (this instanceof WriteStream)\n      return fs$WriteStream.apply(this, arguments), this\n    else\n      return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n  }\n\n  function WriteStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        that.destroy()\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n      }\n    })\n  }\n\n  function createReadStream (path, options) {\n    return new fs.ReadStream(path, options)\n  }\n\n  function createWriteStream (path, options) {\n    return new fs.WriteStream(path, options)\n  }\n\n  var fs$open = fs.open\n  fs.open = open\n  function open (path, flags, mode, cb) {\n    if (typeof mode === 'function')\n      cb = mode, mode = null\n\n    return go$open(path, flags, mode, cb)\n\n    function go$open (path, flags, mode, cb, startTime) {\n      return fs$open(path, flags, mode, function (err, fd) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  return fs\n}\n\nfunction enqueue (elem) {\n  debug('ENQUEUE', elem[0].name, elem[1])\n  fs[gracefulQueue].push(elem)\n  retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n  var now = Date.now()\n  for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n    // entries that are only a length of 2 are from an older version, don't\n    // bother modifying those since they'll be retried anyway.\n    if (fs[gracefulQueue][i].length > 2) {\n      fs[gracefulQueue][i][3] = now // startTime\n      fs[gracefulQueue][i][4] = now // lastTime\n    }\n  }\n  // call retry to make sure we're actively processing the queue\n  retry()\n}\n\nfunction retry () {\n  // clear the timer and remove it to help prevent unintended concurrency\n  clearTimeout(retryTimer)\n  retryTimer = undefined\n\n  if (fs[gracefulQueue].length === 0)\n    return\n\n  var elem = fs[gracefulQueue].shift()\n  var fn = elem[0]\n  var args = elem[1]\n  // these items may be unset if they were added by an older graceful-fs\n  var err = elem[2]\n  var startTime = elem[3]\n  var lastTime = elem[4]\n\n  // if we don't have a startTime we have no way of knowing if we've waited\n  // long enough, so go ahead and retry this item now\n  if (startTime === undefined) {\n    debug('RETRY', fn.name, args)\n    fn.apply(null, args)\n  } else if (Date.now() - startTime >= 60000) {\n    // it's been more than 60 seconds total, bail now\n    debug('TIMEOUT', fn.name, args)\n    var cb = args.pop()\n    if (typeof cb === 'function')\n      cb.call(null, err)\n  } else {\n    // the amount of time between the last attempt and right now\n    var sinceAttempt = Date.now() - lastTime\n    // the amount of time between when we first tried, and when we last tried\n    // rounded up to at least 1\n    var sinceStart = Math.max(lastTime - startTime, 1)\n    // backoff. wait longer than the total time we've been retrying, but only\n    // up to a maximum of 100ms\n    var desiredDelay = Math.min(sinceStart * 1.2, 100)\n    // it's been long enough since the last retry, do it again\n    if (sinceAttempt >= desiredDelay) {\n      debug('RETRY', fn.name, args)\n      fn.apply(null, args.concat([startTime]))\n    } else {\n      // if we can't do this job yet, push it to the end of the queue\n      // and let the next iteration check again\n      fs[gracefulQueue].push(elem)\n    }\n  }\n\n  // schedule our next run if one isn't already scheduled\n  if (retryTimer === undefined) {\n    retryTimer = setTimeout(retry, 0)\n  }\n}\n","import os from 'os';\nimport path from 'path';\n\nconst homeDirectory = os.homedir();\nconst {env} = process;\n\nexport const xdgData = env.XDG_DATA_HOME ||\n\t(homeDirectory ? path.join(homeDirectory, '.local', 'share') : undefined);\n\nexport const xdgConfig = env.XDG_CONFIG_HOME ||\n\t(homeDirectory ? path.join(homeDirectory, '.config') : undefined);\n\nexport const xdgState = env.XDG_STATE_HOME ||\n\t(homeDirectory ? path.join(homeDirectory, '.local', 'state') : undefined);\n\nexport const xdgCache = env.XDG_CACHE_HOME || (homeDirectory ? path.join(homeDirectory, '.cache') : undefined);\n\nexport const xdgRuntime = env.XDG_RUNTIME_DIR || undefined;\n\nexport const xdgDataDirectories = (env.XDG_DATA_DIRS || '/usr/local/share/:/usr/share/').split(':');\n\nif (xdgData) {\n\txdgDataDirectories.unshift(xdgData);\n}\n\nexport const xdgConfigDirectories = (env.XDG_CONFIG_DIRS || '/etc/xdg').split(':');\n\nif (xdgConfig) {\n\txdgConfigDirectories.unshift(xdgConfig);\n}\n","/* IMPORT */\n/* MAIN */\nconst attemptifyAsync = (fn, options) => {\n    const { onError } = options;\n    return function attemptified(...args) {\n        return fn.apply(undefined, args).catch(onError);\n    }; //TSC\n};\n/* EXPORT */\nexport default attemptifyAsync;\n","/* IMPORT */\n/* MAIN */\nconst attemptifySync = (fn, options) => {\n    const { onError } = options;\n    return function attemptified(...args) {\n        try {\n            return fn.apply(undefined, args);\n        }\n        catch (error) {\n            return onError(error);\n        }\n    }; //TSC\n};\n/* EXPORT */\nexport default attemptifySync;\n","/* IMPORT */\nimport { RETRY_INTERVAL } from './constants.js';\n/* MAIN */\nconst retryifyAsync = (fn, options) => {\n    const { isRetriable } = options;\n    return function retryified(options) {\n        const { timeout } = options;\n        const interval = options.interval ?? RETRY_INTERVAL;\n        const timestamp = Date.now() + timeout;\n        return function attempt(...args) {\n            return fn.apply(undefined, args).catch((error) => {\n                if (!isRetriable(error))\n                    throw error;\n                if (Date.now() >= timestamp)\n                    throw error;\n                const delay = Math.round(interval * Math.random());\n                if (delay > 0) {\n                    const delayPromise = new Promise(resolve => setTimeout(resolve, delay));\n                    return delayPromise.then(() => attempt.apply(undefined, args));\n                }\n                else {\n                    return attempt.apply(undefined, args);\n                }\n            });\n        }; //TSC\n    };\n};\n/* EXPORT */\nexport default retryifyAsync;\n","/* IMPORT */\n/* MAIN */\nconst retryifySync = (fn, options) => {\n    const { isRetriable } = options;\n    return function retryified(options) {\n        const { timeout } = options;\n        const timestamp = Date.now() + timeout;\n        return function attempt(...args) {\n            while (true) {\n                try {\n                    return fn.apply(undefined, args);\n                }\n                catch (error) {\n                    if (!isRetriable(error))\n                        throw error;\n                    if (Date.now() >= timestamp)\n                        throw error;\n                    continue;\n                }\n            }\n        }; //TSC\n    };\n};\n/* EXPORT */\nexport default retryifySync;\n","/* IMPORT */\nimport { IS_USER_ROOT } from './constants.js';\n/* MAIN */\nconst Handlers = {\n    /* API */\n    isChangeErrorOk: (error) => {\n        if (!Handlers.isNodeError(error))\n            return false;\n        const { code } = error;\n        if (code === 'ENOSYS')\n            return true;\n        if (!IS_USER_ROOT && (code === 'EINVAL' || code === 'EPERM'))\n            return true;\n        return false;\n    },\n    isNodeError: (error) => {\n        return (error instanceof Error);\n    },\n    isRetriableError: (error) => {\n        if (!Handlers.isNodeError(error))\n            return false;\n        const { code } = error;\n        if (code === 'EMFILE' || code === 'ENFILE' || code === 'EAGAIN' || code === 'EBUSY' || code === 'EACCESS' || code === 'EACCES' || code === 'EACCS' || code === 'EPERM')\n            return true;\n        return false;\n    },\n    onChangeError: (error) => {\n        if (!Handlers.isNodeError(error))\n            throw error;\n        if (Handlers.isChangeErrorOk(error))\n            return;\n        throw error;\n    }\n};\n/* EXPORT */\nexport default Handlers;\n","/* IMPORT */\nimport process from 'node:process';\nimport Handlers from './handlers.js';\n/* MAIN */\nconst ATTEMPTIFY_CHANGE_ERROR_OPTIONS = {\n    onError: Handlers.onChangeError\n};\nconst ATTEMPTIFY_NOOP_OPTIONS = {\n    onError: () => undefined\n};\nconst IS_USER_ROOT = (process.getuid ? !process.getuid() : false);\nconst RETRYIFY_OPTIONS = {\n    isRetriable: Handlers.isRetriableError\n};\n/* EXPORT */\nexport { ATTEMPTIFY_CHANGE_ERROR_OPTIONS, ATTEMPTIFY_NOOP_OPTIONS, IS_USER_ROOT, RETRYIFY_OPTIONS };\n","/* IMPORT */\nimport fs from 'node:fs';\nimport { promisify } from 'node:util';\nimport { attemptifyAsync, attemptifySync } from 'stubborn-utils';\nimport { retryifyAsync, retryifySync } from 'stubborn-utils';\nimport { ATTEMPTIFY_CHANGE_ERROR_OPTIONS, ATTEMPTIFY_NOOP_OPTIONS, RETRYIFY_OPTIONS } from './constants.js';\n/* MAIN */\nconst FS = {\n    attempt: {\n        /* ASYNC */\n        chmod: attemptifyAsync(promisify(fs.chmod), ATTEMPTIFY_CHANGE_ERROR_OPTIONS),\n        chown: attemptifyAsync(promisify(fs.chown), ATTEMPTIFY_CHANGE_ERROR_OPTIONS),\n        close: attemptifyAsync(promisify(fs.close), ATTEMPTIFY_NOOP_OPTIONS),\n        fsync: attemptifyAsync(promisify(fs.fsync), ATTEMPTIFY_NOOP_OPTIONS),\n        mkdir: attemptifyAsync(promisify(fs.mkdir), ATTEMPTIFY_NOOP_OPTIONS),\n        realpath: attemptifyAsync(promisify(fs.realpath), ATTEMPTIFY_NOOP_OPTIONS),\n        stat: attemptifyAsync(promisify(fs.stat), ATTEMPTIFY_NOOP_OPTIONS),\n        unlink: attemptifyAsync(promisify(fs.unlink), ATTEMPTIFY_NOOP_OPTIONS),\n        /* SYNC */\n        chmodSync: attemptifySync(fs.chmodSync, ATTEMPTIFY_CHANGE_ERROR_OPTIONS),\n        chownSync: attemptifySync(fs.chownSync, ATTEMPTIFY_CHANGE_ERROR_OPTIONS),\n        closeSync: attemptifySync(fs.closeSync, ATTEMPTIFY_NOOP_OPTIONS),\n        existsSync: attemptifySync(fs.existsSync, ATTEMPTIFY_NOOP_OPTIONS),\n        fsyncSync: attemptifySync(fs.fsync, ATTEMPTIFY_NOOP_OPTIONS),\n        mkdirSync: attemptifySync(fs.mkdirSync, ATTEMPTIFY_NOOP_OPTIONS),\n        realpathSync: attemptifySync(fs.realpathSync, ATTEMPTIFY_NOOP_OPTIONS),\n        statSync: attemptifySync(fs.statSync, ATTEMPTIFY_NOOP_OPTIONS),\n        unlinkSync: attemptifySync(fs.unlinkSync, ATTEMPTIFY_NOOP_OPTIONS)\n    },\n    retry: {\n        /* ASYNC */\n        close: retryifyAsync(promisify(fs.close), RETRYIFY_OPTIONS),\n        fsync: retryifyAsync(promisify(fs.fsync), RETRYIFY_OPTIONS),\n        open: retryifyAsync(promisify(fs.open), RETRYIFY_OPTIONS),\n        readFile: retryifyAsync(promisify(fs.readFile), RETRYIFY_OPTIONS),\n        rename: retryifyAsync(promisify(fs.rename), RETRYIFY_OPTIONS),\n        stat: retryifyAsync(promisify(fs.stat), RETRYIFY_OPTIONS),\n        write: retryifyAsync(promisify(fs.write), RETRYIFY_OPTIONS),\n        writeFile: retryifyAsync(promisify(fs.writeFile), RETRYIFY_OPTIONS),\n        /* SYNC */\n        closeSync: retryifySync(fs.closeSync, RETRYIFY_OPTIONS),\n        fsyncSync: retryifySync(fs.fsyncSync, RETRYIFY_OPTIONS),\n        openSync: retryifySync(fs.openSync, RETRYIFY_OPTIONS),\n        readFileSync: retryifySync(fs.readFileSync, RETRYIFY_OPTIONS),\n        renameSync: retryifySync(fs.renameSync, RETRYIFY_OPTIONS),\n        statSync: retryifySync(fs.statSync, RETRYIFY_OPTIONS),\n        writeSync: retryifySync(fs.writeSync, RETRYIFY_OPTIONS),\n        writeFileSync: retryifySync(fs.writeFileSync, RETRYIFY_OPTIONS)\n    }\n};\n/* EXPORT */\nexport default FS;\n","/* IMPORT */\nimport process from 'node:process';\n/* MAIN */\nconst DEFAULT_ENCODING = 'utf8';\nconst DEFAULT_FILE_MODE = 0o666;\nconst DEFAULT_FOLDER_MODE = 0o777;\nconst DEFAULT_READ_OPTIONS = {};\nconst DEFAULT_WRITE_OPTIONS = {};\nconst DEFAULT_USER_UID = process.geteuid ? process.geteuid() : -1;\nconst DEFAULT_USER_GID = process.getegid ? process.getegid() : -1;\nconst DEFAULT_INTERVAL_ASYNC = 200;\nconst DEFAULT_TIMEOUT_ASYNC = 7500;\nconst DEFAULT_TIMEOUT_SYNC = 1000;\nconst IS_POSIX = !!process.getuid;\nconst IS_USER_ROOT = process.getuid ? !process.getuid() : false;\nconst LIMIT_BASENAME_LENGTH = 128; //TODO: Fetch the real limit from the filesystem //TODO: Fetch the whole-path length limit too\nconst NOOP = () => { };\n/* EXPORT */\nexport { DEFAULT_ENCODING, DEFAULT_FILE_MODE, DEFAULT_FOLDER_MODE, DEFAULT_READ_OPTIONS, DEFAULT_WRITE_OPTIONS, DEFAULT_USER_UID, DEFAULT_USER_GID, DEFAULT_INTERVAL_ASYNC, DEFAULT_TIMEOUT_ASYNC, DEFAULT_TIMEOUT_SYNC, IS_POSIX, IS_USER_ROOT, LIMIT_BASENAME_LENGTH, NOOP };\n","/* IMPORT */\n/* MAIN */\nconst isException = (value) => {\n    return (value instanceof Error) && ('code' in value);\n};\nconst isFunction = (value) => {\n    return (typeof value === 'function');\n};\nconst isString = (value) => {\n    return (typeof value === 'string');\n};\nconst isUndefined = (value) => {\n    return (value === undefined);\n};\n/* EXPORT */\nexport { isException, isFunction, isString, isUndefined };\n","/* IMPORT */\nimport process from 'node:process';\n/* MAIN */\nconst IS_LINUX = (process.platform === 'linux');\nconst IS_WINDOWS = (process.platform === 'win32');\n/* EXPORT */\nexport { IS_LINUX, IS_WINDOWS };\n","/* IMPORT */\nimport { IS_LINUX, IS_WINDOWS } from './constants.js';\n/* MAIN */\n//URL: https://github.com/tapjs/signal-exit/blob/458776d9cf8be89712aa1f7b45bb2163ce15ef4a/src/signals.ts\nconst Signals = ['SIGHUP', 'SIGINT', 'SIGTERM'];\nif (!IS_WINDOWS) {\n    Signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT');\n}\nif (IS_LINUX) {\n    Signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n/* EXPORT */\nexport default Signals;\n","/* IMPORT */\nimport process from 'node:process';\nimport { IS_WINDOWS } from './constants.js';\nimport Signals from './signals.js';\n/* MAIN */\nclass Interceptor {\n    /* CONSTRUCTOR */\n    constructor() {\n        /* VARIABLES */\n        this.callbacks = new Set();\n        this.exited = false;\n        /* API */\n        this.exit = (signal) => {\n            if (this.exited)\n                return;\n            this.exited = true;\n            for (const callback of this.callbacks) {\n                callback();\n            }\n            if (signal) {\n                if (IS_WINDOWS && (signal !== 'SIGINT' && signal !== 'SIGTERM' && signal !== 'SIGKILL')) { // Windows doesn't support POSIX signals, but Node emulates these 3 signals for us\n                    process.kill(process.pid, 'SIGTERM');\n                }\n                else {\n                    process.kill(process.pid, signal);\n                }\n            }\n        };\n        this.hook = () => {\n            process.once('exit', () => this.exit());\n            for (const signal of Signals) {\n                try {\n                    process.once(signal, () => this.exit(signal));\n                }\n                catch {\n                    // Sometimes \"process.once\" can throw...\n                }\n            }\n        };\n        this.register = (callback) => {\n            this.callbacks.add(callback);\n            return () => {\n                this.callbacks.delete(callback);\n            };\n        };\n        this.hook();\n    }\n}\n/* EXPORT */\nexport default new Interceptor();\n","/* IMPORT */\nimport Interceptor from './interceptor.js';\n/* MAIN */\nconst whenExit = Interceptor.register;\n/* EXPORT */\nexport default whenExit;\n","/* IMPORT */\nimport path from 'node:path';\nimport fs from 'stubborn-fs';\nimport whenExit from 'when-exit';\nimport { LIMIT_BASENAME_LENGTH } from '../constants.js';\n/* MAIN */\n//TODO: Maybe publish this as a standalone package\nconst Temp = {\n    /* VARIABLES */\n    store: {}, // filePath => purge\n    /* API */\n    create: (filePath) => {\n        const randomness = `000000${Math.floor(Math.random() * 16777215).toString(16)}`.slice(-6); // 6 random-enough hex characters\n        const timestamp = Date.now().toString().slice(-10); // 10 precise timestamp digits\n        const prefix = 'tmp-';\n        const suffix = `.${prefix}${timestamp}${randomness}`;\n        const tempPath = `${filePath}${suffix}`;\n        return tempPath;\n    },\n    get: (filePath, creator, purge = true) => {\n        const tempPath = Temp.truncate(creator(filePath));\n        if (tempPath in Temp.store)\n            return Temp.get(filePath, creator, purge); // Collision found, try again\n        Temp.store[tempPath] = purge;\n        const disposer = () => delete Temp.store[tempPath];\n        return [tempPath, disposer];\n    },\n    purge: (filePath) => {\n        if (!Temp.store[filePath])\n            return;\n        delete Temp.store[filePath];\n        fs.attempt.unlink(filePath);\n    },\n    purgeSync: (filePath) => {\n        if (!Temp.store[filePath])\n            return;\n        delete Temp.store[filePath];\n        fs.attempt.unlinkSync(filePath);\n    },\n    purgeSyncAll: () => {\n        for (const filePath in Temp.store) {\n            Temp.purgeSync(filePath);\n        }\n    },\n    truncate: (filePath) => {\n        const basename = path.basename(filePath);\n        if (basename.length <= LIMIT_BASENAME_LENGTH)\n            return filePath; //FIXME: Rough and quick attempt at detecting ok lengths\n        const truncable = /^(\\.?)(.*?)((?:\\.[^.]+)?(?:\\.tmp-\\d{10}[a-f0-9]{6})?)$/.exec(basename);\n        if (!truncable)\n            return filePath; //FIXME: No truncable part detected, can't really do much without also changing the parent path, which is unsafe, hoping for the best here\n        const truncationLength = basename.length - LIMIT_BASENAME_LENGTH;\n        return `${filePath.slice(0, -basename.length)}${truncable[1]}${truncable[2].slice(0, -truncationLength)}${truncable[3]}`; //FIXME: The truncable part might be shorter than needed here\n    }\n};\n/* INIT */\nwhenExit(Temp.purgeSyncAll); // Ensuring purgeable temp files are purged on exit\n/* EXPORT */\nexport default Temp;\n","/* IMPORT */\nimport { once } from 'node:events';\nimport { createWriteStream } from 'node:fs';\nimport path from 'node:path';\nimport { Readable } from 'node:stream';\nimport fs from 'stubborn-fs';\nimport { DEFAULT_ENCODING, DEFAULT_FILE_MODE, DEFAULT_FOLDER_MODE, DEFAULT_READ_OPTIONS, DEFAULT_WRITE_OPTIONS, DEFAULT_USER_UID, DEFAULT_USER_GID, DEFAULT_INTERVAL_ASYNC, DEFAULT_TIMEOUT_ASYNC, DEFAULT_TIMEOUT_SYNC, IS_POSIX } from './constants.js';\nimport { isException, isFunction, isString, isUndefined } from './utils/lang.js';\nimport Scheduler from './utils/scheduler.js';\nimport Temp from './utils/temp.js';\nfunction readFile(filePath, options = DEFAULT_READ_OPTIONS) {\n    if (isString(options))\n        return readFile(filePath, { encoding: options });\n    const timeout = options.timeout ?? DEFAULT_TIMEOUT_ASYNC;\n    const retryOptions = { timeout, interval: DEFAULT_INTERVAL_ASYNC };\n    return fs.retry.readFile(retryOptions)(filePath, options);\n}\nfunction readFileSync(filePath, options = DEFAULT_READ_OPTIONS) {\n    if (isString(options))\n        return readFileSync(filePath, { encoding: options });\n    const timeout = options.timeout ?? DEFAULT_TIMEOUT_SYNC;\n    const retryOptions = { timeout };\n    return fs.retry.readFileSync(retryOptions)(filePath, options);\n}\nfunction writeFile(filePath, data, options, callback) {\n    if (isFunction(options))\n        return writeFile(filePath, data, DEFAULT_WRITE_OPTIONS, options);\n    const promise = writeFileAsync(filePath, data, options);\n    if (callback)\n        promise.then(callback, callback);\n    return promise;\n}\nasync function writeFileAsync(filePath, data, options = DEFAULT_WRITE_OPTIONS) {\n    if (isString(options))\n        return writeFileAsync(filePath, data, { encoding: options });\n    const timeout = options.timeout ?? DEFAULT_TIMEOUT_ASYNC;\n    const retryOptions = { timeout, interval: DEFAULT_INTERVAL_ASYNC };\n    let schedulerCustomDisposer = null;\n    let schedulerDisposer = null;\n    let tempDisposer = null;\n    let tempPath = null;\n    let fd = null;\n    try {\n        if (options.schedule)\n            schedulerCustomDisposer = await options.schedule(filePath);\n        schedulerDisposer = await Scheduler.schedule(filePath);\n        const filePathReal = await fs.attempt.realpath(filePath);\n        const filePathExists = !!filePathReal;\n        filePath = filePathReal || filePath;\n        [tempPath, tempDisposer] = Temp.get(filePath, options.tmpCreate || Temp.create, !(options.tmpPurge === false));\n        const useStatChown = IS_POSIX && isUndefined(options.chown);\n        const useStatMode = isUndefined(options.mode);\n        if (filePathExists && (useStatChown || useStatMode)) {\n            const stats = await fs.attempt.stat(filePath);\n            if (stats) {\n                options = { ...options };\n                if (useStatChown) {\n                    options.chown = { uid: stats.uid, gid: stats.gid };\n                }\n                if (useStatMode) {\n                    options.mode = stats.mode;\n                }\n            }\n        }\n        if (!filePathExists) {\n            const parentPath = path.dirname(filePath);\n            await fs.attempt.mkdir(parentPath, {\n                mode: DEFAULT_FOLDER_MODE,\n                recursive: true\n            });\n        }\n        fd = await fs.retry.open(retryOptions)(tempPath, 'w', options.mode || DEFAULT_FILE_MODE);\n        if (options.tmpCreated) {\n            options.tmpCreated(tempPath);\n        }\n        if (isString(data)) {\n            await fs.retry.write(retryOptions)(fd, data, 0, options.encoding || DEFAULT_ENCODING);\n        }\n        else if (data instanceof Readable) {\n            const writeStream = createWriteStream(tempPath, { fd, autoClose: false });\n            const finishPromise = once(writeStream, 'finish');\n            data.pipe(writeStream);\n            await finishPromise;\n        }\n        else if (!isUndefined(data)) {\n            await fs.retry.write(retryOptions)(fd, data, 0, data.length, 0);\n        }\n        if (options.fsync !== false) {\n            if (options.fsyncWait !== false) {\n                await fs.retry.fsync(retryOptions)(fd);\n            }\n            else {\n                fs.attempt.fsync(fd);\n            }\n        }\n        await fs.retry.close(retryOptions)(fd);\n        fd = null;\n        if (options.chown && (options.chown.uid !== DEFAULT_USER_UID || options.chown.gid !== DEFAULT_USER_GID)) {\n            await fs.attempt.chown(tempPath, options.chown.uid, options.chown.gid);\n        }\n        if (options.mode && options.mode !== DEFAULT_FILE_MODE) {\n            await fs.attempt.chmod(tempPath, options.mode);\n        }\n        try {\n            await fs.retry.rename(retryOptions)(tempPath, filePath);\n        }\n        catch (error) {\n            if (!isException(error))\n                throw error;\n            if (error.code !== 'ENAMETOOLONG')\n                throw error;\n            await fs.retry.rename(retryOptions)(tempPath, Temp.truncate(filePath));\n        }\n        tempDisposer();\n        tempPath = null;\n    }\n    finally {\n        if (fd)\n            await fs.attempt.close(fd);\n        if (tempPath)\n            Temp.purge(tempPath);\n        if (schedulerCustomDisposer)\n            schedulerCustomDisposer();\n        if (schedulerDisposer)\n            schedulerDisposer();\n    }\n}\nfunction writeFileSync(filePath, data, options = DEFAULT_WRITE_OPTIONS) {\n    if (isString(options))\n        return writeFileSync(filePath, data, { encoding: options });\n    const timeout = options.timeout ?? DEFAULT_TIMEOUT_SYNC;\n    const retryOptions = { timeout };\n    let tempDisposer = null;\n    let tempPath = null;\n    let fd = null;\n    try {\n        const filePathReal = fs.attempt.realpathSync(filePath);\n        const filePathExists = !!filePathReal;\n        filePath = filePathReal || filePath;\n        [tempPath, tempDisposer] = Temp.get(filePath, options.tmpCreate || Temp.create, !(options.tmpPurge === false));\n        const useStatChown = IS_POSIX && isUndefined(options.chown);\n        const useStatMode = isUndefined(options.mode);\n        if (filePathExists && (useStatChown || useStatMode)) {\n            const stats = fs.attempt.statSync(filePath);\n            if (stats) {\n                options = { ...options };\n                if (useStatChown) {\n                    options.chown = { uid: stats.uid, gid: stats.gid };\n                }\n                if (useStatMode) {\n                    options.mode = stats.mode;\n                }\n            }\n        }\n        if (!filePathExists) {\n            const parentPath = path.dirname(filePath);\n            fs.attempt.mkdirSync(parentPath, {\n                mode: DEFAULT_FOLDER_MODE,\n                recursive: true\n            });\n        }\n        fd = fs.retry.openSync(retryOptions)(tempPath, 'w', options.mode || DEFAULT_FILE_MODE);\n        if (options.tmpCreated) {\n            options.tmpCreated(tempPath);\n        }\n        if (isString(data)) {\n            fs.retry.writeSync(retryOptions)(fd, data, 0, options.encoding || DEFAULT_ENCODING);\n        }\n        else if (!isUndefined(data)) {\n            fs.retry.writeSync(retryOptions)(fd, data, 0, data.length, 0);\n        }\n        if (options.fsync !== false) {\n            if (options.fsyncWait !== false) {\n                fs.retry.fsyncSync(retryOptions)(fd);\n            }\n            else {\n                fs.attempt.fsync(fd);\n            }\n        }\n        fs.retry.closeSync(retryOptions)(fd);\n        fd = null;\n        if (options.chown && (options.chown.uid !== DEFAULT_USER_UID || options.chown.gid !== DEFAULT_USER_GID)) {\n            fs.attempt.chownSync(tempPath, options.chown.uid, options.chown.gid);\n        }\n        if (options.mode && options.mode !== DEFAULT_FILE_MODE) {\n            fs.attempt.chmodSync(tempPath, options.mode);\n        }\n        try {\n            fs.retry.renameSync(retryOptions)(tempPath, filePath);\n        }\n        catch (error) {\n            if (!isException(error))\n                throw error;\n            if (error.code !== 'ENAMETOOLONG')\n                throw error;\n            fs.retry.renameSync(retryOptions)(tempPath, Temp.truncate(filePath));\n        }\n        tempDisposer();\n        tempPath = null;\n    }\n    finally {\n        if (fd)\n            fs.attempt.closeSync(fd);\n        if (tempPath)\n            Temp.purge(tempPath);\n    }\n}\n/* EXPORT */\nexport { readFile, readFileSync, writeFile, writeFileSync };\n","const isObject = value => {\n\tconst type = typeof value;\n\treturn value !== null && (type === 'object' || type === 'function');\n};\n\nconst isEmptyObject = value => isObject(value) && Object.keys(value).length === 0;\n\nconst disallowedKeys = new Set([\n\t'__proto__',\n\t'prototype',\n\t'constructor',\n]);\n\nconst digits = new Set('0123456789');\n\nfunction getPathSegments(path) {\n\tconst parts = [];\n\tlet currentSegment = '';\n\tlet currentPart = 'start';\n\tlet isIgnoring = false;\n\n\tfor (const character of path) {\n\t\tswitch (character) {\n\t\t\tcase '\\\\': {\n\t\t\t\tif (currentPart === 'index') {\n\t\t\t\t\tthrow new Error('Invalid character in an index');\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'indexEnd') {\n\t\t\t\t\tthrow new Error('Invalid character after an index');\n\t\t\t\t}\n\n\t\t\t\tif (isIgnoring) {\n\t\t\t\t\tcurrentSegment += character;\n\t\t\t\t}\n\n\t\t\t\tcurrentPart = 'property';\n\t\t\t\tisIgnoring = !isIgnoring;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase '.': {\n\t\t\t\tif (currentPart === 'index') {\n\t\t\t\t\tthrow new Error('Invalid character in an index');\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'indexEnd') {\n\t\t\t\t\tcurrentPart = 'property';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (isIgnoring) {\n\t\t\t\t\tisIgnoring = false;\n\t\t\t\t\tcurrentSegment += character;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (disallowedKeys.has(currentSegment)) {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tparts.push(currentSegment);\n\t\t\t\tcurrentSegment = '';\n\t\t\t\tcurrentPart = 'property';\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase '[': {\n\t\t\t\tif (currentPart === 'index') {\n\t\t\t\t\tthrow new Error('Invalid character in an index');\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'indexEnd') {\n\t\t\t\t\tcurrentPart = 'index';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (isIgnoring) {\n\t\t\t\t\tisIgnoring = false;\n\t\t\t\t\tcurrentSegment += character;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'property') {\n\t\t\t\t\tif (disallowedKeys.has(currentSegment)) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tparts.push(currentSegment);\n\t\t\t\t\tcurrentSegment = '';\n\t\t\t\t}\n\n\t\t\t\tcurrentPart = 'index';\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ']': {\n\t\t\t\tif (currentPart === 'index') {\n\t\t\t\t\tparts.push(Number.parseInt(currentSegment, 10));\n\t\t\t\t\tcurrentSegment = '';\n\t\t\t\t\tcurrentPart = 'indexEnd';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'indexEnd') {\n\t\t\t\t\tthrow new Error('Invalid character after an index');\n\t\t\t\t}\n\n\t\t\t\t// Falls through\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tif (currentPart === 'index' && !digits.has(character)) {\n\t\t\t\t\tthrow new Error('Invalid character in an index');\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'indexEnd') {\n\t\t\t\t\tthrow new Error('Invalid character after an index');\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'start') {\n\t\t\t\t\tcurrentPart = 'property';\n\t\t\t\t}\n\n\t\t\t\tif (isIgnoring) {\n\t\t\t\t\tisIgnoring = false;\n\t\t\t\t\tcurrentSegment += '\\\\';\n\t\t\t\t}\n\n\t\t\t\tcurrentSegment += character;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (isIgnoring) {\n\t\tcurrentSegment += '\\\\';\n\t}\n\n\tswitch (currentPart) {\n\t\tcase 'property': {\n\t\t\tif (disallowedKeys.has(currentSegment)) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tparts.push(currentSegment);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'index': {\n\t\t\tthrow new Error('Index was not closed');\n\t\t}\n\n\t\tcase 'start': {\n\t\t\tparts.push('');\n\n\t\t\tbreak;\n\t\t}\n\t\t// No default\n\t}\n\n\treturn parts;\n}\n\nfunction isStringIndex(object, key) {\n\tif (typeof key !== 'number' && Array.isArray(object)) {\n\t\tconst index = Number.parseInt(key, 10);\n\t\treturn Number.isInteger(index) && object[index] === object[key];\n\t}\n\n\treturn false;\n}\n\nfunction assertNotStringIndex(object, key) {\n\tif (isStringIndex(object, key)) {\n\t\tthrow new Error('Cannot use string index');\n\t}\n}\n\nexport function getProperty(object, path, value) {\n\tif (!isObject(object) || typeof path !== 'string') {\n\t\treturn value === undefined ? object : value;\n\t}\n\n\tconst pathArray = getPathSegments(path);\n\tif (pathArray.length === 0) {\n\t\treturn value;\n\t}\n\n\tfor (let index = 0; index < pathArray.length; index++) {\n\t\tconst key = pathArray[index];\n\n\t\tif (isStringIndex(object, key)) {\n\t\t\tobject = index === pathArray.length - 1 ? undefined : null;\n\t\t} else {\n\t\t\tobject = object[key];\n\t\t}\n\n\t\tif (object === undefined || object === null) {\n\t\t\t// `object` is either `undefined` or `null` so we want to stop the loop, and\n\t\t\t// if this is not the last bit of the path, and\n\t\t\t// if it didn't return `undefined`\n\t\t\t// it would return `null` if `object` is `null`\n\t\t\t// but we want `get({foo: null}, 'foo.bar')` to equal `undefined`, or the supplied value, not `null`\n\t\t\tif (index !== pathArray.length - 1) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn object === undefined ? value : object;\n}\n\nexport function setProperty(object, path, value) {\n\tif (!isObject(object) || typeof path !== 'string') {\n\t\treturn object;\n\t}\n\n\tconst root = object;\n\tconst pathArray = getPathSegments(path);\n\n\tfor (let index = 0; index < pathArray.length; index++) {\n\t\tconst key = pathArray[index];\n\n\t\tassertNotStringIndex(object, key);\n\n\t\tif (index === pathArray.length - 1) {\n\t\t\tobject[key] = value;\n\t\t} else if (!isObject(object[key])) {\n\t\t\tobject[key] = typeof pathArray[index + 1] === 'number' ? [] : {};\n\t\t}\n\n\t\tobject = object[key];\n\t}\n\n\treturn root;\n}\n\nexport function deleteProperty(object, path) {\n\tif (!isObject(object) || typeof path !== 'string') {\n\t\treturn false;\n\t}\n\n\tconst pathArray = getPathSegments(path);\n\n\tfor (let index = 0; index < pathArray.length; index++) {\n\t\tconst key = pathArray[index];\n\n\t\tassertNotStringIndex(object, key);\n\n\t\tif (index === pathArray.length - 1) {\n\t\t\tdelete object[key];\n\t\t\treturn true;\n\t\t}\n\n\t\tobject = object[key];\n\n\t\tif (!isObject(object)) {\n\t\t\treturn false;\n\t\t}\n\t}\n}\n\nexport function hasProperty(object, path) {\n\tif (!isObject(object) || typeof path !== 'string') {\n\t\treturn false;\n\t}\n\n\tconst pathArray = getPathSegments(path);\n\tif (pathArray.length === 0) {\n\t\treturn false;\n\t}\n\n\tfor (const key of pathArray) {\n\t\tif (!isObject(object) || !(key in object) || isStringIndex(object, key)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tobject = object[key];\n\t}\n\n\treturn true;\n}\n\n// TODO: Backslashes with no effect should not be escaped\nexport function escapePath(path) {\n\tif (typeof path !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn path.replaceAll(/[\\\\.[]/g, '\\\\$&');\n}\n\n// The keys returned by Object.entries() for arrays are strings\nfunction entries(value) {\n\tconst result = Object.entries(value);\n\tif (Array.isArray(value)) {\n\t\treturn result.map(([key, value]) => [Number(key), value]);\n\t}\n\n\treturn result;\n}\n\nfunction stringifyPath(pathSegments) {\n\tlet result = '';\n\n\tfor (let [index, segment] of entries(pathSegments)) {\n\t\tif (typeof segment === 'number') {\n\t\t\tresult += `[${segment}]`;\n\t\t} else {\n\t\t\tsegment = escapePath(segment);\n\t\t\tresult += index === 0 ? segment : `.${segment}`;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction * deepKeysIterator(object, currentPath = []) {\n\tif (!isObject(object) || isEmptyObject(object)) {\n\t\tif (currentPath.length > 0) {\n\t\t\tyield stringifyPath(currentPath);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tfor (const [key, value] of entries(object)) {\n\t\tyield * deepKeysIterator(value, [...currentPath, key]);\n\t}\n}\n\nexport function deepKeys(object) {\n\treturn [...deepKeysIterator(object)];\n}\n","import path from 'node:path';\nimport os from 'node:os';\nimport fs from 'graceful-fs';\nimport {xdgConfig} from 'xdg-basedir';\nimport {writeFileSync} from 'atomically';\nimport {\n\tgetProperty,\n\tsetProperty,\n\thasProperty,\n\tdeleteProperty,\n} from 'dot-prop';\n\nfunction getConfigDirectory(id, globalConfigPath) {\n\tconst pathPrefix = globalConfigPath\n\t\t? path.join(id, 'config.json')\n\t\t: path.join('configstore', `${id}.json`);\n\n\tconst configDirectory = xdgConfig ?? fs.mkdtempSync(fs.realpathSync(os.tmpdir()) + path.sep);\n\n\treturn path.join(configDirectory, pathPrefix);\n}\n\nconst permissionError = 'You don\\'t have access to this file.';\nconst mkdirOptions = {mode: 0o0700, recursive: true};\nconst writeFileOptions = {mode: 0o0600};\n\nfunction handlePermissionError(error) {\n\tif (error.code === 'EACCES') {\n\t\terror.message = `${error.message}\\n${permissionError}\\n`;\n\t}\n\n\tthrow error;\n}\n\nexport default class Configstore {\n\tconstructor(id, defaults, options = {}) {\n\t\tthis._path = options.configPath ?? getConfigDirectory(id, options.globalConfigPath);\n\t\tthis._clearInvalidConfig = options.clearInvalidConfig ?? true;\n\n\t\tif (defaults) {\n\t\t\tthis.all = {\n\t\t\t\t...defaults,\n\t\t\t\t...this.all,\n\t\t\t};\n\t\t}\n\t}\n\n\tget all() {\n\t\ttry {\n\t\t\treturn JSON.parse(fs.readFileSync(this._path, 'utf8'));\n\t\t} catch (error) {\n\t\t\t// Create directory if it doesn't exist\n\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\t// Handle invalid JSON\n\t\t\tif (error.name === 'SyntaxError') {\n\t\t\t\tif (this._clearInvalidConfig) {\n\t\t\t\t\twriteFileSync(this._path, '', writeFileOptions);\n\t\t\t\t\treturn {};\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\thandlePermissionError(error); // This always throws\n\t\t\t/* c8 ignore next */\n\t\t\treturn {}; // Unreachable, but satisfies linter\n\t\t}\n\t}\n\n\tset all(value) {\n\t\ttry {\n\t\t\t// Make sure the folder exists as it could have been deleted in the meantime\n\t\t\tfs.mkdirSync(path.dirname(this._path), mkdirOptions);\n\n\t\t\twriteFileSync(this._path, JSON.stringify(value, undefined, '\\t'), writeFileOptions);\n\t\t} catch (error) {\n\t\t\thandlePermissionError(error); // This always throws\n\t\t}\n\t}\n\n\tget size() {\n\t\treturn Object.keys(this.all || {}).length;\n\t}\n\n\tget(key) {\n\t\treturn getProperty(this.all, key);\n\t}\n\n\tset(key, value) {\n\t\tconst config = this.all;\n\n\t\tif (typeof key === 'object' && arguments.length === 1) {\n\t\t\tfor (const k of Object.keys(key)) {\n\t\t\t\tsetProperty(config, k, key[k]);\n\t\t\t}\n\t\t} else {\n\t\t\tsetProperty(config, key, value);\n\t\t}\n\n\t\tthis.all = config;\n\t}\n\n\thas(key) {\n\t\treturn hasProperty(this.all, key);\n\t}\n\n\tdelete(key) {\n\t\tconst config = this.all;\n\t\tdeleteProperty(config, key);\n\t\tthis.all = config;\n\t}\n\n\tclear() {\n\t\tthis.all = {};\n\t}\n\n\tget path() {\n\t\treturn this._path;\n\t}\n}\n","export class HTTPError extends Error {\n    response;\n    request;\n    options;\n    constructor(response, request, options) {\n        const code = (response.status || response.status === 0) ? response.status : '';\n        const title = response.statusText ?? '';\n        const status = `${code} ${title}`.trim();\n        const reason = status ? `status code ${status}` : 'an unknown error';\n        super(`Request failed with ${reason}: ${request.method} ${request.url}`);\n        this.name = 'HTTPError';\n        this.response = response;\n        this.request = request;\n        this.options = options;\n    }\n}\n//# sourceMappingURL=HTTPError.js.map","/**\nWrapper for non-Error values that were thrown.\n\nIn JavaScript, any value can be thrown (not just Error instances). This class wraps such values to ensure consistent error handling.\n*/\nexport class NonError extends Error {\n    name = 'NonError';\n    value;\n    constructor(value) {\n        let message = 'Non-error value was thrown';\n        // Intentionally minimal as this error is just an edge-case.\n        try {\n            if (typeof value === 'string') {\n                message = value;\n            }\n            else if (value && typeof value === 'object' && 'message' in value && typeof value.message === 'string') {\n                message = value.message;\n            }\n        }\n        catch {\n            // Use default message if accessing properties throws\n        }\n        super(message);\n        this.value = value;\n    }\n}\n//# sourceMappingURL=NonError.js.map","import { NonError } from './NonError.js';\n/**\nInternal error used to signal a forced retry from afterResponse hooks.\nThis is thrown when a user returns ky.retry() from an afterResponse hook.\n*/\nexport class ForceRetryError extends Error {\n    name = 'ForceRetryError';\n    customDelay;\n    code;\n    customRequest;\n    constructor(options) {\n        // Runtime protection: wrap non-Error causes in NonError\n        // TypeScript type is Error for guidance, but JS users can pass anything\n        const cause = options?.cause\n            ? (options.cause instanceof Error ? options.cause : new NonError(options.cause))\n            : undefined;\n        super(options?.code ? `Forced retry: ${options.code}` : 'Forced retry', cause ? { cause } : undefined);\n        this.customDelay = options?.delay;\n        this.code = options?.code;\n        this.customRequest = options?.request;\n    }\n}\n//# sourceMappingURL=ForceRetryError.js.map","export const supportsRequestStreams = (() => {\n    let duplexAccessed = false;\n    let hasContentType = false;\n    const supportsReadableStream = typeof globalThis.ReadableStream === 'function';\n    const supportsRequest = typeof globalThis.Request === 'function';\n    if (supportsReadableStream && supportsRequest) {\n        try {\n            hasContentType = new globalThis.Request('https://empty.invalid', {\n                body: new globalThis.ReadableStream(),\n                method: 'POST',\n                // @ts-expect-error - Types are outdated.\n                get duplex() {\n                    duplexAccessed = true;\n                    return 'half';\n                },\n            }).headers.has('Content-Type');\n        }\n        catch (error) {\n            // QQBrowser on iOS throws \"unsupported BodyInit type\" error (see issue #581)\n            if (error instanceof Error && error.message === 'unsupported BodyInit type') {\n                return false;\n            }\n            throw error;\n        }\n    }\n    return duplexAccessed && !hasContentType;\n})();\nexport const supportsAbortController = typeof globalThis.AbortController === 'function';\nexport const supportsAbortSignal = typeof globalThis.AbortSignal === 'function' && typeof globalThis.AbortSignal.any === 'function';\nexport const supportsResponseStreams = typeof globalThis.ReadableStream === 'function';\nexport const supportsFormData = typeof globalThis.FormData === 'function';\nexport const requestMethods = ['get', 'post', 'put', 'patch', 'head', 'delete'];\nconst validate = () => undefined;\nvalidate();\nexport const responseTypes = {\n    json: 'application/json',\n    text: 'text/*',\n    formData: 'multipart/form-data',\n    arrayBuffer: '*/*',\n    blob: '*/*',\n    // Supported in modern Fetch implementations (for example, browsers and recent Node.js/undici).\n    // We still feature-check at runtime before exposing the shortcut.\n    bytes: '*/*',\n};\n// The maximum value of a 32bit int (see issue #117)\nexport const maxSafeTimeout = 2_147_483_647;\n// Size in bytes of a typical form boundary, used to help estimate upload size\nexport const usualFormBoundarySize = new TextEncoder().encode('------WebKitFormBoundaryaxpyiPgbbPti10Rw').length;\nexport const stop = Symbol('stop');\n/**\nMarker returned by ky.retry() to signal a forced retry from afterResponse hooks.\n*/\nexport class RetryMarker {\n    options;\n    constructor(options) {\n        this.options = options;\n    }\n}\n/**\nForce a retry from an `afterResponse` hook.\n\nThis allows you to retry a request based on the response content, even if the response has a successful status code. The retry will respect the `retry.limit` option and skip the `shouldRetry` check. The forced retry is observable in `beforeRetry` hooks, where the error will be a `ForceRetryError`.\n\n@param options - Optional configuration for the retry.\n\n@example\n```\nimport ky, {isForceRetryError} from 'ky';\n\nconst api = ky.extend({\n    hooks: {\n        afterResponse: [\n            async (request, options, response) => {\n                // Retry based on response body content\n                if (response.status === 200) {\n                    const data = await response.clone().json();\n\n                    // Simple retry with default delay\n                    if (data.error?.code === 'TEMPORARY_ERROR') {\n                        return ky.retry();\n                    }\n\n                    // Retry with custom delay from API response\n                    if (data.error?.code === 'RATE_LIMIT') {\n                        return ky.retry({\n                            delay: data.error.retryAfter * 1000,\n                            code: 'RATE_LIMIT'\n                        });\n                    }\n\n                    // Retry with a modified request (e.g., fallback endpoint)\n                    if (data.error?.code === 'FALLBACK_TO_BACKUP') {\n                        return ky.retry({\n                            request: new Request('https://backup-api.com/endpoint', {\n                                method: request.method,\n                                headers: request.headers,\n                            }),\n                            code: 'BACKUP_ENDPOINT'\n                        });\n                    }\n\n                    // Retry with refreshed authentication\n                    if (data.error?.code === 'TOKEN_REFRESH' && data.newToken) {\n                        return ky.retry({\n                            request: new Request(request, {\n                                headers: {\n                                    ...Object.fromEntries(request.headers),\n                                    'Authorization': `Bearer ${data.newToken}`\n                                }\n                            }),\n                            code: 'TOKEN_REFRESHED'\n                        });\n                    }\n\n                    // Retry with cause to preserve error chain\n                    try {\n                        validateResponse(data);\n                    } catch (error) {\n                        return ky.retry({\n                            code: 'VALIDATION_FAILED',\n                            cause: error\n                        });\n                    }\n                }\n            }\n        ],\n        beforeRetry: [\n            ({error, retryCount}) => {\n                // Observable in beforeRetry hooks\n                if (isForceRetryError(error)) {\n                    console.log(`Forced retry #${retryCount}: ${error.message}`);\n                    // Example output: \"Forced retry #1: Forced retry: RATE_LIMIT\"\n                }\n            }\n        ]\n    }\n});\n\nconst response = await api.get('https://example.com/api');\n```\n*/\nexport const retry = (options) => new RetryMarker(options);\nexport const kyOptionKeys = {\n    json: true,\n    parseJson: true,\n    stringifyJson: true,\n    searchParams: true,\n    prefixUrl: true,\n    retry: true,\n    timeout: true,\n    hooks: true,\n    throwHttpErrors: true,\n    onDownloadProgress: true,\n    onUploadProgress: true,\n    fetch: true,\n    context: true,\n};\n// Vendor-specific fetch options that should always be passed to fetch()\n// even if they appear on the Request object due to vendor patching.\n// See: https://github.com/sindresorhus/ky/issues/541\nexport const vendorSpecificOptions = {\n    next: true, // Next.js cache revalidation (revalidate, tags)\n};\n// Standard RequestInit options that should NOT be passed separately to fetch()\n// because they're already applied to the Request object.\n// Note: `dispatcher` and `priority` are NOT included here - they're fetch-only\n// options that the Request constructor doesn't accept, so they need to be passed\n// separately to fetch().\nexport const requestOptionsRegistry = {\n    method: true,\n    headers: true,\n    body: true,\n    mode: true,\n    credentials: true,\n    cache: true,\n    redirect: true,\n    referrer: true,\n    referrerPolicy: true,\n    integrity: true,\n    keepalive: true,\n    signal: true,\n    window: true,\n    duplex: true,\n};\n//# sourceMappingURL=constants.js.map","import { usualFormBoundarySize } from '../core/constants.js';\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getBodySize = (body) => {\n    if (!body) {\n        return 0;\n    }\n    if (body instanceof FormData) {\n        // This is an approximation, as FormData size calculation is not straightforward\n        let size = 0;\n        for (const [key, value] of body) {\n            size += usualFormBoundarySize;\n            size += new TextEncoder().encode(`Content-Disposition: form-data; name=\"${key}\"`).length;\n            size += typeof value === 'string'\n                ? new TextEncoder().encode(value).length\n                : value.size;\n        }\n        return size;\n    }\n    if (body instanceof Blob) {\n        return body.size;\n    }\n    if (body instanceof ArrayBuffer) {\n        return body.byteLength;\n    }\n    if (typeof body === 'string') {\n        return new TextEncoder().encode(body).length;\n    }\n    if (body instanceof URLSearchParams) {\n        return new TextEncoder().encode(body.toString()).length;\n    }\n    if ('byteLength' in body) {\n        return (body).byteLength;\n    }\n    if (typeof body === 'object' && body !== null) {\n        try {\n            const jsonString = JSON.stringify(body);\n            return new TextEncoder().encode(jsonString).length;\n        }\n        catch {\n            return 0;\n        }\n    }\n    return 0; // Default case, unable to determine size\n};\nconst withProgress = (stream, totalBytes, onProgress) => {\n    let previousChunk;\n    let transferredBytes = 0;\n    return stream.pipeThrough(new TransformStream({\n        transform(currentChunk, controller) {\n            controller.enqueue(currentChunk);\n            if (previousChunk) {\n                transferredBytes += previousChunk.byteLength;\n                let percent = totalBytes === 0 ? 0 : transferredBytes / totalBytes;\n                // Avoid reporting 100% progress before the stream is actually finished (in case totalBytes is inaccurate)\n                if (percent >= 1) {\n                    // Epsilon is used here to get as close as possible to 100% without reaching it.\n                    // If we were to use 0.99 here, percent could potentially go backwards.\n                    percent = 1 - Number.EPSILON;\n                }\n                onProgress?.({ percent, totalBytes: Math.max(totalBytes, transferredBytes), transferredBytes }, previousChunk);\n            }\n            previousChunk = currentChunk;\n        },\n        flush() {\n            if (previousChunk) {\n                transferredBytes += previousChunk.byteLength;\n                onProgress?.({ percent: 1, totalBytes: Math.max(totalBytes, transferredBytes), transferredBytes }, previousChunk);\n            }\n        },\n    }));\n};\nexport const streamResponse = (response, onDownloadProgress) => {\n    if (!response.body) {\n        return response;\n    }\n    if (response.status === 204) {\n        return new Response(null, {\n            status: response.status,\n            statusText: response.statusText,\n            headers: response.headers,\n        });\n    }\n    const totalBytes = Math.max(0, Number(response.headers.get('content-length')) || 0);\n    return new Response(withProgress(response.body, totalBytes, onDownloadProgress), {\n        status: response.status,\n        statusText: response.statusText,\n        headers: response.headers,\n    });\n};\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const streamRequest = (request, onUploadProgress, originalBody) => {\n    if (!request.body) {\n        return request;\n    }\n    // Use original body for size calculation since request.body is already a stream\n    const totalBytes = getBodySize(originalBody ?? request.body);\n    return new Request(request, {\n        // @ts-expect-error - Types are outdated.\n        duplex: 'half',\n        body: withProgress(request.body, totalBytes, onUploadProgress),\n    });\n};\n//# sourceMappingURL=body.js.map","// eslint-disable-next-line @typescript-eslint/ban-types\nexport const isObject = (value) => value !== null && typeof value === 'object';\n//# sourceMappingURL=is.js.map","import { supportsAbortSignal } from '../core/constants.js';\nimport { isObject } from './is.js';\nexport const validateAndMerge = (...sources) => {\n    for (const source of sources) {\n        if ((!isObject(source) || Array.isArray(source)) && source !== undefined) {\n            throw new TypeError('The `options` argument must be an object');\n        }\n    }\n    return deepMerge({}, ...sources);\n};\nexport const mergeHeaders = (source1 = {}, source2 = {}) => {\n    const result = new globalThis.Headers(source1);\n    const isHeadersInstance = source2 instanceof globalThis.Headers;\n    const source = new globalThis.Headers(source2);\n    for (const [key, value] of source.entries()) {\n        if ((isHeadersInstance && value === 'undefined') || value === undefined) {\n            result.delete(key);\n        }\n        else {\n            result.set(key, value);\n        }\n    }\n    return result;\n};\nfunction newHookValue(original, incoming, property) {\n    return (Object.hasOwn(incoming, property) && incoming[property] === undefined)\n        ? []\n        : deepMerge(original[property] ?? [], incoming[property] ?? []);\n}\nexport const mergeHooks = (original = {}, incoming = {}) => ({\n    beforeRequest: newHookValue(original, incoming, 'beforeRequest'),\n    beforeRetry: newHookValue(original, incoming, 'beforeRetry'),\n    afterResponse: newHookValue(original, incoming, 'afterResponse'),\n    beforeError: newHookValue(original, incoming, 'beforeError'),\n});\nconst appendSearchParameters = (target, source) => {\n    const result = new URLSearchParams();\n    for (const input of [target, source]) {\n        if (input === undefined) {\n            continue;\n        }\n        if (input instanceof URLSearchParams) {\n            for (const [key, value] of input.entries()) {\n                result.append(key, value);\n            }\n        }\n        else if (Array.isArray(input)) {\n            for (const pair of input) {\n                if (!Array.isArray(pair) || pair.length !== 2) {\n                    throw new TypeError('Array search parameters must be provided in [[key, value], ...] format');\n                }\n                result.append(String(pair[0]), String(pair[1]));\n            }\n        }\n        else if (isObject(input)) {\n            for (const [key, value] of Object.entries(input)) {\n                if (value !== undefined) {\n                    result.append(key, String(value));\n                }\n            }\n        }\n        else {\n            // String\n            const parameters = new URLSearchParams(input);\n            for (const [key, value] of parameters.entries()) {\n                result.append(key, value);\n            }\n        }\n    }\n    return result;\n};\n// TODO: Make this strongly-typed (no `any`).\nexport const deepMerge = (...sources) => {\n    let returnValue = {};\n    let headers = {};\n    let hooks = {};\n    let searchParameters;\n    const signals = [];\n    for (const source of sources) {\n        if (Array.isArray(source)) {\n            if (!Array.isArray(returnValue)) {\n                returnValue = [];\n            }\n            returnValue = [...returnValue, ...source];\n        }\n        else if (isObject(source)) {\n            for (let [key, value] of Object.entries(source)) {\n                // Special handling for AbortSignal instances\n                if (key === 'signal' && value instanceof globalThis.AbortSignal) {\n                    signals.push(value);\n                    continue;\n                }\n                // Special handling for context - shallow merge only\n                if (key === 'context') {\n                    if (value !== undefined && value !== null && (!isObject(value) || Array.isArray(value))) {\n                        throw new TypeError('The `context` option must be an object');\n                    }\n                    // Shallow merge: always create a new object to prevent mutation bugs\n                    returnValue = {\n                        ...returnValue,\n                        context: (value === undefined || value === null)\n                            ? {}\n                            : { ...returnValue.context, ...value },\n                    };\n                    continue;\n                }\n                // Special handling for searchParams\n                if (key === 'searchParams') {\n                    if (value === undefined || value === null) {\n                        // Explicit undefined or null removes searchParams\n                        searchParameters = undefined;\n                    }\n                    else {\n                        // First source: keep as-is to preserve type (string/object/URLSearchParams)\n                        // Subsequent sources: merge and convert to URLSearchParams\n                        searchParameters = searchParameters === undefined ? value : appendSearchParameters(searchParameters, value);\n                    }\n                    continue;\n                }\n                if (isObject(value) && key in returnValue) {\n                    value = deepMerge(returnValue[key], value);\n                }\n                returnValue = { ...returnValue, [key]: value };\n            }\n            if (isObject(source.hooks)) {\n                hooks = mergeHooks(hooks, source.hooks);\n                returnValue.hooks = hooks;\n            }\n            if (isObject(source.headers)) {\n                headers = mergeHeaders(headers, source.headers);\n                returnValue.headers = headers;\n            }\n        }\n    }\n    if (searchParameters !== undefined) {\n        returnValue.searchParams = searchParameters;\n    }\n    if (signals.length > 0) {\n        if (signals.length === 1) {\n            returnValue.signal = signals[0];\n        }\n        else if (supportsAbortSignal) {\n            returnValue.signal = AbortSignal.any(signals);\n        }\n        else {\n            // When AbortSignal.any is not available, use the last signal\n            // This maintains the previous behavior before signal merging was added\n            // This can be remove when the `supportsAbortSignal` check is removed.`\n            returnValue.signal = signals.at(-1);\n        }\n    }\n    return returnValue;\n};\n//# sourceMappingURL=merge.js.map","import { requestMethods } from '../core/constants.js';\nexport const normalizeRequestMethod = (input) => requestMethods.includes(input) ? input.toUpperCase() : input;\nconst retryMethods = ['get', 'put', 'head', 'delete', 'options', 'trace'];\nconst retryStatusCodes = [408, 413, 429, 500, 502, 503, 504];\nconst retryAfterStatusCodes = [413, 429, 503];\nconst defaultRetryOptions = {\n    limit: 2,\n    methods: retryMethods,\n    statusCodes: retryStatusCodes,\n    afterStatusCodes: retryAfterStatusCodes,\n    maxRetryAfter: Number.POSITIVE_INFINITY,\n    backoffLimit: Number.POSITIVE_INFINITY,\n    delay: attemptCount => 0.3 * (2 ** (attemptCount - 1)) * 1000,\n    jitter: undefined,\n    retryOnTimeout: false,\n};\nexport const normalizeRetryOptions = (retry = {}) => {\n    if (typeof retry === 'number') {\n        return {\n            ...defaultRetryOptions,\n            limit: retry,\n        };\n    }\n    if (retry.methods && !Array.isArray(retry.methods)) {\n        throw new Error('retry.methods must be an array');\n    }\n    retry.methods &&= retry.methods.map(method => method.toLowerCase());\n    if (retry.statusCodes && !Array.isArray(retry.statusCodes)) {\n        throw new Error('retry.statusCodes must be an array');\n    }\n    const normalizedRetry = Object.fromEntries(Object.entries(retry).filter(([, value]) => value !== undefined));\n    return {\n        ...defaultRetryOptions,\n        ...normalizedRetry,\n    };\n};\n//# sourceMappingURL=normalize.js.map","export class TimeoutError extends Error {\n    request;\n    constructor(request) {\n        super(`Request timed out: ${request.method} ${request.url}`);\n        this.name = 'TimeoutError';\n        this.request = request;\n    }\n}\n//# sourceMappingURL=TimeoutError.js.map","import { TimeoutError } from '../errors/TimeoutError.js';\n// `Promise.race()` workaround (#91)\nexport default async function timeout(request, init, abortController, options) {\n    return new Promise((resolve, reject) => {\n        const timeoutId = setTimeout(() => {\n            if (abortController) {\n                abortController.abort();\n            }\n            reject(new TimeoutError(request));\n        }, options.timeout);\n        void options\n            .fetch(request, init)\n            .then(resolve)\n            .catch(reject)\n            .then(() => {\n            clearTimeout(timeoutId);\n        });\n    });\n}\n//# sourceMappingURL=timeout.js.map","// https://github.com/sindresorhus/delay/tree/ab98ae8dfcb38e1593286c94d934e70d14a4e111\nexport default async function delay(ms, { signal }) {\n    return new Promise((resolve, reject) => {\n        if (signal) {\n            signal.throwIfAborted();\n            signal.addEventListener('abort', abortHandler, { once: true });\n        }\n        function abortHandler() {\n            clearTimeout(timeoutId);\n            reject(signal.reason);\n        }\n        const timeoutId = setTimeout(() => {\n            signal?.removeEventListener('abort', abortHandler);\n            resolve();\n        }, ms);\n    });\n}\n//# sourceMappingURL=delay.js.map","import { kyOptionKeys, requestOptionsRegistry, vendorSpecificOptions } from '../core/constants.js';\nexport const findUnknownOptions = (request, options) => {\n    const unknownOptions = {};\n    for (const key in options) {\n        // Skip inherited properties\n        if (!Object.hasOwn(options, key)) {\n            continue;\n        }\n        // An option is passed to fetch() if:\n        // 1. It's not a standard RequestInit option (not in requestOptionsRegistry)\n        // 2. It's not a ky-specific option (not in kyOptionKeys)\n        // 3. Either:\n        //    a. It's not on the Request object, OR\n        //    b. It's a vendor-specific option that should always be passed (in vendorSpecificOptions)\n        if (!(key in requestOptionsRegistry) && !(key in kyOptionKeys) && (!(key in request) || key in vendorSpecificOptions)) {\n            unknownOptions[key] = options[key];\n        }\n    }\n    return unknownOptions;\n};\nexport const hasSearchParameters = (search) => {\n    if (search === undefined) {\n        return false;\n    }\n    // The `typeof array` still gives \"object\", so we need different checking for array.\n    if (Array.isArray(search)) {\n        return search.length > 0;\n    }\n    if (search instanceof URLSearchParams) {\n        return search.size > 0;\n    }\n    // Record\n    if (typeof search === 'object') {\n        return Object.keys(search).length > 0;\n    }\n    if (typeof search === 'string') {\n        return search.trim().length > 0;\n    }\n    return Boolean(search);\n};\n//# sourceMappingURL=options.js.map","import { HTTPError } from '../errors/HTTPError.js';\nimport { TimeoutError } from '../errors/TimeoutError.js';\nimport { ForceRetryError } from '../errors/ForceRetryError.js';\n/**\nType guard to check if an error is a Ky error.\n\n@param error - The error to check\n@returns `true` if the error is a Ky error, `false` otherwise\n\n@example\n```\nimport ky, {isKyError} from 'ky';\ntry {\n    const response = await ky.get('/api/data');\n} catch (error) {\n    if (isKyError(error)) {\n        // Handle Ky-specific errors\n        console.log('Ky error occurred:', error.message);\n    } else {\n        // Handle other errors\n        console.log('Unknown error:', error);\n    }\n}\n```\n*/\nexport function isKyError(error) {\n    return isHTTPError(error) || isTimeoutError(error) || isForceRetryError(error);\n}\n/**\nType guard to check if an error is an HTTPError.\n\n@param error - The error to check\n@returns `true` if the error is an HTTPError, `false` otherwise\n\n@example\n```\nimport ky, {isHTTPError} from 'ky';\ntry {\n    const response = await ky.get('/api/data');\n} catch (error) {\n    if (isHTTPError(error)) {\n        console.log('HTTP error status:', error.response.status);\n    }\n}\n```\n*/\nexport function isHTTPError(error) {\n    return error instanceof HTTPError || (error?.name === HTTPError.name);\n}\n/**\nType guard to check if an error is a TimeoutError.\n\n@param error - The error to check\n@returns `true` if the error is a TimeoutError, `false` otherwise\n\n@example\n```\nimport ky, {isTimeoutError} from 'ky';\ntry {\n    const response = await ky.get('/api/data', { timeout: 1000 });\n} catch (error) {\n    if (isTimeoutError(error)) {\n        console.log('Request timed out:', error.request.url);\n    }\n}\n```\n*/\nexport function isTimeoutError(error) {\n    return error instanceof TimeoutError || (error?.name === TimeoutError.name);\n}\n/**\nType guard to check if an error is a ForceRetryError.\n\n@param error - The error to check\n@returns `true` if the error is a ForceRetryError, `false` otherwise\n\n@example\n```\nimport ky, {isForceRetryError} from 'ky';\n\nconst api = ky.extend({\n    hooks: {\n        beforeRetry: [\n            ({error, retryCount}) => {\n                if (isForceRetryError(error)) {\n                    console.log(`Forced retry #${retryCount}: ${error.code}`);\n                }\n            }\n        ]\n    }\n});\n```\n*/\nexport function isForceRetryError(error) {\n    return error instanceof ForceRetryError || (error?.name === ForceRetryError.name);\n}\n//# sourceMappingURL=type-guards.js.map","import { HTTPError } from '../errors/HTTPError.js';\nimport { NonError } from '../errors/NonError.js';\nimport { ForceRetryError } from '../errors/ForceRetryError.js';\nimport { streamRequest, streamResponse } from '../utils/body.js';\nimport { mergeHeaders, mergeHooks } from '../utils/merge.js';\nimport { normalizeRequestMethod, normalizeRetryOptions } from '../utils/normalize.js';\nimport timeout from '../utils/timeout.js';\nimport delay from '../utils/delay.js';\nimport { findUnknownOptions, hasSearchParameters } from '../utils/options.js';\nimport { isHTTPError, isTimeoutError } from '../utils/type-guards.js';\nimport { maxSafeTimeout, responseTypes, stop, RetryMarker, supportsAbortController, supportsAbortSignal, supportsFormData, supportsResponseStreams, supportsRequestStreams, } from './constants.js';\nexport class Ky {\n    static create(input, options) {\n        const ky = new Ky(input, options);\n        const function_ = async () => {\n            if (typeof ky.#options.timeout === 'number' && ky.#options.timeout > maxSafeTimeout) {\n                throw new RangeError(`The \\`timeout\\` option cannot be greater than ${maxSafeTimeout}`);\n            }\n            // Delay the fetch so that body method shortcuts can set the Accept header\n            await Promise.resolve();\n            // Before using ky.request, _fetch clones it and saves the clone for future retries to use.\n            // If retry is not needed, close the cloned request's ReadableStream for memory safety.\n            let response = await ky.#fetch();\n            for (const hook of ky.#options.hooks.afterResponse) {\n                // Clone the response before passing to hook so we can cancel it if needed\n                const clonedResponse = ky.#decorateResponse(response.clone());\n                let modifiedResponse;\n                try {\n                    // eslint-disable-next-line no-await-in-loop\n                    modifiedResponse = await hook(ky.request, ky.#getNormalizedOptions(), clonedResponse, { retryCount: ky.#retryCount });\n                }\n                catch (error) {\n                    // Cancel both responses to prevent memory leaks when hook throws\n                    ky.#cancelResponseBody(clonedResponse);\n                    ky.#cancelResponseBody(response);\n                    throw error;\n                }\n                if (modifiedResponse instanceof RetryMarker) {\n                    // Cancel both the cloned response passed to the hook and the current response to prevent resource leaks (especially important in Deno/Bun).\n                    // Do not await cancellation since hooks can clone the response, leaving extra tee branches that keep cancel promises pending per the Streams spec.\n                    ky.#cancelResponseBody(clonedResponse);\n                    ky.#cancelResponseBody(response);\n                    throw new ForceRetryError(modifiedResponse.options);\n                }\n                // Determine which response to use going forward\n                const nextResponse = modifiedResponse instanceof globalThis.Response ? modifiedResponse : response;\n                // Cancel any response bodies we won't use to prevent memory leaks.\n                // Uses fire-and-forget since hooks may have cloned the response, creating tee branches that block cancellation.\n                if (clonedResponse !== nextResponse) {\n                    ky.#cancelResponseBody(clonedResponse);\n                }\n                if (response !== nextResponse) {\n                    ky.#cancelResponseBody(response);\n                }\n                response = nextResponse;\n            }\n            ky.#decorateResponse(response);\n            if (!response.ok && (typeof ky.#options.throwHttpErrors === 'function'\n                ? ky.#options.throwHttpErrors(response.status)\n                : ky.#options.throwHttpErrors)) {\n                let error = new HTTPError(response, ky.request, ky.#getNormalizedOptions());\n                for (const hook of ky.#options.hooks.beforeError) {\n                    // eslint-disable-next-line no-await-in-loop\n                    error = await hook(error, { retryCount: ky.#retryCount });\n                }\n                throw error;\n            }\n            // If `onDownloadProgress` is passed, it uses the stream API internally\n            if (ky.#options.onDownloadProgress) {\n                if (typeof ky.#options.onDownloadProgress !== 'function') {\n                    throw new TypeError('The `onDownloadProgress` option must be a function');\n                }\n                if (!supportsResponseStreams) {\n                    throw new Error('Streams are not supported in your environment. `ReadableStream` is missing.');\n                }\n                const progressResponse = response.clone();\n                ky.#cancelResponseBody(response);\n                return streamResponse(progressResponse, ky.#options.onDownloadProgress);\n            }\n            return response;\n        };\n        // Always wrap in #retry to catch forced retries from afterResponse hooks\n        // Method retriability is checked in #calculateRetryDelay for non-forced retries\n        const result = ky.#retry(function_)\n            .finally(() => {\n            const originalRequest = ky.#originalRequest;\n            // Ignore cancellation errors from already-locked or already-consumed streams.\n            ky.#cancelBody(originalRequest?.body ?? undefined);\n            ky.#cancelBody(ky.request.body ?? undefined);\n        });\n        for (const [type, mimeType] of Object.entries(responseTypes)) {\n            // Only expose `.bytes()` when the environment implements it.\n            if (type === 'bytes'\n                && typeof globalThis.Response?.prototype?.bytes !== 'function') {\n                continue;\n            }\n            result[type] = async () => {\n                // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n                ky.request.headers.set('accept', ky.request.headers.get('accept') || mimeType);\n                const response = await result;\n                if (type === 'json') {\n                    if (response.status === 204) {\n                        return '';\n                    }\n                    const text = await response.text();\n                    if (text === '') {\n                        return '';\n                    }\n                    if (options.parseJson) {\n                        return options.parseJson(text);\n                    }\n                    return JSON.parse(text);\n                }\n                return response[type]();\n            };\n        }\n        return result;\n    }\n    // eslint-disable-next-line unicorn/prevent-abbreviations\n    static #normalizeSearchParams(searchParams) {\n        // Filter out undefined values from plain objects\n        if (searchParams && typeof searchParams === 'object' && !Array.isArray(searchParams) && !(searchParams instanceof URLSearchParams)) {\n            return Object.fromEntries(Object.entries(searchParams).filter(([, value]) => value !== undefined));\n        }\n        return searchParams;\n    }\n    request;\n    #abortController;\n    #retryCount = 0;\n    // eslint-disable-next-line @typescript-eslint/prefer-readonly -- False positive: #input is reassigned on line 202\n    #input;\n    #options;\n    #originalRequest;\n    #userProvidedAbortSignal;\n    #cachedNormalizedOptions;\n    // eslint-disable-next-line complexity\n    constructor(input, options = {}) {\n        this.#input = input;\n        this.#options = {\n            ...options,\n            headers: mergeHeaders(this.#input.headers, options.headers),\n            hooks: mergeHooks({\n                beforeRequest: [],\n                beforeRetry: [],\n                beforeError: [],\n                afterResponse: [],\n            }, options.hooks),\n            method: normalizeRequestMethod(options.method ?? this.#input.method ?? 'GET'),\n            // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n            prefixUrl: String(options.prefixUrl || ''),\n            retry: normalizeRetryOptions(options.retry),\n            throwHttpErrors: options.throwHttpErrors ?? true,\n            timeout: options.timeout ?? 10_000,\n            fetch: options.fetch ?? globalThis.fetch.bind(globalThis),\n            context: options.context ?? {},\n        };\n        if (typeof this.#input !== 'string' && !(this.#input instanceof URL || this.#input instanceof globalThis.Request)) {\n            throw new TypeError('`input` must be a string, URL, or Request');\n        }\n        if (this.#options.prefixUrl && typeof this.#input === 'string') {\n            if (this.#input.startsWith('/')) {\n                throw new Error('`input` must not begin with a slash when using `prefixUrl`');\n            }\n            if (!this.#options.prefixUrl.endsWith('/')) {\n                this.#options.prefixUrl += '/';\n            }\n            this.#input = this.#options.prefixUrl + this.#input;\n        }\n        if (supportsAbortController && supportsAbortSignal) {\n            this.#userProvidedAbortSignal = this.#options.signal ?? this.#input.signal;\n            this.#abortController = new globalThis.AbortController();\n            this.#options.signal = this.#userProvidedAbortSignal ? AbortSignal.any([this.#userProvidedAbortSignal, this.#abortController.signal]) : this.#abortController.signal;\n        }\n        if (supportsRequestStreams) {\n            // @ts-expect-error - Types are outdated.\n            this.#options.duplex = 'half';\n        }\n        if (this.#options.json !== undefined) {\n            this.#options.body = this.#options.stringifyJson?.(this.#options.json) ?? JSON.stringify(this.#options.json);\n            this.#options.headers.set('content-type', this.#options.headers.get('content-type') ?? 'application/json');\n        }\n        // To provide correct form boundary, Content-Type header should be deleted when creating Request from another Request with FormData/URLSearchParams body\n        // Only delete if user didn't explicitly provide a custom content-type\n        const userProvidedContentType = options.headers && new globalThis.Headers(options.headers).has('content-type');\n        if (this.#input instanceof globalThis.Request\n            && ((supportsFormData && this.#options.body instanceof globalThis.FormData) || this.#options.body instanceof URLSearchParams)\n            && !userProvidedContentType) {\n            this.#options.headers.delete('content-type');\n        }\n        this.request = new globalThis.Request(this.#input, this.#options);\n        if (hasSearchParameters(this.#options.searchParams)) {\n            // eslint-disable-next-line unicorn/prevent-abbreviations\n            const textSearchParams = typeof this.#options.searchParams === 'string'\n                ? this.#options.searchParams.replace(/^\\?/, '')\n                : new URLSearchParams(Ky.#normalizeSearchParams(this.#options.searchParams)).toString();\n            // eslint-disable-next-line unicorn/prevent-abbreviations\n            const searchParams = '?' + textSearchParams;\n            const url = this.request.url.replace(/(?:\\?.*?)?(?=#|$)/, searchParams);\n            // Recreate request with the updated URL. We already have all options in this.#options, including duplex.\n            this.request = new globalThis.Request(url, this.#options);\n        }\n        // If `onUploadProgress` is passed, it uses the stream API internally\n        if (this.#options.onUploadProgress) {\n            if (typeof this.#options.onUploadProgress !== 'function') {\n                throw new TypeError('The `onUploadProgress` option must be a function');\n            }\n            if (!supportsRequestStreams) {\n                throw new Error('Request streams are not supported in your environment. The `duplex` option for `Request` is not available.');\n            }\n            this.request = this.#wrapRequestWithUploadProgress(this.request, this.#options.body ?? undefined);\n        }\n    }\n    #calculateDelay() {\n        const retryDelay = this.#options.retry.delay(this.#retryCount);\n        let jitteredDelay = retryDelay;\n        if (this.#options.retry.jitter === true) {\n            jitteredDelay = Math.random() * retryDelay;\n        }\n        else if (typeof this.#options.retry.jitter === 'function') {\n            jitteredDelay = this.#options.retry.jitter(retryDelay);\n            if (!Number.isFinite(jitteredDelay) || jitteredDelay < 0) {\n                jitteredDelay = retryDelay;\n            }\n        }\n        // Handle undefined backoffLimit by treating it as no limit (Infinity)\n        const backoffLimit = this.#options.retry.backoffLimit ?? Number.POSITIVE_INFINITY;\n        return Math.min(backoffLimit, jitteredDelay);\n    }\n    async #calculateRetryDelay(error) {\n        this.#retryCount++;\n        if (this.#retryCount > this.#options.retry.limit) {\n            throw error;\n        }\n        // Wrap non-Error throws to ensure consistent error handling\n        const errorObject = error instanceof Error ? error : new NonError(error);\n        // Handle forced retry from afterResponse hook - skip method check and shouldRetry\n        if (errorObject instanceof ForceRetryError) {\n            return errorObject.customDelay ?? this.#calculateDelay();\n        }\n        // Check if method is retriable for non-forced retries\n        if (!this.#options.retry.methods.includes(this.request.method.toLowerCase())) {\n            throw error;\n        }\n        // User-provided shouldRetry function takes precedence over all other checks\n        if (this.#options.retry.shouldRetry !== undefined) {\n            const result = await this.#options.retry.shouldRetry({ error: errorObject, retryCount: this.#retryCount });\n            // Strict boolean checking - only exact true/false are handled specially\n            if (result === false) {\n                throw error;\n            }\n            if (result === true) {\n                // Force retry - skip all other validation and return delay\n                return this.#calculateDelay();\n            }\n            // If undefined or any other value, fall through to default behavior\n        }\n        // Default timeout behavior\n        if (isTimeoutError(error) && !this.#options.retry.retryOnTimeout) {\n            throw error;\n        }\n        if (isHTTPError(error)) {\n            if (!this.#options.retry.statusCodes.includes(error.response.status)) {\n                throw error;\n            }\n            const retryAfter = error.response.headers.get('Retry-After')\n                ?? error.response.headers.get('RateLimit-Reset')\n                ?? error.response.headers.get('X-RateLimit-Retry-After') // Symfony-based services\n                ?? error.response.headers.get('X-RateLimit-Reset') // GitHub\n                ?? error.response.headers.get('X-Rate-Limit-Reset'); // Twitter\n            if (retryAfter && this.#options.retry.afterStatusCodes.includes(error.response.status)) {\n                let after = Number(retryAfter) * 1000;\n                if (Number.isNaN(after)) {\n                    after = Date.parse(retryAfter) - Date.now();\n                }\n                else if (after >= Date.parse('2024-01-01')) {\n                    // A large number is treated as a timestamp (fixed threshold protects against clock skew)\n                    after -= Date.now();\n                }\n                const max = this.#options.retry.maxRetryAfter ?? after;\n                // Don't apply jitter when server provides explicit retry timing\n                return after < max ? after : max;\n            }\n            if (error.response.status === 413) {\n                throw error;\n            }\n        }\n        return this.#calculateDelay();\n    }\n    #decorateResponse(response) {\n        if (this.#options.parseJson) {\n            response.json = async () => this.#options.parseJson(await response.text());\n        }\n        return response;\n    }\n    #cancelBody(body) {\n        if (!body) {\n            return;\n        }\n        // Ignore cancellation failures from already-locked or already-consumed streams.\n        void body.cancel().catch(() => undefined);\n    }\n    #cancelResponseBody(response) {\n        // Ignore cancellation failures from already-locked or already-consumed streams.\n        this.#cancelBody(response.body ?? undefined);\n    }\n    async #retry(function_) {\n        try {\n            return await function_();\n        }\n        catch (error) {\n            const ms = Math.min(await this.#calculateRetryDelay(error), maxSafeTimeout);\n            if (this.#retryCount < 1) {\n                throw error;\n            }\n            // Only use user-provided signal for delay, not our internal abortController\n            await delay(ms, this.#userProvidedAbortSignal ? { signal: this.#userProvidedAbortSignal } : {});\n            // Apply custom request from forced retry before beforeRetry hooks\n            // Ensure the custom request has the correct managed signal for timeouts and user aborts\n            if (error instanceof ForceRetryError && error.customRequest) {\n                const managedRequest = this.#options.signal\n                    ? new globalThis.Request(error.customRequest, { signal: this.#options.signal })\n                    : new globalThis.Request(error.customRequest);\n                this.#assignRequest(managedRequest);\n            }\n            for (const hook of this.#options.hooks.beforeRetry) {\n                // eslint-disable-next-line no-await-in-loop\n                const hookResult = await hook({\n                    request: this.request,\n                    options: this.#getNormalizedOptions(),\n                    error: error,\n                    retryCount: this.#retryCount,\n                });\n                if (hookResult instanceof globalThis.Request) {\n                    this.#assignRequest(hookResult);\n                    break;\n                }\n                // If a Response is returned, use it and skip the retry\n                if (hookResult instanceof globalThis.Response) {\n                    return hookResult;\n                }\n                // If `stop` is returned from the hook, the retry process is stopped\n                if (hookResult === stop) {\n                    return;\n                }\n            }\n            return this.#retry(function_);\n        }\n    }\n    async #fetch() {\n        // Reset abortController if it was aborted (happens on timeout retry)\n        if (this.#abortController?.signal.aborted) {\n            this.#abortController = new globalThis.AbortController();\n            this.#options.signal = this.#userProvidedAbortSignal ? AbortSignal.any([this.#userProvidedAbortSignal, this.#abortController.signal]) : this.#abortController.signal;\n            // Recreate request with new signal\n            this.request = new globalThis.Request(this.request, { signal: this.#options.signal });\n        }\n        for (const hook of this.#options.hooks.beforeRequest) {\n            // eslint-disable-next-line no-await-in-loop\n            const result = await hook(this.request, this.#getNormalizedOptions(), { retryCount: this.#retryCount });\n            if (result instanceof Response) {\n                return result;\n            }\n            if (result instanceof globalThis.Request) {\n                this.#assignRequest(result);\n                break;\n            }\n        }\n        const nonRequestOptions = findUnknownOptions(this.request, this.#options);\n        // Cloning is done here to prepare in advance for retries\n        this.#originalRequest = this.request;\n        this.request = this.#originalRequest.clone();\n        if (this.#options.timeout === false) {\n            return this.#options.fetch(this.#originalRequest, nonRequestOptions);\n        }\n        return timeout(this.#originalRequest, nonRequestOptions, this.#abortController, this.#options);\n    }\n    #getNormalizedOptions() {\n        if (!this.#cachedNormalizedOptions) {\n            const { hooks, ...normalizedOptions } = this.#options;\n            this.#cachedNormalizedOptions = Object.freeze(normalizedOptions);\n        }\n        return this.#cachedNormalizedOptions;\n    }\n    #assignRequest(request) {\n        this.#cachedNormalizedOptions = undefined;\n        this.request = this.#wrapRequestWithUploadProgress(request);\n    }\n    #wrapRequestWithUploadProgress(request, originalBody) {\n        if (!this.#options.onUploadProgress || !request.body) {\n            return request;\n        }\n        return streamRequest(request, this.#options.onUploadProgress, originalBody ?? this.#options.body ?? undefined);\n    }\n}\n//# sourceMappingURL=Ky.js.map","/*! MIT License © Sindre Sorhus */\nimport { Ky } from './core/Ky.js';\nimport { requestMethods, stop, retry } from './core/constants.js';\nimport { validateAndMerge } from './utils/merge.js';\nconst createInstance = (defaults) => {\n    // eslint-disable-next-line @typescript-eslint/promise-function-async\n    const ky = (input, options) => Ky.create(input, validateAndMerge(defaults, options));\n    for (const method of requestMethods) {\n        // eslint-disable-next-line @typescript-eslint/promise-function-async\n        ky[method] = (input, options) => Ky.create(input, validateAndMerge(defaults, options, { method }));\n    }\n    ky.create = (newDefaults) => createInstance(validateAndMerge(newDefaults));\n    ky.extend = (newDefaults) => {\n        if (typeof newDefaults === 'function') {\n            newDefaults = newDefaults(defaults ?? {});\n        }\n        return createInstance(validateAndMerge(defaults, newDefaults));\n    };\n    ky.stop = stop;\n    ky.retry = retry;\n    return ky;\n};\nconst ky = createInstance();\nexport default ky;\nexport { HTTPError } from './errors/HTTPError.js';\nexport { TimeoutError } from './errors/TimeoutError.js';\nexport { ForceRetryError } from './errors/ForceRetryError.js';\nexport { isKyError, isHTTPError, isTimeoutError, isForceRetryError, } from './utils/type-guards.js';\n// Intentionally not exporting this for now as it's just an implementation detail and we don't want to commit to a certain API yet at least.\n// export {NonError} from './errors/NonError.js';\n//# sourceMappingURL=index.js.map","exports.parse = exports.decode = decode\n\nexports.stringify = exports.encode = encode\n\nexports.safe = safe\nexports.unsafe = unsafe\n\nvar eol = typeof process !== 'undefined' &&\n  process.platform === 'win32' ? '\\r\\n' : '\\n'\n\nfunction encode (obj, opt) {\n  var children = []\n  var out = ''\n\n  if (typeof opt === 'string') {\n    opt = {\n      section: opt,\n      whitespace: false,\n    }\n  } else {\n    opt = opt || {}\n    opt.whitespace = opt.whitespace === true\n  }\n\n  var separator = opt.whitespace ? ' = ' : '='\n\n  Object.keys(obj).forEach(function (k, _, __) {\n    var val = obj[k]\n    if (val && Array.isArray(val)) {\n      val.forEach(function (item) {\n        out += safe(k + '[]') + separator + safe(item) + '\\n'\n      })\n    } else if (val && typeof val === 'object')\n      children.push(k)\n    else\n      out += safe(k) + separator + safe(val) + eol\n  })\n\n  if (opt.section && out.length)\n    out = '[' + safe(opt.section) + ']' + eol + out\n\n  children.forEach(function (k, _, __) {\n    var nk = dotSplit(k).join('\\\\.')\n    var section = (opt.section ? opt.section + '.' : '') + nk\n    var child = encode(obj[k], {\n      section: section,\n      whitespace: opt.whitespace,\n    })\n    if (out.length && child.length)\n      out += eol\n\n    out += child\n  })\n\n  return out\n}\n\nfunction dotSplit (str) {\n  return str.replace(/\\1/g, '\\u0002LITERAL\\\\1LITERAL\\u0002')\n    .replace(/\\\\\\./g, '\\u0001')\n    .split(/\\./).map(function (part) {\n      return part.replace(/\\1/g, '\\\\.')\n        .replace(/\\2LITERAL\\\\1LITERAL\\2/g, '\\u0001')\n    })\n}\n\nfunction decode (str) {\n  var out = {}\n  var p = out\n  var section = null\n  //          section     |key      = value\n  var re = /^\\[([^\\]]*)\\]$|^([^=]+)(=(.*))?$/i\n  var lines = str.split(/[\\r\\n]+/g)\n\n  lines.forEach(function (line, _, __) {\n    if (!line || line.match(/^\\s*[;#]/))\n      return\n    var match = line.match(re)\n    if (!match)\n      return\n    if (match[1] !== undefined) {\n      section = unsafe(match[1])\n      if (section === '__proto__') {\n        // not allowed\n        // keep parsing the section, but don't attach it.\n        p = {}\n        return\n      }\n      p = out[section] = out[section] || {}\n      return\n    }\n    var key = unsafe(match[2])\n    if (key === '__proto__')\n      return\n    var value = match[3] ? unsafe(match[4]) : true\n    switch (value) {\n      case 'true':\n      case 'false':\n      case 'null': value = JSON.parse(value)\n    }\n\n    // Convert keys with '[]' suffix to an array\n    if (key.length > 2 && key.slice(-2) === '[]') {\n      key = key.substring(0, key.length - 2)\n      if (key === '__proto__')\n        return\n      if (!p[key])\n        p[key] = []\n      else if (!Array.isArray(p[key]))\n        p[key] = [p[key]]\n    }\n\n    // safeguard against resetting a previously defined\n    // array by accidentally forgetting the brackets\n    if (Array.isArray(p[key]))\n      p[key].push(value)\n    else\n      p[key] = value\n  })\n\n  // {a:{y:1},\"a.b\":{x:2}} --> {a:{y:1,b:{x:2}}}\n  // use a filter to return the keys that have to be deleted.\n  Object.keys(out).filter(function (k, _, __) {\n    if (!out[k] ||\n      typeof out[k] !== 'object' ||\n      Array.isArray(out[k]))\n      return false\n\n    // see if the parent section is also an object.\n    // if so, add it to that, and mark this one for deletion\n    var parts = dotSplit(k)\n    var p = out\n    var l = parts.pop()\n    var nl = l.replace(/\\\\\\./g, '.')\n    parts.forEach(function (part, _, __) {\n      if (part === '__proto__')\n        return\n      if (!p[part] || typeof p[part] !== 'object')\n        p[part] = {}\n      p = p[part]\n    })\n    if (p === out && nl === l)\n      return false\n\n    p[nl] = out[k]\n    return true\n  }).forEach(function (del, _, __) {\n    delete out[del]\n  })\n\n  return out\n}\n\nfunction isQuoted (val) {\n  return (val.charAt(0) === '\"' && val.slice(-1) === '\"') ||\n    (val.charAt(0) === \"'\" && val.slice(-1) === \"'\")\n}\n\nfunction safe (val) {\n  return (typeof val !== 'string' ||\n    val.match(/[=\\r\\n]/) ||\n    val.match(/^\\[/) ||\n    (val.length > 1 &&\n     isQuoted(val)) ||\n    val !== val.trim())\n    ? JSON.stringify(val)\n    : val.replace(/;/g, '\\\\;').replace(/#/g, '\\\\#')\n}\n\nfunction unsafe (val, doUnesc) {\n  val = (val || '').trim()\n  if (isQuoted(val)) {\n    // remove the single quotes before calling JSON.parse\n    if (val.charAt(0) === \"'\")\n      val = val.substr(1, val.length - 2)\n\n    try {\n      val = JSON.parse(val)\n    } catch (_) {}\n  } else {\n    // walk the val to find the first not-escaped ; character\n    var esc = false\n    var unesc = ''\n    for (var i = 0, l = val.length; i < l; i++) {\n      var c = val.charAt(i)\n      if (esc) {\n        if ('\\\\;#'.indexOf(c) !== -1)\n          unesc += c\n        else\n          unesc += '\\\\' + c\n\n        esc = false\n      } else if (';#'.indexOf(c) !== -1)\n        break\n      else if (c === '\\\\')\n        esc = true\n      else\n        unesc += c\n    }\n    if (esc)\n      unesc += '\\\\'\n\n    return unesc.trim()\n  }\n  return val\n}\n","'use strict';\nvar singleComment = 1;\nvar multiComment = 2;\n\nfunction stripWithoutWhitespace() {\n\treturn '';\n}\n\nfunction stripWithWhitespace(str, start, end) {\n\treturn str.slice(start, end).replace(/\\S/g, ' ');\n}\n\nmodule.exports = function (str, opts) {\n\topts = opts || {};\n\n\tvar currentChar;\n\tvar nextChar;\n\tvar insideString = false;\n\tvar insideComment = false;\n\tvar offset = 0;\n\tvar ret = '';\n\tvar strip = opts.whitespace === false ? stripWithoutWhitespace : stripWithWhitespace;\n\n\tfor (var i = 0; i < str.length; i++) {\n\t\tcurrentChar = str[i];\n\t\tnextChar = str[i + 1];\n\n\t\tif (!insideComment && currentChar === '\"') {\n\t\t\tvar escaped = str[i - 1] === '\\\\' && str[i - 2] !== '\\\\';\n\t\t\tif (!escaped) {\n\t\t\t\tinsideString = !insideString;\n\t\t\t}\n\t\t}\n\n\t\tif (insideString) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!insideComment && currentChar + nextChar === '//') {\n\t\t\tret += str.slice(offset, i);\n\t\t\toffset = i;\n\t\t\tinsideComment = singleComment;\n\t\t\ti++;\n\t\t} else if (insideComment === singleComment && currentChar + nextChar === '\\r\\n') {\n\t\t\ti++;\n\t\t\tinsideComment = false;\n\t\t\tret += strip(str, offset, i);\n\t\t\toffset = i;\n\t\t\tcontinue;\n\t\t} else if (insideComment === singleComment && currentChar === '\\n') {\n\t\t\tinsideComment = false;\n\t\t\tret += strip(str, offset, i);\n\t\t\toffset = i;\n\t\t} else if (!insideComment && currentChar + nextChar === '/*') {\n\t\t\tret += str.slice(offset, i);\n\t\t\toffset = i;\n\t\t\tinsideComment = multiComment;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t} else if (insideComment === multiComment && currentChar + nextChar === '*/') {\n\t\t\ti++;\n\t\t\tinsideComment = false;\n\t\t\tret += strip(str, offset, i + 1);\n\t\t\toffset = i + 1;\n\t\t\tcontinue;\n\t\t}\n\t}\n\n\treturn ret + (insideComment ? strip(str.substr(offset)) : str.substr(offset));\n};\n","'use strict';\nvar fs   = require('fs')\nvar ini  = require('ini')\nvar path = require('path')\nvar stripJsonComments = require('strip-json-comments')\n\nvar parse = exports.parse = function (content) {\n\n  //if it ends in .json or starts with { then it must be json.\n  //must be done this way, because ini accepts everything.\n  //can't just try and parse it and let it throw if it's not ini.\n  //everything is ini. even json with a syntax error.\n\n  if(/^\\s*{/.test(content))\n    return JSON.parse(stripJsonComments(content))\n  return ini.parse(content)\n\n}\n\nvar file = exports.file = function () {\n  var args = [].slice.call(arguments).filter(function (arg) { return arg != null })\n\n  //path.join breaks if it's a not a string, so just skip this.\n  for(var i in args)\n    if('string' !== typeof args[i])\n      return\n\n  var file = path.join.apply(null, args)\n  var content\n  try {\n    return fs.readFileSync(file,'utf-8')\n  } catch (err) {\n    return\n  }\n}\n\nvar json = exports.json = function () {\n  var content = file.apply(null, arguments)\n  return content ? parse(content) : null\n}\n\nvar env = exports.env = function (prefix, env) {\n  env = env || process.env\n  var obj = {}\n  var l = prefix.length\n  for(var k in env) {\n    if(k.toLowerCase().indexOf(prefix.toLowerCase()) === 0) {\n\n      var keypath = k.substring(l).split('__')\n\n      // Trim empty strings from keypath array\n      var _emptyStringIndex\n      while ((_emptyStringIndex=keypath.indexOf('')) > -1) {\n        keypath.splice(_emptyStringIndex, 1)\n      }\n\n      var cursor = obj\n      keypath.forEach(function _buildSubObj(_subkey,i){\n\n        // (check for _subkey first so we ignore empty strings)\n        // (check for cursor to avoid assignment to primitive objects)\n        if (!_subkey || typeof cursor !== 'object')\n          return\n\n        // If this is the last key, just stuff the value in there\n        // Assigns actual value from env variable to final key\n        // (unless it's just an empty string- in that case use the last valid key)\n        if (i === keypath.length-1)\n          cursor[_subkey] = env[k]\n\n\n        // Build sub-object if nothing already exists at the keypath\n        if (cursor[_subkey] === undefined)\n          cursor[_subkey] = {}\n\n        // Increment cursor used to track the object at the current depth\n        cursor = cursor[_subkey]\n\n      })\n\n    }\n\n  }\n\n  return obj\n}\n\nvar find = exports.find = function () {\n  var rel = path.join.apply(null, [].slice.call(arguments))\n\n  function find(start, rel) {\n    var file = path.join(start, rel)\n    try {\n      fs.statSync(file)\n      return file\n    } catch (err) {\n      if(path.dirname(start) !== start) // root\n        return find(path.dirname(start), rel)\n    }\n  }\n  return find(process.cwd(), rel)\n}\n\n\n","/*!\n * @description Recursive object extending\n * @author Viacheslav Lotsmanov <lotsmanov89@gmail.com>\n * @license MIT\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2013-2018 Viacheslav Lotsmanov\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nfunction isSpecificValue(val) {\n\treturn (\n\t\tval instanceof Buffer\n\t\t|| val instanceof Date\n\t\t|| val instanceof RegExp\n\t) ? true : false;\n}\n\nfunction cloneSpecificValue(val) {\n\tif (val instanceof Buffer) {\n\t\tvar x = Buffer.alloc\n\t\t\t? Buffer.alloc(val.length)\n\t\t\t: new Buffer(val.length);\n\t\tval.copy(x);\n\t\treturn x;\n\t} else if (val instanceof Date) {\n\t\treturn new Date(val.getTime());\n\t} else if (val instanceof RegExp) {\n\t\treturn new RegExp(val);\n\t} else {\n\t\tthrow new Error('Unexpected situation');\n\t}\n}\n\n/**\n * Recursive cloning array.\n */\nfunction deepCloneArray(arr) {\n\tvar clone = [];\n\tarr.forEach(function (item, index) {\n\t\tif (typeof item === 'object' && item !== null) {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tclone[index] = deepCloneArray(item);\n\t\t\t} else if (isSpecificValue(item)) {\n\t\t\t\tclone[index] = cloneSpecificValue(item);\n\t\t\t} else {\n\t\t\t\tclone[index] = deepExtend({}, item);\n\t\t\t}\n\t\t} else {\n\t\t\tclone[index] = item;\n\t\t}\n\t});\n\treturn clone;\n}\n\nfunction safeGetProperty(object, property) {\n\treturn property === '__proto__' ? undefined : object[property];\n}\n\n/**\n * Extening object that entered in first argument.\n *\n * Returns extended object or false if have no target object or incorrect type.\n *\n * If you wish to clone source object (without modify it), just use empty new\n * object as first argument, like this:\n *   deepExtend({}, yourObj_1, [yourObj_N]);\n */\nvar deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) {\n\tif (arguments.length < 1 || typeof arguments[0] !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (arguments.length < 2) {\n\t\treturn arguments[0];\n\t}\n\n\tvar target = arguments[0];\n\n\t// convert arguments to array and cut off target object\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\n\tvar val, src, clone;\n\n\targs.forEach(function (obj) {\n\t\t// skip argument if isn't an object, is null, or is an array\n\t\tif (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\n\t\t\treturn;\n\t\t}\n\n\t\tObject.keys(obj).forEach(function (key) {\n\t\t\tsrc = safeGetProperty(target, key); // source value\n\t\t\tval = safeGetProperty(obj, key); // new value\n\n\t\t\t// recursion prevention\n\t\t\tif (val === target) {\n\t\t\t\treturn;\n\n\t\t\t/**\n\t\t\t * if new value isn't object then just overwrite by new value\n\t\t\t * instead of extending.\n\t\t\t */\n\t\t\t} else if (typeof val !== 'object' || val === null) {\n\t\t\t\ttarget[key] = val;\n\t\t\t\treturn;\n\n\t\t\t// just clone arrays (and recursive clone objects inside)\n\t\t\t} else if (Array.isArray(val)) {\n\t\t\t\ttarget[key] = deepCloneArray(val);\n\t\t\t\treturn;\n\n\t\t\t// custom cloning and overwrite for specific objects\n\t\t\t} else if (isSpecificValue(val)) {\n\t\t\t\ttarget[key] = cloneSpecificValue(val);\n\t\t\t\treturn;\n\n\t\t\t// overwrite by new value if source isn't object or array\n\t\t\t} else if (typeof src !== 'object' || src === null || Array.isArray(src)) {\n\t\t\t\ttarget[key] = deepExtend({}, val);\n\t\t\t\treturn;\n\n\t\t\t// source value and new value is objects both, extending...\n\t\t\t} else {\n\t\t\t\ttarget[key] = deepExtend(src, val);\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t});\n\n\treturn target;\n};\n","'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n","var cc   = require('./lib/utils')\nvar join = require('path').join\nvar deepExtend = require('deep-extend')\nvar etc = '/etc'\nvar win = process.platform === \"win32\"\nvar home = win\n           ? process.env.USERPROFILE\n           : process.env.HOME\n\nmodule.exports = function (name, defaults, argv, parse) {\n  if('string' !== typeof name)\n    throw new Error('rc(name): name *must* be string')\n  if(!argv)\n    argv = require('minimist')(process.argv.slice(2))\n  defaults = (\n      'string' === typeof defaults\n    ? cc.json(defaults) : defaults\n    ) || {}\n\n  parse = parse || cc.parse\n\n  var env = cc.env(name + '_')\n\n  var configs = [defaults]\n  var configFiles = []\n  function addConfigFile (file) {\n    if (configFiles.indexOf(file) >= 0) return\n    var fileConfig = cc.file(file)\n    if (fileConfig) {\n      configs.push(parse(fileConfig))\n      configFiles.push(file)\n    }\n  }\n\n  // which files do we look at?\n  if (!win)\n   [join(etc, name, 'config'),\n    join(etc, name + 'rc')].forEach(addConfigFile)\n  if (home)\n   [join(home, '.config', name, 'config'),\n    join(home, '.config', name),\n    join(home, '.' + name, 'config'),\n    join(home, '.' + name + 'rc')].forEach(addConfigFile)\n  addConfigFile(cc.find('.'+name+'rc'))\n  if (env.config) addConfigFile(env.config)\n  if (argv.config) addConfigFile(argv.config)\n\n  return deepExtend.apply(null, configs.concat([\n    env,\n    argv,\n    configFiles.length ? {configs: configFiles, config: configFiles[configFiles.length - 1]} : undefined,\n  ]))\n}\n","import rc from 'rc';\n\nexport default function registryUrl(scope) {\n\tconst result = rc('npm', {registry: 'https://registry.npmjs.org/'});\n\tconst url = result[`${scope}:registry`] || result.config_registry || result.registry;\n\treturn url.slice(-1) === '/' ? url : `${url}/`;\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n  if (!cwd)\n    cwd = origCwd.call(process)\n  return cwd\n}\ntry {\n  process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n  var chdir = process.chdir\n  process.chdir = function (d) {\n    cwd = null\n    chdir.call(process, d)\n  }\n  if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n  // (re-)implement some things that are known busted or missing.\n\n  // lchmod, broken prior to 0.6.2\n  // back-port the fix here.\n  if (constants.hasOwnProperty('O_SYMLINK') &&\n      process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n    patchLchmod(fs)\n  }\n\n  // lutimes implementation, or no-op\n  if (!fs.lutimes) {\n    patchLutimes(fs)\n  }\n\n  // https://github.com/isaacs/node-graceful-fs/issues/4\n  // Chown should not fail on einval or eperm if non-root.\n  // It should not fail on enosys ever, as this just indicates\n  // that a fs doesn't support the intended operation.\n\n  fs.chown = chownFix(fs.chown)\n  fs.fchown = chownFix(fs.fchown)\n  fs.lchown = chownFix(fs.lchown)\n\n  fs.chmod = chmodFix(fs.chmod)\n  fs.fchmod = chmodFix(fs.fchmod)\n  fs.lchmod = chmodFix(fs.lchmod)\n\n  fs.chownSync = chownFixSync(fs.chownSync)\n  fs.fchownSync = chownFixSync(fs.fchownSync)\n  fs.lchownSync = chownFixSync(fs.lchownSync)\n\n  fs.chmodSync = chmodFixSync(fs.chmodSync)\n  fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n  fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n  fs.stat = statFix(fs.stat)\n  fs.fstat = statFix(fs.fstat)\n  fs.lstat = statFix(fs.lstat)\n\n  fs.statSync = statFixSync(fs.statSync)\n  fs.fstatSync = statFixSync(fs.fstatSync)\n  fs.lstatSync = statFixSync(fs.lstatSync)\n\n  // if lchmod/lchown do not exist, then make them no-ops\n  if (fs.chmod && !fs.lchmod) {\n    fs.lchmod = function (path, mode, cb) {\n      if (cb) process.nextTick(cb)\n    }\n    fs.lchmodSync = function () {}\n  }\n  if (fs.chown && !fs.lchown) {\n    fs.lchown = function (path, uid, gid, cb) {\n      if (cb) process.nextTick(cb)\n    }\n    fs.lchownSync = function () {}\n  }\n\n  // on Windows, A/V software can lock the directory, causing this\n  // to fail with an EACCES or EPERM if the directory contains newly\n  // created files.  Try again on failure, for up to 60 seconds.\n\n  // Set the timeout this long because some Windows Anti-Virus, such as Parity\n  // bit9, may lock files for up to a minute, causing npm package install\n  // failures. Also, take care to yield the scheduler. Windows scheduling gives\n  // CPU to a busy looping process, which can cause the program causing the lock\n  // contention to be starved of CPU by node, so the contention doesn't resolve.\n  if (platform === \"win32\") {\n    fs.rename = typeof fs.rename !== 'function' ? fs.rename\n    : (function (fs$rename) {\n      function rename (from, to, cb) {\n        var start = Date.now()\n        var backoff = 0;\n        fs$rename(from, to, function CB (er) {\n          if (er\n              && (er.code === \"EACCES\" || er.code === \"EPERM\")\n              && Date.now() - start < 60000) {\n            setTimeout(function() {\n              fs.stat(to, function (stater, st) {\n                if (stater && stater.code === \"ENOENT\")\n                  fs$rename(from, to, CB);\n                else\n                  cb(er)\n              })\n            }, backoff)\n            if (backoff < 100)\n              backoff += 10;\n            return;\n          }\n          if (cb) cb(er)\n        })\n      }\n      if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n      return rename\n    })(fs.rename)\n  }\n\n  // if read() returns EAGAIN, then just try it again.\n  fs.read = typeof fs.read !== 'function' ? fs.read\n  : (function (fs$read) {\n    function read (fd, buffer, offset, length, position, callback_) {\n      var callback\n      if (callback_ && typeof callback_ === 'function') {\n        var eagCounter = 0\n        callback = function (er, _, __) {\n          if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n            eagCounter ++\n            return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n          }\n          callback_.apply(this, arguments)\n        }\n      }\n      return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n    }\n\n    // This ensures `util.promisify` works as it does for native `fs.read`.\n    if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n    return read\n  })(fs.read)\n\n  fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n  : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n    var eagCounter = 0\n    while (true) {\n      try {\n        return fs$readSync.call(fs, fd, buffer, offset, length, position)\n      } catch (er) {\n        if (er.code === 'EAGAIN' && eagCounter < 10) {\n          eagCounter ++\n          continue\n        }\n        throw er\n      }\n    }\n  }})(fs.readSync)\n\n  function patchLchmod (fs) {\n    fs.lchmod = function (path, mode, callback) {\n      fs.open( path\n             , constants.O_WRONLY | constants.O_SYMLINK\n             , mode\n             , function (err, fd) {\n        if (err) {\n          if (callback) callback(err)\n          return\n        }\n        // prefer to return the chmod error, if one occurs,\n        // but still try to close, and report closing errors if they occur.\n        fs.fchmod(fd, mode, function (err) {\n          fs.close(fd, function(err2) {\n            if (callback) callback(err || err2)\n          })\n        })\n      })\n    }\n\n    fs.lchmodSync = function (path, mode) {\n      var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n      // prefer to return the chmod error, if one occurs,\n      // but still try to close, and report closing errors if they occur.\n      var threw = true\n      var ret\n      try {\n        ret = fs.fchmodSync(fd, mode)\n        threw = false\n      } finally {\n        if (threw) {\n          try {\n            fs.closeSync(fd)\n          } catch (er) {}\n        } else {\n          fs.closeSync(fd)\n        }\n      }\n      return ret\n    }\n  }\n\n  function patchLutimes (fs) {\n    if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n      fs.lutimes = function (path, at, mt, cb) {\n        fs.open(path, constants.O_SYMLINK, function (er, fd) {\n          if (er) {\n            if (cb) cb(er)\n            return\n          }\n          fs.futimes(fd, at, mt, function (er) {\n            fs.close(fd, function (er2) {\n              if (cb) cb(er || er2)\n            })\n          })\n        })\n      }\n\n      fs.lutimesSync = function (path, at, mt) {\n        var fd = fs.openSync(path, constants.O_SYMLINK)\n        var ret\n        var threw = true\n        try {\n          ret = fs.futimesSync(fd, at, mt)\n          threw = false\n        } finally {\n          if (threw) {\n            try {\n              fs.closeSync(fd)\n            } catch (er) {}\n          } else {\n            fs.closeSync(fd)\n          }\n        }\n        return ret\n      }\n\n    } else if (fs.futimes) {\n      fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n      fs.lutimesSync = function () {}\n    }\n  }\n\n  function chmodFix (orig) {\n    if (!orig) return orig\n    return function (target, mode, cb) {\n      return orig.call(fs, target, mode, function (er) {\n        if (chownErOk(er)) er = null\n        if (cb) cb.apply(this, arguments)\n      })\n    }\n  }\n\n  function chmodFixSync (orig) {\n    if (!orig) return orig\n    return function (target, mode) {\n      try {\n        return orig.call(fs, target, mode)\n      } catch (er) {\n        if (!chownErOk(er)) throw er\n      }\n    }\n  }\n\n\n  function chownFix (orig) {\n    if (!orig) return orig\n    return function (target, uid, gid, cb) {\n      return orig.call(fs, target, uid, gid, function (er) {\n        if (chownErOk(er)) er = null\n        if (cb) cb.apply(this, arguments)\n      })\n    }\n  }\n\n  function chownFixSync (orig) {\n    if (!orig) return orig\n    return function (target, uid, gid) {\n      try {\n        return orig.call(fs, target, uid, gid)\n      } catch (er) {\n        if (!chownErOk(er)) throw er\n      }\n    }\n  }\n\n  function statFix (orig) {\n    if (!orig) return orig\n    // Older versions of Node erroneously returned signed integers for\n    // uid + gid.\n    return function (target, options, cb) {\n      if (typeof options === 'function') {\n        cb = options\n        options = null\n      }\n      function callback (er, stats) {\n        if (stats) {\n          if (stats.uid < 0) stats.uid += 0x100000000\n          if (stats.gid < 0) stats.gid += 0x100000000\n        }\n        if (cb) cb.apply(this, arguments)\n      }\n      return options ? orig.call(fs, target, options, callback)\n        : orig.call(fs, target, callback)\n    }\n  }\n\n  function statFixSync (orig) {\n    if (!orig) return orig\n    // Older versions of Node erroneously returned signed integers for\n    // uid + gid.\n    return function (target, options) {\n      var stats = options ? orig.call(fs, target, options)\n        : orig.call(fs, target)\n      if (stats) {\n        if (stats.uid < 0) stats.uid += 0x100000000\n        if (stats.gid < 0) stats.gid += 0x100000000\n      }\n      return stats;\n    }\n  }\n\n  // ENOSYS means that the fs doesn't support the op. Just ignore\n  // that, because it doesn't matter.\n  //\n  // if there's no getuid, or if getuid() is something other\n  // than 0, and the error is EINVAL or EPERM, then just ignore\n  // it.\n  //\n  // This specific case is a silent failure in cp, install, tar,\n  // and most other unix tools that manage permissions.\n  //\n  // When running as root, or if other types of errors are\n  // encountered, then it's strict.\n  function chownErOk (er) {\n    if (!er)\n      return true\n\n    if (er.code === \"ENOSYS\")\n      return true\n\n    var nonroot = !process.getuid || process.getuid() !== 0\n    if (nonroot) {\n      if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n        return true\n    }\n\n    return false\n  }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n  return {\n    ReadStream: ReadStream,\n    WriteStream: WriteStream\n  }\n\n  function ReadStream (path, options) {\n    if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n    Stream.call(this);\n\n    var self = this;\n\n    this.path = path;\n    this.fd = null;\n    this.readable = true;\n    this.paused = false;\n\n    this.flags = 'r';\n    this.mode = 438; /*=0666*/\n    this.bufferSize = 64 * 1024;\n\n    options = options || {};\n\n    // Mixin options into this\n    var keys = Object.keys(options);\n    for (var index = 0, length = keys.length; index < length; index++) {\n      var key = keys[index];\n      this[key] = options[key];\n    }\n\n    if (this.encoding) this.setEncoding(this.encoding);\n\n    if (this.start !== undefined) {\n      if ('number' !== typeof this.start) {\n        throw TypeError('start must be a Number');\n      }\n      if (this.end === undefined) {\n        this.end = Infinity;\n      } else if ('number' !== typeof this.end) {\n        throw TypeError('end must be a Number');\n      }\n\n      if (this.start > this.end) {\n        throw new Error('start must be <= end');\n      }\n\n      this.pos = this.start;\n    }\n\n    if (this.fd !== null) {\n      process.nextTick(function() {\n        self._read();\n      });\n      return;\n    }\n\n    fs.open(this.path, this.flags, this.mode, function (err, fd) {\n      if (err) {\n        self.emit('error', err);\n        self.readable = false;\n        return;\n      }\n\n      self.fd = fd;\n      self.emit('open', fd);\n      self._read();\n    })\n  }\n\n  function WriteStream (path, options) {\n    if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n    Stream.call(this);\n\n    this.path = path;\n    this.fd = null;\n    this.writable = true;\n\n    this.flags = 'w';\n    this.encoding = 'binary';\n    this.mode = 438; /*=0666*/\n    this.bytesWritten = 0;\n\n    options = options || {};\n\n    // Mixin options into this\n    var keys = Object.keys(options);\n    for (var index = 0, length = keys.length; index < length; index++) {\n      var key = keys[index];\n      this[key] = options[key];\n    }\n\n    if (this.start !== undefined) {\n      if ('number' !== typeof this.start) {\n        throw TypeError('start must be a Number');\n      }\n      if (this.start < 0) {\n        throw new Error('start must be >= zero');\n      }\n\n      this.pos = this.start;\n    }\n\n    this.busy = false;\n    this._queue = [];\n\n    if (this.fd === null) {\n      this._open = fs.open;\n      this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n      this.flush();\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n  return obj.__proto__\n}\n\nfunction clone (obj) {\n  if (obj === null || typeof obj !== 'object')\n    return obj\n\n  if (obj instanceof Object)\n    var copy = { __proto__: getPrototypeOf(obj) }\n  else\n    var copy = Object.create(null)\n\n  Object.getOwnPropertyNames(obj).forEach(function (key) {\n    Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n  })\n\n  return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n  gracefulQueue = Symbol.for('graceful-fs.queue')\n  // This is used in testing by future versions\n  previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n  gracefulQueue = '___graceful-fs.queue'\n  previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n  Object.defineProperty(context, gracefulQueue, {\n    get: function() {\n      return queue\n    }\n  })\n}\n\nvar debug = noop\nif (util.debuglog)\n  debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n  debug = function() {\n    var m = util.format.apply(util, arguments)\n    m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n    console.error(m)\n  }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n  // This queue can be shared by multiple loaded instances\n  var queue = global[gracefulQueue] || []\n  publishQueue(fs, queue)\n\n  // Patch fs.close/closeSync to shared queue version, because we need\n  // to retry() whenever a close happens *anywhere* in the program.\n  // This is essential when multiple graceful-fs instances are\n  // in play at the same time.\n  fs.close = (function (fs$close) {\n    function close (fd, cb) {\n      return fs$close.call(fs, fd, function (err) {\n        // This function uses the graceful-fs shared queue\n        if (!err) {\n          resetQueue()\n        }\n\n        if (typeof cb === 'function')\n          cb.apply(this, arguments)\n      })\n    }\n\n    Object.defineProperty(close, previousSymbol, {\n      value: fs$close\n    })\n    return close\n  })(fs.close)\n\n  fs.closeSync = (function (fs$closeSync) {\n    function closeSync (fd) {\n      // This function uses the graceful-fs shared queue\n      fs$closeSync.apply(fs, arguments)\n      resetQueue()\n    }\n\n    Object.defineProperty(closeSync, previousSymbol, {\n      value: fs$closeSync\n    })\n    return closeSync\n  })(fs.closeSync)\n\n  if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n    process.on('exit', function() {\n      debug(fs[gracefulQueue])\n      require('assert').equal(fs[gracefulQueue].length, 0)\n    })\n  }\n}\n\nif (!global[gracefulQueue]) {\n  publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n    module.exports = patch(fs)\n    fs.__patched = true;\n}\n\nfunction patch (fs) {\n  // Everything that references the open() function needs to be in here\n  polyfills(fs)\n  fs.gracefulify = patch\n\n  fs.createReadStream = createReadStream\n  fs.createWriteStream = createWriteStream\n  var fs$readFile = fs.readFile\n  fs.readFile = readFile\n  function readFile (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$readFile(path, options, cb)\n\n    function go$readFile (path, options, cb, startTime) {\n      return fs$readFile(path, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$writeFile = fs.writeFile\n  fs.writeFile = writeFile\n  function writeFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$writeFile(path, data, options, cb)\n\n    function go$writeFile (path, data, options, cb, startTime) {\n      return fs$writeFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$appendFile = fs.appendFile\n  if (fs$appendFile)\n    fs.appendFile = appendFile\n  function appendFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$appendFile(path, data, options, cb)\n\n    function go$appendFile (path, data, options, cb, startTime) {\n      return fs$appendFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$copyFile = fs.copyFile\n  if (fs$copyFile)\n    fs.copyFile = copyFile\n  function copyFile (src, dest, flags, cb) {\n    if (typeof flags === 'function') {\n      cb = flags\n      flags = 0\n    }\n    return go$copyFile(src, dest, flags, cb)\n\n    function go$copyFile (src, dest, flags, cb, startTime) {\n      return fs$copyFile(src, dest, flags, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$readdir = fs.readdir\n  fs.readdir = readdir\n  var noReaddirOptionVersions = /^v[0-5]\\./\n  function readdir (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    var go$readdir = noReaddirOptionVersions.test(process.version)\n      ? function go$readdir (path, options, cb, startTime) {\n        return fs$readdir(path, fs$readdirCallback(\n          path, options, cb, startTime\n        ))\n      }\n      : function go$readdir (path, options, cb, startTime) {\n        return fs$readdir(path, options, fs$readdirCallback(\n          path, options, cb, startTime\n        ))\n      }\n\n    return go$readdir(path, options, cb)\n\n    function fs$readdirCallback (path, options, cb, startTime) {\n      return function (err, files) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([\n            go$readdir,\n            [path, options, cb],\n            err,\n            startTime || Date.now(),\n            Date.now()\n          ])\n        else {\n          if (files && files.sort)\n            files.sort()\n\n          if (typeof cb === 'function')\n            cb.call(this, err, files)\n        }\n      }\n    }\n  }\n\n  if (process.version.substr(0, 4) === 'v0.8') {\n    var legStreams = legacy(fs)\n    ReadStream = legStreams.ReadStream\n    WriteStream = legStreams.WriteStream\n  }\n\n  var fs$ReadStream = fs.ReadStream\n  if (fs$ReadStream) {\n    ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n    ReadStream.prototype.open = ReadStream$open\n  }\n\n  var fs$WriteStream = fs.WriteStream\n  if (fs$WriteStream) {\n    WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n    WriteStream.prototype.open = WriteStream$open\n  }\n\n  Object.defineProperty(fs, 'ReadStream', {\n    get: function () {\n      return ReadStream\n    },\n    set: function (val) {\n      ReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  Object.defineProperty(fs, 'WriteStream', {\n    get: function () {\n      return WriteStream\n    },\n    set: function (val) {\n      WriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  // legacy names\n  var FileReadStream = ReadStream\n  Object.defineProperty(fs, 'FileReadStream', {\n    get: function () {\n      return FileReadStream\n    },\n    set: function (val) {\n      FileReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  var FileWriteStream = WriteStream\n  Object.defineProperty(fs, 'FileWriteStream', {\n    get: function () {\n      return FileWriteStream\n    },\n    set: function (val) {\n      FileWriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  function ReadStream (path, options) {\n    if (this instanceof ReadStream)\n      return fs$ReadStream.apply(this, arguments), this\n    else\n      return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n  }\n\n  function ReadStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        if (that.autoClose)\n          that.destroy()\n\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n        that.read()\n      }\n    })\n  }\n\n  function WriteStream (path, options) {\n    if (this instanceof WriteStream)\n      return fs$WriteStream.apply(this, arguments), this\n    else\n      return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n  }\n\n  function WriteStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        that.destroy()\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n      }\n    })\n  }\n\n  function createReadStream (path, options) {\n    return new fs.ReadStream(path, options)\n  }\n\n  function createWriteStream (path, options) {\n    return new fs.WriteStream(path, options)\n  }\n\n  var fs$open = fs.open\n  fs.open = open\n  function open (path, flags, mode, cb) {\n    if (typeof mode === 'function')\n      cb = mode, mode = null\n\n    return go$open(path, flags, mode, cb)\n\n    function go$open (path, flags, mode, cb, startTime) {\n      return fs$open(path, flags, mode, function (err, fd) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  return fs\n}\n\nfunction enqueue (elem) {\n  debug('ENQUEUE', elem[0].name, elem[1])\n  fs[gracefulQueue].push(elem)\n  retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n  var now = Date.now()\n  for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n    // entries that are only a length of 2 are from an older version, don't\n    // bother modifying those since they'll be retried anyway.\n    if (fs[gracefulQueue][i].length > 2) {\n      fs[gracefulQueue][i][3] = now // startTime\n      fs[gracefulQueue][i][4] = now // lastTime\n    }\n  }\n  // call retry to make sure we're actively processing the queue\n  retry()\n}\n\nfunction retry () {\n  // clear the timer and remove it to help prevent unintended concurrency\n  clearTimeout(retryTimer)\n  retryTimer = undefined\n\n  if (fs[gracefulQueue].length === 0)\n    return\n\n  var elem = fs[gracefulQueue].shift()\n  var fn = elem[0]\n  var args = elem[1]\n  // these items may be unset if they were added by an older graceful-fs\n  var err = elem[2]\n  var startTime = elem[3]\n  var lastTime = elem[4]\n\n  // if we don't have a startTime we have no way of knowing if we've waited\n  // long enough, so go ahead and retry this item now\n  if (startTime === undefined) {\n    debug('RETRY', fn.name, args)\n    fn.apply(null, args)\n  } else if (Date.now() - startTime >= 60000) {\n    // it's been more than 60 seconds total, bail now\n    debug('TIMEOUT', fn.name, args)\n    var cb = args.pop()\n    if (typeof cb === 'function')\n      cb.call(null, err)\n  } else {\n    // the amount of time between the last attempt and right now\n    var sinceAttempt = Date.now() - lastTime\n    // the amount of time between when we first tried, and when we last tried\n    // rounded up to at least 1\n    var sinceStart = Math.max(lastTime - startTime, 1)\n    // backoff. wait longer than the total time we've been retrying, but only\n    // up to a maximum of 100ms\n    var desiredDelay = Math.min(sinceStart * 1.2, 100)\n    // it's been long enough since the last retry, do it again\n    if (sinceAttempt >= desiredDelay) {\n      debug('RETRY', fn.name, args)\n      fn.apply(null, args.concat([startTime]))\n    } else {\n      // if we can't do this job yet, push it to the end of the queue\n      // and let the next iteration check again\n      fs[gracefulQueue].push(elem)\n    }\n  }\n\n  // schedule our next run if one isn't already scheduled\n  if (retryTimer === undefined) {\n    retryTimer = setTimeout(retry, 0)\n  }\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readCAFileSync = void 0;\nconst graceful_fs_1 = __importDefault(require(\"graceful-fs\"));\nfunction readCAFileSync(filePath) {\n    try {\n        const contents = graceful_fs_1.default.readFileSync(filePath, 'utf8');\n        const delim = '-----END CERTIFICATE-----';\n        const output = contents\n            .split(delim)\n            .filter((ca) => Boolean(ca.trim()))\n            .map((ca) => `${ca.trimLeft()}${delim}`);\n        return output;\n    }\n    catch (err) {\n        if (err.code === 'ENOENT')\n            return undefined;\n        throw err;\n    }\n}\nexports.readCAFileSync = readCAFileSync;\n//# sourceMappingURL=ca-file.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ca-file\"), exports);\n//# sourceMappingURL=index.js.map","\nmodule.exports = ProtoList\n\nfunction setProto(obj, proto) {\n  if (typeof Object.setPrototypeOf === \"function\")\n    return Object.setPrototypeOf(obj, proto)\n  else\n    obj.__proto__ = proto\n}\n\nfunction ProtoList () {\n  this.list = []\n  var root = null\n  Object.defineProperty(this, 'root', {\n    get: function () { return root },\n    set: function (r) {\n      root = r\n      if (this.list.length) {\n        setProto(this.list[this.list.length - 1], r)\n      }\n    },\n    enumerable: true,\n    configurable: true\n  })\n}\n\nProtoList.prototype =\n  { get length () { return this.list.length }\n  , get keys () {\n      var k = []\n      for (var i in this.list[0]) k.push(i)\n      return k\n    }\n  , get snapshot () {\n      var o = {}\n      this.keys.forEach(function (k) { o[k] = this.get(k) }, this)\n      return o\n    }\n  , get store () {\n      return this.list[0]\n    }\n  , push : function (obj) {\n      if (typeof obj !== \"object\") obj = {valueOf:obj}\n      if (this.list.length >= 1) {\n        setProto(this.list[this.list.length - 1], obj)\n      }\n      setProto(obj, this.root)\n      return this.list.push(obj)\n    }\n  , pop : function () {\n      if (this.list.length >= 2) {\n        setProto(this.list[this.list.length - 2], this.root)\n      }\n      return this.list.pop()\n    }\n  , unshift : function (obj) {\n      setProto(obj, this.list[0] || this.root)\n      return this.list.unshift(obj)\n    }\n  , shift : function () {\n      if (this.list.length === 1) {\n        setProto(this.list[0], this.root)\n      }\n      return this.list.shift()\n    }\n  , get : function (key) {\n      return this.list[0][key]\n    }\n  , set : function (key, val, save) {\n      if (!this.length) this.push({})\n      if (save && this.list[0].hasOwnProperty(key)) this.push({})\n      return this.list[0][key] = val\n    }\n  , forEach : function (fn, thisp) {\n      for (var key in this.list[0]) fn.call(thisp, key, this.list[0][key])\n    }\n  , slice : function () {\n      return this.list.slice.apply(this.list, arguments)\n    }\n  , splice : function () {\n      // handle injections\n      var ret = this.list.splice.apply(this.list, arguments)\n      for (var i = 0, l = this.list.length; i < l; i++) {\n        setProto(this.list[i], this.list[i + 1] || this.root)\n      }\n      return ret\n    }\n  }\n","exports.parse = exports.decode = decode\n\nexports.stringify = exports.encode = encode\n\nexports.safe = safe\nexports.unsafe = unsafe\n\nvar eol = typeof process !== 'undefined' &&\n  process.platform === 'win32' ? '\\r\\n' : '\\n'\n\nfunction encode (obj, opt) {\n  var children = []\n  var out = ''\n\n  if (typeof opt === 'string') {\n    opt = {\n      section: opt,\n      whitespace: false,\n    }\n  } else {\n    opt = opt || {}\n    opt.whitespace = opt.whitespace === true\n  }\n\n  var separator = opt.whitespace ? ' = ' : '='\n\n  Object.keys(obj).forEach(function (k, _, __) {\n    var val = obj[k]\n    if (val && Array.isArray(val)) {\n      val.forEach(function (item) {\n        out += safe(k + '[]') + separator + safe(item) + '\\n'\n      })\n    } else if (val && typeof val === 'object')\n      children.push(k)\n    else\n      out += safe(k) + separator + safe(val) + eol\n  })\n\n  if (opt.section && out.length)\n    out = '[' + safe(opt.section) + ']' + eol + out\n\n  children.forEach(function (k, _, __) {\n    var nk = dotSplit(k).join('\\\\.')\n    var section = (opt.section ? opt.section + '.' : '') + nk\n    var child = encode(obj[k], {\n      section: section,\n      whitespace: opt.whitespace,\n    })\n    if (out.length && child.length)\n      out += eol\n\n    out += child\n  })\n\n  return out\n}\n\nfunction dotSplit (str) {\n  return str.replace(/\\1/g, '\\u0002LITERAL\\\\1LITERAL\\u0002')\n    .replace(/\\\\\\./g, '\\u0001')\n    .split(/\\./).map(function (part) {\n      return part.replace(/\\1/g, '\\\\.')\n        .replace(/\\2LITERAL\\\\1LITERAL\\2/g, '\\u0001')\n    })\n}\n\nfunction decode (str) {\n  var out = {}\n  var p = out\n  var section = null\n  //          section     |key      = value\n  var re = /^\\[([^\\]]*)\\]$|^([^=]+)(=(.*))?$/i\n  var lines = str.split(/[\\r\\n]+/g)\n\n  lines.forEach(function (line, _, __) {\n    if (!line || line.match(/^\\s*[;#]/))\n      return\n    var match = line.match(re)\n    if (!match)\n      return\n    if (match[1] !== undefined) {\n      section = unsafe(match[1])\n      if (section === '__proto__') {\n        // not allowed\n        // keep parsing the section, but don't attach it.\n        p = {}\n        return\n      }\n      p = out[section] = out[section] || {}\n      return\n    }\n    var key = unsafe(match[2])\n    if (key === '__proto__')\n      return\n    var value = match[3] ? unsafe(match[4]) : true\n    switch (value) {\n      case 'true':\n      case 'false':\n      case 'null': value = JSON.parse(value)\n    }\n\n    // Convert keys with '[]' suffix to an array\n    if (key.length > 2 && key.slice(-2) === '[]') {\n      key = key.substring(0, key.length - 2)\n      if (key === '__proto__')\n        return\n      if (!p[key])\n        p[key] = []\n      else if (!Array.isArray(p[key]))\n        p[key] = [p[key]]\n    }\n\n    // safeguard against resetting a previously defined\n    // array by accidentally forgetting the brackets\n    if (Array.isArray(p[key]))\n      p[key].push(value)\n    else\n      p[key] = value\n  })\n\n  // {a:{y:1},\"a.b\":{x:2}} --> {a:{y:1,b:{x:2}}}\n  // use a filter to return the keys that have to be deleted.\n  Object.keys(out).filter(function (k, _, __) {\n    if (!out[k] ||\n      typeof out[k] !== 'object' ||\n      Array.isArray(out[k]))\n      return false\n\n    // see if the parent section is also an object.\n    // if so, add it to that, and mark this one for deletion\n    var parts = dotSplit(k)\n    var p = out\n    var l = parts.pop()\n    var nl = l.replace(/\\\\\\./g, '.')\n    parts.forEach(function (part, _, __) {\n      if (part === '__proto__')\n        return\n      if (!p[part] || typeof p[part] !== 'object')\n        p[part] = {}\n      p = p[part]\n    })\n    if (p === out && nl === l)\n      return false\n\n    p[nl] = out[k]\n    return true\n  }).forEach(function (del, _, __) {\n    delete out[del]\n  })\n\n  return out\n}\n\nfunction isQuoted (val) {\n  return (val.charAt(0) === '\"' && val.slice(-1) === '\"') ||\n    (val.charAt(0) === \"'\" && val.slice(-1) === \"'\")\n}\n\nfunction safe (val) {\n  return (typeof val !== 'string' ||\n    val.match(/[=\\r\\n]/) ||\n    val.match(/^\\[/) ||\n    (val.length > 1 &&\n     isQuoted(val)) ||\n    val !== val.trim())\n    ? JSON.stringify(val)\n    : val.replace(/;/g, '\\\\;').replace(/#/g, '\\\\#')\n}\n\nfunction unsafe (val, doUnesc) {\n  val = (val || '').trim()\n  if (isQuoted(val)) {\n    // remove the single quotes before calling JSON.parse\n    if (val.charAt(0) === \"'\")\n      val = val.substr(1, val.length - 2)\n\n    try {\n      val = JSON.parse(val)\n    } catch (_) {}\n  } else {\n    // walk the val to find the first not-escaped ; character\n    var esc = false\n    var unesc = ''\n    for (var i = 0, l = val.length; i < l; i++) {\n      var c = val.charAt(i)\n      if (esc) {\n        if ('\\\\;#'.indexOf(c) !== -1)\n          unesc += c\n        else\n          unesc += '\\\\' + c\n\n        esc = false\n      } else if (';#'.indexOf(c) !== -1)\n        break\n      else if (c === '\\\\')\n        esc = true\n      else\n        unesc += c\n    }\n    if (esc)\n      unesc += '\\\\'\n\n    return unesc.trim()\n  }\n  return val\n}\n","var ProtoList = require('proto-list')\n  , path = require('path')\n  , fs = require('fs')\n  , ini = require('ini')\n  , EE = require('events').EventEmitter\n  , url = require('url')\n  , http = require('http')\n\nvar exports = module.exports = function () {\n  var args = [].slice.call(arguments)\n    , conf = new ConfigChain()\n\n  while(args.length) {\n    var a = args.shift()\n    if(a) conf.push\n          ( 'string' === typeof a\n            ? json(a)\n            : a )\n  }\n\n  return conf\n}\n\n//recursively find a file...\n\nvar find = exports.find = function () {\n  var rel = path.join.apply(null, [].slice.call(arguments))\n\n  function find(start, rel) {\n    var file = path.join(start, rel)\n    try {\n      fs.statSync(file)\n      return file\n    } catch (err) {\n      if(path.dirname(start) !== start) // root\n        return find(path.dirname(start), rel)\n    }\n  }\n  return find(__dirname, rel)\n}\n\nvar parse = exports.parse = function (content, file, type) {\n  content = '' + content\n  // if we don't know what it is, try json and fall back to ini\n  // if we know what it is, then it must be that.\n  if (!type) {\n    try { return JSON.parse(content) }\n    catch (er) { return ini.parse(content) }\n  } else if (type === 'json') {\n    if (this.emit) {\n      try { return JSON.parse(content) }\n      catch (er) { this.emit('error', er) }\n    } else {\n      return JSON.parse(content)\n    }\n  } else {\n    return ini.parse(content)\n  }\n}\n\nvar json = exports.json = function () {\n  var args = [].slice.call(arguments).filter(function (arg) { return arg != null })\n  var file = path.join.apply(null, args)\n  var content\n  try {\n    content = fs.readFileSync(file,'utf-8')\n  } catch (err) {\n    return\n  }\n  return parse(content, file, 'json')\n}\n\nvar env = exports.env = function (prefix, env) {\n  env = env || process.env\n  var obj = {}\n  var l = prefix.length\n  for(var k in env) {\n    if(k.indexOf(prefix) === 0)\n      obj[k.substring(l)] = env[k]\n  }\n\n  return obj\n}\n\nexports.ConfigChain = ConfigChain\nfunction ConfigChain () {\n  EE.apply(this)\n  ProtoList.apply(this, arguments)\n  this._awaiting = 0\n  this._saving = 0\n  this.sources = {}\n}\n\n// multi-inheritance-ish\nvar extras = {\n  constructor: { value: ConfigChain }\n}\nObject.keys(EE.prototype).forEach(function (k) {\n  extras[k] = Object.getOwnPropertyDescriptor(EE.prototype, k)\n})\nConfigChain.prototype = Object.create(ProtoList.prototype, extras)\n\nConfigChain.prototype.del = function (key, where) {\n  // if not specified where, then delete from the whole chain, scorched\n  // earth style\n  if (where) {\n    var target = this.sources[where]\n    target = target && target.data\n    if (!target) {\n      return this.emit('error', new Error('not found '+where))\n    }\n    delete target[key]\n  } else {\n    for (var i = 0, l = this.list.length; i < l; i ++) {\n      delete this.list[i][key]\n    }\n  }\n  return this\n}\n\nConfigChain.prototype.set = function (key, value, where) {\n  var target\n\n  if (where) {\n    target = this.sources[where]\n    target = target && target.data\n    if (!target) {\n      return this.emit('error', new Error('not found '+where))\n    }\n  } else {\n    target = this.list[0]\n    if (!target) {\n      return this.emit('error', new Error('cannot set, no confs!'))\n    }\n  }\n  target[key] = value\n  return this\n}\n\nConfigChain.prototype.get = function (key, where) {\n  if (where) {\n    where = this.sources[where]\n    if (where) where = where.data\n    if (where && Object.hasOwnProperty.call(where, key)) return where[key]\n    return undefined\n  }\n  return this.list[0][key]\n}\n\nConfigChain.prototype.save = function (where, type, cb) {\n  if (typeof type === 'function') cb = type, type = null\n  var target = this.sources[where]\n  if (!target || !(target.path || target.source) || !target.data) {\n    // TODO: maybe save() to a url target could be a PUT or something?\n    // would be easy to swap out with a reddis type thing, too\n    return this.emit('error', new Error('bad save target: '+where))\n  }\n\n  if (target.source) {\n    var pref = target.prefix || ''\n    Object.keys(target.data).forEach(function (k) {\n      target.source[pref + k] = target.data[k]\n    })\n    return this\n  }\n\n  var type = type || target.type\n  var data = target.data\n  if (target.type === 'json') {\n    data = JSON.stringify(data)\n  } else {\n    data = ini.stringify(data)\n  }\n\n  this._saving ++\n  fs.writeFile(target.path, data, 'utf8', function (er) {\n    this._saving --\n    if (er) {\n      if (cb) return cb(er)\n      else return this.emit('error', er)\n    }\n    if (this._saving === 0) {\n      if (cb) cb()\n      this.emit('save')\n    }\n  }.bind(this))\n  return this\n}\n\nConfigChain.prototype.addFile = function (file, type, name) {\n  name = name || file\n  var marker = {__source__:name}\n  this.sources[name] = { path: file, type: type }\n  this.push(marker)\n  this._await()\n  fs.readFile(file, 'utf8', function (er, data) {\n    if (er) this.emit('error', er)\n    this.addString(data, file, type, marker)\n  }.bind(this))\n  return this\n}\n\nConfigChain.prototype.addEnv = function (prefix, env, name) {\n  name = name || 'env'\n  var data = exports.env(prefix, env)\n  this.sources[name] = { data: data, source: env, prefix: prefix }\n  return this.add(data, name)\n}\n\nConfigChain.prototype.addUrl = function (req, type, name) {\n  this._await()\n  var href = url.format(req)\n  name = name || href\n  var marker = {__source__:name}\n  this.sources[name] = { href: href, type: type }\n  this.push(marker)\n  http.request(req, function (res) {\n    var c = []\n    var ct = res.headers['content-type']\n    if (!type) {\n      type = ct.indexOf('json') !== -1 ? 'json'\n           : ct.indexOf('ini') !== -1 ? 'ini'\n           : href.match(/\\.json$/) ? 'json'\n           : href.match(/\\.ini$/) ? 'ini'\n           : null\n      marker.type = type\n    }\n\n    res.on('data', c.push.bind(c))\n    .on('end', function () {\n      this.addString(Buffer.concat(c), href, type, marker)\n    }.bind(this))\n    .on('error', this.emit.bind(this, 'error'))\n\n  }.bind(this))\n  .on('error', this.emit.bind(this, 'error'))\n  .end()\n\n  return this\n}\n\nConfigChain.prototype.addString = function (data, file, type, marker) {\n  data = this.parse(data, file, type)\n  this.add(data, marker)\n  return this\n}\n\nConfigChain.prototype.add = function (data, marker) {\n  if (marker && typeof marker === 'object') {\n    var i = this.list.indexOf(marker)\n    if (i === -1) {\n      return this.emit('error', new Error('bad marker'))\n    }\n    this.splice(i, 1, data)\n    marker = marker.__source__\n    this.sources[marker] = this.sources[marker] || {}\n    this.sources[marker].data = data\n    // we were waiting for this.  maybe emit 'load'\n    this._resolve()\n  } else {\n    if (typeof marker === 'string') {\n      this.sources[marker] = this.sources[marker] || {}\n      this.sources[marker].data = data\n    }\n    // trigger the load event if nothing was already going to do so.\n    this._await()\n    this.push(data)\n    process.nextTick(this._resolve.bind(this))\n  }\n  return this\n}\n\nConfigChain.prototype.parse = exports.parse\n\nConfigChain.prototype._await = function () {\n  this._awaiting++\n}\n\nConfigChain.prototype._resolve = function () {\n  this._awaiting--\n  if (this._awaiting === 0) this.emit('load', this)\n}\n","module.exports = function (x) {\n\tconst colonIndex = x.indexOf(':');\n\tif (colonIndex === -1) {\n\t\treturn normalize(x);\n\t}\n\tconst firstPart = x.substr(0, colonIndex);\n\tconst secondPart = x.substr(colonIndex + 1);\n\treturn `${firstPart}:${normalize(secondPart)}`;\n}\n\nfunction normalize (s) {\n\ts = s.toLowerCase();\n\tif (s === '_authtoken') return '_authToken';\n\tlet r = s[0];\n\tfor (let i = 1; i < s.length; i++) {\n\t\tr += s[i] === '_' ? '-' : s[i];\n\t}\n\treturn r;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envReplace = void 0;\nconst ENV_EXPR = /(?<!\\\\)(\\\\*)\\$\\{([^${}]+)\\}/g;\nfunction envReplace(settingValue, env) {\n    return settingValue.replace(ENV_EXPR, replaceEnvMatch.bind(null, env));\n}\nexports.envReplace = envReplace;\nfunction replaceEnvMatch(env, orig, escape, name) {\n    if (escape.length % 2) {\n        return orig.slice((escape.length + 1) / 2);\n    }\n    const envValue = getEnvValue(env, name);\n    if (envValue === undefined) {\n        throw new Error(`Failed to replace env in config: ${orig}`);\n    }\n    return `${(escape.slice(escape.length / 2))}${envValue}`;\n}\nconst ENV_VALUE = /([^:-]+)(:?)-(.+)/;\nfunction getEnvValue(env, name) {\n    const matched = name.match(ENV_VALUE);\n    if (!matched)\n        return env[name];\n    const [, variableName, colon, fallback] = matched;\n    if (Object.prototype.hasOwnProperty.call(env, variableName)) {\n        return !env[variableName] && colon ? fallback : env[variableName];\n    }\n    return fallback;\n}\n//# sourceMappingURL=env-replace.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envReplace = void 0;\nvar env_replace_1 = require(\"./env-replace\");\nObject.defineProperty(exports, \"envReplace\", { enumerable: true, get: function () { return env_replace_1.envReplace; } });\n//# sourceMappingURL=index.js.map","'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst { envReplace } = require('@pnpm/config.env-replace');\n\nconst parseKey = (key) => {\n\tif (typeof key !== 'string') {\n\t\treturn key;\n\t}\n\n\treturn envReplace(key, process.env);\n}\n\n// https://github.com/npm/cli/blob/latest/lib/config/core.js#L359-L404\nconst parseField = (types, field, key) => {\n\tif (typeof field !== 'string') {\n\t\treturn field;\n\t}\n\n\tconst typeList = [].concat(types[key]);\n\tconst isPath = typeList.indexOf(path) !== -1;\n\tconst isBool = typeList.indexOf(Boolean) !== -1;\n\tconst isString = typeList.indexOf(String) !== -1;\n\tconst isNumber = typeList.indexOf(Number) !== -1;\n\n\tfield = `${field}`.trim();\n\n\tif (/^\".*\"$/.test(field)) {\n\t\ttry {\n\t\t\tfield = JSON.parse(field);\n\t\t} catch (error) {\n\t\t\tthrow new Error(`Failed parsing JSON config key ${key}: ${field}`);\n\t\t}\n\t}\n\n\tif (isBool && !isString && field === '') {\n\t\treturn true;\n\t}\n\n\tswitch (field) { // eslint-disable-line default-case\n\t\tcase 'true': {\n\t\t\treturn true;\n\t\t}\n\n\t\tcase 'false': {\n\t\t\treturn false;\n\t\t}\n\n\t\tcase 'null': {\n\t\t\treturn null;\n\t\t}\n\n\t\tcase 'undefined': {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\tconst processedField = envReplace(field, process.env);\n\t// Skip environment variable substitution for tokenHelper to prevent command injection\n\t// via attacker-controlled environment variables\n\tif ((key.endsWith(':tokenHelper') || key === 'tokenHelper') && processedField !== field) {\n\t\tthrow new Error(`It is not allowed to use environment variables in the value of the ${key} setting.`);\n\t} else {\n\t\tfield = processedField;\n\t}\n\n\tif (isPath) {\n\t\tconst regex = process.platform === 'win32' ? /^~(\\/|\\\\)/ : /^~\\//;\n\n\t\tif (regex.test(field) && process.env.HOME) {\n\t\t\tfield = path.resolve(process.env.HOME, field.substr(2));\n\t\t}\n\n\t\tfield = path.resolve(field);\n\t}\n\n\tif (isNumber && !isNaN(field)) {\n\t\tfield = Number(field);\n\t}\n\n\treturn field;\n};\n\n// https://github.com/npm/cli/blob/latest/lib/config/find-prefix.js\nconst findPrefix = name => {\n\tname = path.resolve(name);\n\n\tlet walkedUp = false;\n\n\twhile (path.basename(name) === 'node_modules') {\n\t\tname = path.dirname(name);\n\t\twalkedUp = true;\n\t}\n\n\tif (walkedUp) {\n\t\treturn name;\n\t}\n\n\tconst find = (name, original) => {\n\t\tconst regex = /^[a-zA-Z]:(\\\\|\\/)?$/;\n\n\t\tif (name === '/' || (process.platform === 'win32' && regex.test(name))) {\n\t\t\treturn original;\n\t\t}\n\n\t\ttry {\n\t\t\tconst files = fs.readdirSync(name);\n\n\t\t\tif (\n\t\t\t\tfiles.includes('node_modules') ||\n\t\t\t\tfiles.includes('package.json') ||\n\t\t\t\tfiles.includes('package.json5') ||\n\t\t\t\tfiles.includes('package.yaml') ||\n\t\t\t\tfiles.includes('pnpm-workspace.yaml')\n\t\t\t) {\n\t\t\t\treturn name;\n\t\t\t}\n\n\t\t\tconst dirname = path.dirname(name);\n\n\t\t\tif (dirname === name) {\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\treturn find(dirname, original);\n\t\t} catch (error) {\n\t\t\tif (name === original) {\n\t\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\t\treturn original;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn original;\n\t\t}\n\t};\n\n\treturn find(name, name);\n};\n\nexports.envReplace = envReplace;\nexports.findPrefix = findPrefix;\nexports.parseField = parseField;\nexports.parseKey = parseKey;\n","// Generated with `lib/make.js`\n'use strict';\nconst path = require('path');\nconst Stream = require('stream').Stream;\nconst url = require('url');\n\nconst Umask = () => {};\nconst getLocalAddresses = () => [];\nconst semver = () => {};\n\nexports.types = {\n\taccess: [null, 'restricted', 'public'],\n\t'allow-same-version': Boolean,\n\t'always-auth': Boolean,\n\talso: [null, 'dev', 'development'],\n\taudit: Boolean,\n\t'auth-type': ['legacy', 'sso', 'saml', 'oauth'],\n\t'bin-links': Boolean,\n\tbrowser: [null, String],\n\tca: [null, String, Array],\n\tcafile: path,\n\tcache: path,\n\t'cache-lock-stale': Number,\n\t'cache-lock-retries': Number,\n\t'cache-lock-wait': Number,\n\t'cache-max': Number,\n\t'cache-min': Number,\n\tcert: [null, String],\n\tcidr: [null, String, Array],\n\tcolor: ['always', Boolean],\n\tdepth: Number,\n\tdescription: Boolean,\n\tdev: Boolean,\n\t'dry-run': Boolean,\n\teditor: String,\n\t'engine-strict': Boolean,\n\tforce: Boolean,\n\t'fetch-retries': Number,\n\t'fetch-retry-factor': Number,\n\t'fetch-retry-mintimeout': Number,\n\t'fetch-retry-maxtimeout': Number,\n\tgit: String,\n\t'git-tag-version': Boolean,\n\t'commit-hooks': Boolean,\n\tglobal: Boolean,\n\tglobalconfig: path,\n\t'global-style': Boolean,\n\tgroup: [Number, String],\n\t'https-proxy': [null, url],\n\t'user-agent': String,\n\t'ham-it-up': Boolean,\n\t'heading': String,\n\t'if-present': Boolean,\n\t'ignore-prepublish': Boolean,\n\t'ignore-scripts': Boolean,\n\t'init-module': path,\n\t'init-author-name': String,\n\t'init-author-email': String,\n\t'init-author-url': ['', url],\n\t'init-license': String,\n\t'init-version': semver,\n\tjson: Boolean,\n\tkey: [null, String],\n\t'legacy-bundling': Boolean,\n\tlink: Boolean,\n\t// local-address must be listed as an IP for a local network interface\n\t// must be IPv4 due to node bug\n\t'local-address': getLocalAddresses(),\n\tloglevel: ['silent', 'error', 'warn', 'notice', 'http', 'timing', 'info', 'verbose', 'silly'],\n\tlogstream: Stream,\n\t'logs-max': Number,\n\tlong: Boolean,\n\tmaxsockets: Number,\n\tmessage: String,\n\t'metrics-registry': [null, String],\n\t'node-options': [null, String],\n\t'node-version': [null, semver],\n\t'no-proxy': [null, String, Array],\n\toffline: Boolean,\n\t'onload-script': [null, String],\n\tonly: [null, 'dev', 'development', 'prod', 'production'],\n\toptional: Boolean,\n\t'package-lock': Boolean,\n\totp: [null, String],\n\t'package-lock-only': Boolean,\n\tparseable: Boolean,\n\t'prefer-offline': Boolean,\n\t'prefer-online': Boolean,\n\tprefix: path,\n\tproduction: Boolean,\n\tprogress: Boolean,\n\tproxy: [null, false, url],\n\tprovenance: Boolean,\n\t// allow proxy to be disabled explicitly\n\t'read-only': Boolean,\n\t'rebuild-bundle': Boolean,\n\tregistry: [null, url],\n\trollback: Boolean,\n\tsave: Boolean,\n\t'save-bundle': Boolean,\n\t'save-dev': Boolean,\n\t'save-exact': Boolean,\n\t'save-optional': Boolean,\n\t'save-prefix': String,\n\t'save-prod': Boolean,\n\tscope: String,\n\t'script-shell': [null, String],\n\t'scripts-prepend-node-path': [false, true, 'auto', 'warn-only'],\n\tsearchopts: String,\n\tsearchexclude: [null, String],\n\tsearchlimit: Number,\n\tsearchstaleness: Number,\n\t'send-metrics': Boolean,\n\tshell: String,\n\tshrinkwrap: Boolean,\n\t'sign-git-tag': Boolean,\n\t'sso-poll-frequency': Number,\n\t'sso-type': [null, 'oauth', 'saml'],\n\t'strict-ssl': Boolean,\n\ttag: String,\n\ttiming: Boolean,\n\ttmp: path,\n\tunicode: Boolean,\n\t'unsafe-perm': Boolean,\n\tusage: Boolean,\n\tuser: [Number, String],\n\tuserconfig: path,\n\tumask: Umask,\n\tversion: Boolean,\n\t'tag-version-prefix': String,\n\tversions: Boolean,\n\tviewer: String,\n\t_exit: Boolean\n};\n","'use strict';\nconst { readCAFileSync } = require('@pnpm/network.ca-file');\nconst fs = require('fs');\nconst path = require('path');\nconst {ConfigChain} = require('config-chain');\nconst envKeyToSetting = require('./envKeyToSetting');\nconst util = require('./util');\n\nclass Conf extends ConfigChain {\n\t// https://github.com/npm/cli/blob/latest/lib/config/core.js#L203-L217\n\tconstructor(base, types) {\n\t\tsuper(base);\n\t\tthis.root = base;\n\t\tthis._parseField = util.parseField.bind(null, types || require('./types'));\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/core.js#L326-L338\n\tadd(data, marker) {\n\t\ttry {\n\t\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\t\tconst substKey = util.parseKey(key);\n\t\t\t\tif (substKey !== key) {\n\t\t\t\t\tdelete data[key];\n\t\t\t\t}\n\t\t\t\tdata[substKey] = this._parseField(value, substKey);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn super.add(data, marker);\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/core.js#L306-L319\n\taddFile(file, name) {\n\t\tname = name || file;\n\n\t\tconst marker = {__source__: name};\n\n\t\tthis.sources[name] = {path: file, type: 'ini'};\n\t\tthis.push(marker);\n\t\tthis._await();\n\n\t\ttry {\n\t\t\tconst contents = fs.readFileSync(file, 'utf8');\n\t\t\tthis.addString(contents, file, 'ini', marker);\n\t\t} catch (error) {\n\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\tthis.add({}, marker);\n\t\t\t} else if (error.code !== 'EISDIR') {\n\t\t\t\treturn `Issue while reading \"${file}\". ${error.message}`\n\t\t\t}\n\t\t}\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/core.js#L341-L357\n\taddEnv(env) {\n\t\tenv = env || process.env;\n\n\t\tconst conf = {};\n\n\t\tObject.keys(env)\n\t\t\t.filter(x => /^npm_config_/i.test(x))\n\t\t\t.forEach(x => {\n\t\t\t\tif (!env[x]) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// PNPM patch.\n\t\t\t\t// BEGIN\n\t\t\t\tconst key = envKeyToSetting(x.substr(11));\n\t\t\t\tconst rawVal = env[x];\n\n\t\t\t\tconf[key] = deserializeEnvVal(key, rawVal);\n\t\t\t\t// END\n\t\t\t});\n\n\t\treturn super.addEnv('', conf, 'env');\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/load-prefix.js\n\tloadPrefix() {\n\t\tconst cli = this.list[0];\n\n\t\tObject.defineProperty(this, 'prefix', {\n\t\t\tenumerable: true,\n\t\t\tset: prefix => {\n\t\t\t\tconst g = this.get('global');\n\t\t\t\tthis[g ? 'globalPrefix' : 'localPrefix'] = prefix;\n\t\t\t},\n\t\t\tget: () => {\n\t\t\t\tconst g = this.get('global');\n\t\t\t\treturn g ? this.globalPrefix : this.localPrefix;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'globalPrefix', {\n\t\t\tenumerable: true,\n\t\t\tset: prefix => {\n\t\t\t\tthis.set('prefix', prefix);\n\t\t\t},\n\t\t\tget: () => {\n\t\t\t\treturn path.resolve(this.get('prefix'));\n\t\t\t}\n\t\t});\n\n\t\tlet p;\n\n\t\tObject.defineProperty(this, 'localPrefix', {\n\t\t\tenumerable: true,\n\t\t\tset: prefix => {\n\t\t\t\tp = prefix;\n\t\t\t},\n\t\t\tget: () => {\n\t\t\t\treturn p;\n\t\t\t}\n\t\t});\n\n\t\tif (Object.prototype.hasOwnProperty.call(cli, 'prefix')) {\n\t\t\tp = path.resolve(cli.prefix);\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst prefix = util.findPrefix(process.cwd());\n\t\t\t\tp = prefix;\n\t\t\t} catch (error) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn p;\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/load-cafile.js\n\tloadCAFile(file) {\n\t\tif (!file) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ca = readCAFileSync(file);\n\t\tif (ca) {\n\t\t\tthis.set('ca', ca);\n\t\t}\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/set-user.js\n\tloadUser() {\n\t\tconst defConf = this.root;\n\n\t\tif (this.get('global')) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (process.env.SUDO_UID) {\n\t\t\tdefConf.user = Number(process.env.SUDO_UID);\n\t\t\treturn;\n\t\t}\n\n\t\tconst prefix = path.resolve(this.get('prefix'));\n\n\t\ttry {\n\t\t\tconst stats = fs.statSync(prefix);\n\t\t\tdefConf.user = stats.uid;\n\t\t} catch (error) {\n\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n\n// PNPM patch.\n// BEGIN\nfunction deserializeEnvVal(envKey, envValue) {\n\tfunction deserializeList(envValue) {\n\t\tconst npmConfigSep = '\\n\\n';\n\t\tif (envValue.indexOf(npmConfigSep)) {\n\t\t\t// Supports NPM config serialization format. See:\n\t\t\t// https://docs.npmjs.com/cli/v10/using-npm/config#ca\n\t\t\t// https://github.com/npm/cli/blob/v10.0.0/workspaces/config/lib/set-envs.js#L15\n\t\t\treturn envValue.split(npmConfigSep);\n\t\t}\n\t\treturn envValue.split(',');\n\t}\n\n\tswitch (envKey) {\n\t\tcase 'hoist-pattern':\n\t\tcase 'public-hoist-pattern':\n\t\t\treturn deserializeList(envValue);\n\t}\n\treturn envValue;\n}\n// END\n\nmodule.exports = Conf;\n","// Generated with `lib/make.js`\n'use strict';\nconst os = require('os');\nconst path = require('path');\n\nconst temp = os.tmpdir();\nconst uidOrPid = process.getuid ? process.getuid() : process.pid;\nconst hasUnicode = () => true;\nconst isWindows = process.platform === 'win32';\n\nconst osenv = {\n\teditor: () => process.env.EDITOR || process.env.VISUAL || (isWindows ? 'notepad.exe' : 'vi'),\n\tshell: () => isWindows ? (process.env.COMSPEC || 'cmd.exe') : (process.env.SHELL || '/bin/bash')\n};\n\nconst umask = {\n\tfromString: () => process.umask()\n};\n\nlet home = os.homedir();\n\nif (home) {\n\tprocess.env.HOME = home;\n} else {\n\thome = path.resolve(temp, 'npm-' + uidOrPid);\n}\n\nconst cacheExtra = process.platform === 'win32' ? 'npm-cache' : '.npm';\nconst cacheRoot = process.platform === 'win32' && process.env.APPDATA || home;\nconst cache = path.resolve(cacheRoot, cacheExtra);\n\nlet defaults;\nlet globalPrefix;\n\nObject.defineProperty(exports, 'defaults', {\n\tget: function () {\n\t\tif (defaults) return defaults;\n\n\t\tif (process.env.PREFIX) {\n\t\t\tglobalPrefix = process.env.PREFIX;\n\t\t} else if (process.platform === 'win32') {\n\t\t\t// c:\\node\\node.exe --> prefix=c:\\node\\\n\t\t\tglobalPrefix = path.dirname(process.execPath);\n\t\t} else {\n\t\t\t// /usr/local/bin/node --> prefix=/usr/local\n\t\t\tglobalPrefix = path.dirname(path.dirname(process.execPath)); // destdir only is respected on Unix\n\n\t\t\tif (process.env.DESTDIR) {\n\t\t\t\tglobalPrefix = path.join(process.env.DESTDIR, globalPrefix);\n\t\t\t}\n\t\t}\n\n\t\tdefaults = {\n\t\t\taccess: null,\n\t\t\t'allow-same-version': false,\n\t\t\t'always-auth': false,\n\t\t\talso: null,\n\t\t\taudit: true,\n\t\t\t'auth-type': 'legacy',\n\t\t\t'bin-links': true,\n\t\t\tbrowser: null,\n\t\t\tca: null,\n\t\t\tcafile: null,\n\t\t\tcache: cache,\n\t\t\t'cache-lock-stale': 60000,\n\t\t\t'cache-lock-retries': 10,\n\t\t\t'cache-lock-wait': 10000,\n\t\t\t'cache-max': Infinity,\n\t\t\t'cache-min': 10,\n\t\t\tcert: null,\n\t\t\tcidr: null,\n\t\t\tcolor: process.env.NO_COLOR == null,\n\t\t\tdepth: Infinity,\n\t\t\tdescription: true,\n\t\t\tdev: false,\n\t\t\t'dry-run': false,\n\t\t\teditor: osenv.editor(),\n\t\t\t'engine-strict': false,\n\t\t\tforce: false,\n\t\t\t'fetch-retries': 2,\n\t\t\t'fetch-retry-factor': 10,\n\t\t\t'fetch-retry-mintimeout': 10000,\n\t\t\t'fetch-retry-maxtimeout': 60000,\n\t\t\tgit: 'git',\n\t\t\t'git-tag-version': true,\n\t\t\t'commit-hooks': true,\n\t\t\tglobal: false,\n\t\t\tglobalconfig: path.resolve(globalPrefix, 'etc', 'npmrc'),\n\t\t\t'global-style': false,\n\t\t\tgroup: process.platform === 'win32' ? 0 : process.env.SUDO_GID || process.getgid && process.getgid(),\n\t\t\t'ham-it-up': false,\n\t\t\theading: 'npm',\n\t\t\t'if-present': false,\n\t\t\t'ignore-prepublish': false,\n\t\t\t'ignore-scripts': false,\n\t\t\t'init-module': path.resolve(home, '.npm-init.js'),\n\t\t\t'init-author-name': '',\n\t\t\t'init-author-email': '',\n\t\t\t'init-author-url': '',\n\t\t\t'init-version': '1.0.0',\n\t\t\t'init-license': 'ISC',\n\t\t\tjson: false,\n\t\t\tkey: null,\n\t\t\t'legacy-bundling': false,\n\t\t\tlink: false,\n\t\t\t'local-address': undefined,\n\t\t\tloglevel: 'notice',\n\t\t\tlogstream: process.stderr,\n\t\t\t'logs-max': 10,\n\t\t\tlong: false,\n\t\t\tmaxsockets: 50,\n\t\t\tmessage: '%s',\n\t\t\t'metrics-registry': null,\n\t\t\t'node-options': null,\n\t\t\t// We remove node-version to fix the issue described here: https://github.com/pnpm/pnpm/issues/4203#issuecomment-1133872769\n\t\t\t'offline': false,\n\t\t\t'onload-script': false,\n\t\t\tonly: null,\n\t\t\toptional: true,\n\t\t\totp: null,\n\t\t\t'package-lock': true,\n\t\t\t'package-lock-only': false,\n\t\t\tparseable: false,\n\t\t\t'prefer-offline': false,\n\t\t\t'prefer-online': false,\n\t\t\tprefix: globalPrefix,\n\t\t\tproduction: false,\n\t\t\t'progress': !process.env.TRAVIS && !process.env.CI,\n\t\t\tprovenance: false,\n\t\t\tproxy: null,\n\t\t\t'https-proxy': null,\n\t\t\t'no-proxy': null,\n\t\t\t'user-agent': 'npm/{npm-version} ' + 'node/{node-version} ' + '{platform} ' + '{arch}',\n\t\t\t'read-only': false,\n\t\t\t'rebuild-bundle': true,\n\t\t\tregistry: 'https://registry.npmjs.org/',\n\t\t\trollback: true,\n\t\t\tsave: true,\n\t\t\t'save-bundle': false,\n\t\t\t'save-dev': false,\n\t\t\t'save-exact': false,\n\t\t\t'save-optional': false,\n\t\t\t'save-prefix': '^',\n\t\t\t'save-prod': false,\n\t\t\tscope: '',\n\t\t\t'script-shell': null,\n\t\t\t'scripts-prepend-node-path': 'warn-only',\n\t\t\tsearchopts: '',\n\t\t\tsearchexclude: null,\n\t\t\tsearchlimit: 20,\n\t\t\tsearchstaleness: 15 * 60,\n\t\t\t'send-metrics': false,\n\t\t\tshell: osenv.shell(),\n\t\t\tshrinkwrap: true,\n\t\t\t'sign-git-tag': false,\n\t\t\t'sso-poll-frequency': 500,\n\t\t\t'sso-type': 'oauth',\n\t\t\t'strict-ssl': true,\n\t\t\ttag: 'latest',\n\t\t\t'tag-version-prefix': 'v',\n\t\t\ttiming: false,\n\t\t\ttmp: temp,\n\t\t\tunicode: hasUnicode(),\n\t\t\t'unsafe-perm': process.platform === 'win32' || process.platform === 'cygwin' || !(process.getuid && process.setuid && process.getgid && process.setgid) || process.getuid() !== 0,\n\t\t\tusage: false,\n\t\t\tuser: process.platform === 'win32' ? 0 : 'nobody',\n\t\t\tuserconfig: path.resolve(home, '.npmrc'),\n\t\t\tumask: process.umask ? process.umask() : umask.fromString('022'),\n\t\t\tversion: false,\n\t\t\tversions: false,\n\t\t\tviewer: process.platform === 'win32' ? 'browser' : 'man',\n\t\t\t_exit: true\n\t\t};\n\t\treturn defaults;\n\t}\n});\n","'use strict';\nconst path = require('path');\nconst Conf = require('./lib/conf');\nconst _defaults = require('./lib/defaults');\n\n// https://github.com/npm/cli/blob/latest/lib/config/core.js#L101-L200\nmodule.exports = (opts, types, defaults) => {\n\tconst conf = new Conf(Object.assign({}, _defaults.defaults, defaults), types);\n\n\tconf.add(Object.assign({}, opts), 'cli');\n\tconst warnings = [];\n\tlet failedToLoadBuiltInConfig = false;\n\n\tif (require.resolve.paths) {\n\t\tconst paths = require.resolve.paths('npm');\n\t\t// Assume that last path in resolve paths is builtin modules directory\n\t\tlet npmPath;\n\t\ttry {\n\t\t\tnpmPath = require.resolve('npm', {paths: paths.slice(-1)});\n\t\t} catch (error) {\n\t\t\t// Error will be thrown if module cannot be found.\n\t\t\t// Update the flag while loading builtin config failed.\n\t\t\tfailedToLoadBuiltInConfig = true;\n\t\t}\n\n\t\tif (npmPath) {\n\t\t\t/**\n\t\t\t *  According to https://github.com/npm/cli/blob/86f5bdb91f7a5971953a5171d32d6eeda6a2e972/lib/npm.js#L258\n\t\t\t *  and https://github.com/npm/cli/blob/86f5bdb91f7a5971953a5171d32d6eeda6a2e972/lib/config/core.js#L92\n\t\t\t */\n\t\t\twarnings.push(conf.addFile(path.resolve(path.dirname(npmPath), '..', 'npmrc'), 'builtin'));\n\t\t}\n\t}\n\n\tconf.addEnv();\n\tconf.loadPrefix();\n\n\tconst projectConf = path.resolve(conf.localPrefix, '.npmrc');\n\tconst userConf = conf.get('userconfig');\n\n\tif (!conf.get('global') && projectConf !== userConf) {\n\t\twarnings.push(conf.addFile(projectConf, 'project'));\n\t} else {\n\t\tconf.add({}, 'project');\n\t}\n\n\t// TODO: cover with tests that configs from workspace .npmrc have bigger priority\n\t// than the ones in userconfig\n\tif (conf.get('workspace-prefix') && conf.get('workspace-prefix') !== projectConf) {\n\t\tconst workspaceConf = path.resolve(conf.get('workspace-prefix'), '.npmrc');\n\t\twarnings.push(conf.addFile(workspaceConf, 'workspace'));\n\t}\n\n\twarnings.push(conf.addFile(conf.get('userconfig'), 'user'));\n\n\tif (conf.get('prefix')) {\n\t\tconst etc = path.resolve(conf.get('prefix'), 'etc');\n\t\tconf.root.globalconfig = path.resolve(etc, 'npmrc');\n\t\tconf.root.globalignorefile = path.resolve(etc, 'npmignore');\n\t}\n\n\twarnings.push(conf.addFile(conf.get('globalconfig'), 'global'));\n\tconf.loadUser();\n\n\tconst caFile = conf.get('cafile');\n\n\tif (caFile) {\n\t\tconf.loadCAFile(caFile);\n\t}\n\n\treturn {\n\t\tconfig: conf,\n\t\twarnings: warnings.filter(Boolean),\n\t\tfailedToLoadBuiltInConfig,\n\t};\n};\n\nObject.defineProperty(module.exports, 'defaults', {\n\tget() {\n\t\treturn _defaults.defaults;\n\t},\n\tenumerable: true\n})\n","const npmConf = require('@pnpm/npm-conf')\n\nconst tokenKey = ':_authToken'\nconst legacyTokenKey = ':_auth'\nconst userKey = ':username'\nconst passwordKey = ':_password'\n\nmodule.exports = function getRegistryAuthToken () {\n  let checkUrl\n  let options\n  if (arguments.length >= 2) {\n    checkUrl = arguments[0]\n    options = Object.assign({}, arguments[1])\n  } else if (typeof arguments[0] === 'string') {\n    checkUrl = arguments[0]\n  } else {\n    options = Object.assign({}, arguments[0])\n  }\n  options = options || {}\n\n  const providedNpmrc = options.npmrc\n  options.npmrc = (options.npmrc ? {\n    config: {\n      get: (key) => providedNpmrc[key]\n    }\n  } : npmConf()).config\n\n  checkUrl = checkUrl || options.npmrc.get('registry') || npmConf.defaults.registry\n  return getRegistryAuthInfo(checkUrl, options) || getLegacyAuthInfo(options.npmrc)\n}\n\n// https://nodejs.org/api/url.html#urlresolvefrom-to\nfunction urlResolve (from, to) {\n  const resolvedUrl = new URL(to, new URL(from.startsWith('//') ? `./${from}` : from, 'resolve://'))\n  if (resolvedUrl.protocol === 'resolve:') {\n    // `from` is a relative URL.\n    const { pathname, search, hash } = resolvedUrl\n    return pathname + search + hash\n  }\n  return resolvedUrl.toString()\n}\n\nfunction getRegistryAuthInfo (checkUrl, options) {\n  let parsed =\n    checkUrl instanceof URL\n      ? checkUrl\n      : new URL(checkUrl.startsWith('//') ? `http:${checkUrl}` : checkUrl)\n  let pathname\n\n  while (pathname !== '/' && parsed.pathname !== pathname) {\n    pathname = parsed.pathname || '/'\n\n    const regUrl = '//' + parsed.host + pathname.replace(/\\/$/, '')\n    const authInfo = getAuthInfoForUrl(regUrl, options.npmrc)\n    if (authInfo) {\n      return authInfo\n    }\n\n    // break if not recursive\n    if (!options.recursive) {\n      return /\\/$/.test(checkUrl)\n        ? undefined\n        : getRegistryAuthInfo(new URL('./', parsed), options)\n    }\n\n    parsed.pathname = urlResolve(normalizePath(pathname), '..') || '/'\n  }\n\n  return undefined\n}\n\nfunction getLegacyAuthInfo (npmrc) {\n  if (!npmrc.get('_auth')) {\n    return undefined\n  }\n\n  const token = replaceEnvironmentVariable(npmrc.get('_auth'))\n\n  return { token: token, type: 'Basic' }\n}\n\nfunction normalizePath (path) {\n  return path[path.length - 1] === '/' ? path : path + '/'\n}\n\nfunction getAuthInfoForUrl (regUrl, npmrc) {\n  // try to get bearer token\n  const bearerAuth = getBearerToken(npmrc.get(regUrl + tokenKey) || npmrc.get(regUrl + '/' + tokenKey))\n  if (bearerAuth) {\n    return bearerAuth\n  }\n\n  // try to get basic token\n  const username = npmrc.get(regUrl + userKey) || npmrc.get(regUrl + '/' + userKey)\n  const password = npmrc.get(regUrl + passwordKey) || npmrc.get(regUrl + '/' + passwordKey)\n  const basicAuth = getTokenForUsernameAndPassword(username, password)\n  if (basicAuth) {\n    return basicAuth\n  }\n\n  const basicAuthWithToken = getLegacyAuthToken(npmrc.get(regUrl + legacyTokenKey) || npmrc.get(regUrl + '/' + legacyTokenKey))\n  if (basicAuthWithToken) {\n    return basicAuthWithToken\n  }\n\n  return undefined\n}\n\nfunction replaceEnvironmentVariable (token) {\n  return token.replace(/^\\$\\{?([^}]*)\\}?$/, function (fullMatch, envVar) {\n    return process.env[envVar]\n  })\n}\n\nfunction getBearerToken (tok) {\n  if (!tok) {\n    return undefined\n  }\n\n  // check if bearer token is set as environment variable\n  const token = replaceEnvironmentVariable(tok)\n\n  return { token: token, type: 'Bearer' }\n}\n\nfunction getTokenForUsernameAndPassword (username, password) {\n  if (!username || !password) {\n    return undefined\n  }\n\n  // passwords are base64 encoded, so we need to decode it\n  // See https://github.com/npm/npm/blob/v3.10.6/lib/config/set-credentials-by-uri.js#L26\n  const pass = Buffer.from(replaceEnvironmentVariable(password), 'base64').toString('utf8')\n\n  // a basic auth token is base64 encoded 'username:password'\n  // See https://github.com/npm/npm/blob/v3.10.6/lib/config/get-credentials-by-uri.js#L70\n  const token = Buffer.from(username + ':' + pass, 'utf8').toString('base64')\n\n  // we found a basicToken token so let's exit the loop\n  return {\n    token: token,\n    type: 'Basic',\n    password: pass,\n    username: username\n  }\n}\n\nfunction getLegacyAuthToken (tok) {\n  if (!tok) {\n    return undefined\n  }\n\n  // check if legacy auth token is set as environment variable\n  const token = replaceEnvironmentVariable(tok)\n\n  return { token: token, type: 'Basic' }\n}\n","import ky from 'ky';\nimport registryUrl from 'registry-url';\nimport registryAuthToken from 'registry-auth-token';\nimport semver from 'semver';\n\nexport class PackageNotFoundError extends Error {\n\tconstructor(packageName) {\n\t\tsuper(`Package \\`${packageName}\\` could not be found`);\n\t\tthis.name = 'PackageNotFoundError';\n\t}\n}\n\nexport class VersionNotFoundError extends Error {\n\tconstructor(packageName, version) {\n\t\tsuper(`Version \\`${version}\\` for package \\`${packageName}\\` could not be found`);\n\t\tthis.name = 'VersionNotFoundError';\n\t}\n}\n\nexport default async function packageJson(packageName, options = {}) {\n\tlet {version = 'latest'} = options;\n\tconst {omitDeprecated = true} = options;\n\n\tconst scope = packageName.split('/')[0];\n\tconst registryUrl_ = options.registryUrl ?? registryUrl(scope);\n\tconst packageUrl = new URL(encodeURIComponent(packageName).replace(/^%40/, '@'), registryUrl_);\n\tconst authInfo = registryAuthToken(registryUrl_.toString(), {recursive: true});\n\n\tconst headers = {\n\t\taccept: 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*',\n\t};\n\n\tif (options.fullMetadata) {\n\t\tdelete headers.accept;\n\t}\n\n\tif (authInfo) {\n\t\theaders.authorization = `${authInfo.type} ${authInfo.token}`;\n\t}\n\n\tlet data;\n\ttry {\n\t\tdata = await ky(packageUrl, {headers, keepalive: true}).json();\n\t} catch (error) {\n\t\tif (error?.response?.status === 404) {\n\t\t\tthrow new PackageNotFoundError(packageName);\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\tif (options.allVersions) {\n\t\treturn data;\n\t}\n\n\tconst versionError = new VersionNotFoundError(packageName, version);\n\n\tif (data['dist-tags'][version]) {\n\t\tconst {time} = data;\n\t\tdata = data.versions[data['dist-tags'][version]];\n\t\tdata.time = time;\n\t} else if (version) {\n\t\tconst versionExists = Boolean(data.versions[version]);\n\n\t\tif (omitDeprecated && !versionExists) {\n\t\t\tfor (const [metadataVersion, metadata] of Object.entries(data.versions)) {\n\t\t\t\tif (metadata.deprecated) {\n\t\t\t\t\tdelete data.versions[metadataVersion];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!versionExists) {\n\t\t\tconst versions = Object.keys(data.versions);\n\t\t\tversion = semver.maxSatisfying(versions, version);\n\n\t\t\tif (!version) {\n\t\t\t\tthrow versionError;\n\t\t\t}\n\t\t}\n\n\t\tconst {time} = data;\n\t\tdata = data.versions[version];\n\t\tdata.time = time;\n\n\t\tif (!data) {\n\t\t\tthrow versionError;\n\t\t}\n\t}\n\n\treturn data;\n}\n","import packageJson from 'package-json';\n\nexport {PackageNotFoundError, VersionNotFoundError} from 'package-json';\n\nexport default async function latestVersion(packageName, options) {\n\tconst {version} = await packageJson(packageName.toLowerCase(), options);\n\treturn version;\n}\n","import process from 'node:process';\n\nconst packageJson = process.env.npm_package_json;\nconst userAgent = process.env.npm_config_user_agent;\n\nexport const isNpm = Boolean(userAgent?.startsWith('npm')) || Boolean(packageJson?.endsWith('package.json'));\nexport const isYarn = Boolean(userAgent?.startsWith('yarn'));\nexport const isPnpm = Boolean(userAgent?.startsWith('pnpm'));\nexport const isBun = Boolean(userAgent?.startsWith('bun'));\nexport const isNpmOrYarn = isNpm || isYarn;\nexport const isPackageManager = isNpm || isYarn || isPnpm || isBun;\n","const { hasOwnProperty } = Object.prototype\n\nconst encode = (obj, opt = {}) => {\n  if (typeof opt === 'string') {\n    opt = { section: opt }\n  }\n  opt.align = opt.align === true\n  opt.newline = opt.newline === true\n  opt.sort = opt.sort === true\n  opt.whitespace = opt.whitespace === true || opt.align === true\n  // The `typeof` check is required because accessing the `process` directly fails on browsers.\n  /* istanbul ignore next */\n  opt.platform = opt.platform || (typeof process !== 'undefined' && process.platform)\n  opt.bracketedArray = opt.bracketedArray !== false\n\n  /* istanbul ignore next */\n  const eol = opt.platform === 'win32' ? '\\r\\n' : '\\n'\n  const separator = opt.whitespace ? ' = ' : '='\n  const children = []\n\n  const keys = opt.sort ? Object.keys(obj).sort() : Object.keys(obj)\n\n  let padToChars = 0\n  // If aligning on the separator, then padToChars is determined as follows:\n  // 1. Get the keys\n  // 2. Exclude keys pointing to objects unless the value is null or an array\n  // 3. Add `[]` to array keys\n  // 4. Ensure non empty set of keys\n  // 5. Reduce the set to the longest `safe` key\n  // 6. Get the `safe` length\n  if (opt.align) {\n    padToChars = safe(\n      (\n        keys\n          .filter(k => obj[k] === null || Array.isArray(obj[k]) || typeof obj[k] !== 'object')\n          .map(k => Array.isArray(obj[k]) ? `${k}[]` : k)\n      )\n        .concat([''])\n        .reduce((a, b) => safe(a).length >= safe(b).length ? a : b)\n    ).length\n  }\n\n  let out = ''\n  const arraySuffix = opt.bracketedArray ? '[]' : ''\n\n  for (const k of keys) {\n    const val = obj[k]\n    if (val && Array.isArray(val)) {\n      for (const item of val) {\n        out += safe(`${k}${arraySuffix}`).padEnd(padToChars, ' ') + separator + safe(item) + eol\n      }\n    } else if (val && typeof val === 'object') {\n      children.push(k)\n    } else {\n      out += safe(k).padEnd(padToChars, ' ') + separator + safe(val) + eol\n    }\n  }\n\n  if (opt.section && out.length) {\n    out = '[' + safe(opt.section) + ']' + (opt.newline ? eol + eol : eol) + out\n  }\n\n  for (const k of children) {\n    const nk = splitSections(k, '.').join('\\\\.')\n    const section = (opt.section ? opt.section + '.' : '') + nk\n    const child = encode(obj[k], {\n      ...opt,\n      section,\n    })\n    if (out.length && child.length) {\n      out += eol\n    }\n\n    out += child\n  }\n\n  return out\n}\n\nfunction splitSections (str, separator) {\n  var lastMatchIndex = 0\n  var lastSeparatorIndex = 0\n  var nextIndex = 0\n  var sections = []\n\n  do {\n    nextIndex = str.indexOf(separator, lastMatchIndex)\n\n    if (nextIndex !== -1) {\n      lastMatchIndex = nextIndex + separator.length\n\n      if (nextIndex > 0 && str[nextIndex - 1] === '\\\\') {\n        continue\n      }\n\n      sections.push(str.slice(lastSeparatorIndex, nextIndex))\n      lastSeparatorIndex = nextIndex + separator.length\n    }\n  } while (nextIndex !== -1)\n\n  sections.push(str.slice(lastSeparatorIndex))\n\n  return sections\n}\n\nconst decode = (str, opt = {}) => {\n  opt.bracketedArray = opt.bracketedArray !== false\n  const out = Object.create(null)\n  let p = out\n  let section = null\n  //          section          |key      = value\n  const re = /^\\[([^\\]]*)\\]\\s*$|^([^=]+)(=(.*))?$/i\n  const lines = str.split(/[\\r\\n]+/g)\n  const duplicates = {}\n\n  for (const line of lines) {\n    if (!line || line.match(/^\\s*[;#]/) || line.match(/^\\s*$/)) {\n      continue\n    }\n    const match = line.match(re)\n    if (!match) {\n      continue\n    }\n    if (match[1] !== undefined) {\n      section = unsafe(match[1])\n      if (section === '__proto__') {\n        // not allowed\n        // keep parsing the section, but don't attach it.\n        p = Object.create(null)\n        continue\n      }\n      p = out[section] = out[section] || Object.create(null)\n      continue\n    }\n    const keyRaw = unsafe(match[2])\n    let isArray\n    if (opt.bracketedArray) {\n      isArray = keyRaw.length > 2 && keyRaw.slice(-2) === '[]'\n    } else {\n      duplicates[keyRaw] = (duplicates?.[keyRaw] || 0) + 1\n      isArray = duplicates[keyRaw] > 1\n    }\n    const key = isArray ? keyRaw.slice(0, -2) : keyRaw\n    if (key === '__proto__') {\n      continue\n    }\n    const valueRaw = match[3] ? unsafe(match[4]) : true\n    const value = valueRaw === 'true' ||\n      valueRaw === 'false' ||\n      valueRaw === 'null' ? JSON.parse(valueRaw)\n      : valueRaw\n\n    // Convert keys with '[]' suffix to an array\n    if (isArray) {\n      if (!hasOwnProperty.call(p, key)) {\n        p[key] = []\n      } else if (!Array.isArray(p[key])) {\n        p[key] = [p[key]]\n      }\n    }\n\n    // safeguard against resetting a previously defined\n    // array by accidentally forgetting the brackets\n    if (Array.isArray(p[key])) {\n      p[key].push(value)\n    } else {\n      p[key] = value\n    }\n  }\n\n  // {a:{y:1},\"a.b\":{x:2}} --> {a:{y:1,b:{x:2}}}\n  // use a filter to return the keys that have to be deleted.\n  const remove = []\n  for (const k of Object.keys(out)) {\n    if (!hasOwnProperty.call(out, k) ||\n      typeof out[k] !== 'object' ||\n      Array.isArray(out[k])) {\n      continue\n    }\n\n    // see if the parent section is also an object.\n    // if so, add it to that, and mark this one for deletion\n    const parts = splitSections(k, '.')\n    p = out\n    const l = parts.pop()\n    const nl = l.replace(/\\\\\\./g, '.')\n    for (const part of parts) {\n      if (part === '__proto__') {\n        continue\n      }\n      if (!hasOwnProperty.call(p, part) || typeof p[part] !== 'object') {\n        p[part] = Object.create(null)\n      }\n      p = p[part]\n    }\n    if (p === out && nl === l) {\n      continue\n    }\n\n    p[nl] = out[k]\n    remove.push(k)\n  }\n  for (const del of remove) {\n    delete out[del]\n  }\n\n  return out\n}\n\nconst isQuoted = val => {\n  return (val.startsWith('\"') && val.endsWith('\"')) ||\n    (val.startsWith(\"'\") && val.endsWith(\"'\"))\n}\n\nconst safe = val => {\n  if (\n    typeof val !== 'string' ||\n    val.match(/[=\\r\\n]/) ||\n    val.match(/^\\[/) ||\n    (val.length > 1 && isQuoted(val)) ||\n    val !== val.trim()\n  ) {\n    return JSON.stringify(val)\n  }\n  return val.split(';').join('\\\\;').split('#').join('\\\\#')\n}\n\nconst unsafe = (val, doUnesc) => {\n  val = (val || '').trim()\n  if (isQuoted(val)) {\n    // remove the single quotes before calling JSON.parse\n    if (val.charAt(0) === \"'\") {\n      val = val.slice(1, -1)\n    }\n    try {\n      val = JSON.parse(val)\n    } catch {\n      // ignore errors\n    }\n  } else {\n    // walk the val to find the first not-escaped ; character\n    let esc = false\n    let unesc = ''\n    for (let i = 0, l = val.length; i < l; i++) {\n      const c = val.charAt(i)\n      if (esc) {\n        if ('\\\\;#'.indexOf(c) !== -1) {\n          unesc += c\n        } else {\n          unesc += '\\\\' + c\n        }\n\n        esc = false\n      } else if (';#'.indexOf(c) !== -1) {\n        break\n      } else if (c === '\\\\') {\n        esc = true\n      } else {\n        unesc += c\n      }\n    }\n    if (esc) {\n      unesc += '\\\\'\n    }\n\n    return unesc.trim()\n  }\n  return val\n}\n\nmodule.exports = {\n  parse: decode,\n  decode,\n  stringify: encode,\n  encode,\n  safe,\n  unsafe,\n}\n","import process from 'node:process';\nimport path from 'node:path';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport ini from 'ini';\n\nconst isWindows = process.platform === 'win32';\n\nconst readRc = filePath => {\n\ttry {\n\t\treturn ini.parse(fs.readFileSync(filePath, 'utf8')).prefix;\n\t} catch {}\n};\n\n// TODO: Remove the `.reduce` call.\n// eslint-disable-next-line unicorn/no-array-reduce\nconst getEnvNpmPrefix = () => Object.keys(process.env).reduce((prefix, name) => /^npm_config_prefix$/i.test(name) ? process.env[name] : prefix, undefined);\n\nconst getGlobalNpmrc = () => {\n\tif (isWindows && process.env.APPDATA) {\n\t\t// Hardcoded contents of `c:\\Program Files\\nodejs\\node_modules\\npm\\npmrc`\n\t\treturn path.join(process.env.APPDATA, '/npm/etc/npmrc');\n\t}\n\n\t// Homebrew special case: `$(brew --prefix)/lib/node_modules/npm/npmrc`\n\tif (process.execPath.includes('/Cellar/node')) {\n\t\tconst homebrewPrefix = process.execPath.slice(0, process.execPath.indexOf('/Cellar/node'));\n\t\treturn path.join(homebrewPrefix, '/lib/node_modules/npm/npmrc');\n\t}\n\n\tif (process.execPath.endsWith('/bin/node')) {\n\t\tconst installDir = path.dirname(path.dirname(process.execPath));\n\t\treturn path.join(installDir, '/etc/npmrc');\n\t}\n};\n\nconst getDefaultNpmPrefix = () => {\n\tif (isWindows) {\n\t\tconst {APPDATA} = process.env;\n\t\t// `c:\\node\\node.exe` → `prefix=c:\\node\\`\n\t\treturn APPDATA ? path.join(APPDATA, 'npm') : path.dirname(process.execPath);\n\t}\n\n\t// `/usr/local/bin/node` → `prefix=/usr/local`\n\treturn path.dirname(path.dirname(process.execPath));\n};\n\nconst getNpmPrefix = () => {\n\tconst envPrefix = getEnvNpmPrefix();\n\tif (envPrefix) {\n\t\treturn envPrefix;\n\t}\n\n\tconst homePrefix = readRc(path.join(os.homedir(), '.npmrc'));\n\tif (homePrefix) {\n\t\treturn homePrefix;\n\t}\n\n\tif (process.env.PREFIX) {\n\t\treturn process.env.PREFIX;\n\t}\n\n\tconst globalPrefix = readRc(getGlobalNpmrc());\n\tif (globalPrefix) {\n\t\treturn globalPrefix;\n\t}\n\n\treturn getDefaultNpmPrefix();\n};\n\nconst npmPrefix = path.resolve(getNpmPrefix());\n\nconst getYarnWindowsDirectory = () => {\n\tif (isWindows && process.env.LOCALAPPDATA) {\n\t\tconst dir = path.join(process.env.LOCALAPPDATA, 'Yarn');\n\t\tif (fs.existsSync(dir)) {\n\t\t\treturn dir;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nconst getYarnPrefix = () => {\n\tif (process.env.PREFIX) {\n\t\treturn process.env.PREFIX;\n\t}\n\n\tconst windowsPrefix = getYarnWindowsDirectory();\n\tif (windowsPrefix) {\n\t\treturn windowsPrefix;\n\t}\n\n\tconst configPrefix = path.join(os.homedir(), '.config/yarn');\n\tif (fs.existsSync(configPrefix)) {\n\t\treturn configPrefix;\n\t}\n\n\tconst homePrefix = path.join(os.homedir(), '.yarn-config');\n\tif (fs.existsSync(homePrefix)) {\n\t\treturn homePrefix;\n\t}\n\n\t// Yarn supports the npm conventions but the inverse is not true\n\treturn npmPrefix;\n};\n\nconst globalDirectory = {};\n\nglobalDirectory.npm = {};\nglobalDirectory.npm.prefix = npmPrefix;\nglobalDirectory.npm.packages = path.join(npmPrefix, isWindows ? 'node_modules' : 'lib/node_modules');\nglobalDirectory.npm.binaries = isWindows ? npmPrefix : path.join(npmPrefix, 'bin');\n\nconst yarnPrefix = path.resolve(getYarnPrefix());\nglobalDirectory.yarn = {};\nglobalDirectory.yarn.prefix = yarnPrefix;\nglobalDirectory.yarn.packages = path.join(yarnPrefix, getYarnWindowsDirectory() ? 'Data/global/node_modules' : 'global/node_modules');\nglobalDirectory.yarn.binaries = path.join(globalDirectory.yarn.packages, '.bin');\n\nexport default globalDirectory;\n","import path from 'node:path';\n\nexport default function isPathInside(childPath, parentPath) {\n\tconst relation = path.relative(parentPath, childPath);\n\n\treturn Boolean(\n\t\trelation &&\n\t\trelation !== '..' &&\n\t\t!relation.startsWith(`..${path.sep}`) &&\n\t\trelation !== path.resolve(childPath)\n\t);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport globalDirectory from 'global-directory';\nimport isPathInside from 'is-path-inside';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst isInstalledGlobally = (() => {\n\ttry {\n\t\treturn (\n\t\t\tisPathInside(__dirname, globalDirectory.yarn.packages)\n\t\t\t|| isPathInside(__dirname, fs.realpathSync(globalDirectory.npm.packages))\n\t\t);\n\t} catch {\n\t\treturn false;\n\t}\n})();\n\nexport default isInstalledGlobally;\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n\tconst osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Fast path: ANSI codes require ESC (7-bit) or CSI (8-bit) introducer\n\tif (!string.includes('\\u001B') && !string.includes('\\u009B')) {\n\t\treturn string;\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","// Generated by scripts/build.js\n\n// prettier-ignore\nconst ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];\n\n// prettier-ignore\nconst fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];\n\n// prettier-ignore\nconst halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];\n\n// prettier-ignore\nconst narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];\n\n// prettier-ignore\nconst wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];\n\nexport {ambiguousRanges, fullwidthRanges, halfwidthRanges, narrowRanges, wideRanges};\n","/**\nBinary search on a sorted flat array of [start, end] pairs.\n\n@param {number[]} ranges - Flat array of inclusive [start, end] range pairs, e.g. [0, 5, 10, 20].\n@param {number} codePoint - The value to search for.\n@returns {boolean} Whether the value falls within any of the ranges.\n*/\nexport const isInRange = (ranges, codePoint) => {\n\tlet low = 0;\n\tlet high = Math.floor(ranges.length / 2) - 1;\n\twhile (low <= high) {\n\t\tconst mid = Math.floor((low + high) / 2);\n\t\tconst i = mid * 2;\n\t\tif (codePoint < ranges[i]) {\n\t\t\thigh = mid - 1;\n\t\t} else if (codePoint > ranges[i + 1]) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n","import {\n\tambiguousRanges,\n\tfullwidthRanges,\n\thalfwidthRanges,\n\tnarrowRanges,\n\twideRanges,\n} from './lookup-data.js';\nimport {isInRange} from './utilities.js';\n\nconst minimumAmbiguousCodePoint = ambiguousRanges[0];\nconst maximumAmbiguousCodePoint = ambiguousRanges.at(-1);\nconst minimumFullWidthCodePoint = fullwidthRanges[0];\nconst maximumFullWidthCodePoint = fullwidthRanges.at(-1);\nconst minimumHalfWidthCodePoint = halfwidthRanges[0];\nconst maximumHalfWidthCodePoint = halfwidthRanges.at(-1);\nconst minimumNarrowCodePoint = narrowRanges[0];\nconst maximumNarrowCodePoint = narrowRanges.at(-1);\nconst minimumWideCodePoint = wideRanges[0];\nconst maximumWideCodePoint = wideRanges.at(-1);\n\nconst commonCjkCodePoint = 0x4E_00;\nconst [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);\n\n// Use a hot-path range so common `isWide` calls can skip binary search.\n// The range containing U+4E00 covers common CJK ideographs;\n// fallback to the largest range for resilience to Unicode table changes.\nfunction findWideFastPathRange(ranges) {\n\tlet fastPathStart = ranges[0];\n\tlet fastPathEnd = ranges[1];\n\n\tfor (let index = 0; index < ranges.length; index += 2) {\n\t\tconst start = ranges[index];\n\t\tconst end = ranges[index + 1];\n\n\t\tif (\n\t\t\tcommonCjkCodePoint >= start\n\t\t\t&& commonCjkCodePoint <= end\n\t\t) {\n\t\t\treturn [start, end];\n\t\t}\n\n\t\tif ((end - start) > (fastPathEnd - fastPathStart)) {\n\t\t\tfastPathStart = start;\n\t\t\tfastPathEnd = end;\n\t\t}\n\t}\n\n\treturn [fastPathStart, fastPathEnd];\n}\n\nexport const isAmbiguous = codePoint => {\n\tif (\n\t\tcodePoint < minimumAmbiguousCodePoint\n\t\t|| codePoint > maximumAmbiguousCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(ambiguousRanges, codePoint);\n};\n\nexport const isFullWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumFullWidthCodePoint\n\t\t|| codePoint > maximumFullWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(fullwidthRanges, codePoint);\n};\n\nconst isHalfWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumHalfWidthCodePoint\n\t\t|| codePoint > maximumHalfWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(halfwidthRanges, codePoint);\n};\n\nconst isNarrow = codePoint => {\n\tif (\n\t\tcodePoint < minimumNarrowCodePoint\n\t\t|| codePoint > maximumNarrowCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(narrowRanges, codePoint);\n};\n\nexport const isWide = codePoint => {\n\tif (\n\t\tcodePoint >= wideFastPathStart\n\t\t&& codePoint <= wideFastPathEnd\n\t) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tcodePoint < minimumWideCodePoint\n\t\t|| codePoint > maximumWideCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(wideRanges, codePoint);\n};\n\nexport function getCategory(codePoint) {\n\tif (isAmbiguous(codePoint)) {\n\t\treturn 'ambiguous';\n\t}\n\n\tif (isFullWidth(codePoint)) {\n\t\treturn 'fullwidth';\n\t}\n\n\tif (isHalfWidth(codePoint)) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (isNarrow(codePoint)) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(codePoint)) {\n\t\treturn 'wide';\n\t}\n\n\treturn 'neutral';\n}\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point\nexport {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';\n","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E-\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED8\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC2\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF]|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","import stringWidth from 'string-width';\n\nexport default function widestLine(string) {\n\tlet lineWidth = 0;\n\n\tfor (const line of string.split('\\n')) {\n\t\tlineWidth = Math.max(lineWidth, stringWidth(line));\n\t}\n\n\treturn lineWidth;\n}\n","{\n\t\"single\": {\n\t\t\"topLeft\": \"┌\",\n\t\t\"top\": \"─\",\n\t\t\"topRight\": \"┐\",\n\t\t\"right\": \"│\",\n\t\t\"bottomRight\": \"┘\",\n\t\t\"bottom\": \"─\",\n\t\t\"bottomLeft\": \"└\",\n\t\t\"left\": \"│\"\n\t},\n\t\"double\": {\n\t\t\"topLeft\": \"╔\",\n\t\t\"top\": \"═\",\n\t\t\"topRight\": \"╗\",\n\t\t\"right\": \"║\",\n\t\t\"bottomRight\": \"╝\",\n\t\t\"bottom\": \"═\",\n\t\t\"bottomLeft\": \"╚\",\n\t\t\"left\": \"║\"\n\t},\n\t\"round\": {\n\t\t\"topLeft\": \"╭\",\n\t\t\"top\": \"─\",\n\t\t\"topRight\": \"╮\",\n\t\t\"right\": \"│\",\n\t\t\"bottomRight\": \"╯\",\n\t\t\"bottom\": \"─\",\n\t\t\"bottomLeft\": \"╰\",\n\t\t\"left\": \"│\"\n\t},\n\t\"bold\": {\n\t\t\"topLeft\": \"┏\",\n\t\t\"top\": \"━\",\n\t\t\"topRight\": \"┓\",\n\t\t\"right\": \"┃\",\n\t\t\"bottomRight\": \"┛\",\n\t\t\"bottom\": \"━\",\n\t\t\"bottomLeft\": \"┗\",\n\t\t\"left\": \"┃\"\n\t},\n\t\"singleDouble\": {\n\t\t\"topLeft\": \"╓\",\n\t\t\"top\": \"─\",\n\t\t\"topRight\": \"╖\",\n\t\t\"right\": \"║\",\n\t\t\"bottomRight\": \"╜\",\n\t\t\"bottom\": \"─\",\n\t\t\"bottomLeft\": \"╙\",\n\t\t\"left\": \"║\"\n\t},\n\t\"doubleSingle\": {\n\t\t\"topLeft\": \"╒\",\n\t\t\"top\": \"═\",\n\t\t\"topRight\": \"╕\",\n\t\t\"right\": \"│\",\n\t\t\"bottomRight\": \"╛\",\n\t\t\"bottom\": \"═\",\n\t\t\"bottomLeft\": \"╘\",\n\t\t\"left\": \"│\"\n\t},\n\t\"classic\": {\n\t\t\"topLeft\": \"+\",\n\t\t\"top\": \"-\",\n\t\t\"topRight\": \"+\",\n\t\t\"right\": \"|\",\n\t\t\"bottomRight\": \"+\",\n\t\t\"bottom\": \"-\",\n\t\t\"bottomLeft\": \"+\",\n\t\t\"left\": \"|\"\n\t},\n\t\"arrow\": {\n\t\t\"topLeft\": \"↘\",\n\t\t\"top\": \"↓\",\n\t\t\"topRight\": \"↙\",\n\t\t\"right\": \"←\",\n\t\t\"bottomRight\": \"↖\",\n\t\t\"bottom\": \"↑\",\n\t\t\"bottomLeft\": \"↗\",\n\t\t\"left\": \"→\"\n\t}\n}\n","'use strict';\nconst cliBoxes = require('./boxes.json');\n\nmodule.exports = cliBoxes;\n// TODO: Remove this for the next major release\nmodule.exports.default = cliBoxes;\n","const UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase, preserveConsecutiveUppercase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\tlet isLastLastCharPreserved = false;\n\n\tfor (let index = 0; index < string.length; index++) {\n\t\tconst character = string[index];\n\t\tisLastLastCharPreserved = index > 2 ? string[index - 3] === '-' : true;\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, index) + '-' + string.slice(index);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\tindex++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character) && (!isLastLastCharPreserved || preserveConsecutiveUppercase)) {\n\t\t\tstring = string.slice(0, index - 1) + '-' + string.slice(index - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replaceAll(LEADING_CAPITAL, match => toLowerCase(match));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input\n\t\t.replaceAll(NUMBERS_AND_IDENTIFIER, (match, pattern, offset) => ['_', '-'].includes(input.charAt(offset + match.length)) ? match : toUpperCase(match))\n\t\t.replaceAll(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier));\n};\n\nexport default function camelCase(input, options) {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false\n\t\t? string => string.toLowerCase()\n\t\t: string => string.toLocaleLowerCase(options.locale);\n\n\tconst toUpperCase = options.locale === false\n\t\t? string => string.toUpperCase()\n\t\t: string => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\tif (SEPARATORS.test(input)) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase, options.preserveConsecutiveUppercase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\tinput = options.preserveConsecutiveUppercase ? preserveConsecutiveUppercase(input, toLowerCase) : toLowerCase(input);\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n}\n","'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n","'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n","\"use strict\";\n\nmodule.exports = function () {\n  // https://mths.be/emoji\n  return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), '  ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n","'use strict'\n\nconst stringWidth = require('string-width')\n\nfunction ansiAlign (text, opts) {\n  if (!text) return text\n\n  opts = opts || {}\n  const align = opts.align || 'center'\n\n  // short-circuit `align: 'left'` as no-op\n  if (align === 'left') return text\n\n  const split = opts.split || '\\n'\n  const pad = opts.pad || ' '\n  const widthDiffFn = align !== 'right' ? halfDiff : fullDiff\n\n  let returnString = false\n  if (!Array.isArray(text)) {\n    returnString = true\n    text = String(text).split(split)\n  }\n\n  let width\n  let maxWidth = 0\n  text = text.map(function (str) {\n    str = String(str)\n    width = stringWidth(str)\n    maxWidth = Math.max(width, maxWidth)\n    return {\n      str,\n      width\n    }\n  }).map(function (obj) {\n    return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad) + obj.str\n  })\n\n  return returnString ? text.join(split) : text\n}\n\nansiAlign.left = function left (text) {\n  return ansiAlign(text, { align: 'left' })\n}\n\nansiAlign.center = function center (text) {\n  return ansiAlign(text, { align: 'center' })\n}\n\nansiAlign.right = function right (text) {\n  return ansiAlign(text, { align: 'right' })\n}\n\nmodule.exports = ansiAlign\n\nfunction halfDiff (maxWidth, curWidth) {\n  return Math.floor((maxWidth - curWidth) / 2)\n}\n\nfunction fullDiff (maxWidth, curWidth) {\n  return maxWidth - curWidth\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = url => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows.at(-1)));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\n\t\t\tconst ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');\n\t\t\tisInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows.at(-1).length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode.\n//\n// 'hard' will never allow a string to take up more than columns characters.\n//\n// 'soft' allows long words to expand past the column length.\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows.at(-1).trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows.at(-1));\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst preString = rows.join('\\n');\n\tconst pre = [...preString];\n\n\t// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of codepoints.\n\tlet preStringIndex = 0;\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\n\t\tpreStringIndex += character.length;\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replaceAll('\\r\\n', '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","import process from 'node:process';\nimport stringWidth from 'string-width';\nimport chalk from 'chalk';\nimport widestLine from 'widest-line';\nimport cliBoxes from 'cli-boxes';\nimport camelCase from 'camelcase';\nimport ansiAlign from 'ansi-align';\nimport wrapAnsi from 'wrap-ansi';\n\nconst NEWLINE = '\\n';\nconst PAD = ' ';\nconst NONE = 'none';\n\nconst terminalColumns = () => {\n\tconst {env, stdout, stderr} = process;\n\n\tif (stdout?.columns) {\n\t\treturn stdout.columns;\n\t}\n\n\tif (stderr?.columns) {\n\t\treturn stderr.columns;\n\t}\n\n\tif (env.COLUMNS) {\n\t\treturn Number.parseInt(env.COLUMNS, 10);\n\t}\n\n\treturn 80;\n};\n\nconst getObject = detail => typeof detail === 'number' ? {\n\ttop: detail,\n\tright: detail * 3,\n\tbottom: detail,\n\tleft: detail * 3,\n} : {\n\ttop: 0,\n\tright: 0,\n\tbottom: 0,\n\tleft: 0,\n\t...detail,\n};\n\nconst getBorderWidth = borderStyle => borderStyle === NONE ? 0 : 2;\n\nconst getBorderChars = borderStyle => {\n\tconst sides = [\n\t\t'topLeft',\n\t\t'topRight',\n\t\t'bottomRight',\n\t\t'bottomLeft',\n\t\t'left',\n\t\t'right',\n\t\t'top',\n\t\t'bottom',\n\t];\n\n\tlet characters;\n\n\t// Create empty border style\n\tif (borderStyle === NONE) {\n\t\tborderStyle = {};\n\t\tfor (const side of sides) {\n\t\t\tborderStyle[side] = '';\n\t\t}\n\t}\n\n\tif (typeof borderStyle === 'string') {\n\t\tcharacters = cliBoxes[borderStyle];\n\n\t\tif (!characters) {\n\t\t\tthrow new TypeError(`Invalid border style: ${borderStyle}`);\n\t\t}\n\t} else {\n\t\t// Ensure retro-compatibility\n\t\tif (typeof borderStyle?.vertical === 'string') {\n\t\t\tborderStyle.left = borderStyle.vertical;\n\t\t\tborderStyle.right = borderStyle.vertical;\n\t\t}\n\n\t\t// Ensure retro-compatibility\n\t\tif (typeof borderStyle?.horizontal === 'string') {\n\t\t\tborderStyle.top = borderStyle.horizontal;\n\t\t\tborderStyle.bottom = borderStyle.horizontal;\n\t\t}\n\n\t\tfor (const side of sides) {\n\t\t\tif (borderStyle[side] === null || typeof borderStyle[side] !== 'string') {\n\t\t\t\tthrow new TypeError(`Invalid border style: ${side}`);\n\t\t\t}\n\t\t}\n\n\t\tcharacters = borderStyle;\n\t}\n\n\treturn characters;\n};\n\nconst makeTitle = (text, horizontal, alignment) => {\n\tlet title = '';\n\n\tconst textWidth = stringWidth(text);\n\n\tswitch (alignment) {\n\t\tcase 'left': {\n\t\t\ttitle = text + horizontal.slice(textWidth);\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'right': {\n\t\t\ttitle = horizontal.slice(textWidth) + text;\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\thorizontal = horizontal.slice(textWidth);\n\n\t\t\tif (horizontal.length % 2 === 1) { // This is needed in case the length is odd\n\t\t\t\thorizontal = horizontal.slice(Math.floor(horizontal.length / 2));\n\t\t\t\ttitle = horizontal.slice(1) + text + horizontal; // We reduce the left part of one character to avoid the bar to go beyond its limit\n\t\t\t} else {\n\t\t\t\thorizontal = horizontal.slice(horizontal.length / 2);\n\t\t\t\ttitle = horizontal + text + horizontal;\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn title;\n};\n\nconst makeContentText = (text, {padding, width, textAlignment, height}) => {\n\ttext = ansiAlign(text, {align: textAlignment});\n\tlet lines = text.split(NEWLINE);\n\tconst textWidth = widestLine(text);\n\n\tconst max = width - padding.left - padding.right;\n\n\tif (textWidth > max) {\n\t\tconst newLines = [];\n\t\tfor (const line of lines) {\n\t\t\tconst createdLines = wrapAnsi(line, max, {hard: true});\n\t\t\tconst alignedLines = ansiAlign(createdLines, {align: textAlignment});\n\t\t\tconst alignedLinesArray = alignedLines.split('\\n');\n\t\t\tconst longestLength = Math.max(...alignedLinesArray.map(s => stringWidth(s)));\n\n\t\t\tfor (const alignedLine of alignedLinesArray) {\n\t\t\t\tlet paddedLine;\n\t\t\t\tswitch (textAlignment) {\n\t\t\t\t\tcase 'center': {\n\t\t\t\t\t\tpaddedLine = PAD.repeat((max - longestLength) / 2) + alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'right': {\n\t\t\t\t\t\tpaddedLine = PAD.repeat(max - longestLength) + alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tpaddedLine = alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnewLines.push(paddedLine);\n\t\t\t}\n\t\t}\n\n\t\tlines = newLines;\n\t}\n\n\tif (textAlignment === 'center' && textWidth < max) {\n\t\tlines = lines.map(line => PAD.repeat((max - textWidth) / 2) + line);\n\t} else if (textAlignment === 'right' && textWidth < max) {\n\t\tlines = lines.map(line => PAD.repeat(max - textWidth) + line);\n\t}\n\n\tconst paddingLeft = PAD.repeat(padding.left);\n\tconst paddingRight = PAD.repeat(padding.right);\n\n\tlines = lines.map(line => {\n\t\tconst newLine = paddingLeft + line + paddingRight;\n\n\t\treturn newLine + PAD.repeat(width - stringWidth(newLine));\n\t});\n\n\tif (padding.top > 0) {\n\t\tlines = [...Array.from({length: padding.top}).fill(PAD.repeat(width)), ...lines];\n\t}\n\n\tif (padding.bottom > 0) {\n\t\tlines = [...lines, ...Array.from({length: padding.bottom}).fill(PAD.repeat(width))];\n\t}\n\n\tif (height && lines.length > height) {\n\t\tlines = lines.slice(0, height);\n\t} else if (height && lines.length < height) {\n\t\tlines = [...lines, ...Array.from({length: height - lines.length}).fill(PAD.repeat(width))];\n\t}\n\n\treturn lines.join(NEWLINE);\n};\n\nconst boxContent = (content, contentWidth, options) => {\n\tconst colorizeBorder = border => {\n\t\tconst newBorder = options.borderColor ? getColorFunction(options.borderColor)(border) : border;\n\t\treturn options.dimBorder ? chalk.dim(newBorder) : newBorder;\n\t};\n\n\tconst colorizeContent = content => options.backgroundColor ? getBGColorFunction(options.backgroundColor)(content) : content;\n\n\tconst chars = getBorderChars(options.borderStyle);\n\tconst columns = terminalColumns();\n\tlet marginLeft = PAD.repeat(options.margin.left);\n\n\tif (options.float === 'center') {\n\t\tconst marginWidth = Math.max((columns - contentWidth - getBorderWidth(options.borderStyle)) / 2, 0);\n\t\tmarginLeft = PAD.repeat(marginWidth);\n\t} else if (options.float === 'right') {\n\t\tconst marginWidth = Math.max(columns - contentWidth - options.margin.right - getBorderWidth(options.borderStyle), 0);\n\t\tmarginLeft = PAD.repeat(marginWidth);\n\t}\n\n\tlet result = '';\n\n\tif (options.margin.top) {\n\t\tresult += NEWLINE.repeat(options.margin.top);\n\t}\n\n\tif (options.borderStyle !== NONE || options.title) {\n\t\tresult += colorizeBorder(marginLeft + chars.topLeft + (options.title ? makeTitle(options.title, chars.top.repeat(contentWidth), options.titleAlignment) : chars.top.repeat(contentWidth)) + chars.topRight) + NEWLINE;\n\t}\n\n\tconst lines = content.split(NEWLINE);\n\n\tresult += lines.map(line => marginLeft + colorizeBorder(chars.left) + colorizeContent(line) + colorizeBorder(chars.right)).join(NEWLINE);\n\n\tif (options.borderStyle !== NONE) {\n\t\tresult += NEWLINE + colorizeBorder(marginLeft + chars.bottomLeft + chars.bottom.repeat(contentWidth) + chars.bottomRight);\n\t}\n\n\tif (options.margin.bottom) {\n\t\tresult += NEWLINE.repeat(options.margin.bottom);\n\t}\n\n\treturn result;\n};\n\nconst sanitizeOptions = options => {\n\t// If fullscreen is enabled, max-out unspecified width/height\n\tif (options.fullscreen && process?.stdout) {\n\t\tlet newDimensions = [process.stdout.columns, process.stdout.rows];\n\n\t\tif (typeof options.fullscreen === 'function') {\n\t\t\tnewDimensions = options.fullscreen(...newDimensions);\n\t\t}\n\n\t\toptions.width ||= newDimensions[0];\n\n\t\toptions.height ||= newDimensions[1];\n\t}\n\n\t// If width is provided, make sure it's not below 1\n\toptions.width &&= Math.max(1, options.width - getBorderWidth(options.borderStyle));\n\n\t// If height is provided, make sure it's not below 1\n\toptions.height &&= Math.max(1, options.height - getBorderWidth(options.borderStyle));\n\n\treturn options;\n};\n\nconst formatTitle = (title, borderStyle) => borderStyle === NONE ? title : ` ${title} `;\n\nconst determineDimensions = (text, options) => {\n\toptions = sanitizeOptions(options);\n\tconst widthOverride = options.width !== undefined;\n\tconst columns = terminalColumns();\n\tconst borderWidth = getBorderWidth(options.borderStyle);\n\tconst maxWidth = columns - options.margin.left - options.margin.right - borderWidth;\n\n\tconst widest = widestLine(wrapAnsi(text, columns - borderWidth, {hard: true, trim: false})) + options.padding.left + options.padding.right;\n\n\t// If title and width are provided, title adheres to fixed width\n\tif (options.title && widthOverride) {\n\t\toptions.title = options.title.slice(0, Math.max(0, options.width - 2));\n\t\toptions.title &&= formatTitle(options.title, options.borderStyle);\n\t} else if (options.title) {\n\t\toptions.title = options.title.slice(0, Math.max(0, maxWidth - 2));\n\n\t\t// Recheck if title isn't empty now\n\t\tif (options.title) {\n\t\t\toptions.title = formatTitle(options.title, options.borderStyle);\n\t\t\t// If the title is larger than content, box adheres to title width\n\t\t\tif (stringWidth(options.title) > widest) {\n\t\t\t\toptions.width = stringWidth(options.title);\n\t\t\t}\n\t\t}\n\t}\n\n\t// If fixed width is provided, use it or content width as reference\n\toptions.width ||= widest;\n\n\tif (!widthOverride) {\n\t\tif ((options.margin.left && options.margin.right) && options.width > maxWidth) {\n\t\t\t// Let's assume we have margins: left = 3, right = 5, in total = 8\n\t\t\tconst spaceForMargins = columns - options.width - borderWidth;\n\t\t\t// Let's assume we have space = 4\n\t\t\tconst multiplier = spaceForMargins / (options.margin.left + options.margin.right);\n\t\t\t// Here: multiplier = 4/8 = 0.5\n\t\t\toptions.margin.left = Math.max(0, Math.floor(options.margin.left * multiplier));\n\t\t\toptions.margin.right = Math.max(0, Math.floor(options.margin.right * multiplier));\n\t\t\t// Left: 3 * 0.5 = 1.5 -> 1\n\t\t\t// Right: 6 * 0.5 = 3\n\t\t}\n\n\t\t// Re-cap width considering the margins after shrinking\n\t\toptions.width = Math.min(options.width, columns - borderWidth - options.margin.left - options.margin.right);\n\t}\n\n\t// Prevent padding overflow\n\tif (options.width - (options.padding.left + options.padding.right) <= 0) {\n\t\toptions.padding.left = 0;\n\t\toptions.padding.right = 0;\n\t}\n\n\tif (options.height && options.height - (options.padding.top + options.padding.bottom) <= 0) {\n\t\toptions.padding.top = 0;\n\t\toptions.padding.bottom = 0;\n\t}\n\n\treturn options;\n};\n\nconst isHex = color => color.match(/^#(?:[0-f]{3}){1,2}$/i);\nconst isColorValid = color => typeof color === 'string' && (chalk[color] ?? isHex(color));\nconst getColorFunction = color => isHex(color) ? chalk.hex(color) : chalk[color];\nconst getBGColorFunction = color => isHex(color) ? chalk.bgHex(color) : chalk[camelCase(['bg', color])];\n\nexport default function boxen(text, options) {\n\toptions = {\n\t\tpadding: 0,\n\t\tborderStyle: 'single',\n\t\tdimBorder: false,\n\t\ttextAlignment: 'left',\n\t\tfloat: 'left',\n\t\ttitleAlignment: 'left',\n\t\t...options,\n\t};\n\n\t// This option is deprecated\n\tif (options.align) {\n\t\toptions.textAlignment = options.align;\n\t}\n\n\tif (options.borderColor && !isColorValid(options.borderColor)) {\n\t\tthrow new Error(`${options.borderColor} is not a valid borderColor`);\n\t}\n\n\tif (options.backgroundColor && !isColorValid(options.backgroundColor)) {\n\t\tthrow new Error(`${options.backgroundColor} is not a valid backgroundColor`);\n\t}\n\n\toptions.padding = getObject(options.padding);\n\toptions.margin = getObject(options.margin);\n\n\toptions = determineDimensions(text, options);\n\n\ttext = makeContentText(text, options);\n\n\treturn boxContent(text, options.width, options);\n}\n\nexport {default as _borderStyles} from 'cli-boxes';\n","import {env} from 'node:process';\n\nconst isInCi = env.CI !== '0'\n\t&& env.CI !== 'false'\n\t&& (\n\t\t'CI' in env\n\t\t\t|| 'CONTINUOUS_INTEGRATION' in env\n\t\t\t|| Object.keys(env).some(key => key.startsWith('CI_'))\n\t);\n\nexport default isInCi;\n","const _htmlEscape = string => string\n\t.replace(/&/g, '&amp;')\n\t.replace(/\"/g, '&quot;')\n\t.replace(/'/g, '&#39;')\n\t.replace(/</g, '&lt;')\n\t.replace(/>/g, '&gt;');\n\nconst _htmlUnescape = htmlString => htmlString\n\t.replace(/&gt;/g, '>')\n\t.replace(/&lt;/g, '<')\n\t.replace(/&#0?39;/g, '\\'')\n\t.replace(/&quot;/g, '\"')\n\t.replace(/&amp;/g, '&');\n\nexport function htmlEscape(strings, ...values) {\n\tif (typeof strings === 'string') {\n\t\treturn _htmlEscape(strings);\n\t}\n\n\tlet output = strings[0];\n\tfor (const [index, value] of values.entries()) {\n\t\toutput = output + _htmlEscape(String(value)) + strings[index + 1];\n\t}\n\n\treturn output;\n}\n\nexport function htmlUnescape(strings, ...values) {\n\tif (typeof strings === 'string') {\n\t\treturn _htmlUnescape(strings);\n\t}\n\n\tlet output = strings[0];\n\tfor (const [index, value] of values.entries()) {\n\t\toutput = output + _htmlUnescape(String(value)) + strings[index + 1];\n\t}\n\n\treturn output;\n}\n","import {htmlEscape} from 'escape-goat';\n\nexport class MissingValueError extends Error {\n\tconstructor(key) {\n\t\tsuper(`Missing a value for ${key ? `the placeholder: ${key}` : 'a placeholder'}`, key);\n\t\tthis.name = 'MissingValueError';\n\t\tthis.key = key;\n\t}\n}\n\nexport class MissingFilterError extends Error {\n\tconstructor(filterName) {\n\t\tsuper(`Missing filter: ${filterName}`);\n\t\tthis.name = 'MissingFilterError';\n\t\tthis.filterName = filterName;\n\t}\n}\n\nexport default function pupa(template, data, {ignoreMissing = false, transform = ({value}) => value, filters = {}} = {}) {\n\tif (typeof template !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\` in the first argument, got \\`${typeof template}\\``);\n\t}\n\n\tif (typeof data !== 'object') {\n\t\tthrow new TypeError(`Expected an \\`object\\` or \\`Array\\` in the second argument, got \\`${typeof data}\\``);\n\t}\n\n\t// Handle escape sequences for literal braces\n\tconst escapedLeftBrace = '\\uE000\\uE001\\uE002'; // Private use characters as temporary marker\n\tconst escapedRightBrace = '\\uE003\\uE004\\uE005'; // Private use characters as temporary marker\n\n\ttemplate = template.replace(/\\\\{/g, escapedLeftBrace);\n\ttemplate = template.replace(/\\\\}/g, escapedRightBrace);\n\n\tconst parseKeyPath = key => {\n\t\tconst segments = [];\n\t\tlet segment = '';\n\n\t\tfor (let index = 0; index < key.length; index++) {\n\t\t\tif (key[index] === '\\\\' && key[index + 1] === '.') {\n\t\t\t\tsegment += '.';\n\t\t\t\tindex++; // Skip escaped dot\n\t\t\t} else if (key[index] === '.') {\n\t\t\t\tsegments.push(segment);\n\t\t\t\tsegment = '';\n\t\t\t} else {\n\t\t\t\tsegment += key[index];\n\t\t\t}\n\t\t}\n\n\t\tsegments.push(segment);\n\t\treturn segments;\n\t};\n\n\tconst replace = (placeholder, keyWithFilters) => {\n\t\t// Parse filters from the key (e.g., \"name | capitalize | upper\")\n\t\tconst parts = keyWithFilters.split('|').map(part => part.trim());\n\t\tconst key = parts[0];\n\t\tconst filterChain = parts.slice(1);\n\n\t\t// Navigate object path\n\t\tconst segments = parseKeyPath(key);\n\t\tlet value = data;\n\t\tfor (const property of segments) {\n\t\t\t/// value = value?.[property];\n\n\t\t\tif (value) {\n\t\t\t\tvalue = value[property];\n\t\t\t}\n\t\t}\n\n\t\t// Apply filters\n\t\tfor (const filterName of filterChain) {\n\t\t\tconst filter = filters[filterName];\n\n\t\t\tif (!filter) {\n\t\t\t\tif (ignoreMissing) {\n\t\t\t\t\treturn placeholder;\n\t\t\t\t}\n\n\t\t\t\tthrow new MissingFilterError(filterName);\n\t\t\t}\n\n\t\t\tif (value !== undefined) {\n\t\t\t\tvalue = filter(value);\n\t\t\t}\n\t\t}\n\n\t\tconst transformedValue = transform({value, key});\n\t\tif (transformedValue === undefined) {\n\t\t\tif (ignoreMissing) {\n\t\t\t\treturn placeholder;\n\t\t\t}\n\n\t\t\tthrow new MissingValueError(key);\n\t\t}\n\n\t\treturn String(transformedValue);\n\t};\n\n\t// ReDoS-safe regex to capture keys with optional filters\n\t// Matches: {key} or {key | filter} or {key | filter1 | filter2}\n\tconst keyPattern = '(\\\\d+|[a-z$_][\\\\w\\\\-.$\\\\\\\\]*)';\n\tconst filterPattern = '(?:\\\\|\\\\s*[a-z$_][\\\\w$]*\\\\s*)*';\n\tconst keyWithFiltersPattern = `(${keyPattern}\\\\s*${filterPattern})`;\n\n\tconst doubleBraceRegex = new RegExp(`{{${keyWithFiltersPattern}}}`, 'gi');\n\tconst singleBraceRegex = new RegExp(`{${keyWithFiltersPattern}}`, 'gi');\n\n\ttemplate = template.replace(doubleBraceRegex, (...arguments_) => htmlEscape(replace(...arguments_)));\n\n\ttemplate = template.replace(singleBraceRegex, replace);\n\n\t// Replace temporary markers with literal braces\n\ttemplate = template.replace(new RegExp(escapedLeftBrace, 'g'), '{');\n\ttemplate = template.replace(new RegExp(escapedRightBrace, 'g'), '}');\n\n\treturn template;\n}\n","import process from 'node:process';\nimport {spawn} from 'node:child_process';\nimport {fileURLToPath} from 'node:url';\nimport path from 'node:path';\nimport {format} from 'node:util';\nimport ConfigStore from 'configstore';\nimport chalk from 'chalk';\n// Only import what we need for performance\nimport semverDiff from 'semver/functions/diff.js';\nimport semverGt from 'semver/functions/gt.js';\nimport latestVersion from 'latest-version';\nimport {isNpmOrYarn} from 'is-npm';\nimport isInstalledGlobally from 'is-installed-globally';\nimport boxen from 'boxen';\nimport {xdgConfig} from 'xdg-basedir';\nimport isInCi from 'is-in-ci';\nimport pupa from 'pupa';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst ONE_DAY = 1000 * 60 * 60 * 24;\n\nexport default class UpdateNotifier {\n\t// Public\n\tconfig;\n\tupdate;\n\n\t// Semi-private (used for tests)\n\t_packageName; // eslint-disable-line lines-between-class-members\n\t_shouldNotifyInNpmScript;\n\n\t#options; // eslint-disable-line lines-between-class-members\n\t#packageVersion;\n\t#updateCheckInterval;\n\t#isDisabled;\n\n\tconstructor(options = {}) {\n\t\tthis.#options = options;\n\t\toptions.pkg ??= {};\n\t\toptions.distTag ??= 'latest';\n\n\t\t// Reduce pkg to the essential keys. with fallback to deprecated options\n\t\t// TODO: Remove deprecated options at some point far into the future\n\t\toptions.pkg = {\n\t\t\tname: options.pkg.name ?? options.packageName,\n\t\t\tversion: options.pkg.version ?? options.packageVersion,\n\t\t};\n\n\t\tif (!options.pkg.name || !options.pkg.version) {\n\t\t\tthrow new Error('pkg.name and pkg.version required');\n\t\t}\n\n\t\tthis._packageName = options.pkg.name;\n\t\tthis.#packageVersion = options.pkg.version;\n\t\tthis.#updateCheckInterval = typeof options.updateCheckInterval === 'number' ? options.updateCheckInterval : ONE_DAY;\n\t\tthis.#isDisabled = 'NO_UPDATE_NOTIFIER' in process.env\n\t\t\t|| process.env.NODE_ENV === 'test'\n\t\t\t|| process.argv.includes('--no-update-notifier')\n\t\t\t|| isInCi;\n\t\tthis._shouldNotifyInNpmScript = options.shouldNotifyInNpmScript;\n\n\t\tif (!this.#isDisabled) {\n\t\t\ttry {\n\t\t\t\tthis.config = new ConfigStore(`update-notifier-${this._packageName}`, {\n\t\t\t\t\toptOut: false,\n\t\t\t\t\t// Init with the current time so the first check is only\n\t\t\t\t\t// after the set interval, so not to bother users right away\n\t\t\t\t\tlastUpdateCheck: Date.now(),\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\t// Expecting error code EACCES or EPERM\n\t\t\t\tconst message\n\t\t\t\t\t= chalk.yellow(format(' %s update check failed ', options.pkg.name))\n\t\t\t\t\t+ format('\\n Try running with %s or get access ', chalk.cyan('sudo'))\n\t\t\t\t\t+ '\\n to the local update config store via \\n'\n\t\t\t\t\t+ chalk.cyan(format(' sudo chown -R $USER:$(id -gn $USER) %s ', xdgConfig));\n\n\t\t\t\tprocess.on('exit', () => {\n\t\t\t\t\tconsole.error(boxen(message, {textAlignment: 'center'}));\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tcheck() {\n\t\tif (\n\t\t\t!this.config\n\t\t\t|| this.config.get('optOut')\n\t\t\t|| this.#isDisabled\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.update = this.config.get('update');\n\n\t\tif (this.update) {\n\t\t\t// Use the real latest version instead of the cached one\n\t\t\tthis.update.current = this.#packageVersion;\n\n\t\t\t// Clear cached information\n\t\t\tthis.config.delete('update');\n\t\t}\n\n\t\t// Only check for updates on a set interval\n\t\tif (Date.now() - this.config.get('lastUpdateCheck') < this.#updateCheckInterval) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Spawn a detached process, passing the options as an environment property\n\t\tspawn(process.execPath, [path.join(__dirname, 'check.js'), JSON.stringify(this.#options)], {\n\t\t\tdetached: true,\n\t\t\tstdio: 'ignore',\n\t\t}).unref();\n\t}\n\n\tasync fetchInfo() {\n\t\tconst {distTag} = this.#options;\n\t\tconst latest = await latestVersion(this._packageName, {version: distTag});\n\n\t\treturn {\n\t\t\tlatest,\n\t\t\tcurrent: this.#packageVersion,\n\t\t\ttype: semverDiff(this.#packageVersion, latest) ?? distTag,\n\t\t\tname: this._packageName,\n\t\t};\n\t}\n\n\tnotify(options) {\n\t\tconst suppressForNpm = !this._shouldNotifyInNpmScript && isNpmOrYarn;\n\t\tif (!process.stdout.isTTY || suppressForNpm || !this.update || !semverGt(this.update.latest, this.update.current)) {\n\t\t\treturn this;\n\t\t}\n\n\t\toptions = {\n\t\t\tisGlobal: isInstalledGlobally,\n\t\t\t...options,\n\t\t};\n\n\t\tconst installCommand = options.isGlobal ? `npm i -g ${this._packageName}` : `npm i ${this._packageName}`;\n\n\t\tconst defaultTemplate = 'Update available '\n\t\t\t+ chalk.dim('{currentVersion}')\n\t\t\t+ chalk.reset(' → ')\n\t\t\t+ chalk.green('{latestVersion}')\n\t\t\t+ ' \\nRun ' + chalk.cyan('{updateCommand}') + ' to update';\n\n\t\tconst template = options.message || defaultTemplate;\n\n\t\toptions.boxenOptions ??= {\n\t\t\tpadding: 1,\n\t\t\tmargin: 1,\n\t\t\ttextAlignment: 'center',\n\t\t\tborderColor: 'yellow',\n\t\t\tborderStyle: 'round',\n\t\t};\n\n\t\tconst message = boxen(\n\t\t\tpupa(template, {\n\t\t\t\tpackageName: this._packageName,\n\t\t\t\tcurrentVersion: this.update.current,\n\t\t\t\tlatestVersion: this.update.latest,\n\t\t\t\tupdateCommand: installCommand,\n\t\t\t}),\n\t\t\toptions.boxenOptions,\n\t\t);\n\n\t\tif (options.defer === false) {\n\t\t\tconsole.error(message);\n\t\t} else {\n\t\t\tprocess.on('exit', () => {\n\t\t\t\tconsole.error(message);\n\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n}\n","import UpdateNotifier from './update-notifier.js';\n\nexport default function updateNotifier(options) {\n\tconst updateNotifier = new UpdateNotifier(options);\n\tupdateNotifier.check();\n\treturn updateNotifier;\n}\n","#!/usr/bin/env node\nimport { Help, Option, program } from 'commander'\nimport createCloneDeep from 'rfdc'\nimport semver from 'semver'\nimport updateNotifier from 'update-notifier'\nimport pkg from '../../package.json'\nimport cliOptions, { renderExtendedHelp } from '../cli-options'\nimport ncu from '../index'\nimport { chalkInit, getChalk } from '../lib/chalk'\n// async global contexts are only available in esm modules -> function\nimport getNcuRc from '../lib/getNcuRc'\nimport { pickBy } from '../lib/pick'\n\nconst optionVersionDescription = 'Output the version number of npm-check-updates.'\n\n/** Removes inline code ticks. */\nconst uncode = (s: string) => s.replace(/`/g, '')\n\nconst cloneDeep = createCloneDeep()\n\n;(async () => {\n  // check if a new version of ncu is available and print an update notification\n  //\n  // For testing from specific versions, use:\n  //\n  // updateNotifier({\n  //   pkg: {\n  //     name: 'npm-check-updates',\n  //     version: x.y.z\n  //   },\n  //   updateCheckInterval: 0\n  // })\n\n  const notifier = updateNotifier({ pkg })\n  if (notifier.update && notifier.update.latest !== pkg.version) {\n    const chalk = getChalk(true)\n\n    // generate release urls for all the major versions from the current version up to the latest\n    const currentMajor = semver.parse(notifier.update.current)?.major\n    const latestMajor = semver.parse(notifier.update.latest)?.major\n    const majorVersions =\n      // Greater than or equal to (>=) will always return false if either operant is NaN or undefined.\n      // Without this condition, it can result in a RangeError: Invalid array length.\n      // See: https://github.com/raineorshine/npm-check-updates/issues/1200\n      currentMajor && latestMajor && latestMajor >= currentMajor\n        ? new Array(latestMajor - currentMajor).fill(0).map((x, i) => currentMajor + i + 1)\n        : []\n    const releaseUrls = majorVersions.map(majorVersion => `${pkg.homepage ?? ''}/releases/tag/v${majorVersion}.0.0`)\n\n    // for non-major updates, generate a URL to view all commits since the current version\n    const compareUrl = `${pkg.homepage ?? ''}/compare/v${notifier.update.current}...v${notifier.update.latest}`\n\n    notifier.notify({\n      defer: false,\n      isGlobal: true,\n      message: `Update available ${chalk.dim('{currentVersion}')}${chalk.reset(' → ')}${\n        notifier.update.type === 'major'\n          ? chalk.red('{latestVersion}')\n          : notifier.update.type === 'minor'\n            ? chalk.yellow('{latestVersion}')\n            : chalk.green('{latestVersion}')\n      }\nRun ${chalk.cyan('{updateCommand}')} to update\n${chalk.dim.underline(\n  notifier.update.type === 'major' ? releaseUrls.map(url => chalk.dim.underline(url)).join('\\n') : compareUrl,\n)}`,\n    })\n  }\n\n  // manually detect option-specific help\n  // https://github.com/raineorshine/npm-check-updates/issues/787\n  const rawArgs = process.argv.slice(2)\n  const indexHelp = rawArgs.findIndex(arg => arg === '--help' || arg === '-h')\n  if (indexHelp !== -1 && rawArgs[indexHelp + 1]) {\n    const helpOption = rawArgs[indexHelp + 1].replace(/^-*/, '')\n    if (helpOption === 'help' || helpOption === 'h') {\n      console.info('Would you like some help with your help?')\n    } else {\n      await chalkInit()\n      const nonHelpArgs = [...rawArgs.slice(0, indexHelp), ...rawArgs.slice(indexHelp + 1)]\n      nonHelpArgs.forEach(arg => {\n        // match option by long or short\n        const query = arg.replace(/^-*/, '')\n        const option = cliOptions.find(\n          option =>\n            query === option.long ||\n            query === option.short ||\n            (query === `no-${option.long}` && option.type === 'boolean'),\n        )\n        if (option) {\n          console.info(renderExtendedHelp(option) + '\\n')\n        } else if (query === 'version' || query === 'v' || query === 'V') {\n          console.info(\n            renderExtendedHelp({\n              long: 'version',\n              short: 'v',\n              description: optionVersionDescription,\n              // do not pass boolean or it will print --no-version\n              type: 'string',\n            }) + '\\n',\n          )\n        } else {\n          console.info(`Unknown option: ${arg}`)\n        }\n      })\n    }\n    process.exit(0)\n  }\n\n  // a set of options that only work in an rc config file, not on the command line\n  const noCli = new Set(cliOptions.filter(option => option.cli === false).map(option => `--${option.long}`))\n\n  // start commander program\n  program\n    .description('[filter] is a list or regex of package names to check (all others will be ignored).')\n    .usage('[options] [filter]')\n    // See: boolean optional arg below\n    .configureHelp({\n      optionTerm: option =>\n        option.long && noCli.has(option.long)\n          ? option.long.replace('--', '') + '*'\n          : option.long === '--version'\n            ? // add -v to version help to cover the alias added below\n              '-v, -V, --version'\n            : option.flags.replace('[bool]', ''),\n      optionDescription: option =>\n        option.long === '--version'\n          ? optionVersionDescription\n          : option.long === '--help'\n            ? `You're lookin' at it. Run \"ncu --help <option>\" for a specific option.`\n            : Help.prototype.optionDescription(option),\n    })\n    // add hidden -v alias for --V/--version\n    .addOption(new Option('-v, --versionAlias').hideHelp())\n    .on('option:versionAlias', () => {\n      console.info(pkg.version)\n      process.exit(0)\n    })\n\n  // add cli options\n  cliOptions.forEach(({ long, short, arg, description, default: defaultValue, help, parse, type }) => {\n    const flags = `${short ? `-${short}, ` : ''}--${long}${arg ? ` <${arg}>` : ''}`\n    // format description for cli by removing inline code ticks\n    // point to help in description if extended help text is available\n    const descriptionFormatted = `${uncode(description)}${help ? ` Run \"ncu --help ${long}\" for details.` : ''}`\n\n    // handle 3rd/4th argument polymorphism\n    program.option(flags, descriptionFormatted, parse || defaultValue, parse ? defaultValue : undefined)\n\n    // add --no- prefixed boolean options\n    // necessary for overriding booleans set to true in the ncurc\n    if (type === 'boolean') {\n      program.addOption(new Option(`--no-${long}`).default(false).hideHelp())\n    }\n  })\n\n  // set version option at the end\n  program.version(pkg.version)\n\n  // commander mutates its optionValues with program.parse\n  // In order to call program.parse again and parse the rc file options, we need to clear commander's internal optionValues\n  // Otherwise array options will be duplicated\n  const defaultOptionValues = cloneDeep((program as any)._optionValues)\n  program.allowExcessArguments(true)\n  program.parse(process.argv)\n\n  const programOpts = program.opts()\n  const programArgs = process.argv.slice(2)\n\n  const { color, configFileName, configFilePath, global, packageFile, mergeConfig } = programOpts\n\n  // Force color on all chalk instances.\n  // See: /src/lib/chalk.ts\n  await chalkInit(color)\n\n  // load .ncurc\n  // Do not load when tests are running (can be overridden if configFilePath is set explicitly, or --mergeConfig option specified)\n  const rcResult =\n    !process.env.NCU_TESTS || configFilePath || mergeConfig\n      ? await getNcuRc({\n          configFileName,\n          configFilePath,\n          global,\n          packageFile,\n          options: { ...programOpts, cli: true },\n        })\n      : null\n\n  // override rc args with program args\n  const rcArgs = (rcResult?.args || []).filter(\n    (arg, i, args) =>\n      (typeof arg !== 'string' || !arg.startsWith('-') || !programArgs.includes(arg)) &&\n      (typeof args[i - 1] !== 'string' || !args[i - 1].startsWith('-') || !programArgs.includes(args[i - 1])),\n  )\n\n  // insert config arguments into command line arguments so they can all be parsed by commander\n  const combinedArguments = [...process.argv.slice(0, 2), ...rcArgs, ...programArgs]\n\n  // See defaultOptionValues comment above\n  ;(program as any)._optionValues = defaultOptionValues\n  program.parse(combinedArguments)\n  const combinedProgramOpts = program.opts()\n\n  // filter out undefined program options and combine cli options with config file options\n  const options = {\n    ...(rcResult && Object.keys(rcResult.config).length > 0 ? { rcConfigPath: rcResult.filePath } : null),\n    ...pickBy(program.opts(), (value: unknown) => value !== undefined),\n    args: program.args,\n    ...(combinedProgramOpts.filter ? { filter: combinedProgramOpts.filter } : null),\n    ...(combinedProgramOpts.reject ? { reject: combinedProgramOpts.reject } : null),\n  }\n\n  // NOTE: Options handling and defaults go in initOptions in index.js\n\n  ncu(options, { cli: true })\n})()\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102],"mappings":"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AM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QC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"}