unifai 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +106 -0
- package/dist/adapters/antigravity.d.ts +24 -0
- package/dist/adapters/antigravity.d.ts.map +1 -0
- package/dist/adapters/base.d.ts +60 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/claude.d.ts +25 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/copilot.d.ts +25 -0
- package/dist/adapters/copilot.d.ts.map +1 -0
- package/dist/adapters/cursor.d.ts +30 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/index.d.ts +39 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/opencode.d.ts +25 -0
- package/dist/adapters/opencode.d.ts.map +1 -0
- package/dist/chunk-63EFN7CX.js +450 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +14908 -0
- package/dist/cli.js.map +97 -0
- package/dist/commands/agent.d.ts +34 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/init.d.ts +16 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/install.d.ts +8 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/list.d.ts +8 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/mcp.d.ts +40 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/remove.d.ts +8 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/sync.d.ts +19 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/tui.d.ts +14 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/data/prompts.d.ts +36 -0
- package/dist/data/prompts.d.ts.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10648 -0
- package/dist/index.js.map +82 -0
- package/dist/openskill-ai.exe +0 -0
- package/dist/registry.d.ts +38 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/types/config.d.ts +103 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/agents.d.ts +15 -0
- package/dist/utils/agents.d.ts.map +1 -0
- package/dist/utils/fs-helpers.d.ts +29 -0
- package/dist/utils/fs-helpers.d.ts.map +1 -0
- package/dist/utils/git.d.ts +23 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/installer.d.ts +37 -0
- package/dist/utils/installer.d.ts.map +1 -0
- package/dist/utils/project-detector.d.ts +23 -0
- package/dist/utils/project-detector.d.ts.map +1 -0
- package/dist/utils/readme-generator.d.ts +9 -0
- package/dist/utils/readme-generator.d.ts.map +1 -0
- package/dist/utils/skills.d.ts +11 -0
- package/dist/utils/skills.d.ts.map +1 -0
- package/package.json +78 -0
- package/skills/skill-writer-skills/AGENTS.md +637 -0
- package/skills/skill-writer-skills/README.md +49 -0
- package/skills/skill-writer-skills/SKILL.md +97 -0
- package/skills/skill-writer-skills/metadata.json +17 -0
- package/skills/skill-writer-skills/references/common-pitfalls.md +291 -0
- package/skills/skill-writer-skills/references/core-principles.md +147 -0
- package/skills/skill-writer-skills/references/creation-process.md +250 -0
- package/skills/skill-writer-skills/references/design-patterns.md +300 -0
- package/skills/skill-writer-skills/references/skill-anatomy.md +174 -0
- package/skills/skill-writer-skills/references/validation-checklist.md +194 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"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\\sisteransi\\src\\index.js", "..\\node_modules\\picocolors\\picocolors.js", "..\\node_modules\\@clack\\core\\dist\\index.mjs", "..\\node_modules\\@clack\\prompts\\dist\\index.mjs", "..\\node_modules\\chalk\\source\\vendor\\ansi-styles\\index.js", "..\\node_modules\\chalk\\source\\vendor\\supports-color\\index.js", "..\\node_modules\\chalk\\source\\utilities.js", "..\\node_modules\\chalk\\source\\index.js", "..\\node_modules\\ms\\index.js", "..\\node_modules\\debug\\src\\common.js", "..\\node_modules\\debug\\src\\browser.js", "..\\node_modules\\debug\\src\\node.js", "..\\node_modules\\debug\\src\\index.js", "..\\node_modules\\@kwsites\\file-exists\\dist\\src\\index.js", "..\\node_modules\\@kwsites\\file-exists\\dist\\index.js", "..\\node_modules\\@kwsites\\promise-deferred\\dist\\index.js", "..\\node_modules\\simple-git\\dist\\esm\\index.js", "..\\src\\utils\\git.ts", "..\\node_modules\\kind-of\\index.js", "..\\node_modules\\is-extendable\\index.js", "..\\node_modules\\extend-shallow\\index.js", "..\\node_modules\\section-matter\\index.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\common.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\exception.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\mark.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\schema.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\str.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\seq.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\map.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\schema\\failsafe.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\null.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\bool.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\int.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\float.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\schema\\json.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\schema\\core.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\timestamp.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\merge.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\binary.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\omap.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\pairs.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\set.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\schema\\default_safe.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\js\\undefined.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\js\\regexp.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\type\\js\\function.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\schema\\default_full.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\loader.js", "..\\node_modules\\js-yaml\\lib\\js-yaml\\dumper.js", "..\\node_modules\\js-yaml\\lib\\js-yaml.js", "..\\node_modules\\js-yaml\\index.js", "..\\node_modules\\gray-matter\\lib\\engines.js", "..\\node_modules\\strip-bom-string\\index.js", "..\\node_modules\\gray-matter\\lib\\utils.js", "..\\node_modules\\gray-matter\\lib\\defaults.js", "..\\node_modules\\gray-matter\\lib\\engine.js", "..\\node_modules\\gray-matter\\lib\\stringify.js", "..\\node_modules\\gray-matter\\lib\\excerpt.js", "..\\node_modules\\gray-matter\\lib\\to-file.js", "..\\node_modules\\gray-matter\\lib\\parse.js", "..\\node_modules\\gray-matter\\index.js", "..\\src\\utils\\skills.ts", "..\\src\\utils\\agents.ts", "..\\src\\utils\\installer.ts", "..\\src\\utils\\project-detector.ts", "..\\src\\commands\\init.ts", "..\\src\\commands\\tui.ts", "..\\src\\adapters\\base.ts", "..\\src\\data\\prompts.ts", "..\\src\\adapters\\claude.ts", "..\\src\\adapters\\opencode.ts", "..\\src\\adapters\\cursor.ts", "..\\src\\adapters\\copilot.ts", "..\\src\\adapters\\antigravity.ts", "..\\src\\adapters\\index.ts", "..\\src\\commands\\agent.ts", "..\\src\\commands\\mcp.ts", "..\\src\\commands\\sync.ts", "..\\node_modules\\commander\\esm.mjs", "..\\src\\cli.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * CommanderError class\n */\nclass CommanderError extends Error {\n /**\n * Constructs the CommanderError class\n * @param {number} exitCode suggested exit code which could be used with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n */\n constructor(exitCode, code, message) {\n super(message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n this.code = code;\n this.exitCode = exitCode;\n this.nestedError = undefined;\n }\n}\n\n/**\n * InvalidArgumentError class\n */\nclass InvalidArgumentError extends CommanderError {\n /**\n * Constructs the InvalidArgumentError class\n * @param {string} [message] explanation of why argument is invalid\n */\n constructor(message) {\n super(1, 'commander.invalidArgument', message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n }\n}\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\n",
|
|
6
|
+
"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.length > 3 && this._name.slice(-3) === '...') {\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 _concatValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n return previous.concat(value);\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._concatValue(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",
|
|
7
|
+
"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 return `${option.description} (${extraInfo.join(', ')})`;\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 * 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 if (argumentList.length > 0) {\n output = output.concat([\n helper.styleTitle('Arguments:'),\n ...argumentList,\n '',\n ]);\n }\n\n // Options\n const optionList = helper.visibleOptions(cmd).map((option) => {\n return callFormatItem(\n helper.styleOptionTerm(helper.optionTerm(option)),\n helper.styleOptionDescription(helper.optionDescription(option)),\n );\n });\n if (optionList.length > 0) {\n output = output.concat([\n helper.styleTitle('Options:'),\n ...optionList,\n '',\n ]);\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 if (globalOptionList.length > 0) {\n output = output.concat([\n helper.styleTitle('Global Options:'),\n ...globalOptionList,\n '',\n ]);\n }\n }\n\n // Commands\n const commandList = helper.visibleCommands(cmd).map((cmd) => {\n return callFormatItem(\n helper.styleSubcommandTerm(helper.subcommandTerm(cmd)),\n helper.styleSubcommandDescription(helper.subcommandDescription(cmd)),\n );\n });\n if (commandList.length > 0) {\n output = output.concat([\n helper.styleTitle('Commands:'),\n ...commandList,\n '',\n ]);\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",
|
|
8
|
+
"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 }\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 _concatValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n return previous.concat(value);\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._concatValue(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 * 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",
|
|
9
|
+
"const maxDistance = 3;\n\nfunction editDistance(a, b) {\n // https://en.wikipedia.org/wiki/Damerau–Levenshtein_distance\n // Calculating optimal string alignment distance, no substring is edited more than once.\n // (Simple implementation.)\n\n // Quick early exit, return worst case.\n if (Math.abs(a.length - b.length) > maxDistance)\n return Math.max(a.length, b.length);\n\n // distance between prefix substrings of a and b\n const d = [];\n\n // pure deletions turn a into empty string\n for (let i = 0; i <= a.length; i++) {\n d[i] = [i];\n }\n // pure insertions turn empty string into b\n for (let j = 0; j <= b.length; j++) {\n d[0][j] = j;\n }\n\n // fill matrix\n for (let j = 1; j <= b.length; j++) {\n for (let i = 1; i <= a.length; i++) {\n let cost = 1;\n if (a[i - 1] === b[j - 1]) {\n cost = 0;\n } else {\n cost = 1;\n }\n d[i][j] = Math.min(\n d[i - 1][j] + 1, // deletion\n d[i][j - 1] + 1, // insertion\n d[i - 1][j - 1] + cost, // substitution\n );\n // transposition\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1);\n }\n }\n }\n\n return d[a.length][b.length];\n}\n\n/**\n * Find close matches, restricted to same number of edits.\n *\n * @param {string} word\n * @param {string[]} candidates\n * @returns {string}\n */\n\nfunction suggestSimilar(word, candidates) {\n if (!candidates || candidates.length === 0) return '';\n // remove possible duplicates\n candidates = Array.from(new Set(candidates));\n\n const searchingOptions = word.startsWith('--');\n if (searchingOptions) {\n word = word.slice(2);\n candidates = candidates.map((candidate) => candidate.slice(2));\n }\n\n let similar = [];\n let bestDistance = maxDistance;\n const minSimilarity = 0.4;\n candidates.forEach((candidate) => {\n if (candidate.length <= 1) return; // no one character guesses\n\n const distance = editDistance(word, candidate);\n const length = Math.max(word.length, candidate.length);\n const similarity = (length - distance) / length;\n if (similarity > minSimilarity) {\n if (distance < bestDistance) {\n // better edit distance, throw away previous worse matches\n bestDistance = distance;\n similar = [candidate];\n } else if (distance === bestDistance) {\n similar.push(candidate);\n }\n }\n });\n\n similar.sort((a, b) => a.localeCompare(b));\n if (searchingOptions) {\n similar = similar.map((candidate) => `--${candidate}`);\n }\n\n if (similar.length > 1) {\n return `\\n(Did you mean one of ${similar.join(', ')}?)`;\n }\n if (similar.length === 1) {\n return `\\n(Did you mean ${similar[0]}?)`;\n }\n return '';\n}\n\nexports.suggestSimilar = suggestSimilar;\n",
|
|
10
|
+
"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 }\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 Object.assign(this._outputConfiguration, configuration);\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|*)} [fn] - custom argument processing function\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n argument(name, description, fn, defaultValue) {\n const argument = this.createArgument(name, description);\n if (typeof fn === 'function') {\n argument.default(defaultValue).argParser(fn);\n } else {\n argument.default(fn);\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 && 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 return this;\n }\n\n enableOrNameAndArgs = enableOrNameAndArgs ?? 'help [command]';\n const [, helpName, helpArgs] = enableOrNameAndArgs.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\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 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.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.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._concatValue(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 && 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 && 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[]} argv\n * @return {{operands: string[], unknown: string[]}}\n */\n\n parseOptions(argv) {\n const operands = []; // operands, not options or values\n const unknown = []; // first unknown option and remaining unknown args\n let dest = operands;\n const args = argv.slice();\n\n function maybeOption(arg) {\n return arg.length > 1 && arg[0] === '-';\n }\n\n // parse options\n let activeVariadicOption = null;\n while (args.length) {\n const arg = args.shift();\n\n // literal\n if (arg === '--') {\n if (dest === unknown) dest.push(arg);\n dest.push(...args);\n break;\n }\n\n if (activeVariadicOption && !maybeOption(arg)) {\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.shift();\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 (args.length > 0 && !maybeOption(args[0])) {\n value = args.shift();\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, emit and put back remainder of arg for further processing\n this.emit(`option:${option.name()}`);\n args.unshift(`-${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 if (maybeOption(arg)) {\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 if (args.length > 0) unknown.push(...args);\n break;\n } else if (\n this._getHelpCommand() &&\n arg === this._getHelpCommand().name()\n ) {\n operands.push(arg);\n if (args.length > 0) operands.push(...args);\n break;\n } else if (this._defaultCommandName) {\n unknown.push(arg);\n if (args.length > 0) unknown.push(...args);\n break;\n }\n }\n\n // If using passThroughOptions, stop processing options at first command-argument.\n if (this._passThroughOptions) {\n dest.push(arg);\n if (args.length > 0) dest.push(...args);\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 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 disabling built-in help option.\n if (typeof flags === 'boolean') {\n // true is not an expected value. Do something sensible but no unit-test.\n // istanbul ignore if\n if (flags) {\n this._helpOption = this._helpOption ?? undefined; // preserve existing option\n } else {\n this._helpOption = null; // disable\n }\n return this;\n }\n\n // Customise flags and description.\n flags = flags ?? '-h, --help';\n description = description ?? 'display help for command';\n this._helpOption = this.createOption(flags, description);\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 return this;\n }\n\n /**\n * Output help information and exit.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n help(contextOptions) {\n this.outputHelp(contextOptions);\n let exitCode = Number(process.exitCode ?? 0); // process.exitCode does allow a string or an integer, but we prefer just a number\n if (\n exitCode === 0 &&\n contextOptions &&\n typeof contextOptions !== 'function' &&\n contextOptions.error\n ) {\n exitCode = 1;\n }\n // message: do not have all displayed text available so only passing placeholder.\n this._exit(exitCode, 'commander.help', '(outputHelp)');\n }\n\n /**\n * // Do a little typing to coordinate emit and listener for the help text events.\n * @typedef HelpTextEventContext\n * @type {object}\n * @property {boolean} error\n * @property {Command} command\n * @property {function} write\n */\n\n /**\n * Add additional text to be displayed with the built-in help.\n *\n * Position is 'before' or 'after' to affect just this command,\n * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.\n *\n * @param {string} position - before or after built-in help\n * @param {(string | Function)} text - string to add, or a function returning a string\n * @return {Command} `this` command for chaining\n */\n\n addHelpText(position, text) {\n const allowedValues = ['beforeAll', 'before', 'after', 'afterAll'];\n if (!allowedValues.includes(position)) {\n throw new Error(`Unexpected value for position to addHelpText.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n\n const helpEvent = `${position}Help`;\n this.on(helpEvent, (/** @type {HelpTextEventContext} */ context) => {\n let helpStr;\n if (typeof text === 'function') {\n helpStr = text({ error: context.error, command: context.command });\n } else {\n helpStr = text;\n }\n // Ignore falsy value when nothing to output.\n if (helpStr) {\n context.write(`${helpStr}\\n`);\n }\n });\n return this;\n }\n\n /**\n * Output help information if help flags specified\n *\n * @param {Array} args - array of options to search for help flags\n * @private\n */\n\n _outputHelpIfRequested(args) {\n const helpOption = this._getHelpOption();\n const helpRequested = helpOption && args.find((arg) => helpOption.is(arg));\n if (helpRequested) {\n this.outputHelp();\n // (Do not have all displayed text available so only passing placeholder.)\n this._exit(0, 'commander.helpDisplayed', '(outputHelp)');\n }\n }\n}\n\n/**\n * Scan arguments and increment port number for inspect calls (to avoid conflicts when spawning new command).\n *\n * @param {string[]} args - array of arguments from node.execArgv\n * @returns {string[]}\n * @private\n */\n\nfunction incrementNodeInspectorPort(args) {\n // Testing for these options:\n // --inspect[=[host:]port]\n // --inspect-brk[=[host:]port]\n // --inspect-port=[host:]port\n return args.map((arg) => {\n if (!arg.startsWith('--inspect')) {\n return arg;\n }\n let debugOption;\n let debugHost = '127.0.0.1';\n let debugPort = '9229';\n let match;\n if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {\n // e.g. --inspect\n debugOption = match[1];\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null\n ) {\n debugOption = match[1];\n if (/^\\d+$/.test(match[3])) {\n // e.g. --inspect=1234\n debugPort = match[3];\n } else {\n // e.g. --inspect=localhost\n debugHost = match[3];\n }\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\\d+)$/)) !== null\n ) {\n // e.g. --inspect=localhost:1234\n debugOption = match[1];\n debugHost = match[3];\n debugPort = match[4];\n }\n\n if (debugOption && debugPort !== '0') {\n return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;\n }\n return arg;\n });\n}\n\n/**\n * @returns {boolean | undefined}\n * @package\n */\nfunction useColor() {\n // Test for common conventions.\n // NB: the observed behaviour is in combination with how author adds color! For example:\n // - we do not test NODE_DISABLE_COLORS, but util:styletext does\n // - we do test NO_COLOR, but Chalk does not\n //\n // References:\n // https://no-color.org\n // https://bixense.com/clicolors/\n // https://github.com/nodejs/node/blob/0a00217a5f67ef4a22384cfc80eb6dd9a917fdc1/lib/internal/tty.js#L109\n // https://github.com/chalk/supports-color/blob/c214314a14bcb174b12b3014b2b0a8de375029ae/index.js#L33\n // (https://force-color.org recent web page from 2023, does not match major javascript implementations)\n\n if (\n process.env.NO_COLOR ||\n process.env.FORCE_COLOR === '0' ||\n process.env.FORCE_COLOR === 'false'\n )\n return false;\n if (process.env.FORCE_COLOR || process.env.CLICOLOR_FORCE !== undefined)\n return true;\n return undefined;\n}\n\nexports.Command = Command;\nexports.useColor = useColor; // exporting for tests\n",
|
|
11
|
+
"const { Argument } = require('./lib/argument.js');\nconst { Command } = require('./lib/command.js');\nconst { CommanderError, InvalidArgumentError } = require('./lib/error.js');\nconst { Help } = require('./lib/help.js');\nconst { Option } = require('./lib/option.js');\n\nexports.program = new Command();\n\nexports.createCommand = (name) => new Command(name);\nexports.createOption = (flags, description) => new Option(flags, description);\nexports.createArgument = (name, description) => new Argument(name, description);\n\n/**\n * Expose classes\n */\n\nexports.Command = Command;\nexports.Option = Option;\nexports.Argument = Argument;\nexports.Help = Help;\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\nexports.InvalidOptionArgumentError = InvalidArgumentError; // Deprecated\n",
|
|
12
|
+
"'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n",
|
|
13
|
+
"let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n",
|
|
14
|
+
"import{cursor as l,erase as b}from\"sisteransi\";import{stdin as $,stdout as j}from\"node:process\";import*as f from\"node:readline\";import M from\"node:readline\";import{WriteStream as U}from\"node:tty\";import g from\"picocolors\";function J({onlyFirst:t=!1}={}){const F=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C))\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\"].join(\"|\");return new RegExp(F,t?void 0:\"g\")}const Q=J();function T(t){if(typeof t!=\"string\")throw new TypeError(`Expected a \\`string\\`, got \\`${typeof t}\\``);return t.replace(Q,\"\")}function O(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}var P={exports:{}};(function(t){var u={};t.exports=u,u.eastAsianWidth=function(e){var s=e.charCodeAt(0),i=e.length==2?e.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=i&&i<=57343&&(s&=1023,i&=1023,D=s<<10|i,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?\"F\":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?\"H\":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?\"W\":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?\"Na\":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?\"A\":\"N\"},u.characterLength=function(e){var s=this.eastAsianWidth(e);return s==\"F\"||s==\"W\"||s==\"A\"?2:1};function F(e){return e.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g)||[]}u.length=function(e){for(var s=F(e),i=0,D=0;D<s.length;D++)i=i+this.characterLength(s[D]);return i},u.slice=function(e,s,i){textLen=u.length(e),s=s||0,i=i||1,s<0&&(s=textLen+s),i<0&&(i=textLen+i);for(var D=\"\",C=0,o=F(e),E=0;E<o.length;E++){var a=o[E],n=u.length(a);if(C>=s-(n==2?1:0))if(C+n<=i)D+=a;else break;C+=n}return D}})(P);var X=P.exports;const DD=O(X);var uD=function(){return/\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\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])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\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\\uDF7C\\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\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\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\\uDF7C\\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\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\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|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\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]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\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\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\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-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\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-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*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\\u26A7\\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-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\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[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g};const FD=O(uD);function A(t,u={}){if(typeof t!=\"string\"||t.length===0||(u={ambiguousIsNarrow:!0,...u},t=T(t),t.length===0))return 0;t=t.replace(FD(),\" \");const F=u.ambiguousIsNarrow?1:2;let e=0;for(const s of t){const i=s.codePointAt(0);if(i<=31||i>=127&&i<=159||i>=768&&i<=879)continue;switch(DD.eastAsianWidth(s)){case\"F\":case\"W\":e+=2;break;case\"A\":e+=F;break;default:e+=1}}return e}const m=10,L=(t=0)=>u=>`\\x1B[${u+t}m`,N=(t=0)=>u=>`\\x1B[${38+t};5;${u}m`,I=(t=0)=>(u,F,e)=>`\\x1B[${38+t};2;${u};${F};${e}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const tD=Object.keys(r.color),eD=Object.keys(r.bgColor);[...tD,...eD];function sD(){const t=new Map;for(const[u,F]of Object.entries(r)){for(const[e,s]of Object.entries(F))r[e]={open:`\\x1B[${s[0]}m`,close:`\\x1B[${s[1]}m`},F[e]=r[e],t.set(s[0],s[1]);Object.defineProperty(r,u,{value:F,enumerable:!1})}return Object.defineProperty(r,\"codes\",{value:t,enumerable:!1}),r.color.close=\"\\x1B[39m\",r.bgColor.close=\"\\x1B[49m\",r.color.ansi=L(),r.color.ansi256=N(),r.color.ansi16m=I(),r.bgColor.ansi=L(m),r.bgColor.ansi256=N(m),r.bgColor.ansi16m=I(m),Object.defineProperties(r,{rgbToAnsi256:{value:(u,F,e)=>u===F&&F===e?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(F/255*5)+Math.round(e/255*5),enumerable:!1},hexToRgb:{value:u=>{const F=/[a-f\\d]{6}|[a-f\\d]{3}/i.exec(u.toString(16));if(!F)return[0,0,0];let[e]=F;e.length===3&&(e=[...e].map(i=>i+i).join(\"\"));const s=Number.parseInt(e,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:u=>r.rgbToAnsi256(...r.hexToRgb(u)),enumerable:!1},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let F,e,s;if(u>=232)F=((u-232)*10+8)/255,e=F,s=F;else{u-=16;const C=u%36;F=Math.floor(u/36)/5,e=Math.floor(C/6)/5,s=C%6/5}const i=Math.max(F,e,s)*2;if(i===0)return 30;let D=30+(Math.round(s)<<2|Math.round(e)<<1|Math.round(F));return i===2&&(D+=60),D},enumerable:!1},rgbToAnsi:{value:(u,F,e)=>r.ansi256ToAnsi(r.rgbToAnsi256(u,F,e)),enumerable:!1},hexToAnsi:{value:u=>r.ansi256ToAnsi(r.hexToAnsi256(u)),enumerable:!1}}),r}const iD=sD(),v=new Set([\"\\x1B\",\"\\x9B\"]),CD=39,w=\"\\x07\",W=\"[\",rD=\"]\",R=\"m\",y=`${rD}8;;`,V=t=>`${v.values().next().value}${W}${t}${R}`,z=t=>`${v.values().next().value}${y}${t}${w}`,ED=t=>t.split(\" \").map(u=>A(u)),_=(t,u,F)=>{const e=[...u];let s=!1,i=!1,D=A(T(t[t.length-1]));for(const[C,o]of e.entries()){const E=A(o);if(D+E<=F?t[t.length-1]+=o:(t.push(o),D=0),v.has(o)&&(s=!0,i=e.slice(C+1).join(\"\").startsWith(y)),s){i?o===w&&(s=!1,i=!1):o===R&&(s=!1);continue}D+=E,D===F&&C<e.length-1&&(t.push(\"\"),D=0)}!D&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},nD=t=>{const u=t.split(\" \");let F=u.length;for(;F>0&&!(A(u[F-1])>0);)F--;return F===u.length?t:u.slice(0,F).join(\" \")+u.slice(F).join(\"\")},oD=(t,u,F={})=>{if(F.trim!==!1&&t.trim()===\"\")return\"\";let e=\"\",s,i;const D=ED(t);let C=[\"\"];for(const[E,a]of t.split(\" \").entries()){F.trim!==!1&&(C[C.length-1]=C[C.length-1].trimStart());let n=A(C[C.length-1]);if(E!==0&&(n>=u&&(F.wordWrap===!1||F.trim===!1)&&(C.push(\"\"),n=0),(n>0||F.trim===!1)&&(C[C.length-1]+=\" \",n++)),F.hard&&D[E]>u){const B=u-n,p=1+Math.floor((D[E]-B-1)/u);Math.floor((D[E]-1)/u)<p&&C.push(\"\"),_(C,a,u);continue}if(n+D[E]>u&&n>0&&D[E]>0){if(F.wordWrap===!1&&n<u){_(C,a,u);continue}C.push(\"\")}if(n+D[E]>u&&F.wordWrap===!1){_(C,a,u);continue}C[C.length-1]+=a}F.trim!==!1&&(C=C.map(E=>nD(E)));const o=[...C.join(`\n`)];for(const[E,a]of o.entries()){if(e+=a,v.has(a)){const{groups:B}=new RegExp(`(?:\\\\${W}(?<code>\\\\d+)m|\\\\${y}(?<uri>.*)${w})`).exec(o.slice(E).join(\"\"))||{groups:{}};if(B.code!==void 0){const p=Number.parseFloat(B.code);s=p===CD?void 0:p}else B.uri!==void 0&&(i=B.uri.length===0?void 0:B.uri)}const n=iD.codes.get(Number(s));o[E+1]===`\n`?(i&&(e+=z(\"\")),s&&n&&(e+=V(n))):a===`\n`&&(s&&n&&(e+=V(s)),i&&(e+=z(i)))}return e};function G(t,u,F){return String(t).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(e=>oD(e,u,F)).join(`\n`)}const aD=[\"up\",\"down\",\"left\",\"right\",\"space\",\"enter\",\"cancel\"],c={actions:new Set(aD),aliases:new Map([[\"k\",\"up\"],[\"j\",\"down\"],[\"h\",\"left\"],[\"l\",\"right\"],[\"\u0003\",\"cancel\"],[\"escape\",\"cancel\"]])};function hD(t){for(const u in t){const F=u;if(!Object.hasOwn(t,F))continue;const e=t[F];switch(F){case\"aliases\":{for(const s in e)Object.hasOwn(e,s)&&(c.aliases.has(s)||c.aliases.set(s,e[s]));break}}}}function k(t,u){if(typeof t==\"string\")return c.aliases.get(t)===u;for(const F of t)if(F!==void 0&&k(F,u))return!0;return!1}function lD(t,u){if(t===u)return;const F=t.split(`\n`),e=u.split(`\n`),s=[];for(let i=0;i<Math.max(F.length,e.length);i++)F[i]!==e[i]&&s.push(i);return s}const xD=globalThis.process.platform.startsWith(\"win\"),S=Symbol(\"clack:cancel\");function BD(t){return t===S}function d(t,u){const F=t;F.isTTY&&F.setRawMode(u)}function cD({input:t=$,output:u=j,overwrite:F=!0,hideCursor:e=!0}={}){const s=f.createInterface({input:t,output:u,prompt:\"\",tabSize:1});f.emitKeypressEvents(t,s),t.isTTY&&t.setRawMode(!0);const i=(D,{name:C,sequence:o})=>{const E=String(D);if(k([E,C,o],\"cancel\")){e&&u.write(l.show),process.exit(0);return}if(!F)return;const a=C===\"return\"?0:-1,n=C===\"return\"?-1:0;f.moveCursor(u,a,n,()=>{f.clearLine(u,1,()=>{t.once(\"keypress\",i)})})};return e&&u.write(l.hide),t.once(\"keypress\",i),()=>{t.off(\"keypress\",i),e&&u.write(l.show),t.isTTY&&!xD&&t.setRawMode(!1),s.terminal=!1,s.close()}}var AD=Object.defineProperty,pD=(t,u,F)=>u in t?AD(t,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):t[u]=F,h=(t,u,F)=>(pD(t,typeof u!=\"symbol\"?u+\"\":u,F),F);class x{constructor(u,F=!0){h(this,\"input\"),h(this,\"output\"),h(this,\"_abortSignal\"),h(this,\"rl\"),h(this,\"opts\"),h(this,\"_render\"),h(this,\"_track\",!1),h(this,\"_prevFrame\",\"\"),h(this,\"_subscribers\",new Map),h(this,\"_cursor\",0),h(this,\"state\",\"initial\"),h(this,\"error\",\"\"),h(this,\"value\");const{input:e=$,output:s=j,render:i,signal:D,...C}=u;this.opts=C,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=F,this._abortSignal=D,this.input=e,this.output=s}unsubscribe(){this._subscribers.clear()}setSubscriber(u,F){const e=this._subscribers.get(u)??[];e.push(F),this._subscribers.set(u,e)}on(u,F){this.setSubscriber(u,{cb:F})}once(u,F){this.setSubscriber(u,{cb:F,once:!0})}emit(u,...F){const e=this._subscribers.get(u)??[],s=[];for(const i of e)i.cb(...F),i.once&&s.push(()=>e.splice(e.indexOf(i),1));for(const i of s)i()}prompt(){return new Promise((u,F)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=\"cancel\",this.close(),u(S);this._abortSignal.addEventListener(\"abort\",()=>{this.state=\"cancel\",this.close()},{once:!0})}const e=new U(0);e._write=(s,i,D)=>{this._track&&(this.value=this.rl?.line.replace(/\\t/g,\"\"),this._cursor=this.rl?.cursor??0,this.emit(\"value\",this.value)),D()},this.input.pipe(e),this.rl=M.createInterface({input:this.input,output:e,tabSize:2,prompt:\"\",escapeCodeTimeout:50}),M.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on(\"keypress\",this.onKeypress),d(this.input,!0),this.output.on(\"resize\",this.render),this.render(),this.once(\"submit\",()=>{this.output.write(l.show),this.output.off(\"resize\",this.render),d(this.input,!1),u(this.value)}),this.once(\"cancel\",()=>{this.output.write(l.show),this.output.off(\"resize\",this.render),d(this.input,!1),u(S)})})}onKeypress(u,F){if(this.state===\"error\"&&(this.state=\"active\"),F?.name&&(!this._track&&c.aliases.has(F.name)&&this.emit(\"cursor\",c.aliases.get(F.name)),c.actions.has(F.name)&&this.emit(\"cursor\",F.name)),u&&(u.toLowerCase()===\"y\"||u.toLowerCase()===\"n\")&&this.emit(\"confirm\",u.toLowerCase()===\"y\"),u===\"\t\"&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit(\"value\",this.opts.placeholder))),u&&this.emit(\"key\",u.toLowerCase()),F?.name===\"return\"){if(this.opts.validate){const e=this.opts.validate(this.value);e&&(this.error=e instanceof Error?e.message:e,this.state=\"error\",this.rl?.write(this.value))}this.state!==\"error\"&&(this.state=\"submit\")}k([u,F?.name,F?.sequence],\"cancel\")&&(this.state=\"cancel\"),(this.state===\"submit\"||this.state===\"cancel\")&&this.emit(\"finalize\"),this.render(),(this.state===\"submit\"||this.state===\"cancel\")&&this.close()}close(){this.input.unpipe(),this.input.removeListener(\"keypress\",this.onKeypress),this.output.write(`\n`),d(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){const u=G(this._prevFrame,process.stdout.columns,{hard:!0}).split(`\n`).length-1;this.output.write(l.move(-999,u*-1))}render(){const u=G(this._render(this)??\"\",process.stdout.columns,{hard:!0});if(u!==this._prevFrame){if(this.state===\"initial\")this.output.write(l.hide);else{const F=lD(this._prevFrame,u);if(this.restoreCursor(),F&&F?.length===1){const e=F[0];this.output.write(l.move(0,e)),this.output.write(b.lines(1));const s=u.split(`\n`);this.output.write(s[e]),this._prevFrame=u,this.output.write(l.move(0,s.length-e-1));return}if(F&&F?.length>1){const e=F[0];this.output.write(l.move(0,e)),this.output.write(b.down());const s=u.split(`\n`).slice(e);this.output.write(s.join(`\n`)),this._prevFrame=u;return}this.output.write(b.down())}this.output.write(u),this.state===\"initial\"&&(this.state=\"active\"),this._prevFrame=u}}}class fD extends x{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,!1),this.value=!!u.initialValue,this.on(\"value\",()=>{this.value=this._value}),this.on(\"confirm\",F=>{this.output.write(l.move(0,-1)),this.value=F,this.state=\"submit\",this.close()}),this.on(\"cursor\",()=>{this.value=!this.value})}}var gD=Object.defineProperty,vD=(t,u,F)=>u in t?gD(t,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):t[u]=F,K=(t,u,F)=>(vD(t,typeof u!=\"symbol\"?u+\"\":u,F),F);let dD=class extends x{constructor(u){super(u,!1),K(this,\"options\"),K(this,\"cursor\",0);const{options:F}=u;this.options=Object.entries(F).flatMap(([e,s])=>[{value:e,group:!0,label:e},...s.map(i=>({...i,group:e}))]),this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:e})=>e===u.cursorAt),0),this.on(\"cursor\",e=>{switch(e){case\"left\":case\"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case\"down\":case\"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case\"space\":this.toggleValue();break}})}getGroupItems(u){return this.options.filter(F=>F.group===u)}isGroupSelected(u){return this.getGroupItems(u).every(F=>this.value.includes(F.value))}toggleValue(){const u=this.options[this.cursor];if(u.group===!0){const F=u.value,e=this.getGroupItems(F);this.isGroupSelected(F)?this.value=this.value.filter(s=>e.findIndex(i=>i.value===s)===-1):this.value=[...this.value,...e.map(s=>s.value)],this.value=Array.from(new Set(this.value))}else{const F=this.value.includes(u.value);this.value=F?this.value.filter(e=>e!==u.value):[...this.value,u.value]}}};var bD=Object.defineProperty,mD=(t,u,F)=>u in t?bD(t,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):t[u]=F,Y=(t,u,F)=>(mD(t,typeof u!=\"symbol\"?u+\"\":u,F),F);let wD=class extends x{constructor(u){super(u,!1),Y(this,\"options\"),Y(this,\"cursor\",0),this.options=u.options,this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:F})=>F===u.cursorAt),0),this.on(\"key\",F=>{F===\"a\"&&this.toggleAll()}),this.on(\"cursor\",F=>{switch(F){case\"left\":case\"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case\"down\":case\"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case\"space\":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){const u=this.value.length===this.options.length;this.value=u?[]:this.options.map(F=>F.value)}toggleValue(){const u=this.value.includes(this._value);this.value=u?this.value.filter(F=>F!==this._value):[...this.value,this._value]}};var yD=Object.defineProperty,_D=(t,u,F)=>u in t?yD(t,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):t[u]=F,Z=(t,u,F)=>(_D(t,typeof u!=\"symbol\"?u+\"\":u,F),F);class kD extends x{constructor({mask:u,...F}){super(F),Z(this,\"valueWithCursor\",\"\"),Z(this,\"_mask\",\"\\u2022\"),this._mask=u??\"\\u2022\",this.on(\"finalize\",()=>{this.valueWithCursor=this.masked}),this.on(\"value\",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.masked}${g.inverse(g.hidden(\"_\"))}`;else{const e=this.masked.slice(0,this.cursor),s=this.masked.slice(this.cursor);this.valueWithCursor=`${e}${g.inverse(s[0])}${s.slice(1)}`}})}get cursor(){return this._cursor}get masked(){return this.value.replaceAll(/./g,this._mask)}}var SD=Object.defineProperty,$D=(t,u,F)=>u in t?SD(t,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):t[u]=F,q=(t,u,F)=>($D(t,typeof u!=\"symbol\"?u+\"\":u,F),F);class jD extends x{constructor(u){super(u,!1),q(this,\"options\"),q(this,\"cursor\",0),this.options=u.options,this.cursor=this.options.findIndex(({value:F})=>F===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on(\"cursor\",F=>{switch(F){case\"left\":case\"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case\"down\":case\"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}}var MD=Object.defineProperty,TD=(t,u,F)=>u in t?MD(t,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):t[u]=F,H=(t,u,F)=>(TD(t,typeof u!=\"symbol\"?u+\"\":u,F),F);class OD extends x{constructor(u){super(u,!1),H(this,\"options\"),H(this,\"cursor\",0),this.options=u.options;const F=this.options.map(({value:[e]})=>e?.toLowerCase());this.cursor=Math.max(F.indexOf(u.initialValue),0),this.on(\"key\",e=>{if(!F.includes(e))return;const s=this.options.find(({value:[i]})=>i?.toLowerCase()===e);s&&(this.value=s.value,this.state=\"submit\",this.emit(\"submit\"))})}}class PD extends x{get valueWithCursor(){if(this.state===\"submit\")return this.value;if(this.cursor>=this.value.length)return`${this.value}\\u2588`;const u=this.value.slice(0,this.cursor),[F,...e]=this.value.slice(this.cursor);return`${u}${g.inverse(F)}${e.join(\"\")}`}get cursor(){return this._cursor}constructor(u){super(u),this.on(\"finalize\",()=>{this.value||(this.value=u.defaultValue)})}}export{fD as ConfirmPrompt,dD as GroupMultiSelectPrompt,wD as MultiSelectPrompt,kD as PasswordPrompt,x as Prompt,OD as SelectKeyPrompt,jD as SelectPrompt,PD as TextPrompt,cD as block,BD as isCancel,hD as updateSettings};\n//# sourceMappingURL=index.mjs.map\n",
|
|
15
|
+
"import{stripVTControlCharacters as T}from\"node:util\";import{TextPrompt as F,PasswordPrompt as q,ConfirmPrompt as D,SelectPrompt as U,SelectKeyPrompt as J,MultiSelectPrompt as K,GroupMultiSelectPrompt as Y,isCancel as z,block as Q}from\"@clack/core\";export{isCancel,updateSettings}from\"@clack/core\";import p from\"node:process\";import e from\"picocolors\";import{cursor as Z,erase as H}from\"sisteransi\";function X(){return p.platform!==\"win32\"?p.env.TERM!==\"linux\":!!p.env.CI||!!p.env.WT_SESSION||!!p.env.TERMINUS_SUBLIME||p.env.ConEmuTask===\"{cmd::Cmder}\"||p.env.TERM_PROGRAM===\"Terminus-Sublime\"||p.env.TERM_PROGRAM===\"vscode\"||p.env.TERM===\"xterm-256color\"||p.env.TERM===\"alacritty\"||p.env.TERMINAL_EMULATOR===\"JetBrains-JediTerm\"}const E=X(),u=(s,n)=>E?s:n,ee=u(\"\\u25C6\",\"*\"),A=u(\"\\u25A0\",\"x\"),B=u(\"\\u25B2\",\"x\"),S=u(\"\\u25C7\",\"o\"),te=u(\"\\u250C\",\"T\"),a=u(\"\\u2502\",\"|\"),m=u(\"\\u2514\",\"\\u2014\"),j=u(\"\\u25CF\",\">\"),R=u(\"\\u25CB\",\" \"),V=u(\"\\u25FB\",\"[\\u2022]\"),M=u(\"\\u25FC\",\"[+]\"),G=u(\"\\u25FB\",\"[ ]\"),se=u(\"\\u25AA\",\"\\u2022\"),N=u(\"\\u2500\",\"-\"),re=u(\"\\u256E\",\"+\"),ie=u(\"\\u251C\",\"+\"),ne=u(\"\\u256F\",\"+\"),ae=u(\"\\u25CF\",\"\\u2022\"),oe=u(\"\\u25C6\",\"*\"),ce=u(\"\\u25B2\",\"!\"),le=u(\"\\u25A0\",\"x\"),y=s=>{switch(s){case\"initial\":case\"active\":return e.cyan(ee);case\"cancel\":return e.red(A);case\"error\":return e.yellow(B);case\"submit\":return e.green(S)}},k=s=>{const{cursor:n,options:t,style:i}=s,r=s.maxItems??Number.POSITIVE_INFINITY,c=Math.max(process.stdout.rows-4,0),o=Math.min(c,Math.max(r,5));let l=0;n>=l+o-3?l=Math.max(Math.min(n-o+3,t.length-o),0):n<l+2&&(l=Math.max(n-2,0));const $=o<t.length&&l>0,d=o<t.length&&l+o<t.length;return t.slice(l,l+o).map((w,b,C)=>{const I=b===0&&$,x=b===C.length-1&&d;return I||x?e.dim(\"...\"):i(w,b+l===n)})},ue=s=>new F({validate:s.validate,placeholder:s.placeholder,defaultValue:s.defaultValue,initialValue:s.initialValue,render(){const n=`${e.gray(a)}\n${y(this.state)} ${s.message}\n`,t=s.placeholder?e.inverse(s.placeholder[0])+e.dim(s.placeholder.slice(1)):e.inverse(e.hidden(\"_\")),i=this.value?this.valueWithCursor:t;switch(this.state){case\"error\":return`${n.trim()}\n${e.yellow(a)} ${i}\n${e.yellow(m)} ${e.yellow(this.error)}\n`;case\"submit\":return`${n}${e.gray(a)} ${e.dim(this.value||s.placeholder)}`;case\"cancel\":return`${n}${e.gray(a)} ${e.strikethrough(e.dim(this.value??\"\"))}${this.value?.trim()?`\n${e.gray(a)}`:\"\"}`;default:return`${n}${e.cyan(a)} ${i}\n${e.cyan(m)}\n`}}}).prompt(),$e=s=>new q({validate:s.validate,mask:s.mask??se,render(){const n=`${e.gray(a)}\n${y(this.state)} ${s.message}\n`,t=this.valueWithCursor,i=this.masked;switch(this.state){case\"error\":return`${n.trim()}\n${e.yellow(a)} ${i}\n${e.yellow(m)} ${e.yellow(this.error)}\n`;case\"submit\":return`${n}${e.gray(a)} ${e.dim(i)}`;case\"cancel\":return`${n}${e.gray(a)} ${e.strikethrough(e.dim(i??\"\"))}${i?`\n${e.gray(a)}`:\"\"}`;default:return`${n}${e.cyan(a)} ${t}\n${e.cyan(m)}\n`}}}).prompt(),me=s=>{const n=s.active??\"Yes\",t=s.inactive??\"No\";return new D({active:n,inactive:t,initialValue:s.initialValue??!0,render(){const i=`${e.gray(a)}\n${y(this.state)} ${s.message}\n`,r=this.value?n:t;switch(this.state){case\"submit\":return`${i}${e.gray(a)} ${e.dim(r)}`;case\"cancel\":return`${i}${e.gray(a)} ${e.strikethrough(e.dim(r))}\n${e.gray(a)}`;default:return`${i}${e.cyan(a)} ${this.value?`${e.green(j)} ${n}`:`${e.dim(R)} ${e.dim(n)}`} ${e.dim(\"/\")} ${this.value?`${e.dim(R)} ${e.dim(t)}`:`${e.green(j)} ${t}`}\n${e.cyan(m)}\n`}}}).prompt()},de=s=>{const n=(t,i)=>{const r=t.label??String(t.value);switch(i){case\"selected\":return`${e.dim(r)}`;case\"active\":return`${e.green(j)} ${r} ${t.hint?e.dim(`(${t.hint})`):\"\"}`;case\"cancelled\":return`${e.strikethrough(e.dim(r))}`;default:return`${e.dim(R)} ${e.dim(r)}`}};return new U({options:s.options,initialValue:s.initialValue,render(){const t=`${e.gray(a)}\n${y(this.state)} ${s.message}\n`;switch(this.state){case\"submit\":return`${t}${e.gray(a)} ${n(this.options[this.cursor],\"selected\")}`;case\"cancel\":return`${t}${e.gray(a)} ${n(this.options[this.cursor],\"cancelled\")}\n${e.gray(a)}`;default:return`${t}${e.cyan(a)} ${k({cursor:this.cursor,options:this.options,maxItems:s.maxItems,style:(i,r)=>n(i,r?\"active\":\"inactive\")}).join(`\n${e.cyan(a)} `)}\n${e.cyan(m)}\n`}}}).prompt()},he=s=>{const n=(t,i=\"inactive\")=>{const r=t.label??String(t.value);return i===\"selected\"?`${e.dim(r)}`:i===\"cancelled\"?`${e.strikethrough(e.dim(r))}`:i===\"active\"?`${e.bgCyan(e.gray(` ${t.value} `))} ${r} ${t.hint?e.dim(`(${t.hint})`):\"\"}`:`${e.gray(e.bgWhite(e.inverse(` ${t.value} `)))} ${r} ${t.hint?e.dim(`(${t.hint})`):\"\"}`};return new J({options:s.options,initialValue:s.initialValue,render(){const t=`${e.gray(a)}\n${y(this.state)} ${s.message}\n`;switch(this.state){case\"submit\":return`${t}${e.gray(a)} ${n(this.options.find(i=>i.value===this.value)??s.options[0],\"selected\")}`;case\"cancel\":return`${t}${e.gray(a)} ${n(this.options[0],\"cancelled\")}\n${e.gray(a)}`;default:return`${t}${e.cyan(a)} ${this.options.map((i,r)=>n(i,r===this.cursor?\"active\":\"inactive\")).join(`\n${e.cyan(a)} `)}\n${e.cyan(m)}\n`}}}).prompt()},pe=s=>{const n=(t,i)=>{const r=t.label??String(t.value);return i===\"active\"?`${e.cyan(V)} ${r} ${t.hint?e.dim(`(${t.hint})`):\"\"}`:i===\"selected\"?`${e.green(M)} ${e.dim(r)}`:i===\"cancelled\"?`${e.strikethrough(e.dim(r))}`:i===\"active-selected\"?`${e.green(M)} ${r} ${t.hint?e.dim(`(${t.hint})`):\"\"}`:i===\"submitted\"?`${e.dim(r)}`:`${e.dim(G)} ${e.dim(r)}`};return new K({options:s.options,initialValues:s.initialValues,required:s.required??!0,cursorAt:s.cursorAt,validate(t){if(this.required&&t.length===0)return`Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){const t=`${e.gray(a)}\n${y(this.state)} ${s.message}\n`,i=(r,c)=>{const o=this.value.includes(r.value);return c&&o?n(r,\"active-selected\"):o?n(r,\"selected\"):n(r,c?\"active\":\"inactive\")};switch(this.state){case\"submit\":return`${t}${e.gray(a)} ${this.options.filter(({value:r})=>this.value.includes(r)).map(r=>n(r,\"submitted\")).join(e.dim(\", \"))||e.dim(\"none\")}`;case\"cancel\":{const r=this.options.filter(({value:c})=>this.value.includes(c)).map(c=>n(c,\"cancelled\")).join(e.dim(\", \"));return`${t}${e.gray(a)} ${r.trim()?`${r}\n${e.gray(a)}`:\"\"}`}case\"error\":{const r=this.error.split(`\n`).map((c,o)=>o===0?`${e.yellow(m)} ${e.yellow(c)}`:` ${c}`).join(`\n`);return`${t+e.yellow(a)} ${k({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:i}).join(`\n${e.yellow(a)} `)}\n${r}\n`}default:return`${t}${e.cyan(a)} ${k({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:i}).join(`\n${e.cyan(a)} `)}\n${e.cyan(m)}\n`}}}).prompt()},ge=s=>{const n=(t,i,r=[])=>{const c=t.label??String(t.value),o=typeof t.group==\"string\",l=o&&(r[r.indexOf(t)+1]??{group:!0}),$=o&&l.group===!0,d=o?`${$?m:a} `:\"\";return i===\"active\"?`${e.dim(d)}${e.cyan(V)} ${c} ${t.hint?e.dim(`(${t.hint})`):\"\"}`:i===\"group-active\"?`${d}${e.cyan(V)} ${e.dim(c)}`:i===\"group-active-selected\"?`${d}${e.green(M)} ${e.dim(c)}`:i===\"selected\"?`${e.dim(d)}${e.green(M)} ${e.dim(c)}`:i===\"cancelled\"?`${e.strikethrough(e.dim(c))}`:i===\"active-selected\"?`${e.dim(d)}${e.green(M)} ${c} ${t.hint?e.dim(`(${t.hint})`):\"\"}`:i===\"submitted\"?`${e.dim(c)}`:`${e.dim(d)}${e.dim(G)} ${e.dim(c)}`};return new Y({options:s.options,initialValues:s.initialValues,required:s.required??!0,cursorAt:s.cursorAt,validate(t){if(this.required&&t.length===0)return`Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){const t=`${e.gray(a)}\n${y(this.state)} ${s.message}\n`;switch(this.state){case\"submit\":return`${t}${e.gray(a)} ${this.options.filter(({value:i})=>this.value.includes(i)).map(i=>n(i,\"submitted\")).join(e.dim(\", \"))}`;case\"cancel\":{const i=this.options.filter(({value:r})=>this.value.includes(r)).map(r=>n(r,\"cancelled\")).join(e.dim(\", \"));return`${t}${e.gray(a)} ${i.trim()?`${i}\n${e.gray(a)}`:\"\"}`}case\"error\":{const i=this.error.split(`\n`).map((r,c)=>c===0?`${e.yellow(m)} ${e.yellow(r)}`:` ${r}`).join(`\n`);return`${t}${e.yellow(a)} ${this.options.map((r,c,o)=>{const l=this.value.includes(r.value)||r.group===!0&&this.isGroupSelected(`${r.value}`),$=c===this.cursor;return!$&&typeof r.group==\"string\"&&this.options[this.cursor].value===r.group?n(r,l?\"group-active-selected\":\"group-active\",o):$&&l?n(r,\"active-selected\",o):l?n(r,\"selected\",o):n(r,$?\"active\":\"inactive\",o)}).join(`\n${e.yellow(a)} `)}\n${i}\n`}default:return`${t}${e.cyan(a)} ${this.options.map((i,r,c)=>{const o=this.value.includes(i.value)||i.group===!0&&this.isGroupSelected(`${i.value}`),l=r===this.cursor;return!l&&typeof i.group==\"string\"&&this.options[this.cursor].value===i.group?n(i,o?\"group-active-selected\":\"group-active\",c):l&&o?n(i,\"active-selected\",c):o?n(i,\"selected\",c):n(i,l?\"active\":\"inactive\",c)}).join(`\n${e.cyan(a)} `)}\n${e.cyan(m)}\n`}}}).prompt()},ye=(s=\"\",n=\"\")=>{const t=`\n${s}\n`.split(`\n`),i=T(n).length,r=Math.max(t.reduce((o,l)=>{const $=T(l);return $.length>o?$.length:o},0),i)+2,c=t.map(o=>`${e.gray(a)} ${e.dim(o)}${\" \".repeat(r-T(o).length)}${e.gray(a)}`).join(`\n`);process.stdout.write(`${e.gray(a)}\n${e.green(S)} ${e.reset(n)} ${e.gray(N.repeat(Math.max(r-i-1,1))+re)}\n${c}\n${e.gray(ie+N.repeat(r+2)+ne)}\n`)},ve=(s=\"\")=>{process.stdout.write(`${e.gray(m)} ${e.red(s)}\n\n`)},we=(s=\"\")=>{process.stdout.write(`${e.gray(te)} ${s}\n`)},fe=(s=\"\")=>{process.stdout.write(`${e.gray(a)}\n${e.gray(m)} ${s}\n\n`)},v={message:(s=\"\",{symbol:n=e.gray(a)}={})=>{const t=[`${e.gray(a)}`];if(s){const[i,...r]=s.split(`\n`);t.push(`${n} ${i}`,...r.map(c=>`${e.gray(a)} ${c}`))}process.stdout.write(`${t.join(`\n`)}\n`)},info:s=>{v.message(s,{symbol:e.blue(ae)})},success:s=>{v.message(s,{symbol:e.green(oe)})},step:s=>{v.message(s,{symbol:e.green(S)})},warn:s=>{v.message(s,{symbol:e.yellow(ce)})},warning:s=>{v.warn(s)},error:s=>{v.message(s,{symbol:e.red(le)})}},L=()=>{const s=E?[\"\\u25D2\",\"\\u25D0\",\"\\u25D3\",\"\\u25D1\"]:[\"\\u2022\",\"o\",\"O\",\"0\"],n=E?80:120,t=process.env.CI===\"true\";let i,r,c=!1,o=\"\",l;const $=h=>{const g=h>1?\"Something went wrong\":\"Canceled\";c&&P(g,h)},d=()=>$(2),w=()=>$(1),b=()=>{process.on(\"uncaughtExceptionMonitor\",d),process.on(\"unhandledRejection\",d),process.on(\"SIGINT\",w),process.on(\"SIGTERM\",w),process.on(\"exit\",$)},C=()=>{process.removeListener(\"uncaughtExceptionMonitor\",d),process.removeListener(\"unhandledRejection\",d),process.removeListener(\"SIGINT\",w),process.removeListener(\"SIGTERM\",w),process.removeListener(\"exit\",$)},I=()=>{if(l===void 0)return;t&&process.stdout.write(`\n`);const h=l.split(`\n`);process.stdout.write(Z.move(-999,h.length-1)),process.stdout.write(H.down(h.length))},x=h=>h.replace(/\\.+$/,\"\"),O=(h=\"\")=>{c=!0,i=Q(),o=x(h),process.stdout.write(`${e.gray(a)}\n`);let g=0,f=0;b(),r=setInterval(()=>{if(t&&o===l)return;I(),l=o;const W=e.magenta(s[g]),_=t?\"...\":\".\".repeat(Math.floor(f)).slice(0,3);process.stdout.write(`${W} ${o}${_}`),g=g+1<s.length?g+1:0,f=f<s.length?f+.125:0},n)},P=(h=\"\",g=0)=>{c=!1,clearInterval(r),I();const f=g===0?e.green(S):g===1?e.red(A):e.red(B);o=x(h??o),process.stdout.write(`${f} ${o}\n`),C(),i()};return{start:O,stop:P,message:(h=\"\")=>{o=x(h??o)}}},be=async(s,n)=>{const t={},i=Object.keys(s);for(const r of i){const c=s[r],o=await c({results:t})?.catch(l=>{throw l});if(typeof n?.onCancel==\"function\"&&z(o)){t[r]=\"canceled\",n.onCancel({results:t});continue}t[r]=o}return t},xe=async s=>{for(const n of s){if(n.enabled===!1)continue;const t=L();t.start(n.title);const i=await n.task(t.message);t.stop(i||n.title)}};export{ve as cancel,me as confirm,be as group,ge as groupMultiselect,we as intro,v as log,pe as multiselect,ye as note,fe as outro,$e as password,de as select,he as selectKey,L as spinner,xe as tasks,ue as text};\n//# sourceMappingURL=index.mjs.map\n",
|
|
16
|
+
"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",
|
|
17
|
+
"import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n",
|
|
18
|
+
"// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n",
|
|
19
|
+
"import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n",
|
|
20
|
+
"/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n",
|
|
21
|
+
"\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n",
|
|
22
|
+
"/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n",
|
|
23
|
+
"/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n",
|
|
24
|
+
"/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n",
|
|
25
|
+
"\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs_1 = require(\"fs\");\nconst debug_1 = __importDefault(require(\"debug\"));\nconst log = debug_1.default('@kwsites/file-exists');\nfunction check(path, isFile, isDirectory) {\n log(`checking %s`, path);\n try {\n const stat = fs_1.statSync(path);\n if (stat.isFile() && isFile) {\n log(`[OK] path represents a file`);\n return true;\n }\n if (stat.isDirectory() && isDirectory) {\n log(`[OK] path represents a directory`);\n return true;\n }\n log(`[FAIL] path represents something other than a file or directory`);\n return false;\n }\n catch (e) {\n if (e.code === 'ENOENT') {\n log(`[FAIL] path is not accessible: %o`, e);\n return false;\n }\n log(`[FATAL] %o`, e);\n throw e;\n }\n}\n/**\n * Synchronous validation of a path existing either as a file or as a directory.\n *\n * @param {string} path The path to check\n * @param {number} type One or both of the exported numeric constants\n */\nfunction exists(path, type = exports.READABLE) {\n return check(path, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0);\n}\nexports.exists = exists;\n/**\n * Constant representing a file\n */\nexports.FILE = 1;\n/**\n * Constant representing a folder\n */\nexports.FOLDER = 2;\n/**\n * Constant representing either a file or a folder\n */\nexports.READABLE = exports.FILE + exports.FOLDER;\n//# sourceMappingURL=index.js.map",
|
|
26
|
+
"\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./src\"));\n//# sourceMappingURL=index.js.map",
|
|
27
|
+
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDeferred = exports.deferred = void 0;\n/**\n * Creates a new `DeferredPromise`\n *\n * ```typescript\n import {deferred} from '@kwsites/promise-deferred`;\n ```\n */\nfunction deferred() {\n let done;\n let fail;\n let status = 'pending';\n const promise = new Promise((_done, _fail) => {\n done = _done;\n fail = _fail;\n });\n return {\n promise,\n done(result) {\n if (status === 'pending') {\n status = 'resolved';\n done(result);\n }\n },\n fail(error) {\n if (status === 'pending') {\n status = 'rejected';\n fail(error);\n }\n },\n get fulfilled() {\n return status !== 'pending';\n },\n get status() {\n return status;\n },\n };\n}\nexports.deferred = deferred;\n/**\n * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the\n * local variable name rather than the factory import name, without needing to rename on import.\n *\n * ```typescript\n import {createDeferred} from '@kwsites/promise-deferred`;\n ```\n */\nexports.createDeferred = deferred;\n/**\n * Default export allows use as:\n *\n * ```typescript\n import deferred from '@kwsites/promise-deferred`;\n ```\n */\nexports.default = deferred;\n//# sourceMappingURL=index.js.map",
|
|
28
|
+
"var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/lib/args/pathspec.ts\nfunction pathspec(...paths) {\n const key = new String(paths);\n cache.set(key, paths);\n return key;\n}\nfunction isPathSpec(path) {\n return path instanceof String && cache.has(path);\n}\nfunction toPaths(pathSpec) {\n return cache.get(pathSpec) || [];\n}\nvar cache;\nvar init_pathspec = __esm({\n \"src/lib/args/pathspec.ts\"() {\n \"use strict\";\n cache = /* @__PURE__ */ new WeakMap();\n }\n});\n\n// src/lib/errors/git-error.ts\nvar GitError;\nvar init_git_error = __esm({\n \"src/lib/errors/git-error.ts\"() {\n \"use strict\";\n GitError = class extends Error {\n constructor(task, message) {\n super(message);\n this.task = task;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n };\n }\n});\n\n// src/lib/errors/git-response-error.ts\nvar GitResponseError;\nvar init_git_response_error = __esm({\n \"src/lib/errors/git-response-error.ts\"() {\n \"use strict\";\n init_git_error();\n GitResponseError = class extends GitError {\n constructor(git, message) {\n super(void 0, message || String(git));\n this.git = git;\n }\n };\n }\n});\n\n// src/lib/errors/task-configuration-error.ts\nvar TaskConfigurationError;\nvar init_task_configuration_error = __esm({\n \"src/lib/errors/task-configuration-error.ts\"() {\n \"use strict\";\n init_git_error();\n TaskConfigurationError = class extends GitError {\n constructor(message) {\n super(void 0, message);\n }\n };\n }\n});\n\n// src/lib/utils/util.ts\nimport { Buffer as Buffer2 } from \"node:buffer\";\nimport { exists, FOLDER } from \"@kwsites/file-exists\";\nfunction asFunction(source) {\n if (typeof source !== \"function\") {\n return NOOP;\n }\n return source;\n}\nfunction isUserFunction(source) {\n return typeof source === \"function\" && source !== NOOP;\n}\nfunction splitOn(input, char) {\n const index = input.indexOf(char);\n if (index <= 0) {\n return [input, \"\"];\n }\n return [input.substr(0, index), input.substr(index + 1)];\n}\nfunction first(input, offset = 0) {\n return isArrayLike(input) && input.length > offset ? input[offset] : void 0;\n}\nfunction last(input, offset = 0) {\n if (isArrayLike(input) && input.length > offset) {\n return input[input.length - 1 - offset];\n }\n}\nfunction isArrayLike(input) {\n return filterHasLength(input);\n}\nfunction toLinesWithContent(input = \"\", trimmed2 = true, separator = \"\\n\") {\n return input.split(separator).reduce((output, line) => {\n const lineContent = trimmed2 ? line.trim() : line;\n if (lineContent) {\n output.push(lineContent);\n }\n return output;\n }, []);\n}\nfunction forEachLineWithContent(input, callback) {\n return toLinesWithContent(input, true).map((line) => callback(line));\n}\nfunction folderExists(path) {\n return exists(path, FOLDER);\n}\nfunction append(target, item) {\n if (Array.isArray(target)) {\n if (!target.includes(item)) {\n target.push(item);\n }\n } else {\n target.add(item);\n }\n return item;\n}\nfunction including(target, item) {\n if (Array.isArray(target) && !target.includes(item)) {\n target.push(item);\n }\n return target;\n}\nfunction remove(target, item) {\n if (Array.isArray(target)) {\n const index = target.indexOf(item);\n if (index >= 0) {\n target.splice(index, 1);\n }\n } else {\n target.delete(item);\n }\n return item;\n}\nfunction asArray(source) {\n return Array.isArray(source) ? source : [source];\n}\nfunction asCamelCase(str) {\n return str.replace(/[\\s-]+(.)/g, (_all, chr) => {\n return chr.toUpperCase();\n });\n}\nfunction asStringArray(source) {\n return asArray(source).map((item) => {\n return item instanceof String ? item : String(item);\n });\n}\nfunction asNumber(source, onNaN = 0) {\n if (source == null) {\n return onNaN;\n }\n const num = parseInt(source, 10);\n return Number.isNaN(num) ? onNaN : num;\n}\nfunction prefixedArray(input, prefix) {\n const output = [];\n for (let i = 0, max = input.length; i < max; i++) {\n output.push(prefix, input[i]);\n }\n return output;\n}\nfunction bufferToString(input) {\n return (Array.isArray(input) ? Buffer2.concat(input) : input).toString(\"utf-8\");\n}\nfunction pick(source, properties) {\n const out = {};\n properties.forEach((key) => {\n if (source[key] !== void 0) {\n out[key] = source[key];\n }\n });\n return out;\n}\nfunction delay(duration = 0) {\n return new Promise((done) => setTimeout(done, duration));\n}\nfunction orVoid(input) {\n if (input === false) {\n return void 0;\n }\n return input;\n}\nvar NULL, NOOP, objectToString;\nvar init_util = __esm({\n \"src/lib/utils/util.ts\"() {\n \"use strict\";\n init_argument_filters();\n NULL = \"\\0\";\n NOOP = () => {\n };\n objectToString = Object.prototype.toString.call.bind(Object.prototype.toString);\n }\n});\n\n// src/lib/utils/argument-filters.ts\nfunction filterType(input, filter, def) {\n if (filter(input)) {\n return input;\n }\n return arguments.length > 2 ? def : void 0;\n}\nfunction filterPrimitives(input, omit) {\n const type = isPathSpec(input) ? \"string\" : typeof input;\n return /number|string|boolean/.test(type) && (!omit || !omit.includes(type));\n}\nfunction filterPlainObject(input) {\n return !!input && objectToString(input) === \"[object Object]\";\n}\nfunction filterFunction(input) {\n return typeof input === \"function\";\n}\nvar filterArray, filterNumber, filterString, filterStringOrStringArray, filterHasLength;\nvar init_argument_filters = __esm({\n \"src/lib/utils/argument-filters.ts\"() {\n \"use strict\";\n init_pathspec();\n init_util();\n filterArray = (input) => {\n return Array.isArray(input);\n };\n filterNumber = (input) => {\n return typeof input === \"number\";\n };\n filterString = (input) => {\n return typeof input === \"string\";\n };\n filterStringOrStringArray = (input) => {\n return filterString(input) || Array.isArray(input) && input.every(filterString);\n };\n filterHasLength = (input) => {\n if (input == null || \"number|boolean|function\".includes(typeof input)) {\n return false;\n }\n return typeof input.length === \"number\";\n };\n }\n});\n\n// src/lib/utils/exit-codes.ts\nvar ExitCodes;\nvar init_exit_codes = __esm({\n \"src/lib/utils/exit-codes.ts\"() {\n \"use strict\";\n ExitCodes = /* @__PURE__ */ ((ExitCodes2) => {\n ExitCodes2[ExitCodes2[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExitCodes2[ExitCodes2[\"ERROR\"] = 1] = \"ERROR\";\n ExitCodes2[ExitCodes2[\"NOT_FOUND\"] = -2] = \"NOT_FOUND\";\n ExitCodes2[ExitCodes2[\"UNCLEAN\"] = 128] = \"UNCLEAN\";\n return ExitCodes2;\n })(ExitCodes || {});\n }\n});\n\n// src/lib/utils/git-output-streams.ts\nvar GitOutputStreams;\nvar init_git_output_streams = __esm({\n \"src/lib/utils/git-output-streams.ts\"() {\n \"use strict\";\n GitOutputStreams = class _GitOutputStreams {\n constructor(stdOut, stdErr) {\n this.stdOut = stdOut;\n this.stdErr = stdErr;\n }\n asStrings() {\n return new _GitOutputStreams(this.stdOut.toString(\"utf8\"), this.stdErr.toString(\"utf8\"));\n }\n };\n }\n});\n\n// src/lib/utils/line-parser.ts\nfunction useMatchesDefault() {\n throw new Error(`LineParser:useMatches not implemented`);\n}\nvar LineParser, RemoteLineParser;\nvar init_line_parser = __esm({\n \"src/lib/utils/line-parser.ts\"() {\n \"use strict\";\n LineParser = class {\n constructor(regExp, useMatches) {\n this.matches = [];\n this.useMatches = useMatchesDefault;\n this.parse = (line, target) => {\n this.resetMatches();\n if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {\n return false;\n }\n return this.useMatches(target, this.prepareMatches()) !== false;\n };\n this._regExp = Array.isArray(regExp) ? regExp : [regExp];\n if (useMatches) {\n this.useMatches = useMatches;\n }\n }\n resetMatches() {\n this.matches.length = 0;\n }\n prepareMatches() {\n return this.matches;\n }\n addMatch(reg, index, line) {\n const matched = line && reg.exec(line);\n if (matched) {\n this.pushMatch(index, matched);\n }\n return !!matched;\n }\n pushMatch(_index, matched) {\n this.matches.push(...matched.slice(1));\n }\n };\n RemoteLineParser = class extends LineParser {\n addMatch(reg, index, line) {\n return /^remote:\\s/.test(String(line)) && super.addMatch(reg, index, line);\n }\n pushMatch(index, matched) {\n if (index > 0 || matched.length > 1) {\n super.pushMatch(index, matched);\n }\n }\n };\n }\n});\n\n// src/lib/utils/simple-git-options.ts\nfunction createInstanceConfig(...options) {\n const baseDir = process.cwd();\n const config = Object.assign(\n { baseDir, ...defaultOptions },\n ...options.filter((o) => typeof o === \"object\" && o)\n );\n config.baseDir = config.baseDir || baseDir;\n config.trimmed = config.trimmed === true;\n return config;\n}\nvar defaultOptions;\nvar init_simple_git_options = __esm({\n \"src/lib/utils/simple-git-options.ts\"() {\n \"use strict\";\n defaultOptions = {\n binary: \"git\",\n maxConcurrentProcesses: 5,\n config: [],\n trimmed: false\n };\n }\n});\n\n// src/lib/utils/task-options.ts\nfunction appendTaskOptions(options, commands = []) {\n if (!filterPlainObject(options)) {\n return commands;\n }\n return Object.keys(options).reduce((commands2, key) => {\n const value = options[key];\n if (isPathSpec(value)) {\n commands2.push(value);\n } else if (filterPrimitives(value, [\"boolean\"])) {\n commands2.push(key + \"=\" + value);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n if (!filterPrimitives(v, [\"string\", \"number\"])) {\n commands2.push(key + \"=\" + v);\n }\n }\n } else {\n commands2.push(key);\n }\n return commands2;\n }, commands);\n}\nfunction getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) {\n const command = [];\n for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {\n if (\"string|number\".includes(typeof args[i])) {\n command.push(String(args[i]));\n }\n }\n appendTaskOptions(trailingOptionsArgument(args), command);\n if (!objectOnly) {\n command.push(...trailingArrayArgument(args));\n }\n return command;\n}\nfunction trailingArrayArgument(args) {\n const hasTrailingCallback = typeof last(args) === \"function\";\n return asStringArray(filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []));\n}\nfunction trailingOptionsArgument(args) {\n const hasTrailingCallback = filterFunction(last(args));\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);\n}\nfunction trailingFunctionArgument(args, includeNoop = true) {\n const callback = asFunction(last(args));\n return includeNoop || isUserFunction(callback) ? callback : void 0;\n}\nvar init_task_options = __esm({\n \"src/lib/utils/task-options.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_util();\n init_pathspec();\n }\n});\n\n// src/lib/utils/task-parser.ts\nfunction callTaskParser(parser4, streams) {\n return parser4(streams.stdOut, streams.stdErr);\n}\nfunction parseStringResponse(result, parsers12, texts, trim = true) {\n asArray(texts).forEach((text) => {\n for (let lines = toLinesWithContent(text, trim), i = 0, max = lines.length; i < max; i++) {\n const line = (offset = 0) => {\n if (i + offset >= max) {\n return;\n }\n return lines[i + offset];\n };\n parsers12.some(({ parse }) => parse(line, result));\n }\n });\n return result;\n}\nvar init_task_parser = __esm({\n \"src/lib/utils/task-parser.ts\"() {\n \"use strict\";\n init_util();\n }\n});\n\n// src/lib/utils/index.ts\nvar utils_exports = {};\n__export(utils_exports, {\n ExitCodes: () => ExitCodes,\n GitOutputStreams: () => GitOutputStreams,\n LineParser: () => LineParser,\n NOOP: () => NOOP,\n NULL: () => NULL,\n RemoteLineParser: () => RemoteLineParser,\n append: () => append,\n appendTaskOptions: () => appendTaskOptions,\n asArray: () => asArray,\n asCamelCase: () => asCamelCase,\n asFunction: () => asFunction,\n asNumber: () => asNumber,\n asStringArray: () => asStringArray,\n bufferToString: () => bufferToString,\n callTaskParser: () => callTaskParser,\n createInstanceConfig: () => createInstanceConfig,\n delay: () => delay,\n filterArray: () => filterArray,\n filterFunction: () => filterFunction,\n filterHasLength: () => filterHasLength,\n filterNumber: () => filterNumber,\n filterPlainObject: () => filterPlainObject,\n filterPrimitives: () => filterPrimitives,\n filterString: () => filterString,\n filterStringOrStringArray: () => filterStringOrStringArray,\n filterType: () => filterType,\n first: () => first,\n folderExists: () => folderExists,\n forEachLineWithContent: () => forEachLineWithContent,\n getTrailingOptions: () => getTrailingOptions,\n including: () => including,\n isUserFunction: () => isUserFunction,\n last: () => last,\n objectToString: () => objectToString,\n orVoid: () => orVoid,\n parseStringResponse: () => parseStringResponse,\n pick: () => pick,\n prefixedArray: () => prefixedArray,\n remove: () => remove,\n splitOn: () => splitOn,\n toLinesWithContent: () => toLinesWithContent,\n trailingFunctionArgument: () => trailingFunctionArgument,\n trailingOptionsArgument: () => trailingOptionsArgument\n});\nvar init_utils = __esm({\n \"src/lib/utils/index.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_exit_codes();\n init_git_output_streams();\n init_line_parser();\n init_simple_git_options();\n init_task_options();\n init_task_parser();\n init_util();\n }\n});\n\n// src/lib/tasks/check-is-repo.ts\nvar check_is_repo_exports = {};\n__export(check_is_repo_exports, {\n CheckRepoActions: () => CheckRepoActions,\n checkIsBareRepoTask: () => checkIsBareRepoTask,\n checkIsRepoRootTask: () => checkIsRepoRootTask,\n checkIsRepoTask: () => checkIsRepoTask\n});\nfunction checkIsRepoTask(action) {\n switch (action) {\n case \"bare\" /* BARE */:\n return checkIsBareRepoTask();\n case \"root\" /* IS_REPO_ROOT */:\n return checkIsRepoRootTask();\n }\n const commands = [\"rev-parse\", \"--is-inside-work-tree\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction checkIsRepoRootTask() {\n const commands = [\"rev-parse\", \"--git-dir\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser(path) {\n return /^\\.(git)?$/.test(path.trim());\n }\n };\n}\nfunction checkIsBareRepoTask() {\n const commands = [\"rev-parse\", \"--is-bare-repository\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction isNotRepoMessage(error) {\n return /(Not a git repository|Kein Git-Repository)/i.test(String(error));\n}\nvar CheckRepoActions, onError, parser;\nvar init_check_is_repo = __esm({\n \"src/lib/tasks/check-is-repo.ts\"() {\n \"use strict\";\n init_utils();\n CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => {\n CheckRepoActions2[\"BARE\"] = \"bare\";\n CheckRepoActions2[\"IN_TREE\"] = \"tree\";\n CheckRepoActions2[\"IS_REPO_ROOT\"] = \"root\";\n return CheckRepoActions2;\n })(CheckRepoActions || {});\n onError = ({ exitCode }, error, done, fail) => {\n if (exitCode === 128 /* UNCLEAN */ && isNotRepoMessage(error)) {\n return done(Buffer.from(\"false\"));\n }\n fail(error);\n };\n parser = (text) => {\n return text.trim() === \"true\";\n };\n }\n});\n\n// src/lib/responses/CleanSummary.ts\nfunction cleanSummaryParser(dryRun, text) {\n const summary = new CleanResponse(dryRun);\n const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;\n toLinesWithContent(text).forEach((line) => {\n const removed = line.replace(regexp, \"\");\n summary.paths.push(removed);\n (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);\n });\n return summary;\n}\nvar CleanResponse, removalRegexp, dryRunRemovalRegexp, isFolderRegexp;\nvar init_CleanSummary = __esm({\n \"src/lib/responses/CleanSummary.ts\"() {\n \"use strict\";\n init_utils();\n CleanResponse = class {\n constructor(dryRun) {\n this.dryRun = dryRun;\n this.paths = [];\n this.files = [];\n this.folders = [];\n }\n };\n removalRegexp = /^[a-z]+\\s*/i;\n dryRunRemovalRegexp = /^[a-z]+\\s+[a-z]+\\s*/i;\n isFolderRegexp = /\\/$/;\n }\n});\n\n// src/lib/tasks/task.ts\nvar task_exports = {};\n__export(task_exports, {\n EMPTY_COMMANDS: () => EMPTY_COMMANDS,\n adhocExecTask: () => adhocExecTask,\n configurationErrorTask: () => configurationErrorTask,\n isBufferTask: () => isBufferTask,\n isEmptyTask: () => isEmptyTask,\n straightThroughBufferTask: () => straightThroughBufferTask,\n straightThroughStringTask: () => straightThroughStringTask\n});\nfunction adhocExecTask(parser4) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser: parser4\n };\n}\nfunction configurationErrorTask(error) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser() {\n throw typeof error === \"string\" ? new TaskConfigurationError(error) : error;\n }\n };\n}\nfunction straightThroughStringTask(commands, trimmed2 = false) {\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return trimmed2 ? String(text).trim() : text;\n }\n };\n}\nfunction straightThroughBufferTask(commands) {\n return {\n commands,\n format: \"buffer\",\n parser(buffer) {\n return buffer;\n }\n };\n}\nfunction isBufferTask(task) {\n return task.format === \"buffer\";\n}\nfunction isEmptyTask(task) {\n return task.format === \"empty\" || !task.commands.length;\n}\nvar EMPTY_COMMANDS;\nvar init_task = __esm({\n \"src/lib/tasks/task.ts\"() {\n \"use strict\";\n init_task_configuration_error();\n EMPTY_COMMANDS = [];\n }\n});\n\n// src/lib/tasks/clean.ts\nvar clean_exports = {};\n__export(clean_exports, {\n CONFIG_ERROR_INTERACTIVE_MODE: () => CONFIG_ERROR_INTERACTIVE_MODE,\n CONFIG_ERROR_MODE_REQUIRED: () => CONFIG_ERROR_MODE_REQUIRED,\n CONFIG_ERROR_UNKNOWN_OPTION: () => CONFIG_ERROR_UNKNOWN_OPTION,\n CleanOptions: () => CleanOptions,\n cleanTask: () => cleanTask,\n cleanWithOptionsTask: () => cleanWithOptionsTask,\n isCleanOptionsArray: () => isCleanOptionsArray\n});\nfunction cleanWithOptionsTask(mode, customArgs) {\n const { cleanMode, options, valid } = getCleanOptions(mode);\n if (!cleanMode) {\n return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);\n }\n if (!valid.options) {\n return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));\n }\n options.push(...customArgs);\n if (options.some(isInteractiveMode)) {\n return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);\n }\n return cleanTask(cleanMode, options);\n}\nfunction cleanTask(mode, customArgs) {\n const commands = [\"clean\", `-${mode}`, ...customArgs];\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return cleanSummaryParser(mode === \"n\" /* DRY_RUN */, text);\n }\n };\n}\nfunction isCleanOptionsArray(input) {\n return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));\n}\nfunction getCleanOptions(input) {\n let cleanMode;\n let options = [];\n let valid = { cleanMode: false, options: true };\n input.replace(/[^a-z]i/g, \"\").split(\"\").forEach((char) => {\n if (isCleanMode(char)) {\n cleanMode = char;\n valid.cleanMode = true;\n } else {\n valid.options = valid.options && isKnownOption(options[options.length] = `-${char}`);\n }\n });\n return {\n cleanMode,\n options,\n valid\n };\n}\nfunction isCleanMode(cleanMode) {\n return cleanMode === \"f\" /* FORCE */ || cleanMode === \"n\" /* DRY_RUN */;\n}\nfunction isKnownOption(option) {\n return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));\n}\nfunction isInteractiveMode(option) {\n if (/^-[^\\-]/.test(option)) {\n return option.indexOf(\"i\") > 0;\n }\n return option === \"--interactive\";\n}\nvar CONFIG_ERROR_INTERACTIVE_MODE, CONFIG_ERROR_MODE_REQUIRED, CONFIG_ERROR_UNKNOWN_OPTION, CleanOptions, CleanOptionValues;\nvar init_clean = __esm({\n \"src/lib/tasks/clean.ts\"() {\n \"use strict\";\n init_CleanSummary();\n init_utils();\n init_task();\n CONFIG_ERROR_INTERACTIVE_MODE = \"Git clean interactive mode is not supported\";\n CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter (\"n\" or \"f\") is required';\n CONFIG_ERROR_UNKNOWN_OPTION = \"Git clean unknown option found in: \";\n CleanOptions = /* @__PURE__ */ ((CleanOptions2) => {\n CleanOptions2[\"DRY_RUN\"] = \"n\";\n CleanOptions2[\"FORCE\"] = \"f\";\n CleanOptions2[\"IGNORED_INCLUDED\"] = \"x\";\n CleanOptions2[\"IGNORED_ONLY\"] = \"X\";\n CleanOptions2[\"EXCLUDING\"] = \"e\";\n CleanOptions2[\"QUIET\"] = \"q\";\n CleanOptions2[\"RECURSIVE\"] = \"d\";\n return CleanOptions2;\n })(CleanOptions || {});\n CleanOptionValues = /* @__PURE__ */ new Set([\n \"i\",\n ...asStringArray(Object.values(CleanOptions))\n ]);\n }\n});\n\n// src/lib/responses/ConfigList.ts\nfunction configListParser(text) {\n const config = new ConfigList();\n for (const item of configParser(text)) {\n config.addValue(item.file, String(item.key), item.value);\n }\n return config;\n}\nfunction configGetParser(text, key) {\n let value = null;\n const values = [];\n const scopes = /* @__PURE__ */ new Map();\n for (const item of configParser(text, key)) {\n if (item.key !== key) {\n continue;\n }\n values.push(value = item.value);\n if (!scopes.has(item.file)) {\n scopes.set(item.file, []);\n }\n scopes.get(item.file).push(value);\n }\n return {\n key,\n paths: Array.from(scopes.keys()),\n scopes,\n value,\n values\n };\n}\nfunction configFilePath(filePath) {\n return filePath.replace(/^(file):/, \"\");\n}\nfunction* configParser(text, requestedKey = null) {\n const lines = text.split(\"\\0\");\n for (let i = 0, max = lines.length - 1; i < max; ) {\n const file = configFilePath(lines[i++]);\n let value = lines[i++];\n let key = requestedKey;\n if (value.includes(\"\\n\")) {\n const line = splitOn(value, \"\\n\");\n key = line[0];\n value = line[1];\n }\n yield { file, key, value };\n }\n}\nvar ConfigList;\nvar init_ConfigList = __esm({\n \"src/lib/responses/ConfigList.ts\"() {\n \"use strict\";\n init_utils();\n ConfigList = class {\n constructor() {\n this.files = [];\n this.values = /* @__PURE__ */ Object.create(null);\n }\n get all() {\n if (!this._all) {\n this._all = this.files.reduce((all, file) => {\n return Object.assign(all, this.values[file]);\n }, {});\n }\n return this._all;\n }\n addFile(file) {\n if (!(file in this.values)) {\n const latest = last(this.files);\n this.values[file] = latest ? Object.create(this.values[latest]) : {};\n this.files.push(file);\n }\n return this.values[file];\n }\n addValue(file, key, value) {\n const values = this.addFile(file);\n if (!Object.hasOwn(values, key)) {\n values[key] = value;\n } else if (Array.isArray(values[key])) {\n values[key].push(value);\n } else {\n values[key] = [values[key], value];\n }\n this._all = void 0;\n }\n };\n }\n});\n\n// src/lib/tasks/config.ts\nfunction asConfigScope(scope, fallback) {\n if (typeof scope === \"string\" && Object.hasOwn(GitConfigScope, scope)) {\n return scope;\n }\n return fallback;\n}\nfunction addConfigTask(key, value, append2, scope) {\n const commands = [\"config\", `--${scope}`];\n if (append2) {\n commands.push(\"--add\");\n }\n commands.push(key, value);\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return text;\n }\n };\n}\nfunction getConfigTask(key, scope) {\n const commands = [\"config\", \"--null\", \"--show-origin\", \"--get-all\", key];\n if (scope) {\n commands.splice(1, 0, `--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configGetParser(text, key);\n }\n };\n}\nfunction listConfigTask(scope) {\n const commands = [\"config\", \"--list\", \"--show-origin\", \"--null\"];\n if (scope) {\n commands.push(`--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configListParser(text);\n }\n };\n}\nfunction config_default() {\n return {\n addConfig(key, value, ...rest) {\n return this._runTask(\n addConfigTask(\n key,\n value,\n rest[0] === true,\n asConfigScope(rest[1], \"local\" /* local */)\n ),\n trailingFunctionArgument(arguments)\n );\n },\n getConfig(key, scope) {\n return this._runTask(\n getConfigTask(key, asConfigScope(scope, void 0)),\n trailingFunctionArgument(arguments)\n );\n },\n listConfig(...rest) {\n return this._runTask(\n listConfigTask(asConfigScope(rest[0], void 0)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar GitConfigScope;\nvar init_config = __esm({\n \"src/lib/tasks/config.ts\"() {\n \"use strict\";\n init_ConfigList();\n init_utils();\n GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => {\n GitConfigScope2[\"system\"] = \"system\";\n GitConfigScope2[\"global\"] = \"global\";\n GitConfigScope2[\"local\"] = \"local\";\n GitConfigScope2[\"worktree\"] = \"worktree\";\n return GitConfigScope2;\n })(GitConfigScope || {});\n }\n});\n\n// src/lib/tasks/diff-name-status.ts\nfunction isDiffNameStatus(input) {\n return diffNameStatus.has(input);\n}\nvar DiffNameStatus, diffNameStatus;\nvar init_diff_name_status = __esm({\n \"src/lib/tasks/diff-name-status.ts\"() {\n \"use strict\";\n DiffNameStatus = /* @__PURE__ */ ((DiffNameStatus2) => {\n DiffNameStatus2[\"ADDED\"] = \"A\";\n DiffNameStatus2[\"COPIED\"] = \"C\";\n DiffNameStatus2[\"DELETED\"] = \"D\";\n DiffNameStatus2[\"MODIFIED\"] = \"M\";\n DiffNameStatus2[\"RENAMED\"] = \"R\";\n DiffNameStatus2[\"CHANGED\"] = \"T\";\n DiffNameStatus2[\"UNMERGED\"] = \"U\";\n DiffNameStatus2[\"UNKNOWN\"] = \"X\";\n DiffNameStatus2[\"BROKEN\"] = \"B\";\n return DiffNameStatus2;\n })(DiffNameStatus || {});\n diffNameStatus = new Set(Object.values(DiffNameStatus));\n }\n});\n\n// src/lib/tasks/grep.ts\nfunction grepQueryBuilder(...params) {\n return new GrepQuery().param(...params);\n}\nfunction parseGrep(grep) {\n const paths = /* @__PURE__ */ new Set();\n const results = {};\n forEachLineWithContent(grep, (input) => {\n const [path, line, preview] = input.split(NULL);\n paths.add(path);\n (results[path] = results[path] || []).push({\n line: asNumber(line),\n path,\n preview\n });\n });\n return {\n paths,\n results\n };\n}\nfunction grep_default() {\n return {\n grep(searchTerm) {\n const then = trailingFunctionArgument(arguments);\n const options = getTrailingOptions(arguments);\n for (const option of disallowedOptions) {\n if (options.includes(option)) {\n return this._runTask(\n configurationErrorTask(`git.grep: use of \"${option}\" is not supported.`),\n then\n );\n }\n }\n if (typeof searchTerm === \"string\") {\n searchTerm = grepQueryBuilder().param(searchTerm);\n }\n const commands = [\"grep\", \"--null\", \"-n\", \"--full-name\", ...options, ...searchTerm];\n return this._runTask(\n {\n commands,\n format: \"utf-8\",\n parser(stdOut) {\n return parseGrep(stdOut);\n }\n },\n then\n );\n }\n };\n}\nvar disallowedOptions, Query, _a, GrepQuery;\nvar init_grep = __esm({\n \"src/lib/tasks/grep.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n disallowedOptions = [\"-h\"];\n Query = Symbol(\"grepQuery\");\n GrepQuery = class {\n constructor() {\n this[_a] = [];\n }\n *[(_a = Query, Symbol.iterator)]() {\n for (const query of this[Query]) {\n yield query;\n }\n }\n and(...and) {\n and.length && this[Query].push(\"--and\", \"(\", ...prefixedArray(and, \"-e\"), \")\");\n return this;\n }\n param(...param) {\n this[Query].push(...prefixedArray(param, \"-e\"));\n return this;\n }\n };\n }\n});\n\n// src/lib/tasks/reset.ts\nvar reset_exports = {};\n__export(reset_exports, {\n ResetMode: () => ResetMode,\n getResetMode: () => getResetMode,\n resetTask: () => resetTask\n});\nfunction resetTask(mode, customArgs) {\n const commands = [\"reset\"];\n if (isValidResetMode(mode)) {\n commands.push(`--${mode}`);\n }\n commands.push(...customArgs);\n return straightThroughStringTask(commands);\n}\nfunction getResetMode(mode) {\n if (isValidResetMode(mode)) {\n return mode;\n }\n switch (typeof mode) {\n case \"string\":\n case \"undefined\":\n return \"soft\" /* SOFT */;\n }\n return;\n}\nfunction isValidResetMode(mode) {\n return typeof mode === \"string\" && validResetModes.includes(mode);\n}\nvar ResetMode, validResetModes;\nvar init_reset = __esm({\n \"src/lib/tasks/reset.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n ResetMode = /* @__PURE__ */ ((ResetMode2) => {\n ResetMode2[\"MIXED\"] = \"mixed\";\n ResetMode2[\"SOFT\"] = \"soft\";\n ResetMode2[\"HARD\"] = \"hard\";\n ResetMode2[\"MERGE\"] = \"merge\";\n ResetMode2[\"KEEP\"] = \"keep\";\n return ResetMode2;\n })(ResetMode || {});\n validResetModes = asStringArray(Object.values(ResetMode));\n }\n});\n\n// src/lib/git-logger.ts\nimport debug from \"debug\";\nfunction createLog() {\n return debug(\"simple-git\");\n}\nfunction prefixedLogger(to, prefix, forward) {\n if (!prefix || !String(prefix).replace(/\\s*/, \"\")) {\n return !forward ? to : (message, ...args) => {\n to(message, ...args);\n forward(message, ...args);\n };\n }\n return (message, ...args) => {\n to(`%s ${message}`, prefix, ...args);\n if (forward) {\n forward(message, ...args);\n }\n };\n}\nfunction childLoggerName(name, childDebugger, { namespace: parentNamespace }) {\n if (typeof name === \"string\") {\n return name;\n }\n const childNamespace = childDebugger && childDebugger.namespace || \"\";\n if (childNamespace.startsWith(parentNamespace)) {\n return childNamespace.substr(parentNamespace.length + 1);\n }\n return childNamespace || parentNamespace;\n}\nfunction createLogger(label, verbose, initialStep, infoDebugger = createLog()) {\n const labelPrefix = label && `[${label}]` || \"\";\n const spawned = [];\n const debugDebugger = typeof verbose === \"string\" ? infoDebugger.extend(verbose) : verbose;\n const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);\n return step(initialStep);\n function sibling(name, initial) {\n return append(\n spawned,\n createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)\n );\n }\n function step(phase) {\n const stepPrefix = phase && `[${phase}]` || \"\";\n const debug2 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP;\n const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug2);\n return Object.assign(debugDebugger ? debug2 : info, {\n label,\n sibling,\n info,\n step\n });\n }\n}\nvar init_git_logger = __esm({\n \"src/lib/git-logger.ts\"() {\n \"use strict\";\n init_utils();\n debug.formatters.L = (value) => String(filterHasLength(value) ? value.length : \"-\");\n debug.formatters.B = (value) => {\n if (Buffer.isBuffer(value)) {\n return value.toString(\"utf8\");\n }\n return objectToString(value);\n };\n }\n});\n\n// src/lib/runners/tasks-pending-queue.ts\nvar TasksPendingQueue;\nvar init_tasks_pending_queue = __esm({\n \"src/lib/runners/tasks-pending-queue.ts\"() {\n \"use strict\";\n init_git_error();\n init_git_logger();\n TasksPendingQueue = class _TasksPendingQueue {\n constructor(logLabel = \"GitExecutor\") {\n this.logLabel = logLabel;\n this._queue = /* @__PURE__ */ new Map();\n }\n withProgress(task) {\n return this._queue.get(task);\n }\n createProgress(task) {\n const name = _TasksPendingQueue.getName(task.commands[0]);\n const logger = createLogger(this.logLabel, name);\n return {\n task,\n logger,\n name\n };\n }\n push(task) {\n const progress = this.createProgress(task);\n progress.logger(\"Adding task to the queue, commands = %o\", task.commands);\n this._queue.set(task, progress);\n return progress;\n }\n fatal(err) {\n for (const [task, { logger }] of Array.from(this._queue.entries())) {\n if (task === err.task) {\n logger.info(`Failed %o`, err);\n logger(\n `Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`\n );\n } else {\n logger.info(\n `A fatal exception occurred in a previous task, the queue has been purged: %o`,\n err.message\n );\n }\n this.complete(task);\n }\n if (this._queue.size !== 0) {\n throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);\n }\n }\n complete(task) {\n const progress = this.withProgress(task);\n if (progress) {\n this._queue.delete(task);\n }\n }\n attempt(task) {\n const progress = this.withProgress(task);\n if (!progress) {\n throw new GitError(void 0, \"TasksPendingQueue: attempt called for an unknown task\");\n }\n progress.logger(\"Starting task\");\n return progress;\n }\n static getName(name = \"empty\") {\n return `task:${name}:${++_TasksPendingQueue.counter}`;\n }\n static {\n this.counter = 0;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor-chain.ts\nimport { spawn } from \"child_process\";\nfunction pluginContext(task, commands) {\n return {\n method: first(task.commands) || \"\",\n commands\n };\n}\nfunction onErrorReceived(target, logger) {\n return (err) => {\n logger(`[ERROR] child process exception %o`, err);\n target.push(Buffer.from(String(err.stack), \"ascii\"));\n };\n}\nfunction onDataReceived(target, name, logger, output) {\n return (buffer) => {\n logger(`%s received %L bytes`, name, buffer);\n output(`%B`, buffer);\n target.push(buffer);\n };\n}\nvar GitExecutorChain;\nvar init_git_executor_chain = __esm({\n \"src/lib/runners/git-executor-chain.ts\"() {\n \"use strict\";\n init_git_error();\n init_task();\n init_utils();\n init_tasks_pending_queue();\n GitExecutorChain = class {\n constructor(_executor, _scheduler, _plugins) {\n this._executor = _executor;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = Promise.resolve();\n this._queue = new TasksPendingQueue();\n }\n get cwd() {\n return this._cwd || this._executor.cwd;\n }\n set cwd(cwd) {\n this._cwd = cwd;\n }\n get env() {\n return this._executor.env;\n }\n get outputHandler() {\n return this._executor.outputHandler;\n }\n chain() {\n return this;\n }\n push(task) {\n this._queue.push(task);\n return this._chain = this._chain.then(() => this.attemptTask(task));\n }\n async attemptTask(task) {\n const onScheduleComplete = await this._scheduler.next();\n const onQueueComplete = () => this._queue.complete(task);\n try {\n const { logger } = this._queue.attempt(task);\n return await (isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger));\n } catch (e) {\n throw this.onFatalException(task, e);\n } finally {\n onQueueComplete();\n onScheduleComplete();\n }\n }\n onFatalException(task, e) {\n const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));\n this._chain = Promise.resolve();\n this._queue.fatal(gitError);\n return gitError;\n }\n async attemptRemoteTask(task, logger) {\n const binary = this._plugins.exec(\"spawn.binary\", \"\", pluginContext(task, task.commands));\n const args = this._plugins.exec(\n \"spawn.args\",\n [...task.commands],\n pluginContext(task, task.commands)\n );\n const raw = await this.gitResponse(\n task,\n binary,\n args,\n this.outputHandler,\n logger.step(\"SPAWN\")\n );\n const outputStreams = await this.handleTaskData(task, args, raw, logger.step(\"HANDLE\"));\n logger(`passing response to task's parser as a %s`, task.format);\n if (isBufferTask(task)) {\n return callTaskParser(task.parser, outputStreams);\n }\n return callTaskParser(task.parser, outputStreams.asStrings());\n }\n async attemptEmptyTask(task, logger) {\n logger(`empty task bypassing child process to call to task's parser`);\n return task.parser(this);\n }\n handleTaskData(task, args, result, logger) {\n const { exitCode, rejection, stdOut, stdErr } = result;\n return new Promise((done, fail) => {\n logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);\n const { error } = this._plugins.exec(\n \"task.error\",\n { error: rejection },\n {\n ...pluginContext(task, args),\n ...result\n }\n );\n if (error && task.onError) {\n logger.info(`exitCode=%s handling with custom error handler`);\n return task.onError(\n result,\n error,\n (newStdOut) => {\n logger.info(`custom error handler treated as success`);\n logger(`custom error returned a %s`, objectToString(newStdOut));\n done(\n new GitOutputStreams(\n Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut,\n Buffer.concat(stdErr)\n )\n );\n },\n fail\n );\n }\n if (error) {\n logger.info(\n `handling as error: exitCode=%s stdErr=%s rejection=%o`,\n exitCode,\n stdErr.length,\n rejection\n );\n return fail(error);\n }\n logger.info(`retrieving task output complete`);\n done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));\n });\n }\n async gitResponse(task, command, args, outputHandler, logger) {\n const outputLogger = logger.sibling(\"output\");\n const spawnOptions = this._plugins.exec(\n \"spawn.options\",\n {\n cwd: this.cwd,\n env: this.env,\n windowsHide: true\n },\n pluginContext(task, task.commands)\n );\n return new Promise((done) => {\n const stdOut = [];\n const stdErr = [];\n logger.info(`%s %o`, command, args);\n logger(\"%O\", spawnOptions);\n let rejection = this._beforeSpawn(task, args);\n if (rejection) {\n return done({\n stdOut,\n stdErr,\n exitCode: 9901,\n rejection\n });\n }\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n const spawned = spawn(command, args, spawnOptions);\n spawned.stdout.on(\n \"data\",\n onDataReceived(stdOut, \"stdOut\", logger, outputLogger.step(\"stdOut\"))\n );\n spawned.stderr.on(\n \"data\",\n onDataReceived(stdErr, \"stdErr\", logger, outputLogger.step(\"stdErr\"))\n );\n spawned.on(\"error\", onErrorReceived(stdErr, logger));\n if (outputHandler) {\n logger(`Passing child process stdOut/stdErr to custom outputHandler`);\n outputHandler(command, spawned.stdout, spawned.stderr, [...args]);\n }\n this._plugins.exec(\"spawn.after\", void 0, {\n ...pluginContext(task, args),\n spawned,\n close(exitCode, reason) {\n done({\n stdOut,\n stdErr,\n exitCode,\n rejection: rejection || reason\n });\n },\n kill(reason) {\n if (spawned.killed) {\n return;\n }\n rejection = reason;\n spawned.kill(\"SIGINT\");\n }\n });\n });\n }\n _beforeSpawn(task, args) {\n let rejection;\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n return rejection;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor.ts\nvar git_executor_exports = {};\n__export(git_executor_exports, {\n GitExecutor: () => GitExecutor\n});\nvar GitExecutor;\nvar init_git_executor = __esm({\n \"src/lib/runners/git-executor.ts\"() {\n \"use strict\";\n init_git_executor_chain();\n GitExecutor = class {\n constructor(cwd, _scheduler, _plugins) {\n this.cwd = cwd;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n chain() {\n return new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n push(task) {\n return this._chain.push(task);\n }\n };\n }\n});\n\n// src/lib/task-callback.ts\nfunction taskCallback(task, response, callback = NOOP) {\n const onSuccess = (data) => {\n callback(null, data);\n };\n const onError2 = (err) => {\n if (err?.task === task) {\n callback(\n err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err,\n void 0\n );\n }\n };\n response.then(onSuccess, onError2);\n}\nfunction addDeprecationNoticeToError(err) {\n let log = (name) => {\n console.warn(\n `simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`\n );\n log = NOOP;\n };\n return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));\n function descriptorReducer(all, name) {\n if (name in err) {\n return all;\n }\n all[name] = {\n enumerable: false,\n configurable: false,\n get() {\n log(name);\n return err.git[name];\n }\n };\n return all;\n }\n}\nvar init_task_callback = __esm({\n \"src/lib/task-callback.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_utils();\n }\n});\n\n// src/lib/tasks/change-working-directory.ts\nfunction changeWorkingDirectoryTask(directory, root) {\n return adhocExecTask((instance) => {\n if (!folderExists(directory)) {\n throw new Error(`Git.cwd: cannot change to non-directory \"${directory}\"`);\n }\n return (root || instance).cwd = directory;\n });\n}\nvar init_change_working_directory = __esm({\n \"src/lib/tasks/change-working-directory.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/checkout.ts\nfunction checkoutTask(args) {\n const commands = [\"checkout\", ...args];\n if (commands[1] === \"-b\" && commands.includes(\"-B\")) {\n commands[1] = remove(commands, \"-B\");\n }\n return straightThroughStringTask(commands);\n}\nfunction checkout_default() {\n return {\n checkout() {\n return this._runTask(\n checkoutTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutBranch(branchName, startPoint) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, startPoint, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutLocalBranch(branchName) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_checkout = __esm({\n \"src/lib/tasks/checkout.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/count-objects.ts\nfunction countObjectsResponse() {\n return {\n count: 0,\n garbage: 0,\n inPack: 0,\n packs: 0,\n prunePackable: 0,\n size: 0,\n sizeGarbage: 0,\n sizePack: 0\n };\n}\nfunction count_objects_default() {\n return {\n countObjects() {\n return this._runTask({\n commands: [\"count-objects\", \"--verbose\"],\n format: \"utf-8\",\n parser(stdOut) {\n return parseStringResponse(countObjectsResponse(), [parser2], stdOut);\n }\n });\n }\n };\n}\nvar parser2;\nvar init_count_objects = __esm({\n \"src/lib/tasks/count-objects.ts\"() {\n \"use strict\";\n init_utils();\n parser2 = new LineParser(\n /([a-z-]+): (\\d+)$/,\n (result, [key, value]) => {\n const property = asCamelCase(key);\n if (Object.hasOwn(result, property)) {\n result[property] = asNumber(value);\n }\n }\n );\n }\n});\n\n// src/lib/parsers/parse-commit.ts\nfunction parseCommitResult(stdOut) {\n const result = {\n author: null,\n branch: \"\",\n commit: \"\",\n root: false,\n summary: {\n changes: 0,\n insertions: 0,\n deletions: 0\n }\n };\n return parseStringResponse(result, parsers, stdOut);\n}\nvar parsers;\nvar init_parse_commit = __esm({\n \"src/lib/parsers/parse-commit.ts\"() {\n \"use strict\";\n init_utils();\n parsers = [\n new LineParser(/^\\[([^\\s]+)( \\([^)]+\\))? ([^\\]]+)/, (result, [branch, root, commit]) => {\n result.branch = branch;\n result.commit = commit;\n result.root = !!root;\n }),\n new LineParser(/\\s*Author:\\s(.+)/i, (result, [author]) => {\n const parts = author.split(\"<\");\n const email = parts.pop();\n if (!email || !email.includes(\"@\")) {\n return;\n }\n result.author = {\n email: email.substr(0, email.length - 1),\n name: parts.join(\"<\").trim()\n };\n }),\n new LineParser(\n /(\\d+)[^,]*(?:,\\s*(\\d+)[^,]*)(?:,\\s*(\\d+))/g,\n (result, [changes, insertions, deletions]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n result.summary.insertions = parseInt(insertions, 10) || 0;\n result.summary.deletions = parseInt(deletions, 10) || 0;\n }\n ),\n new LineParser(\n /^(\\d+)[^,]*(?:,\\s*(\\d+)[^(]+\\(([+-]))?/,\n (result, [changes, lines, direction]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n const count = parseInt(lines, 10) || 0;\n if (direction === \"-\") {\n result.summary.deletions = count;\n } else if (direction === \"+\") {\n result.summary.insertions = count;\n }\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/commit.ts\nfunction commitTask(message, files, customArgs) {\n const commands = [\n \"-c\",\n \"core.abbrev=40\",\n \"commit\",\n ...prefixedArray(message, \"-m\"),\n ...files,\n ...customArgs\n ];\n return {\n commands,\n format: \"utf-8\",\n parser: parseCommitResult\n };\n}\nfunction commit_default() {\n return {\n commit(message, ...rest) {\n const next = trailingFunctionArgument(arguments);\n const task = rejectDeprecatedSignatures(message) || commitTask(\n asArray(message),\n asArray(filterType(rest[0], filterStringOrStringArray, [])),\n [\n ...asStringArray(filterType(rest[1], filterArray, [])),\n ...getTrailingOptions(arguments, 0, true)\n ]\n );\n return this._runTask(task, next);\n }\n };\n function rejectDeprecatedSignatures(message) {\n return !filterStringOrStringArray(message) && configurationErrorTask(\n `git.commit: requires the commit message to be supplied as a string/string[]`\n );\n }\n}\nvar init_commit = __esm({\n \"src/lib/tasks/commit.ts\"() {\n \"use strict\";\n init_parse_commit();\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/first-commit.ts\nfunction first_commit_default() {\n return {\n firstCommit() {\n return this._runTask(\n straightThroughStringTask([\"rev-list\", \"--max-parents=0\", \"HEAD\"], true),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_first_commit = __esm({\n \"src/lib/tasks/first-commit.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/hash-object.ts\nfunction hashObjectTask(filePath, write) {\n const commands = [\"hash-object\", filePath];\n if (write) {\n commands.push(\"-w\");\n }\n return straightThroughStringTask(commands, true);\n}\nvar init_hash_object = __esm({\n \"src/lib/tasks/hash-object.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/InitSummary.ts\nfunction parseInit(bare, path, text) {\n const response = String(text).trim();\n let result;\n if (result = initResponseRegex.exec(response)) {\n return new InitSummary(bare, path, false, result[1]);\n }\n if (result = reInitResponseRegex.exec(response)) {\n return new InitSummary(bare, path, true, result[1]);\n }\n let gitDir = \"\";\n const tokens = response.split(\" \");\n while (tokens.length) {\n const token = tokens.shift();\n if (token === \"in\") {\n gitDir = tokens.join(\" \");\n break;\n }\n }\n return new InitSummary(bare, path, /^re/i.test(response), gitDir);\n}\nvar InitSummary, initResponseRegex, reInitResponseRegex;\nvar init_InitSummary = __esm({\n \"src/lib/responses/InitSummary.ts\"() {\n \"use strict\";\n InitSummary = class {\n constructor(bare, path, existing, gitDir) {\n this.bare = bare;\n this.path = path;\n this.existing = existing;\n this.gitDir = gitDir;\n }\n };\n initResponseRegex = /^Init.+ repository in (.+)$/;\n reInitResponseRegex = /^Rein.+ in (.+)$/;\n }\n});\n\n// src/lib/tasks/init.ts\nfunction hasBareCommand(command) {\n return command.includes(bareCommand);\n}\nfunction initTask(bare = false, path, customArgs) {\n const commands = [\"init\", ...customArgs];\n if (bare && !hasBareCommand(commands)) {\n commands.splice(1, 0, bareCommand);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return parseInit(commands.includes(\"--bare\"), path, text);\n }\n };\n}\nvar bareCommand;\nvar init_init = __esm({\n \"src/lib/tasks/init.ts\"() {\n \"use strict\";\n init_InitSummary();\n bareCommand = \"--bare\";\n }\n});\n\n// src/lib/args/log-format.ts\nfunction logFormatFromCommand(customArgs) {\n for (let i = 0; i < customArgs.length; i++) {\n const format = logFormatRegex.exec(customArgs[i]);\n if (format) {\n return `--${format[1]}`;\n }\n }\n return \"\" /* NONE */;\n}\nfunction isLogFormat(customArg) {\n return logFormatRegex.test(customArg);\n}\nvar logFormatRegex;\nvar init_log_format = __esm({\n \"src/lib/args/log-format.ts\"() {\n \"use strict\";\n logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;\n }\n});\n\n// src/lib/responses/DiffSummary.ts\nvar DiffSummary;\nvar init_DiffSummary = __esm({\n \"src/lib/responses/DiffSummary.ts\"() {\n \"use strict\";\n DiffSummary = class {\n constructor() {\n this.changed = 0;\n this.deletions = 0;\n this.insertions = 0;\n this.files = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-diff-summary.ts\nfunction getDiffParser(format = \"\" /* NONE */) {\n const parser4 = diffSummaryParsers[format];\n return (stdOut) => parseStringResponse(new DiffSummary(), parser4, stdOut, false);\n}\nvar statParser, numStatParser, nameOnlyParser, nameStatusParser, diffSummaryParsers;\nvar init_parse_diff_summary = __esm({\n \"src/lib/parsers/parse-diff-summary.ts\"() {\n \"use strict\";\n init_log_format();\n init_DiffSummary();\n init_diff_name_status();\n init_utils();\n statParser = [\n new LineParser(\n /^(.+)\\s+\\|\\s+(\\d+)(\\s+[+\\-]+)?$/,\n (result, [file, changes, alterations = \"\"]) => {\n result.files.push({\n file: file.trim(),\n changes: asNumber(changes),\n insertions: alterations.replace(/[^+]/g, \"\").length,\n deletions: alterations.replace(/[^-]/g, \"\").length,\n binary: false\n });\n }\n ),\n new LineParser(\n /^(.+) \\|\\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,\n (result, [file, before, after]) => {\n result.files.push({\n file: file.trim(),\n before: asNumber(before),\n after: asNumber(after),\n binary: true\n });\n }\n ),\n new LineParser(\n /(\\d+) files? changed\\s*((?:, \\d+ [^,]+){0,2})/,\n (result, [changed, summary]) => {\n const inserted = /(\\d+) i/.exec(summary);\n const deleted = /(\\d+) d/.exec(summary);\n result.changed = asNumber(changed);\n result.insertions = asNumber(inserted?.[1]);\n result.deletions = asNumber(deleted?.[1]);\n }\n )\n ];\n numStatParser = [\n new LineParser(\n /(\\d+)\\t(\\d+)\\t(.+)$/,\n (result, [changesInsert, changesDelete, file]) => {\n const insertions = asNumber(changesInsert);\n const deletions = asNumber(changesDelete);\n result.changed++;\n result.insertions += insertions;\n result.deletions += deletions;\n result.files.push({\n file,\n changes: insertions + deletions,\n insertions,\n deletions,\n binary: false\n });\n }\n ),\n new LineParser(/-\\t-\\t(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n after: 0,\n before: 0,\n binary: true\n });\n })\n ];\n nameOnlyParser = [\n new LineParser(/(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false\n });\n })\n ];\n nameStatusParser = [\n new LineParser(\n /([ACDMRTUXB])([0-9]{0,3})\\t(.[^\\t]*)(\\t(.[^\\t]*))?$/,\n (result, [status, similarity, from, _to, to]) => {\n result.changed++;\n result.files.push({\n file: to ?? from,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n status: orVoid(isDiffNameStatus(status) && status),\n from: orVoid(!!to && from !== to && from),\n similarity: asNumber(similarity)\n });\n }\n )\n ];\n diffSummaryParsers = {\n [\"\" /* NONE */]: statParser,\n [\"--stat\" /* STAT */]: statParser,\n [\"--numstat\" /* NUM_STAT */]: numStatParser,\n [\"--name-status\" /* NAME_STATUS */]: nameStatusParser,\n [\"--name-only\" /* NAME_ONLY */]: nameOnlyParser\n };\n }\n});\n\n// src/lib/parsers/parse-list-log-summary.ts\nfunction lineBuilder(tokens, fields) {\n return fields.reduce(\n (line, field, index) => {\n line[field] = tokens[index] || \"\";\n return line;\n },\n /* @__PURE__ */ Object.create({ diff: null })\n );\n}\nfunction createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = \"\" /* NONE */) {\n const parseDiffResult = getDiffParser(logFormat);\n return function(stdOut) {\n const all = toLinesWithContent(\n stdOut.trim(),\n false,\n START_BOUNDARY\n ).map(function(item) {\n const lineDetail = item.split(COMMIT_BOUNDARY);\n const listLogLine = lineBuilder(lineDetail[0].split(splitter), fields);\n if (lineDetail.length > 1 && !!lineDetail[1].trim()) {\n listLogLine.diff = parseDiffResult(lineDetail[1]);\n }\n return listLogLine;\n });\n return {\n all,\n latest: all.length && all[0] || null,\n total: all.length\n };\n };\n}\nvar START_BOUNDARY, COMMIT_BOUNDARY, SPLITTER, defaultFieldNames;\nvar init_parse_list_log_summary = __esm({\n \"src/lib/parsers/parse-list-log-summary.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_diff_summary();\n init_log_format();\n START_BOUNDARY = \"\\xF2\\xF2\\xF2\\xF2\\xF2\\xF2 \";\n COMMIT_BOUNDARY = \" \\xF2\\xF2\";\n SPLITTER = \" \\xF2 \";\n defaultFieldNames = [\"hash\", \"date\", \"message\", \"refs\", \"author_name\", \"author_email\"];\n }\n});\n\n// src/lib/tasks/diff.ts\nvar diff_exports = {};\n__export(diff_exports, {\n diffSummaryTask: () => diffSummaryTask,\n validateLogFormatConfig: () => validateLogFormatConfig\n});\nfunction diffSummaryTask(customArgs) {\n let logFormat = logFormatFromCommand(customArgs);\n const commands = [\"diff\"];\n if (logFormat === \"\" /* NONE */) {\n logFormat = \"--stat\" /* STAT */;\n commands.push(\"--stat=4096\");\n }\n commands.push(...customArgs);\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: getDiffParser(logFormat)\n };\n}\nfunction validateLogFormatConfig(customArgs) {\n const flags = customArgs.filter(isLogFormat);\n if (flags.length > 1) {\n return configurationErrorTask(\n `Summary flags are mutually exclusive - pick one of ${flags.join(\",\")}`\n );\n }\n if (flags.length && customArgs.includes(\"-z\")) {\n return configurationErrorTask(\n `Summary flag ${flags} parsing is not compatible with null termination option '-z'`\n );\n }\n}\nvar init_diff = __esm({\n \"src/lib/tasks/diff.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_diff_summary();\n init_task();\n }\n});\n\n// src/lib/tasks/log.ts\nfunction prettyFormat(format, splitter) {\n const fields = [];\n const formatStr = [];\n Object.keys(format).forEach((field) => {\n fields.push(field);\n formatStr.push(String(format[field]));\n });\n return [fields, formatStr.join(splitter)];\n}\nfunction userOptions(input) {\n return Object.keys(input).reduce((out, key) => {\n if (!(key in excludeOptions)) {\n out[key] = input[key];\n }\n return out;\n }, {});\n}\nfunction parseLogOptions(opt = {}, customArgs = []) {\n const splitter = filterType(opt.splitter, filterString, SPLITTER);\n const format = filterPlainObject(opt.format) ? opt.format : {\n hash: \"%H\",\n date: opt.strictDate === false ? \"%ai\" : \"%aI\",\n message: \"%s\",\n refs: \"%D\",\n body: opt.multiLine ? \"%B\" : \"%b\",\n author_name: opt.mailMap !== false ? \"%aN\" : \"%an\",\n author_email: opt.mailMap !== false ? \"%aE\" : \"%ae\"\n };\n const [fields, formatStr] = prettyFormat(format, splitter);\n const suffix = [];\n const command = [\n `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,\n ...customArgs\n ];\n const maxCount = opt.n || opt[\"max-count\"] || opt.maxCount;\n if (maxCount) {\n command.push(`--max-count=${maxCount}`);\n }\n if (opt.from || opt.to) {\n const rangeOperator = opt.symmetric !== false ? \"...\" : \"..\";\n suffix.push(`${opt.from || \"\"}${rangeOperator}${opt.to || \"\"}`);\n }\n if (filterString(opt.file)) {\n command.push(\"--follow\", pathspec(opt.file));\n }\n appendTaskOptions(userOptions(opt), command);\n return {\n fields,\n splitter,\n commands: [...command, ...suffix]\n };\n}\nfunction logTask(splitter, fields, customArgs) {\n const parser4 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));\n return {\n commands: [\"log\", ...customArgs],\n format: \"utf-8\",\n parser: parser4\n };\n}\nfunction log_default() {\n return {\n log(...rest) {\n const next = trailingFunctionArgument(arguments);\n const options = parseLogOptions(\n trailingOptionsArgument(arguments),\n asStringArray(filterType(arguments[0], filterArray, []))\n );\n const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options);\n return this._runTask(task, next);\n }\n };\n function createLogTask(options) {\n return logTask(options.splitter, options.fields, options.commands);\n }\n function rejectDeprecatedSignatures(from, to) {\n return filterString(from) && filterString(to) && configurationErrorTask(\n `git.log(string, string) should be replaced with git.log({ from: string, to: string })`\n );\n }\n}\nvar excludeOptions;\nvar init_log = __esm({\n \"src/lib/tasks/log.ts\"() {\n \"use strict\";\n init_log_format();\n init_pathspec();\n init_parse_list_log_summary();\n init_utils();\n init_task();\n init_diff();\n excludeOptions = /* @__PURE__ */ ((excludeOptions2) => {\n excludeOptions2[excludeOptions2[\"--pretty\"] = 0] = \"--pretty\";\n excludeOptions2[excludeOptions2[\"max-count\"] = 1] = \"max-count\";\n excludeOptions2[excludeOptions2[\"maxCount\"] = 2] = \"maxCount\";\n excludeOptions2[excludeOptions2[\"n\"] = 3] = \"n\";\n excludeOptions2[excludeOptions2[\"file\"] = 4] = \"file\";\n excludeOptions2[excludeOptions2[\"format\"] = 5] = \"format\";\n excludeOptions2[excludeOptions2[\"from\"] = 6] = \"from\";\n excludeOptions2[excludeOptions2[\"to\"] = 7] = \"to\";\n excludeOptions2[excludeOptions2[\"splitter\"] = 8] = \"splitter\";\n excludeOptions2[excludeOptions2[\"symmetric\"] = 9] = \"symmetric\";\n excludeOptions2[excludeOptions2[\"mailMap\"] = 10] = \"mailMap\";\n excludeOptions2[excludeOptions2[\"multiLine\"] = 11] = \"multiLine\";\n excludeOptions2[excludeOptions2[\"strictDate\"] = 12] = \"strictDate\";\n return excludeOptions2;\n })(excludeOptions || {});\n }\n});\n\n// src/lib/responses/MergeSummary.ts\nvar MergeSummaryConflict, MergeSummaryDetail;\nvar init_MergeSummary = __esm({\n \"src/lib/responses/MergeSummary.ts\"() {\n \"use strict\";\n MergeSummaryConflict = class {\n constructor(reason, file = null, meta) {\n this.reason = reason;\n this.file = file;\n this.meta = meta;\n }\n toString() {\n return `${this.file}:${this.reason}`;\n }\n };\n MergeSummaryDetail = class {\n constructor() {\n this.conflicts = [];\n this.merges = [];\n this.result = \"success\";\n }\n get failed() {\n return this.conflicts.length > 0;\n }\n get reason() {\n return this.result;\n }\n toString() {\n if (this.conflicts.length) {\n return `CONFLICTS: ${this.conflicts.join(\", \")}`;\n }\n return \"OK\";\n }\n };\n }\n});\n\n// src/lib/responses/PullSummary.ts\nvar PullSummary, PullFailedSummary;\nvar init_PullSummary = __esm({\n \"src/lib/responses/PullSummary.ts\"() {\n \"use strict\";\n PullSummary = class {\n constructor() {\n this.remoteMessages = {\n all: []\n };\n this.created = [];\n this.deleted = [];\n this.files = [];\n this.deletions = {};\n this.insertions = {};\n this.summary = {\n changes: 0,\n deletions: 0,\n insertions: 0\n };\n }\n };\n PullFailedSummary = class {\n constructor() {\n this.remote = \"\";\n this.hash = {\n local: \"\",\n remote: \"\"\n };\n this.branch = {\n local: \"\",\n remote: \"\"\n };\n this.message = \"\";\n }\n toString() {\n return this.message;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-remote-objects.ts\nfunction objectEnumerationResult(remoteMessages) {\n return remoteMessages.objects = remoteMessages.objects || {\n compressing: 0,\n counting: 0,\n enumerating: 0,\n packReused: 0,\n reused: { count: 0, delta: 0 },\n total: { count: 0, delta: 0 }\n };\n}\nfunction asObjectCount(source) {\n const count = /^\\s*(\\d+)/.exec(source);\n const delta = /delta (\\d+)/i.exec(source);\n return {\n count: asNumber(count && count[1] || \"0\"),\n delta: asNumber(delta && delta[1] || \"0\")\n };\n}\nvar remoteMessagesObjectParsers;\nvar init_parse_remote_objects = __esm({\n \"src/lib/parsers/parse-remote-objects.ts\"() {\n \"use strict\";\n init_utils();\n remoteMessagesObjectParsers = [\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: (\\d+),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: \\d+% \\(\\d+\\/(\\d+)\\),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /total ([^,]+), reused ([^,]+), pack-reused (\\d+)/i,\n (result, [total, reused, packReused]) => {\n const objects = objectEnumerationResult(result.remoteMessages);\n objects.total = asObjectCount(total);\n objects.reused = asObjectCount(reused);\n objects.packReused = asNumber(packReused);\n }\n )\n ];\n }\n});\n\n// src/lib/parsers/parse-remote-messages.ts\nfunction parseRemoteMessages(_stdOut, stdErr) {\n return parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers2, stdErr);\n}\nvar parsers2, RemoteMessageSummary;\nvar init_parse_remote_messages = __esm({\n \"src/lib/parsers/parse-remote-messages.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_objects();\n parsers2 = [\n new RemoteLineParser(/^remote:\\s*(.+)$/, (result, [text]) => {\n result.remoteMessages.all.push(text.trim());\n return false;\n }),\n ...remoteMessagesObjectParsers,\n new RemoteLineParser(\n [/create a (?:pull|merge) request/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [pullRequestUrl]) => {\n result.remoteMessages.pullRequestUrl = pullRequestUrl;\n }\n ),\n new RemoteLineParser(\n [/found (\\d+) vulnerabilities.+\\(([^)]+)\\)/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [count, summary, url]) => {\n result.remoteMessages.vulnerabilities = {\n count: asNumber(count),\n summary,\n url\n };\n }\n )\n ];\n RemoteMessageSummary = class {\n constructor() {\n this.all = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-pull.ts\nfunction parsePullErrorResult(stdOut, stdErr) {\n const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);\n return pullError.message && pullError;\n}\nvar FILE_UPDATE_REGEX, SUMMARY_REGEX, ACTION_REGEX, parsers3, errorParsers, parsePullDetail, parsePullResult;\nvar init_parse_pull = __esm({\n \"src/lib/parsers/parse-pull.ts\"() {\n \"use strict\";\n init_PullSummary();\n init_utils();\n init_parse_remote_messages();\n FILE_UPDATE_REGEX = /^\\s*(.+?)\\s+\\|\\s+\\d+\\s*(\\+*)(-*)/;\n SUMMARY_REGEX = /(\\d+)\\D+((\\d+)\\D+\\(\\+\\))?(\\D+(\\d+)\\D+\\(-\\))?/;\n ACTION_REGEX = /^(create|delete) mode \\d+ (.+)/;\n parsers3 = [\n new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {\n result.files.push(file);\n if (insertions) {\n result.insertions[file] = insertions.length;\n }\n if (deletions) {\n result.deletions[file] = deletions.length;\n }\n }),\n new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {\n if (insertions !== void 0 || deletions !== void 0) {\n result.summary.changes = +changes || 0;\n result.summary.insertions = +insertions || 0;\n result.summary.deletions = +deletions || 0;\n return true;\n }\n return false;\n }),\n new LineParser(ACTION_REGEX, (result, [action, file]) => {\n append(result.files, file);\n append(action === \"create\" ? result.created : result.deleted, file);\n })\n ];\n errorParsers = [\n new LineParser(/^from\\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),\n new LineParser(/^fatal:\\s(.+)$/, (result, [message]) => void (result.message = message)),\n new LineParser(\n /([a-z0-9]+)\\.\\.([a-z0-9]+)\\s+(\\S+)\\s+->\\s+(\\S+)$/,\n (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {\n result.branch.local = branchLocal;\n result.hash.local = hashLocal;\n result.branch.remote = branchRemote;\n result.hash.remote = hashRemote;\n }\n )\n ];\n parsePullDetail = (stdOut, stdErr) => {\n return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]);\n };\n parsePullResult = (stdOut, stdErr) => {\n return Object.assign(\n new PullSummary(),\n parsePullDetail(stdOut, stdErr),\n parseRemoteMessages(stdOut, stdErr)\n );\n };\n }\n});\n\n// src/lib/parsers/parse-merge.ts\nvar parsers4, parseMergeResult, parseMergeDetail;\nvar init_parse_merge = __esm({\n \"src/lib/parsers/parse-merge.ts\"() {\n \"use strict\";\n init_MergeSummary();\n init_utils();\n init_parse_pull();\n parsers4 = [\n new LineParser(/^Auto-merging\\s+(.+)$/, (summary, [autoMerge]) => {\n summary.merges.push(autoMerge);\n }),\n new LineParser(/^CONFLICT\\s+\\((.+)\\): Merge conflict in (.+)$/, (summary, [reason, file]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file));\n }),\n new LineParser(\n /^CONFLICT\\s+\\((.+\\/delete)\\): (.+) deleted in (.+) and/,\n (summary, [reason, file, deleteRef]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));\n }\n ),\n new LineParser(/^CONFLICT\\s+\\((.+)\\):/, (summary, [reason]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, null));\n }),\n new LineParser(/^Automatic merge failed;\\s+(.+)$/, (summary, [result]) => {\n summary.result = result;\n })\n ];\n parseMergeResult = (stdOut, stdErr) => {\n return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));\n };\n parseMergeDetail = (stdOut) => {\n return parseStringResponse(new MergeSummaryDetail(), parsers4, stdOut);\n };\n }\n});\n\n// src/lib/tasks/merge.ts\nfunction mergeTask(customArgs) {\n if (!customArgs.length) {\n return configurationErrorTask(\"Git.merge requires at least one option\");\n }\n return {\n commands: [\"merge\", ...customArgs],\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n const merge = parseMergeResult(stdOut, stdErr);\n if (merge.failed) {\n throw new GitResponseError(merge);\n }\n return merge;\n }\n };\n}\nvar init_merge = __esm({\n \"src/lib/tasks/merge.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_merge();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-push.ts\nfunction pushResultPushedItem(local, remote, status) {\n const deleted = status.includes(\"deleted\");\n const tag = status.includes(\"tag\") || /^refs\\/tags/.test(local);\n const alreadyUpdated = !status.includes(\"new\");\n return {\n deleted,\n tag,\n branch: !tag,\n new: !alreadyUpdated,\n alreadyUpdated,\n local,\n remote\n };\n}\nvar parsers5, parsePushResult, parsePushDetail;\nvar init_parse_push = __esm({\n \"src/lib/parsers/parse-push.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_messages();\n parsers5 = [\n new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {\n result.repo = repo;\n }),\n new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {\n result.ref = {\n ...result.ref || {},\n local\n };\n }),\n new LineParser(/^[=*-]\\s+([^:]+):(\\S+)\\s+\\[(.+)]$/, (result, [local, remote, type]) => {\n result.pushed.push(pushResultPushedItem(local, remote, type));\n }),\n new LineParser(\n /^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,\n (result, [local, remote, remoteName]) => {\n result.branch = {\n ...result.branch || {},\n local,\n remote,\n remoteName\n };\n }\n ),\n new LineParser(\n /^([^:]+):(\\S+)\\s+([a-z0-9]+)\\.\\.([a-z0-9]+)$/,\n (result, [local, remote, from, to]) => {\n result.update = {\n head: {\n local,\n remote\n },\n hash: {\n from,\n to\n }\n };\n }\n )\n ];\n parsePushResult = (stdOut, stdErr) => {\n const pushDetail = parsePushDetail(stdOut, stdErr);\n const responseDetail = parseRemoteMessages(stdOut, stdErr);\n return {\n ...pushDetail,\n ...responseDetail\n };\n };\n parsePushDetail = (stdOut, stdErr) => {\n return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/tasks/push.ts\nvar push_exports = {};\n__export(push_exports, {\n pushTagsTask: () => pushTagsTask,\n pushTask: () => pushTask\n});\nfunction pushTagsTask(ref = {}, customArgs) {\n append(customArgs, \"--tags\");\n return pushTask(ref, customArgs);\n}\nfunction pushTask(ref = {}, customArgs) {\n const commands = [\"push\", ...customArgs];\n if (ref.branch) {\n commands.splice(1, 0, ref.branch);\n }\n if (ref.remote) {\n commands.splice(1, 0, ref.remote);\n }\n remove(commands, \"-v\");\n append(commands, \"--verbose\");\n append(commands, \"--porcelain\");\n return {\n commands,\n format: \"utf-8\",\n parser: parsePushResult\n };\n}\nvar init_push = __esm({\n \"src/lib/tasks/push.ts\"() {\n \"use strict\";\n init_parse_push();\n init_utils();\n }\n});\n\n// src/lib/tasks/show.ts\nfunction show_default() {\n return {\n showBuffer() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n if (!commands.includes(\"--binary\")) {\n commands.splice(1, 0, \"--binary\");\n }\n return this._runTask(\n straightThroughBufferTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n show() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n return this._runTask(\n straightThroughStringTask(commands),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_show = __esm({\n \"src/lib/tasks/show.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/responses/FileStatusSummary.ts\nvar fromPathRegex, FileStatusSummary;\nvar init_FileStatusSummary = __esm({\n \"src/lib/responses/FileStatusSummary.ts\"() {\n \"use strict\";\n fromPathRegex = /^(.+)\\0(.+)$/;\n FileStatusSummary = class {\n constructor(path, index, working_dir) {\n this.path = path;\n this.index = index;\n this.working_dir = working_dir;\n if (index === \"R\" || working_dir === \"R\") {\n const detail = fromPathRegex.exec(path) || [null, path, path];\n this.from = detail[2] || \"\";\n this.path = detail[1] || \"\";\n }\n }\n };\n }\n});\n\n// src/lib/responses/StatusSummary.ts\nfunction renamedFile(line) {\n const [to, from] = line.split(NULL);\n return {\n from: from || to,\n to\n };\n}\nfunction parser3(indexX, indexY, handler) {\n return [`${indexX}${indexY}`, handler];\n}\nfunction conflicts(indexX, ...indexY) {\n return indexY.map((y) => parser3(indexX, y, (result, file) => append(result.conflicted, file)));\n}\nfunction splitLine(result, lineStr) {\n const trimmed2 = lineStr.trim();\n switch (\" \") {\n case trimmed2.charAt(2):\n return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.substr(3));\n case trimmed2.charAt(1):\n return data(\" \" /* NONE */, trimmed2.charAt(0), trimmed2.substr(2));\n default:\n return;\n }\n function data(index, workingDir, path) {\n const raw = `${index}${workingDir}`;\n const handler = parsers6.get(raw);\n if (handler) {\n handler(result, path);\n }\n if (raw !== \"##\" && raw !== \"!!\") {\n result.files.push(new FileStatusSummary(path, index, workingDir));\n }\n }\n}\nvar StatusSummary, parsers6, parseStatusSummary;\nvar init_StatusSummary = __esm({\n \"src/lib/responses/StatusSummary.ts\"() {\n \"use strict\";\n init_utils();\n init_FileStatusSummary();\n StatusSummary = class {\n constructor() {\n this.not_added = [];\n this.conflicted = [];\n this.created = [];\n this.deleted = [];\n this.ignored = void 0;\n this.modified = [];\n this.renamed = [];\n this.files = [];\n this.staged = [];\n this.ahead = 0;\n this.behind = 0;\n this.current = null;\n this.tracking = null;\n this.detached = false;\n this.isClean = () => {\n return !this.files.length;\n };\n }\n };\n parsers6 = new Map([\n parser3(\n \" \" /* NONE */,\n \"A\" /* ADDED */,\n (result, file) => append(result.created, file)\n ),\n parser3(\n \" \" /* NONE */,\n \"D\" /* DELETED */,\n (result, file) => append(result.deleted, file)\n ),\n parser3(\n \" \" /* NONE */,\n \"M\" /* MODIFIED */,\n (result, file) => append(result.modified, file)\n ),\n parser3(\n \"A\" /* ADDED */,\n \" \" /* NONE */,\n (result, file) => append(result.created, file) && append(result.staged, file)\n ),\n parser3(\n \"A\" /* ADDED */,\n \"M\" /* MODIFIED */,\n (result, file) => append(result.created, file) && append(result.staged, file) && append(result.modified, file)\n ),\n parser3(\n \"D\" /* DELETED */,\n \" \" /* NONE */,\n (result, file) => append(result.deleted, file) && append(result.staged, file)\n ),\n parser3(\n \"M\" /* MODIFIED */,\n \" \" /* NONE */,\n (result, file) => append(result.modified, file) && append(result.staged, file)\n ),\n parser3(\n \"M\" /* MODIFIED */,\n \"M\" /* MODIFIED */,\n (result, file) => append(result.modified, file) && append(result.staged, file)\n ),\n parser3(\"R\" /* RENAMED */, \" \" /* NONE */, (result, file) => {\n append(result.renamed, renamedFile(file));\n }),\n parser3(\"R\" /* RENAMED */, \"M\" /* MODIFIED */, (result, file) => {\n const renamed = renamedFile(file);\n append(result.renamed, renamed);\n append(result.modified, renamed.to);\n }),\n parser3(\"!\" /* IGNORED */, \"!\" /* IGNORED */, (_result, _file) => {\n append(_result.ignored = _result.ignored || [], _file);\n }),\n parser3(\n \"?\" /* UNTRACKED */,\n \"?\" /* UNTRACKED */,\n (result, file) => append(result.not_added, file)\n ),\n ...conflicts(\"A\" /* ADDED */, \"A\" /* ADDED */, \"U\" /* UNMERGED */),\n ...conflicts(\n \"D\" /* DELETED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n ...conflicts(\n \"U\" /* UNMERGED */,\n \"A\" /* ADDED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n [\n \"##\",\n (result, line) => {\n const aheadReg = /ahead (\\d+)/;\n const behindReg = /behind (\\d+)/;\n const currentReg = /^(.+?(?=(?:\\.{3}|\\s|$)))/;\n const trackingReg = /\\.{3}(\\S*)/;\n const onEmptyBranchReg = /\\son\\s(\\S+?)(?=\\.{3}|$)/;\n let regexResult = aheadReg.exec(line);\n result.ahead = regexResult && +regexResult[1] || 0;\n regexResult = behindReg.exec(line);\n result.behind = regexResult && +regexResult[1] || 0;\n regexResult = currentReg.exec(line);\n result.current = filterType(regexResult?.[1], filterString, null);\n regexResult = trackingReg.exec(line);\n result.tracking = filterType(regexResult?.[1], filterString, null);\n regexResult = onEmptyBranchReg.exec(line);\n if (regexResult) {\n result.current = filterType(regexResult?.[1], filterString, result.current);\n }\n result.detached = /\\(no branch\\)/.test(line);\n }\n ]\n ]);\n parseStatusSummary = function(text) {\n const lines = text.split(NULL);\n const status = new StatusSummary();\n for (let i = 0, l = lines.length; i < l; ) {\n let line = lines[i++].trim();\n if (!line) {\n continue;\n }\n if (line.charAt(0) === \"R\" /* RENAMED */) {\n line += NULL + (lines[i++] || \"\");\n }\n splitLine(status, line);\n }\n return status;\n };\n }\n});\n\n// src/lib/tasks/status.ts\nfunction statusTask(customArgs) {\n const commands = [\n \"status\",\n \"--porcelain\",\n \"-b\",\n \"-u\",\n \"--null\",\n ...customArgs.filter((arg) => !ignoredOptions.includes(arg))\n ];\n return {\n format: \"utf-8\",\n commands,\n parser(text) {\n return parseStatusSummary(text);\n }\n };\n}\nvar ignoredOptions;\nvar init_status = __esm({\n \"src/lib/tasks/status.ts\"() {\n \"use strict\";\n init_StatusSummary();\n ignoredOptions = [\"--null\", \"-z\"];\n }\n});\n\n// src/lib/tasks/version.ts\nfunction versionResponse(major = 0, minor = 0, patch = 0, agent = \"\", installed = true) {\n return Object.defineProperty(\n {\n major,\n minor,\n patch,\n agent,\n installed\n },\n \"toString\",\n {\n value() {\n return `${this.major}.${this.minor}.${this.patch}`;\n },\n configurable: false,\n enumerable: false\n }\n );\n}\nfunction notInstalledResponse() {\n return versionResponse(0, 0, 0, \"\", false);\n}\nfunction version_default() {\n return {\n version() {\n return this._runTask({\n commands: [\"--version\"],\n format: \"utf-8\",\n parser: versionParser,\n onError(result, error, done, fail) {\n if (result.exitCode === -2 /* NOT_FOUND */) {\n return done(Buffer.from(NOT_INSTALLED));\n }\n fail(error);\n }\n });\n }\n };\n}\nfunction versionParser(stdOut) {\n if (stdOut === NOT_INSTALLED) {\n return notInstalledResponse();\n }\n return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers7, stdOut);\n}\nvar NOT_INSTALLED, parsers7;\nvar init_version = __esm({\n \"src/lib/tasks/version.ts\"() {\n \"use strict\";\n init_utils();\n NOT_INSTALLED = \"installed=false\";\n parsers7 = [\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\d+)(?:\\s*\\((.+)\\))?/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(\n result,\n versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)\n );\n }\n ),\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\D+)(.+)?$/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));\n }\n )\n ];\n }\n});\n\n// src/lib/simple-git-api.ts\nvar simple_git_api_exports = {};\n__export(simple_git_api_exports, {\n SimpleGitApi: () => SimpleGitApi\n});\nvar SimpleGitApi;\nvar init_simple_git_api = __esm({\n \"src/lib/simple-git-api.ts\"() {\n \"use strict\";\n init_task_callback();\n init_change_working_directory();\n init_checkout();\n init_count_objects();\n init_commit();\n init_config();\n init_first_commit();\n init_grep();\n init_hash_object();\n init_init();\n init_log();\n init_merge();\n init_push();\n init_show();\n init_status();\n init_task();\n init_version();\n init_utils();\n SimpleGitApi = class {\n constructor(_executor) {\n this._executor = _executor;\n }\n _runTask(task, then) {\n const chain = this._executor.chain();\n const promise = chain.push(task);\n if (then) {\n taskCallback(task, promise, then);\n }\n return Object.create(this, {\n then: { value: promise.then.bind(promise) },\n catch: { value: promise.catch.bind(promise) },\n _executor: { value: chain }\n });\n }\n add(files) {\n return this._runTask(\n straightThroughStringTask([\"add\", ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n }\n cwd(directory) {\n const next = trailingFunctionArgument(arguments);\n if (typeof directory === \"string\") {\n return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);\n }\n if (typeof directory?.path === \"string\") {\n return this._runTask(\n changeWorkingDirectoryTask(\n directory.path,\n directory.root && this._executor || void 0\n ),\n next\n );\n }\n return this._runTask(\n configurationErrorTask(\"Git.cwd: workingDirectory must be supplied as a string\"),\n next\n );\n }\n hashObject(path, write) {\n return this._runTask(\n hashObjectTask(path, write === true),\n trailingFunctionArgument(arguments)\n );\n }\n init(bare) {\n return this._runTask(\n initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n merge() {\n return this._runTask(\n mergeTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n mergeFromTo(remote, branch) {\n if (!(filterString(remote) && filterString(branch))) {\n return this._runTask(\n configurationErrorTask(\n `Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`\n )\n );\n }\n return this._runTask(\n mergeTask([remote, branch, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments, false)\n );\n }\n outputHandler(handler) {\n this._executor.outputHandler = handler;\n return this;\n }\n push() {\n const task = pushTask(\n {\n remote: filterType(arguments[0], filterString),\n branch: filterType(arguments[1], filterString)\n },\n getTrailingOptions(arguments)\n );\n return this._runTask(task, trailingFunctionArgument(arguments));\n }\n stash() {\n return this._runTask(\n straightThroughStringTask([\"stash\", ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n status() {\n return this._runTask(\n statusTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n Object.assign(\n SimpleGitApi.prototype,\n checkout_default(),\n commit_default(),\n config_default(),\n count_objects_default(),\n first_commit_default(),\n grep_default(),\n log_default(),\n show_default(),\n version_default()\n );\n }\n});\n\n// src/lib/runners/scheduler.ts\nvar scheduler_exports = {};\n__export(scheduler_exports, {\n Scheduler: () => Scheduler\n});\nimport { createDeferred } from \"@kwsites/promise-deferred\";\nvar createScheduledTask, Scheduler;\nvar init_scheduler = __esm({\n \"src/lib/runners/scheduler.ts\"() {\n \"use strict\";\n init_utils();\n init_git_logger();\n createScheduledTask = /* @__PURE__ */ (() => {\n let id = 0;\n return () => {\n id++;\n const { promise, done } = createDeferred();\n return {\n promise,\n done,\n id\n };\n };\n })();\n Scheduler = class {\n constructor(concurrency = 2) {\n this.concurrency = concurrency;\n this.logger = createLogger(\"\", \"scheduler\");\n this.pending = [];\n this.running = [];\n this.logger(`Constructed, concurrency=%s`, concurrency);\n }\n schedule() {\n if (!this.pending.length || this.running.length >= this.concurrency) {\n this.logger(\n `Schedule attempt ignored, pending=%s running=%s concurrency=%s`,\n this.pending.length,\n this.running.length,\n this.concurrency\n );\n return;\n }\n const task = append(this.running, this.pending.shift());\n this.logger(`Attempting id=%s`, task.id);\n task.done(() => {\n this.logger(`Completing id=`, task.id);\n remove(this.running, task);\n this.schedule();\n });\n }\n next() {\n const { promise, id } = append(this.pending, createScheduledTask());\n this.logger(`Scheduling id=%s`, id);\n this.schedule();\n return promise;\n }\n };\n }\n});\n\n// src/lib/tasks/apply-patch.ts\nvar apply_patch_exports = {};\n__export(apply_patch_exports, {\n applyPatchTask: () => applyPatchTask\n});\nfunction applyPatchTask(patches, customArgs) {\n return straightThroughStringTask([\"apply\", ...customArgs, ...patches]);\n}\nvar init_apply_patch = __esm({\n \"src/lib/tasks/apply-patch.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/BranchDeleteSummary.ts\nfunction branchDeletionSuccess(branch, hash) {\n return {\n branch,\n hash,\n success: true\n };\n}\nfunction branchDeletionFailure(branch) {\n return {\n branch,\n hash: null,\n success: false\n };\n}\nvar BranchDeletionBatch;\nvar init_BranchDeleteSummary = __esm({\n \"src/lib/responses/BranchDeleteSummary.ts\"() {\n \"use strict\";\n BranchDeletionBatch = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.errors = [];\n }\n get success() {\n return !this.errors.length;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch-delete.ts\nfunction hasBranchDeletionError(data, processExitCode) {\n return processExitCode === 1 /* ERROR */ && deleteErrorRegex.test(data);\n}\nvar deleteSuccessRegex, deleteErrorRegex, parsers8, parseBranchDeletions;\nvar init_parse_branch_delete = __esm({\n \"src/lib/parsers/parse-branch-delete.ts\"() {\n \"use strict\";\n init_BranchDeleteSummary();\n init_utils();\n deleteSuccessRegex = /(\\S+)\\s+\\(\\S+\\s([^)]+)\\)/;\n deleteErrorRegex = /^error[^']+'([^']+)'/m;\n parsers8 = [\n new LineParser(deleteSuccessRegex, (result, [branch, hash]) => {\n const deletion = branchDeletionSuccess(branch, hash);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n new LineParser(deleteErrorRegex, (result, [branch]) => {\n const deletion = branchDeletionFailure(branch);\n result.errors.push(deletion);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n })\n ];\n parseBranchDeletions = (stdOut, stdErr) => {\n return parseStringResponse(new BranchDeletionBatch(), parsers8, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/responses/BranchSummary.ts\nvar BranchSummaryResult;\nvar init_BranchSummary = __esm({\n \"src/lib/responses/BranchSummary.ts\"() {\n \"use strict\";\n BranchSummaryResult = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.current = \"\";\n this.detached = false;\n }\n push(status, detached, name, commit, label) {\n if (status === \"*\" /* CURRENT */) {\n this.detached = detached;\n this.current = name;\n }\n this.all.push(name);\n this.branches[name] = {\n current: status === \"*\" /* CURRENT */,\n linkedWorkTree: status === \"+\" /* LINKED */,\n name,\n commit,\n label\n };\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch.ts\nfunction branchStatus(input) {\n return input ? input.charAt(0) : \"\";\n}\nfunction parseBranchSummary(stdOut, currentOnly = false) {\n return parseStringResponse(\n new BranchSummaryResult(),\n currentOnly ? [currentBranchParser] : parsers9,\n stdOut\n );\n}\nvar parsers9, currentBranchParser;\nvar init_parse_branch = __esm({\n \"src/lib/parsers/parse-branch.ts\"() {\n \"use strict\";\n init_BranchSummary();\n init_utils();\n parsers9 = [\n new LineParser(\n /^([*+]\\s)?\\((?:HEAD )?detached (?:from|at) (\\S+)\\)\\s+([a-z0-9]+)\\s(.*)$/,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), true, name, commit, label);\n }\n ),\n new LineParser(\n /^([*+]\\s)?(\\S+)\\s+([a-z0-9]+)\\s?(.*)$/s,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), false, name, commit, label);\n }\n )\n ];\n currentBranchParser = new LineParser(/^(\\S+)$/s, (result, [name]) => {\n result.push(\"*\" /* CURRENT */, false, name, \"\", \"\");\n });\n }\n});\n\n// src/lib/tasks/branch.ts\nvar branch_exports = {};\n__export(branch_exports, {\n branchLocalTask: () => branchLocalTask,\n branchTask: () => branchTask,\n containsDeleteBranchCommand: () => containsDeleteBranchCommand,\n deleteBranchTask: () => deleteBranchTask,\n deleteBranchesTask: () => deleteBranchesTask\n});\nfunction containsDeleteBranchCommand(commands) {\n const deleteCommands = [\"-d\", \"-D\", \"--delete\"];\n return commands.some((command) => deleteCommands.includes(command));\n}\nfunction branchTask(customArgs) {\n const isDelete = containsDeleteBranchCommand(customArgs);\n const isCurrentOnly = customArgs.includes(\"--show-current\");\n const commands = [\"branch\", ...customArgs];\n if (commands.length === 1) {\n commands.push(\"-a\");\n }\n if (!commands.includes(\"-v\")) {\n commands.splice(1, 0, \"-v\");\n }\n return {\n format: \"utf-8\",\n commands,\n parser(stdOut, stdErr) {\n if (isDelete) {\n return parseBranchDeletions(stdOut, stdErr).all[0];\n }\n return parseBranchSummary(stdOut, isCurrentOnly);\n }\n };\n}\nfunction branchLocalTask() {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\"],\n parser(stdOut) {\n return parseBranchSummary(stdOut);\n }\n };\n}\nfunction deleteBranchesTask(branches, forceDelete = false) {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", ...branches],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr);\n },\n onError({ exitCode, stdOut }, error, done, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n done(stdOut);\n }\n };\n}\nfunction deleteBranchTask(branch, forceDelete = false) {\n const task = {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", branch],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr).branches[branch];\n },\n onError({ exitCode, stdErr, stdOut }, error, _, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n throw new GitResponseError(\n task.parser(bufferToString(stdOut), bufferToString(stdErr)),\n String(error)\n );\n }\n };\n return task;\n}\nvar init_branch = __esm({\n \"src/lib/tasks/branch.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_branch_delete();\n init_parse_branch();\n init_utils();\n }\n});\n\n// src/lib/responses/CheckIgnore.ts\nimport { normalize } from \"node:path\";\nfunction toPath(input) {\n const path = input.trim().replace(/^[\"']|[\"']$/g, \"\");\n return path && normalize(path);\n}\nvar parseCheckIgnore;\nvar init_CheckIgnore = __esm({\n \"src/lib/responses/CheckIgnore.ts\"() {\n \"use strict\";\n parseCheckIgnore = (text) => {\n return text.split(/\\n/g).map(toPath).filter(Boolean);\n };\n }\n});\n\n// src/lib/tasks/check-ignore.ts\nvar check_ignore_exports = {};\n__export(check_ignore_exports, {\n checkIgnoreTask: () => checkIgnoreTask\n});\nfunction checkIgnoreTask(paths) {\n return {\n commands: [\"check-ignore\", ...paths],\n format: \"utf-8\",\n parser: parseCheckIgnore\n };\n}\nvar init_check_ignore = __esm({\n \"src/lib/tasks/check-ignore.ts\"() {\n \"use strict\";\n init_CheckIgnore();\n }\n});\n\n// src/lib/tasks/clone.ts\nvar clone_exports = {};\n__export(clone_exports, {\n cloneMirrorTask: () => cloneMirrorTask,\n cloneTask: () => cloneTask\n});\nfunction disallowedCommand(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction cloneTask(repo, directory, customArgs) {\n const commands = [\"clone\", ...customArgs];\n filterString(repo) && commands.push(repo);\n filterString(directory) && commands.push(directory);\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return straightThroughStringTask(commands);\n}\nfunction cloneMirrorTask(repo, directory, customArgs) {\n append(customArgs, \"--mirror\");\n return cloneTask(repo, directory, customArgs);\n}\nvar init_clone = __esm({\n \"src/lib/tasks/clone.ts\"() {\n \"use strict\";\n init_task();\n init_utils();\n }\n});\n\n// src/lib/parsers/parse-fetch.ts\nfunction parseFetchResult(stdOut, stdErr) {\n const result = {\n raw: stdOut,\n remote: null,\n branches: [],\n tags: [],\n updated: [],\n deleted: []\n };\n return parseStringResponse(result, parsers10, [stdOut, stdErr]);\n}\nvar parsers10;\nvar init_parse_fetch = __esm({\n \"src/lib/parsers/parse-fetch.ts\"() {\n \"use strict\";\n init_utils();\n parsers10 = [\n new LineParser(/From (.+)$/, (result, [remote]) => {\n result.remote = remote;\n }),\n new LineParser(/\\* \\[new branch]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.branches.push({\n name,\n tracking\n });\n }),\n new LineParser(/\\* \\[new tag]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.tags.push({\n name,\n tracking\n });\n }),\n new LineParser(/- \\[deleted]\\s+\\S+\\s*-> (.+)$/, (result, [tracking]) => {\n result.deleted.push({\n tracking\n });\n }),\n new LineParser(\n /\\s*([^.]+)\\.\\.(\\S+)\\s+(\\S+)\\s*-> (.+)$/,\n (result, [from, to, name, tracking]) => {\n result.updated.push({\n name,\n tracking,\n to,\n from\n });\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/fetch.ts\nvar fetch_exports = {};\n__export(fetch_exports, {\n fetchTask: () => fetchTask\n});\nfunction disallowedCommand2(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction fetchTask(remote, branch, customArgs) {\n const commands = [\"fetch\", ...customArgs];\n if (remote && branch) {\n commands.push(remote, branch);\n }\n const banned = commands.find(disallowedCommand2);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser: parseFetchResult\n };\n}\nvar init_fetch = __esm({\n \"src/lib/tasks/fetch.ts\"() {\n \"use strict\";\n init_parse_fetch();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-move.ts\nfunction parseMoveResult(stdOut) {\n return parseStringResponse({ moves: [] }, parsers11, stdOut);\n}\nvar parsers11;\nvar init_parse_move = __esm({\n \"src/lib/parsers/parse-move.ts\"() {\n \"use strict\";\n init_utils();\n parsers11 = [\n new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {\n result.moves.push({ from, to });\n })\n ];\n }\n});\n\n// src/lib/tasks/move.ts\nvar move_exports = {};\n__export(move_exports, {\n moveTask: () => moveTask\n});\nfunction moveTask(from, to) {\n return {\n commands: [\"mv\", \"-v\", ...asArray(from), to],\n format: \"utf-8\",\n parser: parseMoveResult\n };\n}\nvar init_move = __esm({\n \"src/lib/tasks/move.ts\"() {\n \"use strict\";\n init_parse_move();\n init_utils();\n }\n});\n\n// src/lib/tasks/pull.ts\nvar pull_exports = {};\n__export(pull_exports, {\n pullTask: () => pullTask\n});\nfunction pullTask(remote, branch, customArgs) {\n const commands = [\"pull\", ...customArgs];\n if (remote && branch) {\n commands.splice(1, 0, remote, branch);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n return parsePullResult(stdOut, stdErr);\n },\n onError(result, _error, _done, fail) {\n const pullError = parsePullErrorResult(\n bufferToString(result.stdOut),\n bufferToString(result.stdErr)\n );\n if (pullError) {\n return fail(new GitResponseError(pullError));\n }\n fail(_error);\n }\n };\n}\nvar init_pull = __esm({\n \"src/lib/tasks/pull.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_pull();\n init_utils();\n }\n});\n\n// src/lib/responses/GetRemoteSummary.ts\nfunction parseGetRemotes(text) {\n const remotes = {};\n forEach(text, ([name]) => remotes[name] = { name });\n return Object.values(remotes);\n}\nfunction parseGetRemotesVerbose(text) {\n const remotes = {};\n forEach(text, ([name, url, purpose]) => {\n if (!Object.hasOwn(remotes, name)) {\n remotes[name] = {\n name,\n refs: { fetch: \"\", push: \"\" }\n };\n }\n if (purpose && url) {\n remotes[name].refs[purpose.replace(/[^a-z]/g, \"\")] = url;\n }\n });\n return Object.values(remotes);\n}\nfunction forEach(text, handler) {\n forEachLineWithContent(text, (line) => handler(line.split(/\\s+/)));\n}\nvar init_GetRemoteSummary = __esm({\n \"src/lib/responses/GetRemoteSummary.ts\"() {\n \"use strict\";\n init_utils();\n }\n});\n\n// src/lib/tasks/remote.ts\nvar remote_exports = {};\n__export(remote_exports, {\n addRemoteTask: () => addRemoteTask,\n getRemotesTask: () => getRemotesTask,\n listRemotesTask: () => listRemotesTask,\n remoteTask: () => remoteTask,\n removeRemoteTask: () => removeRemoteTask\n});\nfunction addRemoteTask(remoteName, remoteRepo, customArgs) {\n return straightThroughStringTask([\"remote\", \"add\", ...customArgs, remoteName, remoteRepo]);\n}\nfunction getRemotesTask(verbose) {\n const commands = [\"remote\"];\n if (verbose) {\n commands.push(\"-v\");\n }\n return {\n commands,\n format: \"utf-8\",\n parser: verbose ? parseGetRemotesVerbose : parseGetRemotes\n };\n}\nfunction listRemotesTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"ls-remote\") {\n commands.unshift(\"ls-remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction remoteTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"remote\") {\n commands.unshift(\"remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction removeRemoteTask(remoteName) {\n return straightThroughStringTask([\"remote\", \"remove\", remoteName]);\n}\nvar init_remote = __esm({\n \"src/lib/tasks/remote.ts\"() {\n \"use strict\";\n init_GetRemoteSummary();\n init_task();\n }\n});\n\n// src/lib/tasks/stash-list.ts\nvar stash_list_exports = {};\n__export(stash_list_exports, {\n stashListTask: () => stashListTask\n});\nfunction stashListTask(opt = {}, customArgs) {\n const options = parseLogOptions(opt);\n const commands = [\"stash\", \"list\", ...options.commands, ...customArgs];\n const parser4 = createListLogSummaryParser(\n options.splitter,\n options.fields,\n logFormatFromCommand(commands)\n );\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: parser4\n };\n}\nvar init_stash_list = __esm({\n \"src/lib/tasks/stash-list.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_list_log_summary();\n init_diff();\n init_log();\n }\n});\n\n// src/lib/tasks/sub-module.ts\nvar sub_module_exports = {};\n__export(sub_module_exports, {\n addSubModuleTask: () => addSubModuleTask,\n initSubModuleTask: () => initSubModuleTask,\n subModuleTask: () => subModuleTask,\n updateSubModuleTask: () => updateSubModuleTask\n});\nfunction addSubModuleTask(repo, path) {\n return subModuleTask([\"add\", repo, path]);\n}\nfunction initSubModuleTask(customArgs) {\n return subModuleTask([\"init\", ...customArgs]);\n}\nfunction subModuleTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"submodule\") {\n commands.unshift(\"submodule\");\n }\n return straightThroughStringTask(commands);\n}\nfunction updateSubModuleTask(customArgs) {\n return subModuleTask([\"update\", ...customArgs]);\n}\nvar init_sub_module = __esm({\n \"src/lib/tasks/sub-module.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/TagList.ts\nfunction singleSorted(a, b) {\n const aIsNum = Number.isNaN(a);\n const bIsNum = Number.isNaN(b);\n if (aIsNum !== bIsNum) {\n return aIsNum ? 1 : -1;\n }\n return aIsNum ? sorted(a, b) : 0;\n}\nfunction sorted(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction trimmed(input) {\n return input.trim();\n}\nfunction toNumber(input) {\n if (typeof input === \"string\") {\n return parseInt(input.replace(/^\\D+/g, \"\"), 10) || 0;\n }\n return 0;\n}\nvar TagList, parseTagList;\nvar init_TagList = __esm({\n \"src/lib/responses/TagList.ts\"() {\n \"use strict\";\n TagList = class {\n constructor(all, latest) {\n this.all = all;\n this.latest = latest;\n }\n };\n parseTagList = function(data, customSort = false) {\n const tags = data.split(\"\\n\").map(trimmed).filter(Boolean);\n if (!customSort) {\n tags.sort(function(tagA, tagB) {\n const partsA = tagA.split(\".\");\n const partsB = tagB.split(\".\");\n if (partsA.length === 1 || partsB.length === 1) {\n return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));\n }\n for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {\n const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i]));\n if (diff) {\n return diff;\n }\n }\n return 0;\n });\n }\n const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf(\".\") >= 0);\n return new TagList(tags, latest);\n };\n }\n});\n\n// src/lib/tasks/tag.ts\nvar tag_exports = {};\n__export(tag_exports, {\n addAnnotatedTagTask: () => addAnnotatedTagTask,\n addTagTask: () => addTagTask,\n tagListTask: () => tagListTask\n});\nfunction tagListTask(customArgs = []) {\n const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-l\", ...customArgs],\n parser(text) {\n return parseTagList(text, hasCustomSort);\n }\n };\n}\nfunction addTagTask(name) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", name],\n parser() {\n return { name };\n }\n };\n}\nfunction addAnnotatedTagTask(name, tagMessage) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-a\", \"-m\", tagMessage, name],\n parser() {\n return { name };\n }\n };\n}\nvar init_tag = __esm({\n \"src/lib/tasks/tag.ts\"() {\n \"use strict\";\n init_TagList();\n }\n});\n\n// src/git.js\nvar require_git = __commonJS({\n \"src/git.js\"(exports, module) {\n \"use strict\";\n var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports));\n var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports));\n var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports));\n var { configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));\n var {\n asArray: asArray2,\n filterArray: filterArray2,\n filterPrimitives: filterPrimitives2,\n filterString: filterString2,\n filterStringOrStringArray: filterStringOrStringArray2,\n filterType: filterType2,\n getTrailingOptions: getTrailingOptions2,\n trailingFunctionArgument: trailingFunctionArgument2,\n trailingOptionsArgument: trailingOptionsArgument2\n } = (init_utils(), __toCommonJS(utils_exports));\n var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS(apply_patch_exports));\n var {\n branchTask: branchTask2,\n branchLocalTask: branchLocalTask2,\n deleteBranchesTask: deleteBranchesTask2,\n deleteBranchTask: deleteBranchTask2\n } = (init_branch(), __toCommonJS(branch_exports));\n var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS(check_ignore_exports));\n var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));\n var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports));\n var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));\n var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));\n var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));\n var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports));\n var { pullTask: pullTask2 } = (init_pull(), __toCommonJS(pull_exports));\n var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS(push_exports));\n var {\n addRemoteTask: addRemoteTask2,\n getRemotesTask: getRemotesTask2,\n listRemotesTask: listRemotesTask2,\n remoteTask: remoteTask2,\n removeRemoteTask: removeRemoteTask2\n } = (init_remote(), __toCommonJS(remote_exports));\n var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS(reset_exports));\n var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS(stash_list_exports));\n var {\n addSubModuleTask: addSubModuleTask2,\n initSubModuleTask: initSubModuleTask2,\n subModuleTask: subModuleTask2,\n updateSubModuleTask: updateSubModuleTask2\n } = (init_sub_module(), __toCommonJS(sub_module_exports));\n var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS(tag_exports));\n var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS(task_exports));\n function Git2(options, plugins) {\n this._plugins = plugins;\n this._executor = new GitExecutor2(\n options.baseDir,\n new Scheduler2(options.maxConcurrentProcesses),\n plugins\n );\n this._trimmed = options.trimmed;\n }\n (Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2;\n Git2.prototype.customBinary = function(command) {\n this._plugins.reconfigure(\"binary\", command);\n return this;\n };\n Git2.prototype.env = function(name, value) {\n if (arguments.length === 1 && typeof name === \"object\") {\n this._executor.env = name;\n } else {\n (this._executor.env = this._executor.env || {})[name] = value;\n }\n return this;\n };\n Git2.prototype.stashList = function(options) {\n return this._runTask(\n stashListTask2(\n trailingOptionsArgument2(arguments) || {},\n filterArray2(options) && options || []\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n function createCloneTask(api, task, repoPath, localPath) {\n if (typeof repoPath !== \"string\") {\n return configurationErrorTask2(`git.${api}() requires a string 'repoPath'`);\n }\n return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments));\n }\n Git2.prototype.clone = function() {\n return this._runTask(\n createCloneTask(\"clone\", cloneTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mirror = function() {\n return this._runTask(\n createCloneTask(\"mirror\", cloneMirrorTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mv = function(from, to) {\n return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.checkoutLatestTag = function(then) {\n var git = this;\n return this.pull(function() {\n git.tags(function(err, tags) {\n git.checkout(tags.latest, then);\n });\n });\n };\n Git2.prototype.pull = function(remote, branch, options, then) {\n return this._runTask(\n pullTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.fetch = function(remote, branch) {\n return this._runTask(\n fetchTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.silent = function(silence) {\n console.warn(\n \"simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3\"\n );\n return this;\n };\n Git2.prototype.tags = function(options, then) {\n return this._runTask(\n tagListTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rebase = function() {\n return this._runTask(\n straightThroughStringTask2([\"rebase\", ...getTrailingOptions2(arguments)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.reset = function(mode) {\n return this._runTask(\n resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.revert = function(commit) {\n const next = trailingFunctionArgument2(arguments);\n if (typeof commit !== \"string\") {\n return this._runTask(configurationErrorTask2(\"Commit must be a string\"), next);\n }\n return this._runTask(\n straightThroughStringTask2([\"revert\", ...getTrailingOptions2(arguments, 0, true), commit]),\n next\n );\n };\n Git2.prototype.addTag = function(name) {\n const task = typeof name === \"string\" ? addTagTask2(name) : configurationErrorTask2(\"Git.addTag requires a tag name\");\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {\n return this._runTask(\n addAnnotatedTagTask2(tagName, tagMessage),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {\n return this._runTask(\n deleteBranchTask2(branchName, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) {\n return this._runTask(\n deleteBranchesTask2(branchNames, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branch = function(options, then) {\n return this._runTask(\n branchTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branchLocal = function(then) {\n return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.raw = function(commands) {\n const createRestCommands = !Array.isArray(commands);\n const command = [].slice.call(createRestCommands ? arguments : commands, 0);\n for (let i = 0; i < command.length && createRestCommands; i++) {\n if (!filterPrimitives2(command[i])) {\n command.splice(i, command.length - i);\n break;\n }\n }\n command.push(...getTrailingOptions2(arguments, 0, true));\n var next = trailingFunctionArgument2(arguments);\n if (!command.length) {\n return this._runTask(\n configurationErrorTask2(\"Raw: must supply one or more command to execute\"),\n next\n );\n }\n return this._runTask(straightThroughStringTask2(command, this._trimmed), next);\n };\n Git2.prototype.submoduleAdd = function(repo, path, then) {\n return this._runTask(addSubModuleTask2(repo, path), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.submoduleUpdate = function(args, then) {\n return this._runTask(\n updateSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.submoduleInit = function(args, then) {\n return this._runTask(\n initSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.subModule = function(options, then) {\n return this._runTask(\n subModuleTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.listRemote = function() {\n return this._runTask(\n listRemotesTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.addRemote = function(remoteName, remoteRepo, then) {\n return this._runTask(\n addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.removeRemote = function(remoteName, then) {\n return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.getRemotes = function(verbose, then) {\n return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.remote = function(options, then) {\n return this._runTask(\n remoteTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.tag = function(options, then) {\n const command = getTrailingOptions2(arguments);\n if (command[0] !== \"tag\") {\n command.unshift(\"tag\");\n }\n return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.updateServerInfo = function(then) {\n return this._runTask(\n straightThroughStringTask2([\"update-server-info\"]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.pushTags = function(remote, then) {\n const task = pushTagsTask2(\n { remote: filterType2(remote, filterString2) },\n getTrailingOptions2(arguments)\n );\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.rm = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"-f\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rmKeepLocal = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"--cached\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.catFile = function(options, then) {\n return this._catFile(\"utf-8\", arguments);\n };\n Git2.prototype.binaryCatFile = function() {\n return this._catFile(\"buffer\", arguments);\n };\n Git2.prototype._catFile = function(format, args) {\n var handler = trailingFunctionArgument2(args);\n var command = [\"cat-file\"];\n var options = args[0];\n if (typeof options === \"string\") {\n return this._runTask(\n configurationErrorTask2(\"Git.catFile: options must be supplied as an array of strings\"),\n handler\n );\n }\n if (Array.isArray(options)) {\n command.push.apply(command, options);\n }\n const task = format === \"buffer\" ? straightThroughBufferTask2(command) : straightThroughStringTask2(command);\n return this._runTask(task, handler);\n };\n Git2.prototype.diff = function(options, then) {\n const task = filterString2(options) ? configurationErrorTask2(\n \"git.diff: supplying options as a single string is no longer supported, switch to an array of strings\"\n ) : straightThroughStringTask2([\"diff\", ...getTrailingOptions2(arguments)]);\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.diffSummary = function() {\n return this._runTask(\n diffSummaryTask2(getTrailingOptions2(arguments, 1)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.applyPatch = function(patches) {\n const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(\n `git.applyPatch requires one or more string patches as the first argument`\n ) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1)));\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.revparse = function() {\n const commands = [\"rev-parse\", ...getTrailingOptions2(arguments, true)];\n return this._runTask(\n straightThroughStringTask2(commands, true),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.clean = function(mode, options, then) {\n const usingCleanOptionsArray = isCleanOptionsArray2(mode);\n const cleanMode = usingCleanOptionsArray && mode.join(\"\") || filterType2(mode, filterString2) || \"\";\n const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));\n return this._runTask(\n cleanWithOptionsTask2(cleanMode, customArgs),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.exec = function(then) {\n const task = {\n commands: [],\n format: \"utf-8\",\n parser() {\n if (typeof then === \"function\") {\n then();\n }\n }\n };\n return this._runTask(task);\n };\n Git2.prototype.clearQueue = function() {\n return this;\n };\n Git2.prototype.checkIgnore = function(pathnames, then) {\n return this._runTask(\n checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.checkIsRepo = function(checkType, then) {\n return this._runTask(\n checkIsRepoTask2(filterType2(checkType, filterString2)),\n trailingFunctionArgument2(arguments)\n );\n };\n module.exports = Git2;\n }\n});\n\n// src/lib/api.ts\ninit_pathspec();\n\n// src/lib/errors/git-construct-error.ts\ninit_git_error();\nvar GitConstructError = class extends GitError {\n constructor(config, message) {\n super(void 0, message);\n this.config = config;\n }\n};\n\n// src/lib/api.ts\ninit_git_error();\n\n// src/lib/errors/git-plugin-error.ts\ninit_git_error();\nvar GitPluginError = class extends GitError {\n constructor(task, plugin, message) {\n super(task, message);\n this.task = task;\n this.plugin = plugin;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n};\n\n// src/lib/api.ts\ninit_git_response_error();\ninit_task_configuration_error();\ninit_check_is_repo();\ninit_clean();\ninit_config();\ninit_diff_name_status();\ninit_grep();\ninit_reset();\n\n// src/lib/plugins/abort-plugin.ts\nfunction abortPlugin(signal) {\n if (!signal) {\n return;\n }\n const onSpawnAfter = {\n type: \"spawn.after\",\n action(_data, context) {\n function kill() {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort signal received\"));\n }\n signal.addEventListener(\"abort\", kill);\n context.spawned.on(\"close\", () => signal.removeEventListener(\"abort\", kill));\n }\n };\n const onSpawnBefore = {\n type: \"spawn.before\",\n action(_data, context) {\n if (signal.aborted) {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort already signaled\"));\n }\n }\n };\n return [onSpawnBefore, onSpawnAfter];\n}\n\n// src/lib/plugins/block-unsafe-operations-plugin.ts\nfunction isConfigSwitch(arg) {\n return typeof arg === \"string\" && arg.trim().toLowerCase() === \"-c\";\n}\nfunction preventProtocolOverride(arg, next) {\n if (!isConfigSwitch(arg)) {\n return;\n }\n if (!/^\\s*protocol(.[a-z]+)?.allow/.test(next)) {\n return;\n }\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n \"Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol\"\n );\n}\nfunction preventUploadPack(arg, method) {\n if (/^\\s*--(upload|receive)-pack/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"clone\" && /^\\s*-u\\b/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of clone with option -u is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"push\" && /^\\s*--exec\\b/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of push with option --exec is not permitted without enabling allowUnsafePack`\n );\n }\n}\nfunction blockUnsafeOperationsPlugin({\n allowUnsafeProtocolOverride = false,\n allowUnsafePack = false\n} = {}) {\n return {\n type: \"spawn.args\",\n action(args, context) {\n args.forEach((current, index) => {\n const next = index < args.length ? args[index + 1] : \"\";\n allowUnsafeProtocolOverride || preventProtocolOverride(current, next);\n allowUnsafePack || preventUploadPack(current, context.method);\n });\n return args;\n }\n };\n}\n\n// src/lib/plugins/command-config-prefixing-plugin.ts\ninit_utils();\nfunction commandConfigPrefixingPlugin(configuration) {\n const prefix = prefixedArray(configuration, \"-c\");\n return {\n type: \"spawn.args\",\n action(data) {\n return [...prefix, ...data];\n }\n };\n}\n\n// src/lib/plugins/completion-detection.plugin.ts\ninit_utils();\nimport { deferred } from \"@kwsites/promise-deferred\";\nvar never = deferred().promise;\nfunction completionDetectionPlugin({\n onClose = true,\n onExit = 50\n} = {}) {\n function createEvents() {\n let exitCode = -1;\n const events = {\n close: deferred(),\n closeTimeout: deferred(),\n exit: deferred(),\n exitTimeout: deferred()\n };\n const result = Promise.race([\n onClose === false ? never : events.closeTimeout.promise,\n onExit === false ? never : events.exitTimeout.promise\n ]);\n configureTimeout(onClose, events.close, events.closeTimeout);\n configureTimeout(onExit, events.exit, events.exitTimeout);\n return {\n close(code) {\n exitCode = code;\n events.close.done();\n },\n exit(code) {\n exitCode = code;\n events.exit.done();\n },\n get exitCode() {\n return exitCode;\n },\n result\n };\n }\n function configureTimeout(flag, event, timeout) {\n if (flag === false) {\n return;\n }\n (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);\n }\n return {\n type: \"spawn.after\",\n async action(_data, { spawned, close }) {\n const events = createEvents();\n let deferClose = true;\n let quickClose = () => void (deferClose = false);\n spawned.stdout?.on(\"data\", quickClose);\n spawned.stderr?.on(\"data\", quickClose);\n spawned.on(\"error\", quickClose);\n spawned.on(\"close\", (code) => events.close(code));\n spawned.on(\"exit\", (code) => events.exit(code));\n try {\n await events.result;\n if (deferClose) {\n await delay(50);\n }\n close(events.exitCode);\n } catch (err) {\n close(events.exitCode, err);\n }\n }\n };\n}\n\n// src/lib/plugins/custom-binary.plugin.ts\ninit_utils();\nvar WRONG_NUMBER_ERR = `Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`;\nvar WRONG_CHARS_ERR = `Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;\nfunction isBadArgument(arg) {\n return !arg || !/^([a-z]:)?([a-z0-9/.\\\\_-]+)$/i.test(arg);\n}\nfunction toBinaryConfig(input, allowUnsafe) {\n if (input.length < 1 || input.length > 2) {\n throw new GitPluginError(void 0, \"binary\", WRONG_NUMBER_ERR);\n }\n const isBad = input.some(isBadArgument);\n if (isBad) {\n if (allowUnsafe) {\n console.warn(WRONG_CHARS_ERR);\n } else {\n throw new GitPluginError(void 0, \"binary\", WRONG_CHARS_ERR);\n }\n }\n const [binary, prefix] = input;\n return {\n binary,\n prefix\n };\n}\nfunction customBinaryPlugin(plugins, input = [\"git\"], allowUnsafe = false) {\n let config = toBinaryConfig(asArray(input), allowUnsafe);\n plugins.on(\"binary\", (input2) => {\n config = toBinaryConfig(asArray(input2), allowUnsafe);\n });\n plugins.append(\"spawn.binary\", () => {\n return config.binary;\n });\n plugins.append(\"spawn.args\", (data) => {\n return config.prefix ? [config.prefix, ...data] : data;\n });\n}\n\n// src/lib/plugins/error-detection.plugin.ts\ninit_git_error();\nfunction isTaskError(result) {\n return !!(result.exitCode && result.stdErr.length);\n}\nfunction getErrorMessage(result) {\n return Buffer.concat([...result.stdOut, ...result.stdErr]);\n}\nfunction errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) {\n return (error, result) => {\n if (!overwrite && error || !isError(result)) {\n return error;\n }\n return errorMessage(result);\n };\n}\nfunction errorDetectionPlugin(config) {\n return {\n type: \"task.error\",\n action(data, context) {\n const error = config(data.error, {\n stdErr: context.stdErr,\n stdOut: context.stdOut,\n exitCode: context.exitCode\n });\n if (Buffer.isBuffer(error)) {\n return { error: new GitError(void 0, error.toString(\"utf-8\")) };\n }\n return {\n error\n };\n }\n };\n}\n\n// src/lib/plugins/plugin-store.ts\ninit_utils();\nimport { EventEmitter } from \"node:events\";\nvar PluginStore = class {\n constructor() {\n this.plugins = /* @__PURE__ */ new Set();\n this.events = new EventEmitter();\n }\n on(type, listener) {\n this.events.on(type, listener);\n }\n reconfigure(type, data) {\n this.events.emit(type, data);\n }\n append(type, action) {\n const plugin = append(this.plugins, { type, action });\n return () => this.plugins.delete(plugin);\n }\n add(plugin) {\n const plugins = [];\n asArray(plugin).forEach((plugin2) => plugin2 && this.plugins.add(append(plugins, plugin2)));\n return () => {\n plugins.forEach((plugin2) => this.plugins.delete(plugin2));\n };\n }\n exec(type, data, context) {\n let output = data;\n const contextual = Object.freeze(Object.create(context));\n for (const plugin of this.plugins) {\n if (plugin.type === type) {\n output = plugin.action(output, contextual);\n }\n }\n return output;\n }\n};\n\n// src/lib/plugins/progress-monitor-plugin.ts\ninit_utils();\nfunction progressMonitorPlugin(progress) {\n const progressCommand = \"--progress\";\n const progressMethods = [\"checkout\", \"clone\", \"fetch\", \"pull\", \"push\"];\n const onProgress = {\n type: \"spawn.after\",\n action(_data, context) {\n if (!context.commands.includes(progressCommand)) {\n return;\n }\n context.spawned.stderr?.on(\"data\", (chunk) => {\n const message = /^([\\s\\S]+?):\\s*(\\d+)% \\((\\d+)\\/(\\d+)\\)/.exec(chunk.toString(\"utf8\"));\n if (!message) {\n return;\n }\n progress({\n method: context.method,\n stage: progressEventStage(message[1]),\n progress: asNumber(message[2]),\n processed: asNumber(message[3]),\n total: asNumber(message[4])\n });\n });\n }\n };\n const onArgs = {\n type: \"spawn.args\",\n action(args, context) {\n if (!progressMethods.includes(context.method)) {\n return args;\n }\n return including(args, progressCommand);\n }\n };\n return [onArgs, onProgress];\n}\nfunction progressEventStage(input) {\n return String(input.toLowerCase().split(\" \", 1)) || \"unknown\";\n}\n\n// src/lib/plugins/spawn-options-plugin.ts\ninit_utils();\nfunction spawnOptionsPlugin(spawnOptions) {\n const options = pick(spawnOptions, [\"uid\", \"gid\"]);\n return {\n type: \"spawn.options\",\n action(data) {\n return { ...options, ...data };\n }\n };\n}\n\n// src/lib/plugins/timout-plugin.ts\nfunction timeoutPlugin({\n block,\n stdErr = true,\n stdOut = true\n}) {\n if (block > 0) {\n return {\n type: \"spawn.after\",\n action(_data, context) {\n let timeout;\n function wait() {\n timeout && clearTimeout(timeout);\n timeout = setTimeout(kill, block);\n }\n function stop() {\n context.spawned.stdout?.off(\"data\", wait);\n context.spawned.stderr?.off(\"data\", wait);\n context.spawned.off(\"exit\", stop);\n context.spawned.off(\"close\", stop);\n timeout && clearTimeout(timeout);\n }\n function kill() {\n stop();\n context.kill(new GitPluginError(void 0, \"timeout\", `block timeout reached`));\n }\n stdOut && context.spawned.stdout?.on(\"data\", wait);\n stdErr && context.spawned.stderr?.on(\"data\", wait);\n context.spawned.on(\"exit\", stop);\n context.spawned.on(\"close\", stop);\n wait();\n }\n };\n }\n}\n\n// src/lib/plugins/suffix-paths.plugin.ts\ninit_pathspec();\nfunction suffixPathsPlugin() {\n return {\n type: \"spawn.args\",\n action(data) {\n const prefix = [];\n let suffix;\n function append2(args) {\n (suffix = suffix || []).push(...args);\n }\n for (let i = 0; i < data.length; i++) {\n const param = data[i];\n if (isPathSpec(param)) {\n append2(toPaths(param));\n continue;\n }\n if (param === \"--\") {\n append2(\n data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item)\n );\n break;\n }\n prefix.push(param);\n }\n return !suffix ? prefix : [...prefix, \"--\", ...suffix.map(String)];\n }\n };\n}\n\n// src/lib/git-factory.ts\ninit_utils();\nvar Git = require_git();\nfunction gitInstanceFactory(baseDir, options) {\n const plugins = new PluginStore();\n const config = createInstanceConfig(\n baseDir && (typeof baseDir === \"string\" ? { baseDir } : baseDir) || {},\n options\n );\n if (!folderExists(config.baseDir)) {\n throw new GitConstructError(\n config,\n `Cannot use simple-git on a directory that does not exist`\n );\n }\n if (Array.isArray(config.config)) {\n plugins.add(commandConfigPrefixingPlugin(config.config));\n }\n plugins.add(blockUnsafeOperationsPlugin(config.unsafe));\n plugins.add(suffixPathsPlugin());\n plugins.add(completionDetectionPlugin(config.completion));\n config.abort && plugins.add(abortPlugin(config.abort));\n config.progress && plugins.add(progressMonitorPlugin(config.progress));\n config.timeout && plugins.add(timeoutPlugin(config.timeout));\n config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));\n plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));\n config.errors && plugins.add(errorDetectionPlugin(config.errors));\n customBinaryPlugin(plugins, config.binary, config.unsafe?.allowUnsafeCustomBinary);\n return new Git(config, plugins);\n}\n\n// src/lib/runners/promise-wrapped.ts\ninit_git_response_error();\nvar functionNamesBuilderApi = [\"customBinary\", \"env\", \"outputHandler\", \"silent\"];\nvar functionNamesPromiseApi = [\n \"add\",\n \"addAnnotatedTag\",\n \"addConfig\",\n \"addRemote\",\n \"addTag\",\n \"applyPatch\",\n \"binaryCatFile\",\n \"branch\",\n \"branchLocal\",\n \"catFile\",\n \"checkIgnore\",\n \"checkIsRepo\",\n \"checkout\",\n \"checkoutBranch\",\n \"checkoutLatestTag\",\n \"checkoutLocalBranch\",\n \"clean\",\n \"clone\",\n \"commit\",\n \"cwd\",\n \"deleteLocalBranch\",\n \"deleteLocalBranches\",\n \"diff\",\n \"diffSummary\",\n \"exec\",\n \"fetch\",\n \"getRemotes\",\n \"init\",\n \"listConfig\",\n \"listRemote\",\n \"log\",\n \"merge\",\n \"mergeFromTo\",\n \"mirror\",\n \"mv\",\n \"pull\",\n \"push\",\n \"pushTags\",\n \"raw\",\n \"rebase\",\n \"remote\",\n \"removeRemote\",\n \"reset\",\n \"revert\",\n \"revparse\",\n \"rm\",\n \"rmKeepLocal\",\n \"show\",\n \"stash\",\n \"stashList\",\n \"status\",\n \"subModule\",\n \"submoduleAdd\",\n \"submoduleInit\",\n \"submoduleUpdate\",\n \"tag\",\n \"tags\",\n \"updateServerInfo\"\n];\nfunction gitP(...args) {\n let git;\n let chain = Promise.resolve();\n try {\n git = gitInstanceFactory(...args);\n } catch (e) {\n chain = Promise.reject(e);\n }\n function builderReturn() {\n return promiseApi;\n }\n function chainReturn() {\n return chain;\n }\n const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce(\n (api, name) => {\n const isAsync = functionNamesPromiseApi.includes(name);\n const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);\n const alternative = isAsync ? chainReturn : builderReturn;\n Object.defineProperty(api, name, {\n enumerable: false,\n configurable: false,\n value: git ? valid : alternative\n });\n return api;\n },\n {}\n );\n return promiseApi;\n function asyncWrapper(fn, git2) {\n return function(...args2) {\n if (typeof args2[args2.length] === \"function\") {\n throw new TypeError(\n \"Promise interface requires that handlers are not supplied inline, trailing function not allowed in call to \" + fn\n );\n }\n return chain.then(function() {\n return new Promise(function(resolve, reject) {\n const callback = (err, result) => {\n if (err) {\n return reject(toError(err));\n }\n resolve(result);\n };\n args2.push(callback);\n git2[fn].apply(git2, args2);\n });\n });\n };\n }\n function syncWrapper(fn, git2, api) {\n return (...args2) => {\n git2[fn](...args2);\n return api;\n };\n }\n}\nfunction toError(error) {\n if (error instanceof Error) {\n return error;\n }\n if (typeof error === \"string\") {\n return new Error(error);\n }\n return new GitResponseError(error);\n}\n\n// src/esm.mjs\nvar simpleGit = gitInstanceFactory;\nvar esm_default = gitInstanceFactory;\nexport {\n CheckRepoActions,\n CleanOptions,\n DiffNameStatus,\n GitConfigScope,\n GitConstructError,\n GitError,\n GitPluginError,\n GitResponseError,\n ResetMode,\n TaskConfigurationError,\n esm_default as default,\n gitP,\n grepQueryBuilder,\n pathspec,\n simpleGit\n};\n//# sourceMappingURL=index.js.map\n",
|
|
29
|
+
"import simpleGit from 'simple-git';\r\nimport { join, normalize, resolve, sep } from 'path';\r\nimport { mkdtemp, rm } from 'fs/promises';\r\nimport { tmpdir } from 'os';\r\nimport type { ParsedSource } from '../types';\r\n\r\n/**\r\n * Parse various Git source formats into a normalized structure\r\n * Supports:\r\n * - GitHub URLs with paths: https://github.com/owner/repo/tree/branch/path/to/skill\r\n * - GitHub URLs: https://github.com/owner/repo\r\n * - GitLab URLs with paths: https://gitlab.com/owner/repo/-/tree/branch/path\r\n * - GitLab URLs: https://gitlab.com/owner/repo\r\n * - GitHub shorthand: owner/repo or owner/repo/path/to/skill\r\n * - Direct git URLs: git@github.com:owner/repo.git\r\n */\r\nexport function parseSource(input: string): ParsedSource {\r\n // GitHub URL with path: https://github.com/owner/repo/tree/branch/path/to/skill\r\n const githubTreeMatch = input.match(\r\n /github\\.com\\/([^/]+)\\/([^/]+)\\/tree\\/([^/]+)\\/(.+)/\r\n );\r\n if (githubTreeMatch) {\r\n const [, owner, repo, , subpath] = githubTreeMatch;\r\n return {\r\n type: 'github',\r\n url: `https://github.com/${owner}/${repo}.git`,\r\n subpath,\r\n };\r\n }\r\n\r\n // GitHub URL: https://github.com/owner/repo\r\n const githubRepoMatch = input.match(/github\\.com\\/([^/]+)\\/([^/]+)/);\r\n if (githubRepoMatch) {\r\n const [, owner, repo] = githubRepoMatch;\r\n const cleanRepo = repo!.replace(/\\.git$/, '');\r\n return {\r\n type: 'github',\r\n url: `https://github.com/${owner}/${cleanRepo}.git`,\r\n };\r\n }\r\n\r\n // GitLab URL with path: https://gitlab.com/owner/repo/-/tree/branch/path\r\n const gitlabTreeMatch = input.match(\r\n /gitlab\\.com\\/([^/]+)\\/([^/]+)\\/-\\/tree\\/([^/]+)\\/(.+)/\r\n );\r\n if (gitlabTreeMatch) {\r\n const [, owner, repo, , subpath] = gitlabTreeMatch;\r\n return {\r\n type: 'gitlab',\r\n url: `https://gitlab.com/${owner}/${repo}.git`,\r\n subpath,\r\n };\r\n }\r\n\r\n // GitLab URL: https://gitlab.com/owner/repo\r\n const gitlabRepoMatch = input.match(/gitlab\\.com\\/([^/]+)\\/([^/]+)/);\r\n if (gitlabRepoMatch) {\r\n const [, owner, repo] = gitlabRepoMatch;\r\n const cleanRepo = repo!.replace(/\\.git$/, '');\r\n return {\r\n type: 'gitlab',\r\n url: `https://gitlab.com/${owner}/${cleanRepo}.git`,\r\n };\r\n }\r\n\r\n // GitHub shorthand: owner/repo or owner/repo/path/to/skill\r\n const shorthandMatch = input.match(/^([^/]+)\\/([^/]+)(?:\\/(.+))?$/);\r\n if (shorthandMatch && !input.includes(':')) {\r\n const [, owner, repo, subpath] = shorthandMatch;\r\n return {\r\n type: 'github',\r\n url: `https://github.com/${owner}/${repo}.git`,\r\n subpath,\r\n };\r\n }\r\n\r\n // Fallback: treat as direct git URL\r\n return {\r\n type: 'git',\r\n url: input,\r\n };\r\n}\r\n\r\n/**\r\n * Clone a Git repository to a temporary directory\r\n * Uses shallow clone (depth 1) for faster downloads\r\n */\r\nexport async function cloneRepo(url: string): Promise<string> {\r\n const tempDir = await mkdtemp(join(tmpdir(), 'agent-skills-'));\r\n const git = simpleGit();\r\n await git.clone(url, tempDir, ['--depth', '1']);\r\n return tempDir;\r\n}\r\n\r\n/**\r\n * Safely cleanup a temporary directory\r\n * Validates that the directory is within tmpdir to prevent accidental deletion\r\n */\r\nexport async function cleanupTempDir(dir: string): Promise<void> {\r\n // Validate that the directory path is within tmpdir to prevent deletion of arbitrary paths\r\n const normalizedDir = normalize(resolve(dir));\r\n const normalizedTmpDir = normalize(resolve(tmpdir()));\r\n\r\n if (!normalizedDir.startsWith(normalizedTmpDir + sep) && normalizedDir !== normalizedTmpDir) {\r\n throw new Error('Attempted to clean up directory outside of temp directory');\r\n }\r\n\r\n await rm(dir, { recursive: true, force: true });\r\n}\r\n",
|
|
30
|
+
"var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n",
|
|
31
|
+
"/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isExtendable(val) {\n return typeof val !== 'undefined' && val !== null\n && (typeof val === 'object' || typeof val === 'function');\n};\n",
|
|
32
|
+
"'use strict';\n\nvar isObject = require('is-extendable');\n\nmodule.exports = function extend(o/*, objects*/) {\n if (!isObject(o)) { o = {}; }\n\n var len = arguments.length;\n for (var i = 1; i < len; i++) {\n var obj = arguments[i];\n\n if (isObject(obj)) {\n assign(o, obj);\n }\n }\n return o;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n",
|
|
33
|
+
"'use strict';\n\nvar typeOf = require('kind-of');\nvar extend = require('extend-shallow');\n\n/**\n * Parse sections in `input` with the given `options`.\n *\n * ```js\n * var sections = require('{%= name %}');\n * var result = sections(input, options);\n * // { content: 'Content before sections', sections: [] }\n * ```\n * @param {String|Buffer|Object} `input` If input is an object, it's `content` property must be a string or buffer.\n * @param {Object} options\n * @return {Object} Returns an object with a `content` string and an array of `sections` objects.\n * @api public\n */\n\nmodule.exports = function(input, options) {\n if (typeof options === 'function') {\n options = { parse: options };\n }\n\n var file = toObject(input);\n var defaults = {section_delimiter: '---', parse: identity};\n var opts = extend({}, defaults, options);\n var delim = opts.section_delimiter;\n var lines = file.content.split(/\\r?\\n/);\n var sections = null;\n var section = createSection();\n var content = [];\n var stack = [];\n\n function initSections(val) {\n file.content = val;\n sections = [];\n content = [];\n }\n\n function closeSection(val) {\n if (stack.length) {\n section.key = getKey(stack[0], delim);\n section.content = val;\n opts.parse(section, sections);\n sections.push(section);\n section = createSection();\n content = [];\n stack = [];\n }\n }\n\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var len = stack.length;\n var ln = line.trim();\n\n if (isDelimiter(ln, delim)) {\n if (ln.length === 3 && i !== 0) {\n if (len === 0 || len === 2) {\n content.push(line);\n continue;\n }\n stack.push(ln);\n section.data = content.join('\\n');\n content = [];\n continue;\n }\n\n if (sections === null) {\n initSections(content.join('\\n'));\n }\n\n if (len === 2) {\n closeSection(content.join('\\n'));\n }\n\n stack.push(ln);\n continue;\n }\n\n content.push(line);\n }\n\n if (sections === null) {\n initSections(content.join('\\n'));\n } else {\n closeSection(content.join('\\n'));\n }\n\n file.sections = sections;\n return file;\n};\n\nfunction isDelimiter(line, delim) {\n if (line.slice(0, delim.length) !== delim) {\n return false;\n }\n if (line.charAt(delim.length + 1) === delim.slice(-1)) {\n return false;\n }\n return true;\n}\n\nfunction toObject(input) {\n if (typeOf(input) !== 'object') {\n input = { content: input };\n }\n\n if (typeof input.content !== 'string' && !isBuffer(input.content)) {\n throw new TypeError('expected a buffer or string');\n }\n\n input.content = input.content.toString();\n input.sections = [];\n return input;\n}\n\nfunction getKey(val, delim) {\n return val ? val.slice(delim.length).trim() : '';\n}\n\nfunction createSection() {\n return { key: '', data: '', content: '' };\n}\n\nfunction identity(val) {\n return val;\n}\n\nfunction isBuffer(val) {\n if (val && val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n",
|
|
34
|
+
"'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n",
|
|
35
|
+
"// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n",
|
|
36
|
+
"'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n",
|
|
37
|
+
"'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n",
|
|
38
|
+
"'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n",
|
|
39
|
+
"'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n",
|
|
40
|
+
"'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n",
|
|
41
|
+
"'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n",
|
|
42
|
+
"// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n",
|
|
43
|
+
"'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n",
|
|
44
|
+
"'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n",
|
|
45
|
+
"'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 10 (except 0) or base 60\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n",
|
|
46
|
+
"'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // 20:59\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n",
|
|
47
|
+
"// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n",
|
|
48
|
+
"// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n",
|
|
49
|
+
"'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n",
|
|
50
|
+
"'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n",
|
|
51
|
+
"'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) {\n // Support node 6.+ Buffer API when available\n return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);\n }\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n",
|
|
52
|
+
"'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n",
|
|
53
|
+
"'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n",
|
|
54
|
+
"'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n",
|
|
55
|
+
"// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n",
|
|
56
|
+
"'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n",
|
|
57
|
+
"'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n",
|
|
58
|
+
"'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /* eslint-disable no-redeclare */\n /* global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n if (ast.body[0].expression.body.type === 'BlockStatement') {\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n }\n // ES6 arrow functions can omit the BlockStatement. In that case, just return\n // the body.\n /*eslint-disable no-new-func*/\n return new Function(params, 'return ' + source.slice(body[0], body[1]));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n",
|
|
59
|
+
"// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n",
|
|
60
|
+
"'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\n// set a property of a literal object, while protecting against prototype pollution,\n// see https://github.com/nodeca/js-yaml/issues/164 for more details\nfunction setProperty(object, key, value) {\n // used for this specific key only because Object.defineProperty is slow\n if (key === '__proto__') {\n Object.defineProperty(object, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: value\n });\n } else {\n object[key] = value;\n }\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n setProperty(destination, key, source[key]);\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n setProperty(_result, keyNode, valueNode);\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _pos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n _pos = state.position;\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"!<?> [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, iterator, options) {\n if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n",
|
|
61
|
+
"'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// [24] b-line-feed ::= #xA /* LF */\n// [25] b-carriage-return ::= #xD /* CR */\n// [3] c-byte-order-mark ::= #xFEFF\nfunction isNsChar(c) {\n return isPrintable(c) && !isWhitespace(c)\n // byte-order-mark\n && c !== 0xFEFF\n // b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c, prev) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n // /* An ns-char preceding */ \"#\"\n && c !== CHAR_COLON\n && ((c !== CHAR_SHARP) || (prev && isNsChar(prev)));\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char, prev_char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char, nextChar;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n // Check for surrogate pairs (reference Unicode 3.0 section \"3.7 Surrogates\").\n if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {\n nextChar = string.charCodeAt(i + 1);\n if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {\n // Combine the surrogate pair and store it escaped.\n result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);\n // Advance index one extra since we already used that char here.\n i++; continue;\n }\n }\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (index !== 0) pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, arrayLevel, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, arrayLevel, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n",
|
|
62
|
+
"'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n",
|
|
63
|
+
"'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n",
|
|
64
|
+
"'use strict';\n\nconst yaml = require('js-yaml');\n\n/**\n * Default engines\n */\n\nconst engines = exports = module.exports;\n\n/**\n * YAML\n */\n\nengines.yaml = {\n parse: yaml.safeLoad.bind(yaml),\n stringify: yaml.safeDump.bind(yaml)\n};\n\n/**\n * JSON\n */\n\nengines.json = {\n parse: JSON.parse.bind(JSON),\n stringify: function(obj, options) {\n const opts = Object.assign({replacer: null, space: 2}, options);\n return JSON.stringify(obj, opts.replacer, opts.space);\n }\n};\n\n/**\n * JavaScript\n */\n\nengines.javascript = {\n parse: function parse(str, options, wrap) {\n /* eslint no-eval: 0 */\n try {\n if (wrap !== false) {\n str = '(function() {\\nreturn ' + str.trim() + ';\\n}());';\n }\n return eval(str) || {};\n } catch (err) {\n if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) {\n return parse(str, options, false);\n }\n throw new SyntaxError(err);\n }\n },\n stringify: function() {\n throw new Error('stringifying JavaScript is not supported');\n }\n};\n",
|
|
65
|
+
"/*!\n * strip-bom-string <https://github.com/jonschlinkert/strip-bom-string>\n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(str) {\n if (typeof str === 'string' && str.charAt(0) === '\\ufeff') {\n return str.slice(1);\n }\n return str;\n};\n",
|
|
66
|
+
"'use strict';\n\nconst stripBom = require('strip-bom-string');\nconst typeOf = require('kind-of');\n\nexports.define = function(obj, key, val) {\n Reflect.defineProperty(obj, key, {\n enumerable: false,\n configurable: true,\n writable: true,\n value: val\n });\n};\n\n/**\n * Returns true if `val` is a buffer\n */\n\nexports.isBuffer = function(val) {\n return typeOf(val) === 'buffer';\n};\n\n/**\n * Returns true if `val` is an object\n */\n\nexports.isObject = function(val) {\n return typeOf(val) === 'object';\n};\n\n/**\n * Cast `input` to a buffer\n */\n\nexports.toBuffer = function(input) {\n return typeof input === 'string' ? Buffer.from(input) : input;\n};\n\n/**\n * Cast `val` to a string.\n */\n\nexports.toString = function(input) {\n if (exports.isBuffer(input)) return stripBom(String(input));\n if (typeof input !== 'string') {\n throw new TypeError('expected input to be a string or buffer');\n }\n return stripBom(input);\n};\n\n/**\n * Cast `val` to an array.\n */\n\nexports.arrayify = function(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Returns true if `str` starts with `substr`.\n */\n\nexports.startsWith = function(str, substr, len) {\n if (typeof len !== 'number') len = substr.length;\n return str.slice(0, len) === substr;\n};\n",
|
|
67
|
+
"'use strict';\n\nconst engines = require('./engines');\nconst utils = require('./utils');\n\nmodule.exports = function(options) {\n const opts = Object.assign({}, options);\n\n // ensure that delimiters are an array\n opts.delimiters = utils.arrayify(opts.delims || opts.delimiters || '---');\n if (opts.delimiters.length === 1) {\n opts.delimiters.push(opts.delimiters[0]);\n }\n\n opts.language = (opts.language || opts.lang || 'yaml').toLowerCase();\n opts.engines = Object.assign({}, engines, opts.parsers, opts.engines);\n return opts;\n};\n",
|
|
68
|
+
"'use strict';\n\nmodule.exports = function(name, options) {\n let engine = options.engines[name] || options.engines[aliase(name)];\n if (typeof engine === 'undefined') {\n throw new Error('gray-matter engine \"' + name + '\" is not registered');\n }\n if (typeof engine === 'function') {\n engine = { parse: engine };\n }\n return engine;\n};\n\nfunction aliase(name) {\n switch (name.toLowerCase()) {\n case 'js':\n case 'javascript':\n return 'javascript';\n case 'coffee':\n case 'coffeescript':\n case 'cson':\n return 'coffee';\n case 'yaml':\n case 'yml':\n return 'yaml';\n default: {\n return name;\n }\n }\n}\n",
|
|
69
|
+
"'use strict';\n\nconst typeOf = require('kind-of');\nconst getEngine = require('./engine');\nconst defaults = require('./defaults');\n\nmodule.exports = function(file, data, options) {\n if (data == null && options == null) {\n switch (typeOf(file)) {\n case 'object':\n data = file.data;\n options = {};\n break;\n case 'string':\n return file;\n default: {\n throw new TypeError('expected file to be a string or object');\n }\n }\n }\n\n const str = file.content;\n const opts = defaults(options);\n if (data == null) {\n if (!opts.data) return file;\n data = opts.data;\n }\n\n const language = file.language || opts.language;\n const engine = getEngine(language, opts);\n if (typeof engine.stringify !== 'function') {\n throw new TypeError('expected \"' + language + '.stringify\" to be a function');\n }\n\n data = Object.assign({}, file.data, data);\n const open = opts.delimiters[0];\n const close = opts.delimiters[1];\n const matter = engine.stringify(data, options).trim();\n let buf = '';\n\n if (matter !== '{}') {\n buf = newline(open) + newline(matter) + newline(close);\n }\n\n if (typeof file.excerpt === 'string' && file.excerpt !== '') {\n if (str.indexOf(file.excerpt.trim()) === -1) {\n buf += newline(file.excerpt) + newline(close);\n }\n }\n\n return buf + newline(str);\n};\n\nfunction newline(str) {\n return str.slice(-1) !== '\\n' ? str + '\\n' : str;\n}\n",
|
|
70
|
+
"'use strict';\n\nconst defaults = require('./defaults');\n\nmodule.exports = function(file, options) {\n const opts = defaults(options);\n\n if (file.data == null) {\n file.data = {};\n }\n\n if (typeof opts.excerpt === 'function') {\n return opts.excerpt(file, opts);\n }\n\n const sep = file.data.excerpt_separator || opts.excerpt_separator;\n if (sep == null && (opts.excerpt === false || opts.excerpt == null)) {\n return file;\n }\n\n const delimiter = typeof opts.excerpt === 'string'\n ? opts.excerpt\n : (sep || opts.delimiters[0]);\n\n // if enabled, get the excerpt defined after front-matter\n const idx = file.content.indexOf(delimiter);\n if (idx !== -1) {\n file.excerpt = file.content.slice(0, idx);\n }\n\n return file;\n};\n",
|
|
71
|
+
"'use strict';\n\nconst typeOf = require('kind-of');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\n/**\n * Normalize the given value to ensure an object is returned\n * with the expected properties.\n */\n\nmodule.exports = function(file) {\n if (typeOf(file) !== 'object') {\n file = { content: file };\n }\n\n if (typeOf(file.data) !== 'object') {\n file.data = {};\n }\n\n // if file was passed as an object, ensure that\n // \"file.content\" is set\n if (file.contents && file.content == null) {\n file.content = file.contents;\n }\n\n // set non-enumerable properties on the file object\n utils.define(file, 'orig', utils.toBuffer(file.content));\n utils.define(file, 'language', file.language || '');\n utils.define(file, 'matter', file.matter || '');\n utils.define(file, 'stringify', function(data, options) {\n if (options && options.language) {\n file.language = options.language;\n }\n return stringify(file, data, options);\n });\n\n // strip BOM and ensure that \"file.content\" is a string\n file.content = utils.toString(file.content);\n file.isEmpty = false;\n file.excerpt = '';\n return file;\n};\n",
|
|
72
|
+
"'use strict';\n\nconst getEngine = require('./engine');\nconst defaults = require('./defaults');\n\nmodule.exports = function(language, str, options) {\n const opts = defaults(options);\n const engine = getEngine(language, opts);\n if (typeof engine.parse !== 'function') {\n throw new TypeError('expected \"' + language + '.parse\" to be a function');\n }\n return engine.parse(str, opts);\n};\n",
|
|
73
|
+
"'use strict';\n\nconst fs = require('fs');\nconst sections = require('section-matter');\nconst defaults = require('./lib/defaults');\nconst stringify = require('./lib/stringify');\nconst excerpt = require('./lib/excerpt');\nconst engines = require('./lib/engines');\nconst toFile = require('./lib/to-file');\nconst parse = require('./lib/parse');\nconst utils = require('./lib/utils');\n\n/**\n * Takes a string or object with `content` property, extracts\n * and parses front-matter from the string, then returns an object\n * with `data`, `content` and other [useful properties](#returned-object).\n *\n * ```js\n * const matter = require('gray-matter');\n * console.log(matter('---\\ntitle: Home\\n---\\nOther stuff'));\n * //=> { data: { title: 'Home'}, content: 'Other stuff' }\n * ```\n * @param {Object|String} `input` String, or object with `content` string\n * @param {Object} `options`\n * @return {Object}\n * @api public\n */\n\nfunction matter(input, options) {\n if (input === '') {\n return { data: {}, content: input, excerpt: '', orig: input };\n }\n\n let file = toFile(input);\n const cached = matter.cache[file.content];\n\n if (!options) {\n if (cached) {\n file = Object.assign({}, cached);\n file.orig = cached.orig;\n return file;\n }\n\n // only cache if there are no options passed. if we cache when options\n // are passed, we would need to also cache options values, which would\n // negate any performance benefits of caching\n matter.cache[file.content] = file;\n }\n\n return parseMatter(file, options);\n}\n\n/**\n * Parse front matter\n */\n\nfunction parseMatter(file, options) {\n const opts = defaults(options);\n const open = opts.delimiters[0];\n const close = '\\n' + opts.delimiters[1];\n let str = file.content;\n\n if (opts.language) {\n file.language = opts.language;\n }\n\n // get the length of the opening delimiter\n const openLen = open.length;\n if (!utils.startsWith(str, open, openLen)) {\n excerpt(file, opts);\n return file;\n }\n\n // if the next character after the opening delimiter is\n // a character from the delimiter, then it's not a front-\n // matter delimiter\n if (str.charAt(openLen) === open.slice(-1)) {\n return file;\n }\n\n // strip the opening delimiter\n str = str.slice(openLen);\n const len = str.length;\n\n // use the language defined after first delimiter, if it exists\n const language = matter.language(str, opts);\n if (language.name) {\n file.language = language.name;\n str = str.slice(language.raw.length);\n }\n\n // get the index of the closing delimiter\n let closeIndex = str.indexOf(close);\n if (closeIndex === -1) {\n closeIndex = len;\n }\n\n // get the raw front-matter block\n file.matter = str.slice(0, closeIndex);\n\n const block = file.matter.replace(/^\\s*#[^\\n]+/gm, '').trim();\n if (block === '') {\n file.isEmpty = true;\n file.empty = file.content;\n file.data = {};\n } else {\n\n // create file.data by parsing the raw file.matter block\n file.data = parse(file.language, file.matter, opts);\n }\n\n // update file.content\n if (closeIndex === len) {\n file.content = '';\n } else {\n file.content = str.slice(closeIndex + close.length);\n if (file.content[0] === '\\r') {\n file.content = file.content.slice(1);\n }\n if (file.content[0] === '\\n') {\n file.content = file.content.slice(1);\n }\n }\n\n excerpt(file, opts);\n\n if (opts.sections === true || typeof opts.section === 'function') {\n sections(file, opts.section);\n }\n return file;\n}\n\n/**\n * Expose engines\n */\n\nmatter.engines = engines;\n\n/**\n * Stringify an object to YAML or the specified language, and\n * append it to the given string. By default, only YAML and JSON\n * can be stringified. See the [engines](#engines) section to learn\n * how to stringify other languages.\n *\n * ```js\n * console.log(matter.stringify('foo bar baz', {title: 'Home'}));\n * // results in:\n * // ---\n * // title: Home\n * // ---\n * // foo bar baz\n * ```\n * @param {String|Object} `file` The content string to append to stringified front-matter, or a file object with `file.content` string.\n * @param {Object} `data` Front matter to stringify.\n * @param {Object} `options` [Options](#options) to pass to gray-matter and [js-yaml].\n * @return {String} Returns a string created by wrapping stringified yaml with delimiters, and appending that to the given string.\n * @api public\n */\n\nmatter.stringify = function(file, data, options) {\n if (typeof file === 'string') file = matter(file, options);\n return stringify(file, data, options);\n};\n\n/**\n * Synchronously read a file from the file system and parse\n * front matter. Returns the same object as the [main function](#matter).\n *\n * ```js\n * const file = matter.read('./content/blog-post.md');\n * ```\n * @param {String} `filepath` file path of the file to read.\n * @param {Object} `options` [Options](#options) to pass to gray-matter.\n * @return {Object} Returns [an object](#returned-object) with `data` and `content`\n * @api public\n */\n\nmatter.read = function(filepath, options) {\n const str = fs.readFileSync(filepath, 'utf8');\n const file = matter(str, options);\n file.path = filepath;\n return file;\n};\n\n/**\n * Returns true if the given `string` has front matter.\n * @param {String} `string`\n * @param {Object} `options`\n * @return {Boolean} True if front matter exists.\n * @api public\n */\n\nmatter.test = function(str, options) {\n return utils.startsWith(str, defaults(options).delimiters[0]);\n};\n\n/**\n * Detect the language to use, if one is defined after the\n * first front-matter delimiter.\n * @param {String} `string`\n * @param {Object} `options`\n * @return {Object} Object with `raw` (actual language string), and `name`, the language with whitespace trimmed\n */\n\nmatter.language = function(str, options) {\n const opts = defaults(options);\n const open = opts.delimiters[0];\n\n if (matter.test(str)) {\n str = str.slice(open.length);\n }\n\n const language = str.slice(0, str.search(/\\r?\\n/));\n return {\n raw: language,\n name: language ? language.trim() : ''\n };\n};\n\n/**\n * Expose `matter`\n */\n\nmatter.cache = {};\nmatter.clearCache = function() {\n matter.cache = {};\n};\nmodule.exports = matter;\n",
|
|
74
|
+
"import { readdir, readFile, stat } from 'fs/promises';\r\nimport { join, basename, dirname } from 'path';\r\nimport matter from 'gray-matter';\r\nimport type { Skill } from '../types';\r\n\r\nconst SKIP_DIRS = ['node_modules', '.git', 'dist', 'build', '__pycache__'];\r\n\r\n/**\r\n * Check if a directory contains a SKILL.md file\r\n */\r\nasync function hasSkillMd(dir: string): Promise<boolean> {\r\n try {\r\n const skillPath = join(dir, 'SKILL.md');\r\n const stats = await stat(skillPath);\r\n return stats.isFile();\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Parse a SKILL.md file and extract metadata from frontmatter\r\n * Returns null if required fields (name, description) are missing\r\n */\r\nasync function parseSkillMd(skillMdPath: string): Promise<Skill | null> {\r\n try {\r\n const content = await readFile(skillMdPath, 'utf-8');\r\n const { data } = matter(content);\r\n\r\n if (!data.name || !data.description) {\r\n return null;\r\n }\r\n\r\n return {\r\n name: data.name,\r\n description: data.description,\r\n path: dirname(skillMdPath),\r\n metadata: data.metadata,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Recursively find all directories containing SKILL.md files\r\n * Limited to a maximum depth to prevent excessive searching\r\n */\r\nasync function findSkillDirs(dir: string, depth = 0, maxDepth = 5): Promise<string[]> {\r\n const skillDirs: string[] = [];\r\n\r\n if (depth > maxDepth) return skillDirs;\r\n\r\n try {\r\n if (await hasSkillMd(dir)) {\r\n skillDirs.push(dir);\r\n }\r\n\r\n const entries = await readdir(dir, { withFileTypes: true });\r\n\r\n for (const entry of entries) {\r\n if (entry.isDirectory() && !SKIP_DIRS.includes(entry.name)) {\r\n const subDirs = await findSkillDirs(join(dir, entry.name), depth + 1, maxDepth);\r\n skillDirs.push(...subDirs);\r\n }\r\n }\r\n } catch {\r\n // Ignore errors (permission issues, etc.)\r\n }\r\n\r\n return skillDirs;\r\n}\r\n\r\n/**\r\n * Discover all skills in a directory\r\n * Searches priority locations first, then falls back to recursive search\r\n */\r\nexport async function discoverSkills(basePath: string, subpath?: string): Promise<Skill[]> {\r\n const skills: Skill[] = [];\r\n const seenNames = new Set<string>();\r\n const searchPath = subpath ? join(basePath, subpath) : basePath;\r\n\r\n // If pointing directly at a skill, return just that\r\n if (await hasSkillMd(searchPath)) {\r\n const skill = await parseSkillMd(join(searchPath, 'SKILL.md'));\r\n if (skill) {\r\n skills.push(skill);\r\n return skills;\r\n }\r\n }\r\n\r\n // Search common skill locations first\r\n const prioritySearchDirs = [\r\n searchPath,\r\n join(searchPath, 'skills'),\r\n join(searchPath, 'skills/.curated'),\r\n join(searchPath, 'skills/.experimental'),\r\n join(searchPath, 'skills/.system'),\r\n join(searchPath, '.codex/skills'),\r\n join(searchPath, '.claude/skills'),\r\n join(searchPath, '.opencode/skill'),\r\n join(searchPath, '.cursor/skills'),\r\n join(searchPath, '.agents/skills'),\r\n join(searchPath, '.kilocode/skills'),\r\n join(searchPath, '.roo/skills'),\r\n join(searchPath, '.goose/skills'),\r\n join(searchPath, '.agent/skills'),\r\n join(searchPath, '.github/skills'),\r\n ];\r\n\r\n for (const dir of prioritySearchDirs) {\r\n try {\r\n const entries = await readdir(dir, { withFileTypes: true });\r\n\r\n for (const entry of entries) {\r\n if (entry.isDirectory()) {\r\n const skillDir = join(dir, entry.name);\r\n if (await hasSkillMd(skillDir)) {\r\n const skill = await parseSkillMd(join(skillDir, 'SKILL.md'));\r\n if (skill && !seenNames.has(skill.name)) {\r\n skills.push(skill);\r\n seenNames.add(skill.name);\r\n }\r\n }\r\n }\r\n }\r\n } catch {\r\n // Directory doesn't exist or is not accessible\r\n }\r\n }\r\n\r\n // Fall back to recursive search if nothing found\r\n if (skills.length === 0) {\r\n const allSkillDirs = await findSkillDirs(searchPath);\r\n\r\n for (const skillDir of allSkillDirs) {\r\n const skill = await parseSkillMd(join(skillDir, 'SKILL.md'));\r\n if (skill && !seenNames.has(skill.name)) {\r\n skills.push(skill);\r\n seenNames.add(skill.name);\r\n }\r\n }\r\n }\r\n\r\n return skills;\r\n}\r\n\r\n/**\r\n * Get the display name for a skill\r\n */\r\nexport function getSkillDisplayName(skill: Skill): string {\r\n return skill.name || basename(skill.path);\r\n}\r\n",
|
|
75
|
+
"import { homedir } from 'os';\r\nimport { join } from 'path';\r\nimport { existsSync } from 'fs';\r\nimport type { AgentConfig, AgentType } from '../types';\r\n\r\nconst home = homedir();\r\n\r\n/**\r\n * Configuration for all supported AI coding agents\r\n * Includes installation detection and directory paths for each agent\r\n */\r\nexport const agents: Record<AgentType, AgentConfig> = {\r\n opencode: {\r\n name: 'opencode',\r\n displayName: 'OpenCode',\r\n skillsDir: '.opencode/skill',\r\n globalSkillsDir: join(home, '.config/opencode/skill'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.config/opencode')) || existsSync(join(home, '.claude/skills'));\r\n },\r\n },\r\n 'claude-code': {\r\n name: 'claude-code',\r\n displayName: 'Claude Code',\r\n skillsDir: '.claude/skills',\r\n globalSkillsDir: join(home, '.claude/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.claude'));\r\n },\r\n },\r\n codex: {\r\n name: 'codex',\r\n displayName: 'Codex',\r\n skillsDir: '.codex/skills',\r\n globalSkillsDir: join(home, '.codex/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.codex'));\r\n },\r\n },\r\n cursor: {\r\n name: 'cursor',\r\n displayName: 'Cursor',\r\n skillsDir: '.cursor/skills',\r\n globalSkillsDir: join(home, '.cursor/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.cursor'));\r\n },\r\n },\r\n amp: {\r\n name: 'amp',\r\n displayName: 'Amp',\r\n skillsDir: '.agents/skills',\r\n globalSkillsDir: join(home, '.config/agents/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.config/amp'));\r\n },\r\n },\r\n kilo: {\r\n name: 'kilo',\r\n displayName: 'Kilo Code',\r\n skillsDir: '.kilocode/skills',\r\n globalSkillsDir: join(home, '.kilocode/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.kilocode'));\r\n },\r\n },\r\n roo: {\r\n name: 'roo',\r\n displayName: 'Roo Code',\r\n skillsDir: '.roo/skills',\r\n globalSkillsDir: join(home, '.roo/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.roo'));\r\n },\r\n },\r\n goose: {\r\n name: 'goose',\r\n displayName: 'Goose',\r\n skillsDir: '.goose/skills',\r\n globalSkillsDir: join(home, '.config/goose/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.config/goose'));\r\n },\r\n },\r\n 'gemini-cli': {\r\n name: 'gemini-cli',\r\n displayName: 'Gemini CLI',\r\n skillsDir: '.gemini/skills',\r\n globalSkillsDir: join(home, '.gemini/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.gemini'));\r\n },\r\n },\r\n antigravity: {\r\n name: 'antigravity',\r\n displayName: 'Antigravity',\r\n skillsDir: '.agent/skills',\r\n globalSkillsDir: join(home, '.gemini/antigravity/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(process.cwd(), '.agent')) || existsSync(join(home, '.gemini/antigravity'));\r\n },\r\n },\r\n 'github-copilot': {\r\n name: 'github-copilot',\r\n displayName: 'GitHub Copilot',\r\n skillsDir: '.github/skills',\r\n globalSkillsDir: join(home, '.copilot/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(process.cwd(), '.github')) || existsSync(join(home, '.copilot'));\r\n },\r\n },\r\n clawdbot: {\r\n name: 'clawdbot',\r\n displayName: 'Clawdbot',\r\n skillsDir: 'skills',\r\n globalSkillsDir: join(home, '.clawdbot/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.clawdbot'));\r\n },\r\n },\r\n droid: {\r\n name: 'droid',\r\n displayName: 'Droid',\r\n skillsDir: '.factory/skills',\r\n globalSkillsDir: join(home, '.factory/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.factory/skills'));\r\n },\r\n },\r\n gemini: {\r\n name: 'gemini',\r\n displayName: 'Gemini CLI',\r\n skillsDir: '.gemini/skills',\r\n globalSkillsDir: join(home, '.gemini/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.gemini'));\r\n },\r\n },\r\n windsurf: {\r\n name: 'windsurf',\r\n displayName: 'Windsurf',\r\n skillsDir: '.windsurf/skills',\r\n globalSkillsDir: join(home, '.codeium/windsurf/skills'),\r\n detectInstalled: async () => {\r\n return existsSync(join(home, '.codeium/windsurf'));\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Detect all installed AI coding agents on the system\r\n */\r\nexport async function detectInstalledAgents(): Promise<AgentType[]> {\r\n const installed: AgentType[] = [];\r\n\r\n for (const [type, config] of Object.entries(agents)) {\r\n if (await config.detectInstalled()) {\r\n installed.push(type as AgentType);\r\n }\r\n }\r\n\r\n return installed;\r\n}\r\n\r\n/**\r\n * Get configuration for a specific agent\r\n */\r\nexport function getAgentConfig(type: AgentType): AgentConfig {\r\n return agents[type];\r\n}\r\n",
|
|
76
|
+
"import { mkdir, cp, access, readdir } from 'fs/promises';\r\nimport { join, basename, normalize, resolve, sep } from 'path';\r\nimport type { Skill, AgentType } from '../types';\r\nimport { agents } from './agents';\r\n\r\ninterface InstallResult {\r\n success: boolean;\r\n path: string;\r\n error?: string;\r\n}\r\n\r\n/**\r\n * Sanitizes a filename/directory name to prevent path traversal attacks\r\n * @param name - The name to sanitize\r\n * @returns Sanitized name safe for use in file paths\r\n */\r\nfunction sanitizeName(name: string): string {\r\n // Remove any path separators and null bytes\r\n let sanitized = name.replace(/[\\/\\\\:\\0]/g, '');\r\n\r\n // Remove leading/trailing dots and spaces\r\n sanitized = sanitized.replace(/^[.\\s]+|[.\\s]+$/g, '');\r\n\r\n // Replace any remaining dots at the start (to prevent ..)\r\n sanitized = sanitized.replace(/^\\.+/, '');\r\n\r\n // If the name becomes empty after sanitization, use a default\r\n if (!sanitized || sanitized.length === 0) {\r\n sanitized = 'unnamed-skill';\r\n }\r\n\r\n // Limit length to prevent issues\r\n if (sanitized.length > 255) {\r\n sanitized = sanitized.substring(0, 255);\r\n }\r\n\r\n return sanitized;\r\n}\r\n\r\n/**\r\n * Validates that a path is within an expected base directory\r\n * @param basePath - The expected base directory\r\n * @param targetPath - The path to validate\r\n * @returns true if targetPath is within basePath\r\n */\r\nfunction isPathSafe(basePath: string, targetPath: string): boolean {\r\n const normalizedBase = normalize(resolve(basePath));\r\n const normalizedTarget = normalize(resolve(targetPath));\r\n\r\n return normalizedTarget.startsWith(normalizedBase + sep) ||\r\n normalizedTarget === normalizedBase;\r\n}\r\n\r\n/**\r\n * Install a skill to a specific agent\r\n * Supports both global and project-level installation\r\n */\r\nexport async function installSkillForAgent(\r\n skill: Skill,\r\n agentType: AgentType,\r\n options: { global?: boolean; cwd?: string } = {}\r\n): Promise<InstallResult> {\r\n const agent = agents[agentType];\r\n\r\n // Sanitize skill name to prevent directory traversal\r\n const rawSkillName = skill.name || basename(skill.path);\r\n const skillName = sanitizeName(rawSkillName);\r\n\r\n const targetBase = options.global\r\n ? agent.globalSkillsDir\r\n : join(options.cwd || process.cwd(), agent.skillsDir);\r\n\r\n const targetDir = join(targetBase, skillName);\r\n\r\n // Validate that the target directory is within the expected base\r\n if (!isPathSafe(targetBase, targetDir)) {\r\n return {\r\n success: false,\r\n path: targetDir,\r\n error: 'Invalid skill name: potential path traversal detected',\r\n };\r\n }\r\n\r\n try {\r\n await mkdir(targetDir, { recursive: true });\r\n await copyDirectory(skill.path, targetDir);\r\n\r\n return { success: true, path: targetDir };\r\n } catch (error) {\r\n return {\r\n success: false,\r\n path: targetDir,\r\n error: error instanceof Error ? error.message : 'Unknown error',\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Files and patterns to exclude during installation\r\n */\r\nconst EXCLUDE_FILES = new Set([\r\n 'README.md',\r\n 'metadata.json',\r\n]);\r\n\r\nconst isExcluded = (name: string): boolean => {\r\n if (EXCLUDE_FILES.has(name)) return true;\r\n if (name.startsWith('_')) return true; // Templates, section definitions\r\n return false;\r\n};\r\n\r\n/**\r\n * Recursively copy a directory, excluding certain files\r\n */\r\nasync function copyDirectory(src: string, dest: string): Promise<void> {\r\n await mkdir(dest, { recursive: true });\r\n\r\n const entries = await readdir(src, { withFileTypes: true });\r\n\r\n for (const entry of entries) {\r\n if (isExcluded(entry.name)) {\r\n continue;\r\n }\r\n\r\n const srcPath = join(src, entry.name);\r\n const destPath = join(dest, entry.name);\r\n\r\n if (entry.isDirectory()) {\r\n await copyDirectory(srcPath, destPath);\r\n } else {\r\n await cp(srcPath, destPath);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Check if a skill is already installed\r\n */\r\nexport async function isSkillInstalled(\r\n skillName: string,\r\n agentType: AgentType,\r\n options: { global?: boolean; cwd?: string } = {}\r\n): Promise<boolean> {\r\n const agent = agents[agentType];\r\n\r\n // Sanitize skill name\r\n const sanitized = sanitizeName(skillName);\r\n\r\n const targetBase = options.global\r\n ? agent.globalSkillsDir\r\n : join(options.cwd || process.cwd(), agent.skillsDir);\r\n\r\n const skillDir = join(targetBase, sanitized);\r\n\r\n // Validate path safety\r\n if (!isPathSafe(targetBase, skillDir)) {\r\n return false;\r\n }\r\n\r\n try {\r\n await access(skillDir);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Get the installation path for a skill\r\n */\r\nexport function getInstallPath(\r\n skillName: string,\r\n agentType: AgentType,\r\n options: { global?: boolean; cwd?: string } = {}\r\n): string {\r\n const agent = agents[agentType];\r\n\r\n // Sanitize skill name\r\n const sanitized = sanitizeName(skillName);\r\n\r\n const targetBase = options.global\r\n ? agent.globalSkillsDir\r\n : join(options.cwd || process.cwd(), agent.skillsDir);\r\n\r\n const installPath = join(targetBase, sanitized);\r\n\r\n // Validate path safety\r\n if (!isPathSafe(targetBase, installPath)) {\r\n throw new Error('Invalid skill name: potential path traversal detected');\r\n }\r\n\r\n return installPath;\r\n}\r\n\r\n/**\r\n * Uninstall a skill by removing its directory\r\n */\r\nexport async function uninstallSkill(skillPath: string): Promise<{ success: boolean; error?: string }> {\r\n const { rm } = await import('fs/promises');\r\n \r\n try {\r\n await rm(skillPath, { recursive: true, force: true });\r\n return { success: true };\r\n } catch (error) {\r\n return {\r\n success: false,\r\n error: error instanceof Error ? error.message : 'Unknown error',\r\n };\r\n }\r\n}\r\n",
|
|
77
|
+
"/**\r\n * Project Detector\r\n * Auto-detects project type and recommends relevant skills\r\n */\r\n\r\nimport { existsSync, readFileSync } from 'fs';\r\nimport { join } from 'path';\r\n\r\nexport interface DetectedProject {\r\n type: string;\r\n displayName: string;\r\n name?: string;\r\n version?: string;\r\n framework?: string;\r\n recommendedSkills: string[];\r\n optionalSkills: string[];\r\n configFile: string;\r\n}\r\n\r\ninterface PackageJson {\r\n name?: string;\r\n version?: string;\r\n dependencies?: Record<string, string>;\r\n devDependencies?: Record<string, string>;\r\n}\r\n\r\ninterface PubspecYaml {\r\n name?: string;\r\n version?: string;\r\n dependencies?: Record<string, unknown>;\r\n}\r\n\r\n/**\r\n * Detect project type from directory\r\n */\r\nexport async function detectProject(dir: string = '.'): Promise<DetectedProject | null> {\r\n const checks: Array<() => DetectedProject | null> = [\r\n () => checkFlutter(dir),\r\n () => checkReact(dir),\r\n () => checkNextJs(dir),\r\n () => checkVue(dir),\r\n () => checkAngular(dir),\r\n () => checkNode(dir),\r\n () => checkSpringBoot(dir),\r\n () => checkPython(dir),\r\n () => checkGo(dir),\r\n () => checkRust(dir),\r\n () => checkGeneric(dir),\r\n ];\r\n\r\n for (const check of checks) {\r\n const result = check();\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Check for Flutter/Dart project\r\n */\r\nfunction checkFlutter(dir: string): DetectedProject | null {\r\n const pubspecPath = join(dir, 'pubspec.yaml');\r\n if (!existsSync(pubspecPath)) return null;\r\n\r\n try {\r\n const content = readFileSync(pubspecPath, 'utf-8');\r\n const isFlutter = content.includes('flutter:') || content.includes('flutter_');\r\n \r\n // Parse name and version (simple regex parsing)\r\n const nameMatch = content.match(/^name:\\s*(.+)$/m);\r\n const versionMatch = content.match(/^version:\\s*(.+)$/m);\r\n\r\n return {\r\n type: isFlutter ? 'flutter' : 'dart',\r\n displayName: isFlutter ? 'Flutter' : 'Dart',\r\n name: nameMatch?.[1]?.trim(),\r\n version: versionMatch?.[1]?.trim(),\r\n recommendedSkills: isFlutter \r\n ? ['flutter', 'clean-code', 'testing']\r\n : ['dart', 'clean-code', 'testing'],\r\n optionalSkills: ['git', 'api-design'],\r\n configFile: 'pubspec.yaml',\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Check for React project\r\n */\r\nfunction checkReact(dir: string): DetectedProject | null {\r\n const pkg = readPackageJson(dir);\r\n if (!pkg) return null;\r\n\r\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\r\n \r\n if (!deps['react']) return null;\r\n \r\n // Check for Next.js (handled separately)\r\n if (deps['next']) return null;\r\n\r\n const hasTypescript = !!deps['typescript'];\r\n const hasVite = !!deps['vite'];\r\n \r\n return {\r\n type: 'react',\r\n displayName: hasVite ? 'React (Vite)' : 'React',\r\n name: pkg.name,\r\n version: pkg.version,\r\n framework: hasVite ? 'vite' : 'cra',\r\n recommendedSkills: hasTypescript \r\n ? ['react', 'typescript', 'clean-code']\r\n : ['react', 'clean-code'],\r\n optionalSkills: ['testing', 'git', 'api-design'],\r\n configFile: 'package.json',\r\n };\r\n}\r\n\r\n/**\r\n * Check for Next.js project\r\n */\r\nfunction checkNextJs(dir: string): DetectedProject | null {\r\n const pkg = readPackageJson(dir);\r\n if (!pkg) return null;\r\n\r\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\r\n \r\n if (!deps['next']) return null;\r\n\r\n const hasTypescript = !!deps['typescript'];\r\n \r\n return {\r\n type: 'nextjs',\r\n displayName: 'Next.js',\r\n name: pkg.name,\r\n version: pkg.version,\r\n framework: 'nextjs',\r\n recommendedSkills: hasTypescript \r\n ? ['react', 'typescript', 'clean-code', 'api-design']\r\n : ['react', 'clean-code', 'api-design'],\r\n optionalSkills: ['testing', 'git'],\r\n configFile: 'package.json',\r\n };\r\n}\r\n\r\n/**\r\n * Check for Vue project\r\n */\r\nfunction checkVue(dir: string): DetectedProject | null {\r\n const pkg = readPackageJson(dir);\r\n if (!pkg) return null;\r\n\r\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\r\n \r\n if (!deps['vue']) return null;\r\n\r\n const hasTypescript = !!deps['typescript'];\r\n const hasNuxt = !!deps['nuxt'];\r\n \r\n return {\r\n type: hasNuxt ? 'nuxt' : 'vue',\r\n displayName: hasNuxt ? 'Nuxt.js' : 'Vue.js',\r\n name: pkg.name,\r\n version: pkg.version,\r\n framework: hasNuxt ? 'nuxt' : 'vue',\r\n recommendedSkills: hasTypescript \r\n ? ['vue', 'typescript', 'clean-code']\r\n : ['vue', 'clean-code'],\r\n optionalSkills: ['testing', 'git', 'api-design'],\r\n configFile: 'package.json',\r\n };\r\n}\r\n\r\n/**\r\n * Check for Angular project\r\n */\r\nfunction checkAngular(dir: string): DetectedProject | null {\r\n const pkg = readPackageJson(dir);\r\n if (!pkg) return null;\r\n\r\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\r\n \r\n if (!deps['@angular/core']) return null;\r\n \r\n return {\r\n type: 'angular',\r\n displayName: 'Angular',\r\n name: pkg.name,\r\n version: pkg.version,\r\n framework: 'angular',\r\n recommendedSkills: ['angular', 'typescript', 'clean-code'],\r\n optionalSkills: ['testing', 'git', 'api-design'],\r\n configFile: 'package.json',\r\n };\r\n}\r\n\r\n/**\r\n * Check for Node.js backend project\r\n */\r\nfunction checkNode(dir: string): DetectedProject | null {\r\n const pkg = readPackageJson(dir);\r\n if (!pkg) return null;\r\n\r\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\r\n \r\n // Check for backend frameworks\r\n const hasExpress = !!deps['express'];\r\n const hasFastify = !!deps['fastify'];\r\n const hasNestJS = !!deps['@nestjs/core'];\r\n const hasHono = !!deps['hono'];\r\n const hasTypescript = !!deps['typescript'];\r\n \r\n if (!hasExpress && !hasFastify && !hasNestJS && !hasHono) {\r\n // Check if it's a generic Node project\r\n if (!existsSync(join(dir, 'package.json'))) return null;\r\n \r\n return {\r\n type: 'node',\r\n displayName: 'Node.js',\r\n name: pkg.name,\r\n version: pkg.version,\r\n recommendedSkills: hasTypescript \r\n ? ['node', 'typescript', 'clean-code']\r\n : ['node', 'clean-code'],\r\n optionalSkills: ['testing', 'git', 'api-design'],\r\n configFile: 'package.json',\r\n };\r\n }\r\n\r\n let framework = 'express';\r\n let displayName = 'Express.js';\r\n \r\n if (hasNestJS) {\r\n framework = 'nestjs';\r\n displayName = 'NestJS';\r\n } else if (hasFastify) {\r\n framework = 'fastify';\r\n displayName = 'Fastify';\r\n } else if (hasHono) {\r\n framework = 'hono';\r\n displayName = 'Hono';\r\n }\r\n \r\n return {\r\n type: 'node',\r\n displayName,\r\n name: pkg.name,\r\n version: pkg.version,\r\n framework,\r\n recommendedSkills: hasTypescript \r\n ? ['node', 'typescript', 'api-design', 'clean-code']\r\n : ['node', 'api-design', 'clean-code'],\r\n optionalSkills: ['testing', 'git'],\r\n configFile: 'package.json',\r\n };\r\n}\r\n\r\n/**\r\n * Check for Spring Boot project\r\n */\r\nfunction checkSpringBoot(dir: string): DetectedProject | null {\r\n const pomPath = join(dir, 'pom.xml');\r\n const gradlePath = join(dir, 'build.gradle');\r\n const gradleKtsPath = join(dir, 'build.gradle.kts');\r\n \r\n const hasPom = existsSync(pomPath);\r\n const hasGradle = existsSync(gradlePath) || existsSync(gradleKtsPath);\r\n \r\n if (!hasPom && !hasGradle) return null;\r\n\r\n let isSpringBoot = false;\r\n let configFile = '';\r\n\r\n if (hasPom) {\r\n try {\r\n const content = readFileSync(pomPath, 'utf-8');\r\n isSpringBoot = content.includes('spring-boot');\r\n configFile = 'pom.xml';\r\n } catch {}\r\n }\r\n \r\n if (!isSpringBoot && hasGradle) {\r\n try {\r\n const gradleFile = existsSync(gradleKtsPath) ? gradleKtsPath : gradlePath;\r\n const content = readFileSync(gradleFile, 'utf-8');\r\n isSpringBoot = content.includes('spring-boot') || content.includes('org.springframework.boot');\r\n configFile = existsSync(gradleKtsPath) ? 'build.gradle.kts' : 'build.gradle';\r\n } catch {}\r\n }\r\n \r\n if (isSpringBoot) {\r\n return {\r\n type: 'springboot',\r\n displayName: 'Spring Boot',\r\n framework: 'springboot',\r\n recommendedSkills: ['springboot', 'clean-code', 'api-design'],\r\n optionalSkills: ['testing', 'git'],\r\n configFile,\r\n };\r\n }\r\n\r\n // Generic Java project\r\n return {\r\n type: 'java',\r\n displayName: 'Java',\r\n recommendedSkills: ['clean-code'],\r\n optionalSkills: ['testing', 'git'],\r\n configFile,\r\n };\r\n}\r\n\r\n/**\r\n * Check for Python project\r\n */\r\nfunction checkPython(dir: string): DetectedProject | null {\r\n const requirementsPath = join(dir, 'requirements.txt');\r\n const pyprojectPath = join(dir, 'pyproject.toml');\r\n const setupPyPath = join(dir, 'setup.py');\r\n \r\n const hasRequirements = existsSync(requirementsPath);\r\n const hasPyproject = existsSync(pyprojectPath);\r\n const hasSetupPy = existsSync(setupPyPath);\r\n \r\n if (!hasRequirements && !hasPyproject && !hasSetupPy) return null;\r\n\r\n let framework: string | undefined;\r\n let displayName = 'Python';\r\n \r\n // Check for frameworks in requirements or pyproject\r\n const filesToCheck = [requirementsPath, pyprojectPath].filter(existsSync);\r\n \r\n for (const file of filesToCheck) {\r\n try {\r\n const content = readFileSync(file, 'utf-8').toLowerCase();\r\n if (content.includes('django')) {\r\n framework = 'django';\r\n displayName = 'Django';\r\n break;\r\n } else if (content.includes('fastapi')) {\r\n framework = 'fastapi';\r\n displayName = 'FastAPI';\r\n break;\r\n } else if (content.includes('flask')) {\r\n framework = 'flask';\r\n displayName = 'Flask';\r\n break;\r\n }\r\n } catch {}\r\n }\r\n \r\n return {\r\n type: 'python',\r\n displayName,\r\n framework,\r\n recommendedSkills: ['python', 'clean-code'],\r\n optionalSkills: framework ? ['api-design', 'testing', 'git'] : ['testing', 'git'],\r\n configFile: hasPyproject ? 'pyproject.toml' : hasRequirements ? 'requirements.txt' : 'setup.py',\r\n };\r\n}\r\n\r\n/**\r\n * Check for Go project\r\n */\r\nfunction checkGo(dir: string): DetectedProject | null {\r\n const goModPath = join(dir, 'go.mod');\r\n if (!existsSync(goModPath)) return null;\r\n\r\n try {\r\n const content = readFileSync(goModPath, 'utf-8');\r\n const moduleMatch = content.match(/^module\\s+(.+)$/m);\r\n \r\n return {\r\n type: 'go',\r\n displayName: 'Go',\r\n name: moduleMatch?.[1]?.trim(),\r\n recommendedSkills: ['clean-code'],\r\n optionalSkills: ['api-design', 'testing', 'git'],\r\n configFile: 'go.mod',\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Check for Rust project\r\n */\r\nfunction checkRust(dir: string): DetectedProject | null {\r\n const cargoPath = join(dir, 'Cargo.toml');\r\n if (!existsSync(cargoPath)) return null;\r\n\r\n try {\r\n const content = readFileSync(cargoPath, 'utf-8');\r\n const nameMatch = content.match(/^name\\s*=\\s*\"(.+)\"/m);\r\n const versionMatch = content.match(/^version\\s*=\\s*\"(.+)\"/m);\r\n \r\n return {\r\n type: 'rust',\r\n displayName: 'Rust',\r\n name: nameMatch?.[1],\r\n version: versionMatch?.[1],\r\n recommendedSkills: ['clean-code'],\r\n optionalSkills: ['testing', 'git'],\r\n configFile: 'Cargo.toml',\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Check for generic project with git\r\n */\r\nfunction checkGeneric(dir: string): DetectedProject | null {\r\n const gitPath = join(dir, '.git');\r\n if (!existsSync(gitPath)) return null;\r\n \r\n return {\r\n type: 'generic',\r\n displayName: 'Project',\r\n recommendedSkills: ['clean-code', 'git'],\r\n optionalSkills: ['testing'],\r\n configFile: '.git',\r\n };\r\n}\r\n\r\n/**\r\n * Read and parse package.json\r\n */\r\nfunction readPackageJson(dir: string): PackageJson | null {\r\n const pkgPath = join(dir, 'package.json');\r\n if (!existsSync(pkgPath)) return null;\r\n\r\n try {\r\n const content = readFileSync(pkgPath, 'utf-8');\r\n return JSON.parse(content);\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Get project type display with icon\r\n */\r\nexport function getProjectIcon(type: string): string {\r\n const icons: Record<string, string> = {\r\n flutter: '🦋',\r\n dart: '🎯',\r\n react: '⚛️',\r\n nextjs: '▲',\r\n vue: '🍃',\r\n nuxt: '🍃',\r\n angular: '🅰️',\r\n node: '🟢',\r\n springboot: '🍃',\r\n java: '☕',\r\n python: '🐍',\r\n go: '🐹',\r\n rust: '🦀',\r\n generic: '📁',\r\n };\r\n return icons[type] || '📁';\r\n}\r\n",
|
|
78
|
+
"/**\r\n * Init Command\r\n * Initialize skills with smart project detection\r\n */\r\n\r\nimport * as p from '@clack/prompts';\r\nimport chalk from 'chalk';\r\nimport { detectProject, getProjectIcon, type DetectedProject } from '../utils/project-detector.js';\r\nimport { parseSource, cloneRepo, cleanupTempDir } from '../utils/git.js';\r\nimport { discoverSkills, getSkillDisplayName } from '../utils/skills.js';\r\nimport { installSkillForAgent, isSkillInstalled } from '../utils/installer.js';\r\nimport { detectInstalledAgents, agents } from '../utils/agents.js';\r\nimport type { Skill, AgentType } from '../types.js';\r\n\r\nexport interface InitOptions {\r\n yes?: boolean;\r\n source?: string;\r\n agent?: string[];\r\n global?: boolean;\r\n}\r\n\r\n/**\r\n * Initialize skills with smart detection\r\n */\r\nexport async function initCommand(options: InitOptions): Promise<void> {\r\n console.log();\r\n p.intro(chalk.bgCyan.black(' agent-skills init '));\r\n\r\n const spinner = p.spinner();\r\n\r\n // Step 1: Detect project type\r\n spinner.start('Detecting project type...');\r\n const project = await detectProject(process.cwd());\r\n \r\n if (project) {\r\n const icon = getProjectIcon(project.type);\r\n spinner.stop(`Detected: ${icon} ${chalk.cyan(project.displayName)}${project.name ? ` (${project.name})` : ''}`);\r\n \r\n console.log();\r\n p.log.step(chalk.bold('Recommended Skills'));\r\n \r\n // Show recommended skills\r\n for (const skillId of project.recommendedSkills) {\r\n p.log.message(` ${chalk.green('✓')} ${skillId}`);\r\n }\r\n \r\n // Show optional skills\r\n if (project.optionalSkills.length > 0) {\r\n p.log.message(chalk.dim(` Optional: ${project.optionalSkills.join(', ')}`));\r\n }\r\n console.log();\r\n\r\n // Ask to install recommended skills\r\n if (!options.yes) {\r\n const installRecommended = await p.confirm({\r\n message: `Install recommended skills for ${project.displayName}?`,\r\n initialValue: true,\r\n });\r\n\r\n if (p.isCancel(installRecommended)) {\r\n p.cancel('Initialization cancelled');\r\n process.exit(0);\r\n }\r\n\r\n if (installRecommended) {\r\n // Ask about optional skills\r\n let skillsToInstall = [...project.recommendedSkills];\r\n \r\n if (project.optionalSkills.length > 0) {\r\n const includeOptional = await p.multiselect({\r\n message: 'Include any optional skills?',\r\n options: project.optionalSkills.map(s => ({\r\n value: s,\r\n label: s,\r\n })),\r\n required: false,\r\n });\r\n\r\n if (!p.isCancel(includeOptional)) {\r\n skillsToInstall = [...skillsToInstall, ...(includeOptional as string[])];\r\n }\r\n }\r\n\r\n // Install the skills\r\n await installSkillsFromSource(skillsToInstall, options);\r\n }\r\n } else {\r\n // Auto-install in yes mode\r\n await installSkillsFromSource(project.recommendedSkills, options);\r\n }\r\n } else {\r\n spinner.stop('No specific project type detected');\r\n \r\n console.log();\r\n p.log.info('Could not detect project type. You can still install skills manually.');\r\n \r\n // Offer general skills\r\n const generalSkills = ['clean-code', 'git', 'testing'];\r\n \r\n if (!options.yes) {\r\n const installGeneral = await p.multiselect({\r\n message: 'Select skills to install',\r\n options: [\r\n { value: 'clean-code', label: 'clean-code', hint: 'Universal clean code principles' },\r\n { value: 'git', label: 'git', hint: 'Git workflows and conventions' },\r\n { value: 'testing', label: 'testing', hint: 'Testing best practices' },\r\n { value: 'api-design', label: 'api-design', hint: 'API design patterns' },\r\n { value: 'skill-writer', label: 'skill-writer', hint: 'Create your own skills' },\r\n ],\r\n required: false,\r\n });\r\n\r\n if (!p.isCancel(installGeneral) && (installGeneral as string[]).length > 0) {\r\n await installSkillsFromSource(installGeneral as string[], options);\r\n }\r\n }\r\n }\r\n\r\n console.log();\r\n p.outro(chalk.green('Done! Your project is ready.'));\r\n}\r\n\r\n/**\r\n * Install skills from the default source\r\n */\r\nasync function installSkillsFromSource(\r\n skillIds: string[], \r\n options: InitOptions\r\n): Promise<void> {\r\n const spinner = p.spinner();\r\n \r\n // Default source - the openskill repo\r\n const source = options.source || 'includeHasan/agents-skill';\r\n \r\n spinner.start('Fetching skills...');\r\n \r\n let tempDir: string | null = null;\r\n \r\n try {\r\n // Clone and discover skills\r\n const parsed = parseSource(source);\r\n tempDir = await cloneRepo(parsed.url);\r\n const allSkills = await discoverSkills(tempDir, parsed.subpath);\r\n \r\n // Filter to requested skills\r\n const skillsToInstall = allSkills.filter(s => \r\n skillIds.some(id => \r\n s.name.toLowerCase().includes(id.toLowerCase()) ||\r\n getSkillDisplayName(s).toLowerCase().includes(id.toLowerCase())\r\n )\r\n );\r\n \r\n if (skillsToInstall.length === 0) {\r\n spinner.stop(chalk.yellow('No matching skills found'));\r\n return;\r\n }\r\n \r\n spinner.stop(`Found ${skillsToInstall.length} skill${skillsToInstall.length !== 1 ? 's' : ''}`);\r\n\r\n // Detect agents\r\n spinner.start('Detecting agents...');\r\n let targetAgents: AgentType[];\r\n \r\n if (options.agent && options.agent.length > 0) {\r\n targetAgents = options.agent as AgentType[];\r\n } else {\r\n const installedAgents = await detectInstalledAgents();\r\n targetAgents = installedAgents.length > 0 ? installedAgents : ['claude-code'] as AgentType[];\r\n }\r\n \r\n spinner.stop(`Installing to ${targetAgents.length} agent${targetAgents.length !== 1 ? 's' : ''}`);\r\n\r\n // Install each skill\r\n spinner.start('Installing skills...');\r\n \r\n const results: { skill: string; success: boolean; error?: string }[] = [];\r\n \r\n for (const skill of skillsToInstall) {\r\n for (const agent of targetAgents) {\r\n try {\r\n const result = await installSkillForAgent(skill, agent, { global: options.global ?? false });\r\n results.push({\r\n skill: getSkillDisplayName(skill),\r\n success: result.success,\r\n error: result.error,\r\n });\r\n } catch (error) {\r\n results.push({\r\n skill: getSkillDisplayName(skill),\r\n success: false,\r\n error: error instanceof Error ? error.message : 'Unknown error',\r\n });\r\n }\r\n }\r\n }\r\n \r\n spinner.stop('Installation complete');\r\n\r\n // Show results\r\n console.log();\r\n const successful = results.filter(r => r.success);\r\n const failed = results.filter(r => !r.success);\r\n \r\n if (successful.length > 0) {\r\n for (const r of successful) {\r\n p.log.success(`${chalk.green('✓')} ${r.skill}`);\r\n }\r\n }\r\n \r\n if (failed.length > 0) {\r\n for (const r of failed) {\r\n p.log.error(`${chalk.red('✗')} ${r.skill}: ${r.error}`);\r\n }\r\n }\r\n } finally {\r\n if (tempDir) {\r\n try {\r\n await cleanupTempDir(tempDir);\r\n } catch {}\r\n }\r\n }\r\n}\r\n\r\nexport default initCommand;\r\n",
|
|
79
|
+
"/**\r\n * TUI Command\r\n * Interactive terminal UI for managing skills\r\n */\r\n\r\nimport * as p from '@clack/prompts';\r\nimport chalk from 'chalk';\r\nimport { detectProject, getProjectIcon } from '../utils/project-detector.js';\r\nimport { parseSource, cloneRepo, cleanupTempDir } from '../utils/git.js';\r\nimport { discoverSkills, getSkillDisplayName } from '../utils/skills.js';\r\nimport { installSkillForAgent, isSkillInstalled, getInstallPath, uninstallSkill } from '../utils/installer.js';\r\nimport { detectInstalledAgents, agents } from '../utils/agents.js';\r\nimport type { Skill, AgentType } from '../types.js';\r\nimport { existsSync, readdirSync, statSync } from 'fs';\r\nimport { join } from 'path';\r\n\r\ninterface TuiOptions {\r\n source?: string;\r\n global?: boolean;\r\n}\r\n\r\ninterface SkillStatus {\r\n id: string;\r\n name: string;\r\n description: string;\r\n installed: boolean;\r\n path?: string;\r\n}\r\n\r\n/**\r\n * Interactive TUI for managing skills\r\n */\r\nexport async function tuiCommand(options: TuiOptions): Promise<void> {\r\n console.log();\r\n console.log(createBox('Agent Skills Manager', 50));\r\n console.log();\r\n\r\n const spinner = p.spinner();\r\n\r\n // Detect project\r\n spinner.start('Analyzing project...');\r\n const project = await detectProject(process.cwd());\r\n const installedAgents = await detectInstalledAgents();\r\n spinner.stop('');\r\n\r\n // Show project info\r\n if (project) {\r\n const icon = getProjectIcon(project.type);\r\n console.log(` ${chalk.dim('Project:')} ${icon} ${chalk.cyan(project.displayName)}${project.name ? ` (${project.name})` : ''}`);\r\n }\r\n console.log(` ${chalk.dim('Agents:')} ${installedAgents.length > 0 ? installedAgents.map(a => agents[a].displayName).join(', ') : chalk.yellow('None detected')}`);\r\n console.log();\r\n\r\n // Main menu loop\r\n let running = true;\r\n \r\n while (running) {\r\n const action = await p.select({\r\n message: 'What would you like to do?',\r\n options: [\r\n { value: 'install', label: '📦 Install Skills', hint: 'Add new skills to your project' },\r\n { value: 'manage', label: '📋 Manage Installed', hint: 'View, update, or remove skills' },\r\n { value: 'detect', label: '🔍 Detect & Recommend', hint: 'Get skill recommendations for your project' },\r\n { value: 'browse', label: '🌐 Browse Repository', hint: 'Explore available skills' },\r\n { value: 'quit', label: '👋 Quit', hint: 'Exit the manager' },\r\n ],\r\n });\r\n\r\n if (p.isCancel(action) || action === 'quit') {\r\n running = false;\r\n break;\r\n }\r\n\r\n switch (action) {\r\n case 'install':\r\n await handleInstall(options, installedAgents);\r\n break;\r\n case 'manage':\r\n await handleManage(options, installedAgents);\r\n break;\r\n case 'detect':\r\n await handleDetect(project);\r\n break;\r\n case 'browse':\r\n await handleBrowse(options);\r\n break;\r\n }\r\n\r\n console.log();\r\n }\r\n\r\n console.log();\r\n p.outro(chalk.dim('Thanks for using Agent Skills! 👋'));\r\n}\r\n\r\n/**\r\n * Handle install action\r\n */\r\nasync function handleInstall(options: TuiOptions, installedAgents: AgentType[]): Promise<void> {\r\n console.log();\r\n \r\n const source = await p.text({\r\n message: 'Enter skill source (GitHub repo or URL)',\r\n placeholder: 'e.g., vercel-labs/agent-skills',\r\n initialValue: 'includeHasan/agents-skill',\r\n });\r\n\r\n if (p.isCancel(source)) return;\r\n\r\n const spinner = p.spinner();\r\n spinner.start('Fetching skills...');\r\n\r\n let tempDir: string | null = null;\r\n\r\n try {\r\n const parsed = parseSource(source as string);\r\n tempDir = await cloneRepo(parsed.url);\r\n const skills = await discoverSkills(tempDir, parsed.subpath);\r\n\r\n if (skills.length === 0) {\r\n spinner.stop(chalk.yellow('No skills found'));\r\n return;\r\n }\r\n\r\n spinner.stop(`Found ${chalk.green(skills.length)} skill${skills.length !== 1 ? 's' : ''}`);\r\n\r\n // Let user select skills\r\n const selectedSkills = await p.multiselect({\r\n message: 'Select skills to install',\r\n options: skills.map(s => ({\r\n value: s,\r\n label: getSkillDisplayName(s),\r\n hint: s.description.slice(0, 50) + (s.description.length > 50 ? '...' : ''),\r\n })),\r\n required: true,\r\n });\r\n\r\n if (p.isCancel(selectedSkills)) return;\r\n\r\n // Select agents\r\n let targetAgents = installedAgents;\r\n if (installedAgents.length > 1) {\r\n const selected = await p.multiselect({\r\n message: 'Install to which agents?',\r\n options: installedAgents.map(a => ({\r\n value: a,\r\n label: agents[a].displayName,\r\n })),\r\n initialValues: installedAgents,\r\n required: true,\r\n });\r\n\r\n if (p.isCancel(selected)) return;\r\n targetAgents = selected as AgentType[];\r\n } else if (installedAgents.length === 0) {\r\n targetAgents = ['claude-code'] as AgentType[];\r\n }\r\n\r\n // Install\r\n spinner.start('Installing skills...');\r\n\r\n let installed = 0;\r\n for (const skill of selectedSkills as Skill[]) {\r\n for (const agent of targetAgents) {\r\n const result = await installSkillForAgent(skill, agent, { global: options.global ?? false });\r\n if (result.success) installed++;\r\n }\r\n }\r\n\r\n spinner.stop(chalk.green(`✓ Installed ${installed} skill${installed !== 1 ? 's' : ''}`));\r\n } catch (error) {\r\n spinner.stop(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));\r\n } finally {\r\n if (tempDir) {\r\n try {\r\n await cleanupTempDir(tempDir);\r\n } catch {}\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Handle manage installed skills\r\n */\r\nasync function handleManage(options: TuiOptions, installedAgents: AgentType[]): Promise<void> {\r\n console.log();\r\n\r\n // Get installed skills for each agent\r\n const installedSkills: Map<string, { agent: AgentType; path: string }[]> = new Map();\r\n\r\n for (const agent of installedAgents) {\r\n const skillsDir = options.global ? agents[agent].globalSkillsDir : agents[agent].skillsDir;\r\n const fullPath = options.global \r\n ? join(process.env.HOME || process.env.USERPROFILE || '', skillsDir)\r\n : join(process.cwd(), skillsDir);\r\n\r\n if (existsSync(fullPath)) {\r\n try {\r\n const items = readdirSync(fullPath);\r\n for (const item of items) {\r\n const itemPath = join(fullPath, item);\r\n if (statSync(itemPath).isDirectory()) {\r\n if (!installedSkills.has(item)) {\r\n installedSkills.set(item, []);\r\n }\r\n installedSkills.get(item)!.push({ agent, path: itemPath });\r\n }\r\n }\r\n } catch {}\r\n }\r\n }\r\n\r\n if (installedSkills.size === 0) {\r\n p.log.info('No skills installed yet.');\r\n return;\r\n }\r\n\r\n // Show installed skills\r\n console.log(chalk.bold('Installed Skills:'));\r\n console.log();\r\n\r\n const skillList = Array.from(installedSkills.entries()).map(([name, locations]) => ({\r\n name,\r\n agents: locations.map(l => l.agent),\r\n paths: locations.map(l => l.path),\r\n }));\r\n\r\n for (const skill of skillList) {\r\n console.log(` ${chalk.green('✓')} ${chalk.cyan(skill.name)}`);\r\n console.log(` ${chalk.dim(skill.agents.map(a => agents[a].displayName).join(', '))}`);\r\n }\r\n\r\n console.log();\r\n\r\n // Actions\r\n const action = await p.select({\r\n message: 'What would you like to do?',\r\n options: [\r\n { value: 'update', label: '↻ Update All', hint: 'Refresh all installed skills' },\r\n { value: 'remove', label: '🗑️ Remove Skills', hint: 'Uninstall selected skills' },\r\n { value: 'back', label: '← Back', hint: 'Return to main menu' },\r\n ],\r\n });\r\n\r\n if (p.isCancel(action) || action === 'back') return;\r\n\r\n if (action === 'remove') {\r\n const toRemove = await p.multiselect({\r\n message: 'Select skills to remove',\r\n options: skillList.map(s => ({\r\n value: s,\r\n label: s.name,\r\n hint: s.agents.map(a => agents[a].displayName).join(', '),\r\n })),\r\n required: true,\r\n });\r\n\r\n if (p.isCancel(toRemove)) return;\r\n\r\n const spinner = p.spinner();\r\n spinner.start('Removing skills...');\r\n\r\n let removed = 0;\r\n for (const skill of toRemove as typeof skillList[0][]) {\r\n for (const path of skill.paths) {\r\n try {\r\n await uninstallSkill(path);\r\n removed++;\r\n } catch {}\r\n }\r\n }\r\n\r\n spinner.stop(chalk.green(`✓ Removed ${removed} skill${removed !== 1 ? 's' : ''}`));\r\n }\r\n}\r\n\r\n/**\r\n * Handle detect and recommend\r\n */\r\nasync function handleDetect(project: ReturnType<typeof detectProject> extends Promise<infer T> ? T : never): Promise<void> {\r\n console.log();\r\n\r\n if (!project) {\r\n p.log.warn('Could not detect project type');\r\n p.log.info('Try running from your project root directory.');\r\n return;\r\n }\r\n\r\n const icon = getProjectIcon(project.type);\r\n \r\n console.log(chalk.bold('Project Analysis'));\r\n console.log();\r\n console.log(` ${chalk.dim('Type:')} ${icon} ${project.displayName}`);\r\n if (project.name) console.log(` ${chalk.dim('Name:')} ${project.name}`);\r\n if (project.version) console.log(` ${chalk.dim('Version:')} ${project.version}`);\r\n if (project.framework) console.log(` ${chalk.dim('Framework:')} ${project.framework}`);\r\n console.log(` ${chalk.dim('Config:')} ${project.configFile}`);\r\n console.log();\r\n\r\n console.log(chalk.bold('Recommended Skills'));\r\n for (const skill of project.recommendedSkills) {\r\n console.log(` ${chalk.green('●')} ${skill}`);\r\n }\r\n console.log();\r\n\r\n if (project.optionalSkills.length > 0) {\r\n console.log(chalk.bold('Optional Skills'));\r\n for (const skill of project.optionalSkills) {\r\n console.log(` ${chalk.dim('○')} ${skill}`);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Handle browse repository\r\n */\r\nasync function handleBrowse(options: TuiOptions): Promise<void> {\r\n console.log();\r\n\r\n const spinner = p.spinner();\r\n spinner.start('Fetching skill catalog...');\r\n\r\n let tempDir: string | null = null;\r\n\r\n try {\r\n const source = 'includeHasan/agents-skill';\r\n const parsed = parseSource(source);\r\n tempDir = await cloneRepo(parsed.url);\r\n const skills = await discoverSkills(tempDir, parsed.subpath);\r\n\r\n spinner.stop(`Found ${chalk.green(skills.length)} available skill${skills.length !== 1 ? 's' : ''}`);\r\n console.log();\r\n\r\n // Group by category/tag if possible\r\n console.log(chalk.bold('Available Skills'));\r\n console.log();\r\n\r\n for (const skill of skills) {\r\n console.log(` ${chalk.cyan(getSkillDisplayName(skill))}`);\r\n console.log(` ${chalk.dim(skill.description)}`);\r\n }\r\n } catch (error) {\r\n spinner.stop(chalk.red('Failed to fetch skills'));\r\n } finally {\r\n if (tempDir) {\r\n try {\r\n await cleanupTempDir(tempDir);\r\n } catch {}\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Create a simple ASCII box\r\n */\r\nfunction createBox(title: string, width: number): string {\r\n const padding = Math.floor((width - title.length - 2) / 2);\r\n const top = `┌${'─'.repeat(width - 2)}┐`;\r\n const middle = `│${' '.repeat(padding)}${chalk.bold(title)}${' '.repeat(width - padding - title.length - 2)}│`;\r\n const bottom = `└${'─'.repeat(width - 2)}┘`;\r\n return `${top}\\n${middle}\\n${bottom}`;\r\n}\r\n\r\nexport default tuiCommand;\r\n",
|
|
80
|
+
"/**\r\n * Base Adapter Interface\r\n * \r\n * All IDE adapters must implement this interface to provide\r\n * consistent configuration generation across different AI coding assistants.\r\n */\r\n\r\nimport type { AgentConfig, MCPServer, RuleSet, SyncResult, IDEConfig } from '../types/config.js';\r\nimport type { AgentType } from '../types/index.js';\r\n\r\n/**\r\n * Abstract base class for IDE adapters\r\n */\r\nexport abstract class BaseAdapter {\r\n abstract readonly id: AgentType;\r\n abstract readonly name: string;\r\n abstract readonly displayName: string;\r\n abstract readonly config: IDEConfig;\r\n\r\n /**\r\n * Check if this IDE is installed/configured on the system\r\n */\r\n abstract isInstalled(): Promise<boolean>;\r\n\r\n /**\r\n * Generate agent instructions file content\r\n */\r\n abstract generateAgentFile(config: AgentConfig): Promise<string>;\r\n\r\n /**\r\n * Generate rules configuration\r\n */\r\n abstract generateRulesConfig(rules: RuleSet): Promise<string | Record<string, string>>;\r\n\r\n /**\r\n * Generate MCP configuration\r\n */\r\n abstract generateMCPConfig(servers: MCPServer[]): Promise<string>;\r\n\r\n /**\r\n * Get the path where agent file should be written\r\n */\r\n abstract getAgentFilePath(projectPath: string, global?: boolean): string;\r\n\r\n /**\r\n * Get the path where rules should be written\r\n */\r\n abstract getRulesPath(projectPath: string, global?: boolean): string;\r\n\r\n /**\r\n * Get the path where MCP config should be written\r\n */\r\n abstract getMCPConfigPath(projectPath: string, global?: boolean): string;\r\n\r\n /**\r\n * Sync all configurations to this IDE\r\n */\r\n async sync(\r\n projectPath: string,\r\n config: AgentConfig,\r\n rules?: RuleSet,\r\n options?: { global?: boolean }\r\n ): Promise<SyncResult> {\r\n const result: SyncResult = {\r\n ide: this.id,\r\n success: true,\r\n filesCreated: [],\r\n filesUpdated: [],\r\n errors: [],\r\n };\r\n\r\n try {\r\n // Generate and write agent file\r\n const agentContent = await this.generateAgentFile(config);\r\n const agentPath = this.getAgentFilePath(projectPath, options?.global);\r\n await this.writeFile(agentPath, agentContent, result);\r\n\r\n // Generate and write rules if provided\r\n if (rules) {\r\n const rulesContent = await this.generateRulesConfig(rules);\r\n const rulesPath = this.getRulesPath(projectPath, options?.global);\r\n\r\n if (typeof rulesContent === 'string') {\r\n await this.writeFile(rulesPath, rulesContent, result);\r\n } else {\r\n // Multiple files (e.g., Cursor .mdc files)\r\n for (const [filename, content] of Object.entries(rulesContent)) {\r\n await this.writeFile(`${rulesPath}/${filename}`, content, result);\r\n }\r\n }\r\n }\r\n\r\n // Generate and write MCP config if servers are configured\r\n if (config.mcpServers && config.mcpServers.length > 0) {\r\n const mcpContent = await this.generateMCPConfig(config.mcpServers);\r\n const mcpPath = this.getMCPConfigPath(projectPath, options?.global);\r\n if (mcpPath) {\r\n await this.writeFile(mcpPath, mcpContent, result);\r\n }\r\n }\r\n } catch (error) {\r\n result.success = false;\r\n result.errors.push(error instanceof Error ? error.message : 'Unknown error');\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Helper to write file and track result\r\n */\r\n protected async writeFile(\r\n path: string,\r\n content: string,\r\n result: SyncResult\r\n ): Promise<void> {\r\n const { mkdir, writeFile, access } = await import('fs/promises');\r\n const { dirname } = await import('path');\r\n\r\n try {\r\n // Ensure directory exists\r\n await mkdir(dirname(path), { recursive: true });\r\n\r\n // Check if file exists\r\n let exists = false;\r\n try {\r\n await access(path);\r\n exists = true;\r\n } catch {\r\n exists = false;\r\n }\r\n\r\n // Write file\r\n await writeFile(path, content, 'utf-8');\r\n\r\n if (exists) {\r\n result.filesUpdated.push(path);\r\n } else {\r\n result.filesCreated.push(path);\r\n }\r\n } catch (error) {\r\n result.errors.push(`Failed to write ${path}: ${error instanceof Error ? error.message : 'Unknown error'}`);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Adapter registry type\r\n */\r\nexport type AdapterRegistry = Map<AgentType, BaseAdapter>;\r\n",
|
|
81
|
+
"/**\r\n * Default Prompt Templates\r\n * \r\n * Standard intro paragraphs and templates that get included in generated\r\n * agent configurations and rules files. Users can copy-paste and customize.\r\n */\r\n\r\n/**\r\n * Default intro paragraph for AGENTS.md / CLAUDE.md files\r\n */\r\nexport const DEFAULT_AGENT_INTRO = `You are an expert AI coding assistant working on this project. Follow these instructions carefully to provide the best assistance.\r\n\r\n## Your Behavior\r\n\r\n- **Be precise**: Write clean, efficient code following the project's conventions\r\n- **Be proactive**: Suggest improvements and catch potential issues early\r\n- **Be thorough**: Consider edge cases, error handling, and testing\r\n- **Be concise**: Explain only what's necessary, focus on the code\r\n- **Ask clarifying questions** when requirements are ambiguous\r\n\r\n## When Writing Code\r\n\r\n1. Follow the existing code style and patterns\r\n2. Add appropriate error handling\r\n3. Include helpful comments for complex logic\r\n4. Consider performance implications\r\n5. Write testable code\r\n\r\n## When Reviewing Code\r\n\r\n1. Check for bugs and edge cases\r\n2. Suggest performance improvements\r\n3. Ensure proper error handling\r\n4. Verify code follows project conventions\r\n`;\r\n\r\n/**\r\n * Default rules that should be included in every project\r\n */\r\nexport const DEFAULT_RULES = [\r\n 'Follow the existing code style and formatting conventions',\r\n 'Write clear, self-documenting code with meaningful names',\r\n 'Add error handling for all external calls and user inputs',\r\n 'Keep functions small and focused on a single responsibility',\r\n 'Write tests for new functionality when applicable',\r\n];\r\n\r\n/**\r\n * Technology-specific prompts\r\n */\r\nexport const TECH_PROMPTS: Record<string, string> = {\r\n typescript: `\r\n## TypeScript Guidelines\r\n\r\n- Use strict TypeScript with proper type annotations\r\n- Prefer interfaces over type aliases for object shapes\r\n- Use \\`unknown\\` instead of \\`any\\` when type is uncertain\r\n- Leverage utility types (Partial, Required, Pick, Omit)\r\n- Enable strict null checks and handle nullability properly\r\n`,\r\n\r\n react: `\r\n## React Guidelines\r\n\r\n- Use functional components with hooks\r\n- Keep components small and focused\r\n- Use proper TypeScript types for props\r\n- Implement proper error boundaries\r\n- Memoize expensive computations with useMemo/useCallback\r\n`,\r\n\r\n node: `\r\n## Node.js Guidelines\r\n\r\n- Use async/await for asynchronous operations\r\n- Implement proper error handling middleware\r\n- Use environment variables for configuration\r\n- Follow REST API best practices\r\n- Add request validation and sanitization\r\n`,\r\n\r\n flutter: `\r\n## Flutter Guidelines\r\n\r\n- Follow Flutter's widget composition patterns\r\n- Use const constructors where possible\r\n- Implement proper state management\r\n- Handle platform-specific code appropriately\r\n- Follow Dart naming conventions\r\n`,\r\n\r\n python: `\r\n## Python Guidelines\r\n\r\n- Follow PEP 8 style guidelines\r\n- Use type hints for function signatures\r\n- Write docstrings for public functions\r\n- Use virtual environments for dependencies\r\n- Handle exceptions appropriately\r\n`,\r\n};\r\n\r\n/**\r\n * Get combined prompt for a tech stack\r\n */\r\nexport function getPromptForTechStack(techStack: string[]): string {\r\n const prompts: string[] = [];\r\n\r\n for (const tech of techStack) {\r\n const normalizedTech = tech.toLowerCase();\r\n if (TECH_PROMPTS[normalizedTech]) {\r\n prompts.push(TECH_PROMPTS[normalizedTech]);\r\n }\r\n }\r\n\r\n return prompts.join('\\n');\r\n}\r\n\r\n/**\r\n * MCP instruction template\r\n */\r\nexport const MCP_INTRO = `\r\n## Available Tools (MCP)\r\n\r\nYou have access to the following tools through the Model Context Protocol.\r\nUse them when appropriate to assist with tasks:\r\n`;\r\n\r\n/**\r\n * Generate a complete agent intro with optional customizations\r\n */\r\nexport function generateAgentIntro(options?: {\r\n projectName?: string;\r\n description?: string;\r\n techStack?: string[];\r\n includeMCP?: boolean;\r\n}): string {\r\n const sections: string[] = [];\r\n\r\n // Project header\r\n if (options?.projectName) {\r\n sections.push(`# ${options.projectName}\\n`);\r\n } else {\r\n sections.push('# Project Instructions\\n');\r\n }\r\n\r\n // Description\r\n if (options?.description) {\r\n sections.push(`${options.description}\\n`);\r\n }\r\n\r\n // Default intro\r\n sections.push(DEFAULT_AGENT_INTRO);\r\n\r\n // Tech-specific prompts\r\n if (options?.techStack && options.techStack.length > 0) {\r\n const techPrompts = getPromptForTechStack(options.techStack);\r\n if (techPrompts) {\r\n sections.push(techPrompts);\r\n }\r\n }\r\n\r\n // MCP section\r\n if (options?.includeMCP) {\r\n sections.push(MCP_INTRO);\r\n }\r\n\r\n return sections.join('\\n');\r\n}\r\n",
|
|
82
|
+
"/**\r\n * Claude Code Adapter\r\n * \r\n * Generates configuration for Claude Code (Anthropic's AI coding assistant)\r\n * - CLAUDE.md for agent instructions\r\n * - .claude/settings.json for rules\r\n * - .claude/mcp.json for MCP servers\r\n */\r\n\r\nimport { BaseAdapter } from './base.js';\r\nimport type { AgentConfig, MCPServer, RuleSet, IDEConfig } from '../types/config.js';\r\nimport type { AgentType } from '../types/index.js';\r\nimport { homedir } from 'os';\r\nimport { join } from 'path';\r\nimport { existsSync } from 'fs';\r\n\r\nexport class ClaudeCodeAdapter extends BaseAdapter {\r\n readonly id: AgentType = 'claude-code';\r\n readonly name = 'claude-code';\r\n readonly displayName = 'Claude Code';\r\n\r\n readonly config: IDEConfig = {\r\n id: 'claude-code',\r\n name: 'claude-code',\r\n displayName: 'Claude Code',\r\n agentFile: 'CLAUDE.md',\r\n agentFileGlobal: join(homedir(), '.claude', 'CLAUDE.md'),\r\n rulesPath: '.claude/settings.json',\r\n rulesFormat: 'json',\r\n skillsDir: '.claude/skills',\r\n globalSkillsDir: join(homedir(), '.claude', 'skills'),\r\n mcpConfig: '.claude/mcp.json',\r\n mcpConfigGlobal: join(homedir(), '.claude', 'mcp.json'),\r\n mcpFormat: 'json',\r\n };\r\n\r\n async isInstalled(): Promise<boolean> {\r\n return existsSync(join(homedir(), '.claude'));\r\n }\r\n\r\n async generateAgentFile(config: AgentConfig): Promise<string> {\r\n // Import prompts dynamically to avoid circular dependencies\r\n const { DEFAULT_AGENT_INTRO, getPromptForTechStack, MCP_INTRO } = await import('../data/prompts.js');\r\n\r\n const sections: string[] = [];\r\n\r\n // Header\r\n sections.push(`# ${config.projectName || 'Project'} - Claude Instructions\\n`);\r\n\r\n // Description\r\n if (config.description) {\r\n sections.push(`${config.description}\\n`);\r\n }\r\n\r\n // Default behavior intro (the copy-paste template)\r\n sections.push(DEFAULT_AGENT_INTRO);\r\n\r\n // Tech Stack\r\n if (config.techStack.length > 0 || config.frameworks.length > 0) {\r\n sections.push('## Tech Stack\\n');\r\n if (config.languages.length > 0) {\r\n sections.push(`**Languages:** ${config.languages.join(', ')}`);\r\n }\r\n if (config.frameworks.length > 0) {\r\n sections.push(`**Frameworks:** ${config.frameworks.join(', ')}`);\r\n }\r\n if (config.techStack.length > 0) {\r\n sections.push(`**Technologies:** ${config.techStack.join(', ')}`);\r\n }\r\n sections.push('');\r\n }\r\n\r\n // Tech-specific guidelines\r\n const allTech = [...config.languages, ...config.frameworks, ...config.techStack];\r\n const techPrompts = getPromptForTechStack(allTech);\r\n if (techPrompts) {\r\n sections.push(techPrompts);\r\n }\r\n\r\n // Build & Run Commands\r\n if (config.buildCommands.length > 0 || config.devCommands.length > 0 || config.testCommands.length > 0) {\r\n sections.push('## Build and Run\\n');\r\n\r\n if (config.devCommands.length > 0) {\r\n sections.push('### Development');\r\n sections.push('```bash');\r\n config.devCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```\\n');\r\n }\r\n\r\n if (config.buildCommands.length > 0) {\r\n sections.push('### Build');\r\n sections.push('```bash');\r\n config.buildCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```\\n');\r\n }\r\n\r\n if (config.testCommands.length > 0) {\r\n sections.push('### Test');\r\n sections.push('```bash');\r\n config.testCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```\\n');\r\n }\r\n }\r\n\r\n // Architecture Notes\r\n if (config.architectureNotes.length > 0) {\r\n sections.push('## Architecture\\n');\r\n config.architectureNotes.forEach(note => sections.push(`- ${note}`));\r\n sections.push('');\r\n }\r\n\r\n // Coding Guidelines\r\n if (config.codingGuidelines.length > 0) {\r\n sections.push('## Coding Guidelines\\n');\r\n config.codingGuidelines.forEach(guideline => sections.push(`- ${guideline}`));\r\n sections.push('');\r\n }\r\n\r\n // MCP Servers\r\n if (config.mcpServers && config.mcpServers.length > 0) {\r\n sections.push(MCP_INTRO);\r\n config.mcpServers.forEach(server => {\r\n sections.push(`- **${server.displayName || server.name}**${server.description ? `: ${server.description}` : ''}`);\r\n });\r\n sections.push('');\r\n }\r\n\r\n return sections.join('\\n');\r\n }\r\n\r\n async generateRulesConfig(rules: RuleSet): Promise<string> {\r\n // Claude Code uses settings.json for some configurations\r\n // But main rules go in CLAUDE.md - this is for additional settings\r\n const settings: Record<string, unknown> = {\r\n rules: {\r\n global: rules.global.map(r => r.content),\r\n },\r\n };\r\n\r\n if (rules.pathSpecific.length > 0) {\r\n settings.rules = {\r\n ...settings.rules as object,\r\n pathSpecific: rules.pathSpecific.map(pr => ({\r\n pattern: pr.pattern,\r\n rules: pr.rules.map(r => r.content),\r\n })),\r\n };\r\n }\r\n\r\n return JSON.stringify(settings, null, 2);\r\n }\r\n\r\n async generateMCPConfig(servers: MCPServer[]): Promise<string> {\r\n const mcpConfig: Record<string, unknown> = {\r\n mcpServers: {},\r\n };\r\n\r\n for (const server of servers) {\r\n if (server.type === 'http') {\r\n // HTTP/SSE server\r\n (mcpConfig.mcpServers as Record<string, unknown>)[server.name] = {\r\n type: 'sse',\r\n url: server.url,\r\n ...(server.headers && Object.keys(server.headers).length > 0 ? { headers: server.headers } : {}),\r\n };\r\n } else {\r\n // Command (stdio) server - default\r\n (mcpConfig.mcpServers as Record<string, unknown>)[server.name] = {\r\n command: server.command,\r\n args: server.args || [],\r\n ...(server.env && Object.keys(server.env).length > 0 ? { env: server.env } : {}),\r\n };\r\n }\r\n }\r\n\r\n return JSON.stringify(mcpConfig, null, 2);\r\n }\r\n\r\n getAgentFilePath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return this.config.agentFileGlobal!;\r\n }\r\n return join(projectPath, this.config.agentFile);\r\n }\r\n\r\n getRulesPath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return join(homedir(), '.claude', 'settings.json');\r\n }\r\n return join(projectPath, this.config.rulesPath);\r\n }\r\n\r\n getMCPConfigPath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return this.config.mcpConfigGlobal!;\r\n }\r\n return join(projectPath, this.config.mcpConfig!);\r\n }\r\n}\r\n",
|
|
83
|
+
"/**\r\n * OpenCode Adapter\r\n * \r\n * Generates configuration for OpenCode AI coding assistant\r\n * - AGENTS.md for agent instructions\r\n * - .opencode.json for configuration\r\n * - .opencode/mcp.json for MCP servers\r\n */\r\n\r\nimport { BaseAdapter } from './base.js';\r\nimport type { AgentConfig, MCPServer, RuleSet, IDEConfig } from '../types/config.js';\r\nimport type { AgentType } from '../types/index.js';\r\nimport { homedir } from 'os';\r\nimport { join } from 'path';\r\nimport { existsSync } from 'fs';\r\n\r\nexport class OpenCodeAdapter extends BaseAdapter {\r\n readonly id: AgentType = 'opencode';\r\n readonly name = 'opencode';\r\n readonly displayName = 'OpenCode';\r\n\r\n readonly config: IDEConfig = {\r\n id: 'opencode',\r\n name: 'opencode',\r\n displayName: 'OpenCode',\r\n agentFile: 'AGENTS.md',\r\n agentFileGlobal: join(homedir(), '.config', 'opencode', 'AGENTS.md'),\r\n rulesPath: '.opencode.json',\r\n rulesFormat: 'json',\r\n skillsDir: '.opencode/skill',\r\n globalSkillsDir: join(homedir(), '.config', 'opencode', 'skill'),\r\n mcpConfig: '.opencode/mcp.json',\r\n mcpConfigGlobal: join(homedir(), '.config', 'opencode', 'mcp.json'),\r\n mcpFormat: 'json',\r\n };\r\n\r\n async isInstalled(): Promise<boolean> {\r\n return existsSync(join(homedir(), '.config', 'opencode'));\r\n }\r\n\r\n async generateAgentFile(config: AgentConfig): Promise<string> {\r\n // Import prompts dynamically to avoid circular dependencies\r\n const { DEFAULT_AGENT_INTRO, getPromptForTechStack } = await import('../data/prompts.js');\r\n\r\n const sections: string[] = [];\r\n\r\n // Header with AGENTS.md standard format\r\n sections.push(`# AGENTS.md - ${config.projectName || 'Project'}\\n`);\r\n sections.push('> Universal AI Agent Instructions\\n');\r\n\r\n // Description\r\n if (config.description) {\r\n sections.push('## Overview\\n');\r\n sections.push(`${config.description}\\n`);\r\n }\r\n\r\n // Default behavior intro (the copy-paste template)\r\n sections.push(DEFAULT_AGENT_INTRO);\r\n\r\n // Tech Stack\r\n if (config.techStack.length > 0 || config.frameworks.length > 0 || config.languages.length > 0) {\r\n sections.push('## Technology Stack\\n');\r\n\r\n if (config.languages.length > 0) {\r\n sections.push('### Languages');\r\n config.languages.forEach(lang => sections.push(`- ${lang}`));\r\n sections.push('');\r\n }\r\n\r\n if (config.frameworks.length > 0) {\r\n sections.push('### Frameworks');\r\n config.frameworks.forEach(fw => sections.push(`- ${fw}`));\r\n sections.push('');\r\n }\r\n\r\n if (config.techStack.length > 0) {\r\n sections.push('### Technologies');\r\n config.techStack.forEach(tech => sections.push(`- ${tech}`));\r\n sections.push('');\r\n }\r\n }\r\n\r\n // Tech-specific guidelines\r\n const allTech = [...config.languages, ...config.frameworks, ...config.techStack];\r\n const techPrompts = getPromptForTechStack(allTech);\r\n if (techPrompts) {\r\n sections.push(techPrompts);\r\n }\r\n\r\n // Commands\r\n if (config.buildCommands.length > 0 || config.devCommands.length > 0 || config.testCommands.length > 0) {\r\n sections.push('## Commands\\n');\r\n\r\n if (config.devCommands.length > 0) {\r\n sections.push('### Development\\n```bash');\r\n config.devCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```\\n');\r\n }\r\n\r\n if (config.buildCommands.length > 0) {\r\n sections.push('### Build\\n```bash');\r\n config.buildCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```\\n');\r\n }\r\n\r\n if (config.testCommands.length > 0) {\r\n sections.push('### Test\\n```bash');\r\n config.testCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```\\n');\r\n }\r\n }\r\n\r\n // Architecture\r\n if (config.architectureNotes.length > 0) {\r\n sections.push('## Architecture\\n');\r\n config.architectureNotes.forEach(note => sections.push(`- ${note}`));\r\n sections.push('');\r\n }\r\n\r\n // Guidelines\r\n if (config.codingGuidelines.length > 0) {\r\n sections.push('## Coding Guidelines\\n');\r\n config.codingGuidelines.forEach(guideline => sections.push(`- ${guideline}`));\r\n sections.push('');\r\n }\r\n\r\n return sections.join('\\n');\r\n }\r\n\r\n async generateRulesConfig(rules: RuleSet): Promise<string> {\r\n // OpenCode uses .opencode.json for configuration\r\n const config: Record<string, unknown> = {\r\n rules: {\r\n enabled: true,\r\n global: rules.global.map(r => r.content),\r\n },\r\n };\r\n\r\n if (rules.pathSpecific.length > 0) {\r\n (config.rules as Record<string, unknown>).patterns = rules.pathSpecific.reduce((acc, pr) => {\r\n acc[pr.pattern] = pr.rules.map(r => r.content);\r\n return acc;\r\n }, {} as Record<string, string[]>);\r\n }\r\n\r\n return JSON.stringify(config, null, 2);\r\n }\r\n\r\n async generateMCPConfig(servers: MCPServer[]): Promise<string> {\r\n const mcpConfig: Record<string, unknown> = {\r\n mcpServers: {},\r\n };\r\n\r\n for (const server of servers) {\r\n if (server.type === 'http') {\r\n (mcpConfig.mcpServers as Record<string, unknown>)[server.name] = {\r\n type: 'http',\r\n url: server.url,\r\n ...(server.headers && Object.keys(server.headers).length > 0 ? { headers: server.headers } : {}),\r\n };\r\n } else {\r\n (mcpConfig.mcpServers as Record<string, unknown>)[server.name] = {\r\n command: server.command,\r\n args: server.args || [],\r\n ...(server.env && Object.keys(server.env).length > 0 ? { env: server.env } : {}),\r\n };\r\n }\r\n }\r\n\r\n return JSON.stringify(mcpConfig, null, 2);\r\n }\r\n\r\n getAgentFilePath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return this.config.agentFileGlobal!;\r\n }\r\n return join(projectPath, this.config.agentFile);\r\n }\r\n\r\n getRulesPath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return join(homedir(), '.config', 'opencode', 'opencode.json');\r\n }\r\n return join(projectPath, this.config.rulesPath);\r\n }\r\n\r\n getMCPConfigPath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return this.config.mcpConfigGlobal!;\r\n }\r\n return join(projectPath, this.config.mcpConfig!);\r\n }\r\n}\r\n",
|
|
84
|
+
"/**\r\n * Cursor Adapter\r\n * \r\n * Generates configuration for Cursor AI IDE\r\n * - AGENTS.md or .cursorrules for agent instructions\r\n * - .cursor/rules/*.mdc for structured rules\r\n * - ~/.cursor/mcp.json for MCP servers\r\n */\r\n\r\nimport { BaseAdapter } from './base.js';\r\nimport type { AgentConfig, MCPServer, RuleSet, IDEConfig } from '../types/config.js';\r\nimport type { AgentType } from '../types/index.js';\r\nimport { homedir } from 'os';\r\nimport { join } from 'path';\r\nimport { existsSync } from 'fs';\r\n\r\nexport class CursorAdapter extends BaseAdapter {\r\n readonly id: AgentType = 'cursor';\r\n readonly name = 'cursor';\r\n readonly displayName = 'Cursor';\r\n\r\n readonly config: IDEConfig = {\r\n id: 'cursor',\r\n name: 'cursor',\r\n displayName: 'Cursor',\r\n agentFile: 'AGENTS.md',\r\n agentFileGlobal: join(homedir(), '.cursor', 'AGENTS.md'),\r\n rulesPath: '.cursor/rules',\r\n rulesFormat: 'mdc',\r\n skillsDir: '.cursor/skills',\r\n globalSkillsDir: join(homedir(), '.cursor', 'skills'),\r\n mcpConfig: '.cursor/mcp.json',\r\n mcpConfigGlobal: join(homedir(), '.cursor', 'mcp.json'),\r\n mcpFormat: 'json',\r\n };\r\n\r\n async isInstalled(): Promise<boolean> {\r\n return existsSync(join(homedir(), '.cursor'));\r\n }\r\n\r\n async generateAgentFile(config: AgentConfig): Promise<string> {\r\n // Import prompts dynamically to avoid circular dependencies\r\n const { DEFAULT_AGENT_INTRO, getPromptForTechStack } = await import('../data/prompts.js');\r\n\r\n const sections: string[] = [];\r\n\r\n // Header\r\n sections.push(`# ${config.projectName || 'Project'} - Agent Instructions\\n`);\r\n\r\n // Description\r\n if (config.description) {\r\n sections.push(`${config.description}\\n`);\r\n }\r\n\r\n // Default behavior intro (the copy-paste template)\r\n sections.push(DEFAULT_AGENT_INTRO);\r\n\r\n // Tech Stack\r\n if (config.languages.length > 0 || config.frameworks.length > 0 || config.techStack.length > 0) {\r\n sections.push('## Tech Stack\\n');\r\n const stack = [...config.languages, ...config.frameworks, ...config.techStack];\r\n sections.push(stack.join(', '));\r\n sections.push('');\r\n }\r\n\r\n // Tech-specific guidelines\r\n const allTech = [...config.languages, ...config.frameworks, ...config.techStack];\r\n const techPrompts = getPromptForTechStack(allTech);\r\n if (techPrompts) {\r\n sections.push(techPrompts);\r\n }\r\n\r\n // Commands\r\n if (config.devCommands.length > 0 || config.buildCommands.length > 0 || config.testCommands.length > 0) {\r\n sections.push('## Commands\\n');\r\n\r\n const allCommands = [\r\n ...config.devCommands.map(c => `# Dev: ${c}`),\r\n ...config.buildCommands.map(c => `# Build: ${c}`),\r\n ...config.testCommands.map(c => `# Test: ${c}`),\r\n ];\r\n\r\n sections.push('```bash');\r\n allCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```\\n');\r\n }\r\n\r\n // Architecture\r\n if (config.architectureNotes.length > 0) {\r\n sections.push('## Architecture\\n');\r\n config.architectureNotes.forEach(note => sections.push(`- ${note}`));\r\n sections.push('');\r\n }\r\n\r\n // Guidelines\r\n if (config.codingGuidelines.length > 0) {\r\n sections.push('## Guidelines\\n');\r\n config.codingGuidelines.forEach(guideline => sections.push(`- ${guideline}`));\r\n sections.push('');\r\n }\r\n\r\n return sections.join('\\n');\r\n }\r\n\r\n async generateRulesConfig(rules: RuleSet): Promise<Record<string, string>> {\r\n // Cursor uses .mdc files in .cursor/rules/ directory\r\n const files: Record<string, string> = {};\r\n\r\n // Generate global rules file\r\n if (rules.global.length > 0) {\r\n const globalContent = this.generateMDCFile('Global Rules', rules.global.map(r => r.content));\r\n files['global.mdc'] = globalContent;\r\n }\r\n\r\n // Generate path-specific rules files\r\n for (const pathRule of rules.pathSpecific) {\r\n const safeName = pathRule.pattern.replace(/[^a-zA-Z0-9]/g, '-').replace(/-+/g, '-');\r\n const content = this.generateMDCFile(\r\n `Rules for ${pathRule.pattern}`,\r\n pathRule.rules.map(r => r.content),\r\n pathRule.pattern\r\n );\r\n files[`${safeName}.mdc`] = content;\r\n }\r\n\r\n return files;\r\n }\r\n\r\n private generateMDCFile(description: string, rules: string[], glob?: string): string {\r\n const lines: string[] = [];\r\n\r\n // Frontmatter\r\n lines.push('---');\r\n lines.push(`description: ${description}`);\r\n if (glob) {\r\n lines.push(`globs: ${glob}`);\r\n }\r\n lines.push('---');\r\n lines.push('');\r\n\r\n // Rules content\r\n rules.forEach(rule => {\r\n lines.push(`- ${rule}`);\r\n });\r\n\r\n return lines.join('\\n');\r\n }\r\n\r\n async generateMCPConfig(servers: MCPServer[]): Promise<string> {\r\n const mcpConfig: Record<string, unknown> = {\r\n mcpServers: {},\r\n };\r\n\r\n for (const server of servers) {\r\n if (server.type === 'http') {\r\n (mcpConfig.mcpServers as Record<string, unknown>)[server.name] = {\r\n type: 'sse',\r\n url: server.url,\r\n ...(server.headers && Object.keys(server.headers).length > 0 ? { headers: server.headers } : {}),\r\n };\r\n } else {\r\n (mcpConfig.mcpServers as Record<string, unknown>)[server.name] = {\r\n command: server.command,\r\n args: server.args || [],\r\n ...(server.env && Object.keys(server.env).length > 0 ? { env: server.env } : {}),\r\n };\r\n }\r\n }\r\n\r\n return JSON.stringify(mcpConfig, null, 2);\r\n }\r\n\r\n getAgentFilePath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return this.config.agentFileGlobal!;\r\n }\r\n return join(projectPath, this.config.agentFile);\r\n }\r\n\r\n getRulesPath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return join(homedir(), '.cursor', 'rules');\r\n }\r\n return join(projectPath, this.config.rulesPath);\r\n }\r\n\r\n getMCPConfigPath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return this.config.mcpConfigGlobal!;\r\n }\r\n return join(projectPath, this.config.mcpConfig!);\r\n }\r\n\r\n /**\r\n * Also generate legacy .cursorrules file for backward compatibility\r\n */\r\n async generateLegacyCursorRules(config: AgentConfig): Promise<string> {\r\n const lines: string[] = [];\r\n\r\n lines.push(`# Cursor Rules for ${config.projectName || 'Project'}`);\r\n lines.push('');\r\n\r\n if (config.codingGuidelines.length > 0) {\r\n config.codingGuidelines.forEach(g => lines.push(g));\r\n }\r\n\r\n return lines.join('\\n');\r\n }\r\n}\r\n",
|
|
85
|
+
"/**\r\n * GitHub Copilot Adapter\r\n * \r\n * Generates configuration for GitHub Copilot\r\n * - .github/copilot-instructions.md for repository-wide instructions\r\n * - .github/instructions/*.md for path-specific instructions\r\n */\r\n\r\nimport { BaseAdapter } from './base.js';\r\nimport type { AgentConfig, MCPServer, RuleSet, IDEConfig } from '../types/config.js';\r\nimport type { AgentType } from '../types/index.js';\r\nimport { homedir } from 'os';\r\nimport { join } from 'path';\r\nimport { existsSync } from 'fs';\r\n\r\nexport class CopilotAdapter extends BaseAdapter {\r\n readonly id: AgentType = 'github-copilot';\r\n readonly name = 'github-copilot';\r\n readonly displayName = 'GitHub Copilot';\r\n\r\n readonly config: IDEConfig = {\r\n id: 'github-copilot',\r\n name: 'github-copilot',\r\n displayName: 'GitHub Copilot',\r\n agentFile: '.github/copilot-instructions.md',\r\n agentFileGlobal: join(homedir(), '.copilot', 'instructions.md'),\r\n rulesPath: '.github/instructions',\r\n rulesFormat: 'markdown',\r\n skillsDir: '.github/skills',\r\n globalSkillsDir: join(homedir(), '.copilot', 'skills'),\r\n // Note: Copilot doesn't have MCP support yet\r\n mcpConfig: undefined,\r\n mcpConfigGlobal: undefined,\r\n };\r\n\r\n async isInstalled(): Promise<boolean> {\r\n // Check for GitHub CLI or Copilot extension markers\r\n return existsSync(join(homedir(), '.copilot')) ||\r\n existsSync(join(process.cwd(), '.github'));\r\n }\r\n\r\n async generateAgentFile(config: AgentConfig): Promise<string> {\r\n // Import prompts dynamically to avoid circular dependencies\r\n const { DEFAULT_AGENT_INTRO, getPromptForTechStack } = await import('../data/prompts.js');\r\n\r\n const sections: string[] = [];\r\n\r\n // Header comment explaining this file\r\n sections.push('# GitHub Copilot Instructions');\r\n sections.push('');\r\n sections.push('> These instructions guide GitHub Copilot in this repository.');\r\n sections.push('');\r\n\r\n // Project Overview\r\n if (config.projectName || config.description) {\r\n sections.push('## Project Overview');\r\n sections.push('');\r\n if (config.projectName) {\r\n sections.push(`**Project:** ${config.projectName}`);\r\n }\r\n if (config.description) {\r\n sections.push('');\r\n sections.push(config.description);\r\n }\r\n sections.push('');\r\n }\r\n\r\n // Default behavior intro (the copy-paste template)\r\n sections.push(DEFAULT_AGENT_INTRO);\r\n\r\n // Tech Stack\r\n if (config.languages.length > 0 || config.frameworks.length > 0) {\r\n sections.push('## Technology Stack');\r\n sections.push('');\r\n if (config.languages.length > 0) {\r\n sections.push(`- **Languages:** ${config.languages.join(', ')}`);\r\n }\r\n if (config.frameworks.length > 0) {\r\n sections.push(`- **Frameworks:** ${config.frameworks.join(', ')}`);\r\n }\r\n if (config.techStack.length > 0) {\r\n sections.push(`- **Other:** ${config.techStack.join(', ')}`);\r\n }\r\n sections.push('');\r\n }\r\n\r\n // Tech-specific guidelines\r\n const allTech = [...config.languages, ...config.frameworks, ...config.techStack];\r\n const techPrompts = getPromptForTechStack(allTech);\r\n if (techPrompts) {\r\n sections.push(techPrompts);\r\n }\r\n\r\n // Coding Standards\r\n if (config.codingGuidelines.length > 0) {\r\n sections.push('## Coding Standards');\r\n sections.push('');\r\n config.codingGuidelines.forEach(guideline => {\r\n sections.push(`- ${guideline}`);\r\n });\r\n sections.push('');\r\n }\r\n\r\n // Architecture Notes\r\n if (config.architectureNotes.length > 0) {\r\n sections.push('## Architecture');\r\n sections.push('');\r\n config.architectureNotes.forEach(note => {\r\n sections.push(`- ${note}`);\r\n });\r\n sections.push('');\r\n }\r\n\r\n // Development Commands\r\n if (config.devCommands.length > 0 || config.buildCommands.length > 0 || config.testCommands.length > 0) {\r\n sections.push('## Development Workflow');\r\n sections.push('');\r\n\r\n if (config.devCommands.length > 0) {\r\n sections.push('### Running Locally');\r\n sections.push('```bash');\r\n config.devCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```');\r\n sections.push('');\r\n }\r\n\r\n if (config.buildCommands.length > 0) {\r\n sections.push('### Building');\r\n sections.push('```bash');\r\n config.buildCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```');\r\n sections.push('');\r\n }\r\n\r\n if (config.testCommands.length > 0) {\r\n sections.push('### Testing');\r\n sections.push('```bash');\r\n config.testCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```');\r\n sections.push('');\r\n }\r\n }\r\n\r\n return sections.join('\\n');\r\n }\r\n\r\n async generateRulesConfig(rules: RuleSet): Promise<Record<string, string>> {\r\n // Copilot uses .github/instructions/*.md files with YAML frontmatter\r\n const files: Record<string, string> = {};\r\n\r\n // Generate global rules as main instructions\r\n if (rules.global.length > 0) {\r\n const content = this.generateInstructionFile(\r\n 'Global coding guidelines',\r\n rules.global.map(r => r.content)\r\n );\r\n files['global.instructions.md'] = content;\r\n }\r\n\r\n // Generate path-specific instruction files\r\n for (const pathRule of rules.pathSpecific) {\r\n const safeName = pathRule.pattern.replace(/[^a-zA-Z0-9]/g, '-').replace(/-+/g, '-');\r\n const content = this.generateInstructionFile(\r\n `Instructions for ${pathRule.pattern}`,\r\n pathRule.rules.map(r => r.content),\r\n pathRule.pattern\r\n );\r\n files[`${safeName}.instructions.md`] = content;\r\n }\r\n\r\n return files;\r\n }\r\n\r\n private generateInstructionFile(description: string, rules: string[], applyTo?: string): string {\r\n const lines: string[] = [];\r\n\r\n // YAML frontmatter\r\n lines.push('---');\r\n if (applyTo) {\r\n lines.push(`applyTo: \"${applyTo}\"`);\r\n }\r\n lines.push('---');\r\n lines.push('');\r\n\r\n // Description\r\n lines.push(`# ${description}`);\r\n lines.push('');\r\n\r\n // Rules as bullet points\r\n rules.forEach(rule => {\r\n lines.push(`- ${rule}`);\r\n });\r\n\r\n return lines.join('\\n');\r\n }\r\n\r\n async generateMCPConfig(_servers: MCPServer[]): Promise<string> {\r\n // GitHub Copilot doesn't support MCP yet\r\n return '{}';\r\n }\r\n\r\n getAgentFilePath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return this.config.agentFileGlobal!;\r\n }\r\n return join(projectPath, this.config.agentFile);\r\n }\r\n\r\n getRulesPath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return join(homedir(), '.copilot', 'instructions');\r\n }\r\n return join(projectPath, this.config.rulesPath);\r\n }\r\n\r\n getMCPConfigPath(_projectPath: string, _global?: boolean): string {\r\n // Copilot doesn't support MCP\r\n return '';\r\n }\r\n}\r\n",
|
|
86
|
+
"/**\r\n * Antigravity Adapter\r\n * \r\n * Generates configuration for Antigravity (Google DeepMind's AI coding assistant)\r\n * - Uses brain artifacts directory for agent configs\r\n * - MCP server configuration in .gemini/settings.json\r\n */\r\n\r\nimport { BaseAdapter } from './base.js';\r\nimport type { AgentConfig, MCPServer, RuleSet, IDEConfig } from '../types/config.js';\r\nimport type { AgentType } from '../types/index.js';\r\nimport { homedir } from 'os';\r\nimport { join } from 'path';\r\nimport { existsSync } from 'fs';\r\n\r\nexport class AntigravityAdapter extends BaseAdapter {\r\n readonly id: AgentType = 'antigravity';\r\n readonly name = 'antigravity';\r\n readonly displayName = 'Antigravity';\r\n\r\n readonly config: IDEConfig = {\r\n id: 'antigravity',\r\n name: 'antigravity',\r\n displayName: 'Antigravity',\r\n // Agent/rules file - GEMINI.md for global, AGENTS.md for workspace\r\n agentFile: 'AGENTS.md',\r\n agentFileGlobal: join(homedir(), '.gemini', 'GEMINI.md'),\r\n // Rules path - .agent/rules for workspace\r\n rulesPath: '.agent/rules',\r\n rulesFormat: 'markdown',\r\n // Skills directory\r\n skillsDir: '.agent/skills',\r\n globalSkillsDir: join(homedir(), '.gemini', 'skills'),\r\n // MCP config\r\n mcpConfig: '.gemini/settings.json',\r\n mcpConfigGlobal: join(homedir(), '.gemini', 'settings.json'),\r\n mcpFormat: 'json',\r\n };\r\n\r\n async isInstalled(): Promise<boolean> {\r\n return existsSync(join(homedir(), '.gemini'));\r\n }\r\n\r\n async generateAgentFile(config: AgentConfig): Promise<string> {\r\n // Import prompts dynamically to avoid circular dependencies\r\n const { DEFAULT_AGENT_INTRO, getPromptForTechStack, MCP_INTRO } = await import('../data/prompts.js');\r\n\r\n const sections: string[] = [];\r\n\r\n // Header with Antigravity-specific format\r\n sections.push(`# ${config.projectName || 'Project'} - Antigravity Instructions\\n`);\r\n sections.push('> AI-powered development with Antigravity\\n');\r\n\r\n // Description\r\n if (config.description) {\r\n sections.push('## Overview\\n');\r\n sections.push(`${config.description}\\n`);\r\n }\r\n\r\n // Default behavior intro (the copy-paste template)\r\n sections.push(DEFAULT_AGENT_INTRO);\r\n\r\n // Tech Stack\r\n if (config.techStack.length > 0 || config.frameworks.length > 0 || config.languages.length > 0) {\r\n sections.push('## Technology Stack\\n');\r\n\r\n if (config.languages.length > 0) {\r\n sections.push('### Languages');\r\n config.languages.forEach(lang => sections.push(`- ${lang}`));\r\n sections.push('');\r\n }\r\n\r\n if (config.frameworks.length > 0) {\r\n sections.push('### Frameworks');\r\n config.frameworks.forEach(fw => sections.push(`- ${fw}`));\r\n sections.push('');\r\n }\r\n\r\n if (config.techStack.length > 0) {\r\n sections.push('### Technologies');\r\n config.techStack.forEach(tech => sections.push(`- ${tech}`));\r\n sections.push('');\r\n }\r\n }\r\n\r\n // Tech-specific guidelines\r\n const allTech = [...config.languages, ...config.frameworks, ...config.techStack];\r\n const techPrompts = getPromptForTechStack(allTech);\r\n if (techPrompts) {\r\n sections.push(techPrompts);\r\n }\r\n\r\n // Commands\r\n if (config.buildCommands.length > 0 || config.devCommands.length > 0 || config.testCommands.length > 0) {\r\n sections.push('## Commands\\n');\r\n\r\n if (config.devCommands.length > 0) {\r\n sections.push('### Development\\n```bash');\r\n config.devCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```\\n');\r\n }\r\n\r\n if (config.buildCommands.length > 0) {\r\n sections.push('### Build\\n```bash');\r\n config.buildCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```\\n');\r\n }\r\n\r\n if (config.testCommands.length > 0) {\r\n sections.push('### Test\\n```bash');\r\n config.testCommands.forEach(cmd => sections.push(cmd));\r\n sections.push('```\\n');\r\n }\r\n }\r\n\r\n // Architecture\r\n if (config.architectureNotes.length > 0) {\r\n sections.push('## Architecture\\n');\r\n config.architectureNotes.forEach(note => sections.push(`- ${note}`));\r\n sections.push('');\r\n }\r\n\r\n // Guidelines\r\n if (config.codingGuidelines.length > 0) {\r\n sections.push('## Coding Guidelines\\n');\r\n config.codingGuidelines.forEach(guideline => sections.push(`- ${guideline}`));\r\n sections.push('');\r\n }\r\n\r\n // MCP Servers\r\n if (config.mcpServers && config.mcpServers.length > 0) {\r\n sections.push(MCP_INTRO);\r\n config.mcpServers.forEach(server => {\r\n sections.push(`- **${server.displayName || server.name}**${server.description ? `: ${server.description}` : ''}`);\r\n });\r\n sections.push('');\r\n }\r\n\r\n return sections.join('\\n');\r\n }\r\n\r\n async generateRulesConfig(rules: RuleSet): Promise<Record<string, string>> {\r\n // Antigravity uses markdown files in .gemini/rules/ directory\r\n const files: Record<string, string> = {};\r\n\r\n // Generate global rules file\r\n if (rules.global.length > 0) {\r\n const lines: string[] = [];\r\n lines.push('# Global Rules\\n');\r\n rules.global.forEach(r => lines.push(`- ${r.content}`));\r\n files['global.md'] = lines.join('\\n');\r\n }\r\n\r\n // Generate path-specific rules files\r\n for (const pathRule of rules.pathSpecific) {\r\n const safeName = pathRule.pattern.replace(/[^a-zA-Z0-9]/g, '-').replace(/-+/g, '-');\r\n const lines: string[] = [];\r\n lines.push(`# Rules for ${pathRule.pattern}\\n`);\r\n lines.push(`> Applies to: \\`${pathRule.pattern}\\`\\n`);\r\n pathRule.rules.forEach(r => lines.push(`- ${r.content}`));\r\n files[`${safeName}.md`] = lines.join('\\n');\r\n }\r\n\r\n return files;\r\n }\r\n\r\n async generateMCPConfig(servers: MCPServer[]): Promise<string> {\r\n // Antigravity uses settings.json with mcpServers key\r\n const settings: Record<string, unknown> = {\r\n mcpServers: {},\r\n };\r\n\r\n for (const server of servers) {\r\n if (server.type === 'http') {\r\n (settings.mcpServers as Record<string, unknown>)[server.name] = {\r\n type: 'sse',\r\n url: server.url,\r\n ...(server.headers && Object.keys(server.headers).length > 0 ? { headers: server.headers } : {}),\r\n };\r\n } else {\r\n (settings.mcpServers as Record<string, unknown>)[server.name] = {\r\n command: server.command,\r\n args: server.args || [],\r\n ...(server.env && Object.keys(server.env).length > 0 ? { env: server.env } : {}),\r\n };\r\n }\r\n }\r\n\r\n return JSON.stringify(settings, null, 2);\r\n }\r\n\r\n getAgentFilePath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return this.config.agentFileGlobal!;\r\n }\r\n return join(projectPath, this.config.agentFile);\r\n }\r\n\r\n getRulesPath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n // Global rules are in GEMINI.md\r\n return join(homedir(), '.gemini', 'GEMINI.md');\r\n }\r\n // Workspace rules are in .agent/rules/\r\n return join(projectPath, this.config.rulesPath);\r\n }\r\n\r\n getMCPConfigPath(projectPath: string, global?: boolean): string {\r\n if (global) {\r\n return this.config.mcpConfigGlobal!;\r\n }\r\n return join(projectPath, this.config.mcpConfig!);\r\n }\r\n}\r\n",
|
|
87
|
+
"/**\r\n * Adapter Registry\r\n * \r\n * Exports all available IDE adapters and provides utility functions\r\n * to work with them.\r\n */\r\n\r\nimport { BaseAdapter, type AdapterRegistry } from './base.js';\r\nimport { ClaudeCodeAdapter } from './claude.js';\r\nimport { OpenCodeAdapter } from './opencode.js';\r\nimport { CursorAdapter } from './cursor.js';\r\nimport { CopilotAdapter } from './copilot.js';\r\nimport { AntigravityAdapter } from './antigravity.js';\r\nimport type { AgentType } from '../types/index.js';\r\n\r\n// Export all adapters\r\nexport { BaseAdapter } from './base.js';\r\nexport { ClaudeCodeAdapter } from './claude.js';\r\nexport { OpenCodeAdapter } from './opencode.js';\r\nexport { CursorAdapter } from './cursor.js';\r\nexport { CopilotAdapter } from './copilot.js';\r\nexport { AntigravityAdapter } from './antigravity.js';\r\n\r\n// Create singleton instances\r\nconst claudeAdapter = new ClaudeCodeAdapter();\r\nconst openCodeAdapter = new OpenCodeAdapter();\r\nconst cursorAdapter = new CursorAdapter();\r\nconst copilotAdapter = new CopilotAdapter();\r\nconst antigravityAdapter = new AntigravityAdapter();\r\n\r\n/**\r\n * Registry of all available adapters\r\n */\r\nexport const adapterRegistry: Map<AgentType, BaseAdapter> = new Map([\r\n ['claude-code', claudeAdapter],\r\n ['opencode', openCodeAdapter],\r\n ['cursor', cursorAdapter],\r\n ['github-copilot', copilotAdapter],\r\n ['antigravity', antigravityAdapter],\r\n]);\r\n\r\n/**\r\n * Get adapter by IDE type\r\n */\r\nexport function getAdapter(ide: AgentType): BaseAdapter | undefined {\r\n return adapterRegistry.get(ide);\r\n}\r\n\r\n/**\r\n * Get all available adapters\r\n */\r\nexport function getAllAdapters(): BaseAdapter[] {\r\n return Array.from(adapterRegistry.values());\r\n}\r\n\r\n/**\r\n * Get adapters for installed IDEs\r\n */\r\nexport async function getInstalledAdapters(): Promise<BaseAdapter[]> {\r\n const installed: BaseAdapter[] = [];\r\n\r\n for (const adapter of adapterRegistry.values()) {\r\n if (await adapter.isInstalled()) {\r\n installed.push(adapter);\r\n }\r\n }\r\n\r\n return installed;\r\n}\r\n\r\n/**\r\n * Get adapter IDs for installed IDEs\r\n */\r\nexport async function getInstalledAdapterIds(): Promise<AgentType[]> {\r\n const installed = await getInstalledAdapters();\r\n return installed.map(a => a.id);\r\n}\r\n\r\n/**\r\n * Priority order for syncing (most commonly used first)\r\n */\r\nexport const ADAPTER_PRIORITY: AgentType[] = [\r\n 'claude-code',\r\n 'antigravity',\r\n 'opencode',\r\n 'cursor',\r\n 'github-copilot',\r\n];\r\n",
|
|
88
|
+
"/**\r\n * Agent Command\r\n * \r\n * Manage AGENT.md / agent instructions across IDEs\r\n * \r\n * Commands:\r\n * agent init - Interactive wizard to create agent config\r\n * agent show - Display current agent configuration \r\n * agent sync - Sync agent config to all detected IDEs\r\n */\r\n\r\nimport * as p from '@clack/prompts';\r\nimport chalk from 'chalk';\r\nimport { existsSync } from 'fs';\r\nimport { readFile, writeFile } from 'fs/promises';\r\nimport { join } from 'path';\r\nimport { getInstalledAdapters, getAllAdapters, getAdapter, ADAPTER_PRIORITY } from '../adapters/index.js';\r\nimport type { AgentConfig } from '../types/config.js';\r\nimport type { AgentType } from '../types/index.js';\r\nimport { detectProject } from '../utils/project-detector.js';\r\n\r\nexport interface AgentCommandOptions {\r\n global?: boolean;\r\n ide?: string[];\r\n yes?: boolean;\r\n}\r\n\r\n/**\r\n * Agent init command - Interactive wizard\r\n */\r\nexport async function agentInit(options: AgentCommandOptions): Promise<void> {\r\n console.log();\r\n p.intro(chalk.bgCyan.black(' agent init '));\r\n\r\n const spinner = p.spinner();\r\n const cwd = process.cwd();\r\n\r\n // Detect project type\r\n spinner.start('Detecting project...');\r\n const project = await detectProject(cwd);\r\n spinner.stop(project ? `Detected: ${chalk.cyan(project.displayName)}` : 'No specific project detected');\r\n\r\n // Project name\r\n const projectName = await p.text({\r\n message: 'Project name',\r\n initialValue: project?.name || '',\r\n placeholder: 'my-project',\r\n }) as string;\r\n\r\n if (p.isCancel(projectName)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n // Description\r\n const description = await p.text({\r\n message: 'Project description',\r\n placeholder: 'A brief description of your project',\r\n }) as string;\r\n\r\n if (p.isCancel(description)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n // Languages\r\n const languagesInput = await p.text({\r\n message: 'Languages (comma-separated)',\r\n initialValue: project?.recommendedSkills.length ? '' : 'TypeScript, JavaScript',\r\n placeholder: 'TypeScript, Python, Go',\r\n }) as string;\r\n\r\n if (p.isCancel(languagesInput)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n const languages = languagesInput.split(',').map(l => l.trim()).filter(Boolean);\r\n\r\n // Frameworks\r\n const frameworksInput = await p.text({\r\n message: 'Frameworks (comma-separated)',\r\n placeholder: 'React, Next.js, Express',\r\n }) as string;\r\n\r\n if (p.isCancel(frameworksInput)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n const frameworks = frameworksInput.split(',').map(f => f.trim()).filter(Boolean);\r\n\r\n // Dev command\r\n const devCommand = await p.text({\r\n message: 'Dev command',\r\n placeholder: 'npm run dev',\r\n }) as string;\r\n\r\n if (p.isCancel(devCommand)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n // Build command\r\n const buildCommand = await p.text({\r\n message: 'Build command',\r\n placeholder: 'npm run build',\r\n }) as string;\r\n\r\n if (p.isCancel(buildCommand)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n // Test command\r\n const testCommand = await p.text({\r\n message: 'Test command',\r\n placeholder: 'npm test',\r\n }) as string;\r\n\r\n if (p.isCancel(testCommand)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n // Coding guidelines\r\n const guidelinesInput = await p.text({\r\n message: 'Key coding guidelines (one per line, use \\\\n)',\r\n placeholder: 'Use TypeScript strict mode\\\\nFollow ESLint rules',\r\n }) as string;\r\n\r\n if (p.isCancel(guidelinesInput)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n const guidelines = guidelinesInput.split('\\\\n').map(g => g.trim()).filter(Boolean);\r\n\r\n // Create config\r\n const config: AgentConfig = {\r\n projectName,\r\n description,\r\n languages,\r\n frameworks,\r\n techStack: [],\r\n devCommands: devCommand ? [devCommand] : [],\r\n buildCommands: buildCommand ? [buildCommand] : [],\r\n testCommands: testCommand ? [testCommand] : [],\r\n codingGuidelines: guidelines,\r\n architectureNotes: [],\r\n mcpServers: [],\r\n };\r\n\r\n // Select IDEs to sync to\r\n const installedAdapters = await getInstalledAdapters();\r\n\r\n let selectedIDEs: AgentType[];\r\n\r\n if (options.ide && options.ide.length > 0) {\r\n selectedIDEs = options.ide as AgentType[];\r\n } else if (installedAdapters.length > 0 && !options.yes) {\r\n const selected = await p.multiselect({\r\n message: 'Which IDEs to configure?',\r\n options: installedAdapters.map(a => ({\r\n value: a.id,\r\n label: a.displayName,\r\n })),\r\n initialValues: installedAdapters.map(a => a.id),\r\n });\r\n\r\n if (p.isCancel(selected)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n selectedIDEs = selected as AgentType[];\r\n } else {\r\n selectedIDEs = installedAdapters.map(a => a.id);\r\n }\r\n\r\n // Sync to selected IDEs\r\n spinner.start('Creating agent configurations...');\r\n\r\n const results: { ide: string; success: boolean; files: string[] }[] = [];\r\n\r\n for (const ideId of selectedIDEs) {\r\n const adapter = getAdapter(ideId);\r\n if (!adapter) continue;\r\n\r\n try {\r\n const result = await adapter.sync(cwd, config, undefined, { global: options.global });\r\n results.push({\r\n ide: adapter.displayName,\r\n success: result.success,\r\n files: [...result.filesCreated, ...result.filesUpdated],\r\n });\r\n } catch (error) {\r\n results.push({\r\n ide: adapter.displayName,\r\n success: false,\r\n files: [],\r\n });\r\n }\r\n }\r\n\r\n spinner.stop('Configuration complete');\r\n\r\n // Show results\r\n console.log();\r\n for (const result of results) {\r\n if (result.success) {\r\n p.log.success(`${chalk.green('✓')} ${result.ide}`);\r\n result.files.forEach(f => p.log.message(` ${chalk.dim(f)}`));\r\n } else {\r\n p.log.error(`${chalk.red('✗')} ${result.ide}`);\r\n }\r\n }\r\n\r\n console.log();\r\n p.outro(chalk.green('Agent configuration created!'));\r\n}\r\n\r\n/**\r\n * Agent show command - Display current configuration\r\n */\r\nexport async function agentShow(options: AgentCommandOptions): Promise<void> {\r\n console.log();\r\n p.intro(chalk.bgCyan.black(' agent show '));\r\n\r\n const cwd = process.cwd();\r\n const adapters = getAllAdapters();\r\n\r\n let found = false;\r\n\r\n for (const adapter of adapters) {\r\n const agentPath = adapter.getAgentFilePath(cwd, options.global);\r\n\r\n if (existsSync(agentPath)) {\r\n found = true;\r\n console.log();\r\n p.log.step(chalk.bold(`${adapter.displayName} (${agentPath})`));\r\n\r\n try {\r\n const content = await readFile(agentPath, 'utf-8');\r\n // Show first 20 lines\r\n const lines = content.split('\\n').slice(0, 20);\r\n console.log(chalk.dim(lines.join('\\n')));\r\n if (content.split('\\n').length > 20) {\r\n console.log(chalk.dim('... (truncated)'));\r\n }\r\n } catch {\r\n p.log.error('Could not read file');\r\n }\r\n }\r\n }\r\n\r\n if (!found) {\r\n p.log.warn('No agent configuration files found');\r\n p.log.info('Run `unifai agent init` to create one');\r\n }\r\n\r\n console.log();\r\n p.outro('');\r\n}\r\n\r\n/**\r\n * Agent sync command - Sync to all IDEs\r\n */\r\nexport async function agentSync(options: AgentCommandOptions): Promise<void> {\r\n console.log();\r\n p.intro(chalk.bgCyan.black(' agent sync '));\r\n\r\n const spinner = p.spinner();\r\n const cwd = process.cwd();\r\n\r\n // Find existing AGENTS.md or similar\r\n spinner.start('Looking for agent configuration...');\r\n\r\n let config: AgentConfig | null = null;\r\n let sourceFile: string | null = null;\r\n\r\n // Check for AGENTS.md first (universal format)\r\n const agentsPath = join(cwd, 'AGENTS.md');\r\n if (existsSync(agentsPath)) {\r\n sourceFile = agentsPath;\r\n config = await parseAgentsFile(agentsPath);\r\n }\r\n\r\n // Check for CLAUDE.md\r\n if (!config) {\r\n const claudePath = join(cwd, 'CLAUDE.md');\r\n if (existsSync(claudePath)) {\r\n sourceFile = claudePath;\r\n config = await parseAgentsFile(claudePath);\r\n }\r\n }\r\n\r\n if (!config) {\r\n spinner.stop(chalk.yellow('No agent configuration found'));\r\n p.log.info('Run `unifai agent init` to create one');\r\n p.outro('');\r\n return;\r\n }\r\n\r\n spinner.stop(`Found: ${chalk.cyan(sourceFile)}`);\r\n\r\n // Get installed adapters\r\n const installedAdapters = await getInstalledAdapters();\r\n\r\n if (installedAdapters.length === 0) {\r\n p.log.warn('No supported IDEs detected');\r\n p.outro('');\r\n return;\r\n }\r\n\r\n // Sync to all installed IDEs\r\n spinner.start('Syncing to IDEs...');\r\n\r\n const results: { ide: string; success: boolean }[] = [];\r\n\r\n for (const adapter of installedAdapters) {\r\n try {\r\n const result = await adapter.sync(cwd, config, undefined, { global: options.global });\r\n results.push({ ide: adapter.displayName, success: result.success });\r\n } catch {\r\n results.push({ ide: adapter.displayName, success: false });\r\n }\r\n }\r\n\r\n spinner.stop('Sync complete');\r\n\r\n // Show results\r\n console.log();\r\n for (const result of results) {\r\n if (result.success) {\r\n p.log.success(`${chalk.green('✓')} ${result.ide}`);\r\n } else {\r\n p.log.error(`${chalk.red('✗')} ${result.ide}`);\r\n }\r\n }\r\n\r\n console.log();\r\n p.outro(chalk.green('Done!'));\r\n}\r\n\r\n/**\r\n * Parse an AGENTS.md file into AgentConfig\r\n * This is a simplified parser - could be enhanced\r\n */\r\nasync function parseAgentsFile(path: string): Promise<AgentConfig> {\r\n const content = await readFile(path, 'utf-8');\r\n\r\n // Basic parsing - extract what we can\r\n const config: AgentConfig = {\r\n projectName: undefined,\r\n description: undefined,\r\n languages: [],\r\n frameworks: [],\r\n techStack: [],\r\n devCommands: [],\r\n buildCommands: [],\r\n testCommands: [],\r\n codingGuidelines: [],\r\n architectureNotes: [],\r\n mcpServers: [],\r\n };\r\n\r\n // Try to extract project name from first heading\r\n const titleMatch = content.match(/^#\\s+(.+)/m);\r\n if (titleMatch) {\r\n config.projectName = titleMatch[1].replace(/[-–—].*$/, '').trim();\r\n }\r\n\r\n // Extract code blocks as potential commands\r\n const codeBlockRegex = /```(?:bash|sh)?\\n([\\s\\S]*?)```/g;\r\n let match;\r\n while ((match = codeBlockRegex.exec(content)) !== null) {\r\n const commands = match[1].split('\\n').filter(l => l.trim() && !l.startsWith('#'));\r\n config.buildCommands.push(...commands);\r\n }\r\n\r\n // Extract bullet points as potential guidelines\r\n const bulletRegex = /^[-*]\\s+(.+)$/gm;\r\n while ((match = bulletRegex.exec(content)) !== null) {\r\n config.codingGuidelines.push(match[1]);\r\n }\r\n\r\n return config;\r\n}\r\n\r\nexport default {\r\n init: agentInit,\r\n show: agentShow,\r\n sync: agentSync,\r\n};\r\n",
|
|
89
|
+
"/**\r\n * MCP Command\r\n * \r\n * Manage Model Context Protocol server configurations\r\n * \r\n * Commands:\r\n * mcp init - Initialize MCP configuration\r\n * mcp add - Add an MCP server\r\n * mcp list - List configured MCP servers\r\n * mcp sync - Sync MCP config to all IDEs\r\n */\r\n\r\nimport * as p from '@clack/prompts';\r\nimport chalk from 'chalk';\r\nimport { existsSync } from 'fs';\r\nimport { readFile, writeFile, mkdir } from 'fs/promises';\r\nimport { join, dirname } from 'path';\r\nimport { homedir } from 'os';\r\nimport { getInstalledAdapters, getAdapter } from '../adapters/index.js';\r\nimport type { MCPServer } from '../types/config.js';\r\nimport type { AgentType } from '../types/index.js';\r\n\r\nexport interface MCPCommandOptions {\r\n global?: boolean;\r\n ide?: string[];\r\n yes?: boolean;\r\n}\r\n\r\n/**\r\n * Default MCP config file name\r\n */\r\nconst MCP_CONFIG_FILE = 'mcp.json';\r\n\r\n/**\r\n * MCP init command\r\n */\r\nexport async function mcpInit(options: MCPCommandOptions): Promise<void> {\r\n console.log();\r\n p.intro(chalk.bgMagenta.black(' mcp init '));\r\n\r\n const cwd = process.cwd();\r\n const configPath = options.global\r\n ? join(homedir(), '.config', 'mcp', MCP_CONFIG_FILE)\r\n : join(cwd, '.mcp', MCP_CONFIG_FILE);\r\n\r\n if (existsSync(configPath)) {\r\n const overwrite = await p.confirm({\r\n message: 'MCP config already exists. Overwrite?',\r\n initialValue: false,\r\n });\r\n\r\n if (p.isCancel(overwrite) || !overwrite) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n }\r\n\r\n // Create initial config\r\n const config = {\r\n mcpServers: {},\r\n };\r\n\r\n // Write config\r\n await mkdir(dirname(configPath), { recursive: true });\r\n await writeFile(configPath, JSON.stringify(config, null, 2));\r\n\r\n p.log.success(`Created ${chalk.cyan(configPath)}`);\r\n p.log.info('Use `unifai mcp add` to add MCP servers');\r\n\r\n console.log();\r\n p.outro(chalk.green('MCP configuration initialized!'));\r\n}\r\n\r\n/**\r\n * MCP add command\r\n */\r\nexport async function mcpAdd(options: MCPCommandOptions): Promise<void> {\r\n console.log();\r\n p.intro(chalk.bgMagenta.black(' mcp add '));\r\n\r\n // Choose server type first\r\n const serverType = await p.select({\r\n message: 'Choose the type of MCP server to add',\r\n options: [\r\n {\r\n value: 'command',\r\n label: 'Command (stdio)',\r\n hint: 'Run a local command that implements the MCP protocol'\r\n },\r\n {\r\n value: 'http',\r\n label: 'HTTP (HTTP or Server-Sent Events)',\r\n hint: 'Connect to a remote HTTP server that implements the MCP protocol'\r\n },\r\n ],\r\n }) as 'command' | 'http';\r\n\r\n if (p.isCancel(serverType)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n // Get common server details\r\n const name = await p.text({\r\n message: 'Server name (unique identifier)',\r\n placeholder: 'my-mcp-server',\r\n validate: (v) => v.length === 0 ? 'Name is required' : undefined,\r\n }) as string;\r\n\r\n if (p.isCancel(name)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n const displayName = await p.text({\r\n message: 'Display name (optional)',\r\n placeholder: 'My MCP Server',\r\n }) as string;\r\n\r\n if (p.isCancel(displayName)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n const description = await p.text({\r\n message: 'Description (optional)',\r\n placeholder: 'What does this server do?',\r\n }) as string;\r\n\r\n if (p.isCancel(description)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n let server: MCPServer;\r\n\r\n if (serverType === 'command') {\r\n // Command (stdio) type\r\n const command = await p.text({\r\n message: 'Command to run',\r\n placeholder: 'npx -y @anthropic/mcp-server-filesystem',\r\n validate: (v) => v.length === 0 ? 'Command is required' : undefined,\r\n }) as string;\r\n\r\n if (p.isCancel(command)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n const argsInput = await p.text({\r\n message: 'Arguments (space-separated)',\r\n placeholder: '. --allow-read',\r\n }) as string;\r\n\r\n if (p.isCancel(argsInput)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n const args = argsInput ? argsInput.split(' ').filter(Boolean) : [];\r\n\r\n const envInput = await p.text({\r\n message: 'Environment variables (KEY=value, comma-separated)',\r\n placeholder: 'API_KEY=${API_KEY}, DEBUG=true',\r\n }) as string;\r\n\r\n if (p.isCancel(envInput)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n const env: Record<string, string> = {};\r\n if (envInput) {\r\n envInput.split(',').forEach(pair => {\r\n const [key, value] = pair.split('=').map(s => s.trim());\r\n if (key && value) {\r\n env[key] = value;\r\n }\r\n });\r\n }\r\n\r\n server = {\r\n name,\r\n displayName: displayName || undefined,\r\n description: description || undefined,\r\n type: 'command',\r\n command,\r\n args: args.length > 0 ? args : undefined,\r\n env: Object.keys(env).length > 0 ? env : undefined,\r\n };\r\n } else {\r\n // HTTP type\r\n const url = await p.text({\r\n message: 'Server URL',\r\n placeholder: 'http://localhost:3000/mcp',\r\n validate: (v) => v.length === 0 ? 'URL is required' : undefined,\r\n }) as string;\r\n\r\n if (p.isCancel(url)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n const headersInput = await p.text({\r\n message: 'HTTP Headers (Key:Value, comma-separated)',\r\n placeholder: 'Authorization:Bearer token, Content-Type:application/json',\r\n }) as string;\r\n\r\n if (p.isCancel(headersInput)) {\r\n p.cancel('Cancelled');\r\n return;\r\n }\r\n\r\n const headers: Record<string, string> = {};\r\n if (headersInput) {\r\n headersInput.split(',').forEach(pair => {\r\n const colonIdx = pair.indexOf(':');\r\n if (colonIdx > 0) {\r\n const key = pair.slice(0, colonIdx).trim();\r\n const value = pair.slice(colonIdx + 1).trim();\r\n if (key && value) {\r\n headers[key] = value;\r\n }\r\n }\r\n });\r\n }\r\n\r\n server = {\r\n name,\r\n displayName: displayName || undefined,\r\n description: description || undefined,\r\n type: 'http',\r\n url,\r\n headers: Object.keys(headers).length > 0 ? headers : undefined,\r\n };\r\n }\r\n\r\n // Load existing config\r\n const cwd = process.cwd();\r\n const configPath = options.global\r\n ? join(homedir(), '.config', 'mcp', MCP_CONFIG_FILE)\r\n : join(cwd, '.mcp', MCP_CONFIG_FILE);\r\n\r\n let config: { mcpServers: Record<string, unknown> } = { mcpServers: {} };\r\n\r\n if (existsSync(configPath)) {\r\n try {\r\n const content = await readFile(configPath, 'utf-8');\r\n config = JSON.parse(content);\r\n } catch {\r\n // Use default\r\n }\r\n }\r\n\r\n // Add server based on type\r\n if (server.type === 'command') {\r\n config.mcpServers[name] = {\r\n type: 'command',\r\n command: server.command,\r\n args: server.args,\r\n env: server.env,\r\n };\r\n } else {\r\n config.mcpServers[name] = {\r\n type: 'http',\r\n url: server.url,\r\n headers: server.headers,\r\n };\r\n }\r\n\r\n // Save config\r\n await mkdir(dirname(configPath), { recursive: true });\r\n await writeFile(configPath, JSON.stringify(config, null, 2));\r\n\r\n p.log.success(`Added ${chalk.cyan(name)} (${serverType}) to MCP config`);\r\n\r\n // Offer to sync to IDEs\r\n if (!options.yes) {\r\n const sync = await p.confirm({\r\n message: 'Sync to detected IDEs?',\r\n initialValue: true,\r\n });\r\n\r\n if (!p.isCancel(sync) && sync) {\r\n await mcpSync(options);\r\n return;\r\n }\r\n }\r\n\r\n console.log();\r\n p.outro(chalk.green('MCP server added!'));\r\n}\r\n\r\n/**\r\n * MCP list command\r\n */\r\nexport async function mcpList(options: MCPCommandOptions): Promise<void> {\r\n console.log();\r\n p.intro(chalk.bgMagenta.black(' mcp list '));\r\n\r\n const cwd = process.cwd();\r\n const configPath = options.global\r\n ? join(homedir(), '.config', 'mcp', MCP_CONFIG_FILE)\r\n : join(cwd, '.mcp', MCP_CONFIG_FILE);\r\n\r\n if (!existsSync(configPath)) {\r\n p.log.warn('No MCP configuration found');\r\n p.log.info('Run `unifai mcp init` to create one');\r\n p.outro('');\r\n return;\r\n }\r\n\r\n try {\r\n const content = await readFile(configPath, 'utf-8');\r\n const config = JSON.parse(content);\r\n\r\n const servers = Object.entries(config.mcpServers || {});\r\n\r\n if (servers.length === 0) {\r\n p.log.info('No MCP servers configured');\r\n p.log.info('Run `unifai mcp add` to add servers');\r\n } else {\r\n console.log();\r\n p.log.step(chalk.bold(`Configured MCP Servers (${servers.length})`));\r\n console.log();\r\n\r\n for (const [name, serverConfig] of servers) {\r\n const sc = serverConfig as {\r\n type?: 'command' | 'http';\r\n command?: string;\r\n args?: string[];\r\n env?: Record<string, string>;\r\n url?: string;\r\n headers?: Record<string, string>;\r\n };\r\n\r\n const serverType = sc.type || 'command';\r\n console.log(` ${chalk.cyan(name)} ${chalk.dim(`[${serverType}]`)}`);\r\n\r\n if (serverType === 'command') {\r\n console.log(` ${chalk.dim('Command:')} ${sc.command}`);\r\n if (sc.args && sc.args.length > 0) {\r\n console.log(` ${chalk.dim('Args:')} ${sc.args.join(' ')}`);\r\n }\r\n if (sc.env && Object.keys(sc.env).length > 0) {\r\n console.log(` ${chalk.dim('Env:')} ${Object.keys(sc.env).join(', ')}`);\r\n }\r\n } else {\r\n console.log(` ${chalk.dim('URL:')} ${sc.url}`);\r\n if (sc.headers && Object.keys(sc.headers).length > 0) {\r\n console.log(` ${chalk.dim('Headers:')} ${Object.keys(sc.headers).join(', ')}`);\r\n }\r\n }\r\n console.log();\r\n }\r\n }\r\n } catch (error) {\r\n p.log.error('Failed to read MCP config');\r\n }\r\n\r\n console.log();\r\n p.outro('');\r\n}\r\n\r\n/**\r\n * MCP sync command\r\n */\r\nexport async function mcpSync(options: MCPCommandOptions): Promise<void> {\r\n console.log();\r\n p.intro(chalk.bgMagenta.black(' mcp sync '));\r\n\r\n const spinner = p.spinner();\r\n const cwd = process.cwd();\r\n\r\n // Load MCP config\r\n const configPath = options.global\r\n ? join(homedir(), '.config', 'mcp', MCP_CONFIG_FILE)\r\n : join(cwd, '.mcp', MCP_CONFIG_FILE);\r\n\r\n if (!existsSync(configPath)) {\r\n p.log.warn('No MCP configuration found');\r\n p.log.info('Run `unifai mcp init` to create one');\r\n p.outro('');\r\n return;\r\n }\r\n\r\n spinner.start('Loading MCP configuration...');\r\n\r\n let servers: MCPServer[] = [];\r\n\r\n try {\r\n const content = await readFile(configPath, 'utf-8');\r\n const config = JSON.parse(content);\r\n\r\n servers = Object.entries(config.mcpServers || {}).map(([name, sc]) => {\r\n const serverConfig = sc as {\r\n type?: 'command' | 'http';\r\n command?: string;\r\n args?: string[];\r\n env?: Record<string, string>;\r\n url?: string;\r\n headers?: Record<string, string>;\r\n };\r\n return {\r\n name,\r\n type: serverConfig.type || 'command',\r\n command: serverConfig.command,\r\n args: serverConfig.args,\r\n env: serverConfig.env,\r\n url: serverConfig.url,\r\n headers: serverConfig.headers,\r\n } as MCPServer;\r\n });\r\n } catch {\r\n spinner.stop(chalk.red('Failed to load MCP config'));\r\n p.outro('');\r\n return;\r\n }\r\n\r\n if (servers.length === 0) {\r\n spinner.stop('No MCP servers to sync');\r\n p.outro('');\r\n return;\r\n }\r\n\r\n spinner.stop(`Found ${servers.length} MCP servers`);\r\n\r\n // Get installed adapters\r\n const installedAdapters = await getInstalledAdapters();\r\n\r\n if (installedAdapters.length === 0) {\r\n p.log.warn('No supported IDEs detected');\r\n p.outro('');\r\n return;\r\n }\r\n\r\n // Sync to each IDE\r\n spinner.start('Syncing MCP config to IDEs...');\r\n\r\n const results: { ide: string; success: boolean; path?: string }[] = [];\r\n\r\n for (const adapter of installedAdapters) {\r\n try {\r\n const mcpContent = await adapter.generateMCPConfig(servers);\r\n const mcpPath = adapter.getMCPConfigPath(cwd, options.global);\r\n\r\n if (mcpPath && mcpContent !== '{}') {\r\n await mkdir(dirname(mcpPath), { recursive: true });\r\n await writeFile(mcpPath, mcpContent);\r\n results.push({ ide: adapter.displayName, success: true, path: mcpPath });\r\n } else {\r\n results.push({ ide: adapter.displayName, success: false });\r\n }\r\n } catch {\r\n results.push({ ide: adapter.displayName, success: false });\r\n }\r\n }\r\n\r\n spinner.stop('Sync complete');\r\n\r\n // Show results\r\n console.log();\r\n for (const result of results) {\r\n if (result.success) {\r\n p.log.success(`${chalk.green('✓')} ${result.ide}`);\r\n if (result.path) {\r\n p.log.message(` ${chalk.dim(result.path)}`);\r\n }\r\n } else {\r\n p.log.warn(`${chalk.yellow('○')} ${result.ide} (not supported or failed)`);\r\n }\r\n }\r\n\r\n console.log();\r\n p.outro(chalk.green('MCP sync complete!'));\r\n}\r\n\r\nexport default {\r\n init: mcpInit,\r\n add: mcpAdd,\r\n list: mcpList,\r\n sync: mcpSync,\r\n};\r\n",
|
|
90
|
+
"/**\r\n * Sync Command\r\n * \r\n * Universal sync command to synchronize all configurations\r\n * across all detected AI IDEs.\r\n */\r\n\r\nimport * as p from '@clack/prompts';\r\nimport chalk from 'chalk';\r\nimport { existsSync } from 'fs';\r\nimport { readFile } from 'fs/promises';\r\nimport { join } from 'path';\r\nimport { getInstalledAdapters, getAllAdapters } from '../adapters/index.js';\r\nimport type { AgentConfig, RuleSet } from '../types/config.js';\r\n\r\nexport interface SyncCommandOptions {\r\n global?: boolean;\r\n agent?: boolean;\r\n rules?: boolean;\r\n mcp?: boolean;\r\n ide?: string[];\r\n}\r\n\r\n/**\r\n * Universal sync command\r\n */\r\nexport async function syncCommand(options: SyncCommandOptions): Promise<void> {\r\n console.log();\r\n p.intro(chalk.bgBlue.white(' sync '));\r\n\r\n const spinner = p.spinner();\r\n const cwd = process.cwd();\r\n\r\n // Determine what to sync (default: everything)\r\n const syncAgent = options.agent ?? true;\r\n const syncRules = options.rules ?? true;\r\n const syncMcp = options.mcp ?? true;\r\n\r\n // Load configurations\r\n spinner.start('Loading configurations...');\r\n\r\n // Try to find agent config\r\n let agentConfig: AgentConfig | null = null;\r\n const agentSources = ['AGENTS.md', 'CLAUDE.md', '.github/copilot-instructions.md'];\r\n\r\n for (const source of agentSources) {\r\n const path = join(cwd, source);\r\n if (existsSync(path)) {\r\n try {\r\n agentConfig = await parseAgentFile(path);\r\n break;\r\n } catch {\r\n // Continue to next source\r\n }\r\n }\r\n }\r\n\r\n // Try to find MCP config\r\n let mcpServers: Array<{\r\n name: string;\r\n type: 'command' | 'http';\r\n command?: string;\r\n args?: string[];\r\n env?: Record<string, string>;\r\n url?: string;\r\n headers?: Record<string, string>;\r\n }> = [];\r\n const mcpSources = ['.mcp/mcp.json', '.claude/mcp.json', '.cursor/mcp.json'];\r\n\r\n for (const source of mcpSources) {\r\n const path = join(cwd, source);\r\n if (existsSync(path)) {\r\n try {\r\n const content = await readFile(path, 'utf-8');\r\n const config = JSON.parse(content);\r\n mcpServers = Object.entries(config.mcpServers || {}).map(([name, sc]) => {\r\n const serverConfig = sc as {\r\n type?: 'command' | 'http';\r\n command?: string;\r\n args?: string[];\r\n env?: Record<string, string>;\r\n url?: string;\r\n headers?: Record<string, string>;\r\n };\r\n return {\r\n name,\r\n type: serverConfig.type || 'command',\r\n command: serverConfig.command,\r\n args: serverConfig.args,\r\n env: serverConfig.env,\r\n url: serverConfig.url,\r\n headers: serverConfig.headers,\r\n };\r\n });\r\n break;\r\n } catch {\r\n // Continue to next source\r\n }\r\n }\r\n }\r\n\r\n // Try to find Rules\r\n let ruleSet: RuleSet = { global: [], pathSpecific: [] };\r\n const ruleSources = [\r\n '.agent/rules',\r\n '.claude/rules',\r\n '.cursor/rules',\r\n '.gemini/rules'\r\n ];\r\n\r\n for (const source of ruleSources) {\r\n const path = join(cwd, source);\r\n if (existsSync(path)) {\r\n try {\r\n const { readdir, readFile } = await import('fs/promises');\r\n const files = await readdir(path);\r\n for (const file of files) {\r\n if (file.endsWith('.md')) {\r\n const content = await readFile(join(path, file), 'utf-8');\r\n if (file === 'global.md') {\r\n ruleSet.global.push({ content });\r\n } else {\r\n // Assume filename is the pattern or just a name\r\n const pattern = file.replace('.md', '');\r\n ruleSet.pathSpecific.push({\r\n pattern: pattern === 'rules' ? '*' : pattern,\r\n rules: [{ content }]\r\n });\r\n }\r\n }\r\n }\r\n } catch {\r\n // Ignore errors\r\n }\r\n }\r\n }\r\n\r\n // Special case for .cursorrules\r\n const cursorRulesPath = join(cwd, '.cursorrules');\r\n if (existsSync(cursorRulesPath)) {\r\n try {\r\n const content = await readFile(cursorRulesPath, 'utf-8');\r\n ruleSet.global.push({ content });\r\n } catch { }\r\n }\r\n\r\n spinner.stop('Configurations loaded');\r\n\r\n // Summary of what we found\r\n console.log();\r\n const hasRules = ruleSet.global.length > 0 || ruleSet.pathSpecific.length > 0;\r\n p.log.step(chalk.bold('Found:'));\r\n p.log.message(` Agent config: ${agentConfig ? chalk.green('Yes') : chalk.yellow('No')}`);\r\n p.log.message(` MCP servers: ${mcpServers.length > 0 ? chalk.green(mcpServers.length.toString()) : chalk.yellow('0')}`);\r\n p.log.message(` Rules discovered: ${hasRules ? chalk.green('Yes') : chalk.yellow('No')}`);\r\n console.log();\r\n\r\n if (!agentConfig && mcpServers.length === 0 && !hasRules) {\r\n p.log.warn('No configurations found to sync');\r\n p.log.info('Run `unifai agent init` to create agent config');\r\n p.log.info('Run `unifai mcp init` to create MCP config');\r\n p.outro('');\r\n return;\r\n }\r\n\r\n // Get installed adapters\r\n const installedAdapters = await getInstalledAdapters();\r\n\r\n if (installedAdapters.length === 0) {\r\n p.log.warn('No supported IDEs detected');\r\n p.outro('');\r\n return;\r\n }\r\n\r\n p.log.step(chalk.bold(`Detected IDEs (${installedAdapters.length}):`));\r\n installedAdapters.forEach(a => p.log.message(` ${chalk.cyan(a.displayName)}`));\r\n console.log();\r\n\r\n // Sync to all IDEs\r\n spinner.start('Syncing to all IDEs...');\r\n\r\n const results: Array<{\r\n ide: string;\r\n agentSuccess?: boolean;\r\n mcpSuccess?: boolean;\r\n files: string[];\r\n errors: string[];\r\n }> = [];\r\n\r\n for (const adapter of installedAdapters) {\r\n const result: typeof results[0] = {\r\n ide: adapter.displayName,\r\n files: [],\r\n errors: [],\r\n };\r\n\r\n try {\r\n // Prepare config with discovered MCP servers\r\n const syncConfig: AgentConfig = agentConfig || {\r\n projectName: undefined,\r\n description: undefined,\r\n languages: [],\r\n frameworks: [],\r\n techStack: [],\r\n devCommands: [],\r\n buildCommands: [],\r\n testCommands: [],\r\n codingGuidelines: [],\r\n architectureNotes: [],\r\n mcpServers: [],\r\n };\r\n\r\n if (syncMcp && mcpServers.length > 0) {\r\n syncConfig.mcpServers = mcpServers as any;\r\n }\r\n\r\n // Sync everything via adapter\r\n if (syncAgent || syncRules || syncMcp) {\r\n const syncResult = await adapter.sync(cwd, syncConfig, syncRules ? ruleSet : undefined, {\r\n global: options.global\r\n });\r\n\r\n result.agentSuccess = syncResult.success;\r\n result.mcpSuccess = syncMcp && mcpServers.length > 0;\r\n result.files.push(...syncResult.filesCreated, ...syncResult.filesUpdated);\r\n result.errors.push(...syncResult.errors);\r\n }\r\n } catch (error) {\r\n result.errors.push(error instanceof Error ? error.message : 'Unknown error');\r\n }\r\n\r\n results.push(result);\r\n }\r\n\r\n spinner.stop('Sync complete');\r\n\r\n // Show results\r\n console.log();\r\n p.log.step(chalk.bold('Results:'));\r\n console.log();\r\n\r\n for (const result of results) {\r\n const hasSuccess = result.agentSuccess || result.mcpSuccess;\r\n const hasErrors = result.errors.length > 0;\r\n\r\n if (hasSuccess && !hasErrors) {\r\n p.log.success(`${chalk.green('✓')} ${result.ide}`);\r\n } else if (hasErrors) {\r\n p.log.error(`${chalk.red('✗')} ${result.ide}`);\r\n } else {\r\n p.log.message(`${chalk.yellow('○')} ${result.ide} (nothing to sync)`);\r\n }\r\n\r\n // Show files\r\n for (const file of result.files) {\r\n p.log.message(` ${chalk.dim('→')} ${chalk.dim(file)}`);\r\n }\r\n\r\n // Show errors\r\n for (const error of result.errors) {\r\n p.log.message(` ${chalk.red(error)}`);\r\n }\r\n }\r\n\r\n // Summary\r\n console.log();\r\n const successCount = results.filter(r => r.agentSuccess || r.mcpSuccess).length;\r\n const totalFiles = results.reduce((sum, r) => sum + r.files.length, 0);\r\n\r\n p.outro(chalk.green(`Synced to ${successCount} IDEs (${totalFiles} files)`));\r\n}\r\n\r\n/**\r\n * Parse agent file into AgentConfig\r\n */\r\nasync function parseAgentFile(path: string): Promise<AgentConfig> {\r\n const content = await readFile(path, 'utf-8');\r\n\r\n const config: AgentConfig = {\r\n projectName: undefined,\r\n description: undefined,\r\n languages: [],\r\n frameworks: [],\r\n techStack: [],\r\n devCommands: [],\r\n buildCommands: [],\r\n testCommands: [],\r\n codingGuidelines: [],\r\n architectureNotes: [],\r\n mcpServers: [],\r\n };\r\n\r\n // Extract title\r\n const titleMatch = content.match(/^#\\s+(.+)/m);\r\n if (titleMatch) {\r\n config.projectName = titleMatch[1].replace(/[-–—].*$/, '').trim();\r\n }\r\n\r\n // Extract description (first paragraph after title)\r\n const descMatch = content.match(/^#.+\\n+([^#\\n].+)/m);\r\n if (descMatch) {\r\n config.description = descMatch[1].trim();\r\n }\r\n\r\n // Extract code blocks as commands\r\n const codeBlockRegex = /```(?:bash|sh)?\\n([\\s\\S]*?)```/g;\r\n let match;\r\n while ((match = codeBlockRegex.exec(content)) !== null) {\r\n const commands = match[1].split('\\n').filter(l => l.trim() && !l.startsWith('#'));\r\n config.buildCommands.push(...commands);\r\n }\r\n\r\n // Extract bullet points as guidelines\r\n const bulletRegex = /^[-*]\\s+(.+)$/gm;\r\n while ((match = bulletRegex.exec(content)) !== null) {\r\n config.codingGuidelines.push(match[1]);\r\n }\r\n\r\n return config;\r\n}\r\n\r\nexport default syncCommand;\r\n",
|
|
91
|
+
"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",
|
|
92
|
+
"#!/usr/bin/env bun\r\n\r\nimport { program } from 'commander';\r\nimport * as p from '@clack/prompts';\r\nimport chalk from 'chalk';\r\nimport { parseSource, cloneRepo, cleanupTempDir } from './utils/git.js';\r\nimport { discoverSkills, getSkillDisplayName } from './utils/skills.js';\r\nimport { installSkillForAgent, isSkillInstalled, getInstallPath } from './utils/installer.js';\r\nimport { detectInstalledAgents, agents } from './utils/agents.js';\r\nimport type { Skill, AgentType } from './types.js';\r\nimport { join, dirname } from 'path';\r\nimport { fileURLToPath } from 'url';\r\n\r\n// Cross-runtime __dirname support\r\nconst __dirname = typeof import.meta.dir === 'string'\r\n ? import.meta.dir\r\n : dirname(fileURLToPath(import.meta.url));\r\n\r\n// Read version from package.json with cross-runtime support\r\n// Fallback version for standalone binaries where package.json may not be accessible\r\nconst FALLBACK_VERSION = '1.0.1';\r\nlet version: string = FALLBACK_VERSION;\r\n\r\ntry {\r\n const packageJsonPath = join(__dirname, '../package.json');\r\n if (typeof Bun !== 'undefined') {\r\n // Bun runtime - use Bun.file for better performance\r\n const packageJson = await Bun.file(packageJsonPath).json();\r\n version = packageJson.version;\r\n } else {\r\n // Node.js runtime fallback\r\n const { readFile } = await import('fs/promises');\r\n const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf-8'));\r\n version = packageJson.version;\r\n }\r\n} catch {\r\n // Use fallback version (standalone binary or missing package.json)\r\n}\r\n\r\ninterface Options {\r\n global?: boolean;\r\n agent?: string[];\r\n yes?: boolean;\r\n skill?: string[];\r\n list?: boolean;\r\n}\r\n\r\nprogram\r\n .name('unifai')\r\n .description('Install skills onto AI coding agents from git repositories')\r\n .version(version)\r\n .argument('<source>', 'Git repo URL, GitHub shorthand (owner/repo), or direct path to skill')\r\n .option('-g, --global', 'Install skill globally (user-level) instead of project-level')\r\n .option('-a, --agent <agents...>', 'Specify agents to install to (use --list-agents to see available agents)')\r\n .option('-s, --skill <skills...>', 'Specify skill names to install (skip selection prompt)')\r\n .option('-l, --list', 'List available skills in the repository without installing')\r\n .option('-y, --yes', 'Skip confirmation prompts')\r\n .configureOutput({\r\n outputError: (str, write) => {\r\n if (str.includes('missing required argument')) {\r\n console.log();\r\n console.log(chalk.bgRed.white.bold(' ERROR ') + ' ' + chalk.red('Missing required argument: source'));\r\n console.log();\r\n console.log(chalk.dim(' Usage:'));\r\n console.log(` ${chalk.cyan('npx unifai')} ${chalk.yellow('<source>')} ${chalk.dim('[options]')}`);\r\n console.log();\r\n console.log(chalk.dim(' Example:'));\r\n console.log(` ${chalk.cyan('npx unifai')} ${chalk.yellow('vercel-labs/agent-skills')}`);\r\n console.log();\r\n console.log(chalk.dim(' Run') + ` ${chalk.cyan('npx unifai --help')} ` + chalk.dim('for more information.'));\r\n console.log();\r\n } else {\r\n write(str);\r\n }\r\n }\r\n })\r\n .action(async (source: string, options: Options) => {\r\n await main(source, options);\r\n });\r\n\r\n// Add list-agents command\r\nprogram\r\n .command('list-agents')\r\n .description('List all supported AI coding agents')\r\n .action(() => {\r\n console.log();\r\n console.log(chalk.bold('Supported AI Coding Agents:'));\r\n console.log();\r\n Object.entries(agents).forEach(([id, config]) => {\r\n console.log(` ${chalk.cyan(id.padEnd(18))} ${chalk.dim(config.displayName)}`);\r\n console.log(` ${chalk.gray(`Project: ${config.skillsDir}`)}`);\r\n console.log(` ${chalk.gray(`Global: ${config.globalSkillsDir}`)}`);\r\n });\r\n console.log();\r\n });\r\n\r\n// Add init command\r\nprogram\r\n .command('init')\r\n .description('Initialize skills with smart project detection')\r\n .option('-y, --yes', 'Skip confirmation prompts')\r\n .option('-s, --source <source>', 'Custom skill source (default: includeHasan/agents-skill)')\r\n .option('-a, --agent <agents...>', 'Specify agents to install to')\r\n .option('-g, --global', 'Install globally')\r\n .action(async (options) => {\r\n const { initCommand } = await import('./commands/init.js');\r\n await initCommand(options);\r\n });\r\n\r\n// Add tui command\r\nprogram\r\n .command('tui')\r\n .alias('ui')\r\n .description('Interactive TUI for managing skills')\r\n .option('-s, --source <source>', 'Custom skill source')\r\n .option('-g, --global', 'Manage global skills')\r\n .action(async (options) => {\r\n const { tuiCommand } = await import('./commands/tui.js');\r\n await tuiCommand(options);\r\n });\r\n\r\n// Add agent command group\r\nconst agentCmd = program\r\n .command('agent')\r\n .description('Manage AGENT.md / agent instructions across IDEs');\r\n\r\nagentCmd\r\n .command('init')\r\n .description('Interactive wizard to create agent configuration')\r\n .option('-g, --global', 'Create global configuration')\r\n .option('-i, --ide <ides...>', 'Specify IDEs to configure')\r\n .option('-y, --yes', 'Skip confirmation prompts')\r\n .action(async (options) => {\r\n const { agentInit } = await import('./commands/agent.js');\r\n await agentInit(options);\r\n });\r\n\r\nagentCmd\r\n .command('show')\r\n .description('Display current agent configuration')\r\n .option('-g, --global', 'Show global configuration')\r\n .action(async (options) => {\r\n const { agentShow } = await import('./commands/agent.js');\r\n await agentShow(options);\r\n });\r\n\r\nagentCmd\r\n .command('sync')\r\n .description('Sync agent config to all detected IDEs')\r\n .option('-g, --global', 'Sync global configuration')\r\n .action(async (options) => {\r\n const { agentSync } = await import('./commands/agent.js');\r\n await agentSync(options);\r\n });\r\n\r\n// Add mcp command group\r\nconst mcpCmd = program\r\n .command('mcp')\r\n .description('Manage MCP (Model Context Protocol) server configurations');\r\n\r\nmcpCmd\r\n .command('init')\r\n .description('Initialize MCP configuration')\r\n .option('-g, --global', 'Create global configuration')\r\n .action(async (options) => {\r\n const { mcpInit } = await import('./commands/mcp.js');\r\n await mcpInit(options);\r\n });\r\n\r\nmcpCmd\r\n .command('add')\r\n .description('Add an MCP server')\r\n .option('-g, --global', 'Add to global configuration')\r\n .option('-y, --yes', 'Skip confirmation prompts')\r\n .action(async (options) => {\r\n const { mcpAdd } = await import('./commands/mcp.js');\r\n await mcpAdd(options);\r\n });\r\n\r\nmcpCmd\r\n .command('list')\r\n .description('List configured MCP servers')\r\n .option('-g, --global', 'List global configuration')\r\n .action(async (options) => {\r\n const { mcpList } = await import('./commands/mcp.js');\r\n await mcpList(options);\r\n });\r\n\r\nmcpCmd\r\n .command('sync')\r\n .description('Sync MCP config to all detected IDEs')\r\n .option('-g, --global', 'Sync global configuration')\r\n .action(async (options) => {\r\n const { mcpSync } = await import('./commands/mcp.js');\r\n await mcpSync(options);\r\n });\r\n\r\n// Add universal sync command\r\nprogram\r\n .command('sync')\r\n .description('Sync all configurations to all detected IDEs')\r\n .option('-g, --global', 'Sync global configurations')\r\n .option('--agent', 'Only sync agent configuration')\r\n .option('--mcp', 'Only sync MCP configuration')\r\n .option('--rules', 'Only sync rules')\r\n .action(async (options) => {\r\n const syncCommand = (await import('./commands/sync.js')).default;\r\n await syncCommand(options);\r\n });\r\n\r\nasync function main(source: string, options: Options) {\r\n console.log();\r\n p.intro(chalk.bgCyan.black(' unifai '));\r\n\r\n let tempDir: string | null = null;\r\n\r\n try {\r\n const spinner = p.spinner();\r\n\r\n spinner.start('Parsing source...');\r\n const parsed = parseSource(source);\r\n spinner.stop(`Source: ${chalk.cyan(parsed.url)}${parsed.subpath ? ` (${parsed.subpath})` : ''}`);\r\n\r\n spinner.start('Cloning repository...');\r\n tempDir = await cloneRepo(parsed.url);\r\n spinner.stop('Repository cloned');\r\n\r\n spinner.start('Discovering skills...');\r\n const skills = await discoverSkills(tempDir, parsed.subpath);\r\n\r\n if (skills.length === 0) {\r\n spinner.stop(chalk.red('No skills found'));\r\n p.outro(chalk.red('No valid skills found. Skills require a SKILL.md with name and description.'));\r\n await cleanup(tempDir);\r\n process.exit(1);\r\n }\r\n\r\n spinner.stop(`Found ${chalk.green(skills.length)} skill${skills.length > 1 ? 's' : ''}`);\r\n\r\n if (options.list) {\r\n console.log();\r\n p.log.step(chalk.bold('Available Skills'));\r\n for (const skill of skills) {\r\n p.log.message(` ${chalk.cyan(getSkillDisplayName(skill))}`);\r\n p.log.message(` ${chalk.dim(skill.description)}`);\r\n }\r\n console.log();\r\n p.outro('Use --skill <name> to install specific skills');\r\n await cleanup(tempDir);\r\n process.exit(0);\r\n }\r\n\r\n let selectedSkills: Skill[];\r\n\r\n if (options.skill && options.skill.length > 0) {\r\n selectedSkills = skills.filter(s =>\r\n options.skill!.some(name =>\r\n s.name.toLowerCase() === name.toLowerCase() ||\r\n getSkillDisplayName(s).toLowerCase() === name.toLowerCase()\r\n )\r\n );\r\n\r\n if (selectedSkills.length === 0) {\r\n p.log.error(`No matching skills found for: ${options.skill.join(', ')}`);\r\n p.log.info('Available skills:');\r\n for (const s of skills) {\r\n p.log.message(` - ${getSkillDisplayName(s)}`);\r\n }\r\n await cleanup(tempDir);\r\n process.exit(1);\r\n }\r\n\r\n p.log.info(`Selected ${selectedSkills.length} skill${selectedSkills.length !== 1 ? 's' : ''}: ${selectedSkills.map(s => chalk.cyan(getSkillDisplayName(s))).join(', ')}`);\r\n } else if (skills.length === 1) {\r\n selectedSkills = skills;\r\n const firstSkill = skills[0]!;\r\n p.log.info(`Skill: ${chalk.cyan(getSkillDisplayName(firstSkill))}`);\r\n p.log.message(chalk.dim(firstSkill.description));\r\n } else if (options.yes) {\r\n selectedSkills = skills;\r\n p.log.info(`Installing all ${skills.length} skills`);\r\n } else {\r\n const skillChoices = skills.map(s => ({\r\n value: s,\r\n label: getSkillDisplayName(s),\r\n hint: s.description.length > 60 ? s.description.slice(0, 57) + '...' : s.description,\r\n }));\r\n\r\n const selected = await p.multiselect({\r\n message: 'Select skills to install',\r\n options: skillChoices,\r\n required: true,\r\n });\r\n\r\n if (p.isCancel(selected)) {\r\n p.cancel('Installation cancelled');\r\n await cleanup(tempDir);\r\n process.exit(0);\r\n }\r\n\r\n selectedSkills = selected as Skill[];\r\n }\r\n\r\n let targetAgents: AgentType[];\r\n const validAgents = Object.keys(agents);\r\n\r\n if (options.agent && options.agent.length > 0) {\r\n const invalidAgents = options.agent.filter(a => !validAgents.includes(a));\r\n\r\n if (invalidAgents.length > 0) {\r\n p.log.error(`Invalid agents: ${invalidAgents.join(', ')}`);\r\n p.log.info(`Valid agents: ${validAgents.join(', ')}`);\r\n p.log.info(`Run 'agent-skills list-agents' to see all supported agents`);\r\n await cleanup(tempDir);\r\n process.exit(1);\r\n }\r\n\r\n targetAgents = options.agent as AgentType[];\r\n } else {\r\n spinner.start('Detecting installed agents...');\r\n const installedAgents = await detectInstalledAgents();\r\n spinner.stop(`Detected ${installedAgents.length} agent${installedAgents.length !== 1 ? 's' : ''}`);\r\n\r\n if (installedAgents.length === 0) {\r\n if (options.yes) {\r\n targetAgents = validAgents as AgentType[];\r\n p.log.info('Installing to all agents (none detected)');\r\n } else {\r\n p.log.warn('No coding agents detected. You can still install skills.');\r\n\r\n const allAgentChoices = Object.entries(agents).map(([key, config]) => ({\r\n value: key as AgentType,\r\n label: config.displayName,\r\n }));\r\n\r\n const selected = await p.multiselect({\r\n message: 'Select agents to install skills to',\r\n options: allAgentChoices,\r\n required: true,\r\n });\r\n\r\n if (p.isCancel(selected)) {\r\n p.cancel('Installation cancelled');\r\n await cleanup(tempDir);\r\n process.exit(0);\r\n }\r\n\r\n targetAgents = selected as AgentType[];\r\n }\r\n } else if (installedAgents.length === 1 || options.yes) {\r\n targetAgents = installedAgents;\r\n if (installedAgents.length === 1) {\r\n const firstAgent = installedAgents[0]!;\r\n p.log.info(`Installing to: ${chalk.cyan(agents[firstAgent].displayName)}`);\r\n } else {\r\n p.log.info(`Installing to: ${installedAgents.map(a => chalk.cyan(agents[a].displayName)).join(', ')}`);\r\n }\r\n } else {\r\n const agentChoices = installedAgents.map(a => ({\r\n value: a,\r\n label: agents[a].displayName,\r\n hint: `${options.global ? agents[a].globalSkillsDir : agents[a].skillsDir}`,\r\n }));\r\n\r\n const selected = await p.multiselect({\r\n message: 'Select agents to install skills to',\r\n options: agentChoices,\r\n required: true,\r\n initialValues: installedAgents,\r\n });\r\n\r\n if (p.isCancel(selected)) {\r\n p.cancel('Installation cancelled');\r\n await cleanup(tempDir);\r\n process.exit(0);\r\n }\r\n\r\n targetAgents = selected as AgentType[];\r\n }\r\n }\r\n\r\n let installGlobally = options.global ?? false;\r\n\r\n if (options.global === undefined && !options.yes) {\r\n const scope = await p.select({\r\n message: 'Installation scope',\r\n options: [\r\n { value: false, label: 'Project', hint: 'Install in current directory (committed with your project)' },\r\n { value: true, label: 'Global', hint: 'Install in home directory (available across all projects)' },\r\n ],\r\n });\r\n\r\n if (p.isCancel(scope)) {\r\n p.cancel('Installation cancelled');\r\n await cleanup(tempDir);\r\n process.exit(0);\r\n }\r\n\r\n installGlobally = scope as boolean;\r\n }\r\n\r\n console.log();\r\n p.log.step(chalk.bold('Installation Summary'));\r\n\r\n for (const skill of selectedSkills) {\r\n p.log.message(` ${chalk.cyan(getSkillDisplayName(skill))}`);\r\n for (const agent of targetAgents) {\r\n const path = getInstallPath(skill.name, agent, { global: installGlobally });\r\n const installed = await isSkillInstalled(skill.name, agent, { global: installGlobally });\r\n const status = installed ? chalk.yellow(' (will overwrite)') : '';\r\n p.log.message(` ${chalk.dim('→')} ${agents[agent].displayName}: ${chalk.dim(path)}${status}`);\r\n }\r\n }\r\n console.log();\r\n\r\n if (!options.yes) {\r\n const confirmed = await p.confirm({ message: 'Proceed with installation?' });\r\n\r\n if (p.isCancel(confirmed) || !confirmed) {\r\n p.cancel('Installation cancelled');\r\n await cleanup(tempDir);\r\n process.exit(0);\r\n }\r\n }\r\n\r\n spinner.start('Installing skills...');\r\n\r\n const results: { skill: string; agent: string; success: boolean; path: string; error?: string }[] = [];\r\n\r\n for (const skill of selectedSkills) {\r\n for (const agent of targetAgents) {\r\n const result = await installSkillForAgent(skill, agent, { global: installGlobally });\r\n results.push({\r\n skill: getSkillDisplayName(skill),\r\n agent: agents[agent].displayName,\r\n ...result,\r\n });\r\n }\r\n }\r\n\r\n spinner.stop('Installation complete');\r\n\r\n console.log();\r\n const successful = results.filter(r => r.success);\r\n const failed = results.filter(r => !r.success);\r\n\r\n if (successful.length > 0) {\r\n p.log.success(chalk.green(`Successfully installed ${successful.length} skill${successful.length !== 1 ? 's' : ''}`));\r\n for (const r of successful) {\r\n p.log.message(` ${chalk.green('✓')} ${r.skill} → ${r.agent}`);\r\n p.log.message(` ${chalk.dim(r.path)}`);\r\n }\r\n }\r\n\r\n if (failed.length > 0) {\r\n console.log();\r\n p.log.error(chalk.red(`Failed to install ${failed.length} skill${failed.length !== 1 ? 's' : ''}`));\r\n for (const r of failed) {\r\n p.log.message(` ${chalk.red('✗')} ${r.skill} → ${r.agent}`);\r\n p.log.message(` ${chalk.dim(r.error)}`);\r\n }\r\n }\r\n\r\n console.log();\r\n p.outro(chalk.green('Done!'));\r\n } catch (error) {\r\n p.log.error(error instanceof Error ? error.message : 'Unknown error occurred');\r\n p.outro(chalk.red('Installation failed'));\r\n process.exit(1);\r\n } finally {\r\n await cleanup(tempDir);\r\n }\r\n}\r\n\r\nasync function cleanup(tempDir: string | null) {\r\n if (tempDir) {\r\n try {\r\n await cleanupTempDir(tempDir);\r\n } catch {\r\n // Ignore cleanup errors\r\n }\r\n }\r\n}\r\n\r\n// Parse CLI arguments\r\nprogram.parse();\r\n"
|
|
93
|
+
],
|
|
94
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGA,MAAM,uBAAuB,MAAM;AAAA,IAOjC,WAAW,CAAC,UAAU,MAAM,SAAS;AAAA,MACnC,MAAM,OAAO;AAAA,MAEb,MAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,MAC9C,KAAK,OAAO,KAAK,YAAY;AAAA,MAC7B,KAAK,OAAO;AAAA,MACZ,KAAK,WAAW;AAAA,MAChB,KAAK,cAAc;AAAA;AAAA,EAEvB;AAAA;AAAA,EAKA,MAAM,6BAA6B,eAAe;AAAA,IAKhD,WAAW,CAAC,SAAS;AAAA,MACnB,MAAM,GAAG,6BAA6B,OAAO;AAAA,MAE7C,MAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,MAC9C,KAAK,OAAO,KAAK,YAAY;AAAA;AAAA,EAEjC;AAAA,EAEQ,yBAAiB;AAAA,EACjB,+BAAuB;AAAA;;;;ECtC/B,MAAQ;AAAA;AAAA,EAER,MAAM,SAAS;AAAA,IAUb,WAAW,CAAC,MAAM,aAAa;AAAA,MAC7B,KAAK,cAAc,eAAe;AAAA,MAClC,KAAK,WAAW;AAAA,MAChB,KAAK,WAAW;AAAA,MAChB,KAAK,eAAe;AAAA,MACpB,KAAK,0BAA0B;AAAA,MAC/B,KAAK,aAAa;AAAA,MAElB,QAAQ,KAAK;AAAA,aACN;AAAA,UACH,KAAK,WAAW;AAAA,UAChB,KAAK,QAAQ,KAAK,MAAM,GAAG,EAAE;AAAA,UAC7B;AAAA,aACG;AAAA,UACH,KAAK,WAAW;AAAA,UAChB,KAAK,QAAQ,KAAK,MAAM,GAAG,EAAE;AAAA,UAC7B;AAAA;AAAA,UAEA,KAAK,WAAW;AAAA,UAChB,KAAK,QAAQ;AAAA,UACb;AAAA;AAAA,MAGJ,IAAI,KAAK,MAAM,SAAS,KAAK,KAAK,MAAM,MAAM,EAAE,MAAM,OAAO;AAAA,QAC3D,KAAK,WAAW;AAAA,QAChB,KAAK,QAAQ,KAAK,MAAM,MAAM,GAAG,EAAE;AAAA,MACrC;AAAA;AAAA,IASF,IAAI,GAAG;AAAA,MACL,OAAO,KAAK;AAAA;AAAA,IAOd,YAAY,CAAC,OAAO,UAAU;AAAA,MAC5B,IAAI,aAAa,KAAK,gBAAgB,CAAC,MAAM,QAAQ,QAAQ,GAAG;AAAA,QAC9D,OAAO,CAAC,KAAK;AAAA,MACf;AAAA,MAEA,OAAO,SAAS,OAAO,KAAK;AAAA;AAAA,IAW9B,OAAO,CAAC,OAAO,aAAa;AAAA,MAC1B,KAAK,eAAe;AAAA,MACpB,KAAK,0BAA0B;AAAA,MAC/B,OAAO;AAAA;AAAA,IAUT,SAAS,CAAC,IAAI;AAAA,MACZ,KAAK,WAAW;AAAA,MAChB,OAAO;AAAA;AAAA,IAUT,OAAO,CAAC,QAAQ;AAAA,MACd,KAAK,aAAa,OAAO,MAAM;AAAA,MAC/B,KAAK,WAAW,CAAC,KAAK,aAAa;AAAA,QACjC,IAAI,CAAC,KAAK,WAAW,SAAS,GAAG,GAAG;AAAA,UAClC,MAAM,IAAI,qBACR,uBAAuB,KAAK,WAAW,KAAK,IAAI,IAClD;AAAA,QACF;AAAA,QACA,IAAI,KAAK,UAAU;AAAA,UACjB,OAAO,KAAK,aAAa,KAAK,QAAQ;AAAA,QACxC;AAAA,QACA,OAAO;AAAA;AAAA,MAET,OAAO;AAAA;AAAA,IAQT,WAAW,GAAG;AAAA,MACZ,KAAK,WAAW;AAAA,MAChB,OAAO;AAAA;AAAA,IAQT,WAAW,GAAG;AAAA,MACZ,KAAK,WAAW;AAAA,MAChB,OAAO;AAAA;AAAA,EAEX;AAAA,EAUA,SAAS,oBAAoB,CAAC,KAAK;AAAA,IACjC,MAAM,aAAa,IAAI,KAAK,KAAK,IAAI,aAAa,OAAO,QAAQ;AAAA,IAEjE,OAAO,IAAI,WAAW,MAAM,aAAa,MAAM,MAAM,aAAa;AAAA;AAAA,EAG5D,mBAAW;AAAA,EACX,+BAAuB;AAAA;;;;ECpJ/B,MAAQ;AAAA;AAAA,EAWR,MAAM,KAAK;AAAA,IACT,WAAW,GAAG;AAAA,MACZ,KAAK,YAAY;AAAA,MACjB,KAAK,iBAAiB;AAAA,MACtB,KAAK,kBAAkB;AAAA,MACvB,KAAK,cAAc;AAAA,MACnB,KAAK,oBAAoB;AAAA;AAAA,IAW3B,cAAc,CAAC,gBAAgB;AAAA,MAC7B,KAAK,YAAY,KAAK,aAAa,eAAe,aAAa;AAAA;AAAA,IAUjE,eAAe,CAAC,KAAK;AAAA,MACnB,MAAM,kBAAkB,IAAI,SAAS,OAAO,CAAC,SAAQ,CAAC,KAAI,OAAO;AAAA,MACjE,MAAM,cAAc,IAAI,gBAAgB;AAAA,MACxC,IAAI,eAAe,CAAC,YAAY,SAAS;AAAA,QACvC,gBAAgB,KAAK,WAAW;AAAA,MAClC;AAAA,MACA,IAAI,KAAK,iBAAiB;AAAA,QACxB,gBAAgB,KAAK,CAAC,GAAG,MAAM;AAAA,UAE7B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC;AAAA,SACvC;AAAA,MACH;AAAA,MACA,OAAO;AAAA;AAAA,IAUT,cAAc,CAAC,GAAG,GAAG;AAAA,MACnB,MAAM,aAAa,CAAC,WAAW;AAAA,QAE7B,OAAO,OAAO,QACV,OAAO,MAAM,QAAQ,MAAM,EAAE,IAC7B,OAAO,KAAK,QAAQ,OAAO,EAAE;AAAA;AAAA,MAEnC,OAAO,WAAW,CAAC,EAAE,cAAc,WAAW,CAAC,CAAC;AAAA;AAAA,IAUlD,cAAc,CAAC,KAAK;AAAA,MAClB,MAAM,iBAAiB,IAAI,QAAQ,OAAO,CAAC,WAAW,CAAC,OAAO,MAAM;AAAA,MAEpE,MAAM,aAAa,IAAI,eAAe;AAAA,MACtC,IAAI,cAAc,CAAC,WAAW,QAAQ;AAAA,QAEpC,MAAM,cAAc,WAAW,SAAS,IAAI,YAAY,WAAW,KAAK;AAAA,QACxE,MAAM,aAAa,WAAW,QAAQ,IAAI,YAAY,WAAW,IAAI;AAAA,QACrE,IAAI,CAAC,eAAe,CAAC,YAAY;AAAA,UAC/B,eAAe,KAAK,UAAU;AAAA,QAChC,EAAO,SAAI,WAAW,QAAQ,CAAC,YAAY;AAAA,UACzC,eAAe,KACb,IAAI,aAAa,WAAW,MAAM,WAAW,WAAW,CAC1D;AAAA,QACF,EAAO,SAAI,WAAW,SAAS,CAAC,aAAa;AAAA,UAC3C,eAAe,KACb,IAAI,aAAa,WAAW,OAAO,WAAW,WAAW,CAC3D;AAAA,QACF;AAAA,MACF;AAAA,MACA,IAAI,KAAK,aAAa;AAAA,QACpB,eAAe,KAAK,KAAK,cAAc;AAAA,MACzC;AAAA,MACA,OAAO;AAAA;AAAA,IAUT,oBAAoB,CAAC,KAAK;AAAA,MACxB,IAAI,CAAC,KAAK;AAAA,QAAmB,OAAO,CAAC;AAAA,MAErC,MAAM,gBAAgB,CAAC;AAAA,MACvB,SACM,cAAc,IAAI,OACtB,aACA,cAAc,YAAY,QAC1B;AAAA,QACA,MAAM,iBAAiB,YAAY,QAAQ,OACzC,CAAC,WAAW,CAAC,OAAO,MACtB;AAAA,QACA,cAAc,KAAK,GAAG,cAAc;AAAA,MACtC;AAAA,MACA,IAAI,KAAK,aAAa;AAAA,QACpB,cAAc,KAAK,KAAK,cAAc;AAAA,MACxC;AAAA,MACA,OAAO;AAAA;AAAA,IAUT,gBAAgB,CAAC,KAAK;AAAA,MAEpB,IAAI,IAAI,kBAAkB;AAAA,QACxB,IAAI,oBAAoB,QAAQ,CAAC,aAAa;AAAA,UAC5C,SAAS,cACP,SAAS,eAAe,IAAI,iBAAiB,SAAS,KAAK,MAAM;AAAA,SACpE;AAAA,MACH;AAAA,MAGA,IAAI,IAAI,oBAAoB,KAAK,CAAC,aAAa,SAAS,WAAW,GAAG;AAAA,QACpE,OAAO,IAAI;AAAA,MACb;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,IAUV,cAAc,CAAC,KAAK;AAAA,MAElB,MAAM,OAAO,IAAI,oBACd,IAAI,CAAC,QAAQ,qBAAqB,GAAG,CAAC,EACtC,KAAK,GAAG;AAAA,MACX,OACE,IAAI,SACH,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAC1C,IAAI,QAAQ,SAAS,eAAe,OACpC,OAAO,MAAM,OAAO;AAAA;AAAA,IAWzB,UAAU,CAAC,QAAQ;AAAA,MACjB,OAAO,OAAO;AAAA;AAAA,IAUhB,YAAY,CAAC,UAAU;AAAA,MACrB,OAAO,SAAS,KAAK;AAAA;AAAA,IAWvB,2BAA2B,CAAC,KAAK,QAAQ;AAAA,MACvC,OAAO,OAAO,gBAAgB,GAAG,EAAE,OAAO,CAAC,KAAK,YAAY;AAAA,QAC1D,OAAO,KAAK,IACV,KACA,KAAK,aACH,OAAO,oBAAoB,OAAO,eAAe,OAAO,CAAC,CAC3D,CACF;AAAA,SACC,CAAC;AAAA;AAAA,IAWN,uBAAuB,CAAC,KAAK,QAAQ;AAAA,MACnC,OAAO,OAAO,eAAe,GAAG,EAAE,OAAO,CAAC,KAAK,WAAW;AAAA,QACxD,OAAO,KAAK,IACV,KACA,KAAK,aAAa,OAAO,gBAAgB,OAAO,WAAW,MAAM,CAAC,CAAC,CACrE;AAAA,SACC,CAAC;AAAA;AAAA,IAWN,6BAA6B,CAAC,KAAK,QAAQ;AAAA,MACzC,OAAO,OAAO,qBAAqB,GAAG,EAAE,OAAO,CAAC,KAAK,WAAW;AAAA,QAC9D,OAAO,KAAK,IACV,KACA,KAAK,aAAa,OAAO,gBAAgB,OAAO,WAAW,MAAM,CAAC,CAAC,CACrE;AAAA,SACC,CAAC;AAAA;AAAA,IAWN,yBAAyB,CAAC,KAAK,QAAQ;AAAA,MACrC,OAAO,OAAO,iBAAiB,GAAG,EAAE,OAAO,CAAC,KAAK,aAAa;AAAA,QAC5D,OAAO,KAAK,IACV,KACA,KAAK,aACH,OAAO,kBAAkB,OAAO,aAAa,QAAQ,CAAC,CACxD,CACF;AAAA,SACC,CAAC;AAAA;AAAA,IAUN,YAAY,CAAC,KAAK;AAAA,MAEhB,IAAI,UAAU,IAAI;AAAA,MAClB,IAAI,IAAI,SAAS,IAAI;AAAA,QACnB,UAAU,UAAU,MAAM,IAAI,SAAS;AAAA,MACzC;AAAA,MACA,IAAI,mBAAmB;AAAA,MACvB,SACM,cAAc,IAAI,OACtB,aACA,cAAc,YAAY,QAC1B;AAAA,QACA,mBAAmB,YAAY,KAAK,IAAI,MAAM;AAAA,MAChD;AAAA,MACA,OAAO,mBAAmB,UAAU,MAAM,IAAI,MAAM;AAAA;AAAA,IAUtD,kBAAkB,CAAC,KAAK;AAAA,MAEtB,OAAO,IAAI,YAAY;AAAA;AAAA,IAWzB,qBAAqB,CAAC,KAAK;AAAA,MAEzB,OAAO,IAAI,QAAQ,KAAK,IAAI,YAAY;AAAA;AAAA,IAU1C,iBAAiB,CAAC,QAAQ;AAAA,MACxB,MAAM,YAAY,CAAC;AAAA,MAEnB,IAAI,OAAO,YAAY;AAAA,QACrB,UAAU,KAER,YAAY,OAAO,WAAW,IAAI,CAAC,WAAW,KAAK,UAAU,MAAM,CAAC,EAAE,KAAK,IAAI,GACjF;AAAA,MACF;AAAA,MACA,IAAI,OAAO,iBAAiB,WAAW;AAAA,QAGrC,MAAM,cACJ,OAAO,YACP,OAAO,YACN,OAAO,UAAU,KAAK,OAAO,OAAO,iBAAiB;AAAA,QACxD,IAAI,aAAa;AAAA,UACf,UAAU,KACR,YAAY,OAAO,2BAA2B,KAAK,UAAU,OAAO,YAAY,GAClF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,OAAO,cAAc,aAAa,OAAO,UAAU;AAAA,QACrD,UAAU,KAAK,WAAW,KAAK,UAAU,OAAO,SAAS,GAAG;AAAA,MAC9D;AAAA,MACA,IAAI,OAAO,WAAW,WAAW;AAAA,QAC/B,UAAU,KAAK,QAAQ,OAAO,QAAQ;AAAA,MACxC;AAAA,MACA,IAAI,UAAU,SAAS,GAAG;AAAA,QACxB,OAAO,GAAG,OAAO,gBAAgB,UAAU,KAAK,IAAI;AAAA,MACtD;AAAA,MAEA,OAAO,OAAO;AAAA;AAAA,IAUhB,mBAAmB,CAAC,UAAU;AAAA,MAC5B,MAAM,YAAY,CAAC;AAAA,MACnB,IAAI,SAAS,YAAY;AAAA,QACvB,UAAU,KAER,YAAY,SAAS,WAAW,IAAI,CAAC,WAAW,KAAK,UAAU,MAAM,CAAC,EAAE,KAAK,IAAI,GACnF;AAAA,MACF;AAAA,MACA,IAAI,SAAS,iBAAiB,WAAW;AAAA,QACvC,UAAU,KACR,YAAY,SAAS,2BAA2B,KAAK,UAAU,SAAS,YAAY,GACtF;AAAA,MACF;AAAA,MACA,IAAI,UAAU,SAAS,GAAG;AAAA,QACxB,MAAM,mBAAmB,IAAI,UAAU,KAAK,IAAI;AAAA,QAChD,IAAI,SAAS,aAAa;AAAA,UACxB,OAAO,GAAG,SAAS,eAAe;AAAA,QACpC;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MACA,OAAO,SAAS;AAAA;AAAA,IAWlB,UAAU,CAAC,KAAK,QAAQ;AAAA,MACtB,MAAM,YAAY,OAAO,SAAS,KAAK,MAAM;AAAA,MAC7C,MAAM,YAAY,OAAO,aAAa;AAAA,MAEtC,SAAS,cAAc,CAAC,MAAM,aAAa;AAAA,QACzC,OAAO,OAAO,WAAW,MAAM,WAAW,aAAa,MAAM;AAAA;AAAA,MAI/D,IAAI,SAAS;AAAA,QACX,GAAG,OAAO,WAAW,QAAQ,KAAK,OAAO,WAAW,OAAO,aAAa,GAAG,CAAC;AAAA,QAC5E;AAAA,MACF;AAAA,MAGA,MAAM,qBAAqB,OAAO,mBAAmB,GAAG;AAAA,MACxD,IAAI,mBAAmB,SAAS,GAAG;AAAA,QACjC,SAAS,OAAO,OAAO;AAAA,UACrB,OAAO,QACL,OAAO,wBAAwB,kBAAkB,GACjD,SACF;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAGA,MAAM,eAAe,OAAO,iBAAiB,GAAG,EAAE,IAAI,CAAC,aAAa;AAAA,QAClE,OAAO,eACL,OAAO,kBAAkB,OAAO,aAAa,QAAQ,CAAC,GACtD,OAAO,yBAAyB,OAAO,oBAAoB,QAAQ,CAAC,CACtE;AAAA,OACD;AAAA,MACD,IAAI,aAAa,SAAS,GAAG;AAAA,QAC3B,SAAS,OAAO,OAAO;AAAA,UACrB,OAAO,WAAW,YAAY;AAAA,UAC9B,GAAG;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAGA,MAAM,aAAa,OAAO,eAAe,GAAG,EAAE,IAAI,CAAC,WAAW;AAAA,QAC5D,OAAO,eACL,OAAO,gBAAgB,OAAO,WAAW,MAAM,CAAC,GAChD,OAAO,uBAAuB,OAAO,kBAAkB,MAAM,CAAC,CAChE;AAAA,OACD;AAAA,MACD,IAAI,WAAW,SAAS,GAAG;AAAA,QACzB,SAAS,OAAO,OAAO;AAAA,UACrB,OAAO,WAAW,UAAU;AAAA,UAC5B,GAAG;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA,IAAI,OAAO,mBAAmB;AAAA,QAC5B,MAAM,mBAAmB,OACtB,qBAAqB,GAAG,EACxB,IAAI,CAAC,WAAW;AAAA,UACf,OAAO,eACL,OAAO,gBAAgB,OAAO,WAAW,MAAM,CAAC,GAChD,OAAO,uBAAuB,OAAO,kBAAkB,MAAM,CAAC,CAChE;AAAA,SACD;AAAA,QACH,IAAI,iBAAiB,SAAS,GAAG;AAAA,UAC/B,SAAS,OAAO,OAAO;AAAA,YACrB,OAAO,WAAW,iBAAiB;AAAA,YACnC,GAAG;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAGA,MAAM,cAAc,OAAO,gBAAgB,GAAG,EAAE,IAAI,CAAC,SAAQ;AAAA,QAC3D,OAAO,eACL,OAAO,oBAAoB,OAAO,eAAe,IAAG,CAAC,GACrD,OAAO,2BAA2B,OAAO,sBAAsB,IAAG,CAAC,CACrE;AAAA,OACD;AAAA,MACD,IAAI,YAAY,SAAS,GAAG;AAAA,QAC1B,SAAS,OAAO,OAAO;AAAA,UACrB,OAAO,WAAW,WAAW;AAAA,UAC7B,GAAG;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA,OAAO,OAAO,KAAK;AAAA,CAAI;AAAA;AAAA,IASzB,YAAY,CAAC,MAAK;AAAA,MAChB,OAAO,WAAW,IAAG,EAAE;AAAA;AAAA,IASzB,UAAU,CAAC,MAAK;AAAA,MACd,OAAO;AAAA;AAAA,IAGT,UAAU,CAAC,MAAK;AAAA,MAGd,OAAO,KACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS;AAAA,QACb,IAAI,SAAS;AAAA,UAAa,OAAO,KAAK,gBAAgB,IAAI;AAAA,QAC1D,IAAI,SAAS;AAAA,UAAa,OAAO,KAAK,oBAAoB,IAAI;AAAA,QAC9D,IAAI,KAAK,OAAO,OAAO,KAAK,OAAO;AAAA,UACjC,OAAO,KAAK,kBAAkB,IAAI;AAAA,QACpC,OAAO,KAAK,iBAAiB,IAAI;AAAA,OAClC,EACA,KAAK,GAAG;AAAA;AAAA,IAEb,uBAAuB,CAAC,MAAK;AAAA,MAC3B,OAAO,KAAK,qBAAqB,IAAG;AAAA;AAAA,IAEtC,sBAAsB,CAAC,MAAK;AAAA,MAC1B,OAAO,KAAK,qBAAqB,IAAG;AAAA;AAAA,IAEtC,0BAA0B,CAAC,MAAK;AAAA,MAC9B,OAAO,KAAK,qBAAqB,IAAG;AAAA;AAAA,IAEtC,wBAAwB,CAAC,MAAK;AAAA,MAC5B,OAAO,KAAK,qBAAqB,IAAG;AAAA;AAAA,IAEtC,oBAAoB,CAAC,MAAK;AAAA,MACxB,OAAO;AAAA;AAAA,IAET,eAAe,CAAC,MAAK;AAAA,MACnB,OAAO,KAAK,gBAAgB,IAAG;AAAA;AAAA,IAEjC,mBAAmB,CAAC,MAAK;AAAA,MAGvB,OAAO,KACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS;AAAA,QACb,IAAI,SAAS;AAAA,UAAa,OAAO,KAAK,gBAAgB,IAAI;AAAA,QAC1D,IAAI,KAAK,OAAO,OAAO,KAAK,OAAO;AAAA,UACjC,OAAO,KAAK,kBAAkB,IAAI;AAAA,QACpC,OAAO,KAAK,oBAAoB,IAAI;AAAA,OACrC,EACA,KAAK,GAAG;AAAA;AAAA,IAEb,iBAAiB,CAAC,MAAK;AAAA,MACrB,OAAO,KAAK,kBAAkB,IAAG;AAAA;AAAA,IAEnC,eAAe,CAAC,MAAK;AAAA,MACnB,OAAO;AAAA;AAAA,IAET,iBAAiB,CAAC,MAAK;AAAA,MACrB,OAAO;AAAA;AAAA,IAET,mBAAmB,CAAC,MAAK;AAAA,MACvB,OAAO;AAAA;AAAA,IAET,gBAAgB,CAAC,MAAK;AAAA,MACpB,OAAO;AAAA;AAAA,IAWT,QAAQ,CAAC,KAAK,QAAQ;AAAA,MACpB,OAAO,KAAK,IACV,OAAO,wBAAwB,KAAK,MAAM,GAC1C,OAAO,8BAA8B,KAAK,MAAM,GAChD,OAAO,4BAA4B,KAAK,MAAM,GAC9C,OAAO,0BAA0B,KAAK,MAAM,CAC9C;AAAA;AAAA,IASF,YAAY,CAAC,MAAK;AAAA,MAChB,OAAO,cAAc,KAAK,IAAG;AAAA;AAAA,IAgB/B,UAAU,CAAC,MAAM,WAAW,aAAa,QAAQ;AAAA,MAC/C,MAAM,aAAa;AAAA,MACnB,MAAM,gBAAgB,IAAI,OAAO,UAAU;AAAA,MAC3C,IAAI,CAAC;AAAA,QAAa,OAAO,gBAAgB;AAAA,MAGzC,MAAM,aAAa,KAAK,OACtB,YAAY,KAAK,SAAS,OAAO,aAAa,IAAI,CACpD;AAAA,MAGA,MAAM,cAAc;AAAA,MACpB,MAAM,YAAY,KAAK,aAAa;AAAA,MACpC,MAAM,iBAAiB,YAAY,YAAY,cAAc;AAAA,MAC7D,IAAI;AAAA,MACJ,IACE,iBAAiB,KAAK,kBACtB,OAAO,aAAa,WAAW,GAC/B;AAAA,QACA,uBAAuB;AAAA,MACzB,EAAO;AAAA,QACL,MAAM,qBAAqB,OAAO,QAAQ,aAAa,cAAc;AAAA,QACrE,uBAAuB,mBAAmB,QACxC,OACA;AAAA,IAAO,IAAI,OAAO,YAAY,WAAW,CAC3C;AAAA;AAAA,MAIF,OACE,gBACA,aACA,IAAI,OAAO,WAAW,IACtB,qBAAqB,QAAQ,OAAO;AAAA,EAAK,eAAe;AAAA;AAAA,IAY5D,OAAO,CAAC,MAAK,OAAO;AAAA,MAClB,IAAI,QAAQ,KAAK;AAAA,QAAgB,OAAO;AAAA,MAExC,MAAM,WAAW,KAAI,MAAM,SAAS;AAAA,MAEpC,MAAM,eAAe;AAAA,MACrB,MAAM,eAAe,CAAC;AAAA,MACtB,SAAS,QAAQ,CAAC,SAAS;AAAA,QACzB,MAAM,SAAS,KAAK,MAAM,YAAY;AAAA,QACtC,IAAI,WAAW,MAAM;AAAA,UACnB,aAAa,KAAK,EAAE;AAAA,UACpB;AAAA,QACF;AAAA,QAEA,IAAI,YAAY,CAAC,OAAO,MAAM,CAAC;AAAA,QAC/B,IAAI,WAAW,KAAK,aAAa,UAAU,EAAE;AAAA,QAC7C,OAAO,QAAQ,CAAC,UAAU;AAAA,UACxB,MAAM,eAAe,KAAK,aAAa,KAAK;AAAA,UAE5C,IAAI,WAAW,gBAAgB,OAAO;AAAA,YACpC,UAAU,KAAK,KAAK;AAAA,YACpB,YAAY;AAAA,YACZ;AAAA,UACF;AAAA,UACA,aAAa,KAAK,UAAU,KAAK,EAAE,CAAC;AAAA,UAEpC,MAAM,YAAY,MAAM,UAAU;AAAA,UAClC,YAAY,CAAC,SAAS;AAAA,UACtB,WAAW,KAAK,aAAa,SAAS;AAAA,SACvC;AAAA,QACD,aAAa,KAAK,UAAU,KAAK,EAAE,CAAC;AAAA,OACrC;AAAA,MAED,OAAO,aAAa,KAAK;AAAA,CAAI;AAAA;AAAA,EAEjC;AAAA,EAUA,SAAS,UAAU,CAAC,MAAK;AAAA,IAEvB,MAAM,aAAa;AAAA,IACnB,OAAO,KAAI,QAAQ,YAAY,EAAE;AAAA;AAAA,EAG3B,eAAO;AAAA,EACP,qBAAa;AAAA;;;;ECpsBrB,MAAQ;AAAA;AAAA,EAER,MAAM,OAAO;AAAA,IAQX,WAAW,CAAC,OAAO,aAAa;AAAA,MAC9B,KAAK,QAAQ;AAAA,MACb,KAAK,cAAc,eAAe;AAAA,MAElC,KAAK,WAAW,MAAM,SAAS,GAAG;AAAA,MAClC,KAAK,WAAW,MAAM,SAAS,GAAG;AAAA,MAElC,KAAK,WAAW,iBAAiB,KAAK,KAAK;AAAA,MAC3C,KAAK,YAAY;AAAA,MACjB,MAAM,cAAc,iBAAiB,KAAK;AAAA,MAC1C,KAAK,QAAQ,YAAY;AAAA,MACzB,KAAK,OAAO,YAAY;AAAA,MACxB,KAAK,SAAS;AAAA,MACd,IAAI,KAAK,MAAM;AAAA,QACb,KAAK,SAAS,KAAK,KAAK,WAAW,OAAO;AAAA,MAC5C;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,0BAA0B;AAAA,MAC/B,KAAK,YAAY;AAAA,MACjB,KAAK,SAAS;AAAA,MACd,KAAK,WAAW;AAAA,MAChB,KAAK,SAAS;AAAA,MACd,KAAK,aAAa;AAAA,MAClB,KAAK,gBAAgB,CAAC;AAAA,MACtB,KAAK,UAAU;AAAA;AAAA,IAWjB,OAAO,CAAC,OAAO,aAAa;AAAA,MAC1B,KAAK,eAAe;AAAA,MACpB,KAAK,0BAA0B;AAAA,MAC/B,OAAO;AAAA;AAAA,IAeT,MAAM,CAAC,KAAK;AAAA,MACV,KAAK,YAAY;AAAA,MACjB,OAAO;AAAA;AAAA,IAeT,SAAS,CAAC,OAAO;AAAA,MACf,KAAK,gBAAgB,KAAK,cAAc,OAAO,KAAK;AAAA,MACpD,OAAO;AAAA;AAAA,IAgBT,OAAO,CAAC,qBAAqB;AAAA,MAC3B,IAAI,aAAa;AAAA,MACjB,IAAI,OAAO,wBAAwB,UAAU;AAAA,QAE3C,aAAa,GAAG,sBAAsB,KAAK;AAAA,MAC7C;AAAA,MACA,KAAK,UAAU,OAAO,OAAO,KAAK,WAAW,CAAC,GAAG,UAAU;AAAA,MAC3D,OAAO;AAAA;AAAA,IAaT,GAAG,CAAC,MAAM;AAAA,MACR,KAAK,SAAS;AAAA,MACd,OAAO;AAAA;AAAA,IAUT,SAAS,CAAC,IAAI;AAAA,MACZ,KAAK,WAAW;AAAA,MAChB,OAAO;AAAA;AAAA,IAUT,mBAAmB,CAAC,YAAY,MAAM;AAAA,MACpC,KAAK,YAAY,CAAC,CAAC;AAAA,MACnB,OAAO;AAAA;AAAA,IAUT,QAAQ,CAAC,OAAO,MAAM;AAAA,MACpB,KAAK,SAAS,CAAC,CAAC;AAAA,MAChB,OAAO;AAAA;AAAA,IAOT,YAAY,CAAC,OAAO,UAAU;AAAA,MAC5B,IAAI,aAAa,KAAK,gBAAgB,CAAC,MAAM,QAAQ,QAAQ,GAAG;AAAA,QAC9D,OAAO,CAAC,KAAK;AAAA,MACf;AAAA,MAEA,OAAO,SAAS,OAAO,KAAK;AAAA;AAAA,IAU9B,OAAO,CAAC,QAAQ;AAAA,MACd,KAAK,aAAa,OAAO,MAAM;AAAA,MAC/B,KAAK,WAAW,CAAC,KAAK,aAAa;AAAA,QACjC,IAAI,CAAC,KAAK,WAAW,SAAS,GAAG,GAAG;AAAA,UAClC,MAAM,IAAI,qBACR,uBAAuB,KAAK,WAAW,KAAK,IAAI,IAClD;AAAA,QACF;AAAA,QACA,IAAI,KAAK,UAAU;AAAA,UACjB,OAAO,KAAK,aAAa,KAAK,QAAQ;AAAA,QACxC;AAAA,QACA,OAAO;AAAA;AAAA,MAET,OAAO;AAAA;AAAA,IAST,IAAI,GAAG;AAAA,MACL,IAAI,KAAK,MAAM;AAAA,QACb,OAAO,KAAK,KAAK,QAAQ,OAAO,EAAE;AAAA,MACpC;AAAA,MACA,OAAO,KAAK,MAAM,QAAQ,MAAM,EAAE;AAAA;AAAA,IAUpC,aAAa,GAAG;AAAA,MACd,IAAI,KAAK,QAAQ;AAAA,QACf,OAAO,UAAU,KAAK,KAAK,EAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,MAClD;AAAA,MACA,OAAO,UAAU,KAAK,KAAK,CAAC;AAAA;AAAA,IAW9B,EAAE,CAAC,KAAK;AAAA,MACN,OAAO,KAAK,UAAU,OAAO,KAAK,SAAS;AAAA;AAAA,IAY7C,SAAS,GAAG;AAAA,MACV,OAAO,CAAC,KAAK,YAAY,CAAC,KAAK,YAAY,CAAC,KAAK;AAAA;AAAA,EAErD;AAAA;AAAA,EASA,MAAM,YAAY;AAAA,IAIhB,WAAW,CAAC,UAAS;AAAA,MACnB,KAAK,kBAAkB,IAAI;AAAA,MAC3B,KAAK,kBAAkB,IAAI;AAAA,MAC3B,KAAK,cAAc,IAAI;AAAA,MACvB,SAAQ,QAAQ,CAAC,WAAW;AAAA,QAC1B,IAAI,OAAO,QAAQ;AAAA,UACjB,KAAK,gBAAgB,IAAI,OAAO,cAAc,GAAG,MAAM;AAAA,QACzD,EAAO;AAAA,UACL,KAAK,gBAAgB,IAAI,OAAO,cAAc,GAAG,MAAM;AAAA;AAAA,OAE1D;AAAA,MACD,KAAK,gBAAgB,QAAQ,CAAC,OAAO,QAAQ;AAAA,QAC3C,IAAI,KAAK,gBAAgB,IAAI,GAAG,GAAG;AAAA,UACjC,KAAK,YAAY,IAAI,GAAG;AAAA,QAC1B;AAAA,OACD;AAAA;AAAA,IAUH,eAAe,CAAC,OAAO,QAAQ;AAAA,MAC7B,MAAM,YAAY,OAAO,cAAc;AAAA,MACvC,IAAI,CAAC,KAAK,YAAY,IAAI,SAAS;AAAA,QAAG,OAAO;AAAA,MAG7C,MAAM,SAAS,KAAK,gBAAgB,IAAI,SAAS,EAAE;AAAA,MACnD,MAAM,gBAAgB,WAAW,YAAY,SAAS;AAAA,MACtD,OAAO,OAAO,YAAY,kBAAkB;AAAA;AAAA,EAEhD;AAAA,EAUA,SAAS,SAAS,CAAC,MAAK;AAAA,IACtB,OAAO,KAAI,MAAM,GAAG,EAAE,OAAO,CAAC,MAAK,SAAS;AAAA,MAC1C,OAAO,OAAM,KAAK,GAAG,YAAY,IAAI,KAAK,MAAM,CAAC;AAAA,KAClD;AAAA;AAAA,EASH,SAAS,gBAAgB,CAAC,OAAO;AAAA,IAC/B,IAAI;AAAA,IACJ,IAAI;AAAA,IAEJ,MAAM,eAAe;AAAA,IAErB,MAAM,cAAc;AAAA,IAEpB,MAAM,YAAY,MAAM,MAAM,QAAQ,EAAE,OAAO,OAAO;AAAA,IAEtD,IAAI,aAAa,KAAK,UAAU,EAAE;AAAA,MAAG,YAAY,UAAU,MAAM;AAAA,IACjE,IAAI,YAAY,KAAK,UAAU,EAAE;AAAA,MAAG,WAAW,UAAU,MAAM;AAAA,IAE/D,IAAI,CAAC,aAAa,aAAa,KAAK,UAAU,EAAE;AAAA,MAC9C,YAAY,UAAU,MAAM;AAAA,IAG9B,IAAI,CAAC,aAAa,YAAY,KAAK,UAAU,EAAE,GAAG;AAAA,MAChD,YAAY;AAAA,MACZ,WAAW,UAAU,MAAM;AAAA,IAC7B;AAAA,IAGA,IAAI,UAAU,GAAG,WAAW,GAAG,GAAG;AAAA,MAChC,MAAM,kBAAkB,UAAU;AAAA,MAClC,MAAM,YAAY,kCAAkC,qCAAqC;AAAA,MACzF,IAAI,aAAa,KAAK,eAAe;AAAA,QACnC,MAAM,IAAI,MACR,GAAG;AAAA;AAAA;AAAA,wFAIL;AAAA,MACF,IAAI,aAAa,KAAK,eAAe;AAAA,QACnC,MAAM,IAAI,MAAM,GAAG;AAAA,uBACF;AAAA,MACnB,IAAI,YAAY,KAAK,eAAe;AAAA,QAClC,MAAM,IAAI,MAAM,GAAG;AAAA,sBACH;AAAA,MAElB,MAAM,IAAI,MAAM,GAAG;AAAA,2BACI;AAAA,IACzB;AAAA,IACA,IAAI,cAAc,aAAa,aAAa;AAAA,MAC1C,MAAM,IAAI,MACR,oDAAoD,SACtD;AAAA,IAEF,OAAO,EAAE,WAAW,SAAS;AAAA;AAAA,EAGvB,iBAAS;AAAA,EACT,sBAAc;AAAA;;;;EC9WtB,IAAM,cAAc;AAAA,EAEpB,SAAS,YAAY,CAAC,GAAG,GAAG;AAAA,IAM1B,IAAI,KAAK,IAAI,EAAE,SAAS,EAAE,MAAM,IAAI;AAAA,MAClC,OAAO,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM;AAAA,IAGpC,MAAM,IAAI,CAAC;AAAA,IAGX,SAAS,IAAI,EAAG,KAAK,EAAE,QAAQ,KAAK;AAAA,MAClC,EAAE,KAAK,CAAC,CAAC;AAAA,IACX;AAAA,IAEA,SAAS,IAAI,EAAG,KAAK,EAAE,QAAQ,KAAK;AAAA,MAClC,EAAE,GAAG,KAAK;AAAA,IACZ;AAAA,IAGA,SAAS,IAAI,EAAG,KAAK,EAAE,QAAQ,KAAK;AAAA,MAClC,SAAS,IAAI,EAAG,KAAK,EAAE,QAAQ,KAAK;AAAA,QAClC,IAAI,OAAO;AAAA,QACX,IAAI,EAAE,IAAI,OAAO,EAAE,IAAI,IAAI;AAAA,UACzB,OAAO;AAAA,QACT,EAAO;AAAA,UACL,OAAO;AAAA;AAAA,QAET,EAAE,GAAG,KAAK,KAAK,IACb,EAAE,IAAI,GAAG,KAAK,GACd,EAAE,GAAG,IAAI,KAAK,GACd,EAAE,IAAI,GAAG,IAAI,KAAK,IACpB;AAAA,QAEA,IAAI,IAAI,KAAK,IAAI,KAAK,EAAE,IAAI,OAAO,EAAE,IAAI,MAAM,EAAE,IAAI,OAAO,EAAE,IAAI,IAAI;AAAA,UACpE,EAAE,GAAG,KAAK,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC;AAAA,QACjD;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO,EAAE,EAAE,QAAQ,EAAE;AAAA;AAAA,EAWvB,SAAS,cAAc,CAAC,MAAM,YAAY;AAAA,IACxC,IAAI,CAAC,cAAc,WAAW,WAAW;AAAA,MAAG,OAAO;AAAA,IAEnD,aAAa,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC;AAAA,IAE3C,MAAM,mBAAmB,KAAK,WAAW,IAAI;AAAA,IAC7C,IAAI,kBAAkB;AAAA,MACpB,OAAO,KAAK,MAAM,CAAC;AAAA,MACnB,aAAa,WAAW,IAAI,CAAC,cAAc,UAAU,MAAM,CAAC,CAAC;AAAA,IAC/D;AAAA,IAEA,IAAI,UAAU,CAAC;AAAA,IACf,IAAI,eAAe;AAAA,IACnB,MAAM,gBAAgB;AAAA,IACtB,WAAW,QAAQ,CAAC,cAAc;AAAA,MAChC,IAAI,UAAU,UAAU;AAAA,QAAG;AAAA,MAE3B,MAAM,WAAW,aAAa,MAAM,SAAS;AAAA,MAC7C,MAAM,SAAS,KAAK,IAAI,KAAK,QAAQ,UAAU,MAAM;AAAA,MACrD,MAAM,cAAc,SAAS,YAAY;AAAA,MACzC,IAAI,aAAa,eAAe;AAAA,QAC9B,IAAI,WAAW,cAAc;AAAA,UAE3B,eAAe;AAAA,UACf,UAAU,CAAC,SAAS;AAAA,QACtB,EAAO,SAAI,aAAa,cAAc;AAAA,UACpC,QAAQ,KAAK,SAAS;AAAA,QACxB;AAAA,MACF;AAAA,KACD;AAAA,IAED,QAAQ,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA,IACzC,IAAI,kBAAkB;AAAA,MACpB,UAAU,QAAQ,IAAI,CAAC,cAAc,KAAK,WAAW;AAAA,IACvD;AAAA,IAEA,IAAI,QAAQ,SAAS,GAAG;AAAA,MACtB,OAAO;AAAA,uBAA0B,QAAQ,KAAK,IAAI;AAAA,IACpD;AAAA,IACA,IAAI,QAAQ,WAAW,GAAG;AAAA,MACxB,OAAO;AAAA,gBAAmB,QAAQ;AAAA,IACpC;AAAA,IACA,OAAO;AAAA;AAAA,EAGD,yBAAiB;AAAA;;;;ECpGzB,IAAM,wCAAsC;AAAA,EAC5C,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EAEN,MAAQ,UAAU;AAAA,EAClB,MAAQ;AAAA,EACR,MAAQ,MAAM;AAAA,EACd,MAAQ,QAAQ;AAAA,EAChB,MAAQ;AAAA;AAAA,EAER,MAAM,gBAAgB,aAAa;AAAA,IAOjC,WAAW,CAAC,MAAM;AAAA,MAChB,MAAM;AAAA,MAEN,KAAK,WAAW,CAAC;AAAA,MAEjB,KAAK,UAAU,CAAC;AAAA,MAChB,KAAK,SAAS;AAAA,MACd,KAAK,sBAAsB;AAAA,MAC3B,KAAK,wBAAwB;AAAA,MAE7B,KAAK,sBAAsB,CAAC;AAAA,MAC5B,KAAK,QAAQ,KAAK;AAAA,MAElB,KAAK,OAAO,CAAC;AAAA,MACb,KAAK,UAAU,CAAC;AAAA,MAChB,KAAK,gBAAgB,CAAC;AAAA,MACtB,KAAK,cAAc;AAAA,MACnB,KAAK,QAAQ,QAAQ;AAAA,MACrB,KAAK,gBAAgB,CAAC;AAAA,MACtB,KAAK,sBAAsB,CAAC;AAAA,MAC5B,KAAK,4BAA4B;AAAA,MACjC,KAAK,iBAAiB;AAAA,MACtB,KAAK,qBAAqB;AAAA,MAC1B,KAAK,kBAAkB;AAAA,MACvB,KAAK,iBAAiB;AAAA,MACtB,KAAK,sBAAsB;AAAA,MAC3B,KAAK,gBAAgB;AAAA,MACrB,KAAK,WAAW,CAAC;AAAA,MACjB,KAAK,+BAA+B;AAAA,MACpC,KAAK,eAAe;AAAA,MACpB,KAAK,WAAW;AAAA,MAChB,KAAK,mBAAmB;AAAA,MACxB,KAAK,2BAA2B;AAAA,MAChC,KAAK,sBAAsB;AAAA,MAC3B,KAAK,kBAAkB,CAAC;AAAA,MAExB,KAAK,sBAAsB;AAAA,MAC3B,KAAK,4BAA4B;AAAA,MACjC,KAAK,cAAc;AAAA,MAGnB,KAAK,uBAAuB;AAAA,QAC1B,UAAU,CAAC,SAAQ,SAAQ,OAAO,MAAM,IAAG;AAAA,QAC3C,UAAU,CAAC,SAAQ,SAAQ,OAAO,MAAM,IAAG;AAAA,QAC3C,aAAa,CAAC,MAAK,UAAU,MAAM,IAAG;AAAA,QACtC,iBAAiB,MACf,SAAQ,OAAO,QAAQ,SAAQ,OAAO,UAAU;AAAA,QAClD,iBAAiB,MACf,SAAQ,OAAO,QAAQ,SAAQ,OAAO,UAAU;AAAA,QAClD,iBAAiB,MACf,SAAS,MAAM,SAAQ,OAAO,SAAS,SAAQ,OAAO,YAAY;AAAA,QACpE,iBAAiB,MACf,SAAS,MAAM,SAAQ,OAAO,SAAS,SAAQ,OAAO,YAAY;AAAA,QACpE,YAAY,CAAC,SAAQ,WAAW,IAAG;AAAA,MACrC;AAAA,MAEA,KAAK,UAAU;AAAA,MAEf,KAAK,cAAc;AAAA,MACnB,KAAK,0BAA0B;AAAA,MAE/B,KAAK,eAAe;AAAA,MACpB,KAAK,qBAAqB,CAAC;AAAA;AAAA,IAW7B,qBAAqB,CAAC,eAAe;AAAA,MACnC,KAAK,uBAAuB,cAAc;AAAA,MAC1C,KAAK,cAAc,cAAc;AAAA,MACjC,KAAK,eAAe,cAAc;AAAA,MAClC,KAAK,qBAAqB,cAAc;AAAA,MACxC,KAAK,gBAAgB,cAAc;AAAA,MACnC,KAAK,4BAA4B,cAAc;AAAA,MAC/C,KAAK,+BACH,cAAc;AAAA,MAChB,KAAK,wBAAwB,cAAc;AAAA,MAC3C,KAAK,2BAA2B,cAAc;AAAA,MAC9C,KAAK,sBAAsB,cAAc;AAAA,MACzC,KAAK,4BAA4B,cAAc;AAAA,MAE/C,OAAO;AAAA;AAAA,IAQT,uBAAuB,GAAG;AAAA,MACxB,MAAM,SAAS,CAAC;AAAA,MAEhB,SAAS,UAAU,KAAM,SAAS,UAAU,QAAQ,QAAQ;AAAA,QAC1D,OAAO,KAAK,OAAO;AAAA,MACrB;AAAA,MACA,OAAO;AAAA;AAAA,IA4BT,OAAO,CAAC,aAAa,sBAAsB,UAAU;AAAA,MACnD,IAAI,OAAO;AAAA,MACX,IAAI,OAAO;AAAA,MACX,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAAA,QAC7C,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,MACA,OAAO,QAAQ,CAAC;AAAA,MAChB,SAAS,MAAM,QAAQ,YAAY,MAAM,eAAe;AAAA,MAExD,MAAM,MAAM,KAAK,cAAc,IAAI;AAAA,MACnC,IAAI,MAAM;AAAA,QACR,IAAI,YAAY,IAAI;AAAA,QACpB,IAAI,qBAAqB;AAAA,MAC3B;AAAA,MACA,IAAI,KAAK;AAAA,QAAW,KAAK,sBAAsB,IAAI;AAAA,MACnD,IAAI,UAAU,CAAC,EAAE,KAAK,UAAU,KAAK;AAAA,MACrC,IAAI,kBAAkB,KAAK,kBAAkB;AAAA,MAC7C,IAAI;AAAA,QAAM,IAAI,UAAU,IAAI;AAAA,MAC5B,KAAK,iBAAiB,GAAG;AAAA,MACzB,IAAI,SAAS;AAAA,MACb,IAAI,sBAAsB,IAAI;AAAA,MAE9B,IAAI;AAAA,QAAM,OAAO;AAAA,MACjB,OAAO;AAAA;AAAA,IAaT,aAAa,CAAC,MAAM;AAAA,MAClB,OAAO,IAAI,QAAQ,IAAI;AAAA;AAAA,IAUzB,UAAU,GAAG;AAAA,MACX,OAAO,OAAO,OAAO,IAAI,MAAQ,KAAK,cAAc,CAAC;AAAA;AAAA,IAWvD,aAAa,CAAC,eAAe;AAAA,MAC3B,IAAI,kBAAkB;AAAA,QAAW,OAAO,KAAK;AAAA,MAE7C,KAAK,qBAAqB;AAAA,MAC1B,OAAO;AAAA;AAAA,IA0BT,eAAe,CAAC,eAAe;AAAA,MAC7B,IAAI,kBAAkB;AAAA,QAAW,OAAO,KAAK;AAAA,MAE7C,OAAO,OAAO,KAAK,sBAAsB,aAAa;AAAA,MACtD,OAAO;AAAA;AAAA,IAST,kBAAkB,CAAC,cAAc,MAAM;AAAA,MACrC,IAAI,OAAO,gBAAgB;AAAA,QAAU,cAAc,CAAC,CAAC;AAAA,MACrD,KAAK,sBAAsB;AAAA,MAC3B,OAAO;AAAA;AAAA,IAST,wBAAwB,CAAC,oBAAoB,MAAM;AAAA,MACjD,KAAK,4BAA4B,CAAC,CAAC;AAAA,MACnC,OAAO;AAAA;AAAA,IAaT,UAAU,CAAC,KAAK,MAAM;AAAA,MACpB,IAAI,CAAC,IAAI,OAAO;AAAA,QACd,MAAM,IAAI,MAAM;AAAA,2DACqC;AAAA,MACvD;AAAA,MAEA,OAAO,QAAQ,CAAC;AAAA,MAChB,IAAI,KAAK;AAAA,QAAW,KAAK,sBAAsB,IAAI;AAAA,MACnD,IAAI,KAAK,UAAU,KAAK;AAAA,QAAQ,IAAI,UAAU;AAAA,MAE9C,KAAK,iBAAiB,GAAG;AAAA,MACzB,IAAI,SAAS;AAAA,MACb,IAAI,2BAA2B;AAAA,MAE/B,OAAO;AAAA;AAAA,IAcT,cAAc,CAAC,MAAM,aAAa;AAAA,MAChC,OAAO,IAAI,SAAS,MAAM,WAAW;AAAA;AAAA,IAmBvC,QAAQ,CAAC,MAAM,aAAa,IAAI,cAAc;AAAA,MAC5C,MAAM,WAAW,KAAK,eAAe,MAAM,WAAW;AAAA,MACtD,IAAI,OAAO,OAAO,YAAY;AAAA,QAC5B,SAAS,QAAQ,YAAY,EAAE,UAAU,EAAE;AAAA,MAC7C,EAAO;AAAA,QACL,SAAS,QAAQ,EAAE;AAAA;AAAA,MAErB,KAAK,YAAY,QAAQ;AAAA,MACzB,OAAO;AAAA;AAAA,IAeT,SAAS,CAAC,OAAO;AAAA,MACf,MACG,KAAK,EACL,MAAM,IAAI,EACV,QAAQ,CAAC,WAAW;AAAA,QACnB,KAAK,SAAS,MAAM;AAAA,OACrB;AAAA,MACH,OAAO;AAAA;AAAA,IAST,WAAW,CAAC,UAAU;AAAA,MACpB,MAAM,mBAAmB,KAAK,oBAAoB,MAAM,EAAE,EAAE;AAAA,MAC5D,IAAI,oBAAoB,iBAAiB,UAAU;AAAA,QACjD,MAAM,IAAI,MACR,2CAA2C,iBAAiB,KAAK,IACnE;AAAA,MACF;AAAA,MACA,IACE,SAAS,YACT,SAAS,iBAAiB,aAC1B,SAAS,aAAa,WACtB;AAAA,QACA,MAAM,IAAI,MACR,2DAA2D,SAAS,KAAK,IAC3E;AAAA,MACF;AAAA,MACA,KAAK,oBAAoB,KAAK,QAAQ;AAAA,MACtC,OAAO;AAAA;AAAA,IAiBT,WAAW,CAAC,qBAAqB,aAAa;AAAA,MAC5C,IAAI,OAAO,wBAAwB,WAAW;AAAA,QAC5C,KAAK,0BAA0B;AAAA,QAC/B,OAAO;AAAA,MACT;AAAA,MAEA,sBAAsB,uBAAuB;AAAA,MAC7C,SAAS,UAAU,YAAY,oBAAoB,MAAM,eAAe;AAAA,MACxE,MAAM,kBAAkB,eAAe;AAAA,MAEvC,MAAM,cAAc,KAAK,cAAc,QAAQ;AAAA,MAC/C,YAAY,WAAW,KAAK;AAAA,MAC5B,IAAI;AAAA,QAAU,YAAY,UAAU,QAAQ;AAAA,MAC5C,IAAI;AAAA,QAAiB,YAAY,YAAY,eAAe;AAAA,MAE5D,KAAK,0BAA0B;AAAA,MAC/B,KAAK,eAAe;AAAA,MAEpB,OAAO;AAAA;AAAA,IAUT,cAAc,CAAC,aAAa,uBAAuB;AAAA,MAGjD,IAAI,OAAO,gBAAgB,UAAU;AAAA,QACnC,KAAK,YAAY,aAAa,qBAAqB;AAAA,QACnD,OAAO;AAAA,MACT;AAAA,MAEA,KAAK,0BAA0B;AAAA,MAC/B,KAAK,eAAe;AAAA,MACpB,OAAO;AAAA;AAAA,IAST,eAAe,GAAG;AAAA,MAChB,MAAM,yBACJ,KAAK,4BACJ,KAAK,SAAS,UACb,CAAC,KAAK,kBACN,CAAC,KAAK,aAAa,MAAM;AAAA,MAE7B,IAAI,wBAAwB;AAAA,QAC1B,IAAI,KAAK,iBAAiB,WAAW;AAAA,UACnC,KAAK,YAAY,WAAW,SAAS;AAAA,QACvC;AAAA,QACA,OAAO,KAAK;AAAA,MACd;AAAA,MACA,OAAO;AAAA;AAAA,IAWT,IAAI,CAAC,OAAO,UAAU;AAAA,MACpB,MAAM,gBAAgB,CAAC,iBAAiB,aAAa,YAAY;AAAA,MACjE,IAAI,CAAC,cAAc,SAAS,KAAK,GAAG;AAAA,QAClC,MAAM,IAAI,MAAM,gDAAgD;AAAA,oBAClD,cAAc,KAAK,MAAM,IAAI;AAAA,MAC7C;AAAA,MACA,IAAI,KAAK,gBAAgB,QAAQ;AAAA,QAC/B,KAAK,gBAAgB,OAAO,KAAK,QAAQ;AAAA,MAC3C,EAAO;AAAA,QACL,KAAK,gBAAgB,SAAS,CAAC,QAAQ;AAAA;AAAA,MAEzC,OAAO;AAAA;AAAA,IAUT,YAAY,CAAC,IAAI;AAAA,MACf,IAAI,IAAI;AAAA,QACN,KAAK,gBAAgB;AAAA,MACvB,EAAO;AAAA,QACL,KAAK,gBAAgB,CAAC,QAAQ;AAAA,UAC5B,IAAI,IAAI,SAAS,oCAAoC;AAAA,YACnD,MAAM;AAAA,UACR,EAAO;AAAA;AAAA;AAAA,MAKX,OAAO;AAAA;AAAA,IAaT,KAAK,CAAC,UAAU,MAAM,SAAS;AAAA,MAC7B,IAAI,KAAK,eAAe;AAAA,QACtB,KAAK,cAAc,IAAI,eAAe,UAAU,MAAM,OAAO,CAAC;AAAA,MAEhE;AAAA,MACA,SAAQ,KAAK,QAAQ;AAAA;AAAA,IAkBvB,MAAM,CAAC,IAAI;AAAA,MACT,MAAM,WAAW,CAAC,SAAS;AAAA,QAEzB,MAAM,oBAAoB,KAAK,oBAAoB;AAAA,QACnD,MAAM,aAAa,KAAK,MAAM,GAAG,iBAAiB;AAAA,QAClD,IAAI,KAAK,2BAA2B;AAAA,UAClC,WAAW,qBAAqB;AAAA,QAClC,EAAO;AAAA,UACL,WAAW,qBAAqB,KAAK,KAAK;AAAA;AAAA,QAE5C,WAAW,KAAK,IAAI;AAAA,QAEpB,OAAO,GAAG,MAAM,MAAM,UAAU;AAAA;AAAA,MAElC,KAAK,iBAAiB;AAAA,MACtB,OAAO;AAAA;AAAA,IAcT,YAAY,CAAC,OAAO,aAAa;AAAA,MAC/B,OAAO,IAAI,OAAO,OAAO,WAAW;AAAA;AAAA,IAatC,aAAa,CAAC,QAAQ,OAAO,UAAU,wBAAwB;AAAA,MAC7D,IAAI;AAAA,QACF,OAAO,OAAO,SAAS,OAAO,QAAQ;AAAA,QACtC,OAAO,KAAK;AAAA,QACZ,IAAI,IAAI,SAAS,6BAA6B;AAAA,UAC5C,MAAM,UAAU,GAAG,0BAA0B,IAAI;AAAA,UACjD,KAAK,MAAM,SAAS,EAAE,UAAU,IAAI,UAAU,MAAM,IAAI,KAAK,CAAC;AAAA,QAChE;AAAA,QACA,MAAM;AAAA;AAAA;AAAA,IAYV,eAAe,CAAC,QAAQ;AAAA,MACtB,MAAM,iBACH,OAAO,SAAS,KAAK,YAAY,OAAO,KAAK,KAC7C,OAAO,QAAQ,KAAK,YAAY,OAAO,IAAI;AAAA,MAC9C,IAAI,gBAAgB;AAAA,QAClB,MAAM,eACJ,OAAO,QAAQ,KAAK,YAAY,OAAO,IAAI,IACvC,OAAO,OACP,OAAO;AAAA,QACb,MAAM,IAAI,MAAM,sBAAsB,OAAO,SAAS,KAAK,SAAS,gBAAgB,KAAK,qCAAqC;AAAA,6BACvG,eAAe,QAAQ;AAAA,MAChD;AAAA,MAEA,KAAK,QAAQ,KAAK,MAAM;AAAA;AAAA,IAW1B,gBAAgB,CAAC,SAAS;AAAA,MACxB,MAAM,UAAU,CAAC,QAAQ;AAAA,QACvB,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,OAAO,IAAI,QAAQ,CAAC;AAAA;AAAA,MAG1C,MAAM,cAAc,QAAQ,OAAO,EAAE,KAAK,CAAC,SACzC,KAAK,aAAa,IAAI,CACxB;AAAA,MACA,IAAI,aAAa;AAAA,QACf,MAAM,cAAc,QAAQ,KAAK,aAAa,WAAW,CAAC,EAAE,KAAK,GAAG;AAAA,QACpE,MAAM,SAAS,QAAQ,OAAO,EAAE,KAAK,GAAG;AAAA,QACxC,MAAM,IAAI,MACR,uBAAuB,oCAAoC,cAC7D;AAAA,MACF;AAAA,MAEA,KAAK,SAAS,KAAK,OAAO;AAAA;AAAA,IAS5B,SAAS,CAAC,QAAQ;AAAA,MAChB,KAAK,gBAAgB,MAAM;AAAA,MAE3B,MAAM,QAAQ,OAAO,KAAK;AAAA,MAC1B,MAAM,OAAO,OAAO,cAAc;AAAA,MAGlC,IAAI,OAAO,QAAQ;AAAA,QAEjB,MAAM,mBAAmB,OAAO,KAAK,QAAQ,UAAU,IAAI;AAAA,QAC3D,IAAI,CAAC,KAAK,YAAY,gBAAgB,GAAG;AAAA,UACvC,KAAK,yBACH,MACA,OAAO,iBAAiB,YAAY,OAAO,OAAO,cAClD,SACF;AAAA,QACF;AAAA,MACF,EAAO,SAAI,OAAO,iBAAiB,WAAW;AAAA,QAC5C,KAAK,yBAAyB,MAAM,OAAO,cAAc,SAAS;AAAA,MACpE;AAAA,MAGA,MAAM,oBAAoB,CAAC,KAAK,qBAAqB,gBAAgB;AAAA,QAGnE,IAAI,OAAO,QAAQ,OAAO,cAAc,WAAW;AAAA,UACjD,MAAM,OAAO;AAAA,QACf;AAAA,QAGA,MAAM,WAAW,KAAK,eAAe,IAAI;AAAA,QACzC,IAAI,QAAQ,QAAQ,OAAO,UAAU;AAAA,UACnC,MAAM,KAAK,cAAc,QAAQ,KAAK,UAAU,mBAAmB;AAAA,QACrE,EAAO,SAAI,QAAQ,QAAQ,OAAO,UAAU;AAAA,UAC1C,MAAM,OAAO,aAAa,KAAK,QAAQ;AAAA,QACzC;AAAA,QAGA,IAAI,OAAO,MAAM;AAAA,UACf,IAAI,OAAO,QAAQ;AAAA,YACjB,MAAM;AAAA,UACR,EAAO,SAAI,OAAO,UAAU,KAAK,OAAO,UAAU;AAAA,YAChD,MAAM;AAAA,UACR,EAAO;AAAA,YACL,MAAM;AAAA;AAAA,QAEV;AAAA,QACA,KAAK,yBAAyB,MAAM,KAAK,WAAW;AAAA;AAAA,MAGtD,KAAK,GAAG,YAAY,OAAO,CAAC,QAAQ;AAAA,QAClC,MAAM,sBAAsB,kBAAkB,OAAO,oBAAoB;AAAA,QACzE,kBAAkB,KAAK,qBAAqB,KAAK;AAAA,OAClD;AAAA,MAED,IAAI,OAAO,QAAQ;AAAA,QACjB,KAAK,GAAG,eAAe,OAAO,CAAC,QAAQ;AAAA,UACrC,MAAM,sBAAsB,kBAAkB,OAAO,iBAAiB,kBAAkB,OAAO;AAAA,UAC/F,kBAAkB,KAAK,qBAAqB,KAAK;AAAA,SAClD;AAAA,MACH;AAAA,MAEA,OAAO;AAAA;AAAA,IAST,SAAS,CAAC,QAAQ,OAAO,aAAa,IAAI,cAAc;AAAA,MACtD,IAAI,OAAO,UAAU,YAAY,iBAAiB,QAAQ;AAAA,QACxD,MAAM,IAAI,MACR,iFACF;AAAA,MACF;AAAA,MACA,MAAM,SAAS,KAAK,aAAa,OAAO,WAAW;AAAA,MACnD,OAAO,oBAAoB,CAAC,CAAC,OAAO,SAAS;AAAA,MAC7C,IAAI,OAAO,OAAO,YAAY;AAAA,QAC5B,OAAO,QAAQ,YAAY,EAAE,UAAU,EAAE;AAAA,MAC3C,EAAO,SAAI,cAAc,QAAQ;AAAA,QAE/B,MAAM,QAAQ;AAAA,QACd,KAAK,CAAC,KAAK,QAAQ;AAAA,UACjB,MAAM,IAAI,MAAM,KAAK,GAAG;AAAA,UACxB,OAAO,IAAI,EAAE,KAAK;AAAA;AAAA,QAEpB,OAAO,QAAQ,YAAY,EAAE,UAAU,EAAE;AAAA,MAC3C,EAAO;AAAA,QACL,OAAO,QAAQ,EAAE;AAAA;AAAA,MAGnB,OAAO,KAAK,UAAU,MAAM;AAAA;AAAA,IAyB9B,MAAM,CAAC,OAAO,aAAa,UAAU,cAAc;AAAA,MACjD,OAAO,KAAK,UAAU,CAAC,GAAG,OAAO,aAAa,UAAU,YAAY;AAAA;AAAA,IAgBtE,cAAc,CAAC,OAAO,aAAa,UAAU,cAAc;AAAA,MACzD,OAAO,KAAK,UACV,EAAE,WAAW,KAAK,GAClB,OACA,aACA,UACA,YACF;AAAA;AAAA,IAcF,2BAA2B,CAAC,UAAU,MAAM;AAAA,MAC1C,KAAK,+BAA+B,CAAC,CAAC;AAAA,MACtC,OAAO;AAAA;AAAA,IAST,kBAAkB,CAAC,eAAe,MAAM;AAAA,MACtC,KAAK,sBAAsB,CAAC,CAAC;AAAA,MAC7B,OAAO;AAAA;AAAA,IAST,oBAAoB,CAAC,cAAc,MAAM;AAAA,MACvC,KAAK,wBAAwB,CAAC,CAAC;AAAA,MAC/B,OAAO;AAAA;AAAA,IAWT,uBAAuB,CAAC,aAAa,MAAM;AAAA,MACzC,KAAK,2BAA2B,CAAC,CAAC;AAAA,MAClC,OAAO;AAAA;AAAA,IAYT,kBAAkB,CAAC,cAAc,MAAM;AAAA,MACrC,KAAK,sBAAsB,CAAC,CAAC;AAAA,MAC7B,KAAK,2BAA2B;AAAA,MAChC,OAAO;AAAA;AAAA,IAOT,0BAA0B,GAAG;AAAA,MAC3B,IACE,KAAK,UACL,KAAK,uBACL,CAAC,KAAK,OAAO,0BACb;AAAA,QACA,MAAM,IAAI,MACR,0CAA0C,KAAK,yEACjD;AAAA,MACF;AAAA;AAAA,IAWF,wBAAwB,CAAC,oBAAoB,MAAM;AAAA,MACjD,IAAI,KAAK,QAAQ,QAAQ;AAAA,QACvB,MAAM,IAAI,MAAM,wDAAwD;AAAA,MAC1E;AAAA,MACA,IAAI,OAAO,KAAK,KAAK,aAAa,EAAE,QAAQ;AAAA,QAC1C,MAAM,IAAI,MACR,+DACF;AAAA,MACF;AAAA,MACA,KAAK,4BAA4B,CAAC,CAAC;AAAA,MACnC,OAAO;AAAA;AAAA,IAUT,cAAc,CAAC,KAAK;AAAA,MAClB,IAAI,KAAK,2BAA2B;AAAA,QAClC,OAAO,KAAK;AAAA,MACd;AAAA,MACA,OAAO,KAAK,cAAc;AAAA;AAAA,IAW5B,cAAc,CAAC,KAAK,OAAO;AAAA,MACzB,OAAO,KAAK,yBAAyB,KAAK,OAAO,SAAS;AAAA;AAAA,IAY5D,wBAAwB,CAAC,KAAK,OAAO,QAAQ;AAAA,MAC3C,IAAI,KAAK,2BAA2B;AAAA,QAClC,KAAK,OAAO;AAAA,MACd,EAAO;AAAA,QACL,KAAK,cAAc,OAAO;AAAA;AAAA,MAE5B,KAAK,oBAAoB,OAAO;AAAA,MAChC,OAAO;AAAA;AAAA,IAWT,oBAAoB,CAAC,KAAK;AAAA,MACxB,OAAO,KAAK,oBAAoB;AAAA;AAAA,IAWlC,+BAA+B,CAAC,KAAK;AAAA,MAEnC,IAAI;AAAA,MACJ,KAAK,wBAAwB,EAAE,QAAQ,CAAC,QAAQ;AAAA,QAC9C,IAAI,IAAI,qBAAqB,GAAG,MAAM,WAAW;AAAA,UAC/C,SAAS,IAAI,qBAAqB,GAAG;AAAA,QACvC;AAAA,OACD;AAAA,MACD,OAAO;AAAA;AAAA,IAUT,gBAAgB,CAAC,MAAM,cAAc;AAAA,MACnC,IAAI,SAAS,aAAa,CAAC,MAAM,QAAQ,IAAI,GAAG;AAAA,QAC9C,MAAM,IAAI,MAAM,qDAAqD;AAAA,MACvE;AAAA,MACA,eAAe,gBAAgB,CAAC;AAAA,MAGhC,IAAI,SAAS,aAAa,aAAa,SAAS,WAAW;AAAA,QACzD,IAAI,SAAQ,UAAU,UAAU;AAAA,UAC9B,aAAa,OAAO;AAAA,QACtB;AAAA,QAEA,MAAM,WAAW,SAAQ,YAAY,CAAC;AAAA,QACtC,IACE,SAAS,SAAS,IAAI,KACtB,SAAS,SAAS,QAAQ,KAC1B,SAAS,SAAS,IAAI,KACtB,SAAS,SAAS,SAAS,GAC3B;AAAA,UACA,aAAa,OAAO;AAAA,QACtB;AAAA,MACF;AAAA,MAGA,IAAI,SAAS,WAAW;AAAA,QACtB,OAAO,SAAQ;AAAA,MACjB;AAAA,MACA,KAAK,UAAU,KAAK,MAAM;AAAA,MAG1B,IAAI;AAAA,MACJ,QAAQ,aAAa;AAAA,aACd;AAAA,aACA;AAAA,UACH,KAAK,cAAc,KAAK;AAAA,UACxB,WAAW,KAAK,MAAM,CAAC;AAAA,UACvB;AAAA,aACG;AAAA,UAEH,IAAI,SAAQ,YAAY;AAAA,YACtB,KAAK,cAAc,KAAK;AAAA,YACxB,WAAW,KAAK,MAAM,CAAC;AAAA,UACzB,EAAO;AAAA,YACL,WAAW,KAAK,MAAM,CAAC;AAAA;AAAA,UAEzB;AAAA,aACG;AAAA,UACH,WAAW,KAAK,MAAM,CAAC;AAAA,UACvB;AAAA,aACG;AAAA,UACH,WAAW,KAAK,MAAM,CAAC;AAAA,UACvB;AAAA;AAAA,UAEA,MAAM,IAAI,MACR,oCAAoC,aAAa,SACnD;AAAA;AAAA,MAIJ,IAAI,CAAC,KAAK,SAAS,KAAK;AAAA,QACtB,KAAK,iBAAiB,KAAK,WAAW;AAAA,MACxC,KAAK,QAAQ,KAAK,SAAS;AAAA,MAE3B,OAAO;AAAA;AAAA,IA0BT,KAAK,CAAC,MAAM,cAAc;AAAA,MACxB,KAAK,iBAAiB;AAAA,MACtB,MAAM,WAAW,KAAK,iBAAiB,MAAM,YAAY;AAAA,MACzD,KAAK,cAAc,CAAC,GAAG,QAAQ;AAAA,MAE/B,OAAO;AAAA;AAAA,SAwBH,WAAU,CAAC,MAAM,cAAc;AAAA,MACnC,KAAK,iBAAiB;AAAA,MACtB,MAAM,WAAW,KAAK,iBAAiB,MAAM,YAAY;AAAA,MACzD,MAAM,KAAK,cAAc,CAAC,GAAG,QAAQ;AAAA,MAErC,OAAO;AAAA;AAAA,IAGT,gBAAgB,GAAG;AAAA,MACjB,IAAI,KAAK,gBAAgB,MAAM;AAAA,QAC7B,KAAK,qBAAqB;AAAA,MAC5B,EAAO;AAAA,QACL,KAAK,wBAAwB;AAAA;AAAA;AAAA,IAUjC,oBAAoB,GAAG;AAAA,MACrB,KAAK,cAAc;AAAA,QAEjB,OAAO,KAAK;AAAA,QAGZ,eAAe,KAAK,KAAK,cAAc;AAAA,QACvC,qBAAqB,KAAK,KAAK,oBAAoB;AAAA,MACrD;AAAA;AAAA,IASF,uBAAuB,GAAG;AAAA,MACxB,IAAI,KAAK;AAAA,QACP,MAAM,IAAI,MAAM;AAAA,0FACoE;AAAA,MAGtF,KAAK,QAAQ,KAAK,YAAY;AAAA,MAC9B,KAAK,cAAc;AAAA,MACnB,KAAK,UAAU,CAAC;AAAA,MAEhB,KAAK,gBAAgB,KAAK,KAAK,YAAY,cAAc;AAAA,MACzD,KAAK,sBAAsB,KAAK,KAAK,YAAY,oBAAoB;AAAA,MAErE,KAAK,OAAO,CAAC;AAAA,MAEb,KAAK,gBAAgB,CAAC;AAAA;AAAA,IAUxB,0BAA0B,CAAC,gBAAgB,eAAe,gBAAgB;AAAA,MACxE,IAAI,GAAG,WAAW,cAAc;AAAA,QAAG;AAAA,MAEnC,MAAM,uBAAuB,gBACzB,wDAAwD,mBACxD;AAAA,MACJ,MAAM,oBAAoB,IAAI;AAAA,SACzB;AAAA;AAAA,KAEJ;AAAA,MACD,MAAM,IAAI,MAAM,iBAAiB;AAAA;AAAA,IASnC,kBAAkB,CAAC,YAAY,MAAM;AAAA,MACnC,OAAO,KAAK,MAAM;AAAA,MAClB,IAAI,iBAAiB;AAAA,MACrB,MAAM,YAAY,CAAC,OAAO,OAAO,QAAQ,QAAQ,MAAM;AAAA,MAEvD,SAAS,QAAQ,CAAC,SAAS,UAAU;AAAA,QAEnC,MAAM,WAAW,KAAK,QAAQ,SAAS,QAAQ;AAAA,QAC/C,IAAI,GAAG,WAAW,QAAQ;AAAA,UAAG,OAAO;AAAA,QAGpC,IAAI,UAAU,SAAS,KAAK,QAAQ,QAAQ,CAAC;AAAA,UAAG;AAAA,QAGhD,MAAM,WAAW,UAAU,KAAK,CAAC,QAC/B,GAAG,WAAW,GAAG,WAAW,KAAK,CACnC;AAAA,QACA,IAAI;AAAA,UAAU,OAAO,GAAG,WAAW;AAAA,QAEnC;AAAA;AAAA,MAIF,KAAK,iCAAiC;AAAA,MACtC,KAAK,4BAA4B;AAAA,MAGjC,IAAI,iBACF,WAAW,mBAAmB,GAAG,KAAK,SAAS,WAAW;AAAA,MAC5D,IAAI,gBAAgB,KAAK,kBAAkB;AAAA,MAC3C,IAAI,KAAK,aAAa;AAAA,QACpB,IAAI;AAAA,QACJ,IAAI;AAAA,UACF,qBAAqB,GAAG,aAAa,KAAK,WAAW;AAAA,UACrD,MAAM;AAAA,UACN,qBAAqB,KAAK;AAAA;AAAA,QAE5B,gBAAgB,KAAK,QACnB,KAAK,QAAQ,kBAAkB,GAC/B,aACF;AAAA,MACF;AAAA,MAGA,IAAI,eAAe;AAAA,QACjB,IAAI,YAAY,SAAS,eAAe,cAAc;AAAA,QAGtD,IAAI,CAAC,aAAa,CAAC,WAAW,mBAAmB,KAAK,aAAa;AAAA,UACjE,MAAM,aAAa,KAAK,SACtB,KAAK,aACL,KAAK,QAAQ,KAAK,WAAW,CAC/B;AAAA,UACA,IAAI,eAAe,KAAK,OAAO;AAAA,YAC7B,YAAY,SACV,eACA,GAAG,cAAc,WAAW,OAC9B;AAAA,UACF;AAAA,QACF;AAAA,QACA,iBAAiB,aAAa;AAAA,MAChC;AAAA,MAEA,iBAAiB,UAAU,SAAS,KAAK,QAAQ,cAAc,CAAC;AAAA,MAEhE,IAAI;AAAA,MACJ,IAAI,SAAQ,aAAa,SAAS;AAAA,QAChC,IAAI,gBAAgB;AAAA,UAClB,KAAK,QAAQ,cAAc;AAAA,UAE3B,OAAO,2BAA2B,SAAQ,QAAQ,EAAE,OAAO,IAAI;AAAA,UAE/D,OAAO,aAAa,MAAM,SAAQ,KAAK,IAAI,MAAM,EAAE,OAAO,UAAU,CAAC;AAAA,QACvE,EAAO;AAAA,UACL,OAAO,aAAa,MAAM,gBAAgB,MAAM,EAAE,OAAO,UAAU,CAAC;AAAA;AAAA,MAExE,EAAO;AAAA,QACL,KAAK,2BACH,gBACA,eACA,WAAW,KACb;AAAA,QACA,KAAK,QAAQ,cAAc;AAAA,QAE3B,OAAO,2BAA2B,SAAQ,QAAQ,EAAE,OAAO,IAAI;AAAA,QAC/D,OAAO,aAAa,MAAM,SAAQ,UAAU,MAAM,EAAE,OAAO,UAAU,CAAC;AAAA;AAAA,MAGxE,IAAI,CAAC,KAAK,QAAQ;AAAA,QAEhB,MAAM,UAAU,CAAC,WAAW,WAAW,WAAW,UAAU,QAAQ;AAAA,QACpE,QAAQ,QAAQ,CAAC,WAAW;AAAA,UAC1B,SAAQ,GAAG,QAAQ,MAAM;AAAA,YACvB,IAAI,KAAK,WAAW,SAAS,KAAK,aAAa,MAAM;AAAA,cAEnD,KAAK,KAAK,MAAM;AAAA,YAClB;AAAA,WACD;AAAA,SACF;AAAA,MACH;AAAA,MAGA,MAAM,eAAe,KAAK;AAAA,MAC1B,KAAK,GAAG,SAAS,CAAC,SAAS;AAAA,QACzB,OAAO,QAAQ;AAAA,QACf,IAAI,CAAC,cAAc;AAAA,UACjB,SAAQ,KAAK,IAAI;AAAA,QACnB,EAAO;AAAA,UACL,aACE,IAAI,eACF,MACA,oCACA,SACF,CACF;AAAA;AAAA,OAEH;AAAA,MACD,KAAK,GAAG,SAAS,CAAC,QAAQ;AAAA,QAExB,IAAI,IAAI,SAAS,UAAU;AAAA,UACzB,KAAK,2BACH,gBACA,eACA,WAAW,KACb;AAAA,QAEF,EAAO,SAAI,IAAI,SAAS,UAAU;AAAA,UAChC,MAAM,IAAI,MAAM,IAAI,gCAAgC;AAAA,QACtD;AAAA,QACA,IAAI,CAAC,cAAc;AAAA,UACjB,SAAQ,KAAK,CAAC;AAAA,QAChB,EAAO;AAAA,UACL,MAAM,eAAe,IAAI,eACvB,GACA,oCACA,SACF;AAAA,UACA,aAAa,cAAc;AAAA,UAC3B,aAAa,YAAY;AAAA;AAAA,OAE5B;AAAA,MAGD,KAAK,iBAAiB;AAAA;AAAA,IAOxB,mBAAmB,CAAC,aAAa,UAAU,SAAS;AAAA,MAClD,MAAM,aAAa,KAAK,aAAa,WAAW;AAAA,MAChD,IAAI,CAAC;AAAA,QAAY,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC;AAAA,MAE1C,WAAW,iBAAiB;AAAA,MAC5B,IAAI;AAAA,MACJ,eAAe,KAAK,2BAClB,cACA,YACA,eACF;AAAA,MACA,eAAe,KAAK,aAAa,cAAc,MAAM;AAAA,QACnD,IAAI,WAAW,oBAAoB;AAAA,UACjC,KAAK,mBAAmB,YAAY,SAAS,OAAO,OAAO,CAAC;AAAA,QAC9D,EAAO;AAAA,UACL,OAAO,WAAW,cAAc,UAAU,OAAO;AAAA;AAAA,OAEpD;AAAA,MACD,OAAO;AAAA;AAAA,IAUT,oBAAoB,CAAC,gBAAgB;AAAA,MACnC,IAAI,CAAC,gBAAgB;AAAA,QACnB,KAAK,KAAK;AAAA,MACZ;AAAA,MACA,MAAM,aAAa,KAAK,aAAa,cAAc;AAAA,MACnD,IAAI,cAAc,CAAC,WAAW,oBAAoB;AAAA,QAChD,WAAW,KAAK;AAAA,MAClB;AAAA,MAGA,OAAO,KAAK,oBACV,gBACA,CAAC,GACD,CAAC,KAAK,eAAe,GAAG,QAAQ,KAAK,eAAe,GAAG,SAAS,QAAQ,CAC1E;AAAA;AAAA,IASF,uBAAuB,GAAG;AAAA,MAExB,KAAK,oBAAoB,QAAQ,CAAC,KAAK,MAAM;AAAA,QAC3C,IAAI,IAAI,YAAY,KAAK,KAAK,MAAM,MAAM;AAAA,UACxC,KAAK,gBAAgB,IAAI,KAAK,CAAC;AAAA,QACjC;AAAA,OACD;AAAA,MAED,IACE,KAAK,oBAAoB,SAAS,KAClC,KAAK,oBAAoB,KAAK,oBAAoB,SAAS,GAAG,UAC9D;AAAA,QACA;AAAA,MACF;AAAA,MACA,IAAI,KAAK,KAAK,SAAS,KAAK,oBAAoB,QAAQ;AAAA,QACtD,KAAK,iBAAiB,KAAK,IAAI;AAAA,MACjC;AAAA;AAAA,IASF,iBAAiB,GAAG;AAAA,MAClB,MAAM,aAAa,CAAC,UAAU,OAAO,aAAa;AAAA,QAEhD,IAAI,cAAc;AAAA,QAClB,IAAI,UAAU,QAAQ,SAAS,UAAU;AAAA,UACvC,MAAM,sBAAsB,kCAAkC,mCAAmC,SAAS,KAAK;AAAA,UAC/G,cAAc,KAAK,cACjB,UACA,OACA,UACA,mBACF;AAAA,QACF;AAAA,QACA,OAAO;AAAA;AAAA,MAGT,KAAK,wBAAwB;AAAA,MAE7B,MAAM,gBAAgB,CAAC;AAAA,MACvB,KAAK,oBAAoB,QAAQ,CAAC,aAAa,UAAU;AAAA,QACvD,IAAI,QAAQ,YAAY;AAAA,QACxB,IAAI,YAAY,UAAU;AAAA,UAExB,IAAI,QAAQ,KAAK,KAAK,QAAQ;AAAA,YAC5B,QAAQ,KAAK,KAAK,MAAM,KAAK;AAAA,YAC7B,IAAI,YAAY,UAAU;AAAA,cACxB,QAAQ,MAAM,OAAO,CAAC,WAAW,MAAM;AAAA,gBACrC,OAAO,WAAW,aAAa,GAAG,SAAS;AAAA,iBAC1C,YAAY,YAAY;AAAA,YAC7B;AAAA,UACF,EAAO,SAAI,UAAU,WAAW;AAAA,YAC9B,QAAQ,CAAC;AAAA,UACX;AAAA,QACF,EAAO,SAAI,QAAQ,KAAK,KAAK,QAAQ;AAAA,UACnC,QAAQ,KAAK,KAAK;AAAA,UAClB,IAAI,YAAY,UAAU;AAAA,YACxB,QAAQ,WAAW,aAAa,OAAO,YAAY,YAAY;AAAA,UACjE;AAAA,QACF;AAAA,QACA,cAAc,SAAS;AAAA,OACxB;AAAA,MACD,KAAK,gBAAgB;AAAA;AAAA,IAYvB,YAAY,CAAC,SAAS,IAAI;AAAA,MAExB,IAAI,WAAW,QAAQ,QAAQ,OAAO,QAAQ,SAAS,YAAY;AAAA,QAEjE,OAAO,QAAQ,KAAK,MAAM,GAAG,CAAC;AAAA,MAChC;AAAA,MAEA,OAAO,GAAG;AAAA;AAAA,IAWZ,iBAAiB,CAAC,SAAS,OAAO;AAAA,MAChC,IAAI,SAAS;AAAA,MACb,MAAM,QAAQ,CAAC;AAAA,MACf,KAAK,wBAAwB,EAC1B,QAAQ,EACR,OAAO,CAAC,QAAQ,IAAI,gBAAgB,WAAW,SAAS,EACxD,QAAQ,CAAC,kBAAkB;AAAA,QAC1B,cAAc,gBAAgB,OAAO,QAAQ,CAAC,aAAa;AAAA,UACzD,MAAM,KAAK,EAAE,eAAe,SAAS,CAAC;AAAA,SACvC;AAAA,OACF;AAAA,MACH,IAAI,UAAU,cAAc;AAAA,QAC1B,MAAM,QAAQ;AAAA,MAChB;AAAA,MAEA,MAAM,QAAQ,CAAC,eAAe;AAAA,QAC5B,SAAS,KAAK,aAAa,QAAQ,MAAM;AAAA,UACvC,OAAO,WAAW,SAAS,WAAW,eAAe,IAAI;AAAA,SAC1D;AAAA,OACF;AAAA,MACD,OAAO;AAAA;AAAA,IAYT,0BAA0B,CAAC,SAAS,YAAY,OAAO;AAAA,MACrD,IAAI,SAAS;AAAA,MACb,IAAI,KAAK,gBAAgB,WAAW,WAAW;AAAA,QAC7C,KAAK,gBAAgB,OAAO,QAAQ,CAAC,SAAS;AAAA,UAC5C,SAAS,KAAK,aAAa,QAAQ,MAAM;AAAA,YACvC,OAAO,KAAK,MAAM,UAAU;AAAA,WAC7B;AAAA,SACF;AAAA,MACH;AAAA,MACA,OAAO;AAAA;AAAA,IAUT,aAAa,CAAC,UAAU,SAAS;AAAA,MAC/B,MAAM,SAAS,KAAK,aAAa,OAAO;AAAA,MACxC,KAAK,iBAAiB;AAAA,MACtB,KAAK,qBAAqB;AAAA,MAC1B,WAAW,SAAS,OAAO,OAAO,QAAQ;AAAA,MAC1C,UAAU,OAAO;AAAA,MACjB,KAAK,OAAO,SAAS,OAAO,OAAO;AAAA,MAEnC,IAAI,YAAY,KAAK,aAAa,SAAS,EAAE,GAAG;AAAA,QAC9C,OAAO,KAAK,oBAAoB,SAAS,IAAI,SAAS,MAAM,CAAC,GAAG,OAAO;AAAA,MACzE;AAAA,MACA,IACE,KAAK,gBAAgB,KACrB,SAAS,OAAO,KAAK,gBAAgB,EAAE,KAAK,GAC5C;AAAA,QACA,OAAO,KAAK,qBAAqB,SAAS,EAAE;AAAA,MAC9C;AAAA,MACA,IAAI,KAAK,qBAAqB;AAAA,QAC5B,KAAK,uBAAuB,OAAO;AAAA,QACnC,OAAO,KAAK,oBACV,KAAK,qBACL,UACA,OACF;AAAA,MACF;AAAA,MACA,IACE,KAAK,SAAS,UACd,KAAK,KAAK,WAAW,KACrB,CAAC,KAAK,kBACN,CAAC,KAAK,qBACN;AAAA,QAEA,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC;AAAA,MAC3B;AAAA,MAEA,KAAK,uBAAuB,OAAO,OAAO;AAAA,MAC1C,KAAK,iCAAiC;AAAA,MACtC,KAAK,4BAA4B;AAAA,MAGjC,MAAM,yBAAyB,MAAM;AAAA,QACnC,IAAI,OAAO,QAAQ,SAAS,GAAG;AAAA,UAC7B,KAAK,cAAc,OAAO,QAAQ,EAAE;AAAA,QACtC;AAAA;AAAA,MAGF,MAAM,eAAe,WAAW,KAAK,KAAK;AAAA,MAC1C,IAAI,KAAK,gBAAgB;AAAA,QACvB,uBAAuB;AAAA,QACvB,KAAK,kBAAkB;AAAA,QAEvB,IAAI;AAAA,QACJ,eAAe,KAAK,kBAAkB,cAAc,WAAW;AAAA,QAC/D,eAAe,KAAK,aAAa,cAAc,MAC7C,KAAK,eAAe,KAAK,aAAa,CACxC;AAAA,QACA,IAAI,KAAK,QAAQ;AAAA,UACf,eAAe,KAAK,aAAa,cAAc,MAAM;AAAA,YACnD,KAAK,OAAO,KAAK,cAAc,UAAU,OAAO;AAAA,WACjD;AAAA,QACH;AAAA,QACA,eAAe,KAAK,kBAAkB,cAAc,YAAY;AAAA,QAChE,OAAO;AAAA,MACT;AAAA,MACA,IAAI,KAAK,UAAU,KAAK,OAAO,cAAc,YAAY,GAAG;AAAA,QAC1D,uBAAuB;AAAA,QACvB,KAAK,kBAAkB;AAAA,QACvB,KAAK,OAAO,KAAK,cAAc,UAAU,OAAO;AAAA,MAClD,EAAO,SAAI,SAAS,QAAQ;AAAA,QAC1B,IAAI,KAAK,aAAa,GAAG,GAAG;AAAA,UAE1B,OAAO,KAAK,oBAAoB,KAAK,UAAU,OAAO;AAAA,QACxD;AAAA,QACA,IAAI,KAAK,cAAc,WAAW,GAAG;AAAA,UAEnC,KAAK,KAAK,aAAa,UAAU,OAAO;AAAA,QAC1C,EAAO,SAAI,KAAK,SAAS,QAAQ;AAAA,UAC/B,KAAK,eAAe;AAAA,QACtB,EAAO;AAAA,UACL,uBAAuB;AAAA,UACvB,KAAK,kBAAkB;AAAA;AAAA,MAE3B,EAAO,SAAI,KAAK,SAAS,QAAQ;AAAA,QAC/B,uBAAuB;AAAA,QAEvB,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC;AAAA,MAC3B,EAAO;AAAA,QACL,uBAAuB;AAAA,QACvB,KAAK,kBAAkB;AAAA;AAAA;AAAA,IAW3B,YAAY,CAAC,MAAM;AAAA,MACjB,IAAI,CAAC;AAAA,QAAM;AAAA,MACX,OAAO,KAAK,SAAS,KACnB,CAAC,QAAQ,IAAI,UAAU,QAAQ,IAAI,SAAS,SAAS,IAAI,CAC3D;AAAA;AAAA,IAWF,WAAW,CAAC,KAAK;AAAA,MACf,OAAO,KAAK,QAAQ,KAAK,CAAC,WAAW,OAAO,GAAG,GAAG,CAAC;AAAA;AAAA,IAUrD,gCAAgC,GAAG;AAAA,MAEjC,KAAK,wBAAwB,EAAE,QAAQ,CAAC,QAAQ;AAAA,QAC9C,IAAI,QAAQ,QAAQ,CAAC,aAAa;AAAA,UAChC,IACE,SAAS,aACT,IAAI,eAAe,SAAS,cAAc,CAAC,MAAM,WACjD;AAAA,YACA,IAAI,4BAA4B,QAAQ;AAAA,UAC1C;AAAA,SACD;AAAA,OACF;AAAA;AAAA,IAQH,gCAAgC,GAAG;AAAA,MACjC,MAAM,2BAA2B,KAAK,QAAQ,OAAO,CAAC,WAAW;AAAA,QAC/D,MAAM,YAAY,OAAO,cAAc;AAAA,QACvC,IAAI,KAAK,eAAe,SAAS,MAAM,WAAW;AAAA,UAChD,OAAO;AAAA,QACT;AAAA,QACA,OAAO,KAAK,qBAAqB,SAAS,MAAM;AAAA,OACjD;AAAA,MAED,MAAM,yBAAyB,yBAAyB,OACtD,CAAC,WAAW,OAAO,cAAc,SAAS,CAC5C;AAAA,MAEA,uBAAuB,QAAQ,CAAC,WAAW;AAAA,QACzC,MAAM,wBAAwB,yBAAyB,KAAK,CAAC,YAC3D,OAAO,cAAc,SAAS,QAAQ,cAAc,CAAC,CACvD;AAAA,QACA,IAAI,uBAAuB;AAAA,UACzB,KAAK,mBAAmB,QAAQ,qBAAqB;AAAA,QACvD;AAAA,OACD;AAAA;AAAA,IASH,2BAA2B,GAAG;AAAA,MAE5B,KAAK,wBAAwB,EAAE,QAAQ,CAAC,QAAQ;AAAA,QAC9C,IAAI,iCAAiC;AAAA,OACtC;AAAA;AAAA,IAqBH,YAAY,CAAC,MAAM;AAAA,MACjB,MAAM,WAAW,CAAC;AAAA,MAClB,MAAM,UAAU,CAAC;AAAA,MACjB,IAAI,OAAO;AAAA,MACX,MAAM,OAAO,KAAK,MAAM;AAAA,MAExB,SAAS,WAAW,CAAC,KAAK;AAAA,QACxB,OAAO,IAAI,SAAS,KAAK,IAAI,OAAO;AAAA;AAAA,MAItC,IAAI,uBAAuB;AAAA,MAC3B,OAAO,KAAK,QAAQ;AAAA,QAClB,MAAM,MAAM,KAAK,MAAM;AAAA,QAGvB,IAAI,QAAQ,MAAM;AAAA,UAChB,IAAI,SAAS;AAAA,YAAS,KAAK,KAAK,GAAG;AAAA,UACnC,KAAK,KAAK,GAAG,IAAI;AAAA,UACjB;AAAA,QACF;AAAA,QAEA,IAAI,wBAAwB,CAAC,YAAY,GAAG,GAAG;AAAA,UAC7C,KAAK,KAAK,UAAU,qBAAqB,KAAK,KAAK,GAAG;AAAA,UACtD;AAAA,QACF;AAAA,QACA,uBAAuB;AAAA,QAEvB,IAAI,YAAY,GAAG,GAAG;AAAA,UACpB,MAAM,SAAS,KAAK,YAAY,GAAG;AAAA,UAEnC,IAAI,QAAQ;AAAA,YACV,IAAI,OAAO,UAAU;AAAA,cACnB,MAAM,QAAQ,KAAK,MAAM;AAAA,cACzB,IAAI,UAAU;AAAA,gBAAW,KAAK,sBAAsB,MAAM;AAAA,cAC1D,KAAK,KAAK,UAAU,OAAO,KAAK,KAAK,KAAK;AAAA,YAC5C,EAAO,SAAI,OAAO,UAAU;AAAA,cAC1B,IAAI,QAAQ;AAAA,cAEZ,IAAI,KAAK,SAAS,KAAK,CAAC,YAAY,KAAK,EAAE,GAAG;AAAA,gBAC5C,QAAQ,KAAK,MAAM;AAAA,cACrB;AAAA,cACA,KAAK,KAAK,UAAU,OAAO,KAAK,KAAK,KAAK;AAAA,YAC5C,EAAO;AAAA,cAEL,KAAK,KAAK,UAAU,OAAO,KAAK,GAAG;AAAA;AAAA,YAErC,uBAAuB,OAAO,WAAW,SAAS;AAAA,YAClD;AAAA,UACF;AAAA,QACF;AAAA,QAGA,IAAI,IAAI,SAAS,KAAK,IAAI,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,UACtD,MAAM,SAAS,KAAK,YAAY,IAAI,IAAI,IAAI;AAAA,UAC5C,IAAI,QAAQ;AAAA,YACV,IACE,OAAO,YACN,OAAO,YAAY,KAAK,8BACzB;AAAA,cAEA,KAAK,KAAK,UAAU,OAAO,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC;AAAA,YACnD,EAAO;AAAA,cAEL,KAAK,KAAK,UAAU,OAAO,KAAK,GAAG;AAAA,cACnC,KAAK,QAAQ,IAAI,IAAI,MAAM,CAAC,GAAG;AAAA;AAAA,YAEjC;AAAA,UACF;AAAA,QACF;AAAA,QAGA,IAAI,YAAY,KAAK,GAAG,GAAG;AAAA,UACzB,MAAM,QAAQ,IAAI,QAAQ,GAAG;AAAA,UAC7B,MAAM,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,KAAK,CAAC;AAAA,UACnD,IAAI,WAAW,OAAO,YAAY,OAAO,WAAW;AAAA,YAClD,KAAK,KAAK,UAAU,OAAO,KAAK,KAAK,IAAI,MAAM,QAAQ,CAAC,CAAC;AAAA,YACzD;AAAA,UACF;AAAA,QACF;AAAA,QAMA,IAAI,YAAY,GAAG,GAAG;AAAA,UACpB,OAAO;AAAA,QACT;AAAA,QAGA,KACG,KAAK,4BAA4B,KAAK,wBACvC,SAAS,WAAW,KACpB,QAAQ,WAAW,GACnB;AAAA,UACA,IAAI,KAAK,aAAa,GAAG,GAAG;AAAA,YAC1B,SAAS,KAAK,GAAG;AAAA,YACjB,IAAI,KAAK,SAAS;AAAA,cAAG,QAAQ,KAAK,GAAG,IAAI;AAAA,YACzC;AAAA,UACF,EAAO,SACL,KAAK,gBAAgB,KACrB,QAAQ,KAAK,gBAAgB,EAAE,KAAK,GACpC;AAAA,YACA,SAAS,KAAK,GAAG;AAAA,YACjB,IAAI,KAAK,SAAS;AAAA,cAAG,SAAS,KAAK,GAAG,IAAI;AAAA,YAC1C;AAAA,UACF,EAAO,SAAI,KAAK,qBAAqB;AAAA,YACnC,QAAQ,KAAK,GAAG;AAAA,YAChB,IAAI,KAAK,SAAS;AAAA,cAAG,QAAQ,KAAK,GAAG,IAAI;AAAA,YACzC;AAAA,UACF;AAAA,QACF;AAAA,QAGA,IAAI,KAAK,qBAAqB;AAAA,UAC5B,KAAK,KAAK,GAAG;AAAA,UACb,IAAI,KAAK,SAAS;AAAA,YAAG,KAAK,KAAK,GAAG,IAAI;AAAA,UACtC;AAAA,QACF;AAAA,QAGA,KAAK,KAAK,GAAG;AAAA,MACf;AAAA,MAEA,OAAO,EAAE,UAAU,QAAQ;AAAA;AAAA,IAQ7B,IAAI,GAAG;AAAA,MACL,IAAI,KAAK,2BAA2B;AAAA,QAElC,MAAM,SAAS,CAAC;AAAA,QAChB,MAAM,MAAM,KAAK,QAAQ;AAAA,QAEzB,SAAS,IAAI,EAAG,IAAI,KAAK,KAAK;AAAA,UAC5B,MAAM,MAAM,KAAK,QAAQ,GAAG,cAAc;AAAA,UAC1C,OAAO,OACL,QAAQ,KAAK,qBAAqB,KAAK,WAAW,KAAK;AAAA,QAC3D;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MAEA,OAAO,KAAK;AAAA;AAAA,IAQd,eAAe,GAAG;AAAA,MAEhB,OAAO,KAAK,wBAAwB,EAAE,OACpC,CAAC,iBAAiB,QAAQ,OAAO,OAAO,iBAAiB,IAAI,KAAK,CAAC,GACnE,CAAC,CACH;AAAA;AAAA,IAWF,KAAK,CAAC,SAAS,cAAc;AAAA,MAE3B,KAAK,qBAAqB,YACxB,GAAG;AAAA,GACH,KAAK,qBAAqB,QAC5B;AAAA,MACA,IAAI,OAAO,KAAK,wBAAwB,UAAU;AAAA,QAChD,KAAK,qBAAqB,SAAS,GAAG,KAAK;AAAA,CAAuB;AAAA,MACpE,EAAO,SAAI,KAAK,qBAAqB;AAAA,QACnC,KAAK,qBAAqB,SAAS;AAAA,CAAI;AAAA,QACvC,KAAK,WAAW,EAAE,OAAO,KAAK,CAAC;AAAA,MACjC;AAAA,MAGA,MAAM,SAAS,gBAAgB,CAAC;AAAA,MAChC,MAAM,WAAW,OAAO,YAAY;AAAA,MACpC,MAAM,OAAO,OAAO,QAAQ;AAAA,MAC5B,KAAK,MAAM,UAAU,MAAM,OAAO;AAAA;AAAA,IASpC,gBAAgB,GAAG;AAAA,MACjB,KAAK,QAAQ,QAAQ,CAAC,WAAW;AAAA,QAC/B,IAAI,OAAO,UAAU,OAAO,UAAU,SAAQ,KAAK;AAAA,UACjD,MAAM,YAAY,OAAO,cAAc;AAAA,UAEvC,IACE,KAAK,eAAe,SAAS,MAAM,aACnC,CAAC,WAAW,UAAU,KAAK,EAAE,SAC3B,KAAK,qBAAqB,SAAS,CACrC,GACA;AAAA,YACA,IAAI,OAAO,YAAY,OAAO,UAAU;AAAA,cAGtC,KAAK,KAAK,aAAa,OAAO,KAAK,KAAK,SAAQ,IAAI,OAAO,OAAO;AAAA,YACpE,EAAO;AAAA,cAGL,KAAK,KAAK,aAAa,OAAO,KAAK,GAAG;AAAA;AAAA,UAE1C;AAAA,QACF;AAAA,OACD;AAAA;AAAA,IAQH,oBAAoB,GAAG;AAAA,MACrB,MAAM,aAAa,IAAI,YAAY,KAAK,OAAO;AAAA,MAC/C,MAAM,uBAAuB,CAAC,cAAc;AAAA,QAC1C,OACE,KAAK,eAAe,SAAS,MAAM,aACnC,CAAC,CAAC,WAAW,SAAS,EAAE,SAAS,KAAK,qBAAqB,SAAS,CAAC;AAAA;AAAA,MAGzE,KAAK,QACF,OACC,CAAC,WACC,OAAO,YAAY,aACnB,qBAAqB,OAAO,cAAc,CAAC,KAC3C,WAAW,gBACT,KAAK,eAAe,OAAO,cAAc,CAAC,GAC1C,MACF,CACJ,EACC,QAAQ,CAAC,WAAW;AAAA,QACnB,OAAO,KAAK,OAAO,OAAO,EACvB,OAAO,CAAC,eAAe,CAAC,qBAAqB,UAAU,CAAC,EACxD,QAAQ,CAAC,eAAe;AAAA,UACvB,KAAK,yBACH,YACA,OAAO,QAAQ,aACf,SACF;AAAA,SACD;AAAA,OACJ;AAAA;AAAA,IAUL,eAAe,CAAC,MAAM;AAAA,MACpB,MAAM,UAAU,qCAAqC;AAAA,MACrD,KAAK,MAAM,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAAA;AAAA,IAU3D,qBAAqB,CAAC,QAAQ;AAAA,MAC5B,MAAM,UAAU,kBAAkB,OAAO;AAAA,MACzC,KAAK,MAAM,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAAA;AAAA,IAUjE,2BAA2B,CAAC,QAAQ;AAAA,MAClC,MAAM,UAAU,2BAA2B,OAAO;AAAA,MAClD,KAAK,MAAM,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAAA;AAAA,IAUvE,kBAAkB,CAAC,QAAQ,mBAAmB;AAAA,MAG5C,MAAM,0BAA0B,CAAC,YAAW;AAAA,QAC1C,MAAM,YAAY,QAAO,cAAc;AAAA,QACvC,MAAM,cAAc,KAAK,eAAe,SAAS;AAAA,QACjD,MAAM,iBAAiB,KAAK,QAAQ,KAClC,CAAC,WAAW,OAAO,UAAU,cAAc,OAAO,cAAc,CAClE;AAAA,QACA,MAAM,iBAAiB,KAAK,QAAQ,KAClC,CAAC,WAAW,CAAC,OAAO,UAAU,cAAc,OAAO,cAAc,CACnE;AAAA,QACA,IACE,mBACE,eAAe,cAAc,aAAa,gBAAgB,SACzD,eAAe,cAAc,aAC5B,gBAAgB,eAAe,YACnC;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA,OAAO,kBAAkB;AAAA;AAAA,MAG3B,MAAM,kBAAkB,CAAC,YAAW;AAAA,QAClC,MAAM,aAAa,wBAAwB,OAAM;AAAA,QACjD,MAAM,YAAY,WAAW,cAAc;AAAA,QAC3C,MAAM,SAAS,KAAK,qBAAqB,SAAS;AAAA,QAClD,IAAI,WAAW,OAAO;AAAA,UACpB,OAAO,yBAAyB,WAAW;AAAA,QAC7C;AAAA,QACA,OAAO,WAAW,WAAW;AAAA;AAAA,MAG/B,MAAM,UAAU,UAAU,gBAAgB,MAAM,yBAAyB,gBAAgB,iBAAiB;AAAA,MAC1G,KAAK,MAAM,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAAA;AAAA,IAU7D,aAAa,CAAC,MAAM;AAAA,MAClB,IAAI,KAAK;AAAA,QAAqB;AAAA,MAC9B,IAAI,aAAa;AAAA,MAEjB,IAAI,KAAK,WAAW,IAAI,KAAK,KAAK,2BAA2B;AAAA,QAE3D,IAAI,iBAAiB,CAAC;AAAA,QAEtB,IAAI,UAAU;AAAA,QACd,GAAG;AAAA,UACD,MAAM,YAAY,QACf,WAAW,EACX,eAAe,OAAO,EACtB,OAAO,CAAC,WAAW,OAAO,IAAI,EAC9B,IAAI,CAAC,WAAW,OAAO,IAAI;AAAA,UAC9B,iBAAiB,eAAe,OAAO,SAAS;AAAA,UAChD,UAAU,QAAQ;AAAA,QACpB,SAAS,WAAW,CAAC,QAAQ;AAAA,QAC7B,aAAa,eAAe,MAAM,cAAc;AAAA,MAClD;AAAA,MAEA,MAAM,UAAU,0BAA0B,QAAQ;AAAA,MAClD,KAAK,MAAM,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAAA;AAAA,IAUzD,gBAAgB,CAAC,cAAc;AAAA,MAC7B,IAAI,KAAK;AAAA,QAAuB;AAAA,MAEhC,MAAM,WAAW,KAAK,oBAAoB;AAAA,MAC1C,MAAM,IAAI,aAAa,IAAI,KAAK;AAAA,MAChC,MAAM,gBAAgB,KAAK,SAAS,SAAS,KAAK,KAAK,OAAO;AAAA,MAC9D,MAAM,UAAU,4BAA4B,2BAA2B,oBAAoB,aAAa,aAAa;AAAA,MACrH,KAAK,MAAM,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAAA;AAAA,IAS3D,cAAc,GAAG;AAAA,MACf,MAAM,cAAc,KAAK,KAAK;AAAA,MAC9B,IAAI,aAAa;AAAA,MAEjB,IAAI,KAAK,2BAA2B;AAAA,QAClC,MAAM,iBAAiB,CAAC;AAAA,QACxB,KAAK,WAAW,EACb,gBAAgB,IAAI,EACpB,QAAQ,CAAC,YAAY;AAAA,UACpB,eAAe,KAAK,QAAQ,KAAK,CAAC;AAAA,UAElC,IAAI,QAAQ,MAAM;AAAA,YAAG,eAAe,KAAK,QAAQ,MAAM,CAAC;AAAA,SACzD;AAAA,QACH,aAAa,eAAe,aAAa,cAAc;AAAA,MACzD;AAAA,MAEA,MAAM,UAAU,2BAA2B,eAAe;AAAA,MAC1D,KAAK,MAAM,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAAA;AAAA,IAgB1D,OAAO,CAAC,MAAK,OAAO,aAAa;AAAA,MAC/B,IAAI,SAAQ;AAAA,QAAW,OAAO,KAAK;AAAA,MACnC,KAAK,WAAW;AAAA,MAChB,QAAQ,SAAS;AAAA,MACjB,cAAc,eAAe;AAAA,MAC7B,MAAM,gBAAgB,KAAK,aAAa,OAAO,WAAW;AAAA,MAC1D,KAAK,qBAAqB,cAAc,cAAc;AAAA,MACtD,KAAK,gBAAgB,aAAa;AAAA,MAElC,KAAK,GAAG,YAAY,cAAc,KAAK,GAAG,MAAM;AAAA,QAC9C,KAAK,qBAAqB,SAAS,GAAG;AAAA,CAAO;AAAA,QAC7C,KAAK,MAAM,GAAG,qBAAqB,IAAG;AAAA,OACvC;AAAA,MACD,OAAO;AAAA;AAAA,IAUT,WAAW,CAAC,MAAK,iBAAiB;AAAA,MAChC,IAAI,SAAQ,aAAa,oBAAoB;AAAA,QAC3C,OAAO,KAAK;AAAA,MACd,KAAK,eAAe;AAAA,MACpB,IAAI,iBAAiB;AAAA,QACnB,KAAK,mBAAmB;AAAA,MAC1B;AAAA,MACA,OAAO;AAAA;AAAA,IAST,OAAO,CAAC,MAAK;AAAA,MACX,IAAI,SAAQ;AAAA,QAAW,OAAO,KAAK;AAAA,MACnC,KAAK,WAAW;AAAA,MAChB,OAAO;AAAA;AAAA,IAYT,KAAK,CAAC,OAAO;AAAA,MACX,IAAI,UAAU;AAAA,QAAW,OAAO,KAAK,SAAS;AAAA,MAI9C,IAAI,UAAU;AAAA,MACd,IACE,KAAK,SAAS,WAAW,KACzB,KAAK,SAAS,KAAK,SAAS,SAAS,GAAG,oBACxC;AAAA,QAEA,UAAU,KAAK,SAAS,KAAK,SAAS,SAAS;AAAA,MACjD;AAAA,MAEA,IAAI,UAAU,QAAQ;AAAA,QACpB,MAAM,IAAI,MAAM,6CAA6C;AAAA,MAC/D,MAAM,kBAAkB,KAAK,QAAQ,aAAa,KAAK;AAAA,MACvD,IAAI,iBAAiB;AAAA,QAEnB,MAAM,cAAc,CAAC,gBAAgB,KAAK,CAAC,EACxC,OAAO,gBAAgB,QAAQ,CAAC,EAChC,KAAK,GAAG;AAAA,QACX,MAAM,IAAI,MACR,qBAAqB,sBAAsB,KAAK,KAAK,+BAA+B,cACtF;AAAA,MACF;AAAA,MAEA,QAAQ,SAAS,KAAK,KAAK;AAAA,MAC3B,OAAO;AAAA;AAAA,IAYT,OAAO,CAAC,SAAS;AAAA,MAEf,IAAI,YAAY;AAAA,QAAW,OAAO,KAAK;AAAA,MAEvC,QAAQ,QAAQ,CAAC,UAAU,KAAK,MAAM,KAAK,CAAC;AAAA,MAC5C,OAAO;AAAA;AAAA,IAUT,KAAK,CAAC,MAAK;AAAA,MACT,IAAI,SAAQ,WAAW;AAAA,QACrB,IAAI,KAAK;AAAA,UAAQ,OAAO,KAAK;AAAA,QAE7B,MAAM,OAAO,KAAK,oBAAoB,IAAI,CAAC,QAAQ;AAAA,UACjD,OAAO,qBAAqB,GAAG;AAAA,SAChC;AAAA,QACD,OAAO,CAAC,EACL,OACC,KAAK,QAAQ,UAAU,KAAK,gBAAgB,OAAO,cAAc,CAAC,GAClE,KAAK,SAAS,SAAS,cAAc,CAAC,GACtC,KAAK,oBAAoB,SAAS,OAAO,CAAC,CAC5C,EACC,KAAK,GAAG;AAAA,MACb;AAAA,MAEA,KAAK,SAAS;AAAA,MACd,OAAO;AAAA;AAAA,IAUT,IAAI,CAAC,MAAK;AAAA,MACR,IAAI,SAAQ;AAAA,QAAW,OAAO,KAAK;AAAA,MACnC,KAAK,QAAQ;AAAA,MACb,OAAO;AAAA;AAAA,IAgBT,gBAAgB,CAAC,UAAU;AAAA,MACzB,KAAK,QAAQ,KAAK,SAAS,UAAU,KAAK,QAAQ,QAAQ,CAAC;AAAA,MAE3D,OAAO;AAAA;AAAA,IAeT,aAAa,CAAC,OAAM;AAAA,MAClB,IAAI,UAAS;AAAA,QAAW,OAAO,KAAK;AAAA,MACpC,KAAK,iBAAiB;AAAA,MACtB,OAAO;AAAA;AAAA,IAUT,eAAe,CAAC,gBAAgB;AAAA,MAC9B,MAAM,SAAS,KAAK,WAAW;AAAA,MAC/B,MAAM,UAAU,KAAK,kBAAkB,cAAc;AAAA,MACrD,OAAO,eAAe;AAAA,QACpB,OAAO,QAAQ;AAAA,QACf,WAAW,QAAQ;AAAA,QACnB,iBAAiB,QAAQ;AAAA,MAC3B,CAAC;AAAA,MACD,MAAM,OAAO,OAAO,WAAW,MAAM,MAAM;AAAA,MAC3C,IAAI,QAAQ;AAAA,QAAW,OAAO;AAAA,MAC9B,OAAO,KAAK,qBAAqB,WAAW,IAAI;AAAA;AAAA,IAelD,iBAAiB,CAAC,gBAAgB;AAAA,MAChC,iBAAiB,kBAAkB,CAAC;AAAA,MACpC,MAAM,QAAQ,CAAC,CAAC,eAAe;AAAA,MAC/B,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI,OAAO;AAAA,QACT,YAAY,CAAC,SAAQ,KAAK,qBAAqB,SAAS,IAAG;AAAA,QAC3D,YAAY,KAAK,qBAAqB,gBAAgB;AAAA,QACtD,YAAY,KAAK,qBAAqB,gBAAgB;AAAA,MACxD,EAAO;AAAA,QACL,YAAY,CAAC,SAAQ,KAAK,qBAAqB,SAAS,IAAG;AAAA,QAC3D,YAAY,KAAK,qBAAqB,gBAAgB;AAAA,QACtD,YAAY,KAAK,qBAAqB,gBAAgB;AAAA;AAAA,MAExD,MAAM,QAAQ,CAAC,SAAQ;AAAA,QACrB,IAAI,CAAC;AAAA,UAAW,OAAM,KAAK,qBAAqB,WAAW,IAAG;AAAA,QAC9D,OAAO,UAAU,IAAG;AAAA;AAAA,MAEtB,OAAO,EAAE,OAAO,OAAO,WAAW,UAAU;AAAA;AAAA,IAW9C,UAAU,CAAC,gBAAgB;AAAA,MACzB,IAAI;AAAA,MACJ,IAAI,OAAO,mBAAmB,YAAY;AAAA,QACxC,qBAAqB;AAAA,QACrB,iBAAiB;AAAA,MACnB;AAAA,MAEA,MAAM,gBAAgB,KAAK,kBAAkB,cAAc;AAAA,MAE3D,MAAM,eAAe;AAAA,QACnB,OAAO,cAAc;AAAA,QACrB,OAAO,cAAc;AAAA,QACrB,SAAS;AAAA,MACX;AAAA,MAEA,KAAK,wBAAwB,EAC1B,QAAQ,EACR,QAAQ,CAAC,YAAY,QAAQ,KAAK,iBAAiB,YAAY,CAAC;AAAA,MACnE,KAAK,KAAK,cAAc,YAAY;AAAA,MAEpC,IAAI,kBAAkB,KAAK,gBAAgB,EAAE,OAAO,cAAc,MAAM,CAAC;AAAA,MACzE,IAAI,oBAAoB;AAAA,QACtB,kBAAkB,mBAAmB,eAAe;AAAA,QACpD,IACE,OAAO,oBAAoB,YAC3B,CAAC,OAAO,SAAS,eAAe,GAChC;AAAA,UACA,MAAM,IAAI,MAAM,sDAAsD;AAAA,QACxE;AAAA,MACF;AAAA,MACA,cAAc,MAAM,eAAe;AAAA,MAEnC,IAAI,KAAK,eAAe,GAAG,MAAM;AAAA,QAC/B,KAAK,KAAK,KAAK,eAAe,EAAE,IAAI;AAAA,MACtC;AAAA,MACA,KAAK,KAAK,aAAa,YAAY;AAAA,MACnC,KAAK,wBAAwB,EAAE,QAAQ,CAAC,YACtC,QAAQ,KAAK,gBAAgB,YAAY,CAC3C;AAAA;AAAA,IAgBF,UAAU,CAAC,OAAO,aAAa;AAAA,MAE7B,IAAI,OAAO,UAAU,WAAW;AAAA,QAG9B,IAAI,OAAO;AAAA,UACT,KAAK,cAAc,KAAK,eAAe;AAAA,QACzC,EAAO;AAAA,UACL,KAAK,cAAc;AAAA;AAAA,QAErB,OAAO;AAAA,MACT;AAAA,MAGA,QAAQ,SAAS;AAAA,MACjB,cAAc,eAAe;AAAA,MAC7B,KAAK,cAAc,KAAK,aAAa,OAAO,WAAW;AAAA,MAEvD,OAAO;AAAA;AAAA,IAUT,cAAc,GAAG;AAAA,MAEf,IAAI,KAAK,gBAAgB,WAAW;AAAA,QAClC,KAAK,WAAW,WAAW,SAAS;AAAA,MACtC;AAAA,MACA,OAAO,KAAK;AAAA;AAAA,IAUd,aAAa,CAAC,QAAQ;AAAA,MACpB,KAAK,cAAc;AAAA,MACnB,OAAO;AAAA;AAAA,IAWT,IAAI,CAAC,gBAAgB;AAAA,MACnB,KAAK,WAAW,cAAc;AAAA,MAC9B,IAAI,WAAW,OAAO,SAAQ,YAAY,CAAC;AAAA,MAC3C,IACE,aAAa,KACb,kBACA,OAAO,mBAAmB,cAC1B,eAAe,OACf;AAAA,QACA,WAAW;AAAA,MACb;AAAA,MAEA,KAAK,MAAM,UAAU,kBAAkB,cAAc;AAAA;AAAA,IAuBvD,WAAW,CAAC,UAAU,MAAM;AAAA,MAC1B,MAAM,gBAAgB,CAAC,aAAa,UAAU,SAAS,UAAU;AAAA,MACjE,IAAI,CAAC,cAAc,SAAS,QAAQ,GAAG;AAAA,QACrC,MAAM,IAAI,MAAM;AAAA,oBACF,cAAc,KAAK,MAAM,IAAI;AAAA,MAC7C;AAAA,MAEA,MAAM,YAAY,GAAG;AAAA,MACrB,KAAK,GAAG,WAAW,CAAqC,YAAY;AAAA,QAClE,IAAI;AAAA,QACJ,IAAI,OAAO,SAAS,YAAY;AAAA,UAC9B,UAAU,KAAK,EAAE,OAAO,QAAQ,OAAO,SAAS,QAAQ,QAAQ,CAAC;AAAA,QACnE,EAAO;AAAA,UACL,UAAU;AAAA;AAAA,QAGZ,IAAI,SAAS;AAAA,UACX,QAAQ,MAAM,GAAG;AAAA,CAAW;AAAA,QAC9B;AAAA,OACD;AAAA,MACD,OAAO;AAAA;AAAA,IAUT,sBAAsB,CAAC,MAAM;AAAA,MAC3B,MAAM,aAAa,KAAK,eAAe;AAAA,MACvC,MAAM,gBAAgB,cAAc,KAAK,KAAK,CAAC,QAAQ,WAAW,GAAG,GAAG,CAAC;AAAA,MACzE,IAAI,eAAe;AAAA,QACjB,KAAK,WAAW;AAAA,QAEhB,KAAK,MAAM,GAAG,2BAA2B,cAAc;AAAA,MACzD;AAAA;AAAA,EAEJ;AAAA,EAUA,SAAS,0BAA0B,CAAC,MAAM;AAAA,IAKxC,OAAO,KAAK,IAAI,CAAC,QAAQ;AAAA,MACvB,IAAI,CAAC,IAAI,WAAW,WAAW,GAAG;AAAA,QAChC,OAAO;AAAA,MACT;AAAA,MACA,IAAI;AAAA,MACJ,IAAI,YAAY;AAAA,MAChB,IAAI,YAAY;AAAA,MAChB,IAAI;AAAA,MACJ,KAAK,QAAQ,IAAI,MAAM,sBAAsB,OAAO,MAAM;AAAA,QAExD,cAAc,MAAM;AAAA,MACtB,EAAO,UACJ,QAAQ,IAAI,MAAM,oCAAoC,OAAO,MAC9D;AAAA,QACA,cAAc,MAAM;AAAA,QACpB,IAAI,QAAQ,KAAK,MAAM,EAAE,GAAG;AAAA,UAE1B,YAAY,MAAM;AAAA,QACpB,EAAO;AAAA,UAEL,YAAY,MAAM;AAAA;AAAA,MAEtB,EAAO,UACJ,QAAQ,IAAI,MAAM,0CAA0C,OAAO,MACpE;AAAA,QAEA,cAAc,MAAM;AAAA,QACpB,YAAY,MAAM;AAAA,QAClB,YAAY,MAAM;AAAA,MACpB;AAAA,MAEA,IAAI,eAAe,cAAc,KAAK;AAAA,QACpC,OAAO,GAAG,eAAe,aAAa,SAAS,SAAS,IAAI;AAAA,MAC9D;AAAA,MACA,OAAO;AAAA,KACR;AAAA;AAAA,EAOH,SAAS,QAAQ,GAAG;AAAA,IAalB,IACE,SAAQ,IAAI,YACZ,SAAQ,IAAI,gBAAgB,OAC5B,SAAQ,IAAI,gBAAgB;AAAA,MAE5B,OAAO;AAAA,IACT,IAAI,SAAQ,IAAI,eAAe,SAAQ,IAAI,mBAAmB;AAAA,MAC5D,OAAO;AAAA,IACT;AAAA;AAAA,EAGM,kBAAU;AAAA,EACV,mBAAW;AAAA;;;;ECrmFnB,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ,gBAAgB;AAAA,EACxB,MAAQ;AAAA,EACR,MAAQ;AAAA,EAEA,kBAAU,IAAI;AAAA,EAEd,wBAAgB,CAAC,SAAS,IAAI,QAAQ,IAAI;AAAA,EAC1C,uBAAe,CAAC,OAAO,gBAAgB,IAAI,OAAO,OAAO,WAAW;AAAA,EACpE,yBAAiB,CAAC,MAAM,gBAAgB,IAAI,SAAS,MAAM,WAAW;AAAA,EAMtE,kBAAU;AAAA,EACV,iBAAS;AAAA,EACT,mBAAW;AAAA,EACX,eAAO;AAAA,EAEP,yBAAiB;AAAA,EACjB,+BAAuB;AAAA,EACvB,qCAA6B;AAAA;;;;ECrBrC,IAAM,MAAM;AAAA,EACZ,IAAM,MAAM,GAAG;AAAA,EACf,IAAM,OAAO;AAAA,EAEb,IAAM,SAAS;AAAA,IACb,EAAE,CAAC,GAAG,GAAG;AAAA,MACP,IAAI,CAAC;AAAA,QAAG,OAAO,GAAG,MAAM,IAAI;AAAA,MAC5B,OAAO,GAAG,MAAM,IAAI,KAAK,IAAI;AAAA;AAAA,IAE/B,IAAI,CAAC,GAAG,GAAG;AAAA,MACT,IAAI,MAAM;AAAA,MAEV,IAAI,IAAI;AAAA,QAAG,OAAO,GAAG,MAAM,CAAC;AAAA,MACvB,SAAI,IAAI;AAAA,QAAG,OAAO,GAAG,MAAM;AAAA,MAEhC,IAAI,IAAI;AAAA,QAAG,OAAO,GAAG,MAAM,CAAC;AAAA,MACvB,SAAI,IAAI;AAAA,QAAG,OAAO,GAAG,MAAM;AAAA,MAEhC,OAAO;AAAA;AAAA,IAET,IAAI,CAAC,QAAQ,MAAM,GAAG,MAAM;AAAA,IAC5B,MAAM,CAAC,QAAQ,MAAM,GAAG,MAAM;AAAA,IAC9B,SAAS,CAAC,QAAQ,MAAM,GAAG,MAAM;AAAA,IACjC,UAAU,CAAC,QAAQ,MAAM,GAAG,MAAM;AAAA,IAClC,UAAU,CAAC,QAAQ,MAAM,GAAG,OAAO,OAAO,KAAK;AAAA,IAC/C,UAAU,CAAC,QAAQ,MAAM,GAAG,OAAO,OAAO,KAAK;AAAA,IAC/C,MAAM,GAAG;AAAA,IACT,MAAM,GAAG;AAAA,IACT,MAAM,GAAG;AAAA,IACT,MAAM,GAAG;AAAA,IACT,SAAS,GAAG;AAAA,EACd;AAAA,EAEA,IAAM,SAAS;AAAA,IACb,IAAI,CAAC,QAAQ,MAAM,GAAG,OAAO,OAAO,KAAK;AAAA,IACzC,MAAM,CAAC,QAAQ,MAAM,GAAG,OAAO,OAAO,KAAK;AAAA,EAC7C;AAAA,EAEA,IAAM,QAAQ;AAAA,IACZ,QAAQ,GAAG;AAAA,IACX,IAAI,CAAC,QAAQ,MAAM,GAAG,QAAQ,OAAO,KAAK;AAAA,IAC1C,MAAM,CAAC,QAAQ,MAAM,GAAG,OAAO,OAAO,KAAK;AAAA,IAC3C,MAAM,GAAG;AAAA,IACT,SAAS,GAAG;AAAA,IACZ,WAAW,GAAG;AAAA,IACd,KAAK,CAAC,OAAO;AAAA,MACX,IAAI,QAAQ;AAAA,MACZ,SAAS,IAAI,EAAG,IAAI,OAAO;AAAA,QACzB,SAAS,KAAK,QAAQ,IAAI,QAAQ,IAAI,OAAO,GAAG,IAAI;AAAA,MACtD,IAAI;AAAA,QACF,SAAS,OAAO;AAAA,MAClB,OAAO;AAAA;AAAA,EAEX;AAAA,EAEA,OAAO,UAAU,EAAE,QAAQ,QAAQ,OAAO,KAAK;AAAA;;;;ECzD/C,IAAI,IAAI,WAAW,CAAC;AAAA,EAApB,IAAuB,OAAO,EAAE,QAAQ,CAAC;AAAA,EAAzC,IAA4C,MAAM,EAAE,OAAO,CAAC;AAAA,EAC5D,IAAI,mBACH,EAAE,CAAC,CAAC,IAAI,YAAY,KAAK,SAAS,YAAY,OAC7C,CAAC,CAAC,IAAI,eAAe,KAAK,SAAS,SAAS,KAAK,EAAE,aAAa,YAAa,EAAE,UAAU,CAAC,GAAG,SAAS,IAAI,SAAS,UAAW,CAAC,CAAC,IAAI;AAAA,EAEtI,IAAI,YAAY,CAAC,MAAM,OAAO,UAAU,SACvC,WAAS;AAAA,IACR,IAAI,SAAS,KAAK,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,MAAM;AAAA,IAClE,OAAO,CAAC,QAAQ,OAAO,aAAa,QAAQ,OAAO,SAAS,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA;AAAA,EAG/F,IAAI,eAAe,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACrD,IAAI,SAAS,IAAI,SAAS;AAAA,IAC1B,GAAG;AAAA,MACF,UAAU,OAAO,UAAU,QAAQ,KAAK,IAAI;AAAA,MAC5C,SAAS,QAAQ,MAAM;AAAA,MACvB,QAAQ,OAAO,QAAQ,OAAO,MAAM;AAAA,IACrC,SAAS,CAAC;AAAA,IACV,OAAO,SAAS,OAAO,UAAU,MAAM;AAAA;AAAA,EAGxC,IAAI,eAAe,CAAC,UAAU,qBAAqB;AAAA,IAClD,IAAI,IAAI,UAAU,YAAY,MAAM;AAAA,IACpC,OAAO;AAAA,MACN,kBAAkB;AAAA,MAClB,OAAO,EAAE,WAAW,SAAS;AAAA,MAC7B,MAAM,EAAE,WAAW,YAAY,iBAAiB;AAAA,MAChD,KAAK,EAAE,WAAW,YAAY,iBAAiB;AAAA,MAC/C,QAAQ,EAAE,WAAW,UAAU;AAAA,MAC/B,WAAW,EAAE,WAAW,UAAU;AAAA,MAClC,SAAS,EAAE,WAAW,UAAU;AAAA,MAChC,QAAQ,EAAE,WAAW,UAAU;AAAA,MAC/B,eAAe,EAAE,WAAW,UAAU;AAAA,MAEtC,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,KAAK,EAAE,YAAY,UAAU;AAAA,MAC7B,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,QAAQ,EAAE,YAAY,UAAU;AAAA,MAChC,MAAM,EAAE,YAAY,UAAU;AAAA,MAC9B,SAAS,EAAE,YAAY,UAAU;AAAA,MACjC,MAAM,EAAE,YAAY,UAAU;AAAA,MAC9B,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,MAAM,EAAE,YAAY,UAAU;AAAA,MAE9B,SAAS,EAAE,YAAY,UAAU;AAAA,MACjC,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,SAAS,EAAE,YAAY,UAAU;AAAA,MACjC,UAAU,EAAE,YAAY,UAAU;AAAA,MAClC,QAAQ,EAAE,YAAY,UAAU;AAAA,MAChC,WAAW,EAAE,YAAY,UAAU;AAAA,MACnC,QAAQ,EAAE,YAAY,UAAU;AAAA,MAChC,SAAS,EAAE,YAAY,UAAU;AAAA,MAEjC,aAAa,EAAE,YAAY,UAAU;AAAA,MACrC,WAAW,EAAE,YAAY,UAAU;AAAA,MACnC,aAAa,EAAE,YAAY,UAAU;AAAA,MACrC,cAAc,EAAE,YAAY,UAAU;AAAA,MACtC,YAAY,EAAE,YAAY,UAAU;AAAA,MACpC,eAAe,EAAE,YAAY,UAAU;AAAA,MACvC,YAAY,EAAE,YAAY,UAAU;AAAA,MACpC,aAAa,EAAE,YAAY,UAAU;AAAA,MAErC,eAAe,EAAE,aAAa,UAAU;AAAA,MACxC,aAAa,EAAE,aAAa,UAAU;AAAA,MACtC,eAAe,EAAE,aAAa,UAAU;AAAA,MACxC,gBAAgB,EAAE,aAAa,UAAU;AAAA,MACzC,cAAc,EAAE,aAAa,UAAU;AAAA,MACvC,iBAAiB,EAAE,aAAa,UAAU;AAAA,MAC1C,cAAc,EAAE,aAAa,UAAU;AAAA,MACvC,eAAe,EAAE,aAAa,UAAU;AAAA,IACzC;AAAA;AAAA,EAGD,OAAO,UAAU,aAAa;AAAA,EAC9B,OAAO,QAAQ,eAAe;AAAA;;;AC1EiB,kBAAO,aAAW;AAA+B;AAAgC;AAA6B,wBAAO;AAA0D,SAAS,CAAC,GAAE,WAAU,IAAE,UAAI,CAAC,GAAE;AAAA,EAAC,MAAM,IAAE,CAAC,2JAA0J,0DAA0D,EAAE,KAAK,GAAG;AAAA,EAAE,OAAO,IAAI,OAAO,GAAE,IAAO,YAAE,GAAG;AAAA;AAAc,SAAS,CAAC,CAAC,GAAE;AAAA,EAAC,IAAG,OAAO,KAAG;AAAA,IAAS,MAAM,IAAI,UAAU,gCAAgC,OAAO,KAAK;AAAA,EAAE,OAAO,EAAE,QAAQ,GAAE,EAAE;AAAA;AAAE,SAAS,CAAC,CAAC,GAAE;AAAA,EAAC,OAAO,KAAG,EAAE,cAAY,OAAO,UAAU,eAAe,KAAK,GAAE,SAAS,IAAE,EAAE,UAAQ;AAAA;AAAq4mB,SAAS,CAAC,CAAC,GAAE,IAAE,CAAC,GAAE;AAAA,EAAC,IAAG,OAAO,KAAG,YAAU,EAAE,WAAS,MAAI,IAAE,EAAC,mBAAkB,SAAM,EAAC,GAAE,IAAE,EAAE,CAAC,GAAE,EAAE,WAAS;AAAA,IAAG,OAAO;AAAA,EAAE,IAAE,EAAE,QAAQ,GAAG,GAAE,IAAI;AAAA,EAAE,MAAM,IAAE,EAAE,oBAAkB,IAAE;AAAA,EAAE,IAAI,IAAE;AAAA,EAAE,WAAU,KAAK,GAAE;AAAA,IAAC,MAAM,IAAE,EAAE,YAAY,CAAC;AAAA,IAAE,IAAG,KAAG,MAAI,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG;AAAA,MAAI;AAAA,IAAS,QAAO,GAAG,eAAe,CAAC;AAAA,WAAO;AAAA,WAAQ;AAAA,QAAI,KAAG;AAAA,QAAE;AAAA,WAAU;AAAA,QAAI,KAAG;AAAA,QAAE;AAAA;AAAA,QAAc,KAAG;AAAA;AAAA,EAAE;AAAA,EAAC,OAAO;AAAA;AAAggC,SAAS,EAAE,GAAE;AAAA,EAAC,MAAM,IAAE,IAAI;AAAA,EAAI,YAAU,GAAE,MAAK,OAAO,QAAQ,CAAC,GAAE;AAAA,IAAC,YAAU,GAAE,MAAK,OAAO,QAAQ,CAAC;AAAA,MAAE,EAAE,KAAG,EAAC,MAAK,QAAQ,EAAE,OAAM,OAAM,QAAQ,EAAE,MAAK,GAAE,EAAE,KAAG,EAAE,IAAG,EAAE,IAAI,EAAE,IAAG,EAAE,EAAE;AAAA,IAAE,OAAO,eAAe,GAAE,GAAE,EAAC,OAAM,GAAE,YAAW,MAAE,CAAC;AAAA,EAAC;AAAA,EAAC,OAAO,OAAO,eAAe,GAAE,SAAQ,EAAC,OAAM,GAAE,YAAW,MAAE,CAAC,GAAE,EAAE,MAAM,QAAM,YAAW,EAAE,QAAQ,QAAM,YAAW,EAAE,MAAM,OAAK,EAAE,GAAE,EAAE,MAAM,UAAQ,EAAE,GAAE,EAAE,MAAM,UAAQ,EAAE,GAAE,EAAE,QAAQ,OAAK,EAAE,CAAC,GAAE,EAAE,QAAQ,UAAQ,EAAE,CAAC,GAAE,EAAE,QAAQ,UAAQ,EAAE,CAAC,GAAE,OAAO,iBAAiB,GAAE,EAAC,cAAa,EAAC,OAAM,CAAC,GAAE,GAAE,MAAI,MAAI,KAAG,MAAI,IAAE,IAAE,IAAE,KAAG,IAAE,MAAI,MAAI,KAAK,OAAO,IAAE,KAAG,MAAI,EAAE,IAAE,MAAI,KAAG,KAAG,KAAK,MAAM,IAAE,MAAI,CAAC,IAAE,IAAE,KAAK,MAAM,IAAE,MAAI,CAAC,IAAE,KAAK,MAAM,IAAE,MAAI,CAAC,GAAE,YAAW,MAAE,GAAE,UAAS,EAAC,OAAM,OAAG;AAAA,IAAC,MAAM,IAAE,yBAAyB,KAAK,EAAE,SAAS,EAAE,CAAC;AAAA,IAAE,IAAG,CAAC;AAAA,MAAE,OAAM,CAAC,GAAE,GAAE,CAAC;AAAA,IAAE,KAAI,KAAG;AAAA,IAAE,EAAE,WAAS,MAAI,IAAE,CAAC,GAAG,CAAC,EAAE,IAAI,OAAG,IAAE,CAAC,EAAE,KAAK,EAAE;AAAA,IAAG,MAAM,IAAE,OAAO,SAAS,GAAE,EAAE;AAAA,IAAE,OAAM,CAAC,KAAG,KAAG,KAAI,KAAG,IAAE,KAAI,IAAE,GAAG;AAAA,KAAG,YAAW,MAAE,GAAE,cAAa,EAAC,OAAM,OAAG,EAAE,aAAa,GAAG,EAAE,SAAS,CAAC,CAAC,GAAE,YAAW,MAAE,GAAE,eAAc,EAAC,OAAM,OAAG;AAAA,IAAC,IAAG,IAAE;AAAA,MAAE,OAAO,KAAG;AAAA,IAAE,IAAG,IAAE;AAAA,MAAG,OAAO,MAAI,IAAE;AAAA,IAAG,IAAI,GAAE,GAAE;AAAA,IAAE,IAAG,KAAG;AAAA,MAAI,MAAI,IAAE,OAAK,KAAG,KAAG,KAAI,IAAE,GAAE,IAAE;AAAA,IAAM;AAAA,MAAC,KAAG;AAAA,MAAG,MAAM,IAAE,IAAE;AAAA,MAAG,IAAE,KAAK,MAAM,IAAE,EAAE,IAAE,GAAE,IAAE,KAAK,MAAM,IAAE,CAAC,IAAE,GAAE,IAAE,IAAE,IAAE;AAAA;AAAA,IAAE,MAAM,IAAE,KAAK,IAAI,GAAE,GAAE,CAAC,IAAE;AAAA,IAAE,IAAG,MAAI;AAAA,MAAE,OAAO;AAAA,IAAG,IAAI,IAAE,MAAI,KAAK,MAAM,CAAC,KAAG,IAAE,KAAK,MAAM,CAAC,KAAG,IAAE,KAAK,MAAM,CAAC;AAAA,IAAG,OAAO,MAAI,MAAI,KAAG,KAAI;AAAA,KAAG,YAAW,MAAE,GAAE,WAAU,EAAC,OAAM,CAAC,GAAE,GAAE,MAAI,EAAE,cAAc,EAAE,aAAa,GAAE,GAAE,CAAC,CAAC,GAAE,YAAW,MAAE,GAAE,WAAU,EAAC,OAAM,OAAG,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,GAAE,YAAW,MAAE,EAAC,CAAC,GAAE;AAAA;AAGz2tB,SAAS,CAAC,CAAC,GAAE,GAAE,GAAE;AAAA,EAAC,OAAO,OAAO,CAAC,EAAE,UAAU,EAAE,QAAQ,SAAQ;AAAA,CAC1G,EAAE,MAAM;AAAA,CACR,EAAE,IAAI,OAAG,GAAG,GAAE,GAAE,CAAC,CAAC,EAAE,KAAK;AAAA,CACzB;AAAA;AAA2Y,SAAS,CAAC,CAAC,GAAE,GAAE;AAAA,EAAC,IAAG,OAAO,KAAG;AAAA,IAAS,OAAO,EAAE,QAAQ,IAAI,CAAC,MAAI;AAAA,EAAE,WAAU,KAAK;AAAA,IAAE,IAAG,MAAS,aAAG,EAAE,GAAE,CAAC;AAAA,MAAE,OAAM;AAAA,EAAG,OAAM;AAAA;AAAG,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,EAAC,IAAG,MAAI;AAAA,IAAE;AAAA,EAAO,MAAM,IAAE,EAAE,MAAM;AAAA,CACvjB,GAAE,IAAE,EAAE,MAAM;AAAA,CACZ,GAAE,IAAE,CAAC;AAAA,EAAE,SAAQ,IAAE,EAAE,IAAE,KAAK,IAAI,EAAE,QAAO,EAAE,MAAM,GAAE;AAAA,IAAI,EAAE,OAAK,EAAE,MAAI,EAAE,KAAK,CAAC;AAAA,EAAE,OAAO;AAAA;AAAkF,SAAS,EAAE,CAAC,GAAE;AAAA,EAAC,OAAO,MAAI;AAAA;AAAE,SAAS,CAAC,CAAC,GAAE,GAAE;AAAA,EAAC,MAAM,IAAE;AAAA,EAAE,EAAE,SAAO,EAAE,WAAW,CAAC;AAAA;AAAE,SAAS,EAAE,GAAE,OAAM,IAAE,GAAE,QAAO,IAAE,GAAE,WAAU,IAAE,MAAG,YAAW,IAAE,SAAI,CAAC,GAAE;AAAA,EAAC,MAAM,IAAI,kBAAgB,EAAC,OAAM,GAAE,QAAO,GAAE,QAAO,IAAG,SAAQ,EAAC,CAAC;AAAA,EAAI,qBAAmB,GAAE,CAAC,GAAE,EAAE,SAAO,EAAE,WAAW,IAAE;AAAA,EAAE,MAAM,IAAE,CAAC,KAAG,MAAK,GAAE,UAAS,QAAK;AAAA,IAAC,MAAM,IAAE,OAAO,CAAC;AAAA,IAAE,IAAG,EAAE,CAAC,GAAE,GAAE,CAAC,GAAE,QAAQ,GAAE;AAAA,MAAC,KAAG,EAAE,MAAM,yBAAE,IAAI,GAAE,QAAQ,KAAK,CAAC;AAAA,MAAE;AAAA,IAAM;AAAA,IAAC,IAAG,CAAC;AAAA,MAAE;AAAA,IAAO,MAAM,IAAE,MAAI,WAAS,IAAE,IAAG,IAAE,MAAI,WAAS,KAAG;AAAA,IAAI,aAAW,GAAE,GAAE,GAAE,MAAI;AAAA,MAAG,YAAU,GAAE,GAAE,MAAI;AAAA,QAAC,EAAE,KAAK,YAAW,CAAC;AAAA,OAAE;AAAA,KAAE;AAAA;AAAA,EAAG,OAAO,KAAG,EAAE,MAAM,yBAAE,IAAI,GAAE,EAAE,KAAK,YAAW,CAAC,GAAE,MAAI;AAAA,IAAC,EAAE,IAAI,YAAW,CAAC,GAAE,KAAG,EAAE,MAAM,yBAAE,IAAI,GAAE,EAAE,SAAO,CAAC,MAAI,EAAE,WAAW,KAAE,GAAE,EAAE,WAAS,OAAG,EAAE,MAAM;AAAA;AAAA;AAAA;AAAuK,MAAM,EAAC;AAAA,EAAC,WAAW,CAAC,GAAE,IAAE,MAAG;AAAA,IAAC,EAAE,MAAK,OAAO,GAAE,EAAE,MAAK,QAAQ,GAAE,EAAE,MAAK,cAAc,GAAE,EAAE,MAAK,IAAI,GAAE,EAAE,MAAK,MAAM,GAAE,EAAE,MAAK,SAAS,GAAE,EAAE,MAAK,UAAS,KAAE,GAAE,EAAE,MAAK,cAAa,EAAE,GAAE,EAAE,MAAK,gBAAe,IAAI,GAAG,GAAE,EAAE,MAAK,WAAU,CAAC,GAAE,EAAE,MAAK,SAAQ,SAAS,GAAE,EAAE,MAAK,SAAQ,EAAE,GAAE,EAAE,MAAK,OAAO;AAAA,IAAE,QAAM,OAAM,IAAE,GAAE,QAAO,IAAE,GAAE,QAAO,GAAE,QAAO,MAAK,MAAG;AAAA,IAAE,KAAK,OAAK,GAAE,KAAK,aAAW,KAAK,WAAW,KAAK,IAAI,GAAE,KAAK,QAAM,KAAK,MAAM,KAAK,IAAI,GAAE,KAAK,SAAO,KAAK,OAAO,KAAK,IAAI,GAAE,KAAK,UAAQ,EAAE,KAAK,IAAI,GAAE,KAAK,SAAO,GAAE,KAAK,eAAa,GAAE,KAAK,QAAM,GAAE,KAAK,SAAO;AAAA;AAAA,EAAE,WAAW,GAAE;AAAA,IAAC,KAAK,aAAa,MAAM;AAAA;AAAA,EAAE,aAAa,CAAC,GAAE,GAAE;AAAA,IAAC,MAAM,IAAE,KAAK,aAAa,IAAI,CAAC,KAAG,CAAC;AAAA,IAAE,EAAE,KAAK,CAAC,GAAE,KAAK,aAAa,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,KAAK,cAAc,GAAE,EAAC,IAAG,EAAC,CAAC;AAAA;AAAA,EAAE,IAAI,CAAC,GAAE,GAAE;AAAA,IAAC,KAAK,cAAc,GAAE,EAAC,IAAG,GAAE,MAAK,KAAE,CAAC;AAAA;AAAA,EAAE,IAAI,CAAC,MAAK,GAAE;AAAA,IAAC,MAAM,IAAE,KAAK,aAAa,IAAI,CAAC,KAAG,CAAC,GAAE,IAAE,CAAC;AAAA,IAAE,WAAU,KAAK;AAAA,MAAE,EAAE,GAAG,GAAG,CAAC,GAAE,EAAE,QAAM,EAAE,KAAK,MAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAE,CAAC,CAAC;AAAA,IAAE,WAAU,KAAK;AAAA,MAAE,EAAE;AAAA;AAAA,EAAE,MAAM,GAAE;AAAA,IAAC,OAAO,IAAI,QAAQ,CAAC,GAAE,MAAI;AAAA,MAAC,IAAG,KAAK,cAAa;AAAA,QAAC,IAAG,KAAK,aAAa;AAAA,UAAQ,OAAO,KAAK,QAAM,UAAS,KAAK,MAAM,GAAE,EAAE,CAAC;AAAA,QAAE,KAAK,aAAa,iBAAiB,SAAQ,MAAI;AAAA,UAAC,KAAK,QAAM,UAAS,KAAK,MAAM;AAAA,WAAG,EAAC,MAAK,KAAE,CAAC;AAAA,MAAC;AAAA,MAAC,MAAM,IAAE,IAAI,EAAE,CAAC;AAAA,MAAE,EAAE,SAAO,CAAC,GAAE,GAAE,MAAI;AAAA,QAAC,KAAK,WAAS,KAAK,QAAM,KAAK,IAAI,KAAK,QAAQ,OAAM,EAAE,GAAE,KAAK,UAAQ,KAAK,IAAI,UAAQ,GAAE,KAAK,KAAK,SAAQ,KAAK,KAAK,IAAG,EAAE;AAAA,SAAG,KAAK,MAAM,KAAK,CAAC,GAAE,KAAK,KAAG,EAAE,gBAAgB,EAAC,OAAM,KAAK,OAAM,QAAO,GAAE,SAAQ,GAAE,QAAO,IAAG,mBAAkB,GAAE,CAAC,GAAE,EAAE,mBAAmB,KAAK,OAAM,KAAK,EAAE,GAAE,KAAK,GAAG,OAAO,GAAE,KAAK,KAAK,iBAAoB,aAAG,KAAK,UAAQ,KAAK,GAAG,MAAM,KAAK,KAAK,YAAY,GAAE,KAAK,MAAM,GAAG,YAAW,KAAK,UAAU,GAAE,EAAE,KAAK,OAAM,IAAE,GAAE,KAAK,OAAO,GAAG,UAAS,KAAK,MAAM,GAAE,KAAK,OAAO,GAAE,KAAK,KAAK,UAAS,MAAI;AAAA,QAAC,KAAK,OAAO,MAAM,yBAAE,IAAI,GAAE,KAAK,OAAO,IAAI,UAAS,KAAK,MAAM,GAAE,EAAE,KAAK,OAAM,KAAE,GAAE,EAAE,KAAK,KAAK;AAAA,OAAE,GAAE,KAAK,KAAK,UAAS,MAAI;AAAA,QAAC,KAAK,OAAO,MAAM,yBAAE,IAAI,GAAE,KAAK,OAAO,IAAI,UAAS,KAAK,MAAM,GAAE,EAAE,KAAK,OAAM,KAAE,GAAE,EAAE,CAAC;AAAA,OAAE;AAAA,KAAE;AAAA;AAAA,EAAE,UAAU,CAAC,GAAE,GAAE;AAAA,IAAC,IAAG,KAAK,UAAQ,YAAU,KAAK,QAAM,WAAU,GAAG,SAAO,CAAC,KAAK,UAAQ,EAAE,QAAQ,IAAI,EAAE,IAAI,KAAG,KAAK,KAAK,UAAS,EAAE,QAAQ,IAAI,EAAE,IAAI,CAAC,GAAE,EAAE,QAAQ,IAAI,EAAE,IAAI,KAAG,KAAK,KAAK,UAAS,EAAE,IAAI,IAAG,MAAI,EAAE,YAAY,MAAI,OAAK,EAAE,YAAY,MAAI,QAAM,KAAK,KAAK,WAAU,EAAE,YAAY,MAAI,GAAG,GAAE,MAAI,QAAK,KAAK,KAAK,gBAAc,KAAK,UAAQ,KAAK,IAAI,MAAM,KAAK,KAAK,WAAW,GAAE,KAAK,KAAK,SAAQ,KAAK,KAAK,WAAW,KAAI,KAAG,KAAK,KAAK,OAAM,EAAE,YAAY,CAAC,GAAE,GAAG,SAAO,UAAS;AAAA,MAAC,IAAG,KAAK,KAAK,UAAS;AAAA,QAAC,MAAM,IAAE,KAAK,KAAK,SAAS,KAAK,KAAK;AAAA,QAAE,MAAI,KAAK,QAAM,aAAa,QAAM,EAAE,UAAQ,GAAE,KAAK,QAAM,SAAQ,KAAK,IAAI,MAAM,KAAK,KAAK;AAAA,MAAE;AAAA,MAAC,KAAK,UAAQ,YAAU,KAAK,QAAM;AAAA,IAAS;AAAA,IAAC,EAAE,CAAC,GAAE,GAAG,MAAK,GAAG,QAAQ,GAAE,QAAQ,MAAI,KAAK,QAAM,YAAW,KAAK,UAAQ,YAAU,KAAK,UAAQ,aAAW,KAAK,KAAK,UAAU,GAAE,KAAK,OAAO,IAAG,KAAK,UAAQ,YAAU,KAAK,UAAQ,aAAW,KAAK,MAAM;AAAA;AAAA,EAAE,KAAK,GAAE;AAAA,IAAC,KAAK,MAAM,OAAO,GAAE,KAAK,MAAM,eAAe,YAAW,KAAK,UAAU,GAAE,KAAK,OAAO,MAAM;AAAA,CACryH,GAAE,EAAE,KAAK,OAAM,KAAE,GAAE,KAAK,IAAI,MAAM,GAAE,KAAK,KAAQ,WAAE,KAAK,KAAK,GAAG,KAAK,SAAQ,KAAK,KAAK,GAAE,KAAK,YAAY;AAAA;AAAA,EAAE,aAAa,GAAE;AAAA,IAAC,MAAM,IAAE,EAAE,KAAK,YAAW,QAAQ,OAAO,SAAQ,EAAC,MAAK,KAAE,CAAC,EAAE,MAAM;AAAA,CAC9L,EAAE,SAAO;AAAA,IAAE,KAAK,OAAO,MAAM,yBAAE,KAAK,MAAK,IAAE,EAAE,CAAC;AAAA;AAAA,EAAE,MAAM,GAAE;AAAA,IAAC,MAAM,IAAE,EAAE,KAAK,QAAQ,IAAI,KAAG,IAAG,QAAQ,OAAO,SAAQ,EAAC,MAAK,KAAE,CAAC;AAAA,IAAE,IAAG,MAAI,KAAK,YAAW;AAAA,MAAC,IAAG,KAAK,UAAQ;AAAA,QAAU,KAAK,OAAO,MAAM,yBAAE,IAAI;AAAA,MAAM;AAAA,QAAC,MAAM,IAAE,GAAG,KAAK,YAAW,CAAC;AAAA,QAAE,IAAG,KAAK,cAAc,GAAE,KAAG,GAAG,WAAS,GAAE;AAAA,UAAC,MAAM,IAAE,EAAE;AAAA,UAAG,KAAK,OAAO,MAAM,yBAAE,KAAK,GAAE,CAAC,CAAC,GAAE,KAAK,OAAO,MAAM,wBAAE,MAAM,CAAC,CAAC;AAAA,UAAE,MAAM,IAAE,EAAE,MAAM;AAAA,CAC/W;AAAA,UAAE,KAAK,OAAO,MAAM,EAAE,EAAE,GAAE,KAAK,aAAW,GAAE,KAAK,OAAO,MAAM,yBAAE,KAAK,GAAE,EAAE,SAAO,IAAE,CAAC,CAAC;AAAA,UAAE;AAAA,QAAM;AAAA,QAAC,IAAG,KAAG,GAAG,SAAO,GAAE;AAAA,UAAC,MAAM,IAAE,EAAE;AAAA,UAAG,KAAK,OAAO,MAAM,yBAAE,KAAK,GAAE,CAAC,CAAC,GAAE,KAAK,OAAO,MAAM,wBAAE,KAAK,CAAC;AAAA,UAAE,MAAM,IAAE,EAAE,MAAM;AAAA,CACxM,EAAE,MAAM,CAAC;AAAA,UAAE,KAAK,OAAO,MAAM,EAAE,KAAK;AAAA,CACpC,CAAC,GAAE,KAAK,aAAW;AAAA,UAAE;AAAA,QAAM;AAAA,QAAC,KAAK,OAAO,MAAM,wBAAE,KAAK,CAAC;AAAA;AAAA,MAAE,KAAK,OAAO,MAAM,CAAC,GAAE,KAAK,UAAQ,cAAY,KAAK,QAAM,WAAU,KAAK,aAAW;AAAA,IAAC;AAAA;AAAE;AAAA,IAb/I,mBAAoM,mBAA2U,GAA2O,GAA4hI,GAAkB,IAAY,KAAG,QAAQ,GAAE;AAAA,EAAC,OAAM;AAAA,GAAwye,IAAkY,IAAE,IAAG,IAAE,CAAC,IAAE,MAAI,OAAG,QAAQ,IAAE,MAAK,IAAE,CAAC,IAAE,MAAI,OAAG,QAAQ,KAAG,OAAO,MAAK,IAAE,CAAC,IAAE,MAAI,CAAC,GAAE,GAAE,MAAI,QAAQ,KAAG,OAAO,KAAK,KAAK,MAAK,GAAk0B,IAAwB,IAA29C,IAAQ,GAA2B,KAAG,IAAG,IAAE,QAAO,IAAE,KAAI,KAAG,KAAI,IAAE,KAAI,GAAa,IAAE,OAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,KAAI,IAAE,OAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,KAAI,KAAG,OAAG,EAAE,MAAM,GAAG,EAAE,IAAI,OAAG,EAAE,CAAC,CAAC,GAAE,IAAE,CAAC,GAAE,GAAE,MAAI;AAAA,EAAC,MAAM,IAAE,CAAC,GAAG,CAAC;AAAA,EAAE,IAAI,IAAE,OAAG,IAAE,OAAG,IAAE,EAAE,EAAE,EAAE,EAAE,SAAO,EAAE,CAAC;AAAA,EAAE,YAAU,GAAE,MAAK,EAAE,QAAQ,GAAE;AAAA,IAAC,MAAM,IAAE,EAAE,CAAC;AAAA,IAAE,IAAG,IAAE,KAAG,IAAE,EAAE,EAAE,SAAO,MAAI,KAAG,EAAE,KAAK,CAAC,GAAE,IAAE,IAAG,EAAE,IAAI,CAAC,MAAI,IAAE,MAAG,IAAE,EAAE,MAAM,IAAE,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,IAAG,GAAE;AAAA,MAAC,IAAE,MAAI,MAAI,IAAE,OAAG,IAAE,SAAI,MAAI,MAAI,IAAE;AAAA,MAAI;AAAA,IAAQ;AAAA,IAAC,KAAG,GAAE,MAAI,KAAG,IAAE,EAAE,SAAO,MAAI,EAAE,KAAK,EAAE,GAAE,IAAE;AAAA,EAAE;AAAA,EAAC,CAAC,KAAG,EAAE,EAAE,SAAO,GAAG,SAAO,KAAG,EAAE,SAAO,MAAI,EAAE,EAAE,SAAO,MAAI,EAAE,IAAI;AAAA,GAAI,KAAG,OAAG;AAAA,EAAC,MAAM,IAAE,EAAE,MAAM,GAAG;AAAA,EAAE,IAAI,IAAE,EAAE;AAAA,EAAO,MAAK,IAAE,KAAG,EAAE,EAAE,EAAE,IAAE,EAAE,IAAE;AAAA,IAAI;AAAA,EAAI,OAAO,MAAI,EAAE,SAAO,IAAE,EAAE,MAAM,GAAE,CAAC,EAAE,KAAK,GAAG,IAAE,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE;AAAA,GAAG,KAAG,CAAC,GAAE,GAAE,IAAE,CAAC,MAAI;AAAA,EAAC,IAAG,EAAE,SAAO,SAAI,EAAE,KAAK,MAAI;AAAA,IAAG,OAAM;AAAA,EAAG,IAAI,IAAE,IAAG,GAAE;AAAA,EAAE,MAAM,IAAE,GAAG,CAAC;AAAA,EAAE,IAAI,IAAE,CAAC,EAAE;AAAA,EAAE,YAAU,GAAE,MAAK,EAAE,MAAM,GAAG,EAAE,QAAQ,GAAE;AAAA,IAAC,EAAE,SAAO,UAAK,EAAE,EAAE,SAAO,KAAG,EAAE,EAAE,SAAO,GAAG,UAAU;AAAA,IAAG,IAAI,IAAE,EAAE,EAAE,EAAE,SAAO,EAAE;AAAA,IAAE,IAAG,MAAI,MAAI,KAAG,MAAI,EAAE,aAAW,SAAI,EAAE,SAAO,WAAM,EAAE,KAAK,EAAE,GAAE,IAAE,KAAI,IAAE,KAAG,EAAE,SAAO,WAAM,EAAE,EAAE,SAAO,MAAI,KAAI,OAAM,EAAE,QAAM,EAAE,KAAG,GAAE;AAAA,MAAC,MAAM,IAAE,IAAE,GAAE,IAAE,IAAE,KAAK,OAAO,EAAE,KAAG,IAAE,KAAG,CAAC;AAAA,MAAE,KAAK,OAAO,EAAE,KAAG,KAAG,CAAC,IAAE,KAAG,EAAE,KAAK,EAAE,GAAE,EAAE,GAAE,GAAE,CAAC;AAAA,MAAE;AAAA,IAAQ;AAAA,IAAC,IAAG,IAAE,EAAE,KAAG,KAAG,IAAE,KAAG,EAAE,KAAG,GAAE;AAAA,MAAC,IAAG,EAAE,aAAW,SAAI,IAAE,GAAE;AAAA,QAAC,EAAE,GAAE,GAAE,CAAC;AAAA,QAAE;AAAA,MAAQ;AAAA,MAAC,EAAE,KAAK,EAAE;AAAA,IAAC;AAAA,IAAC,IAAG,IAAE,EAAE,KAAG,KAAG,EAAE,aAAW,OAAG;AAAA,MAAC,EAAE,GAAE,GAAE,CAAC;AAAA,MAAE;AAAA,IAAQ;AAAA,IAAC,EAAE,EAAE,SAAO,MAAI;AAAA,EAAC;AAAA,EAAC,EAAE,SAAO,UAAK,IAAE,EAAE,IAAI,OAAG,GAAG,CAAC,CAAC;AAAA,EAAG,MAAM,IAAE,CAAC,GAAG,EAAE,KAAK;AAAA,CACttwB,CAAC;AAAA,EAAE,YAAU,GAAE,MAAK,EAAE,QAAQ,GAAE;AAAA,IAAC,IAAG,KAAG,GAAE,EAAE,IAAI,CAAC,GAAE;AAAA,MAAC,QAAM,QAAO,MAAG,IAAI,OAAO,QAAQ,qBAAqB,cAAc,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,KAAG,EAAC,QAAO,CAAC,EAAC;AAAA,MAAE,IAAG,EAAE,SAAY,WAAE;AAAA,QAAC,MAAM,IAAE,OAAO,WAAW,EAAE,IAAI;AAAA,QAAE,IAAE,MAAI,KAAQ,YAAE;AAAA,MAAC,EAAM;AAAA,UAAE,QAAW,cAAI,IAAE,EAAE,IAAI,WAAS,IAAO,YAAE,EAAE;AAAA,IAAI;AAAA,IAAC,MAAM,IAAE,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC;AAAA,IAAE,EAAE,IAAE,OAAK;AAAA,KAC5U,MAAI,KAAG,EAAE,EAAE,IAAG,KAAG,MAAI,KAAG,EAAE,CAAC,MAAI,MAAI;AAAA,MAClC,KAAG,MAAI,KAAG,EAAE,CAAC,IAAG,MAAI,KAAG,EAAE,CAAC;AAAA,EAAG;AAAA,EAAC,OAAO;AAAA,GAGhC,IAAyD,GAE0B,IAAiD,GAAmrB,IAAyB,KAAG,CAAC,GAAE,GAAE,OAAI,KAAK,KAAE,GAAG,GAAE,GAAE,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,IAAE,EAAE,KAAG,GAAE,IAAE,CAAC,GAAE,GAAE,OAAK,GAAG,GAAE,OAAO,KAAG,WAAS,IAAE,KAAG,GAAE,CAAC,GAAE,IAKv0B,IAAgmD,IAAyB,KAAG,CAAC,GAAE,GAAE,OAAI,KAAK,KAAE,GAAG,GAAE,GAAE,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,IAAE,EAAE,KAAG,GAAE,IAAE,CAAC,GAAE,GAAE,OAAK,GAAG,GAAE,OAAO,KAAG,WAAS,IAAE,KAAG,GAAE,CAAC,GAAE,IAAO,IAAo/C,IAAyB,KAAG,CAAC,GAAE,GAAE,OAAI,KAAK,KAAE,GAAG,GAAE,GAAE,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,IAAE,EAAE,KAAG,GAAE,IAAE,CAAC,GAAE,GAAE,OAAK,GAAG,GAAE,OAAO,KAAG,WAAS,IAAE,KAAG,GAAE,CAAC,GAAE,IAAS,IAA+kC;AAAA;AAAA,EAbnoJ;AAAA,EAAoM;AAAA,EAA2U,IAAE,EAAE;AAAA,EAAuO,IAAE,EAAC,SAAQ,CAAC,EAAC;AAAA,GAAG,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,CAAC;AAAA,IAAE,EAAE,UAAQ,GAAE,EAAE,iBAAe,QAAQ,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,EAAE,WAAW,CAAC,GAAE,IAAE,EAAE,UAAQ,IAAE,EAAE,WAAW,CAAC,IAAE,GAAE,IAAE;AAAA,MAAE,OAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,UAAQ,KAAG,MAAK,KAAG,MAAK,IAAE,KAAG,KAAG,GAAE,KAAG,QAAO,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,QAAM,MAAI,KAAG,QAAM,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,QAAM,MAAI,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,SAAO,MAAI,MAAI,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,QAAM,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,SAAO,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SA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",
|
|
95
|
+
"debugId": "0E8F5FC45D1BA1A564756E2164756E21",
|
|
96
|
+
"names": []
|
|
97
|
+
}
|