@uipath/aops-tool 1.196.0 → 1.197.0-preview.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -0
- package/dist/tool.js +808 -1873
- package/package.json +28 -37
- package/dist/index.js.map +0 -18
- package/dist/tool.js.map +0 -141
package/dist/tool.js.map
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
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", "../../filesystem/src/node.ts", "../../../node_modules/open/index.js", "../../../node_modules/wsl-utils/index.js", "../../../node_modules/wsl-utils/node_modules/is-wsl/index.js", "../../../node_modules/is-inside-container/index.js", "../../../node_modules/is-inside-container/node_modules/is-docker/index.js", "../../../node_modules/powershell-utils/index.js", "../../../node_modules/wsl-utils/utilities.js", "../../../node_modules/open/node_modules/define-lazy-prop/index.js", "../../../node_modules/default-browser/index.js", "../../../node_modules/default-browser-id/index.js", "../../../node_modules/run-applescript/index.js", "../../../node_modules/bundle-name/index.js", "../../../node_modules/default-browser/windows.js", "../../../node_modules/is-in-ssh/index.js", "../../filesystem/src/index.ts", "../../common/src/catch-error.ts", "../../common/src/error-handler.ts", "../../../node_modules/commander/esm.mjs", "../../common/src/command-examples.ts", "../../common/src/singleton.ts", "../../common/src/output-context.ts", "../../common/src/completer.ts", "../../../node_modules/@jmespath-community/jmespath/dist/index.mjs", "../../../node_modules/js-yaml/dist/js-yaml.mjs", "../../common/src/logger.ts", "../../common/src/output-format-context.ts", "../../common/src/telemetry/telemetry-events.ts", "../../common/src/registry.ts", "../../common/src/telemetry/logger-telemetry-provider.ts", "../../common/src/telemetry/node-context-storage.ts", "../../common/src/telemetry/global-telemetry-properties.ts", "../../common/src/telemetry/telemetry-service.ts", "../../common/src/telemetry/node-appinsights-telemetry-provider.ts", "../../common/src/telemetry/telemetry-init.ts", "../../common/src/formatter.ts", "../../common/src/telemetry/pii-redactor.ts", "../../common/src/trackedAction.ts", "../../common/src/confirmation.ts", "../../common/src/console-guard.ts", "../../common/src/constants.ts", "../../common/src/interactivity-context.ts", "../../common/src/option-aliases.ts", "../../common/src/option-validators.ts", "../../common/src/polling/format-utils.ts", "../../common/src/polling/types.ts", "../../common/src/polling/poll-failure-mapping.ts", "../../common/src/polling/poll-until.ts", "../../common/src/polling/terminal-statuses.ts", "../../common/src/screen-logger.ts", "../../common/src/sdk-user-agent.ts", "../../common/src/tool-provider.ts", "../../sc-sdk/generated/src/runtime.ts", "../../sc-sdk/src/user-agent.ts", "../../sc-sdk/generated/src/models/TargetFramework.ts", "../../sc-sdk/generated/src/models/RepositoryDto.ts", "../../sc-sdk/generated/src/models/AutomationProjectDto.ts", "../../sc-sdk/generated/src/models/AutomationProjectDtoPagedResult.ts", "../../sc-sdk/generated/src/models/AzureAuthorizationRequest.ts", "../../sc-sdk/generated/src/models/AzureOrganizationDto.ts", "../../sc-sdk/generated/src/models/AzureProjectDto.ts", "../../sc-sdk/generated/src/models/BranchDto.ts", "../../sc-sdk/generated/src/models/FileStatusDto.ts", "../../sc-sdk/generated/src/models/CommitDto.ts", "../../sc-sdk/generated/src/models/CommitDtoLoadMoreResult.ts", "../../sc-sdk/generated/src/models/ConnectionType.ts", "../../sc-sdk/generated/src/models/ConnectionSyncState.ts", "../../sc-sdk/generated/src/models/ConnectionDto.ts", "../../sc-sdk/generated/src/models/ConnectionStateDto.ts", "../../sc-sdk/generated/src/models/InstallationRequest.ts", "../../sc-sdk/generated/src/models/ProjectFileContent.ts", "../../sc-sdk/generated/src/models/ProjectItemType.ts", "../../sc-sdk/generated/src/models/ProjectItemDetailsDto.ts", "../../sc-sdk/generated/src/models/SolutionProjectDto.ts", "../../sc-sdk/generated/src/models/SolutionDto.ts", "../../sc-sdk/generated/src/models/SolutionDtoPagedResult.ts", "../../sc-sdk/generated/src/apis/ConnectionsApi.ts", "../../sc-sdk/generated/src/apis/ProjectsApi.ts", "../../sc-sdk/generated/src/apis/RepositoriesApi.ts", "../../sc-sdk/generated/src/apis/SolutionsApi.ts", "../../auth/src/provider.ts", "../../auth/src/getLoginStatusAsync.ts", "../../auth/src/authContext.ts", "../../sc-sdk/src/client-factory.ts", "../../cicd-sdk/generated/src/runtime.ts", "../../cicd-sdk/src/user-agent.ts", "../../cicd-sdk/generated/src/models/AccessTokenDto.ts", "../../cicd-sdk/generated/src/models/PipelineRunMode.ts", "../../cicd-sdk/generated/src/models/EditPipelineDto.ts", "../../cicd-sdk/generated/src/models/JobState.ts", "../../cicd-sdk/generated/src/models/Robot.ts", "../../cicd-sdk/generated/src/models/Machine.ts", "../../cicd-sdk/generated/src/models/Release.ts", "../../cicd-sdk/generated/src/models/JobDetailsDto.ts", "../../cicd-sdk/generated/src/models/PipelineExecutionState.ts", "../../cicd-sdk/generated/src/models/PipelineExecutionDto.ts", "../../cicd-sdk/generated/src/models/PipelineDto.ts", "../../cicd-sdk/generated/src/models/PipelineDtoLoadMoreResult.ts", "../../cicd-sdk/generated/src/models/PipelineDtoPagedResult.ts", "../../cicd-sdk/generated/src/models/PipelineExecutionDtoLoadMoreResult.ts", "../../cicd-sdk/generated/src/models/PipelineExecutionDtoPagedResult.ts", "../../cicd-sdk/generated/src/models/PipelineProcessDto.ts", "../../cicd-sdk/generated/src/models/PipelineRepoDto.ts", "../../cicd-sdk/generated/src/models/PipelinesStateDto.ts", "../../cicd-sdk/generated/src/models/RobotLogDto.ts", "../../cicd-sdk/generated/src/models/RobotLogDtoLoadMoreResult.ts", "../../cicd-sdk/generated/src/apis/PipelineApi.ts", "../../cicd-sdk/generated/src/apis/PipelineExecutionsApi.ts", "../../cicd-sdk/src/client-factory.ts", "../src/commands/_shared/get-api.ts", "../src/commands/_shared/project-row.ts", "../src/commands/_shared/sync-poller.ts", "../src/commands/connection.ts", "../src/commands/execution.ts", "../src/commands/_shared/execution-row.ts", "../src/commands/_shared/load-json.ts", "../src/commands/_shared/pipeline-row.ts", "../src/commands/_shared/process-row.ts", "../src/commands/_shared/to-edit-dto.ts", "../src/commands/_shared/write-json-file.ts", "../src/commands/pipeline.ts", "../src/commands/project.ts", "../src/commands/repo.ts", "../src/commands/solution.ts", "../src/tool.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.endsWith('...')) {\n this.variadic = true;\n this._name = this._name.slice(0, -3);\n }\n }\n\n /**\n * Return argument name.\n *\n * @return {string}\n */\n\n name() {\n return this._name;\n }\n\n /**\n * @package\n */\n\n _collectValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n previous.push(value);\n return previous;\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Argument}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI command arguments into argument values.\n *\n * @param {Function} [fn]\n * @return {Argument}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Only allow argument value to be one of choices.\n *\n * @param {string[]} values\n * @return {Argument}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._collectValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Make argument required.\n *\n * @returns {Argument}\n */\n argRequired() {\n this.required = true;\n return this;\n }\n\n /**\n * Make argument optional.\n *\n * @returns {Argument}\n */\n argOptional() {\n this.required = false;\n return this;\n }\n}\n\n/**\n * Takes an argument and returns its human readable equivalent for help usage.\n *\n * @param {Argument} arg\n * @return {string}\n * @private\n */\n\nfunction humanReadableArgName(arg) {\n const nameOutput = arg.name() + (arg.variadic === true ? '...' : '');\n\n return arg.required ? '<' + nameOutput + '>' : '[' + nameOutput + ']';\n}\n\nexports.Argument = Argument;\nexports.humanReadableArgName = humanReadableArgName;\n",
|
|
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 const extraDescription = `(${extraInfo.join(', ')})`;\n if (option.description) {\n return `${option.description} ${extraDescription}`;\n }\n return extraDescription;\n }\n\n return option.description;\n }\n\n /**\n * Get the argument description to show in the list of arguments.\n *\n * @param {Argument} argument\n * @return {string}\n */\n\n argumentDescription(argument) {\n const extraInfo = [];\n if (argument.argChoices) {\n extraInfo.push(\n // use stringify to match the display of the default value\n `choices: ${argument.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n );\n }\n if (argument.defaultValue !== undefined) {\n extraInfo.push(\n `default: ${argument.defaultValueDescription || JSON.stringify(argument.defaultValue)}`,\n );\n }\n if (extraInfo.length > 0) {\n const extraDescription = `(${extraInfo.join(', ')})`;\n if (argument.description) {\n return `${argument.description} ${extraDescription}`;\n }\n return extraDescription;\n }\n return argument.description;\n }\n\n /**\n * Format a list of items, given a heading and an array of formatted items.\n *\n * @param {string} heading\n * @param {string[]} items\n * @param {Help} helper\n * @returns string[]\n */\n formatItemList(heading, items, helper) {\n if (items.length === 0) return [];\n\n return [helper.styleTitle(heading), ...items, ''];\n }\n\n /**\n * Group items by their help group heading.\n *\n * @param {Command[] | Option[]} unsortedItems\n * @param {Command[] | Option[]} visibleItems\n * @param {Function} getGroup\n * @returns {Map<string, Command[] | Option[]>}\n */\n groupItems(unsortedItems, visibleItems, getGroup) {\n const result = new Map();\n // Add groups in order of appearance in unsortedItems.\n unsortedItems.forEach((item) => {\n const group = getGroup(item);\n if (!result.has(group)) result.set(group, []);\n });\n // Add items in order of appearance in visibleItems.\n visibleItems.forEach((item) => {\n const group = getGroup(item);\n if (!result.has(group)) {\n result.set(group, []);\n }\n result.get(group).push(item);\n });\n return result;\n }\n\n /**\n * Generate the built-in help text.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {string}\n */\n\n formatHelp(cmd, helper) {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth ?? 80; // in case prepareContext() was not called\n\n function callFormatItem(term, description) {\n return helper.formatItem(term, termWidth, description, helper);\n }\n\n // Usage\n let output = [\n `${helper.styleTitle('Usage:')} ${helper.styleUsage(helper.commandUsage(cmd))}`,\n '',\n ];\n\n // Description\n const commandDescription = helper.commandDescription(cmd);\n if (commandDescription.length > 0) {\n output = output.concat([\n helper.boxWrap(\n helper.styleCommandDescription(commandDescription),\n helpWidth,\n ),\n '',\n ]);\n }\n\n // Arguments\n const argumentList = helper.visibleArguments(cmd).map((argument) => {\n return callFormatItem(\n helper.styleArgumentTerm(helper.argumentTerm(argument)),\n helper.styleArgumentDescription(helper.argumentDescription(argument)),\n );\n });\n output = output.concat(\n this.formatItemList('Arguments:', argumentList, helper),\n );\n\n // Options\n const optionGroups = this.groupItems(\n cmd.options,\n helper.visibleOptions(cmd),\n (option) => option.helpGroupHeading ?? 'Options:',\n );\n optionGroups.forEach((options, group) => {\n const optionList = options.map((option) => {\n return callFormatItem(\n helper.styleOptionTerm(helper.optionTerm(option)),\n helper.styleOptionDescription(helper.optionDescription(option)),\n );\n });\n output = output.concat(this.formatItemList(group, optionList, helper));\n });\n\n if (helper.showGlobalOptions) {\n const globalOptionList = helper\n .visibleGlobalOptions(cmd)\n .map((option) => {\n return callFormatItem(\n helper.styleOptionTerm(helper.optionTerm(option)),\n helper.styleOptionDescription(helper.optionDescription(option)),\n );\n });\n output = output.concat(\n this.formatItemList('Global Options:', globalOptionList, helper),\n );\n }\n\n // Commands\n const commandGroups = this.groupItems(\n cmd.commands,\n helper.visibleCommands(cmd),\n (sub) => sub.helpGroup() || 'Commands:',\n );\n commandGroups.forEach((commands, group) => {\n const commandList = commands.map((sub) => {\n return callFormatItem(\n helper.styleSubcommandTerm(helper.subcommandTerm(sub)),\n helper.styleSubcommandDescription(helper.subcommandDescription(sub)),\n );\n });\n output = output.concat(this.formatItemList(group, commandList, helper));\n });\n\n return output.join('\\n');\n }\n\n /**\n * Return display width of string, ignoring ANSI escape sequences. Used in padding and wrapping calculations.\n *\n * @param {string} str\n * @returns {number}\n */\n displayWidth(str) {\n return stripColor(str).length;\n }\n\n /**\n * Style the title for displaying in the help. Called with 'Usage:', 'Options:', etc.\n *\n * @param {string} str\n * @returns {string}\n */\n styleTitle(str) {\n return str;\n }\n\n styleUsage(str) {\n // Usage has lots of parts the user might like to color separately! Assume default usage string which is formed like:\n // command subcommand [options] [command] <foo> [bar]\n return str\n .split(' ')\n .map((word) => {\n if (word === '[options]') return this.styleOptionText(word);\n if (word === '[command]') return this.styleSubcommandText(word);\n if (word[0] === '[' || word[0] === '<')\n return this.styleArgumentText(word);\n return this.styleCommandText(word); // Restrict to initial words?\n })\n .join(' ');\n }\n styleCommandDescription(str) {\n return this.styleDescriptionText(str);\n }\n styleOptionDescription(str) {\n return this.styleDescriptionText(str);\n }\n styleSubcommandDescription(str) {\n return this.styleDescriptionText(str);\n }\n styleArgumentDescription(str) {\n return this.styleDescriptionText(str);\n }\n styleDescriptionText(str) {\n return str;\n }\n styleOptionTerm(str) {\n return this.styleOptionText(str);\n }\n styleSubcommandTerm(str) {\n // This is very like usage with lots of parts! Assume default string which is formed like:\n // subcommand [options] <foo> [bar]\n return str\n .split(' ')\n .map((word) => {\n if (word === '[options]') return this.styleOptionText(word);\n if (word[0] === '[' || word[0] === '<')\n return this.styleArgumentText(word);\n return this.styleSubcommandText(word); // Restrict to initial words?\n })\n .join(' ');\n }\n styleArgumentTerm(str) {\n return this.styleArgumentText(str);\n }\n styleOptionText(str) {\n return str;\n }\n styleArgumentText(str) {\n return str;\n }\n styleSubcommandText(str) {\n return str;\n }\n styleCommandText(str) {\n return str;\n }\n\n /**\n * Calculate the pad width from the maximum term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n padWidth(cmd, helper) {\n return Math.max(\n helper.longestOptionTermLength(cmd, helper),\n helper.longestGlobalOptionTermLength(cmd, helper),\n helper.longestSubcommandTermLength(cmd, helper),\n helper.longestArgumentTermLength(cmd, helper),\n );\n }\n\n /**\n * Detect manually wrapped and indented strings by checking for line break followed by whitespace.\n *\n * @param {string} str\n * @returns {boolean}\n */\n preformatted(str) {\n return /\\n[^\\S\\r\\n]/.test(str);\n }\n\n /**\n * Format the \"item\", which consists of a term and description. Pad the term and wrap the description, indenting the following lines.\n *\n * So \"TTT\", 5, \"DDD DDDD DD DDD\" might be formatted for this.helpWidth=17 like so:\n * TTT DDD DDDD\n * DD DDD\n *\n * @param {string} term\n * @param {number} termWidth\n * @param {string} description\n * @param {Help} helper\n * @returns {string}\n */\n formatItem(term, termWidth, description, helper) {\n const itemIndent = 2;\n const itemIndentStr = ' '.repeat(itemIndent);\n if (!description) return itemIndentStr + term;\n\n // Pad the term out to a consistent width, so descriptions are aligned.\n const paddedTerm = term.padEnd(\n termWidth + term.length - helper.displayWidth(term),\n );\n\n // Format the description.\n const spacerWidth = 2; // between term and description\n const helpWidth = this.helpWidth ?? 80; // in case prepareContext() was not called\n const remainingWidth = helpWidth - termWidth - spacerWidth - itemIndent;\n let formattedDescription;\n if (\n remainingWidth < this.minWidthToWrap ||\n helper.preformatted(description)\n ) {\n formattedDescription = description;\n } else {\n const wrappedDescription = helper.boxWrap(description, remainingWidth);\n formattedDescription = wrappedDescription.replace(\n /\\n/g,\n '\\n' + ' '.repeat(termWidth + spacerWidth),\n );\n }\n\n // Construct and overall indent.\n return (\n itemIndentStr +\n paddedTerm +\n ' '.repeat(spacerWidth) +\n formattedDescription.replace(/\\n/g, `\\n${itemIndentStr}`)\n );\n }\n\n /**\n * Wrap a string at whitespace, preserving existing line breaks.\n * Wrapping is skipped if the width is less than `minWidthToWrap`.\n *\n * @param {string} str\n * @param {number} width\n * @returns {string}\n */\n boxWrap(str, width) {\n if (width < this.minWidthToWrap) return str;\n\n const rawLines = str.split(/\\r\\n|\\n/);\n // split up text by whitespace\n const chunkPattern = /[\\s]*[^\\s]+/g;\n const wrappedLines = [];\n rawLines.forEach((line) => {\n const chunks = line.match(chunkPattern);\n if (chunks === null) {\n wrappedLines.push('');\n return;\n }\n\n let sumChunks = [chunks.shift()];\n let sumWidth = this.displayWidth(sumChunks[0]);\n chunks.forEach((chunk) => {\n const visibleWidth = this.displayWidth(chunk);\n // Accumulate chunks while they fit into width.\n if (sumWidth + visibleWidth <= width) {\n sumChunks.push(chunk);\n sumWidth += visibleWidth;\n return;\n }\n wrappedLines.push(sumChunks.join(''));\n\n const nextChunk = chunk.trimStart(); // trim space at line break\n sumChunks = [nextChunk];\n sumWidth = this.displayWidth(nextChunk);\n });\n wrappedLines.push(sumChunks.join(''));\n });\n\n return wrappedLines.join('\\n');\n }\n}\n\n/**\n * Strip style ANSI escape sequences from the string. In particular, SGR (Select Graphic Rendition) codes.\n *\n * @param {string} str\n * @returns {string}\n * @package\n */\n\nfunction stripColor(str) {\n // eslint-disable-next-line no-control-regex\n const sgrPattern = /\\x1b\\[\\d*(;\\d*)*m/g;\n return str.replace(sgrPattern, '');\n}\n\nexports.Help = Help;\nexports.stripColor = stripColor;\n",
|
|
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 this.helpGroupHeading = undefined; // soft initialised when option added to command\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Option}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Preset to use when option used without option-argument, especially optional but also boolean and negated.\n * The custom processing (parseArg) is called.\n *\n * @example\n * new Option('--color').default('GREYSCALE').preset('RGB');\n * new Option('--donate [amount]').preset('20').argParser(parseFloat);\n *\n * @param {*} arg\n * @return {Option}\n */\n\n preset(arg) {\n this.presetArg = arg;\n return this;\n }\n\n /**\n * Add option name(s) that conflict with this option.\n * An error will be displayed if conflicting options are found during parsing.\n *\n * @example\n * new Option('--rgb').conflicts('cmyk');\n * new Option('--js').conflicts(['ts', 'jsx']);\n *\n * @param {(string | string[])} names\n * @return {Option}\n */\n\n conflicts(names) {\n this.conflictsWith = this.conflictsWith.concat(names);\n return this;\n }\n\n /**\n * Specify implied option values for when this option is set and the implied options are not.\n *\n * The custom processing (parseArg) is not called on the implied values.\n *\n * @example\n * program\n * .addOption(new Option('--log', 'write logging information to file'))\n * .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' }));\n *\n * @param {object} impliedOptionValues\n * @return {Option}\n */\n implies(impliedOptionValues) {\n let newImplied = impliedOptionValues;\n if (typeof impliedOptionValues === 'string') {\n // string is not documented, but easy mistake and we can do what user probably intended.\n newImplied = { [impliedOptionValues]: true };\n }\n this.implied = Object.assign(this.implied || {}, newImplied);\n return this;\n }\n\n /**\n * Set environment variable to check for option value.\n *\n * An environment variable is only used if when processed the current option value is\n * undefined, or the source of the current value is 'default' or 'config' or 'env'.\n *\n * @param {string} name\n * @return {Option}\n */\n\n env(name) {\n this.envVar = name;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI option arguments into option values.\n *\n * @param {Function} [fn]\n * @return {Option}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Whether the option is mandatory and must have a value after parsing.\n *\n * @param {boolean} [mandatory=true]\n * @return {Option}\n */\n\n makeOptionMandatory(mandatory = true) {\n this.mandatory = !!mandatory;\n return this;\n }\n\n /**\n * Hide option in help.\n *\n * @param {boolean} [hide=true]\n * @return {Option}\n */\n\n hideHelp(hide = true) {\n this.hidden = !!hide;\n return this;\n }\n\n /**\n * @package\n */\n\n _collectValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n previous.push(value);\n return previous;\n }\n\n /**\n * Only allow option value to be one of choices.\n *\n * @param {string[]} values\n * @return {Option}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._collectValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Return option name.\n *\n * @return {string}\n */\n\n name() {\n if (this.long) {\n return this.long.replace(/^--/, '');\n }\n return this.short.replace(/^-/, '');\n }\n\n /**\n * Return option name, in a camelcase format that can be used\n * as an object attribute key.\n *\n * @return {string}\n */\n\n attributeName() {\n if (this.negate) {\n return camelcase(this.name().replace(/^no-/, ''));\n }\n return camelcase(this.name());\n }\n\n /**\n * Set the help group heading.\n *\n * @param {string} heading\n * @return {Option}\n */\n helpGroup(heading) {\n this.helpGroupHeading = heading;\n return this;\n }\n\n /**\n * Check if `arg` matches the short or long flag.\n *\n * @param {string} arg\n * @return {boolean}\n * @package\n */\n\n is(arg) {\n return this.short === arg || this.long === arg;\n }\n\n /**\n * Return whether a boolean option.\n *\n * Options are one of boolean, negated, required argument, or optional argument.\n *\n * @return {boolean}\n * @package\n */\n\n isBoolean() {\n return !this.required && !this.optional && !this.negate;\n }\n}\n\n/**\n * This class is to make it easier to work with dual options, without changing the existing\n * implementation. We support separate dual options for separate positive and negative options,\n * like `--build` and `--no-build`, which share a single option value. This works nicely for some\n * use cases, but is tricky for others where we want separate behaviours despite\n * the single shared option value.\n */\nclass DualOptions {\n /**\n * @param {Option[]} options\n */\n constructor(options) {\n this.positiveOptions = new Map();\n this.negativeOptions = new Map();\n this.dualOptions = new Set();\n options.forEach((option) => {\n if (option.negate) {\n this.negativeOptions.set(option.attributeName(), option);\n } else {\n this.positiveOptions.set(option.attributeName(), option);\n }\n });\n this.negativeOptions.forEach((value, key) => {\n if (this.positiveOptions.has(key)) {\n this.dualOptions.add(key);\n }\n });\n }\n\n /**\n * Did the value come from the option, and not from possible matching dual option?\n *\n * @param {*} value\n * @param {Option} option\n * @returns {boolean}\n */\n valueFromOption(value, option) {\n const optionKey = option.attributeName();\n if (!this.dualOptions.has(optionKey)) return true;\n\n // Use the value to deduce if (probably) came from the option.\n const preset = this.negativeOptions.get(optionKey).presetArg;\n const negativeValue = preset !== undefined ? preset : false;\n return option.negate === (negativeValue === value);\n }\n}\n\n/**\n * Convert string from kebab-case to camelCase.\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction camelcase(str) {\n return str.split('-').reduce((str, word) => {\n return str + word[0].toUpperCase() + word.slice(1);\n });\n}\n\n/**\n * Split the short and long flag out of something like '-m,--mixed <value>'\n *\n * @private\n */\n\nfunction splitOptionFlags(flags) {\n let shortFlag;\n let longFlag;\n // short flag, single dash and single character\n const shortFlagExp = /^-[^-]$/;\n // long flag, double dash and at least one character\n const longFlagExp = /^--[^-]/;\n\n const flagParts = flags.split(/[ |,]+/).concat('guard');\n // Normal is short and/or long.\n if (shortFlagExp.test(flagParts[0])) shortFlag = flagParts.shift();\n if (longFlagExp.test(flagParts[0])) longFlag = flagParts.shift();\n // Long then short. Rarely used but fine.\n if (!shortFlag && shortFlagExp.test(flagParts[0]))\n shortFlag = flagParts.shift();\n // Allow two long flags, like '--ws, --workspace'\n // This is the supported way to have a shortish option flag.\n if (!shortFlag && longFlagExp.test(flagParts[0])) {\n shortFlag = longFlag;\n longFlag = flagParts.shift();\n }\n\n // Check for unprocessed flag. Fail noisily rather than silently ignore.\n if (flagParts[0].startsWith('-')) {\n const unsupportedFlag = flagParts[0];\n const baseError = `option creation failed due to '${unsupportedFlag}' in option flags '${flags}'`;\n if (/^-[^-][^-]/.test(unsupportedFlag))\n throw new Error(\n `${baseError}\n- a short flag is a single dash and a single character\n - either use a single dash and a single character (for a short flag)\n - or use a double dash for a long option (and can have two, like '--ws, --workspace')`,\n );\n if (shortFlagExp.test(unsupportedFlag))\n throw new Error(`${baseError}\n- too many short flags`);\n if (longFlagExp.test(unsupportedFlag))\n throw new Error(`${baseError}\n- too many long flags`);\n\n throw new Error(`${baseError}\n- unrecognised flag format`);\n }\n if (shortFlag === undefined && longFlag === undefined)\n throw new Error(\n `option creation failed due to no flags found in '${flags}'.`,\n );\n\n return { shortFlag, longFlag };\n}\n\nexports.Option = Option;\nexports.DualOptions = DualOptions;\n",
|
|
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 /** @type {string | undefined} */\n this._helpGroupHeading = undefined; // soft initialised when added to parent\n /** @type {string | undefined} */\n this._defaultCommandGroup = undefined;\n /** @type {string | undefined} */\n this._defaultOptionGroup = undefined;\n }\n\n /**\n * Copy settings that are useful to have in common across root command and subcommands.\n *\n * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.)\n *\n * @param {Command} sourceCommand\n * @return {Command} `this` command for chaining\n */\n copyInheritedSettings(sourceCommand) {\n this._outputConfiguration = sourceCommand._outputConfiguration;\n this._helpOption = sourceCommand._helpOption;\n this._helpCommand = sourceCommand._helpCommand;\n this._helpConfiguration = sourceCommand._helpConfiguration;\n this._exitCallback = sourceCommand._exitCallback;\n this._storeOptionsAsProperties = sourceCommand._storeOptionsAsProperties;\n this._combineFlagAndOptionalValue =\n sourceCommand._combineFlagAndOptionalValue;\n this._allowExcessArguments = sourceCommand._allowExcessArguments;\n this._enablePositionalOptions = sourceCommand._enablePositionalOptions;\n this._showHelpAfterError = sourceCommand._showHelpAfterError;\n this._showSuggestionAfterError = sourceCommand._showSuggestionAfterError;\n\n return this;\n }\n\n /**\n * @returns {Command[]}\n * @private\n */\n\n _getCommandAndAncestors() {\n const result = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n for (let command = this; command; command = command.parent) {\n result.push(command);\n }\n return result;\n }\n\n /**\n * Define a command.\n *\n * There are two styles of command: pay attention to where to put the description.\n *\n * @example\n * // Command implemented using action handler (description is supplied separately to `.command`)\n * program\n * .command('clone <source> [destination]')\n * .description('clone a repository into a newly created directory')\n * .action((source, destination) => {\n * console.log('clone command called');\n * });\n *\n * // Command implemented using separate executable file (description is second parameter to `.command`)\n * program\n * .command('start <service>', 'start named service')\n * .command('stop [service]', 'stop named service, or all if no name supplied');\n *\n * @param {string} nameAndArgs - command name and arguments, args are `<required>` or `[optional]` and last may also be `variadic...`\n * @param {(object | string)} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable)\n * @param {object} [execOpts] - configuration options (for executable)\n * @return {Command} returns new command for action handler, or `this` for executable command\n */\n\n command(nameAndArgs, actionOptsOrExecDesc, execOpts) {\n let desc = actionOptsOrExecDesc;\n let opts = execOpts;\n if (typeof desc === 'object' && desc !== null) {\n opts = desc;\n desc = null;\n }\n opts = opts || {};\n const [, name, args] = nameAndArgs.match(/([^ ]+) *(.*)/);\n\n const cmd = this.createCommand(name);\n if (desc) {\n cmd.description(desc);\n cmd._executableHandler = true;\n }\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n cmd._hidden = !!(opts.noHelp || opts.hidden); // noHelp is deprecated old name for hidden\n cmd._executableFile = opts.executableFile || null; // Custom name for executable file, set missing to null to match constructor\n if (args) cmd.arguments(args);\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd.copyInheritedSettings(this);\n\n if (desc) return this;\n return cmd;\n }\n\n /**\n * Factory routine to create a new unattached command.\n *\n * See .command() for creating an attached subcommand, which uses this routine to\n * create the command. You can override createCommand to customise subcommands.\n *\n * @param {string} [name]\n * @return {Command} new command\n */\n\n createCommand(name) {\n return new Command(name);\n }\n\n /**\n * You can customise the help with a subclass of Help by overriding createHelp,\n * or by overriding Help properties using configureHelp().\n *\n * @return {Help}\n */\n\n createHelp() {\n return Object.assign(new Help(), this.configureHelp());\n }\n\n /**\n * You can customise the help by overriding Help properties using configureHelp(),\n * or with a subclass of Help by overriding createHelp().\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureHelp(configuration) {\n if (configuration === undefined) return this._helpConfiguration;\n\n this._helpConfiguration = configuration;\n return this;\n }\n\n /**\n * The default output goes to stdout and stderr. You can customise this for special\n * applications. You can also customise the display of errors by overriding outputError.\n *\n * The configuration properties are all functions:\n *\n * // change how output being written, defaults to stdout and stderr\n * writeOut(str)\n * writeErr(str)\n * // change how output being written for errors, defaults to writeErr\n * outputError(str, write) // used for displaying errors and not used for displaying help\n * // specify width for wrapping help\n * getOutHelpWidth()\n * getErrHelpWidth()\n * // color support, currently only used with Help\n * getOutHasColors()\n * getErrHasColors()\n * stripColor() // used to remove ANSI escape codes if output does not have colors\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureOutput(configuration) {\n if (configuration === undefined) return this._outputConfiguration;\n\n this._outputConfiguration = {\n ...this._outputConfiguration,\n ...configuration,\n };\n return this;\n }\n\n /**\n * Display the help or a custom message after an error occurs.\n *\n * @param {(boolean|string)} [displayHelp]\n * @return {Command} `this` command for chaining\n */\n showHelpAfterError(displayHelp = true) {\n if (typeof displayHelp !== 'string') displayHelp = !!displayHelp;\n this._showHelpAfterError = displayHelp;\n return this;\n }\n\n /**\n * Display suggestion of similar commands for unknown commands, or options for unknown options.\n *\n * @param {boolean} [displaySuggestion]\n * @return {Command} `this` command for chaining\n */\n showSuggestionAfterError(displaySuggestion = true) {\n this._showSuggestionAfterError = !!displaySuggestion;\n return this;\n }\n\n /**\n * Add a prepared subcommand.\n *\n * See .command() for creating an attached subcommand which inherits settings from its parent.\n *\n * @param {Command} cmd - new subcommand\n * @param {object} [opts] - configuration options\n * @return {Command} `this` command for chaining\n */\n\n addCommand(cmd, opts) {\n if (!cmd._name) {\n throw new Error(`Command passed to .addCommand() must have a name\n- specify the name in Command constructor or using .name()`);\n }\n\n opts = opts || {};\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n if (opts.noHelp || opts.hidden) cmd._hidden = true; // modifying passed command due to existing implementation\n\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd._checkForBrokenPassThrough();\n\n return this;\n }\n\n /**\n * Factory routine to create a new unattached argument.\n *\n * See .argument() for creating an attached argument, which uses this routine to\n * create the argument. You can override createArgument to return a custom argument.\n *\n * @param {string} name\n * @param {string} [description]\n * @return {Argument} new argument\n */\n\n createArgument(name, description) {\n return new Argument(name, description);\n }\n\n /**\n * Define argument syntax for command.\n *\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @example\n * program.argument('<input-file>');\n * program.argument('[output-file]');\n *\n * @param {string} name\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom argument processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n argument(name, description, parseArg, defaultValue) {\n const argument = this.createArgument(name, description);\n if (typeof parseArg === 'function') {\n argument.default(defaultValue).argParser(parseArg);\n } else {\n argument.default(parseArg);\n }\n this.addArgument(argument);\n return this;\n }\n\n /**\n * Define argument syntax for command, adding multiple at once (without descriptions).\n *\n * See also .argument().\n *\n * @example\n * program.arguments('<cmd> [env]');\n *\n * @param {string} names\n * @return {Command} `this` command for chaining\n */\n\n arguments(names) {\n names\n .trim()\n .split(/ +/)\n .forEach((detail) => {\n this.argument(detail);\n });\n return this;\n }\n\n /**\n * Define argument syntax for command, adding a prepared argument.\n *\n * @param {Argument} argument\n * @return {Command} `this` command for chaining\n */\n addArgument(argument) {\n const previousArgument = this.registeredArguments.slice(-1)[0];\n if (previousArgument?.variadic) {\n throw new Error(\n `only the last argument can be variadic '${previousArgument.name()}'`,\n );\n }\n if (\n argument.required &&\n argument.defaultValue !== undefined &&\n argument.parseArg === undefined\n ) {\n throw new Error(\n `a default value for a required argument is never used: '${argument.name()}'`,\n );\n }\n this.registeredArguments.push(argument);\n return this;\n }\n\n /**\n * Customise or override default help command. By default a help command is automatically added if your command has subcommands.\n *\n * @example\n * program.helpCommand('help [cmd]');\n * program.helpCommand('help [cmd]', 'show help');\n * program.helpCommand(false); // suppress default help command\n * program.helpCommand(true); // add help command even if no subcommands\n *\n * @param {string|boolean} enableOrNameAndArgs - enable with custom name and/or arguments, or boolean to override whether added\n * @param {string} [description] - custom description\n * @return {Command} `this` command for chaining\n */\n\n helpCommand(enableOrNameAndArgs, description) {\n if (typeof enableOrNameAndArgs === 'boolean') {\n this._addImplicitHelpCommand = enableOrNameAndArgs;\n if (enableOrNameAndArgs && this._defaultCommandGroup) {\n // make the command to store the group\n this._initCommandGroup(this._getHelpCommand());\n }\n return this;\n }\n\n const nameAndArgs = enableOrNameAndArgs ?? 'help [command]';\n const [, helpName, helpArgs] = nameAndArgs.match(/([^ ]+) *(.*)/);\n const helpDescription = description ?? 'display help for command';\n\n const helpCommand = this.createCommand(helpName);\n helpCommand.helpOption(false);\n if (helpArgs) helpCommand.arguments(helpArgs);\n if (helpDescription) helpCommand.description(helpDescription);\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n // init group unless lazy create\n if (enableOrNameAndArgs || description) this._initCommandGroup(helpCommand);\n\n return this;\n }\n\n /**\n * Add prepared custom help command.\n *\n * @param {(Command|string|boolean)} helpCommand - custom help command, or deprecated enableOrNameAndArgs as for `.helpCommand()`\n * @param {string} [deprecatedDescription] - deprecated custom description used with custom name only\n * @return {Command} `this` command for chaining\n */\n addHelpCommand(helpCommand, deprecatedDescription) {\n // If not passed an object, call through to helpCommand for backwards compatibility,\n // as addHelpCommand was originally used like helpCommand is now.\n if (typeof helpCommand !== 'object') {\n this.helpCommand(helpCommand, deprecatedDescription);\n return this;\n }\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n this._initCommandGroup(helpCommand);\n return this;\n }\n\n /**\n * Lazy create help command.\n *\n * @return {(Command|null)}\n * @package\n */\n _getHelpCommand() {\n const hasImplicitHelpCommand =\n this._addImplicitHelpCommand ??\n (this.commands.length &&\n !this._actionHandler &&\n !this._findCommand('help'));\n\n if (hasImplicitHelpCommand) {\n if (this._helpCommand === undefined) {\n this.helpCommand(undefined, undefined); // use default name and description\n }\n return this._helpCommand;\n }\n return null;\n }\n\n /**\n * Add hook for life cycle event.\n *\n * @param {string} event\n * @param {Function} listener\n * @return {Command} `this` command for chaining\n */\n\n hook(event, listener) {\n const allowedValues = ['preSubcommand', 'preAction', 'postAction'];\n if (!allowedValues.includes(event)) {\n throw new Error(`Unexpected value for event passed to hook : '${event}'.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n if (this._lifeCycleHooks[event]) {\n this._lifeCycleHooks[event].push(listener);\n } else {\n this._lifeCycleHooks[event] = [listener];\n }\n return this;\n }\n\n /**\n * Register callback to use as replacement for calling process.exit.\n *\n * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing\n * @return {Command} `this` command for chaining\n */\n\n exitOverride(fn) {\n if (fn) {\n this._exitCallback = fn;\n } else {\n this._exitCallback = (err) => {\n if (err.code !== 'commander.executeSubCommandAsync') {\n throw err;\n } else {\n // Async callback from spawn events, not useful to throw.\n }\n };\n }\n return this;\n }\n\n /**\n * Call process.exit, and _exitCallback if defined.\n *\n * @param {number} exitCode exit code for using with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n * @return never\n * @private\n */\n\n _exit(exitCode, code, message) {\n if (this._exitCallback) {\n this._exitCallback(new CommanderError(exitCode, code, message));\n // Expecting this line is not reached.\n }\n process.exit(exitCode);\n }\n\n /**\n * Register callback `fn` for the command.\n *\n * @example\n * program\n * .command('serve')\n * .description('start service')\n * .action(function() {\n * // do work here\n * });\n *\n * @param {Function} fn\n * @return {Command} `this` command for chaining\n */\n\n action(fn) {\n const listener = (args) => {\n // The .action callback takes an extra parameter which is the command or options.\n const expectedArgsCount = this.registeredArguments.length;\n const actionArgs = args.slice(0, expectedArgsCount);\n if (this._storeOptionsAsProperties) {\n actionArgs[expectedArgsCount] = this; // backwards compatible \"options\"\n } else {\n actionArgs[expectedArgsCount] = this.opts();\n }\n actionArgs.push(this);\n\n return fn.apply(this, actionArgs);\n };\n this._actionHandler = listener;\n return this;\n }\n\n /**\n * Factory routine to create a new unattached option.\n *\n * See .option() for creating an attached option, which uses this routine to\n * create the option. You can override createOption to return a custom option.\n *\n * @param {string} flags\n * @param {string} [description]\n * @return {Option} new option\n */\n\n createOption(flags, description) {\n return new Option(flags, description);\n }\n\n /**\n * Wrap parseArgs to catch 'commander.invalidArgument'.\n *\n * @param {(Option | Argument)} target\n * @param {string} value\n * @param {*} previous\n * @param {string} invalidArgumentMessage\n * @private\n */\n\n _callParseArg(target, value, previous, invalidArgumentMessage) {\n try {\n return target.parseArg(value, previous);\n } catch (err) {\n if (err.code === 'commander.invalidArgument') {\n const message = `${invalidArgumentMessage} ${err.message}`;\n this.error(message, { exitCode: err.exitCode, code: err.code });\n }\n throw err;\n }\n }\n\n /**\n * Check for option flag conflicts.\n * Register option if no conflicts found, or throw on conflict.\n *\n * @param {Option} option\n * @private\n */\n\n _registerOption(option) {\n const matchingOption =\n (option.short && this._findOption(option.short)) ||\n (option.long && this._findOption(option.long));\n if (matchingOption) {\n const matchingFlag =\n option.long && this._findOption(option.long)\n ? option.long\n : option.short;\n throw new Error(`Cannot add option '${option.flags}'${this._name && ` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'\n- already used by option '${matchingOption.flags}'`);\n }\n\n this._initOptionGroup(option);\n this.options.push(option);\n }\n\n /**\n * Check for command name and alias conflicts with existing commands.\n * Register command if no conflicts found, or throw on conflict.\n *\n * @param {Command} command\n * @private\n */\n\n _registerCommand(command) {\n const knownBy = (cmd) => {\n return [cmd.name()].concat(cmd.aliases());\n };\n\n const alreadyUsed = knownBy(command).find((name) =>\n this._findCommand(name),\n );\n if (alreadyUsed) {\n const existingCmd = knownBy(this._findCommand(alreadyUsed)).join('|');\n const newCmd = knownBy(command).join('|');\n throw new Error(\n `cannot add command '${newCmd}' as already have command '${existingCmd}'`,\n );\n }\n\n this._initCommandGroup(command);\n this.commands.push(command);\n }\n\n /**\n * Add an option.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addOption(option) {\n this._registerOption(option);\n\n const oname = option.name();\n const name = option.attributeName();\n\n // store default value\n if (option.negate) {\n // --no-foo is special and defaults foo to true, unless a --foo option is already defined\n const positiveLongFlag = option.long.replace(/^--no-/, '--');\n if (!this._findOption(positiveLongFlag)) {\n this.setOptionValueWithSource(\n name,\n option.defaultValue === undefined ? true : option.defaultValue,\n 'default',\n );\n }\n } else if (option.defaultValue !== undefined) {\n this.setOptionValueWithSource(name, option.defaultValue, 'default');\n }\n\n // handler for cli and env supplied values\n const handleOptionValue = (val, invalidValueMessage, valueSource) => {\n // val is null for optional option used without an optional-argument.\n // val is undefined for boolean and negated option.\n if (val == null && option.presetArg !== undefined) {\n val = option.presetArg;\n }\n\n // custom processing\n const oldValue = this.getOptionValue(name);\n if (val !== null && option.parseArg) {\n val = this._callParseArg(option, val, oldValue, invalidValueMessage);\n } else if (val !== null && option.variadic) {\n val = option._collectValue(val, oldValue);\n }\n\n // Fill-in appropriate missing values. Long winded but easy to follow.\n if (val == null) {\n if (option.negate) {\n val = false;\n } else if (option.isBoolean() || option.optional) {\n val = true;\n } else {\n val = ''; // not normal, parseArg might have failed or be a mock function for testing\n }\n }\n this.setOptionValueWithSource(name, val, valueSource);\n };\n\n this.on('option:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' argument '${val}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'cli');\n });\n\n if (option.envVar) {\n this.on('optionEnv:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' value '${val}' from env '${option.envVar}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'env');\n });\n }\n\n return this;\n }\n\n /**\n * Internal implementation shared by .option() and .requiredOption()\n *\n * @return {Command} `this` command for chaining\n * @private\n */\n _optionEx(config, flags, description, fn, defaultValue) {\n if (typeof flags === 'object' && flags instanceof Option) {\n throw new Error(\n 'To add an Option object use addOption() instead of option() or requiredOption()',\n );\n }\n const option = this.createOption(flags, description);\n option.makeOptionMandatory(!!config.mandatory);\n if (typeof fn === 'function') {\n option.default(defaultValue).argParser(fn);\n } else if (fn instanceof RegExp) {\n // deprecated\n const regex = fn;\n fn = (val, def) => {\n const m = regex.exec(val);\n return m ? m[0] : def;\n };\n option.default(defaultValue).argParser(fn);\n } else {\n option.default(fn);\n }\n\n return this.addOption(option);\n }\n\n /**\n * Define option with `flags`, `description`, and optional argument parsing function or `defaultValue` or both.\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. A required\n * option-argument is indicated by `<>` and an optional option-argument by `[]`.\n *\n * See the README for more details, and see also addOption() and requiredOption().\n *\n * @example\n * program\n * .option('-p, --pepper', 'add pepper')\n * .option('--pt, --pizza-type <TYPE>', 'type of pizza') // required option-argument\n * .option('-c, --cheese [CHEESE]', 'add extra cheese', 'mozzarella') // optional option-argument with default\n * .option('-t, --tip <VALUE>', 'add tip to purchase cost', parseFloat) // custom parse function\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n option(flags, description, parseArg, defaultValue) {\n return this._optionEx({}, flags, description, parseArg, defaultValue);\n }\n\n /**\n * Add a required option which must have a value after parsing. This usually means\n * the option must be specified on the command line. (Otherwise the same as .option().)\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space.\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n requiredOption(flags, description, parseArg, defaultValue) {\n return this._optionEx(\n { mandatory: true },\n flags,\n description,\n parseArg,\n defaultValue,\n );\n }\n\n /**\n * Alter parsing of short flags with optional values.\n *\n * @example\n * // for `.option('-f,--flag [value]'):\n * program.combineFlagAndOptionalValue(true); // `-f80` is treated like `--flag=80`, this is the default behaviour\n * program.combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b`\n *\n * @param {boolean} [combine] - if `true` or omitted, an optional value can be specified directly after the flag.\n * @return {Command} `this` command for chaining\n */\n combineFlagAndOptionalValue(combine = true) {\n this._combineFlagAndOptionalValue = !!combine;\n return this;\n }\n\n /**\n * Allow unknown options on the command line.\n *\n * @param {boolean} [allowUnknown] - if `true` or omitted, no error will be thrown for unknown options.\n * @return {Command} `this` command for chaining\n */\n allowUnknownOption(allowUnknown = true) {\n this._allowUnknownOption = !!allowUnknown;\n return this;\n }\n\n /**\n * Allow excess command-arguments on the command line. Pass false to make excess arguments an error.\n *\n * @param {boolean} [allowExcess] - if `true` or omitted, no error will be thrown for excess arguments.\n * @return {Command} `this` command for chaining\n */\n allowExcessArguments(allowExcess = true) {\n this._allowExcessArguments = !!allowExcess;\n return this;\n }\n\n /**\n * Enable positional options. Positional means global options are specified before subcommands which lets\n * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions.\n * The default behaviour is non-positional and global options may appear anywhere on the command line.\n *\n * @param {boolean} [positional]\n * @return {Command} `this` command for chaining\n */\n enablePositionalOptions(positional = true) {\n this._enablePositionalOptions = !!positional;\n return this;\n }\n\n /**\n * Pass through options that come after command-arguments rather than treat them as command-options,\n * so actual command-options come before command-arguments. Turning this on for a subcommand requires\n * positional options to have been enabled on the program (parent commands).\n * The default behaviour is non-positional and options may appear before or after command-arguments.\n *\n * @param {boolean} [passThrough] for unknown options.\n * @return {Command} `this` command for chaining\n */\n passThroughOptions(passThrough = true) {\n this._passThroughOptions = !!passThrough;\n this._checkForBrokenPassThrough();\n return this;\n }\n\n /**\n * @private\n */\n\n _checkForBrokenPassThrough() {\n if (\n this.parent &&\n this._passThroughOptions &&\n !this.parent._enablePositionalOptions\n ) {\n throw new Error(\n `passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`,\n );\n }\n }\n\n /**\n * Whether to store option values as properties on command object,\n * or store separately (specify false). In both cases the option values can be accessed using .opts().\n *\n * @param {boolean} [storeAsProperties=true]\n * @return {Command} `this` command for chaining\n */\n\n storeOptionsAsProperties(storeAsProperties = true) {\n if (this.options.length) {\n throw new Error('call .storeOptionsAsProperties() before adding options');\n }\n if (Object.keys(this._optionValues).length) {\n throw new Error(\n 'call .storeOptionsAsProperties() before setting option values',\n );\n }\n this._storeOptionsAsProperties = !!storeAsProperties;\n return this;\n }\n\n /**\n * Retrieve option value.\n *\n * @param {string} key\n * @return {object} value\n */\n\n getOptionValue(key) {\n if (this._storeOptionsAsProperties) {\n return this[key];\n }\n return this._optionValues[key];\n }\n\n /**\n * Store option value.\n *\n * @param {string} key\n * @param {object} value\n * @return {Command} `this` command for chaining\n */\n\n setOptionValue(key, value) {\n return this.setOptionValueWithSource(key, value, undefined);\n }\n\n /**\n * Store option value and where the value came from.\n *\n * @param {string} key\n * @param {object} value\n * @param {string} source - expected values are default/config/env/cli/implied\n * @return {Command} `this` command for chaining\n */\n\n setOptionValueWithSource(key, value, source) {\n if (this._storeOptionsAsProperties) {\n this[key] = value;\n } else {\n this._optionValues[key] = value;\n }\n this._optionValueSources[key] = source;\n return this;\n }\n\n /**\n * Get source of option value.\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSource(key) {\n return this._optionValueSources[key];\n }\n\n /**\n * Get source of option value. See also .optsWithGlobals().\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSourceWithGlobals(key) {\n // global overwrites local, like optsWithGlobals\n let source;\n this._getCommandAndAncestors().forEach((cmd) => {\n if (cmd.getOptionValueSource(key) !== undefined) {\n source = cmd.getOptionValueSource(key);\n }\n });\n return source;\n }\n\n /**\n * Get user arguments from implied or explicit arguments.\n * Side-effects: set _scriptPath if args included script. Used for default program name, and subcommand searches.\n *\n * @private\n */\n\n _prepareUserArgs(argv, parseOptions) {\n if (argv !== undefined && !Array.isArray(argv)) {\n throw new Error('first parameter to parse must be array or undefined');\n }\n parseOptions = parseOptions || {};\n\n // auto-detect argument conventions if nothing supplied\n if (argv === undefined && parseOptions.from === undefined) {\n if (process.versions?.electron) {\n parseOptions.from = 'electron';\n }\n // check node specific options for scenarios where user CLI args follow executable without scriptname\n const execArgv = process.execArgv ?? [];\n if (\n execArgv.includes('-e') ||\n execArgv.includes('--eval') ||\n execArgv.includes('-p') ||\n execArgv.includes('--print')\n ) {\n parseOptions.from = 'eval'; // internal usage, not documented\n }\n }\n\n // default to using process.argv\n if (argv === undefined) {\n argv = process.argv;\n }\n this.rawArgs = argv.slice();\n\n // extract the user args and scriptPath\n let userArgs;\n switch (parseOptions.from) {\n case undefined:\n case 'node':\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n break;\n case 'electron':\n // @ts-ignore: because defaultApp is an unknown property\n if (process.defaultApp) {\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n } else {\n userArgs = argv.slice(1);\n }\n break;\n case 'user':\n userArgs = argv.slice(0);\n break;\n case 'eval':\n userArgs = argv.slice(1);\n break;\n default:\n throw new Error(\n `unexpected parse option { from: '${parseOptions.from}' }`,\n );\n }\n\n // Find default name for program from arguments.\n if (!this._name && this._scriptPath)\n this.nameFromFilename(this._scriptPath);\n this._name = this._name || 'program';\n\n return userArgs;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Use parseAsync instead of parse if any of your action handlers are async.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * program.parse(); // parse process.argv and auto-detect electron and special node flags\n * program.parse(process.argv); // assume argv[0] is app and argv[1] is script\n * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv] - optional, defaults to process.argv\n * @param {object} [parseOptions] - optionally specify style of options with from: node/user/electron\n * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron'\n * @return {Command} `this` command for chaining\n */\n\n parse(argv, parseOptions) {\n this._prepareForParse();\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n this._parseCommand([], userArgs);\n\n return this;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * await program.parseAsync(); // parse process.argv and auto-detect electron and special node flags\n * await program.parseAsync(process.argv); // assume argv[0] is app and argv[1] is script\n * await program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv]\n * @param {object} [parseOptions]\n * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron'\n * @return {Promise}\n */\n\n async parseAsync(argv, parseOptions) {\n this._prepareForParse();\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n await this._parseCommand([], userArgs);\n\n return this;\n }\n\n _prepareForParse() {\n if (this._savedState === null) {\n this.saveStateBeforeParse();\n } else {\n this.restoreStateBeforeParse();\n }\n }\n\n /**\n * Called the first time parse is called to save state and allow a restore before subsequent calls to parse.\n * Not usually called directly, but available for subclasses to save their custom state.\n *\n * This is called in a lazy way. Only commands used in parsing chain will have state saved.\n */\n saveStateBeforeParse() {\n this._savedState = {\n // name is stable if supplied by author, but may be unspecified for root command and deduced during parsing\n _name: this._name,\n // option values before parse have default values (including false for negated options)\n // shallow clones\n _optionValues: { ...this._optionValues },\n _optionValueSources: { ...this._optionValueSources },\n };\n }\n\n /**\n * Restore state before parse for calls after the first.\n * Not usually called directly, but available for subclasses to save their custom state.\n *\n * This is called in a lazy way. Only commands used in parsing chain will have state restored.\n */\n restoreStateBeforeParse() {\n if (this._storeOptionsAsProperties)\n throw new Error(`Can not call parse again when storeOptionsAsProperties is true.\n- either make a new Command for each call to parse, or stop storing options as properties`);\n\n // clear state from _prepareUserArgs\n this._name = this._savedState._name;\n this._scriptPath = null;\n this.rawArgs = [];\n // clear state from setOptionValueWithSource\n this._optionValues = { ...this._savedState._optionValues };\n this._optionValueSources = { ...this._savedState._optionValueSources };\n // clear state from _parseCommand\n this.args = [];\n // clear state from _processArguments\n this.processedArgs = [];\n }\n\n /**\n * Throw if expected executable is missing. Add lots of help for author.\n *\n * @param {string} executableFile\n * @param {string} executableDir\n * @param {string} subcommandName\n */\n _checkForMissingExecutable(executableFile, executableDir, subcommandName) {\n if (fs.existsSync(executableFile)) return;\n\n const executableDirMessage = executableDir\n ? `searched for local subcommand relative to directory '${executableDir}'`\n : 'no directory for search for local subcommand, use .executableDir() to supply a custom directory';\n const executableMissing = `'${executableFile}' does not exist\n - if '${subcommandName}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead\n - if the default executable name is not suitable, use the executableFile option to supply a custom name or path\n - ${executableDirMessage}`;\n throw new Error(executableMissing);\n }\n\n /**\n * Execute a sub-command executable.\n *\n * @private\n */\n\n _executeSubCommand(subcommand, args) {\n args = args.slice();\n let launchWithNode = false; // Use node for source targets so do not need to get permissions correct, and on Windows.\n const sourceExt = ['.js', '.ts', '.tsx', '.mjs', '.cjs'];\n\n function findFile(baseDir, baseName) {\n // Look for specified file\n const localBin = path.resolve(baseDir, baseName);\n if (fs.existsSync(localBin)) return localBin;\n\n // Stop looking if candidate already has an expected extension.\n if (sourceExt.includes(path.extname(baseName))) return undefined;\n\n // Try all the extensions.\n const foundExt = sourceExt.find((ext) =>\n fs.existsSync(`${localBin}${ext}`),\n );\n if (foundExt) return `${localBin}${foundExt}`;\n\n return undefined;\n }\n\n // Not checking for help first. Unlikely to have mandatory and executable, and can't robustly test for help flags in external command.\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // executableFile and executableDir might be full path, or just a name\n let executableFile =\n subcommand._executableFile || `${this._name}-${subcommand._name}`;\n let executableDir = this._executableDir || '';\n if (this._scriptPath) {\n let resolvedScriptPath; // resolve possible symlink for installed npm binary\n try {\n resolvedScriptPath = fs.realpathSync(this._scriptPath);\n } catch {\n resolvedScriptPath = this._scriptPath;\n }\n executableDir = path.resolve(\n path.dirname(resolvedScriptPath),\n executableDir,\n );\n }\n\n // Look for a local file in preference to a command in PATH.\n if (executableDir) {\n let localFile = findFile(executableDir, executableFile);\n\n // Legacy search using prefix of script name instead of command name\n if (!localFile && !subcommand._executableFile && this._scriptPath) {\n const legacyName = path.basename(\n this._scriptPath,\n path.extname(this._scriptPath),\n );\n if (legacyName !== this._name) {\n localFile = findFile(\n executableDir,\n `${legacyName}-${subcommand._name}`,\n );\n }\n }\n executableFile = localFile || executableFile;\n }\n\n launchWithNode = sourceExt.includes(path.extname(executableFile));\n\n let proc;\n if (process.platform !== 'win32') {\n if (launchWithNode) {\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n\n proc = childProcess.spawn(process.argv[0], args, { stdio: 'inherit' });\n } else {\n proc = childProcess.spawn(executableFile, args, { stdio: 'inherit' });\n }\n } else {\n this._checkForMissingExecutable(\n executableFile,\n executableDir,\n subcommand._name,\n );\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n proc = childProcess.spawn(process.execPath, args, { stdio: 'inherit' });\n }\n\n if (!proc.killed) {\n // testing mainly to avoid leak warnings during unit tests with mocked spawn\n const signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP'];\n signals.forEach((signal) => {\n process.on(signal, () => {\n if (proc.killed === false && proc.exitCode === null) {\n // @ts-ignore because signals not typed to known strings\n proc.kill(signal);\n }\n });\n });\n }\n\n // By default terminate process when spawned process terminates.\n const exitCallback = this._exitCallback;\n proc.on('close', (code) => {\n code = code ?? 1; // code is null if spawned process terminated due to a signal\n if (!exitCallback) {\n process.exit(code);\n } else {\n exitCallback(\n new CommanderError(\n code,\n 'commander.executeSubCommandAsync',\n '(close)',\n ),\n );\n }\n });\n proc.on('error', (err) => {\n // @ts-ignore: because err.code is an unknown property\n if (err.code === 'ENOENT') {\n this._checkForMissingExecutable(\n executableFile,\n executableDir,\n subcommand._name,\n );\n // @ts-ignore: because err.code is an unknown property\n } else if (err.code === 'EACCES') {\n throw new Error(`'${executableFile}' not executable`);\n }\n if (!exitCallback) {\n process.exit(1);\n } else {\n const wrappedError = new CommanderError(\n 1,\n 'commander.executeSubCommandAsync',\n '(error)',\n );\n wrappedError.nestedError = err;\n exitCallback(wrappedError);\n }\n });\n\n // Store the reference to the child process\n this.runningCommand = proc;\n }\n\n /**\n * @private\n */\n\n _dispatchSubcommand(commandName, operands, unknown) {\n const subCommand = this._findCommand(commandName);\n if (!subCommand) this.help({ error: true });\n\n subCommand._prepareForParse();\n let promiseChain;\n promiseChain = this._chainOrCallSubCommandHook(\n promiseChain,\n subCommand,\n 'preSubcommand',\n );\n promiseChain = this._chainOrCall(promiseChain, () => {\n if (subCommand._executableHandler) {\n this._executeSubCommand(subCommand, operands.concat(unknown));\n } else {\n return subCommand._parseCommand(operands, unknown);\n }\n });\n return promiseChain;\n }\n\n /**\n * Invoke help directly if possible, or dispatch if necessary.\n * e.g. help foo\n *\n * @private\n */\n\n _dispatchHelpCommand(subcommandName) {\n if (!subcommandName) {\n this.help();\n }\n const subCommand = this._findCommand(subcommandName);\n if (subCommand && !subCommand._executableHandler) {\n subCommand.help();\n }\n\n // Fallback to parsing the help flag to invoke the help.\n return this._dispatchSubcommand(\n subcommandName,\n [],\n [this._getHelpOption()?.long ?? this._getHelpOption()?.short ?? '--help'],\n );\n }\n\n /**\n * Check this.args against expected this.registeredArguments.\n *\n * @private\n */\n\n _checkNumberOfArguments() {\n // too few\n this.registeredArguments.forEach((arg, i) => {\n if (arg.required && this.args[i] == null) {\n this.missingArgument(arg.name());\n }\n });\n // too many\n if (\n this.registeredArguments.length > 0 &&\n this.registeredArguments[this.registeredArguments.length - 1].variadic\n ) {\n return;\n }\n if (this.args.length > this.registeredArguments.length) {\n this._excessArguments(this.args);\n }\n }\n\n /**\n * Process this.args using this.registeredArguments and save as this.processedArgs!\n *\n * @private\n */\n\n _processArguments() {\n const myParseArg = (argument, value, previous) => {\n // Extra processing for nice error message on parsing failure.\n let parsedValue = value;\n if (value !== null && argument.parseArg) {\n const invalidValueMessage = `error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`;\n parsedValue = this._callParseArg(\n argument,\n value,\n previous,\n invalidValueMessage,\n );\n }\n return parsedValue;\n };\n\n this._checkNumberOfArguments();\n\n const processedArgs = [];\n this.registeredArguments.forEach((declaredArg, index) => {\n let value = declaredArg.defaultValue;\n if (declaredArg.variadic) {\n // Collect together remaining arguments for passing together as an array.\n if (index < this.args.length) {\n value = this.args.slice(index);\n if (declaredArg.parseArg) {\n value = value.reduce((processed, v) => {\n return myParseArg(declaredArg, v, processed);\n }, declaredArg.defaultValue);\n }\n } else if (value === undefined) {\n value = [];\n }\n } else if (index < this.args.length) {\n value = this.args[index];\n if (declaredArg.parseArg) {\n value = myParseArg(declaredArg, value, declaredArg.defaultValue);\n }\n }\n processedArgs[index] = value;\n });\n this.processedArgs = processedArgs;\n }\n\n /**\n * Once we have a promise we chain, but call synchronously until then.\n *\n * @param {(Promise|undefined)} promise\n * @param {Function} fn\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCall(promise, fn) {\n // thenable\n if (promise?.then && typeof promise.then === 'function') {\n // already have a promise, chain callback\n return promise.then(() => fn());\n }\n // callback might return a promise\n return fn();\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallHooks(promise, event) {\n let result = promise;\n const hooks = [];\n this._getCommandAndAncestors()\n .reverse()\n .filter((cmd) => cmd._lifeCycleHooks[event] !== undefined)\n .forEach((hookedCommand) => {\n hookedCommand._lifeCycleHooks[event].forEach((callback) => {\n hooks.push({ hookedCommand, callback });\n });\n });\n if (event === 'postAction') {\n hooks.reverse();\n }\n\n hooks.forEach((hookDetail) => {\n result = this._chainOrCall(result, () => {\n return hookDetail.callback(hookDetail.hookedCommand, this);\n });\n });\n return result;\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {Command} subCommand\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallSubCommandHook(promise, subCommand, event) {\n let result = promise;\n if (this._lifeCycleHooks[event] !== undefined) {\n this._lifeCycleHooks[event].forEach((hook) => {\n result = this._chainOrCall(result, () => {\n return hook(this, subCommand);\n });\n });\n }\n return result;\n }\n\n /**\n * Process arguments in context of this command.\n * Returns action result, in case it is a promise.\n *\n * @private\n */\n\n _parseCommand(operands, unknown) {\n const parsed = this.parseOptions(unknown);\n this._parseOptionsEnv(); // after cli, so parseArg not called on both cli and env\n this._parseOptionsImplied();\n operands = operands.concat(parsed.operands);\n unknown = parsed.unknown;\n this.args = operands.concat(unknown);\n\n if (operands && this._findCommand(operands[0])) {\n return this._dispatchSubcommand(operands[0], operands.slice(1), unknown);\n }\n if (\n this._getHelpCommand() &&\n operands[0] === this._getHelpCommand().name()\n ) {\n return this._dispatchHelpCommand(operands[1]);\n }\n if (this._defaultCommandName) {\n this._outputHelpIfRequested(unknown); // Run the help for default command from parent rather than passing to default command\n return this._dispatchSubcommand(\n this._defaultCommandName,\n operands,\n unknown,\n );\n }\n if (\n this.commands.length &&\n this.args.length === 0 &&\n !this._actionHandler &&\n !this._defaultCommandName\n ) {\n // probably missing subcommand and no handler, user needs help (and exit)\n this.help({ error: true });\n }\n\n this._outputHelpIfRequested(parsed.unknown);\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // We do not always call this check to avoid masking a \"better\" error, like unknown command.\n const checkForUnknownOptions = () => {\n if (parsed.unknown.length > 0) {\n this.unknownOption(parsed.unknown[0]);\n }\n };\n\n const commandEvent = `command:${this.name()}`;\n if (this._actionHandler) {\n checkForUnknownOptions();\n this._processArguments();\n\n let promiseChain;\n promiseChain = this._chainOrCallHooks(promiseChain, 'preAction');\n promiseChain = this._chainOrCall(promiseChain, () =>\n this._actionHandler(this.processedArgs),\n );\n if (this.parent) {\n promiseChain = this._chainOrCall(promiseChain, () => {\n this.parent.emit(commandEvent, operands, unknown); // legacy\n });\n }\n promiseChain = this._chainOrCallHooks(promiseChain, 'postAction');\n return promiseChain;\n }\n if (this.parent?.listenerCount(commandEvent)) {\n checkForUnknownOptions();\n this._processArguments();\n this.parent.emit(commandEvent, operands, unknown); // legacy\n } else if (operands.length) {\n if (this._findCommand('*')) {\n // legacy default command\n return this._dispatchSubcommand('*', operands, unknown);\n }\n if (this.listenerCount('command:*')) {\n // skip option check, emit event for possible misspelling suggestion\n this.emit('command:*', operands, unknown);\n } else if (this.commands.length) {\n this.unknownCommand();\n } else {\n checkForUnknownOptions();\n this._processArguments();\n }\n } else if (this.commands.length) {\n checkForUnknownOptions();\n // This command has subcommands and nothing hooked up at this level, so display help (and exit).\n this.help({ error: true });\n } else {\n checkForUnknownOptions();\n this._processArguments();\n // fall through for caller to handle after calling .parse()\n }\n }\n\n /**\n * Find matching command.\n *\n * @private\n * @return {Command | undefined}\n */\n _findCommand(name) {\n if (!name) return undefined;\n return this.commands.find(\n (cmd) => cmd._name === name || cmd._aliases.includes(name),\n );\n }\n\n /**\n * Return an option matching `arg` if any.\n *\n * @param {string} arg\n * @return {Option}\n * @package\n */\n\n _findOption(arg) {\n return this.options.find((option) => option.is(arg));\n }\n\n /**\n * Display an error message if a mandatory option does not have a value.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n\n _checkForMissingMandatoryOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd.options.forEach((anOption) => {\n if (\n anOption.mandatory &&\n cmd.getOptionValue(anOption.attributeName()) === undefined\n ) {\n cmd.missingMandatoryOptionValue(anOption);\n }\n });\n });\n }\n\n /**\n * Display an error message if conflicting options are used together in this.\n *\n * @private\n */\n _checkForConflictingLocalOptions() {\n const definedNonDefaultOptions = this.options.filter((option) => {\n const optionKey = option.attributeName();\n if (this.getOptionValue(optionKey) === undefined) {\n return false;\n }\n return this.getOptionValueSource(optionKey) !== 'default';\n });\n\n const optionsWithConflicting = definedNonDefaultOptions.filter(\n (option) => option.conflictsWith.length > 0,\n );\n\n optionsWithConflicting.forEach((option) => {\n const conflictingAndDefined = definedNonDefaultOptions.find((defined) =>\n option.conflictsWith.includes(defined.attributeName()),\n );\n if (conflictingAndDefined) {\n this._conflictingOption(option, conflictingAndDefined);\n }\n });\n }\n\n /**\n * Display an error message if conflicting options are used together.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n _checkForConflictingOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd._checkForConflictingLocalOptions();\n });\n }\n\n /**\n * Parse options from `argv` removing known options,\n * and return argv split into operands and unknown arguments.\n *\n * Side effects: modifies command by storing options. Does not reset state if called again.\n *\n * Examples:\n *\n * argv => operands, unknown\n * --known kkk op => [op], []\n * op --known kkk => [op], []\n * sub --unknown uuu op => [sub], [--unknown uuu op]\n * sub -- --unknown uuu op => [sub --unknown uuu op], []\n *\n * @param {string[]} args\n * @return {{operands: string[], unknown: string[]}}\n */\n\n parseOptions(args) {\n const operands = []; // operands, not options or values\n const unknown = []; // first unknown option and remaining unknown args\n let dest = operands;\n\n function maybeOption(arg) {\n return arg.length > 1 && arg[0] === '-';\n }\n\n const negativeNumberArg = (arg) => {\n // return false if not a negative number\n if (!/^-(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?$/.test(arg)) return false;\n // negative number is ok unless digit used as an option in command hierarchy\n return !this._getCommandAndAncestors().some((cmd) =>\n cmd.options\n .map((opt) => opt.short)\n .some((short) => /^-\\d$/.test(short)),\n );\n };\n\n // parse options\n let activeVariadicOption = null;\n let activeGroup = null; // working through group of short options, like -abc\n let i = 0;\n while (i < args.length || activeGroup) {\n const arg = activeGroup ?? args[i++];\n activeGroup = null;\n\n // literal\n if (arg === '--') {\n if (dest === unknown) dest.push(arg);\n dest.push(...args.slice(i));\n break;\n }\n\n if (\n activeVariadicOption &&\n (!maybeOption(arg) || negativeNumberArg(arg))\n ) {\n this.emit(`option:${activeVariadicOption.name()}`, arg);\n continue;\n }\n activeVariadicOption = null;\n\n if (maybeOption(arg)) {\n const option = this._findOption(arg);\n // recognised option, call listener to assign value with possible custom processing\n if (option) {\n if (option.required) {\n const value = args[i++];\n if (value === undefined) this.optionMissingArgument(option);\n this.emit(`option:${option.name()}`, value);\n } else if (option.optional) {\n let value = null;\n // historical behaviour is optional value is following arg unless an option\n if (\n i < args.length &&\n (!maybeOption(args[i]) || negativeNumberArg(args[i]))\n ) {\n value = args[i++];\n }\n this.emit(`option:${option.name()}`, value);\n } else {\n // boolean flag\n this.emit(`option:${option.name()}`);\n }\n activeVariadicOption = option.variadic ? option : null;\n continue;\n }\n }\n\n // Look for combo options following single dash, eat first one if known.\n if (arg.length > 2 && arg[0] === '-' && arg[1] !== '-') {\n const option = this._findOption(`-${arg[1]}`);\n if (option) {\n if (\n option.required ||\n (option.optional && this._combineFlagAndOptionalValue)\n ) {\n // option with value following in same argument\n this.emit(`option:${option.name()}`, arg.slice(2));\n } else {\n // boolean option\n this.emit(`option:${option.name()}`);\n // remove the processed option and keep processing group\n activeGroup = `-${arg.slice(2)}`;\n }\n continue;\n }\n }\n\n // Look for known long flag with value, like --foo=bar\n if (/^--[^=]+=/.test(arg)) {\n const index = arg.indexOf('=');\n const option = this._findOption(arg.slice(0, index));\n if (option && (option.required || option.optional)) {\n this.emit(`option:${option.name()}`, arg.slice(index + 1));\n continue;\n }\n }\n\n // Not a recognised option by this command.\n // Might be a command-argument, or subcommand option, or unknown option, or help command or option.\n\n // An unknown option means further arguments also classified as unknown so can be reprocessed by subcommands.\n // A negative number in a leaf command is not an unknown option.\n if (\n dest === operands &&\n maybeOption(arg) &&\n !(this.commands.length === 0 && negativeNumberArg(arg))\n ) {\n dest = unknown;\n }\n\n // If using positionalOptions, stop processing our options at subcommand.\n if (\n (this._enablePositionalOptions || this._passThroughOptions) &&\n operands.length === 0 &&\n unknown.length === 0\n ) {\n if (this._findCommand(arg)) {\n operands.push(arg);\n unknown.push(...args.slice(i));\n break;\n } else if (\n this._getHelpCommand() &&\n arg === this._getHelpCommand().name()\n ) {\n operands.push(arg, ...args.slice(i));\n break;\n } else if (this._defaultCommandName) {\n unknown.push(arg, ...args.slice(i));\n break;\n }\n }\n\n // If using passThroughOptions, stop processing options at first command-argument.\n if (this._passThroughOptions) {\n dest.push(arg, ...args.slice(i));\n break;\n }\n\n // add arg\n dest.push(arg);\n }\n\n return { operands, unknown };\n }\n\n /**\n * Return an object containing local option values as key-value pairs.\n *\n * @return {object}\n */\n opts() {\n if (this._storeOptionsAsProperties) {\n // Preserve original behaviour so backwards compatible when still using properties\n const result = {};\n const len = this.options.length;\n\n for (let i = 0; i < len; i++) {\n const key = this.options[i].attributeName();\n result[key] =\n key === this._versionOptionName ? this._version : this[key];\n }\n return result;\n }\n\n return this._optionValues;\n }\n\n /**\n * Return an object containing merged local and global option values as key-value pairs.\n *\n * @return {object}\n */\n optsWithGlobals() {\n // globals overwrite locals\n return this._getCommandAndAncestors().reduce(\n (combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()),\n {},\n );\n }\n\n /**\n * Display error message and exit (or call exitOverride).\n *\n * @param {string} message\n * @param {object} [errorOptions]\n * @param {string} [errorOptions.code] - an id string representing the error\n * @param {number} [errorOptions.exitCode] - used with process.exit\n */\n error(message, errorOptions) {\n // output handling\n this._outputConfiguration.outputError(\n `${message}\\n`,\n this._outputConfiguration.writeErr,\n );\n if (typeof this._showHelpAfterError === 'string') {\n this._outputConfiguration.writeErr(`${this._showHelpAfterError}\\n`);\n } else if (this._showHelpAfterError) {\n this._outputConfiguration.writeErr('\\n');\n this.outputHelp({ error: true });\n }\n\n // exit handling\n const config = errorOptions || {};\n const exitCode = config.exitCode || 1;\n const code = config.code || 'commander.error';\n this._exit(exitCode, code, message);\n }\n\n /**\n * Apply any option related environment variables, if option does\n * not have a value from cli or client code.\n *\n * @private\n */\n _parseOptionsEnv() {\n this.options.forEach((option) => {\n if (option.envVar && option.envVar in process.env) {\n const optionKey = option.attributeName();\n // Priority check. Do not overwrite cli or options from unknown source (client-code).\n if (\n this.getOptionValue(optionKey) === undefined ||\n ['default', 'config', 'env'].includes(\n this.getOptionValueSource(optionKey),\n )\n ) {\n if (option.required || option.optional) {\n // option can take a value\n // keep very simple, optional always takes value\n this.emit(`optionEnv:${option.name()}`, process.env[option.envVar]);\n } else {\n // boolean\n // keep very simple, only care that envVar defined and not the value\n this.emit(`optionEnv:${option.name()}`);\n }\n }\n }\n });\n }\n\n /**\n * Apply any implied option values, if option is undefined or default value.\n *\n * @private\n */\n _parseOptionsImplied() {\n const dualHelper = new DualOptions(this.options);\n const hasCustomOptionValue = (optionKey) => {\n return (\n this.getOptionValue(optionKey) !== undefined &&\n !['default', 'implied'].includes(this.getOptionValueSource(optionKey))\n );\n };\n this.options\n .filter(\n (option) =>\n option.implied !== undefined &&\n hasCustomOptionValue(option.attributeName()) &&\n dualHelper.valueFromOption(\n this.getOptionValue(option.attributeName()),\n option,\n ),\n )\n .forEach((option) => {\n Object.keys(option.implied)\n .filter((impliedKey) => !hasCustomOptionValue(impliedKey))\n .forEach((impliedKey) => {\n this.setOptionValueWithSource(\n impliedKey,\n option.implied[impliedKey],\n 'implied',\n );\n });\n });\n }\n\n /**\n * Argument `name` is missing.\n *\n * @param {string} name\n * @private\n */\n\n missingArgument(name) {\n const message = `error: missing required argument '${name}'`;\n this.error(message, { code: 'commander.missingArgument' });\n }\n\n /**\n * `Option` is missing an argument.\n *\n * @param {Option} option\n * @private\n */\n\n optionMissingArgument(option) {\n const message = `error: option '${option.flags}' argument missing`;\n this.error(message, { code: 'commander.optionMissingArgument' });\n }\n\n /**\n * `Option` does not have a value, and is a mandatory option.\n *\n * @param {Option} option\n * @private\n */\n\n missingMandatoryOptionValue(option) {\n const message = `error: required option '${option.flags}' not specified`;\n this.error(message, { code: 'commander.missingMandatoryOptionValue' });\n }\n\n /**\n * `Option` conflicts with another option.\n *\n * @param {Option} option\n * @param {Option} conflictingOption\n * @private\n */\n _conflictingOption(option, conflictingOption) {\n // The calling code does not know whether a negated option is the source of the\n // value, so do some work to take an educated guess.\n const findBestOptionFromValue = (option) => {\n const optionKey = option.attributeName();\n const optionValue = this.getOptionValue(optionKey);\n const negativeOption = this.options.find(\n (target) => target.negate && optionKey === target.attributeName(),\n );\n const positiveOption = this.options.find(\n (target) => !target.negate && optionKey === target.attributeName(),\n );\n if (\n negativeOption &&\n ((negativeOption.presetArg === undefined && optionValue === false) ||\n (negativeOption.presetArg !== undefined &&\n optionValue === negativeOption.presetArg))\n ) {\n return negativeOption;\n }\n return positiveOption || option;\n };\n\n const getErrorMessage = (option) => {\n const bestOption = findBestOptionFromValue(option);\n const optionKey = bestOption.attributeName();\n const source = this.getOptionValueSource(optionKey);\n if (source === 'env') {\n return `environment variable '${bestOption.envVar}'`;\n }\n return `option '${bestOption.flags}'`;\n };\n\n const message = `error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;\n this.error(message, { code: 'commander.conflictingOption' });\n }\n\n /**\n * Unknown option `flag`.\n *\n * @param {string} flag\n * @private\n */\n\n unknownOption(flag) {\n if (this._allowUnknownOption) return;\n let suggestion = '';\n\n if (flag.startsWith('--') && this._showSuggestionAfterError) {\n // Looping to pick up the global options too\n let candidateFlags = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n do {\n const moreFlags = command\n .createHelp()\n .visibleOptions(command)\n .filter((option) => option.long)\n .map((option) => option.long);\n candidateFlags = candidateFlags.concat(moreFlags);\n command = command.parent;\n } while (command && !command._enablePositionalOptions);\n suggestion = suggestSimilar(flag, candidateFlags);\n }\n\n const message = `error: unknown option '${flag}'${suggestion}`;\n this.error(message, { code: 'commander.unknownOption' });\n }\n\n /**\n * Excess arguments, more than expected.\n *\n * @param {string[]} receivedArgs\n * @private\n */\n\n _excessArguments(receivedArgs) {\n if (this._allowExcessArguments) return;\n\n const expected = this.registeredArguments.length;\n const s = expected === 1 ? '' : 's';\n const forSubcommand = this.parent ? ` for '${this.name()}'` : '';\n const message = `error: too many arguments${forSubcommand}. Expected ${expected} argument${s} but got ${receivedArgs.length}.`;\n this.error(message, { code: 'commander.excessArguments' });\n }\n\n /**\n * Unknown command.\n *\n * @private\n */\n\n unknownCommand() {\n const unknownName = this.args[0];\n let suggestion = '';\n\n if (this._showSuggestionAfterError) {\n const candidateNames = [];\n this.createHelp()\n .visibleCommands(this)\n .forEach((command) => {\n candidateNames.push(command.name());\n // just visible alias\n if (command.alias()) candidateNames.push(command.alias());\n });\n suggestion = suggestSimilar(unknownName, candidateNames);\n }\n\n const message = `error: unknown command '${unknownName}'${suggestion}`;\n this.error(message, { code: 'commander.unknownCommand' });\n }\n\n /**\n * Get or set the program version.\n *\n * This method auto-registers the \"-V, --version\" option which will print the version number.\n *\n * You can optionally supply the flags and description to override the defaults.\n *\n * @param {string} [str]\n * @param {string} [flags]\n * @param {string} [description]\n * @return {(this | string | undefined)} `this` command for chaining, or version string if no arguments\n */\n\n version(str, flags, description) {\n if (str === undefined) return this._version;\n this._version = str;\n flags = flags || '-V, --version';\n description = description || 'output the version number';\n const versionOption = this.createOption(flags, description);\n this._versionOptionName = versionOption.attributeName();\n this._registerOption(versionOption);\n\n this.on('option:' + versionOption.name(), () => {\n this._outputConfiguration.writeOut(`${str}\\n`);\n this._exit(0, 'commander.version', str);\n });\n return this;\n }\n\n /**\n * Set the description.\n *\n * @param {string} [str]\n * @param {object} [argsDescription]\n * @return {(string|Command)}\n */\n description(str, argsDescription) {\n if (str === undefined && argsDescription === undefined)\n return this._description;\n this._description = str;\n if (argsDescription) {\n this._argsDescription = argsDescription;\n }\n return this;\n }\n\n /**\n * Set the summary. Used when listed as subcommand of parent.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n summary(str) {\n if (str === undefined) return this._summary;\n this._summary = str;\n return this;\n }\n\n /**\n * Set an alias for the command.\n *\n * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help.\n *\n * @param {string} [alias]\n * @return {(string|Command)}\n */\n\n alias(alias) {\n if (alias === undefined) return this._aliases[0]; // just return first, for backwards compatibility\n\n /** @type {Command} */\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n if (\n this.commands.length !== 0 &&\n this.commands[this.commands.length - 1]._executableHandler\n ) {\n // assume adding alias for last added executable subcommand, rather than this\n command = this.commands[this.commands.length - 1];\n }\n\n if (alias === command._name)\n throw new Error(\"Command alias can't be the same as its name\");\n const matchingCommand = this.parent?._findCommand(alias);\n if (matchingCommand) {\n // c.f. _registerCommand\n const existingCmd = [matchingCommand.name()]\n .concat(matchingCommand.aliases())\n .join('|');\n throw new Error(\n `cannot add alias '${alias}' to command '${this.name()}' as already have command '${existingCmd}'`,\n );\n }\n\n command._aliases.push(alias);\n return this;\n }\n\n /**\n * Set aliases for the command.\n *\n * Only the first alias is shown in the auto-generated help.\n *\n * @param {string[]} [aliases]\n * @return {(string[]|Command)}\n */\n\n aliases(aliases) {\n // Getter for the array of aliases is the main reason for having aliases() in addition to alias().\n if (aliases === undefined) return this._aliases;\n\n aliases.forEach((alias) => this.alias(alias));\n return this;\n }\n\n /**\n * Set / get the command usage `str`.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n usage(str) {\n if (str === undefined) {\n if (this._usage) return this._usage;\n\n const args = this.registeredArguments.map((arg) => {\n return humanReadableArgName(arg);\n });\n return []\n .concat(\n this.options.length || this._helpOption !== null ? '[options]' : [],\n this.commands.length ? '[command]' : [],\n this.registeredArguments.length ? args : [],\n )\n .join(' ');\n }\n\n this._usage = str;\n return this;\n }\n\n /**\n * Get or set the name of the command.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n name(str) {\n if (str === undefined) return this._name;\n this._name = str;\n return this;\n }\n\n /**\n * Set/get the help group heading for this subcommand in parent command's help.\n *\n * @param {string} [heading]\n * @return {Command | string}\n */\n\n helpGroup(heading) {\n if (heading === undefined) return this._helpGroupHeading ?? '';\n this._helpGroupHeading = heading;\n return this;\n }\n\n /**\n * Set/get the default help group heading for subcommands added to this command.\n * (This does not override a group set directly on the subcommand using .helpGroup().)\n *\n * @example\n * program.commandsGroup('Development Commands:);\n * program.command('watch')...\n * program.command('lint')...\n * ...\n *\n * @param {string} [heading]\n * @returns {Command | string}\n */\n commandsGroup(heading) {\n if (heading === undefined) return this._defaultCommandGroup ?? '';\n this._defaultCommandGroup = heading;\n return this;\n }\n\n /**\n * Set/get the default help group heading for options added to this command.\n * (This does not override a group set directly on the option using .helpGroup().)\n *\n * @example\n * program\n * .optionsGroup('Development Options:')\n * .option('-d, --debug', 'output extra debugging')\n * .option('-p, --profile', 'output profiling information')\n *\n * @param {string} [heading]\n * @returns {Command | string}\n */\n optionsGroup(heading) {\n if (heading === undefined) return this._defaultOptionGroup ?? '';\n this._defaultOptionGroup = heading;\n return this;\n }\n\n /**\n * @param {Option} option\n * @private\n */\n _initOptionGroup(option) {\n if (this._defaultOptionGroup && !option.helpGroupHeading)\n option.helpGroup(this._defaultOptionGroup);\n }\n\n /**\n * @param {Command} cmd\n * @private\n */\n _initCommandGroup(cmd) {\n if (this._defaultCommandGroup && !cmd.helpGroup())\n cmd.helpGroup(this._defaultCommandGroup);\n }\n\n /**\n * Set the name of the command from script filename, such as process.argv[1],\n * or require.main.filename, or __filename.\n *\n * (Used internally and public although not documented in README.)\n *\n * @example\n * program.nameFromFilename(require.main.filename);\n *\n * @param {string} filename\n * @return {Command}\n */\n\n nameFromFilename(filename) {\n this._name = path.basename(filename, path.extname(filename));\n\n return this;\n }\n\n /**\n * Get or set the directory for searching for executable subcommands of this command.\n *\n * @example\n * program.executableDir(__dirname);\n * // or\n * program.executableDir('subcommands');\n *\n * @param {string} [path]\n * @return {(string|null|Command)}\n */\n\n executableDir(path) {\n if (path === undefined) return this._executableDir;\n this._executableDir = path;\n return this;\n }\n\n /**\n * Return program help documentation.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to wrap for stderr instead of stdout\n * @return {string}\n */\n\n helpInformation(contextOptions) {\n const helper = this.createHelp();\n const context = this._getOutputContext(contextOptions);\n helper.prepareContext({\n error: context.error,\n helpWidth: context.helpWidth,\n outputHasColors: context.hasColors,\n });\n const text = helper.formatHelp(this, helper);\n if (context.hasColors) return text;\n return this._outputConfiguration.stripColor(text);\n }\n\n /**\n * @typedef HelpContext\n * @type {object}\n * @property {boolean} error\n * @property {number} helpWidth\n * @property {boolean} hasColors\n * @property {function} write - includes stripColor if needed\n *\n * @returns {HelpContext}\n * @private\n */\n\n _getOutputContext(contextOptions) {\n contextOptions = contextOptions || {};\n const error = !!contextOptions.error;\n let baseWrite;\n let hasColors;\n let helpWidth;\n if (error) {\n baseWrite = (str) => this._outputConfiguration.writeErr(str);\n hasColors = this._outputConfiguration.getErrHasColors();\n helpWidth = this._outputConfiguration.getErrHelpWidth();\n } else {\n baseWrite = (str) => this._outputConfiguration.writeOut(str);\n hasColors = this._outputConfiguration.getOutHasColors();\n helpWidth = this._outputConfiguration.getOutHelpWidth();\n }\n const write = (str) => {\n if (!hasColors) str = this._outputConfiguration.stripColor(str);\n return baseWrite(str);\n };\n return { error, write, hasColors, helpWidth };\n }\n\n /**\n * Output help information for this command.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n outputHelp(contextOptions) {\n let deprecatedCallback;\n if (typeof contextOptions === 'function') {\n deprecatedCallback = contextOptions;\n contextOptions = undefined;\n }\n\n const outputContext = this._getOutputContext(contextOptions);\n /** @type {HelpTextEventContext} */\n const eventContext = {\n error: outputContext.error,\n write: outputContext.write,\n command: this,\n };\n\n this._getCommandAndAncestors()\n .reverse()\n .forEach((command) => command.emit('beforeAllHelp', eventContext));\n this.emit('beforeHelp', eventContext);\n\n let helpInformation = this.helpInformation({ error: outputContext.error });\n if (deprecatedCallback) {\n helpInformation = deprecatedCallback(helpInformation);\n if (\n typeof helpInformation !== 'string' &&\n !Buffer.isBuffer(helpInformation)\n ) {\n throw new Error('outputHelp callback must return a string or a Buffer');\n }\n }\n outputContext.write(helpInformation);\n\n if (this._getHelpOption()?.long) {\n this.emit(this._getHelpOption().long); // deprecated\n }\n this.emit('afterHelp', eventContext);\n this._getCommandAndAncestors().forEach((command) =>\n command.emit('afterAllHelp', eventContext),\n );\n }\n\n /**\n * You can pass in flags and a description to customise the built-in help option.\n * Pass in false to disable the built-in help option.\n *\n * @example\n * program.helpOption('-?, --help' 'show help'); // customise\n * program.helpOption(false); // disable\n *\n * @param {(string | boolean)} flags\n * @param {string} [description]\n * @return {Command} `this` command for chaining\n */\n\n helpOption(flags, description) {\n // Support enabling/disabling built-in help option.\n if (typeof flags === 'boolean') {\n if (flags) {\n if (this._helpOption === null) this._helpOption = undefined; // reenable\n if (this._defaultOptionGroup) {\n // make the option to store the group\n this._initOptionGroup(this._getHelpOption());\n }\n } else {\n this._helpOption = null; // disable\n }\n return this;\n }\n\n // Customise flags and description.\n this._helpOption = this.createOption(\n flags ?? '-h, --help',\n description ?? 'display help for command',\n );\n // init group unless lazy create\n if (flags || description) this._initOptionGroup(this._helpOption);\n\n return this;\n }\n\n /**\n * Lazy create help option.\n * Returns null if has been disabled with .helpOption(false).\n *\n * @returns {(Option | null)} the help option\n * @package\n */\n _getHelpOption() {\n // Lazy create help option on demand.\n if (this._helpOption === undefined) {\n this.helpOption(undefined, undefined);\n }\n return this._helpOption;\n }\n\n /**\n * Supply your own option to use for the built-in help option.\n * This is an alternative to using helpOption() to customise the flags and description etc.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addHelpOption(option) {\n this._helpOption = option;\n this._initOptionGroup(option);\n return this;\n }\n\n /**\n * Output help information and exit.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n help(contextOptions) {\n this.outputHelp(contextOptions);\n let exitCode = Number(process.exitCode ?? 0); // process.exitCode does allow a string or an integer, but we prefer just a number\n if (\n exitCode === 0 &&\n contextOptions &&\n typeof contextOptions !== 'function' &&\n contextOptions.error\n ) {\n exitCode = 1;\n }\n // message: do not have all displayed text available so only passing placeholder.\n this._exit(exitCode, 'commander.help', '(outputHelp)');\n }\n\n /**\n * // Do a little typing to coordinate emit and listener for the help text events.\n * @typedef HelpTextEventContext\n * @type {object}\n * @property {boolean} error\n * @property {Command} command\n * @property {function} write\n */\n\n /**\n * Add additional text to be displayed with the built-in help.\n *\n * Position is 'before' or 'after' to affect just this command,\n * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.\n *\n * @param {string} position - before or after built-in help\n * @param {(string | Function)} text - string to add, or a function returning a string\n * @return {Command} `this` command for chaining\n */\n\n addHelpText(position, text) {\n const allowedValues = ['beforeAll', 'before', 'after', 'afterAll'];\n if (!allowedValues.includes(position)) {\n throw new Error(`Unexpected value for position to addHelpText.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n\n const helpEvent = `${position}Help`;\n this.on(helpEvent, (/** @type {HelpTextEventContext} */ context) => {\n let helpStr;\n if (typeof text === 'function') {\n helpStr = text({ error: context.error, command: context.command });\n } else {\n helpStr = text;\n }\n // Ignore falsy value when nothing to output.\n if (helpStr) {\n context.write(`${helpStr}\\n`);\n }\n });\n return this;\n }\n\n /**\n * Output help information if help flags specified\n *\n * @param {Array} args - array of options to search for help flags\n * @private\n */\n\n _outputHelpIfRequested(args) {\n const helpOption = this._getHelpOption();\n const helpRequested = helpOption && args.find((arg) => helpOption.is(arg));\n if (helpRequested) {\n this.outputHelp();\n // (Do not have all displayed text available so only passing placeholder.)\n this._exit(0, 'commander.helpDisplayed', '(outputHelp)');\n }\n }\n}\n\n/**\n * Scan arguments and increment port number for inspect calls (to avoid conflicts when spawning new command).\n *\n * @param {string[]} args - array of arguments from node.execArgv\n * @returns {string[]}\n * @private\n */\n\nfunction incrementNodeInspectorPort(args) {\n // Testing for these options:\n // --inspect[=[host:]port]\n // --inspect-brk[=[host:]port]\n // --inspect-port=[host:]port\n return args.map((arg) => {\n if (!arg.startsWith('--inspect')) {\n return arg;\n }\n let debugOption;\n let debugHost = '127.0.0.1';\n let debugPort = '9229';\n let match;\n if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {\n // e.g. --inspect\n debugOption = match[1];\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null\n ) {\n debugOption = match[1];\n if (/^\\d+$/.test(match[3])) {\n // e.g. --inspect=1234\n debugPort = match[3];\n } else {\n // e.g. --inspect=localhost\n debugHost = match[3];\n }\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\\d+)$/)) !== null\n ) {\n // e.g. --inspect=localhost:1234\n debugOption = match[1];\n debugHost = match[3];\n debugPort = match[4];\n }\n\n if (debugOption && debugPort !== '0') {\n return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;\n }\n return arg;\n });\n}\n\n/**\n * @returns {boolean | undefined}\n * @package\n */\nfunction useColor() {\n // Test for common conventions.\n // NB: the observed behaviour is in combination with how author adds color! For example:\n // - we do not test NODE_DISABLE_COLORS, but util:styletext does\n // - we do test NO_COLOR, but Chalk does not\n //\n // References:\n // https://no-color.org\n // https://bixense.com/clicolors/\n // https://github.com/nodejs/node/blob/0a00217a5f67ef4a22384cfc80eb6dd9a917fdc1/lib/internal/tty.js#L109\n // https://github.com/chalk/supports-color/blob/c214314a14bcb174b12b3014b2b0a8de375029ae/index.js#L33\n // (https://force-color.org recent web page from 2023, does not match major javascript implementations)\n\n if (\n process.env.NO_COLOR ||\n process.env.FORCE_COLOR === '0' ||\n process.env.FORCE_COLOR === 'false'\n )\n return false;\n if (process.env.FORCE_COLOR || process.env.CLICOLOR_FORCE !== undefined)\n return true;\n return undefined;\n}\n\nexports.Command = Command;\nexports.useColor = useColor; // exporting for tests\n",
|
|
11
|
-
"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
|
-
"import { randomUUID } from \"node:crypto\";\nimport { existsSync } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport open from \"open\";\nimport type {\n FileSystemStats,\n IEnv,\n IFileSystem,\n IPath,\n IUtils,\n} from \"./interfaces.js\";\n\n// Advisory-lock tuning. A holder refreshes the lock file's mtime every\n// LOCK_HEARTBEAT_MS while it works (on the event loop — which stays free\n// during the holder's async I/O), so STALE only fires for a holder that has\n// stopped heartbeating entirely: crashed, or suspended (OS sleep / SIGSTOP).\n// STALE is several missed heartbeats so a live holder is never reclaimed.\n// MAX_WAIT MUST exceed STALE so a contender that is already waiting when a\n// holder dies can reclaim the stale lock within its own budget rather than\n// timing out first.\n//\n// MAX_HOLD caps total heartbeat lifetime — a holder that legitimately needs\n// the lock for longer than this (e.g. a stalled IdP fetch with no client-side\n// timeout) stops heartbeating so peers can reclaim the lock as stale. The\n// caller's critical section keeps running; only the freshness signal stops.\nconst LOCK_HEARTBEAT_MS = 5_000;\nconst LOCK_STALE_MS = 15_000;\nconst LOCK_MAX_WAIT_MS = 20_000;\nconst LOCK_MAX_HOLD_MS = 60_000;\nconst LOCK_RETRY_MIN_MS = 100;\nconst LOCK_RETRY_JITTER_MS = 200;\n\nexport class NodeFileSystem implements IFileSystem {\n path: IPath = {\n join: path.join,\n resolve: path.resolve,\n relative: path.relative,\n dirname: path.dirname,\n isAbsolute: path.isAbsolute,\n basename: path.basename,\n };\n\n env: IEnv = {\n cwd: process.cwd,\n homedir: os.homedir,\n tmpdir: os.tmpdir,\n getenv: (key: string) => process.env[key],\n };\n\n utils: IUtils = {\n open: async (url: string) => {\n await open(url);\n },\n };\n\n async readFile(path: string): Promise<Uint8Array | null>;\n async readFile(\n path: string,\n options: { encoding: \"utf-8\" } | \"utf-8\",\n ): Promise<string | null>;\n async readFile(\n path: string,\n options?: { encoding: \"utf-8\" } | \"utf-8\",\n ): Promise<Uint8Array | string | null> {\n try {\n if (options) {\n return await fs.readFile(path, \"utf-8\");\n }\n return await fs.readFile(path);\n } catch (error: unknown) {\n if (this.isEnoent(error)) return null;\n throw error;\n }\n }\n\n async writeFile(\n filePath: string,\n data: string | Uint8Array,\n ): Promise<void> {\n const dir = path.dirname(filePath);\n if (dir) {\n await fs.mkdir(dir, { recursive: true });\n }\n await fs.writeFile(filePath, data);\n }\n\n async appendFile(\n filePath: string,\n data: string | Uint8Array,\n ): Promise<void> {\n const dir = path.dirname(filePath);\n if (dir) {\n await fs.mkdir(dir, { recursive: true });\n }\n await fs.appendFile(filePath, data);\n }\n\n async readdir(dirPath: string): Promise<string[]> {\n try {\n return await fs.readdir(dirPath);\n } catch (error: unknown) {\n if (this.isEnoent(error)) return [];\n throw error;\n }\n }\n\n async stat(filePath: string): Promise<FileSystemStats | null> {\n try {\n const stats = await fs.stat(filePath);\n return {\n isFile: () => stats.isFile(),\n isDirectory: () => stats.isDirectory(),\n size: stats.size,\n mtimeMs: stats.mtimeMs,\n };\n } catch (error: unknown) {\n if (this.isEnoent(error)) return null;\n throw error;\n }\n }\n\n async exists(filePath: string): Promise<boolean> {\n return existsSync(filePath);\n }\n\n async mkdir(dirPath: string): Promise<void> {\n await fs.mkdir(dirPath, { recursive: true });\n }\n\n async acquireLock(lockPath: string): Promise<() => Promise<void>> {\n // Normalize so two distinct input strings that resolve to the same\n // file (relative vs absolute, `..` segments, symlinked parent dir)\n // share a single lock. Without this, callers could each claim a\n // different `<path>.lock` file pointing at the same target and\n // defeat mutual exclusion.\n const canonicalPath = await this.canonicalizeLockTarget(lockPath);\n const lockFile = `${canonicalPath}.lock`;\n const ownerId = randomUUID();\n const start = Date.now();\n\n while (true) {\n try {\n // `wx` (O_CREAT | O_EXCL) is an atomic create-or-fail — the\n // contention signal we retry on is `EEXIST`. The owner id we\n // write lets release prove ownership, so a peer that reclaims\n // this lock as stale is never clobbered.\n await fs.writeFile(lockFile, ownerId, { flag: \"wx\" });\n return this.createLockRelease(lockFile, ownerId);\n } catch (error) {\n if (!this.hasErrnoCode(error, \"EEXIST\")) {\n throw error;\n }\n\n const stats = await fs.stat(lockFile).catch(() => null);\n if (stats && Date.now() - stats.mtimeMs > LOCK_STALE_MS) {\n // Holder stopped heartbeating — reclaim and retry at\n // once. If removal fails (e.g. a permission issue on the\n // lock file) fall through to the timeout/backoff below so\n // we never busy-spin on an unremovable stale lock.\n const reclaimed = await fs\n .rm(lockFile, { force: true })\n .then(() => true)\n .catch(() => false);\n if (reclaimed) continue;\n }\n if (Date.now() - start > LOCK_MAX_WAIT_MS) {\n throw new Error(\n `ELOCKED: timed out waiting for lock on ${canonicalPath}`,\n );\n }\n await new Promise((resolve) =>\n setTimeout(\n resolve,\n LOCK_RETRY_MIN_MS +\n Math.random() * LOCK_RETRY_JITTER_MS,\n ),\n );\n }\n }\n }\n\n private async canonicalizeLockTarget(lockPath: string): Promise<string> {\n // Make absolute via CWD, then realpath the FULL target so a\n // symlinked basename pointing at the same file collapses to one\n // identity (e.g. `.auth-link -> .auth`). When the target itself\n // does not exist yet (first-run auth file), fall back to\n // realpath-of-parent + lexical basename. When neither parent nor\n // target exists, fall back to the lexically resolved absolute\n // path — distinct strings for a non-existent dir tree get\n // distinct locks, but that case is degenerate (nothing to\n // contend on).\n const absolute = path.resolve(lockPath);\n const fullReal = await fs.realpath(absolute).catch(() => null);\n if (fullReal) return fullReal;\n const parent = path.dirname(absolute);\n const base = path.basename(absolute);\n const canonicalParent = await fs.realpath(parent).catch(() => parent);\n return path.join(canonicalParent, base);\n }\n\n private createLockRelease(\n lockFile: string,\n ownerId: string,\n ): () => Promise<void> {\n // Keep the lock fresh while held so peers never mistake a slow but\n // alive holder for a stale one. Best-effort: a missed touch only\n // brings the stale deadline forward. `unref` so the heartbeat never\n // keeps the process alive on its own.\n //\n // Self-rescheduling setTimeout chain (instead of setInterval) so\n // a tick whose readFile+utimes exceeds LOCK_HEARTBEAT_MS does not\n // overlap with the next tick — an in-flight stale utimes from a\n // prior tick could otherwise land on a peer's reclaimed lock and\n // silently refresh its mtime.\n //\n // Verify ownership before each touch. If a peer reclaimed this\n // lock as stale (e.g. after an OS suspend past LOCK_STALE_MS) and\n // wrote its own ownerId, an unconditional `utimes` would refresh\n // the peer's lock — silently extending its freshness and breaking\n // stale detection for everyone queued behind it. On owner\n // mismatch we stop heartbeating; release will see the same\n // mismatch and skip rm.\n //\n // After LOCK_MAX_HOLD_MS we stop heartbeating regardless of\n // ownership — a hung holder (e.g. stalled IdP fetch without a\n // client-side timeout) must not keep the lock fresh forever and\n // block every other process. The caller's critical section keeps\n // running; only the freshness signal stops, so peers reclaim it\n // as stale after one more LOCK_STALE_MS budget.\n const heartbeatStart = Date.now();\n let heartbeatTimer: ReturnType<typeof setTimeout> | undefined;\n let stopped = false;\n const stopHeartbeat = (): void => {\n stopped = true;\n if (heartbeatTimer) clearTimeout(heartbeatTimer);\n };\n const scheduleNextHeartbeat = (): void => {\n if (stopped) return;\n if (Date.now() - heartbeatStart >= LOCK_MAX_HOLD_MS) {\n stopped = true;\n return;\n }\n heartbeatTimer = setTimeout(() => {\n void runHeartbeat();\n }, LOCK_HEARTBEAT_MS);\n heartbeatTimer.unref?.();\n };\n const runHeartbeat = async (): Promise<void> => {\n if (stopped) return;\n const current = await fs\n .readFile(lockFile, \"utf-8\")\n .catch(() => null);\n if (stopped) return;\n if (current !== ownerId) {\n stopped = true;\n return;\n }\n const now = Date.now() / 1000;\n await fs.utimes(lockFile, now, now).catch(() => {});\n scheduleNextHeartbeat();\n };\n scheduleNextHeartbeat();\n\n let released = false;\n return async () => {\n if (released) return;\n released = true;\n stopHeartbeat();\n // Only remove the lock if we still own it. If this process was\n // suspended past LOCK_STALE_MS a peer may have reclaimed the lock\n // and written its own id; deleting that would break mutual\n // exclusion for everyone queued behind it.\n //\n // Narrow TOCTOU window remains between this readFile and the rm\n // below: if the process is suspended >LOCK_STALE_MS *after* the\n // owner-match read but *before* the rm, a peer can reclaim and\n // we will then rm the peer's lock. Window requires a multi-\n // second suspension between two adjacent awaits, which is\n // accepted: the heartbeat that previously held off staleness has\n // already been cleared at the top of release, so the suspension\n // would have to land in a sub-second slice of the release path.\n // A perfect fix would re-`writeFile(... wx)` self-check, which\n // muddies the owner-id semantics for no observable user benefit.\n const current = await fs\n .readFile(lockFile, \"utf-8\")\n .catch(() => null);\n if (current === ownerId) {\n await fs.rm(lockFile, { force: true });\n }\n };\n }\n\n async rm(filePath: string): Promise<void> {\n await fs.rm(filePath, { recursive: true, force: true });\n }\n\n async rename(oldPath: string, newPath: string): Promise<void> {\n await fs.rename(oldPath, newPath);\n }\n\n async realpath(filePath: string): Promise<string> {\n try {\n return await fs.realpath(filePath);\n } catch (error: unknown) {\n // Match the behaviour expected by callers walking ancestors of a\n // not-yet-existing path: return the input unchanged so consumers\n // can still reason about logical paths.\n if (this.isEnoent(error)) return filePath;\n throw error;\n }\n }\n\n async getTempDir(): Promise<string> {\n return await fs.mkdtemp(path.join(os.tmpdir(), \"uipath-fs-\"));\n }\n\n async copyDirectory(sourcePath: string, destPath: string): Promise<void> {\n const sourceStats = await this.stat(sourcePath);\n if (!sourceStats) {\n throw new Error(`Source directory does not exist: ${sourcePath}`);\n }\n if (!sourceStats.isDirectory()) {\n throw new Error(`Source path is not a directory: ${sourcePath}`);\n }\n\n await this.mkdir(destPath);\n\n const entries = await this.readdir(sourcePath);\n for (const entry of entries) {\n const srcEntry = path.join(sourcePath, entry);\n const destEntry = path.join(destPath, entry);\n const entryStats = await this.stat(srcEntry);\n if (!entryStats) continue;\n\n if (entryStats.isDirectory()) {\n await this.copyDirectory(srcEntry, destEntry);\n } else if (entryStats.isFile()) {\n const content = await this.readFile(srcEntry);\n if (content !== null) {\n await this.writeFile(destEntry, content);\n }\n }\n }\n }\n\n private isEnoent(error: unknown): boolean {\n return this.hasErrnoCode(error, \"ENOENT\");\n }\n\n private hasErrnoCode(error: unknown, code: string): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as { code: string }).code === code\n );\n }\n}\n",
|
|
13
|
-
"import process from 'node:process';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport {\n\tisWsl,\n\tpowerShellPath,\n\tconvertWslPathToWindows,\n\tcanAccessPowerShell,\n\twslDefaultBrowser,\n} from 'wsl-utils';\nimport {executePowerShell} from 'powershell-utils';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser, {_windowsBrowserProgIdMap} from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\nimport isInSsh from 'is-in-ssh';\n\nconst fallbackAttemptSymbol = Symbol('fallbackAttempt');\n\n// Path to included `xdg-open`.\nconst __dirname = import.meta.url ? path.dirname(fileURLToPath(import.meta.url)) : '';\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\nconst tryEachApp = async (apps, opener) => {\n\tif (apps.length === 0) {\n\t\t// No app was provided\n\t\treturn;\n\t}\n\n\tconst errors = [];\n\n\tfor (const app of apps) {\n\t\ttry {\n\t\t\treturn await opener(app); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\terrors.push(error);\n\t\t}\n\t}\n\n\tthrow new AggregateError(errors, 'Failed to open in all supported apps');\n};\n\n// eslint-disable-next-line complexity\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tconst isFallbackAttempt = options[fallbackAttemptSymbol] === true;\n\tdelete options[fallbackAttemptSymbol];\n\n\tif (Array.isArray(options.app)) {\n\t\treturn tryEachApp(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t\t[fallbackAttemptSymbol]: true,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn tryEachApp(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t\t[fallbackAttemptSymbol]: true,\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same.\n\t\t// IDs are lowercased to increase chances of a match.\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'com.brave.browser': 'brave',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'com.microsoft.edgemac': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t\t'com.apple.safari': 'safari',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tbrave: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t\t// Safari doesn't support private mode via command line\n\t\t};\n\n\t\tlet browser;\n\t\tif (isWsl) {\n\t\t\tconst progId = await wslDefaultBrowser();\n\t\t\tconst browserInfo = _windowsBrowserProgIdMap.get(progId);\n\t\t\tbrowser = browserInfo ?? {};\n\t\t} else {\n\t\t\tbrowser = await defaultBrowser();\n\t\t}\n\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id.toLowerCase()];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\t// Safari doesn't support private mode via command line\n\t\t\t\tif (browserName === 'safari') {\n\t\t\t\t\tthrow new Error('Safari doesn\\'t support opening in private mode via command line');\n\t\t\t\t}\n\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\t// Determine if we should use Windows/PowerShell behavior in WSL.\n\t// We only use Windows integration if PowerShell is actually accessible.\n\t// This allows the package to work in sandboxed WSL environments where Windows access is restricted.\n\tlet shouldUseWindowsInWsl = false;\n\tif (isWsl && !isInsideContainer() && !isInSsh && !app) {\n\t\tshouldUseWindowsInWsl = await canAccessPowerShell();\n\t}\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || shouldUseWindowsInWsl) {\n\t\tcommand = await powerShellPath();\n\n\t\tcliArguments.push(...executePowerShell.argumentsPrefix);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\t// Convert WSL Linux paths to Windows paths\n\t\tif (isWsl && options.target) {\n\t\t\toptions.target = await convertWslPathToWindows(options.target);\n\t\t}\n\n\t\t// Suppress PowerShell progress messages that are written to stderr\n\t\tconst encodedArguments = ['$ProgressPreference = \\'SilentlyContinue\\';', 'Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\tencodedArguments.push(executePowerShell.escapeArgument(app));\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(executePowerShell.escapeArgument(options.target));\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => executePowerShell.escapeArgument(argument));\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = executePowerShell.encodeCommand(encodedArguments.join(' '));\n\n\t\tif (!options.wait) {\n\t\t\t// PowerShell will keep the parent process alive unless stdio is ignored.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t}\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// IMPORTANT: On macOS, the target MUST come AFTER '--args'.\n\t// When using --args, ALL following arguments are passed to the app.\n\t// Example: open -a \"chrome\" --args --incognito https://site.com\n\t// This passes BOTH --incognito AND https://site.com to Chrome.\n\t// Without this order, Chrome won't open in incognito. See #332.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode !== 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\t// When we're in a fallback attempt, we need to detect launch failures before trying the next app.\n\t// Wait for the close event to check the exit code before unreffing.\n\t// The launcher (open/xdg-open/PowerShell) exits quickly (~10-30ms) even on success.\n\tif (isFallbackAttempt) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('spawn', () => {\n\t\t\t\t// Keep error handler active for post-spawn errors\n\t\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\t\tsubprocess.off('error', reject);\n\n\t\t\t\t\tif (exitCode !== 0) {\n\t\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tsubprocess.unref();\n\t\t\t\t\tresolve(subprocess);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\t// Handle spawn errors before the caller can attach listeners.\n\t// This prevents unhandled error events from crashing the process.\n\treturn new Promise((resolve, reject) => {\n\t\tsubprocess.once('error', reject);\n\n\t\t// Wait for the subprocess to spawn before resolving.\n\t\t// This ensures the process is established before the caller continues,\n\t\t// preventing issues when process.exit() is called immediately after.\n\t\tsubprocess.once('spawn', () => {\n\t\t\tsubprocess.off('error', reject);\n\t\t\tresolve(subprocess);\n\t\t});\n\t});\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string' && !Array.isArray(name)) {\n\t\tthrow new TypeError('Expected a valid `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl} = {}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {\n\tbrowser: 'browser',\n\tbrowserPrivate: 'browserPrivate',\n};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\t// `chromium-browser` is the older deb package name used by Ubuntu/Debian before snap.\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium', 'chromium-browser'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'brave', () => detectPlatformBinary({\n\tdarwin: 'brave browser',\n\twin32: 'brave',\n\tlinux: ['brave-browser', 'brave'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe',\n\t\tx64: ['/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe', '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: String.raw`C:\\Program Files\\Mozilla Firefox\\firefox.exe`,\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'safari', () => detectPlatformBinary({\n\tdarwin: 'Safari',\n}));\n\nexport default open;\n",
|
|
14
|
-
"import {promisify} from 'node:util';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\nimport {powerShellPath as windowsPowerShellPath, executePowerShell} from 'powershell-utils';\nimport {parseMountPointFromConfig} from './utilities.js';\n\nconst execFile = promisify(childProcess.execFile);\n\nexport const wslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst parsedMountPoint = parseMountPointFromConfig(configContent);\n\n\t\tif (parsedMountPoint === undefined) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = parsedMountPoint;\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nexport const powerShellPathFromWsl = async () => {\n\tconst mountPoint = await wslDrivesMountPoint();\n\treturn `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`;\n};\n\nexport const powerShellPath = isWsl ? powerShellPathFromWsl : windowsPowerShellPath;\n\n// Cache for PowerShell accessibility check\nlet canAccessPowerShellPromise;\n\nexport const canAccessPowerShell = async () => {\n\tcanAccessPowerShellPromise ??= (async () => {\n\t\ttry {\n\t\t\tconst psPath = await powerShellPath();\n\t\t\tawait fs.access(psPath, fsConstants.X_OK);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\t// PowerShell is not accessible (either doesn't exist, no execute permission, or other error)\n\t\t\treturn false;\n\t\t}\n\t})();\n\n\treturn canAccessPowerShellPromise;\n};\n\nexport const wslDefaultBrowser = async () => {\n\tconst psPath = await powerShellPath();\n\tconst command = String.raw`(Get-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice\").ProgId`;\n\n\tconst {stdout} = await executePowerShell(command, {powerShellPath: psPath});\n\n\treturn stdout.trim();\n};\n\nexport const convertWslPathToWindows = async path => {\n\t// Don't convert URLs\n\tif (/^[a-z]+:\\/\\//i.test(path)) {\n\t\treturn path;\n\t}\n\n\ttry {\n\t\tconst {stdout} = await execFile('wslpath', ['-aw', path], {encoding: 'utf8'});\n\t\treturn stdout.trim();\n\t} catch {\n\t\t// If wslpath fails, return the original path\n\t\treturn path;\n\t}\n};\n\nexport {default as isWsl} from 'is-wsl';\n",
|
|
15
|
-
"import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\tif (fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')) {\n\t\t\treturn !isInsideContainer();\n\t\t}\n\t} catch {}\n\n\t// Fallback for custom kernels: check WSL-specific paths.\n\tif (\n\t\tfs.existsSync('/proc/sys/fs/binfmt_misc/WSLInterop')\n\t\t|| fs.existsSync('/run/WSL')\n\t) {\n\t\treturn !isInsideContainer();\n\t}\n\n\treturn false;\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n",
|
|
16
|
-
"import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n",
|
|
17
|
-
"import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n",
|
|
18
|
-
"import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport {promisify} from 'node:util';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\n\nconst execFile = promisify(childProcess.execFile);\n\nexport const powerShellPath = () => `${process.env.SYSTEMROOT || process.env.windir || String.raw`C:\\Windows`}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe`;\n\n// Cache for PowerShell accessibility check\nlet canAccessCache;\n\nexport const canAccessPowerShell = async () => {\n\tcanAccessCache ??= (async () => {\n\t\ttry {\n\t\t\tawait fs.access(powerShellPath(), fsConstants.X_OK);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t})();\n\n\treturn canAccessCache;\n};\n\nexport const executePowerShell = async (command, options = {}) => {\n\tconst {\n\t\tpowerShellPath: psPath,\n\t\t...execFileOptions\n\t} = options;\n\n\tconst encodedCommand = executePowerShell.encodeCommand(command);\n\n\treturn execFile(\n\t\tpsPath ?? powerShellPath(),\n\t\t[\n\t\t\t...executePowerShell.argumentsPrefix,\n\t\t\tencodedCommand,\n\t\t],\n\t\t{\n\t\t\tencoding: 'utf8',\n\t\t\t...execFileOptions,\n\t\t},\n\t);\n};\n\nexecutePowerShell.argumentsPrefix = [\n\t'-NoProfile',\n\t'-NonInteractive',\n\t'-ExecutionPolicy',\n\t'Bypass',\n\t'-EncodedCommand',\n];\n\nexecutePowerShell.encodeCommand = command => Buffer.from(command, 'utf16le').toString('base64');\n\nexecutePowerShell.escapeArgument = value => `'${String(value).replaceAll('\\'', '\\'\\'')}'`;\n",
|
|
19
|
-
"export function parseMountPointFromConfig(content) {\n\tfor (const line of content.split('\\n')) {\n\t\t// Skip comment lines\n\t\tif (/^\\s*#/.test(line)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Match root at start of line (after optional whitespace)\n\t\tconst match = /^\\s*root\\s*=\\s*(?<mountPoint>\"[^\"]*\"|'[^']*'|[^#]*)/.exec(line);\n\t\tif (!match) {\n\t\t\tcontinue;\n\t\t}\n\n\t\treturn match.groups.mountPoint\n\t\t\t.trim()\n\t\t\t// Strip surrounding quotes\n\t\t\t.replaceAll(/^[\"']|[\"']$/g, '');\n\t}\n}\n",
|
|
20
|
-
"export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n",
|
|
21
|
-
"import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nexport {_windowsBrowserProgIdMap} from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n",
|
|
22
|
-
"import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?<id>[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\tconst browserId = match?.groups.id ?? 'com.apple.Safari';\n\n\t// Correct the case for Safari's bundle identifier\n\tif (browserId === 'com.apple.safari') {\n\t\treturn 'com.apple.Safari';\n\t}\n\n\treturn browserId;\n}\n",
|
|
23
|
-
"import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true, signal} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst execOptions = {};\n\tif (signal) {\n\t\texecOptions.signal = signal;\n\t}\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments], execOptions);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n",
|
|
24
|
-
"import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n",
|
|
25
|
-
"import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// TODO: Fix the casing of bundle identifiers in the next major version.\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // The missing `L` is correct.\n\tMSEdgeBHTML: {name: 'Edge Beta', id: 'com.microsoft.edge.beta'},\n\tMSEdgeDHTML: {name: 'Edge Dev', id: 'com.microsoft.edge.dev'},\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tChromeBHTML: {name: 'Chrome Beta', id: 'com.google.chrome.beta'},\n\tChromeDHTML: {name: 'Chrome Dev', id: 'com.google.chrome.dev'},\n\tChromiumHTM: {name: 'Chromium', id: 'org.chromium.Chromium'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveDHTML: {name: 'Brave Dev', id: 'com.brave.Browser.dev'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tOperaStable: {name: 'Opera', id: 'com.operasoftware.Opera'},\n\tVivaldiHTM: {name: 'Vivaldi', id: 'com.vivaldi.Vivaldi'},\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n};\n\nexport const _windowsBrowserProgIdMap = new Map(Object.entries(windowsBrowserProgIds));\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?<id>\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\t// Windows can append a hash suffix to ProgIds using a dot or hyphen\n\t// (e.g., `ChromeHTML.ABC123`, `FirefoxURL-6F193CCC56814779`).\n\t// Try exact match first, then try without the suffix.\n\tconst dotIndex = id.lastIndexOf('.');\n\tconst hyphenIndex = id.lastIndexOf('-');\n\tconst baseIdByDot = dotIndex === -1 ? undefined : id.slice(0, dotIndex);\n\tconst baseIdByHyphen = hyphenIndex === -1 ? undefined : id.slice(0, hyphenIndex);\n\n\treturn windowsBrowserProgIds[id] ?? windowsBrowserProgIds[baseIdByDot] ?? windowsBrowserProgIds[baseIdByHyphen] ?? {name: id, id};\n}\n",
|
|
26
|
-
"import process from 'node:process';\n\nconst isInSsh = Boolean(process.env.SSH_CONNECTION\n\t|| process.env.SSH_CLIENT\n\t|| process.env.SSH_TTY);\n\nexport default isInSsh;\n",
|
|
27
|
-
"import type { IFileSystem } from \"./interfaces.js\";\nimport { NodeFileSystem } from \"./node.js\";\n\nconst fsInstance = new NodeFileSystem();\n\n// Type-only mirror of the browser entry's `setFileSystem`. Consumers import\n// via the bare `@uipath/filesystem` specifier; TypeScript resolves that to\n// this Node entry's `.d.ts`, so the export must exist here. At runtime the\n// bundler's browser conditional export swaps in `index.browser.ts`, where\n// the real override implementation lives. Node never exercises this path, so\n// we keep it as a no-op to leave Node runtime behaviour unchanged.\nexport const setFileSystem =\n (_fs: IFileSystem | null): (() => void) =>\n () => {};\n\nexport const getFileSystem = (): IFileSystem => fsInstance;\n\nexport const getFileSystemAsync = async (): Promise<IFileSystem> => fsInstance;\n\nexport * from \"./interfaces.js\";\nexport { NodeFileSystem } from \"./node.js\";\n",
|
|
28
|
-
"type CatchErrorResult<T> = [undefined, T] | [Error, undefined];\ntype FunctionOrPromise<T> = Promise<T> | (() => T);\n\n// Duck-type check for promise-like objects. Using instanceof Promise\n// fails in cross-realm environments (iframes, module federation, IIFE\n// bundles hosted on a different page) where the Promise constructor\n// differs from the one in the current execution context.\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return (\n value !== null &&\n typeof value === \"object\" &&\n typeof (value as { then?: unknown }).then === \"function\"\n );\n}\n\nexport function catchError<T>(\n fnOrPromise: Promise<T>,\n): Promise<CatchErrorResult<T>>;\n\nexport function catchError<T>(\n fnOrPromise: () => Promise<T>,\n): Promise<CatchErrorResult<T>>;\n\nexport function catchError<T>(fnOrPromise: () => T): CatchErrorResult<T>;\n\nexport function catchError<T>(\n fnOrPromise: FunctionOrPromise<T>,\n): Promise<CatchErrorResult<T>> | CatchErrorResult<T> {\n if (isPromiseLike(fnOrPromise)) {\n return settlePromiseLike(fnOrPromise as PromiseLike<T>);\n }\n\n try {\n const result = (fnOrPromise as () => T)();\n if (isPromiseLike(result)) {\n return settlePromiseLike(result as PromiseLike<T>);\n }\n return [undefined, result] as const;\n } catch (error) {\n return [\n error instanceof Error ? error : new Error(String(error)),\n undefined,\n ] as const;\n }\n}\n\n// Promise.resolve() coerces any PromiseLike into a genuine Promise, giving us\n// access to `.catch` even for cross-realm thenables that only guarantee `.then`.\nfunction settlePromiseLike<T>(\n thenable: PromiseLike<T>,\n): Promise<CatchErrorResult<T>> {\n return Promise.resolve(thenable)\n .then((data): CatchErrorResult<T> => [undefined, data] as const)\n .catch(\n (error: unknown): CatchErrorResult<T> =>\n [\n error instanceof Error ? error : new Error(String(error)),\n undefined,\n ] as const,\n );\n}\n",
|
|
29
|
-
"import { catchError } from \"./catch-error\";\nimport type {\n CliErrorCode,\n ErrorContext,\n FailureResultType,\n RetryHint,\n} from \"./formatter\";\n\n/**\n * Structured error details returned by {@link extractErrorDetails}.\n */\nexport interface ErrorDetails {\n /** Categorised failure type suitable for OutputFormatter.error() Result field */\n result: FailureResultType;\n /** Stable CLI-owned error code suitable for agent control flow */\n errorCode: CliErrorCode;\n /** Human-readable error message suitable for OutputFormatter.error() */\n message: string;\n /** Stable retry guidance suitable for agent control flow */\n retry: RetryHint;\n /** Raw details from the response body or error object for debugging */\n details: string;\n /** Machine-readable context for agents (HTTP status, request ID, retry-after, etc.) */\n context?: ErrorContext;\n /**\n * Per-field validation errors lifted from an ASP.NET ProblemDetails body\n * (application/problem+json). Shape: `{ fieldName: [\"msg\", ...] }`.\n * Surfaced as `Errors` on the OutputFormatter envelope so agents can\n * react to the specific field that failed validation instead of parsing\n * the free-text Message.\n */\n parsedErrors?: Record<string, string[]>;\n}\n\n/**\n * Options for customising error extraction behaviour.\n */\nexport interface ExtractErrorOptions {\n /** Custom message for HTTP 403 Forbidden errors. Uses a generic default if omitted. */\n forbiddenMessage?: string;\n}\n\nconst DEFAULT_401 = \"Unauthorized (401). Run `uip login` to authenticate.\";\nconst DEFAULT_403 =\n \"Forbidden (403). Ensure the account has the required permissions.\";\nconst DEFAULT_405 =\n \"Method Not Allowed (405). The endpoint may not exist or the base URL may be incorrect.\";\nconst HTML_RESPONSE_MESSAGE =\n \"Received HTML instead of the expected JSON response.\";\nconst NETWORK_ERROR_CODES = new Set([\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"ENOTFOUND\",\n \"EAI_AGAIN\",\n \"ETIMEDOUT\",\n \"EPIPE\",\n \"EHOSTUNREACH\",\n \"ENETUNREACH\",\n \"EAI_FAIL\",\n]);\n\n// TLS trust failures — almost always a corporate proxy / firewall that\n// re-signs HTTPS with a root CA that Node does not trust. Node's `fetch`\n// hides these inside a generic `TypeError: fetch failed`, with the real\n// code on `error.cause`.\nconst TLS_ERROR_CODES = new Set([\n \"SELF_SIGNED_CERT_IN_CHAIN\",\n \"DEPTH_ZERO_SELF_SIGNED_CERT\",\n \"UNABLE_TO_VERIFY_LEAF_SIGNATURE\",\n \"UNABLE_TO_GET_ISSUER_CERT_LOCALLY\",\n \"UNABLE_TO_GET_ISSUER_CERT\",\n \"CERT_HAS_EXPIRED\",\n \"CERT_UNTRUSTED\",\n \"ERR_TLS_CERT_ALTNAME_INVALID\",\n]);\n\nconst TLS_INSTRUCTIONS =\n \"The server's TLS certificate could not be verified. Most often a \" +\n \"corporate proxy/firewall re-signs HTTPS with a root CA that Node does \" +\n \"not trust — set NODE_EXTRA_CA_CERTS to that CA's PEM file (and HTTPS_PROXY \" +\n \"if you connect through a proxy). If the certificate is instead expired or \" +\n \"its hostname does not match, fix the endpoint URL or the system clock. \" +\n \"Then retry.\";\n\nconst NETWORK_INSTRUCTIONS =\n \"Could not reach the UiPath service. Check your network connection and \" +\n \"VPN, confirm any HTTP_PROXY/HTTPS_PROXY/NO_PROXY settings are correct, \" +\n \"then retry.\";\n\n/**\n * A connectivity failure (TLS trust or socket/DNS), already classified with\n * actionable guidance. Returned by {@link describeConnectivityError}.\n */\nexport interface ConnectivityError {\n /** The OS/TLS error code, e.g. `SELF_SIGNED_CERT_IN_CHAIN`. */\n code: string;\n /** Whether the failure is a TLS trust problem or a plain network problem. */\n kind: \"tls\" | \"network\";\n /** The most specific message found while walking the cause chain. */\n message: string;\n /** Actionable, user-facing remediation steps. */\n instructions: string;\n}\n\n/**\n * Classify an outbound connectivity failure by walking the `cause` chain.\n *\n * Node's native `fetch` wraps the real failure (a TLS or socket error) inside\n * a generic `TypeError: fetch failed`, so the useful code/message lives on\n * `error.cause` (sometimes nested deeper). This unwraps that chain and, when\n * it finds a known TLS or network code, returns the specific message plus\n * remediation steps. Returns `undefined` for anything that isn't a recognised\n * connectivity failure so callers can fall back to their normal handling.\n */\nexport function describeConnectivityError(\n error: unknown,\n): ConnectivityError | undefined {\n let current: unknown = error;\n for (\n let depth = 0;\n depth < 5 && current !== null && typeof current === \"object\";\n depth++\n ) {\n const cur = current as Record<string, unknown>;\n const code = typeof cur.code === \"string\" ? cur.code : undefined;\n const message =\n typeof cur.message === \"string\" ? cur.message : undefined;\n if (code && TLS_ERROR_CODES.has(code)) {\n return {\n code,\n kind: \"tls\",\n message: message ?? code,\n instructions: TLS_INSTRUCTIONS,\n };\n }\n if (code && NETWORK_ERROR_CODES.has(code)) {\n return {\n code,\n kind: \"network\",\n message: message ?? code,\n instructions: NETWORK_INSTRUCTIONS,\n };\n }\n current = cur.cause;\n }\n return undefined;\n}\n\ninterface ResponseLike {\n status?: number;\n statusText?: string;\n text?: () => Promise<string>;\n}\n\nexport function isHtmlDocument(body: string): boolean {\n return /^\\s*(<!doctype html|<html\\b)/i.test(body);\n}\n\nfunction retryHintForRetryAfter(seconds: number): RetryHint {\n if (seconds <= 1) {\n return \"RetryAfter1Second\";\n }\n if (seconds <= 10) {\n return \"RetryAfter10Seconds\";\n }\n if (seconds <= 30) {\n return \"RetryAfter30Seconds\";\n }\n return \"RetryAfter60Seconds\";\n}\n\nfunction classifyError(\n status: number | undefined,\n error: unknown,\n): { errorCode: CliErrorCode; retry: RetryHint } {\n if (status === 400 || status === 409 || status === 422) {\n return { errorCode: \"invalid_argument\", retry: \"RetryWillNotFix\" };\n }\n if (status === 401) {\n return {\n errorCode: \"authentication_required\",\n retry: \"RetryWillNotFix\",\n };\n }\n if (status === 403) {\n return { errorCode: \"permission_denied\", retry: \"RetryWillNotFix\" };\n }\n if (status === 404) {\n return { errorCode: \"not_found\", retry: \"RetryWillNotFix\" };\n }\n if (status === 405) {\n return { errorCode: \"method_not_allowed\", retry: \"RetryWillNotFix\" };\n }\n if (status === 408) {\n return { errorCode: \"timeout\", retry: \"RetryLater\" };\n }\n if (status === 429) {\n return { errorCode: \"rate_limited\", retry: \"RetryLater\" };\n }\n if (status !== undefined && status >= 500 && status < 600) {\n return { errorCode: \"server_error\", retry: \"RetryLater\" };\n }\n const connectivity = describeConnectivityError(error);\n if (connectivity) {\n return {\n errorCode: \"network_error\",\n // A TLS trust failure won't fix itself on retry — it needs a CA or\n // proxy change. Plain socket/DNS errors are worth retrying.\n retry:\n connectivity.kind === \"tls\" ? \"RetryWillNotFix\" : \"RetryLater\",\n };\n }\n return { errorCode: \"unknown_error\", retry: \"RetryWillNotFix\" };\n}\n\n/**\n * Extract a structured error message and details from an unknown thrown value.\n *\n * Handles the common shapes seen across UiPath API SDKs:\n * - Objects with `.status` and/or `.response.status` (HTTP-like errors)\n * - JSON response bodies with `message`, `errorMessage`, `title`, or nested `errors`\n * - Standard `Error` objects\n * - Arbitrary values (stringified as fallback)\n *\n * HTTP status code handling:\n * - 401 → authentication prompt\n * - 403 → permissions message (customisable via `options.forbiddenMessage`)\n * - 405 → endpoint hint\n * - Other → `HTTP {status}: {body message}`\n */\nexport async function extractErrorDetails(\n error: unknown,\n options?: ExtractErrorOptions,\n): Promise<ErrorDetails> {\n const err = (\n error !== null && error !== undefined && typeof error === \"object\"\n ? error\n : {}\n ) as Record<string, unknown>;\n const response = err.response as ResponseLike | undefined;\n const status = (err.status as number | undefined) ?? response?.status;\n const isSuccessfulResponse =\n status !== undefined && status >= 200 && status < 300;\n\n let rawBody: string | undefined;\n let extractedMessage: string | undefined;\n let parsedBody: Record<string, unknown> | undefined;\n\n // Attempt to read and parse the response body (once).\n // Wrap in async IIFE so synchronous throws from text() become rejected promises.\n const textFn = response?.text?.bind(response);\n if (textFn) {\n const [bodyError, body] = await catchError((async () => textFn())());\n if (!bodyError && body) {\n rawBody = body;\n const [parseError, parsed] = catchError(() => JSON.parse(body));\n if (!parseError && parsed && typeof parsed === \"object\") {\n parsedBody = parsed as Record<string, unknown>;\n\n // 1. Nested errors array (e.g. validation error responses)\n if (\n parsedBody.errors &&\n typeof parsedBody.errors === \"object\"\n ) {\n for (const field of Object.values(\n parsedBody.errors as Record<string, unknown>,\n )) {\n if (Array.isArray(field) && field.length > 0) {\n const first = field[0] as Record<string, unknown>;\n if (first && typeof first.message === \"string\") {\n extractedMessage = first.message;\n break;\n }\n }\n }\n }\n\n // 2. Top-level message fields\n if (!extractedMessage) {\n extractedMessage =\n typeof parsedBody.message === \"string\"\n ? parsedBody.message\n : typeof parsedBody.errorMessage === \"string\"\n ? parsedBody.errorMessage\n : typeof parsedBody.title === \"string\"\n ? parsedBody.title\n : undefined;\n }\n\n // 3. Valid JSON but no recognised fields — use the raw body\n if (!extractedMessage) {\n extractedMessage = body;\n }\n } else {\n // Not JSON — use the raw text\n extractedMessage = isHtmlDocument(body)\n ? HTML_RESPONSE_MESSAGE\n : body;\n }\n }\n }\n\n // Build the user-facing message and classify the failure type\n const rawMessage =\n typeof err.message === \"string\" ? err.message : \"Unknown error\";\n let message: string;\n let result: FailureResultType = \"Failure\";\n const classification = classifyError(status, error);\n let retry = classification.retry;\n\n if (status === 401) {\n message = DEFAULT_401;\n result = \"AuthenticationError\";\n } else if (status === 403) {\n message = options?.forbiddenMessage ?? DEFAULT_403;\n result = \"AuthenticationError\";\n } else if (status === 405) {\n message = DEFAULT_405;\n } else if (status === 400 || status === 422) {\n message = extractedMessage\n ? `HTTP ${status}: ${extractedMessage}`\n : `HTTP ${status}: ${rawMessage}`;\n result = \"ValidationError\";\n } else if (status === 429) {\n message = extractedMessage\n ? `HTTP ${status}: ${extractedMessage}`\n : `HTTP ${status}: ${rawMessage}`;\n // Keep result as \"Failure\" — rate limiting is transient, not a validation error\n } else if (extractedMessage) {\n if (isSuccessfulResponse && rawMessage !== \"Unknown error\") {\n message = rawMessage;\n } else {\n // Preserve HTTP status prefix for context (4xx vs 5xx)\n message = status\n ? `HTTP ${status}: ${extractedMessage}`\n : extractedMessage;\n }\n } else if (status) {\n if (rawMessage === \"Unknown error\" && response) {\n // statusText fallback when neither body nor error object had a useful message\n const statusText = response.statusText;\n message = statusText\n ? `HTTP ${status} ${statusText}`\n : `HTTP ${status} - request failed`;\n } else {\n // No body message — include HTTP status for context\n message = `HTTP ${status}: ${rawMessage}`;\n }\n } else {\n message = rawMessage;\n }\n\n // Node's fetch collapses TLS/socket failures into a bare \"fetch failed\"\n // and hides the real reason on `error.cause`. When there's no richer HTTP\n // message (those already carry the server's explanation), surface that\n // cause so the message alone is actionable across every tool.\n if (status === undefined) {\n const connectivity = describeConnectivityError(error);\n if (\n connectivity &&\n connectivity.message !== message &&\n !message.includes(connectivity.message)\n ) {\n message = `${message}: ${connectivity.message}`;\n }\n }\n\n // Build details — prefer structured extra fields, fall back to raw body\n let details: string = rawMessage;\n if (rawBody) {\n if (parsedBody) {\n const extra: Record<string, unknown> = {};\n if (parsedBody.errorCode) extra.errorCode = parsedBody.errorCode;\n if (parsedBody.details) extra.details = parsedBody.details;\n if (parsedBody.errors != null) extra.errors = parsedBody.errors;\n if (\n parsedBody.data &&\n typeof parsedBody.data === \"object\" &&\n Object.keys(parsedBody.data as Record<string, unknown>).length >\n 0\n ) {\n extra.data = parsedBody.data;\n }\n details =\n Object.keys(extra).length > 0 ? JSON.stringify(extra) : rawBody;\n } else {\n details = rawBody;\n }\n } else if (typeof err.message === \"string\") {\n details = err.message;\n } else {\n details = String(error);\n }\n\n // Build machine-readable context for agents\n const context: ErrorContext = {};\n if (status) {\n context.httpStatus = status;\n }\n if (parsedBody?.errorCode && typeof parsedBody.errorCode === \"string\") {\n context.errorCode = parsedBody.errorCode;\n } else if (parsedBody?.code && typeof parsedBody.code === \"string\") {\n // ConnectionService and other UiPath services use `code` instead of `errorCode`\n context.errorCode = parsedBody.code;\n }\n if (parsedBody?.requestId && typeof parsedBody.requestId === \"string\") {\n context.requestId = parsedBody.requestId;\n }\n if (parsedBody?.traceId && typeof parsedBody.traceId === \"string\") {\n context.traceId = parsedBody.traceId;\n }\n if (status === 429) {\n const resp = response as Record<string, unknown> | undefined;\n const headersObj = resp?.headers;\n let retryAfterValue: string | undefined;\n\n // fetch()-style Headers object with .get()\n if (\n headersObj &&\n typeof headersObj === \"object\" &&\n typeof (headersObj as { get?: unknown }).get === \"function\"\n ) {\n retryAfterValue =\n (headersObj as { get(n: string): string | null }).get(\n \"retry-after\",\n ) ?? undefined;\n }\n\n // Plain object (e.g. test doubles, non-fetch HTTP clients)\n if (!retryAfterValue && headersObj && typeof headersObj === \"object\") {\n const headers = headersObj as Record<string, string>;\n retryAfterValue = headers[\"retry-after\"] ?? headers[\"Retry-After\"];\n }\n\n if (retryAfterValue) {\n const seconds = Number(retryAfterValue);\n if (!Number.isNaN(seconds)) {\n context.retryAfter = seconds;\n retry = retryHintForRetryAfter(seconds);\n }\n }\n }\n const hasContext = Object.keys(context).length > 0;\n\n // ProblemDetails `errors` field (ASP.NET application/problem+json) →\n // surface as a structured `{field: [\"msg\", ...]}` map. Tolerates both\n // the canonical array-of-strings shape and the array-of-objects shape\n // seen on some UiPath services.\n let parsedErrors: Record<string, string[]> | undefined;\n if (parsedBody?.errors && typeof parsedBody.errors === \"object\") {\n const errors: Record<string, string[]> = {};\n for (const [field, raw] of Object.entries(\n parsedBody.errors as Record<string, unknown>,\n )) {\n if (Array.isArray(raw)) {\n const messages = raw\n .map((entry) => {\n if (typeof entry === \"string\") return entry;\n if (\n entry &&\n typeof entry === \"object\" &&\n typeof (entry as { message?: unknown }).message ===\n \"string\"\n ) {\n return (entry as { message: string }).message;\n }\n return String(entry);\n })\n .filter(Boolean);\n if (messages.length > 0) errors[field] = messages;\n } else if (typeof raw === \"string\") {\n errors[field] = [raw];\n }\n }\n if (Object.keys(errors).length > 0) parsedErrors = errors;\n }\n\n return {\n result,\n errorCode: classification.errorCode,\n message,\n retry,\n details,\n ...(hasContext ? { context } : {}),\n ...(parsedErrors ? { parsedErrors } : {}),\n };\n}\n\n/**\n * Extract a human-readable error message from an unknown thrown value.\n *\n * Convenience wrapper around {@link extractErrorDetails} that returns only the\n * message string.\n */\nexport async function extractErrorMessage(\n error: unknown,\n options?: ExtractErrorOptions,\n): Promise<string> {\n const { message } = await extractErrorDetails(error, options);\n return message;\n}\n\n/**\n * Synchronous variant of {@link extractErrorMessage}.\n *\n * Does NOT attempt to read response bodies (which requires async I/O).\n * Suitable for MCP SDK errors and other contexts where errors are always\n * plain `Error` objects.\n */\nexport function extractErrorMessageSync(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n if (typeof error === \"object\" && error !== null) {\n if (\"status\" in error && error.status === 401) {\n return DEFAULT_401;\n }\n if (\n \"message\" in error &&\n typeof (error as Record<string, unknown>).message === \"string\"\n ) {\n return (error as Record<string, unknown>).message as string;\n }\n }\n\n return String(error);\n}\n",
|
|
30
|
-
"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",
|
|
31
|
-
"import { Command } from \"commander\";\n\n/**\n * Structured example output data, stored as objects for format-agnostic rendering.\n * The `Code` mirrors the SuccessOutput.Code the real command would emit;\n * `Data` holds anonymized sample records.\n */\nexport interface CommandExampleOutput {\n Code: string;\n Data: Record<string, unknown> | Record<string, unknown>[];\n}\n\n/**\n * A single usage example for a leaf command.\n *\n * Displayed in the \"Examples\" section of `--help` output.\n * The `Output.Data` is stored as plain objects so the help renderer\n * can format it in whatever `--output` mode is active (table, json, yaml, plain).\n */\nexport interface CommandExample {\n /** Short description of what this example demonstrates (optional). */\n Description?: string;\n /** The anonymized command invocation (e.g. \"uip or machines list --limit 2\"). */\n Command: string;\n /** Example response data the command would produce. */\n Output: CommandExampleOutput;\n}\n\nconst examplesByCommand = new WeakMap<Command, CommandExample[]>();\n\n/** Retrieve examples registered on a command (empty array if none). */\nexport function getCommandExamples(cmd: Command): CommandExample[] {\n return examplesByCommand.get(cmd) ?? [];\n}\n\n// ---------------------------------------------------------------------------\n// Commander augmentation\n// ---------------------------------------------------------------------------\n\ndeclare module \"commander\" {\n interface Command {\n /**\n * Register usage examples displayed in the \"Examples\" help section.\n * Only meaningful on leaf commands (those with a `.trackedAction`).\n */\n examples(examples: CommandExample[]): this;\n }\n}\n\nCommand.prototype.examples = function (examples: CommandExample[]): Command {\n examplesByCommand.set(this, examples);\n return this;\n};\n",
|
|
32
|
-
"/**\n * Cross-bundle singleton primitive.\n *\n * Each tool bundles its own copy of @uipath/common, so module-level\n * variables are isolated per bundle. This utility uses Symbol.for()\n * keyed slots on globalThis to share state across all bundles.\n *\n * Usage:\n *\n * // Class — name derived from constructor:\n * const logger = singleton(SimpleLogger);\n * logger.getOrInit(() => new SimpleLogger());\n *\n * // Type alias or union — explicit name:\n * const format = singleton<OutputFormat>(\"OutputFormat\");\n * format.set(\"json\");\n * format.get(\"table\"); // \"json\" (value takes precedence)\n */\n\nconst PREFIX = \"@uipath/common/\";\nconst _g = globalThis as Record<symbol, unknown>;\n\nexport interface Singleton<T> {\n /** Read the current value, or `fallback` when unset. */\n get(fallback?: T): T | undefined;\n /** Write a new value. */\n set(value: T): void;\n /** Reset to undefined. */\n clear(): void;\n /**\n * Get the existing value, or initialise it with `factory()`.\n * An optional `guard` validates existing values via duck-typing\n * (needed because `instanceof` fails across bundles).\n */\n getOrInit(factory: () => T, guard?: (value: object) => boolean): T;\n}\n\n/**\n * Create a typed singleton backed by `globalThis[Symbol.for(key)]`.\n *\n * @overload Pass a class constructor to derive the key from its name.\n * @overload Pass a string key for non-class types (type aliases, unions).\n *\n * The key is auto-prefixed with `@uipath/common/`.\n */\n// biome-ignore lint/suspicious/noExplicitAny: must accept any constructor shape\nexport function singleton<T>(\n ctor: abstract new (...args: any[]) => T,\n): Singleton<T>;\nexport function singleton<T>(name: string): Singleton<T>;\n// biome-ignore lint/suspicious/noExplicitAny: overload implementation\nexport function singleton<T>(\n ctorOrName: (abstract new (...args: any[]) => T) | string,\n): Singleton<T> {\n const name = typeof ctorOrName === \"string\" ? ctorOrName : ctorOrName.name;\n const key = Symbol.for(PREFIX + name);\n return {\n get(fallback?: T): T | undefined {\n return (_g[key] as T | undefined) ?? fallback;\n },\n set(value: T) {\n _g[key] = value;\n },\n clear() {\n delete _g[key];\n },\n getOrInit(factory: () => T, guard?: (value: object) => boolean): T {\n const existing = _g[key];\n if (existing != null && typeof existing === \"object\") {\n if (!guard || guard(existing)) {\n return existing as T;\n }\n }\n const instance = factory();\n _g[key] = instance;\n return instance;\n },\n };\n}\n",
|
|
33
|
-
"import { catchError } from \"./catch-error\";\nimport type { OutputSink, SinkCapabilities } from \"./output-sink\";\nimport { singleton } from \"./singleton\";\n\n/**\n * Minimal interface matching the subset of AsyncLocalStorage we use.\n * Allows a no-op fallback in browsers where node:async_hooks is absent.\n */\ninterface OutputStorage<T> {\n getStore(): T | undefined;\n run<R>(store: T, fn: () => R): R;\n}\n\nfunction createStorage(): OutputStorage<OutputSink> {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const [error, mod] = catchError(() => require(\"node:async_hooks\"));\n if (error || typeof mod?.AsyncLocalStorage !== \"function\") {\n // Browser or environment without async_hooks — no-op stub.\n return {\n getStore: () => undefined,\n run: <R>(_store: OutputSink, fn: () => R): R => fn(),\n } satisfies OutputStorage<OutputSink>;\n }\n return new mod.AsyncLocalStorage();\n}\n\nconst storageSingleton = singleton<OutputStorage<OutputSink>>(\"OutputStorage\");\n\nconst sinkSlot = singleton<OutputSink | undefined>(\"OutputSink\");\n\nconst outputStorage: OutputStorage<OutputSink> = storageSingleton.getOrInit(\n createStorage,\n (v) => \"getStore\" in v,\n);\n\n/**\n * Last-resort fallback when no sink is configured.\n * Writes to console.* to preserve current behavior during migration.\n */\nconst CONSOLE_FALLBACK: OutputSink = {\n writeOut: (str: string) => process.stdout.write(str),\n writeErr: (str: string) => process.stderr.write(str),\n writeLog: (str: string) => process.stdout.write(str),\n capabilities: {\n isInteractive: false,\n canReadInput: false,\n supportsColor: false,\n outputWidth: 80,\n },\n};\n\n/**\n * Run a function with a specific OutputSink bound to the current async context.\n * All code executed within `fn` (including async continuations) will see this sink\n * via `getOutputSink()`.\n *\n * This is concurrency-safe: multiple simultaneous `runWithSink` scopes\n * (e.g. concurrent MCP tool calls) each see their own sink.\n */\nexport function runWithSink<T>(sink: OutputSink, fn: () => T): T {\n return outputStorage.run(sink, fn);\n}\n\n/**\n * Get the OutputSink for the current execution context.\n *\n * Resolution order:\n * 1. AsyncLocalStorage context (set by runWithSink)\n * 2. Global fallback sink (set at process startup)\n * 3. CONSOLE_FALLBACK (writes to process.stdout/stderr — last resort)\n */\nexport function getOutputSink(): OutputSink {\n return outputStorage.getStore() ?? sinkSlot.get() ?? CONSOLE_FALLBACK;\n}\n\n/**\n * Set the process-wide default sink. Called once at CLI startup.\n * This is NOT per-request — it is the global fallback when no\n * AsyncLocalStorage context is active.\n *\n * Stored on globalThis so all bundled copies of @uipath/common share it.\n */\nexport function setGlobalSink(sink: OutputSink): void {\n sinkSlot.set(sink);\n}\n\nexport type { OutputSink, SinkCapabilities };\n",
|
|
34
|
-
"/**\n * Declarative shell-completion API.\n *\n * Tools attach a `CompletionSpec` to a Commander Option or Argument. The spec\n * describes a real user-facing CLI command whose JSON output supplies the\n * candidate list at TAB time. The `uip completion <shell>` generator inlines\n * this information into the emitted completion script, so TAB completion\n * invokes the same commands a user would run directly — no hidden dispatch,\n * no separate process-init path.\n *\n * Cross-bundle detail: each tool bundles its own copy of commander, so\n * `instanceof Option` checks fail across bundles. Specs are stored on the\n * target via a `Symbol.for()` key, which is shared process-wide.\n *\n * Example:\n * withCompleter(option, {\n * command: [\"uip\", \"solution\", \"packages\", \"list\", \"--output\", \"json\", \"--take\", \"200\"],\n * valueSelector: \"[.Data[].name] | unique | .[]\",\n * });\n */\n\nconst COMPLETER_SYMBOL = Symbol.for(\"@uipath/common/completer\");\n\nexport interface CompletionSpec {\n /**\n * Argv of the public CLI command to invoke at TAB time. Tokens wrapped in\n * `{name}` are substituted with the value of the option `--name` that the\n * user has already typed (camelCase keys, matching Commander's attribute\n * names).\n */\n command: string[];\n /**\n * `jq` filter applied to the command's stdout. Each non-empty line of the\n * filtered output becomes a candidate value. `{name}` placeholders are\n * substituted with `$name` (a jq variable) and bound at TAB time via\n * `--arg name \"$_req_name\"`, so user-supplied values cannot escape the\n * jq string context. `requiresOptions` must list each placeholder name.\n * Missing `jq` or a non-zero exit silently yields no candidates (falls\n * through to shell defaults).\n */\n valueSelector: string;\n /**\n * Option names (camelCase) that must be set on the current command before\n * this completer is invoked. If any required option is absent, no TAB is\n * performed — avoids useless network calls when context is incomplete.\n */\n requiresOptions?: string[];\n}\n\n/** Attach a completion spec to a Commander Option or Argument. */\nexport function withCompleter<T extends object>(\n target: T,\n spec: CompletionSpec,\n): T {\n (target as Record<symbol, unknown>)[COMPLETER_SYMBOL] = spec;\n return target;\n}\n\nexport function getCompleter(\n target: object | null | undefined,\n): CompletionSpec | undefined {\n if (!target) return undefined;\n const raw = (target as Record<symbol, unknown>)[COMPLETER_SYMBOL];\n if (\n raw &&\n typeof raw === \"object\" &&\n \"command\" in raw &&\n \"valueSelector\" in raw\n ) {\n return raw as CompletionSpec;\n }\n return undefined;\n}\n",
|
|
35
|
-
"// src/utils/index.ts\nvar isObject = (obj) => {\n return obj !== null && Object.prototype.toString.call(obj) === \"[object Object]\";\n};\nvar strictDeepEqual = (first, second) => {\n if (first === second) {\n return true;\n }\n if (typeof first !== typeof second) {\n return false;\n }\n if (Array.isArray(first) && Array.isArray(second)) {\n if (first.length !== second.length) {\n return false;\n }\n for (let i = 0; i < first.length; i += 1) {\n if (!strictDeepEqual(first[i], second[i])) {\n return false;\n }\n }\n return true;\n }\n if (isObject(first) && isObject(second)) {\n const firstEntries = Object.entries(first);\n const secondKeys = new Set(Object.keys(second));\n if (firstEntries.length !== secondKeys.size) {\n return false;\n }\n for (const [key, value] of firstEntries) {\n if (!strictDeepEqual(value, second[key])) {\n return false;\n }\n secondKeys.delete(key);\n }\n return secondKeys.size === 0;\n }\n return false;\n};\nvar isFalse = (obj) => {\n if (obj === null || obj === void 0 || obj === false) {\n return true;\n }\n if (typeof obj === \"string\") {\n return obj === \"\";\n }\n if (typeof obj === \"object\") {\n if (Array.isArray(obj)) {\n return obj.length === 0;\n }\n if (obj === null) {\n return true;\n }\n return Object.keys(obj).length === 0;\n }\n return false;\n};\nvar isAlpha = (ch) => {\n return ch >= \"a\" && ch <= \"z\" || ch >= \"A\" && ch <= \"Z\" || ch === \"_\";\n};\nvar isNum = (ch) => {\n return ch >= \"0\" && ch <= \"9\" || ch === \"-\";\n};\nvar isAlphaNum = (ch) => {\n return ch >= \"a\" && ch <= \"z\" || ch >= \"A\" && ch <= \"Z\" || ch >= \"0\" && ch <= \"9\" || ch === \"_\";\n};\nvar ensureInteger = (value) => {\n if (!(typeof value === \"number\") || Math.floor(value) !== value) {\n throw new Error(\"invalid-value: expecting an integer.\");\n }\n return value;\n};\nvar ensurePositiveInteger = (value) => {\n if (!(typeof value === \"number\") || value < 0 || Math.floor(value) !== value) {\n throw new Error(\"invalid-value: expecting a non-negative integer.\");\n }\n return value;\n};\nvar ensureNumbers = (...operands) => {\n for (let i = 0; i < operands.length; i++) {\n if (operands[i] === null || operands[i] === void 0) {\n throw new Error(\"not-a-number: undefined\");\n }\n if (typeof operands[i] !== \"number\") {\n throw new Error(\"not-a-number\");\n }\n }\n};\nvar notZero = (n) => {\n n = +n;\n if (!n) {\n throw new Error(\"not-a-number: divide by zero\");\n }\n return n;\n};\nvar add = (left, right) => {\n ensureNumbers(left, right);\n const result = left + right;\n return result;\n};\nvar sub = (left, right) => {\n ensureNumbers(left, right);\n const result = left - right;\n return result;\n};\nvar mul = (left, right) => {\n ensureNumbers(left, right);\n const result = left * right;\n return result;\n};\nvar divide = (left, right) => {\n ensureNumbers(left, right);\n const result = left / notZero(right);\n return result;\n};\nvar div = (left, right) => {\n ensureNumbers(left, right);\n const result = Math.floor(left / notZero(right));\n return result;\n};\nvar mod = (left, right) => {\n ensureNumbers(left, right);\n const result = left % right;\n return result;\n};\n\n// src/utils/strings.ts\nvar findFirst = (subject, sub2, start, end) => {\n if (!subject || !sub2) {\n return null;\n }\n start = Math.max(ensureInteger(start = start || 0), 0);\n end = Math.min(ensureInteger(end = end || subject.length), subject.length);\n const offset = subject.slice(start, end).indexOf(sub2);\n return offset === -1 ? null : offset + start;\n};\nvar findLast = (subject, sub2, start, end) => {\n if (!subject || !sub2) {\n return null;\n }\n start = Math.max(ensureInteger(start = start || 0), 0);\n end = Math.min(ensureInteger(end = end || subject.length), subject.length);\n const offset = subject.slice(start, end).lastIndexOf(sub2);\n const result = offset === -1 ? null : offset + start;\n return result;\n};\nvar lower = (subject) => subject.toLowerCase();\nvar ensurePadFuncParams = (name, width, padding) => {\n padding = padding || \" \";\n if (padding.length > 1) {\n throw new Error(`invalid value, ${name} expects its 'pad' parameter to be a valid string with a single codepoint`);\n }\n ensurePositiveInteger(width);\n return padding;\n};\nvar padLeft = (subject, width, padding) => {\n padding = ensurePadFuncParams(\"pad_left\", width, padding);\n return subject && subject.padStart(width, padding) || \"\";\n};\nvar padRight = (subject, width, padding) => {\n padding = ensurePadFuncParams(\"pad_right\", width, padding);\n return subject && subject.padEnd(width, padding) || \"\";\n};\nvar replace = (subject, string, by, count) => {\n if (count === 0) {\n return subject;\n }\n if (!count) {\n return subject.split(string).join(by);\n }\n ensurePositiveInteger(count);\n [...Array(count).keys()].map(() => subject = subject.replace(string, by));\n return subject;\n};\nvar split = (subject, search2, count) => {\n if (subject.length == 0 && search2.length === 0) {\n return [];\n }\n if (count === null || count === void 0) {\n return subject.split(search2);\n }\n ensurePositiveInteger(count);\n if (count === 0) {\n return [subject];\n }\n const split2 = subject.split(search2);\n return [...split2.slice(0, count), split2.slice(count).join(search2)];\n};\nvar trim = (subject, chars) => {\n return trimLeft(trimRight(subject, chars), chars);\n};\nvar trimLeft = (subject, chars) => {\n return trimImpl(subject, (list) => new RegExp(`^[${list}]*(.*?)`), chars);\n};\nvar trimRight = (subject, chars) => {\n return trimImpl(subject, (list) => new RegExp(`(.*?)[${list}]*$`), chars);\n};\nvar trimImpl = (subject, regExper, chars) => {\n const pattern = chars ? chars.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\") : \"\\\\s\\x85\";\n return subject.replace(regExper(pattern), \"$1\");\n};\nvar upper = (subject) => subject.toUpperCase();\n\n// src/Lexer.ts\nvar basicTokens = {\n \"(\": \"Lparen\" /* TOK_LPAREN */,\n \")\": \"Rparen\" /* TOK_RPAREN */,\n \"*\": \"Star\" /* TOK_STAR */,\n \",\": \"Comma\" /* TOK_COMMA */,\n \".\": \"Dot\" /* TOK_DOT */,\n \":\": \"Colon\" /* TOK_COLON */,\n \"@\": \"Current\" /* TOK_CURRENT */,\n \"]\": \"Rbracket\" /* TOK_RBRACKET */,\n \"{\": \"Lbrace\" /* TOK_LBRACE */,\n \"}\": \"Rbrace\" /* TOK_RBRACE */,\n \"+\": \"Plus\" /* TOK_PLUS */,\n \"%\": \"Modulo\" /* TOK_MODULO */,\n \"?\": \"Question\" /* TOK_QUESTION */,\n \"\\u2212\": \"Minus\" /* TOK_MINUS */,\n \"\\xD7\": \"Multiply\" /* TOK_MULTIPLY */,\n \"\\xF7\": \"Divide\" /* TOK_DIVIDE */\n};\nvar operatorStartToken = {\n \"!\": true,\n \"<\": true,\n \"=\": true,\n \">\": true,\n \"&\": true,\n \"|\": true,\n \"/\": true\n};\nvar skipChars = {\n \"\t\": true,\n \"\\n\": true,\n \"\\r\": true,\n \" \": true\n};\nvar StreamLexer = class {\n _current = 0;\n _enable_legacy_literals = false;\n tokenize(stream, options) {\n const tokens = [];\n this._current = 0;\n this._enable_legacy_literals = options?.enable_legacy_literals || false;\n let start;\n let identifier;\n let token;\n while (this._current < stream.length) {\n if (isAlpha(stream[this._current])) {\n start = this._current;\n identifier = this.consumeUnquotedIdentifier(stream);\n tokens.push({\n start,\n type: \"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */,\n value: identifier\n });\n } else if (basicTokens[stream[this._current]] !== void 0) {\n tokens.push({\n start: this._current,\n type: basicTokens[stream[this._current]],\n value: stream[this._current]\n });\n this._current += 1;\n } else if (stream[this._current] === \"$\") {\n start = this._current;\n if (this._current + 1 < stream.length && isAlpha(stream[this._current + 1])) {\n this._current += 1;\n identifier = this.consumeUnquotedIdentifier(stream);\n tokens.push({\n start,\n type: \"Variable\" /* TOK_VARIABLE */,\n value: identifier\n });\n } else {\n tokens.push({\n start,\n type: \"Root\" /* TOK_ROOT */,\n value: stream[this._current]\n });\n this._current += 1;\n }\n } else if (stream[this._current] === \"-\") {\n if (this._current + 1 < stream.length && isNum(stream[this._current + 1])) {\n const token2 = this.consumeNumber(stream);\n token2 && tokens.push(token2);\n } else {\n const token2 = {\n start: this._current,\n type: \"Minus\" /* TOK_MINUS */,\n value: \"-\"\n };\n tokens.push(token2);\n this._current += 1;\n }\n } else if (isNum(stream[this._current])) {\n token = this.consumeNumber(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"[\") {\n token = this.consumeLBracket(stream);\n tokens.push(token);\n } else if (stream[this._current] === '\"') {\n start = this._current;\n identifier = this.consumeQuotedIdentifier(stream);\n tokens.push({\n start,\n type: \"QuotedIdentifier\" /* TOK_QUOTEDIDENTIFIER */,\n value: identifier\n });\n } else if (stream[this._current] === `'`) {\n start = this._current;\n identifier = this.consumeRawStringLiteral(stream);\n tokens.push({\n start,\n type: \"Literal\" /* TOK_LITERAL */,\n value: identifier\n });\n } else if (stream[this._current] === \"`\") {\n start = this._current;\n const literal = this.consumeLiteral(stream);\n tokens.push({\n start,\n type: \"Literal\" /* TOK_LITERAL */,\n value: literal\n });\n } else if (operatorStartToken[stream[this._current]] !== void 0) {\n token = this.consumeOperator(stream);\n token && tokens.push(token);\n } else if (skipChars[stream[this._current]] !== void 0) {\n this._current += 1;\n } else {\n const error = new Error(`Syntax error: unknown character: ${stream[this._current]}`);\n error.name = \"LexerError\";\n throw error;\n }\n }\n return tokens;\n }\n consumeUnquotedIdentifier(stream) {\n const start = this._current;\n this._current += 1;\n while (this._current < stream.length && isAlphaNum(stream[this._current])) {\n this._current += 1;\n }\n return stream.slice(start, this._current);\n }\n consumeQuotedIdentifier(stream) {\n const start = this._current;\n this._current += 1;\n const maxLength = stream.length;\n while (stream[this._current] !== '\"' && this._current < maxLength) {\n let current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" || stream[current + 1] === '\"')) {\n current += 2;\n } else {\n current += 1;\n }\n this._current = current;\n }\n this._current += 1;\n const [value, ok] = this.parseJSON(stream.slice(start, this._current));\n if (!ok) {\n const error = new Error(`syntax: unexpected end of JSON input`);\n error.name = \"LexerError\";\n throw error;\n }\n return value;\n }\n consumeRawStringLiteral(stream) {\n const start = this._current;\n this._current += 1;\n const maxLength = stream.length;\n while (stream[this._current] !== `'` && this._current < maxLength) {\n let current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" || stream[current + 1] === `'`)) {\n current += 2;\n } else {\n current += 1;\n }\n this._current = current;\n }\n this._current += 1;\n const literal = stream.slice(start + 1, this._current - 1);\n return replace(replace(literal, `\\\\\\\\`, `\\\\`), `\\\\'`, `'`);\n }\n consumeNumber(stream) {\n const start = this._current;\n this._current += 1;\n const maxLength = stream.length;\n while (isNum(stream[this._current]) && this._current < maxLength) {\n this._current += 1;\n }\n const value = parseInt(stream.slice(start, this._current), 10);\n return { start, value, type: \"Number\" /* TOK_NUMBER */ };\n }\n consumeLBracket(stream) {\n const start = this._current;\n this._current += 1;\n if (stream[this._current] === \"?\") {\n this._current += 1;\n return { start, type: \"Filter\" /* TOK_FILTER */, value: \"[?\" };\n }\n if (stream[this._current] === \"]\") {\n this._current += 1;\n return { start, type: \"Flatten\" /* TOK_FLATTEN */, value: \"[]\" };\n }\n return { start, type: \"Lbracket\" /* TOK_LBRACKET */, value: \"[\" };\n }\n consumeOrElse(stream, peek, token, orElse) {\n const start = this._current;\n this._current += 1;\n if (this._current < stream.length && stream[this._current] === peek) {\n this._current += 1;\n return {\n start,\n type: orElse,\n value: stream.slice(start, this._current)\n };\n }\n return { start, type: token, value: stream[start] };\n }\n consumeOperator(stream) {\n const start = this._current;\n const startingChar = stream[start];\n switch (startingChar) {\n case \"!\":\n return this.consumeOrElse(stream, \"=\", \"Not\" /* TOK_NOT */, \"NE\" /* TOK_NE */);\n case \"<\":\n return this.consumeOrElse(stream, \"=\", \"LT\" /* TOK_LT */, \"LTE\" /* TOK_LTE */);\n case \">\":\n return this.consumeOrElse(stream, \"=\", \"GT\" /* TOK_GT */, \"GTE\" /* TOK_GTE */);\n case \"=\":\n return this.consumeOrElse(stream, \"=\", \"Assign\" /* TOK_ASSIGN */, \"EQ\" /* TOK_EQ */);\n case \"&\":\n return this.consumeOrElse(stream, \"&\", \"Expref\" /* TOK_EXPREF */, \"And\" /* TOK_AND */);\n case \"|\":\n return this.consumeOrElse(stream, \"|\", \"Pipe\" /* TOK_PIPE */, \"Or\" /* TOK_OR */);\n case \"/\":\n return this.consumeOrElse(stream, \"/\", \"Divide\" /* TOK_DIVIDE */, \"Div\" /* TOK_DIV */);\n }\n }\n consumeLiteral(stream) {\n this._current += 1;\n const start = this._current;\n const maxLength = stream.length;\n while (stream[this._current] !== \"`\" && this._current < maxLength) {\n let current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" || stream[current + 1] === \"`\")) {\n current += 2;\n } else {\n current += 1;\n }\n this._current = current;\n }\n let literalString = stream.slice(start, this._current).trimStart();\n literalString = literalString.replace(\"\\\\`\", \"`\");\n let literal = null;\n let ok = false;\n if (this.looksLikeJSON(literalString)) {\n [literal, ok] = this.parseJSON(literalString);\n }\n if (!ok && this._enable_legacy_literals) {\n [literal, ok] = this.parseJSON(`\"${literalString}\"`);\n }\n if (!ok) {\n const error = new Error(\n `Syntax error: unexpected end of JSON input or invalid format for a JSON literal: ${stream[this._current]}`\n );\n error.name = \"LexerError\";\n throw error;\n }\n this._current += 1;\n return literal;\n }\n looksLikeJSON(literalString) {\n const startingChars = '[{\"';\n const jsonLiterals = [\"true\", \"false\", \"null\"];\n const numberLooking = \"-0123456789\";\n if (literalString === \"\") {\n return false;\n }\n if (startingChars.includes(literalString[0])) {\n return true;\n }\n if (jsonLiterals.includes(literalString)) {\n return true;\n }\n if (numberLooking.includes(literalString[0])) {\n const [_, ok] = this.parseJSON(literalString);\n return ok;\n }\n return false;\n }\n parseJSON(text) {\n try {\n const json = JSON.parse(text);\n return [json, true];\n } catch {\n return [null, false];\n }\n }\n};\nvar Lexer = new StreamLexer();\nvar Lexer_default = Lexer;\n\n// src/Parser.ts\nvar bindingPower = {\n [\"EOF\" /* TOK_EOF */]: 0,\n [\"Variable\" /* TOK_VARIABLE */]: 0,\n [\"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */]: 0,\n [\"QuotedIdentifier\" /* TOK_QUOTEDIDENTIFIER */]: 0,\n [\"Rbracket\" /* TOK_RBRACKET */]: 0,\n [\"Rparen\" /* TOK_RPAREN */]: 0,\n [\"Comma\" /* TOK_COMMA */]: 0,\n [\"Rbrace\" /* TOK_RBRACE */]: 0,\n [\"Number\" /* TOK_NUMBER */]: 0,\n [\"Current\" /* TOK_CURRENT */]: 0,\n [\"Expref\" /* TOK_EXPREF */]: 0,\n [\"Root\" /* TOK_ROOT */]: 0,\n [\"Assign\" /* TOK_ASSIGN */]: 1,\n [\"Pipe\" /* TOK_PIPE */]: 1,\n [\"Question\" /* TOK_QUESTION */]: 2,\n [\"Or\" /* TOK_OR */]: 3,\n [\"And\" /* TOK_AND */]: 4,\n [\"EQ\" /* TOK_EQ */]: 5,\n [\"GT\" /* TOK_GT */]: 5,\n [\"LT\" /* TOK_LT */]: 5,\n [\"GTE\" /* TOK_GTE */]: 5,\n [\"LTE\" /* TOK_LTE */]: 5,\n [\"NE\" /* TOK_NE */]: 5,\n [\"Minus\" /* TOK_MINUS */]: 6,\n [\"Plus\" /* TOK_PLUS */]: 6,\n [\"Div\" /* TOK_DIV */]: 7,\n [\"Divide\" /* TOK_DIVIDE */]: 7,\n [\"Modulo\" /* TOK_MODULO */]: 7,\n [\"Multiply\" /* TOK_MULTIPLY */]: 7,\n [\"Flatten\" /* TOK_FLATTEN */]: 9,\n [\"Star\" /* TOK_STAR */]: 20,\n [\"Filter\" /* TOK_FILTER */]: 21,\n [\"Dot\" /* TOK_DOT */]: 40,\n [\"Not\" /* TOK_NOT */]: 45,\n [\"Lbrace\" /* TOK_LBRACE */]: 50,\n [\"Lbracket\" /* TOK_LBRACKET */]: 55,\n [\"Lparen\" /* TOK_LPAREN */]: 60\n};\nvar TokenParser = class _TokenParser {\n index = 0;\n tokens = [];\n parse(expression, options) {\n this.loadTokens(expression, options || { enable_legacy_literals: false });\n this.index = 0;\n const ast = this.expression(0);\n if (this.lookahead(0) !== \"EOF\" /* TOK_EOF */) {\n const token = this.lookaheadToken(0);\n this.errorToken(token, `Syntax error: unexpected token type: ${token.type}, value: ${token.value}`);\n }\n return ast;\n }\n loadTokens(expression, options) {\n this.tokens = Lexer_default.tokenize(expression, options);\n this.tokens.push({ type: \"EOF\" /* TOK_EOF */, value: \"\", start: expression.length });\n }\n expression(rbp) {\n const leftToken = this.lookaheadToken(0);\n this.advance();\n let left = this.nud(leftToken);\n let currentTokenType = this.lookahead(0);\n while (rbp < bindingPower[currentTokenType]) {\n this.advance();\n left = this.led(currentTokenType, left);\n currentTokenType = this.lookahead(0);\n }\n return left;\n }\n lookahead(offset) {\n return this.tokens[this.index + offset].type;\n }\n lookaheadToken(offset) {\n return this.tokens[this.index + offset];\n }\n advance() {\n this.index += 1;\n }\n nud(token) {\n switch (token.type) {\n case \"Variable\" /* TOK_VARIABLE */:\n return { type: \"Variable\", name: token.value };\n case \"Literal\" /* TOK_LITERAL */:\n return { type: \"Literal\", value: token.value };\n case \"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */: {\n if (_TokenParser.isKeyword(token, \"let\") && this.lookahead(0) === \"Variable\" /* TOK_VARIABLE */) {\n return this.parseLetExpression();\n } else {\n return { type: \"Field\", name: token.value };\n }\n }\n case \"QuotedIdentifier\" /* TOK_QUOTEDIDENTIFIER */:\n if (this.lookahead(0) === \"Lparen\" /* TOK_LPAREN */) {\n throw new Error(\"Syntax error: quoted identifier not allowed for function names.\");\n } else {\n return { type: \"Field\", name: token.value };\n }\n case \"Not\" /* TOK_NOT */: {\n const child = this.expression(bindingPower.Not);\n return { type: \"NotExpression\", child };\n }\n case \"Minus\" /* TOK_MINUS */: {\n const child = this.expression(bindingPower.Minus);\n return {\n type: \"Unary\",\n operator: token.type,\n operand: child\n };\n }\n case \"Plus\" /* TOK_PLUS */: {\n const child = this.expression(bindingPower.Plus);\n return {\n type: \"Unary\",\n operator: token.type,\n operand: child\n };\n }\n case \"Star\" /* TOK_STAR */: {\n const left = { type: \"Identity\" };\n return { type: \"ValueProjection\", left, right: this.parseProjectionRHS(bindingPower.Star) };\n }\n case \"Filter\" /* TOK_FILTER */:\n return this.led(token.type, { type: \"Identity\" });\n case \"Lbrace\" /* TOK_LBRACE */:\n return this.parseMultiselectHash();\n case \"Flatten\" /* TOK_FLATTEN */: {\n const left = {\n type: \"Flatten\",\n child: { type: \"Identity\" }\n };\n const right = this.parseProjectionRHS(bindingPower.Flatten);\n return { type: \"Projection\", left, right };\n }\n case \"Lbracket\" /* TOK_LBRACKET */: {\n if (this.lookahead(0) === \"Number\" /* TOK_NUMBER */ || this.lookahead(0) === \"Colon\" /* TOK_COLON */) {\n const right = this.parseIndexExpression();\n return this.projectIfSlice({ type: \"Identity\" }, right);\n }\n if (this.lookahead(0) === \"Star\" /* TOK_STAR */ && this.lookahead(1) === \"Rbracket\" /* TOK_RBRACKET */) {\n this.advance();\n this.advance();\n const right = this.parseProjectionRHS(bindingPower.Star);\n return {\n left: { type: \"Identity\" },\n right,\n type: \"Projection\"\n };\n }\n return this.parseMultiselectList();\n }\n case \"Current\" /* TOK_CURRENT */:\n return { type: \"Current\" /* TOK_CURRENT */ };\n case \"Root\" /* TOK_ROOT */:\n return { type: \"Root\" /* TOK_ROOT */ };\n case \"Expref\" /* TOK_EXPREF */: {\n const child = this.expression(bindingPower.Expref);\n return { type: \"ExpressionReference\", child };\n }\n case \"Lparen\" /* TOK_LPAREN */: {\n const expression = this.expression(0);\n this.match(\"Rparen\" /* TOK_RPAREN */);\n return expression;\n }\n default:\n this.errorToken(token);\n }\n }\n led(tokenName, left) {\n switch (tokenName) {\n case \"Question\" /* TOK_QUESTION */: {\n const trueExpr = this.expression(0);\n this.match(\"Colon\" /* TOK_COLON */);\n const falseExpr = this.expression(0);\n return {\n type: \"Ternary\",\n condition: left,\n trueExpr,\n falseExpr\n };\n }\n case \"Dot\" /* TOK_DOT */: {\n const rbp = bindingPower.Dot;\n if (this.lookahead(0) !== \"Star\" /* TOK_STAR */) {\n const right2 = this.parseDotRHS(rbp);\n return { type: \"Subexpression\", left, right: right2 };\n }\n this.advance();\n const right = this.parseProjectionRHS(rbp);\n return { type: \"ValueProjection\", left, right };\n }\n case \"Pipe\" /* TOK_PIPE */: {\n const right = this.expression(bindingPower.Pipe);\n return { type: \"Pipe\", left, right };\n }\n case \"Or\" /* TOK_OR */: {\n const right = this.expression(bindingPower.Or);\n return { type: \"OrExpression\", left, right };\n }\n case \"And\" /* TOK_AND */: {\n const right = this.expression(bindingPower.And);\n return { type: \"AndExpression\", left, right };\n }\n case \"Lparen\" /* TOK_LPAREN */: {\n if (left.type !== \"Field\") {\n throw new Error(\"Syntax error: expected a Field node\");\n }\n const name = left.name;\n const args = this.parseCommaSeparatedExpressionsUntilToken(\"Rparen\" /* TOK_RPAREN */);\n const node = { name, type: \"Function\", children: args };\n return node;\n }\n case \"Filter\" /* TOK_FILTER */: {\n const condition = this.expression(0);\n this.match(\"Rbracket\" /* TOK_RBRACKET */);\n const right = this.lookahead(0) === \"Flatten\" /* TOK_FLATTEN */ ? { type: \"Identity\" } : this.parseProjectionRHS(bindingPower.Filter);\n return { type: \"FilterProjection\", left, right, condition };\n }\n case \"Flatten\" /* TOK_FLATTEN */: {\n const leftNode = { type: \"Flatten\", child: left };\n const right = this.parseProjectionRHS(bindingPower.Flatten);\n return { type: \"Projection\", left: leftNode, right };\n }\n case \"Assign\" /* TOK_ASSIGN */: {\n const leftNode = left;\n const right = this.expression(0);\n return {\n type: \"Binding\",\n variable: leftNode.name,\n reference: right\n };\n }\n case \"EQ\" /* TOK_EQ */:\n case \"NE\" /* TOK_NE */:\n case \"GT\" /* TOK_GT */:\n case \"GTE\" /* TOK_GTE */:\n case \"LT\" /* TOK_LT */:\n case \"LTE\" /* TOK_LTE */:\n return this.parseComparator(left, tokenName);\n case \"Plus\" /* TOK_PLUS */:\n case \"Minus\" /* TOK_MINUS */:\n case \"Multiply\" /* TOK_MULTIPLY */:\n case \"Star\" /* TOK_STAR */:\n case \"Divide\" /* TOK_DIVIDE */:\n case \"Modulo\" /* TOK_MODULO */:\n case \"Div\" /* TOK_DIV */:\n return this.parseArithmetic(left, tokenName);\n case \"Lbracket\" /* TOK_LBRACKET */: {\n const token = this.lookaheadToken(0);\n if (token.type === \"Number\" /* TOK_NUMBER */ || token.type === \"Colon\" /* TOK_COLON */) {\n const right2 = this.parseIndexExpression();\n return this.projectIfSlice(left, right2);\n }\n this.match(\"Star\" /* TOK_STAR */);\n this.match(\"Rbracket\" /* TOK_RBRACKET */);\n const right = this.parseProjectionRHS(bindingPower.Star);\n return { type: \"Projection\", left, right };\n }\n default:\n return this.errorToken(this.lookaheadToken(0));\n }\n }\n static isKeyword(token, keyword) {\n return token.type === \"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */ && token.value === keyword;\n }\n match(tokenType) {\n if (this.lookahead(0) === tokenType) {\n this.advance();\n return;\n } else {\n const token = this.lookaheadToken(0);\n this.errorToken(token, `Syntax error: expected ${tokenType}, got: ${token.type}`);\n }\n }\n errorToken(token, message = \"\") {\n const error = new Error(message || `Syntax error: invalid token (${token.type}): \"${token.value}\"`);\n error.name = \"ParserError\";\n throw error;\n }\n parseIndexExpression() {\n if (this.lookahead(0) === \"Colon\" /* TOK_COLON */ || this.lookahead(1) === \"Colon\" /* TOK_COLON */) {\n return this.parseSliceExpression();\n }\n const value = Number(this.lookaheadToken(0).value);\n this.advance();\n this.match(\"Rbracket\" /* TOK_RBRACKET */);\n return { type: \"Index\", value };\n }\n projectIfSlice(left, right) {\n const indexExpr = {\n type: \"IndexExpression\",\n left,\n right\n };\n if (right.type === \"Slice\") {\n return {\n left: indexExpr,\n right: this.parseProjectionRHS(bindingPower.Star),\n type: \"Projection\"\n };\n }\n return indexExpr;\n }\n parseSliceExpression() {\n const parts = [null, null, null];\n let index = 0;\n let current = this.lookaheadToken(0);\n while (current.type != \"Rbracket\" /* TOK_RBRACKET */ && index < 3) {\n if (current.type === \"Colon\" /* TOK_COLON */) {\n index++;\n if (index === 3) {\n this.errorToken(this.lookaheadToken(0), \"Syntax error, too many colons in slice expression\");\n }\n this.advance();\n } else if (current.type === \"Number\" /* TOK_NUMBER */) {\n const part = this.lookaheadToken(0).value;\n parts[index] = part;\n this.advance();\n } else {\n const next = this.lookaheadToken(0);\n this.errorToken(next, `Syntax error, unexpected token: ${next.value}(${next.type})`);\n }\n current = this.lookaheadToken(0);\n }\n this.match(\"Rbracket\" /* TOK_RBRACKET */);\n const [start, stop, step] = parts;\n return { type: \"Slice\", start, stop, step };\n }\n parseLetExpression() {\n const separated = this.parseCommaSeparatedExpressionsUntilKeyword(\"in\");\n const expression = this.expression(0);\n const bindings = separated.map((binding) => binding);\n return {\n type: \"LetExpression\",\n bindings,\n expression\n };\n }\n parseCommaSeparatedExpressionsUntilKeyword(keyword) {\n return this.parseCommaSeparatedExpressionsUntil(\n () => {\n return _TokenParser.isKeyword(this.lookaheadToken(0), keyword);\n },\n () => {\n this.advance();\n }\n );\n }\n parseCommaSeparatedExpressionsUntilToken(token) {\n return this.parseCommaSeparatedExpressionsUntil(\n () => {\n return this.lookahead(0) === token;\n },\n () => {\n return this.match(token);\n }\n );\n }\n parseCommaSeparatedExpressionsUntil(isEndToken, matchEndToken) {\n const args = [];\n let expression;\n while (!isEndToken()) {\n expression = this.expression(0);\n if (this.lookahead(0) === \"Comma\" /* TOK_COMMA */) {\n this.match(\"Comma\" /* TOK_COMMA */);\n }\n args.push(expression);\n }\n matchEndToken();\n return args;\n }\n parseComparator(left, comparator) {\n const right = this.expression(bindingPower[comparator]);\n return { type: \"Comparator\", name: comparator, left, right };\n }\n parseArithmetic(left, operator) {\n const right = this.expression(bindingPower[operator]);\n return { type: \"Arithmetic\", operator, left, right };\n }\n parseDotRHS(rbp) {\n const lookahead = this.lookahead(0);\n const exprTokens = [\"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */, \"QuotedIdentifier\" /* TOK_QUOTEDIDENTIFIER */, \"Star\" /* TOK_STAR */];\n if (exprTokens.includes(lookahead)) {\n return this.expression(rbp);\n }\n if (lookahead === \"Lbracket\" /* TOK_LBRACKET */) {\n this.match(\"Lbracket\" /* TOK_LBRACKET */);\n return this.parseMultiselectList();\n }\n if (lookahead === \"Lbrace\" /* TOK_LBRACE */) {\n this.match(\"Lbrace\" /* TOK_LBRACE */);\n return this.parseMultiselectHash();\n }\n const token = this.lookaheadToken(0);\n this.errorToken(token, `Syntax error, unexpected token: ${token.value}(${token.type})`);\n }\n parseProjectionRHS(rbp) {\n if (bindingPower[this.lookahead(0)] < 10) {\n return { type: \"Identity\" };\n }\n if (this.lookahead(0) === \"Lbracket\" /* TOK_LBRACKET */) {\n return this.expression(rbp);\n }\n if (this.lookahead(0) === \"Filter\" /* TOK_FILTER */) {\n return this.expression(rbp);\n }\n if (this.lookahead(0) === \"Dot\" /* TOK_DOT */) {\n this.match(\"Dot\" /* TOK_DOT */);\n return this.parseDotRHS(rbp);\n }\n const token = this.lookaheadToken(0);\n this.errorToken(token, `Syntax error, unexpected token: ${token.value}(${token.type})`);\n }\n parseMultiselectList() {\n const expressions = [];\n while (this.lookahead(0) !== \"Rbracket\" /* TOK_RBRACKET */) {\n const expression = this.expression(0);\n expressions.push(expression);\n if (this.lookahead(0) === \"Comma\" /* TOK_COMMA */) {\n this.match(\"Comma\" /* TOK_COMMA */);\n if (this.lookahead(0) === \"Rbracket\" /* TOK_RBRACKET */) {\n throw new Error(\"Syntax error: unexpected token Rbracket\");\n }\n }\n }\n this.match(\"Rbracket\" /* TOK_RBRACKET */);\n return { type: \"MultiSelectList\", children: expressions };\n }\n parseMultiselectHash() {\n const pairs = [];\n const identifierTypes = [\"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */, \"QuotedIdentifier\" /* TOK_QUOTEDIDENTIFIER */];\n let keyToken;\n let keyName;\n let value;\n for (; ; ) {\n keyToken = this.lookaheadToken(0);\n if (!identifierTypes.includes(keyToken.type)) {\n throw new Error(`Syntax error: expecting an identifier token, got: ${keyToken.type}`);\n }\n keyName = keyToken.value;\n this.advance();\n this.match(\"Colon\" /* TOK_COLON */);\n value = this.expression(0);\n pairs.push({ value, type: \"KeyValuePair\", name: keyName });\n if (this.lookahead(0) === \"Comma\" /* TOK_COMMA */) {\n this.match(\"Comma\" /* TOK_COMMA */);\n } else if (this.lookahead(0) === \"Rbrace\" /* TOK_RBRACE */) {\n this.match(\"Rbrace\" /* TOK_RBRACE */);\n break;\n }\n }\n return { type: \"MultiSelectHash\", children: pairs };\n }\n};\nvar Parser = new TokenParser();\nvar Parser_default = Parser;\n\n// src/utils/text.ts\nvar Text = class _Text {\n _text;\n constructor(text) {\n this._text = text;\n }\n get string() {\n return this._text;\n }\n get length() {\n return this.codePoints.length;\n }\n compareTo(other) {\n return _Text.compare(this, new _Text(other));\n }\n static get comparer() {\n const stringComparer = (left, right) => {\n return new _Text(left).compareTo(right);\n };\n return stringComparer;\n }\n static compare(left, right) {\n const leftCp = left.codePoints;\n const rightCp = right.codePoints;\n for (let index = 0; index < Math.min(leftCp.length, rightCp.length); index++) {\n if (leftCp[index] === rightCp[index]) {\n continue;\n }\n return leftCp[index] - rightCp[index] > 0 ? 1 : -1;\n }\n return leftCp.length - rightCp.length > 0 ? 1 : -1;\n }\n reverse() {\n return String.fromCodePoint(...this.codePoints.reverse());\n }\n get codePoints() {\n const array = [...this._text].map((s) => s.codePointAt(0));\n return array;\n }\n};\n\n// src/Runtime.ts\nvar createMathFunction = (mathFn) => ([value]) => mathFn(value);\nvar createStringFunction = (stringFn) => ([subject]) => stringFn(subject);\nvar createObjectFunction = (objFn) => ([obj]) => objFn(obj);\nvar Runtime = class {\n _interpreter;\n _functionTable;\n _customFunctions = /* @__PURE__ */ new Set();\n TYPE_NAME_TABLE = Object.freeze({\n [0 /* TYPE_NUMBER */]: \"number\",\n [1 /* TYPE_ANY */]: \"any\",\n [2 /* TYPE_STRING */]: \"string\",\n [3 /* TYPE_ARRAY */]: \"array\",\n [4 /* TYPE_OBJECT */]: \"object\",\n [5 /* TYPE_BOOLEAN */]: \"boolean\",\n [6 /* TYPE_EXPREF */]: \"expression\",\n [7 /* TYPE_NULL */]: \"null\",\n [8 /* TYPE_ARRAY_NUMBER */]: \"Array<number>\",\n [10 /* TYPE_ARRAY_OBJECT */]: \"Array<object>\",\n [9 /* TYPE_ARRAY_STRING */]: \"Array<string>\",\n [11 /* TYPE_ARRAY_ARRAY */]: \"Array<Array<any>>\"\n });\n constructor(interpreter) {\n this._interpreter = interpreter;\n this._functionTable = this.buildFunctionTable();\n }\n buildFunctionTable() {\n return {\n // Math functions\n abs: { _func: createMathFunction(Math.abs), _signature: [{ types: [0 /* TYPE_NUMBER */] }] },\n ceil: { _func: createMathFunction(Math.ceil), _signature: [{ types: [0 /* TYPE_NUMBER */] }] },\n floor: { _func: createMathFunction(Math.floor), _signature: [{ types: [0 /* TYPE_NUMBER */] }] },\n // String functions\n lower: { _func: createStringFunction(lower), _signature: [{ types: [2 /* TYPE_STRING */] }] },\n upper: { _func: createStringFunction(upper), _signature: [{ types: [2 /* TYPE_STRING */] }] },\n // Object functions\n keys: { _func: createObjectFunction(Object.keys), _signature: [{ types: [4 /* TYPE_OBJECT */] }] },\n values: { _func: createObjectFunction(Object.values), _signature: [{ types: [4 /* TYPE_OBJECT */] }] },\n // Complex functions that need custom implementations\n avg: { _func: this.functionAvg, _signature: [{ types: [8 /* TYPE_ARRAY_NUMBER */] }] },\n contains: {\n _func: this.functionContains,\n _signature: [\n { types: [2 /* TYPE_STRING */, 3 /* TYPE_ARRAY */] },\n { types: [1 /* TYPE_ANY */] }\n ]\n },\n ends_with: {\n _func: this.functionEndsWith,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [2 /* TYPE_STRING */] }]\n },\n find_first: {\n _func: this.functionFindFirst,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */], optional: true },\n { types: [0 /* TYPE_NUMBER */], optional: true }\n ]\n },\n find_last: {\n _func: this.functionFindLast,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */], optional: true },\n { types: [0 /* TYPE_NUMBER */], optional: true }\n ]\n },\n from_items: { _func: this.functionFromItems, _signature: [{ types: [11 /* TYPE_ARRAY_ARRAY */] }] },\n group_by: {\n _func: this.functionGroupBy,\n _signature: [{ types: [3 /* TYPE_ARRAY */] }, { types: [6 /* TYPE_EXPREF */] }]\n },\n items: { _func: this.functionItems, _signature: [{ types: [4 /* TYPE_OBJECT */] }] },\n join: {\n _func: this.functionJoin,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [9 /* TYPE_ARRAY_STRING */] }]\n },\n length: {\n _func: this.functionLength,\n _signature: [{ types: [2 /* TYPE_STRING */, 3 /* TYPE_ARRAY */, 4 /* TYPE_OBJECT */] }]\n },\n map: {\n _func: this.functionMap,\n _signature: [{ types: [6 /* TYPE_EXPREF */] }, { types: [3 /* TYPE_ARRAY */] }]\n },\n max: {\n _func: this.functionMax,\n _signature: [{ types: [8 /* TYPE_ARRAY_NUMBER */, 9 /* TYPE_ARRAY_STRING */] }]\n },\n max_by: {\n _func: this.functionMaxBy,\n _signature: [{ types: [3 /* TYPE_ARRAY */] }, { types: [6 /* TYPE_EXPREF */] }]\n },\n merge: { _func: this.functionMerge, _signature: [{ types: [4 /* TYPE_OBJECT */], variadic: true }] },\n min: {\n _func: this.functionMin,\n _signature: [{ types: [8 /* TYPE_ARRAY_NUMBER */, 9 /* TYPE_ARRAY_STRING */] }]\n },\n min_by: {\n _func: this.functionMinBy,\n _signature: [{ types: [3 /* TYPE_ARRAY */] }, { types: [6 /* TYPE_EXPREF */] }]\n },\n not_null: { _func: this.functionNotNull, _signature: [{ types: [1 /* TYPE_ANY */], variadic: true }] },\n pad_left: {\n _func: this.functionPadLeft,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */] },\n { types: [2 /* TYPE_STRING */], optional: true }\n ]\n },\n pad_right: {\n _func: this.functionPadRight,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */] },\n { types: [2 /* TYPE_STRING */], optional: true }\n ]\n },\n replace: {\n _func: this.functionReplace,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [2 /* TYPE_STRING */] },\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */], optional: true }\n ]\n },\n reverse: {\n _func: this.functionReverse,\n _signature: [{ types: [2 /* TYPE_STRING */, 3 /* TYPE_ARRAY */] }]\n },\n sort: {\n _func: this.functionSort,\n _signature: [{ types: [9 /* TYPE_ARRAY_STRING */, 8 /* TYPE_ARRAY_NUMBER */] }]\n },\n sort_by: {\n _func: this.functionSortBy,\n _signature: [{ types: [3 /* TYPE_ARRAY */] }, { types: [6 /* TYPE_EXPREF */] }]\n },\n split: {\n _func: this.functionSplit,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */], optional: true }\n ]\n },\n starts_with: {\n _func: this.functionStartsWith,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [2 /* TYPE_STRING */] }]\n },\n sum: { _func: this.functionSum, _signature: [{ types: [8 /* TYPE_ARRAY_NUMBER */] }] },\n to_array: { _func: this.functionToArray, _signature: [{ types: [1 /* TYPE_ANY */] }] },\n to_number: { _func: this.functionToNumber, _signature: [{ types: [1 /* TYPE_ANY */] }] },\n to_string: { _func: this.functionToString, _signature: [{ types: [1 /* TYPE_ANY */] }] },\n trim: {\n _func: this.functionTrim,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [2 /* TYPE_STRING */], optional: true }]\n },\n trim_left: {\n _func: this.functionTrimLeft,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [2 /* TYPE_STRING */], optional: true }]\n },\n trim_right: {\n _func: this.functionTrimRight,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [2 /* TYPE_STRING */], optional: true }]\n },\n type: { _func: this.functionType, _signature: [{ types: [1 /* TYPE_ANY */] }] },\n zip: { _func: this.functionZip, _signature: [{ types: [3 /* TYPE_ARRAY */], variadic: true }] }\n };\n }\n /**\n * Enhanced registerFunction with backward compatibility and new options\n * @deprecated Use register() method for enhanced functionality\n */\n registerFunction(name, customFunction, signature, options) {\n const result = this._registerInternal(name, customFunction, signature, options);\n if (!result.success) {\n throw new Error(result.message);\n }\n }\n /**\n * Internal registration method that bypasses TypeScript type checking\n */\n _registerInternal(name, customFunction, signature, options = {}) {\n if (!name || typeof name !== \"string\" || name.trim() === \"\") {\n return {\n success: false,\n reason: \"invalid-name\",\n message: \"Function name must be a non-empty string\"\n };\n }\n try {\n this.validateInputSignatures(name, signature);\n } catch (error) {\n return {\n success: false,\n reason: \"invalid-signature\",\n message: error instanceof Error ? error.message : \"Invalid function signature\"\n };\n }\n const { override = false, warn = false } = options;\n const exists = name in this._functionTable;\n if (exists && !override) {\n return {\n success: false,\n reason: \"already-exists\",\n message: `Function already defined: ${name}(). Use { override: true } to replace it.`\n };\n }\n if (exists && override && warn) {\n console.warn(`Warning: Overriding existing function: ${name}()`);\n }\n this._functionTable[name] = {\n _func: customFunction.bind(this),\n _signature: signature\n };\n this._customFunctions.add(name);\n const message = exists ? `Function ${name}() overridden successfully` : `Function ${name}() registered successfully`;\n return { success: true, message };\n }\n /**\n * Register a new function with enhanced options and type safety\n */\n register(name, customFunction, signature, options = {}) {\n return this._registerInternal(name, customFunction, signature, options);\n }\n /**\n * Unregister a custom function (built-in functions cannot be unregistered)\n */\n unregister(name) {\n if (!this._customFunctions.has(name)) {\n return false;\n }\n delete this._functionTable[name];\n this._customFunctions.delete(name);\n return true;\n }\n /**\n * Check if a function is registered\n */\n isRegistered(name) {\n return name in this._functionTable;\n }\n /**\n * Get list of all registered function names\n */\n getRegistered() {\n return Object.keys(this._functionTable);\n }\n /**\n * Get list of custom (non-built-in) function names\n */\n getCustomFunctions() {\n return Array.from(this._customFunctions);\n }\n /**\n * Clear all custom functions (built-in functions remain)\n */\n clearCustomFunctions() {\n for (const name of this._customFunctions) {\n delete this._functionTable[name];\n }\n this._customFunctions.clear();\n }\n callFunction(name, resolvedArgs) {\n const functionEntry = this._functionTable[name];\n if (functionEntry === void 0) {\n throw new Error(`Unknown function: ${name}()`);\n }\n this.validateArgs(name, resolvedArgs, functionEntry._signature);\n return functionEntry._func.call(this, resolvedArgs);\n }\n validateInputSignatures(name, signature) {\n for (let i = 0; i < signature.length; i += 1) {\n if (\"variadic\" in signature[i] && i !== signature.length - 1) {\n throw new Error(`Invalid arity: ${name}() 'variadic' argument ${i + 1} must occur last`);\n }\n }\n }\n validateArgs(name, args, signature) {\n this.validateInputSignatures(name, signature);\n this.validateArity(name, args, signature);\n this.validateTypes(name, args, signature);\n }\n validateArity(name, args, signature) {\n const numberOfRequiredArgs = signature.filter((argSignature) => !(argSignature.optional ?? false)).length;\n const lastArgIsVariadic = signature[signature.length - 1]?.variadic ?? false;\n const tooFewArgs = args.length < numberOfRequiredArgs;\n const tooManyArgs = args.length > signature.length;\n if (lastArgIsVariadic && tooFewArgs || !lastArgIsVariadic && (tooFewArgs || tooManyArgs)) {\n const tooFewModifier = tooFewArgs && (!lastArgIsVariadic && numberOfRequiredArgs > 1 || lastArgIsVariadic) ? \"at least \" : \"\";\n const pluralized = signature.length > 1;\n throw new Error(\n `Invalid arity: ${name}() takes ${tooFewModifier}${numberOfRequiredArgs} argument${pluralized && \"s\" || \"\"} but received ${args.length}`\n );\n }\n }\n validateTypes(name, args, signature) {\n for (let i = 0; i < signature.length; i += 1) {\n const currentSpec = signature[i].types;\n const actualType = this.getTypeName(args[i]);\n if (actualType === void 0) {\n continue;\n }\n const typeMatched = currentSpec.some((expectedType) => this.typeMatches(actualType, expectedType, args[i]));\n if (!typeMatched) {\n const expected = currentSpec.map((typeId) => this.TYPE_NAME_TABLE[typeId]).join(\" | \");\n throw new Error(\n `Invalid type: ${name}() expected argument ${i + 1} to be type (${expected}) but received type ${this.TYPE_NAME_TABLE[actualType]} instead.`\n );\n }\n }\n }\n typeMatches(actual, expected, argValue) {\n if (expected === 1 /* TYPE_ANY */) {\n return true;\n }\n if (expected === 9 /* TYPE_ARRAY_STRING */ || expected === 8 /* TYPE_ARRAY_NUMBER */ || expected === 10 /* TYPE_ARRAY_OBJECT */ || expected === 11 /* TYPE_ARRAY_ARRAY */ || expected === 3 /* TYPE_ARRAY */) {\n if (expected === 3 /* TYPE_ARRAY */) {\n return actual === 3 /* TYPE_ARRAY */;\n }\n if (actual === 3 /* TYPE_ARRAY */) {\n let subtype;\n if (expected === 8 /* TYPE_ARRAY_NUMBER */) {\n subtype = 0 /* TYPE_NUMBER */;\n } else if (expected === 10 /* TYPE_ARRAY_OBJECT */) {\n subtype = 4 /* TYPE_OBJECT */;\n } else if (expected === 9 /* TYPE_ARRAY_STRING */) {\n subtype = 2 /* TYPE_STRING */;\n } else if (expected === 11 /* TYPE_ARRAY_ARRAY */) {\n subtype = 3 /* TYPE_ARRAY */;\n }\n const array = argValue;\n for (let i = 0; i < array.length; i += 1) {\n const typeName = this.getTypeName(array[i]);\n if (typeName !== void 0 && subtype !== void 0 && !this.typeMatches(typeName, subtype, array[i])) {\n return false;\n }\n }\n return true;\n }\n } else {\n return actual === expected;\n }\n return false;\n }\n getTypeName(obj) {\n if (obj === null) {\n return 7 /* TYPE_NULL */;\n }\n if (typeof obj === \"string\") {\n return 2 /* TYPE_STRING */;\n }\n if (typeof obj === \"number\") {\n return 0 /* TYPE_NUMBER */;\n }\n if (typeof obj === \"boolean\") {\n return 5 /* TYPE_BOOLEAN */;\n }\n if (Array.isArray(obj)) {\n return 3 /* TYPE_ARRAY */;\n }\n if (typeof obj === \"object\") {\n if (obj.expref) {\n return 6 /* TYPE_EXPREF */;\n }\n return 4 /* TYPE_OBJECT */;\n }\n return;\n }\n createKeyFunction(exprefNode, allowedTypes) {\n const interpreter = this._interpreter;\n const keyFunc = (x) => {\n const current = interpreter.visit(exprefNode, x);\n if (!allowedTypes.includes(this.getTypeName(current))) {\n const msg = `Invalid type: expected one of (${allowedTypes.map((t) => this.TYPE_NAME_TABLE[t]).join(\" | \")}), received ${this.TYPE_NAME_TABLE[this.getTypeName(current)]}`;\n throw new Error(msg);\n }\n return current;\n };\n return keyFunc;\n }\n functionAvg = ([inputArray]) => {\n if (!inputArray || inputArray.length == 0) {\n return null;\n }\n let sum = 0;\n for (let i = 0; i < inputArray.length; i += 1) {\n sum += inputArray[i];\n }\n return sum / inputArray.length;\n };\n functionContains = ([\n searchable,\n searchValue\n ]) => {\n if (Array.isArray(searchable)) {\n const array = searchable;\n return array.includes(searchValue);\n }\n if (typeof searchable === \"string\") {\n const text = searchable;\n if (typeof searchValue === \"string\") {\n return text.includes(searchValue);\n }\n }\n return null;\n };\n functionEndsWith = (resolvedArgs) => {\n const [searchStr, suffix] = resolvedArgs;\n return searchStr.includes(suffix, searchStr.length - suffix.length);\n };\n functionFindFirst = this.createFindFunction(findFirst);\n functionFindLast = this.createFindFunction(findLast);\n createFindFunction(findFn) {\n return (resolvedArgs) => {\n const subject = resolvedArgs[0];\n const search2 = resolvedArgs[1];\n const start = resolvedArgs.length > 2 ? resolvedArgs[2] : void 0;\n const end = resolvedArgs.length > 3 ? resolvedArgs[3] : void 0;\n return findFn(subject, search2, start, end);\n };\n }\n functionFromItems = ([array]) => {\n array.map((pair) => {\n if (pair.length != 2 || typeof pair[0] !== \"string\") {\n throw new Error(\"invalid value, each array must contain two elements, a pair of string and value\");\n }\n });\n return Object.fromEntries(array);\n };\n functionGroupBy = ([array, exprefNode]) => {\n const keyFunction = this.createKeyFunction(exprefNode, [2 /* TYPE_STRING */]);\n return array.reduce((acc, cur) => {\n const k = keyFunction(cur ?? {});\n const target = acc[k] = acc[k] || [];\n target.push(cur);\n return acc;\n }, {});\n };\n functionItems = ([inputValue]) => {\n return Object.entries(inputValue);\n };\n functionJoin = (resolvedArgs) => {\n const [joinChar, listJoin] = resolvedArgs;\n return listJoin.join(joinChar);\n };\n functionLength = ([inputValue]) => {\n if (typeof inputValue === \"string\") {\n return new Text(inputValue).length;\n }\n if (Array.isArray(inputValue)) {\n return inputValue.length;\n }\n return Object.keys(inputValue).length;\n };\n functionMap = ([exprefNode, elements]) => {\n if (!this._interpreter) {\n return [];\n }\n const mapped = [];\n const interpreter = this._interpreter;\n for (let i = 0; i < elements.length; i += 1) {\n mapped.push(interpreter.visit(exprefNode, elements[i]));\n }\n return mapped;\n };\n functionMax = ([inputValue]) => {\n if (!inputValue.length) {\n return null;\n }\n const typeName = this.getTypeName(inputValue[0]);\n if (typeName === 0 /* TYPE_NUMBER */) {\n return Math.max(...inputValue);\n }\n const elements = inputValue;\n let maxElement = elements[0];\n for (let i = 1; i < elements.length; i += 1) {\n if (maxElement.localeCompare(elements[i]) < 0) {\n maxElement = elements[i];\n }\n }\n return maxElement;\n };\n functionMaxBy = (resolvedArgs) => {\n const exprefNode = resolvedArgs[1];\n const resolvedArray = resolvedArgs[0];\n const keyFunction = this.createKeyFunction(exprefNode, [0 /* TYPE_NUMBER */, 2 /* TYPE_STRING */]);\n let maxNumber = -Infinity;\n let maxRecord;\n let current;\n for (let i = 0; i < resolvedArray.length; i += 1) {\n current = keyFunction && keyFunction(resolvedArray[i]);\n if (current !== void 0 && current > maxNumber) {\n maxNumber = current;\n maxRecord = resolvedArray[i];\n }\n }\n return maxRecord || null;\n };\n functionMerge = (resolvedArgs) => {\n let merged = {};\n for (let i = 0; i < resolvedArgs.length; i += 1) {\n const current = resolvedArgs[i];\n merged = Object.assign(merged, current);\n }\n return merged;\n };\n functionMin = ([inputValue]) => {\n if (!inputValue.length) {\n return null;\n }\n const typeName = this.getTypeName(inputValue[0]);\n if (typeName === 0 /* TYPE_NUMBER */) {\n return Math.min(...inputValue);\n }\n const elements = inputValue;\n let minElement = elements[0];\n for (let i = 1; i < elements.length; i += 1) {\n if (elements[i].localeCompare(minElement) < 0) {\n minElement = elements[i];\n }\n }\n return minElement;\n };\n functionMinBy = (resolvedArgs) => {\n const exprefNode = resolvedArgs[1];\n const resolvedArray = resolvedArgs[0];\n const keyFunction = this.createKeyFunction(exprefNode, [0 /* TYPE_NUMBER */, 2 /* TYPE_STRING */]);\n let minNumber = Infinity;\n let minRecord;\n let current;\n for (let i = 0; i < resolvedArray.length; i += 1) {\n current = keyFunction && keyFunction(resolvedArray[i]);\n if (current !== void 0 && current < minNumber) {\n minNumber = current;\n minRecord = resolvedArray[i];\n }\n }\n return minRecord || null;\n };\n functionNotNull = (resolvedArgs) => {\n for (let i = 0; i < resolvedArgs.length; i += 1) {\n if (this.getTypeName(resolvedArgs[i]) !== 7 /* TYPE_NULL */) {\n return resolvedArgs[i];\n }\n }\n return null;\n };\n functionPadLeft = this.createPadFunction(padLeft);\n functionPadRight = this.createPadFunction(padRight);\n createPadFunction(padFn) {\n return (resolvedArgs) => {\n const subject = resolvedArgs[0];\n const width = resolvedArgs[1];\n const padding = resolvedArgs.length > 2 ? resolvedArgs[2] : void 0;\n return padFn(subject, width, padding);\n };\n }\n functionReplace = (resolvedArgs) => {\n const subject = resolvedArgs[0];\n const string = resolvedArgs[1];\n const by = resolvedArgs[2];\n return replace(subject, string, by, resolvedArgs.length > 3 ? resolvedArgs[3] : void 0);\n };\n functionSplit = (resolvedArgs) => {\n const subject = resolvedArgs[0];\n const search2 = resolvedArgs[1];\n return split(subject, search2, resolvedArgs.length > 2 ? resolvedArgs[2] : void 0);\n };\n functionReverse = ([inputValue]) => {\n const typeName = this.getTypeName(inputValue);\n if (typeName === 2 /* TYPE_STRING */) {\n return new Text(inputValue).reverse();\n }\n const reversedArray = inputValue.slice(0);\n reversedArray.reverse();\n return reversedArray;\n };\n functionSort = ([inputValue]) => {\n if (inputValue.length == 0) {\n return inputValue;\n }\n if (typeof inputValue[0] === \"string\") {\n return [...inputValue].sort(Text.comparer);\n }\n return [...inputValue].sort();\n };\n functionSortBy = (resolvedArgs) => {\n const sortedArray = resolvedArgs[0].slice(0);\n if (sortedArray.length === 0) {\n return sortedArray;\n }\n const interpreter = this._interpreter;\n const exprefNode = resolvedArgs[1];\n const requiredType = this.getTypeName(interpreter.visit(exprefNode, sortedArray[0]));\n if (requiredType !== void 0 && ![0 /* TYPE_NUMBER */, 2 /* TYPE_STRING */].includes(requiredType)) {\n throw new Error(`Invalid type: unexpected type (${this.TYPE_NAME_TABLE[requiredType]})`);\n }\n function throwInvalidTypeError(rt, item) {\n throw new Error(\n `Invalid type: expected (${rt.TYPE_NAME_TABLE[requiredType]}), received ${rt.TYPE_NAME_TABLE[rt.getTypeName(item)]}`\n );\n }\n return sortedArray.sort((a, b) => {\n const exprA = interpreter.visit(exprefNode, a);\n const exprB = interpreter.visit(exprefNode, b);\n if (this.getTypeName(exprA) !== requiredType) {\n throwInvalidTypeError(this, exprA);\n } else if (this.getTypeName(exprB) !== requiredType) {\n throwInvalidTypeError(this, exprB);\n }\n if (requiredType === 2 /* TYPE_STRING */) {\n return Text.comparer(exprA, exprB);\n }\n return exprA - exprB;\n });\n };\n functionStartsWith = ([searchable, searchStr]) => {\n return searchable.startsWith(searchStr);\n };\n functionSum = ([inputValue]) => {\n return inputValue.reduce((x, y) => x + y, 0);\n };\n functionToArray = ([inputValue]) => {\n if (this.getTypeName(inputValue) === 3 /* TYPE_ARRAY */) {\n return inputValue;\n }\n return [inputValue];\n };\n functionToNumber = ([inputValue]) => {\n const typeName = this.getTypeName(inputValue);\n let convertedValue;\n if (typeName === 0 /* TYPE_NUMBER */) {\n return inputValue;\n }\n if (typeName === 2 /* TYPE_STRING */) {\n convertedValue = +inputValue;\n if (!isNaN(convertedValue)) {\n return convertedValue;\n }\n }\n return null;\n };\n functionToString = ([inputValue]) => {\n if (this.getTypeName(inputValue) === 2 /* TYPE_STRING */) {\n return inputValue;\n }\n return JSON.stringify(inputValue);\n };\n functionTrim = this.createTrimFunction(trim);\n functionTrimLeft = this.createTrimFunction(trimLeft);\n functionTrimRight = this.createTrimFunction(trimRight);\n createTrimFunction(trimFn) {\n return (resolvedArgs) => {\n const subject = resolvedArgs[0];\n const chars = resolvedArgs.length > 1 ? resolvedArgs[1] : void 0;\n return trimFn(subject, chars);\n };\n }\n functionType = ([inputValue]) => {\n switch (this.getTypeName(inputValue)) {\n case 0 /* TYPE_NUMBER */:\n return \"number\";\n case 2 /* TYPE_STRING */:\n return \"string\";\n case 3 /* TYPE_ARRAY */:\n return \"array\";\n case 4 /* TYPE_OBJECT */:\n return \"object\";\n case 5 /* TYPE_BOOLEAN */:\n return \"boolean\";\n case 7 /* TYPE_NULL */:\n return \"null\";\n default:\n throw new Error(\"invalid-type\");\n }\n };\n functionZip = (array) => {\n const length = Math.min(...array.map((arr) => arr.length));\n const result = Array(length).fill(null).map((_, index) => array.map((arr) => arr[index]));\n return result;\n };\n};\n\n// src/Scope.ts\nvar ScopeChain = class _ScopeChain {\n inner = void 0;\n data = {};\n get currentScopeData() {\n return this.data;\n }\n withScope(data) {\n const outer = new _ScopeChain();\n outer.inner = this;\n outer.data = data;\n return outer;\n }\n getValue(identifier) {\n if (Object.prototype.hasOwnProperty.call(this.data, identifier)) {\n return this.data[identifier];\n }\n if (this.inner) {\n return this.inner.getValue(identifier);\n }\n return null;\n }\n};\n\n// src/TreeInterpreter.ts\nvar emptyScopeChain = new ScopeChain();\nvar TreeInterpreter = class _TreeInterpreter {\n runtime;\n _rootValue = null;\n _scope;\n constructor() {\n this.runtime = new Runtime(this);\n this._scope = new ScopeChain();\n }\n withScope(scope) {\n const interpreter = new _TreeInterpreter();\n interpreter.runtime._functionTable = this.runtime._functionTable;\n interpreter._rootValue = this._rootValue;\n interpreter._scope = this._scope.withScope(scope);\n return interpreter;\n }\n search(node, value) {\n this._rootValue = value;\n this._scope = emptyScopeChain;\n return this.visit(node, value);\n }\n visit(node, value) {\n switch (node.type) {\n case \"Ternary\": {\n const condition = this.visit(node.condition, value);\n if (!isFalse(condition)) {\n return this.visit(node.trueExpr, value);\n }\n return this.visit(node.falseExpr, value);\n }\n case \"Field\":\n const identifier = node.name;\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n return null;\n }\n return value[identifier] ?? null;\n case \"LetExpression\": {\n const { bindings, expression } = node;\n let scope = {};\n bindings.forEach((binding) => {\n const reference = this.visit(binding, value);\n scope = {\n ...scope,\n ...reference\n };\n });\n return this.withScope(scope).visit(expression, value);\n }\n case \"Binding\": {\n const { variable, reference } = node;\n const result = this.visit(reference, value);\n return { [variable]: result };\n }\n case \"Variable\": {\n const variable = node.name;\n if (!this._scope.getValue(variable) && !Object.prototype.hasOwnProperty.call(this._scope.currentScopeData, variable)) {\n throw new Error(`Error referencing undefined variable ${variable}`);\n }\n return this._scope.getValue(variable);\n }\n case \"IndexExpression\":\n return this.visit(node.right, this.visit(node.left, value));\n case \"Subexpression\": {\n const result = this.visit(node.left, value);\n return result != null ? this.visit(node.right, result) ?? null : null;\n }\n case \"Index\": {\n if (!Array.isArray(value)) {\n return null;\n }\n const index = node.value < 0 ? value.length + node.value : node.value;\n return value[index] ?? null;\n }\n case \"Slice\": {\n if (!Array.isArray(value) && typeof value !== \"string\") {\n return null;\n }\n const { start, stop, step } = this.computeSliceParams(value.length, node);\n if (typeof value === \"string\") {\n const chars = [...value];\n const sliced = this.slice(chars, start, stop, step);\n return sliced.join(\"\");\n } else {\n return this.slice(value, start, stop, step);\n }\n }\n case \"Projection\": {\n const { left, right } = node;\n let allowString = false;\n if (left.type === \"IndexExpression\" && left.right.type === \"Slice\") {\n allowString = true;\n }\n const base = this.visit(left, value);\n if (allowString && typeof base === \"string\") {\n return this.visit(right, base);\n }\n if (!Array.isArray(base)) {\n return null;\n }\n const collected = [];\n for (const elem of base) {\n const current = this.visit(right, elem);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n }\n case \"ValueProjection\": {\n const { left, right } = node;\n const base = this.visit(left, value);\n if (base === null || typeof base !== \"object\" || Array.isArray(base)) {\n return null;\n }\n const collected = [];\n const values = Object.values(base);\n for (const elem of values) {\n const current = this.visit(right, elem);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n }\n case \"FilterProjection\": {\n const { left, right, condition } = node;\n const base = this.visit(left, value);\n if (!Array.isArray(base)) {\n return null;\n }\n const results = [];\n for (const elem of base) {\n const matched = this.visit(condition, elem);\n if (isFalse(matched)) {\n continue;\n }\n const result = this.visit(right, elem);\n if (result !== null) {\n results.push(result);\n }\n }\n return results;\n }\n case \"Arithmetic\": {\n const first = this.visit(node.left, value);\n const second = this.visit(node.right, value);\n switch (node.operator) {\n case \"Plus\" /* TOK_PLUS */:\n return add(first, second);\n case \"Minus\" /* TOK_MINUS */:\n return sub(first, second);\n case \"Multiply\" /* TOK_MULTIPLY */:\n case \"Star\" /* TOK_STAR */:\n return mul(first, second);\n case \"Divide\" /* TOK_DIVIDE */:\n return divide(first, second);\n case \"Modulo\" /* TOK_MODULO */:\n return mod(first, second);\n case \"Div\" /* TOK_DIV */:\n return div(first, second);\n default:\n throw new Error(`Syntax error: unknown arithmetic operator: ${node.operator}`);\n }\n }\n case \"Unary\": {\n const operand = this.visit(node.operand, value);\n switch (node.operator) {\n case \"Plus\" /* TOK_PLUS */:\n ensureNumbers(operand);\n return operand;\n case \"Minus\" /* TOK_MINUS */:\n ensureNumbers(operand);\n return -operand;\n default:\n throw new Error(`Syntax error: unknown arithmetic operator: ${node.operator}`);\n }\n }\n case \"Comparator\": {\n const first = this.visit(node.left, value);\n const second = this.visit(node.right, value);\n switch (node.name) {\n case \"EQ\":\n return strictDeepEqual(first, second);\n case \"NE\":\n return !strictDeepEqual(first, second);\n }\n if (typeof first !== \"number\" || typeof second !== \"number\") {\n return null;\n }\n switch (node.name) {\n case \"GT\":\n return first > second;\n case \"GTE\":\n return first >= second;\n case \"LT\":\n return first < second;\n case \"LTE\":\n return first <= second;\n }\n }\n case \"Flatten\": {\n const original = this.visit(node.child, value);\n return Array.isArray(original) ? original.flat() : null;\n }\n case \"Root\":\n return this._rootValue;\n case \"MultiSelectList\": {\n const collected = [];\n for (const child of node.children) {\n collected.push(this.visit(child, value));\n }\n return collected;\n }\n case \"MultiSelectHash\": {\n const collected = {};\n for (const child of node.children) {\n collected[child.name] = this.visit(child.value, value);\n }\n return collected;\n }\n case \"OrExpression\": {\n const result = this.visit(node.left, value);\n if (isFalse(result)) {\n return this.visit(node.right, value);\n }\n return result;\n }\n case \"AndExpression\": {\n const result = this.visit(node.left, value);\n if (isFalse(result)) {\n return result;\n }\n return this.visit(node.right, value);\n }\n case \"NotExpression\":\n return isFalse(this.visit(node.child, value));\n case \"Literal\":\n return node.value;\n case \"Pipe\":\n return this.visit(node.right, this.visit(node.left, value));\n case \"Function\": {\n const args = [];\n for (const child of node.children) {\n args.push(this.visit(child, value));\n }\n return this.runtime.callFunction(node.name, args);\n }\n case \"ExpressionReference\":\n return {\n expref: true,\n ...node.child\n };\n case \"Current\":\n case \"Identity\":\n return value;\n }\n }\n computeSliceParams(arrayLength, sliceNode) {\n let { start, stop, step } = sliceNode;\n if (step === null) {\n step = 1;\n } else if (step === 0) {\n const error = new Error(\"Invalid value: slice step cannot be 0\");\n error.name = \"RuntimeError\";\n throw error;\n }\n start = start === null ? step < 0 ? arrayLength - 1 : 0 : this.capSliceRange(arrayLength, start, step);\n stop = stop === null ? step < 0 ? -1 : arrayLength : this.capSliceRange(arrayLength, stop, step);\n return { start, stop, step };\n }\n capSliceRange(arrayLength, actualValue, step) {\n let nextActualValue = actualValue;\n if (nextActualValue < 0) {\n nextActualValue += arrayLength;\n if (nextActualValue < 0) {\n nextActualValue = step < 0 ? -1 : 0;\n }\n } else if (nextActualValue >= arrayLength) {\n nextActualValue = step < 0 ? arrayLength - 1 : arrayLength;\n }\n return nextActualValue;\n }\n slice(collection, start, end, step) {\n const result = [];\n if (step > 0) {\n for (let i = start; i < end; i += step) {\n result.push(collection[i]);\n }\n } else {\n for (let i = start; i > end; i += step) {\n result.push(collection[i]);\n }\n }\n return result;\n }\n};\nvar TreeInterpreterInstance = new TreeInterpreter();\nvar TreeInterpreter_default = TreeInterpreterInstance;\n\n// src/index.ts\nvar TYPE_ANY = 1 /* TYPE_ANY */;\nvar TYPE_ARRAY = 3 /* TYPE_ARRAY */;\nvar TYPE_ARRAY_ARRAY = 11 /* TYPE_ARRAY_ARRAY */;\nvar TYPE_ARRAY_NUMBER = 8 /* TYPE_ARRAY_NUMBER */;\nvar TYPE_ARRAY_OBJECT = 10 /* TYPE_ARRAY_OBJECT */;\nvar TYPE_ARRAY_STRING = 9 /* TYPE_ARRAY_STRING */;\nvar TYPE_BOOLEAN = 5 /* TYPE_BOOLEAN */;\nvar TYPE_EXPREF = 6 /* TYPE_EXPREF */;\nvar TYPE_NULL = 7 /* TYPE_NULL */;\nvar TYPE_NUMBER = 0 /* TYPE_NUMBER */;\nvar TYPE_OBJECT = 4 /* TYPE_OBJECT */;\nvar TYPE_STRING = 2 /* TYPE_STRING */;\nfunction compile(expression, options) {\n const nodeTree = Parser_default.parse(expression, options);\n return nodeTree;\n}\nfunction tokenize(expression, options) {\n return Lexer_default.tokenize(expression, options);\n}\nvar registerFunction = (functionName, customFunction, signature, options) => {\n TreeInterpreter_default.runtime.registerFunction(functionName, customFunction, signature, options);\n};\nvar register = (name, customFunction, signature, options) => {\n return TreeInterpreter_default.runtime.register(name, customFunction, signature, options);\n};\nvar unregisterFunction = (name) => {\n return TreeInterpreter_default.runtime.unregister(name);\n};\nvar isRegistered = (name) => {\n return TreeInterpreter_default.runtime.isRegistered(name);\n};\nvar getRegisteredFunctions = () => {\n return TreeInterpreter_default.runtime.getRegistered();\n};\nvar getCustomFunctions = () => {\n return TreeInterpreter_default.runtime.getCustomFunctions();\n};\nvar clearCustomFunctions = () => {\n TreeInterpreter_default.runtime.clearCustomFunctions();\n};\nfunction search(data, expression, options) {\n const nodeTree = Parser_default.parse(expression, options);\n return TreeInterpreter_default.search(nodeTree, data);\n}\nfunction Scope() {\n return new ScopeChain();\n}\nvar TreeInterpreter2 = TreeInterpreter_default;\nvar jmespath = {\n compile,\n registerFunction,\n register,\n unregisterFunction,\n isRegistered,\n getRegisteredFunctions,\n getCustomFunctions,\n clearCustomFunctions,\n search,\n tokenize,\n TreeInterpreter: TreeInterpreter2,\n TYPE_ANY,\n TYPE_ARRAY_NUMBER,\n TYPE_ARRAY_STRING,\n TYPE_ARRAY,\n TYPE_BOOLEAN,\n TYPE_EXPREF,\n TYPE_NULL,\n TYPE_NUMBER,\n TYPE_OBJECT,\n TYPE_STRING\n};\n\nexport { Scope, TYPE_ANY, TYPE_ARRAY, TYPE_ARRAY_ARRAY, TYPE_ARRAY_NUMBER, TYPE_ARRAY_OBJECT, TYPE_ARRAY_STRING, TYPE_BOOLEAN, TYPE_EXPREF, TYPE_NULL, TYPE_NUMBER, TYPE_OBJECT, TYPE_STRING, TreeInterpreter2 as TreeInterpreter, clearCustomFunctions, compile, jmespath as default, getCustomFunctions, getRegisteredFunctions, isRegistered, jmespath, register, registerFunction, search, tokenize, unregisterFunction };\n//# sourceMappingURL=index.mjs.map\n//# sourceMappingURL=index.mjs.map",
|
|
36
|
-
"/*! js-yaml 4.2.0 https://github.com/nodeca/js-yaml @license MIT */\n//#region \\0rolldown/runtime.js\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\n//#endregion\n//#region lib/common.js\nvar require_common = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tfunction isNothing(subject) {\n\t\treturn typeof subject === \"undefined\" || subject === null;\n\t}\n\tfunction isObject(subject) {\n\t\treturn typeof subject === \"object\" && subject !== null;\n\t}\n\tfunction toArray(sequence) {\n\t\tif (Array.isArray(sequence)) return sequence;\n\t\telse if (isNothing(sequence)) return [];\n\t\treturn [sequence];\n\t}\n\tfunction extend(target, source) {\n\t\tif (source) {\n\t\t\tconst sourceKeys = Object.keys(source);\n\t\t\tfor (let index = 0, length = sourceKeys.length; index < length; index += 1) {\n\t\t\t\tconst key = sourceKeys[index];\n\t\t\t\ttarget[key] = source[key];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t}\n\tfunction repeat(string, count) {\n\t\tlet result = \"\";\n\t\tfor (let cycle = 0; cycle < count; cycle += 1) result += string;\n\t\treturn result;\n\t}\n\tfunction isNegativeZero(number) {\n\t\treturn number === 0 && Number.NEGATIVE_INFINITY === 1 / number;\n\t}\n\tmodule.exports.isNothing = isNothing;\n\tmodule.exports.isObject = isObject;\n\tmodule.exports.toArray = toArray;\n\tmodule.exports.repeat = repeat;\n\tmodule.exports.isNegativeZero = isNegativeZero;\n\tmodule.exports.extend = extend;\n}));\n//#endregion\n//#region lib/exception.js\nvar require_exception = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tfunction formatError(exception, compact) {\n\t\tlet where = \"\";\n\t\tconst message = exception.reason || \"(unknown reason)\";\n\t\tif (!exception.mark) return message;\n\t\tif (exception.mark.name) where += \"in \\\"\" + exception.mark.name + \"\\\" \";\n\t\twhere += \"(\" + (exception.mark.line + 1) + \":\" + (exception.mark.column + 1) + \")\";\n\t\tif (!compact && exception.mark.snippet) where += \"\\n\\n\" + exception.mark.snippet;\n\t\treturn message + \" \" + where;\n\t}\n\tfunction YAMLException(reason, mark) {\n\t\tError.call(this);\n\t\tthis.name = \"YAMLException\";\n\t\tthis.reason = reason;\n\t\tthis.mark = mark;\n\t\tthis.message = formatError(this, false);\n\t\tif (Error.captureStackTrace) Error.captureStackTrace(this, this.constructor);\n\t\telse this.stack = (/* @__PURE__ */ new Error()).stack || \"\";\n\t}\n\tYAMLException.prototype = Object.create(Error.prototype);\n\tYAMLException.prototype.constructor = YAMLException;\n\tYAMLException.prototype.toString = function toString(compact) {\n\t\treturn this.name + \": \" + formatError(this, compact);\n\t};\n\tmodule.exports = YAMLException;\n}));\n//#endregion\n//#region lib/snippet.js\nvar require_snippet = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar common = require_common();\n\tfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n\t\tlet head = \"\";\n\t\tlet tail = \"\";\n\t\tconst maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\t\tif (position - lineStart > maxHalfLength) {\n\t\t\thead = \" ... \";\n\t\t\tlineStart = position - maxHalfLength + head.length;\n\t\t}\n\t\tif (lineEnd - position > maxHalfLength) {\n\t\t\ttail = \" ...\";\n\t\t\tlineEnd = position + maxHalfLength - tail.length;\n\t\t}\n\t\treturn {\n\t\t\tstr: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, \"→\") + tail,\n\t\t\tpos: position - lineStart + head.length\n\t\t};\n\t}\n\tfunction padStart(string, max) {\n\t\treturn common.repeat(\" \", max - string.length) + string;\n\t}\n\tfunction makeSnippet(mark, options) {\n\t\toptions = Object.create(options || null);\n\t\tif (!mark.buffer) return null;\n\t\tif (!options.maxLength) options.maxLength = 79;\n\t\tif (typeof options.indent !== \"number\") options.indent = 1;\n\t\tif (typeof options.linesBefore !== \"number\") options.linesBefore = 3;\n\t\tif (typeof options.linesAfter !== \"number\") options.linesAfter = 2;\n\t\tconst re = /\\r?\\n|\\r|\\0/g;\n\t\tconst lineStarts = [0];\n\t\tconst lineEnds = [];\n\t\tlet match;\n\t\tlet foundLineNo = -1;\n\t\twhile (match = re.exec(mark.buffer)) {\n\t\t\tlineEnds.push(match.index);\n\t\t\tlineStarts.push(match.index + match[0].length);\n\t\t\tif (mark.position <= match.index && foundLineNo < 0) foundLineNo = lineStarts.length - 2;\n\t\t}\n\t\tif (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\t\tlet result = \"\";\n\t\tconst lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n\t\tconst maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\t\tfor (let i = 1; i <= options.linesBefore; i++) {\n\t\t\tif (foundLineNo - i < 0) break;\n\t\t\tconst line = getLine(mark.buffer, lineStarts[foundLineNo - i], lineEnds[foundLineNo - i], mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), maxLineLength);\n\t\t\tresult = common.repeat(\" \", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\" + result;\n\t\t}\n\t\tconst line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n\t\tresult += common.repeat(\" \", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n\t\tresult += common.repeat(\"-\", options.indent + lineNoLength + 3 + line.pos) + \"^\\n\";\n\t\tfor (let i = 1; i <= options.linesAfter; i++) {\n\t\t\tif (foundLineNo + i >= lineEnds.length) break;\n\t\t\tconst line = getLine(mark.buffer, lineStarts[foundLineNo + i], lineEnds[foundLineNo + i], mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), maxLineLength);\n\t\t\tresult += common.repeat(\" \", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n\t\t}\n\t\treturn result.replace(/\\n$/, \"\");\n\t}\n\tmodule.exports = makeSnippet;\n}));\n//#endregion\n//#region lib/type.js\nvar require_type = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar YAMLException = require_exception();\n\tvar TYPE_CONSTRUCTOR_OPTIONS = [\n\t\t\"kind\",\n\t\t\"multi\",\n\t\t\"resolve\",\n\t\t\"construct\",\n\t\t\"instanceOf\",\n\t\t\"predicate\",\n\t\t\"represent\",\n\t\t\"representName\",\n\t\t\"defaultStyle\",\n\t\t\"styleAliases\"\n\t];\n\tvar YAML_NODE_KINDS = [\n\t\t\"scalar\",\n\t\t\"sequence\",\n\t\t\"mapping\"\n\t];\n\tfunction compileStyleAliases(map) {\n\t\tconst result = {};\n\t\tif (map !== null) Object.keys(map).forEach(function(style) {\n\t\t\tmap[style].forEach(function(alias) {\n\t\t\t\tresult[String(alias)] = style;\n\t\t\t});\n\t\t});\n\t\treturn result;\n\t}\n\tfunction Type(tag, options) {\n\t\toptions = options || {};\n\t\tObject.keys(options).forEach(function(name) {\n\t\t\tif (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) throw new YAMLException(\"Unknown option \\\"\" + name + \"\\\" is met in definition of \\\"\" + tag + \"\\\" YAML type.\");\n\t\t});\n\t\tthis.options = options;\n\t\tthis.tag = tag;\n\t\tthis.kind = options[\"kind\"] || null;\n\t\tthis.resolve = options[\"resolve\"] || function() {\n\t\t\treturn true;\n\t\t};\n\t\tthis.construct = options[\"construct\"] || function(data) {\n\t\t\treturn data;\n\t\t};\n\t\tthis.instanceOf = options[\"instanceOf\"] || null;\n\t\tthis.predicate = options[\"predicate\"] || null;\n\t\tthis.represent = options[\"represent\"] || null;\n\t\tthis.representName = options[\"representName\"] || null;\n\t\tthis.defaultStyle = options[\"defaultStyle\"] || null;\n\t\tthis.multi = options[\"multi\"] || false;\n\t\tthis.styleAliases = compileStyleAliases(options[\"styleAliases\"] || null);\n\t\tif (YAML_NODE_KINDS.indexOf(this.kind) === -1) throw new YAMLException(\"Unknown kind \\\"\" + this.kind + \"\\\" is specified for \\\"\" + tag + \"\\\" YAML type.\");\n\t}\n\tmodule.exports = Type;\n}));\n//#endregion\n//#region lib/schema.js\nvar require_schema = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar YAMLException = require_exception();\n\tvar Type = require_type();\n\tfunction compileList(schema, name) {\n\t\tconst result = [];\n\t\tschema[name].forEach(function(currentType) {\n\t\t\tlet newIndex = result.length;\n\t\t\tresult.forEach(function(previousType, previousIndex) {\n\t\t\t\tif (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) newIndex = previousIndex;\n\t\t\t});\n\t\t\tresult[newIndex] = currentType;\n\t\t});\n\t\treturn result;\n\t}\n\tfunction compileMap() {\n\t\tconst result = {\n\t\t\tscalar: {},\n\t\t\tsequence: {},\n\t\t\tmapping: {},\n\t\t\tfallback: {},\n\t\t\tmulti: {\n\t\t\t\tscalar: [],\n\t\t\t\tsequence: [],\n\t\t\t\tmapping: [],\n\t\t\t\tfallback: []\n\t\t\t}\n\t\t};\n\t\tfunction collectType(type) {\n\t\t\tif (type.multi) {\n\t\t\t\tresult.multi[type.kind].push(type);\n\t\t\t\tresult.multi[\"fallback\"].push(type);\n\t\t\t} else result[type.kind][type.tag] = result[\"fallback\"][type.tag] = type;\n\t\t}\n\t\tfor (let index = 0, length = arguments.length; index < length; index += 1) arguments[index].forEach(collectType);\n\t\treturn result;\n\t}\n\tfunction Schema(definition) {\n\t\treturn this.extend(definition);\n\t}\n\tSchema.prototype.extend = function extend(definition) {\n\t\tlet implicit = [];\n\t\tlet explicit = [];\n\t\tif (definition instanceof Type) explicit.push(definition);\n\t\telse if (Array.isArray(definition)) explicit = explicit.concat(definition);\n\t\telse if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n\t\t\tif (definition.implicit) implicit = implicit.concat(definition.implicit);\n\t\t\tif (definition.explicit) explicit = explicit.concat(definition.explicit);\n\t\t} else throw new YAMLException(\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\");\n\t\timplicit.forEach(function(type) {\n\t\t\tif (!(type instanceof Type)) throw new YAMLException(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n\t\t\tif (type.loadKind && type.loadKind !== \"scalar\") 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\t\t\tif (type.multi) throw new YAMLException(\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\");\n\t\t});\n\t\texplicit.forEach(function(type) {\n\t\t\tif (!(type instanceof Type)) throw new YAMLException(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n\t\t});\n\t\tconst result = Object.create(Schema.prototype);\n\t\tresult.implicit = (this.implicit || []).concat(implicit);\n\t\tresult.explicit = (this.explicit || []).concat(explicit);\n\t\tresult.compiledImplicit = compileList(result, \"implicit\");\n\t\tresult.compiledExplicit = compileList(result, \"explicit\");\n\t\tresult.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\t\treturn result;\n\t};\n\tmodule.exports = Schema;\n}));\n//#endregion\n//#region lib/type/str.js\nvar require_str = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = new (require_type())(\"tag:yaml.org,2002:str\", {\n\t\tkind: \"scalar\",\n\t\tconstruct: function(data) {\n\t\t\treturn data !== null ? data : \"\";\n\t\t}\n\t});\n}));\n//#endregion\n//#region lib/type/seq.js\nvar require_seq = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = new (require_type())(\"tag:yaml.org,2002:seq\", {\n\t\tkind: \"sequence\",\n\t\tconstruct: function(data) {\n\t\t\treturn data !== null ? data : [];\n\t\t}\n\t});\n}));\n//#endregion\n//#region lib/type/map.js\nvar require_map = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = new (require_type())(\"tag:yaml.org,2002:map\", {\n\t\tkind: \"mapping\",\n\t\tconstruct: function(data) {\n\t\t\treturn data !== null ? data : {};\n\t\t}\n\t});\n}));\n//#endregion\n//#region lib/schema/failsafe.js\nvar require_failsafe = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = new (require_schema())({ explicit: [\n\t\trequire_str(),\n\t\trequire_seq(),\n\t\trequire_map()\n\t] });\n}));\n//#endregion\n//#region lib/type/null.js\nvar require_null = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tfunction resolveYamlNull(data) {\n\t\tif (data === null) return true;\n\t\tconst max = data.length;\n\t\treturn max === 1 && data === \"~\" || max === 4 && (data === \"null\" || data === \"Null\" || data === \"NULL\");\n\t}\n\tfunction constructYamlNull() {\n\t\treturn null;\n\t}\n\tfunction isNull(object) {\n\t\treturn object === null;\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:null\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlNull,\n\t\tconstruct: constructYamlNull,\n\t\tpredicate: isNull,\n\t\trepresent: {\n\t\t\tcanonical: function() {\n\t\t\t\treturn \"~\";\n\t\t\t},\n\t\t\tlowercase: function() {\n\t\t\t\treturn \"null\";\n\t\t\t},\n\t\t\tuppercase: function() {\n\t\t\t\treturn \"NULL\";\n\t\t\t},\n\t\t\tcamelcase: function() {\n\t\t\t\treturn \"Null\";\n\t\t\t},\n\t\t\tempty: function() {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t},\n\t\tdefaultStyle: \"lowercase\"\n\t});\n}));\n//#endregion\n//#region lib/type/bool.js\nvar require_bool = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tfunction resolveYamlBoolean(data) {\n\t\tif (data === null) return false;\n\t\tconst max = data.length;\n\t\treturn max === 4 && (data === \"true\" || data === \"True\" || data === \"TRUE\") || max === 5 && (data === \"false\" || data === \"False\" || data === \"FALSE\");\n\t}\n\tfunction constructYamlBoolean(data) {\n\t\treturn data === \"true\" || data === \"True\" || data === \"TRUE\";\n\t}\n\tfunction isBoolean(object) {\n\t\treturn Object.prototype.toString.call(object) === \"[object Boolean]\";\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:bool\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlBoolean,\n\t\tconstruct: constructYamlBoolean,\n\t\tpredicate: isBoolean,\n\t\trepresent: {\n\t\t\tlowercase: function(object) {\n\t\t\t\treturn object ? \"true\" : \"false\";\n\t\t\t},\n\t\t\tuppercase: function(object) {\n\t\t\t\treturn object ? \"TRUE\" : \"FALSE\";\n\t\t\t},\n\t\t\tcamelcase: function(object) {\n\t\t\t\treturn object ? \"True\" : \"False\";\n\t\t\t}\n\t\t},\n\t\tdefaultStyle: \"lowercase\"\n\t});\n}));\n//#endregion\n//#region lib/type/int.js\nvar require_int = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar common = require_common();\n\tvar Type = require_type();\n\tfunction isHexCode(c) {\n\t\treturn c >= 48 && c <= 57 || c >= 65 && c <= 70 || c >= 97 && c <= 102;\n\t}\n\tfunction isOctCode(c) {\n\t\treturn c >= 48 && c <= 55;\n\t}\n\tfunction isDecCode(c) {\n\t\treturn c >= 48 && c <= 57;\n\t}\n\tfunction resolveYamlInteger(data) {\n\t\tif (data === null) return false;\n\t\tconst max = data.length;\n\t\tlet index = 0;\n\t\tlet hasDigits = false;\n\t\tif (!max) return false;\n\t\tlet ch = data[index];\n\t\tif (ch === \"-\" || ch === \"+\") ch = data[++index];\n\t\tif (ch === \"0\") {\n\t\t\tif (index + 1 === max) return true;\n\t\t\tch = data[++index];\n\t\t\tif (ch === \"b\") {\n\t\t\t\tindex++;\n\t\t\t\tfor (; index < max; index++) {\n\t\t\t\t\tch = data[index];\n\t\t\t\t\tif (ch !== \"0\" && ch !== \"1\") return false;\n\t\t\t\t\thasDigits = true;\n\t\t\t\t}\n\t\t\t\treturn hasDigits && Number.isFinite(parseYamlInteger(data));\n\t\t\t}\n\t\t\tif (ch === \"x\") {\n\t\t\t\tindex++;\n\t\t\t\tfor (; index < max; index++) {\n\t\t\t\t\tif (!isHexCode(data.charCodeAt(index))) return false;\n\t\t\t\t\thasDigits = true;\n\t\t\t\t}\n\t\t\t\treturn hasDigits && Number.isFinite(parseYamlInteger(data));\n\t\t\t}\n\t\t\tif (ch === \"o\") {\n\t\t\t\tindex++;\n\t\t\t\tfor (; index < max; index++) {\n\t\t\t\t\tif (!isOctCode(data.charCodeAt(index))) return false;\n\t\t\t\t\thasDigits = true;\n\t\t\t\t}\n\t\t\t\treturn hasDigits && Number.isFinite(parseYamlInteger(data));\n\t\t\t}\n\t\t}\n\t\tfor (; index < max; index++) {\n\t\t\tif (!isDecCode(data.charCodeAt(index))) return false;\n\t\t\thasDigits = true;\n\t\t}\n\t\tif (!hasDigits) return false;\n\t\treturn Number.isFinite(parseYamlInteger(data));\n\t}\n\tfunction parseYamlInteger(data) {\n\t\tlet value = data;\n\t\tlet sign = 1;\n\t\tlet ch = value[0];\n\t\tif (ch === \"-\" || ch === \"+\") {\n\t\t\tif (ch === \"-\") sign = -1;\n\t\t\tvalue = value.slice(1);\n\t\t\tch = value[0];\n\t\t}\n\t\tif (value === \"0\") return 0;\n\t\tif (ch === \"0\") {\n\t\t\tif (value[1] === \"b\") return sign * parseInt(value.slice(2), 2);\n\t\t\tif (value[1] === \"x\") return sign * parseInt(value.slice(2), 16);\n\t\t\tif (value[1] === \"o\") return sign * parseInt(value.slice(2), 8);\n\t\t}\n\t\treturn sign * parseInt(value, 10);\n\t}\n\tfunction constructYamlInteger(data) {\n\t\treturn parseYamlInteger(data);\n\t}\n\tfunction isInteger(object) {\n\t\treturn Object.prototype.toString.call(object) === \"[object Number]\" && object % 1 === 0 && !common.isNegativeZero(object);\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:int\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlInteger,\n\t\tconstruct: constructYamlInteger,\n\t\tpredicate: isInteger,\n\t\trepresent: {\n\t\t\tbinary: function(obj) {\n\t\t\t\treturn obj >= 0 ? \"0b\" + obj.toString(2) : \"-0b\" + obj.toString(2).slice(1);\n\t\t\t},\n\t\t\toctal: function(obj) {\n\t\t\t\treturn obj >= 0 ? \"0o\" + obj.toString(8) : \"-0o\" + obj.toString(8).slice(1);\n\t\t\t},\n\t\t\tdecimal: function(obj) {\n\t\t\t\treturn obj.toString(10);\n\t\t\t},\n\t\t\thexadecimal: function(obj) {\n\t\t\t\treturn obj >= 0 ? \"0x\" + obj.toString(16).toUpperCase() : \"-0x\" + obj.toString(16).toUpperCase().slice(1);\n\t\t\t}\n\t\t},\n\t\tdefaultStyle: \"decimal\",\n\t\tstyleAliases: {\n\t\t\tbinary: [2, \"bin\"],\n\t\t\toctal: [8, \"oct\"],\n\t\t\tdecimal: [10, \"dec\"],\n\t\t\thexadecimal: [16, \"hex\"]\n\t\t}\n\t});\n}));\n//#endregion\n//#region lib/type/float.js\nvar require_float = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar common = require_common();\n\tvar Type = require_type();\n\tvar YAML_FLOAT_PATTERN = /* @__PURE__ */ new RegExp(\"^(?:[-+]?(?:[0-9]+)(?:\\\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");\n\tvar YAML_FLOAT_SPECIAL_PATTERN = /* @__PURE__ */ new RegExp(\"^(?:[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");\n\tfunction resolveYamlFloat(data) {\n\t\tif (data === null) return false;\n\t\tif (!YAML_FLOAT_PATTERN.test(data)) return false;\n\t\tif (Number.isFinite(parseFloat(data, 10))) return true;\n\t\treturn YAML_FLOAT_SPECIAL_PATTERN.test(data);\n\t}\n\tfunction constructYamlFloat(data) {\n\t\tlet value = data.toLowerCase();\n\t\tconst sign = value[0] === \"-\" ? -1 : 1;\n\t\tif (\"+-\".indexOf(value[0]) >= 0) value = value.slice(1);\n\t\tif (value === \".inf\") return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\t\telse if (value === \".nan\") return NaN;\n\t\treturn sign * parseFloat(value, 10);\n\t}\n\tvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\tfunction representYamlFloat(object, style) {\n\t\tif (isNaN(object)) switch (style) {\n\t\t\tcase \"lowercase\": return \".nan\";\n\t\t\tcase \"uppercase\": return \".NAN\";\n\t\t\tcase \"camelcase\": return \".NaN\";\n\t\t}\n\t\telse if (Number.POSITIVE_INFINITY === object) switch (style) {\n\t\t\tcase \"lowercase\": return \".inf\";\n\t\t\tcase \"uppercase\": return \".INF\";\n\t\t\tcase \"camelcase\": return \".Inf\";\n\t\t}\n\t\telse if (Number.NEGATIVE_INFINITY === object) switch (style) {\n\t\t\tcase \"lowercase\": return \"-.inf\";\n\t\t\tcase \"uppercase\": return \"-.INF\";\n\t\t\tcase \"camelcase\": return \"-.Inf\";\n\t\t}\n\t\telse if (common.isNegativeZero(object)) return \"-0.0\";\n\t\tconst res = object.toString(10);\n\t\treturn SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace(\"e\", \".e\") : res;\n\t}\n\tfunction isFloat(object) {\n\t\treturn Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 !== 0 || common.isNegativeZero(object));\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:float\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlFloat,\n\t\tconstruct: constructYamlFloat,\n\t\tpredicate: isFloat,\n\t\trepresent: representYamlFloat,\n\t\tdefaultStyle: \"lowercase\"\n\t});\n}));\n//#endregion\n//#region lib/schema/json.js\nvar require_json = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = require_failsafe().extend({ implicit: [\n\t\trequire_null(),\n\t\trequire_bool(),\n\t\trequire_int(),\n\t\trequire_float()\n\t] });\n}));\n//#endregion\n//#region lib/schema/core.js\nvar require_core = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = require_json();\n}));\n//#endregion\n//#region lib/type/timestamp.js\nvar require_timestamp = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tvar YAML_DATE_REGEXP = /* @__PURE__ */ new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\");\n\tvar YAML_TIMESTAMP_REGEXP = /* @__PURE__ */ new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\");\n\tfunction resolveYamlTimestamp(data) {\n\t\tif (data === null) return false;\n\t\tif (YAML_DATE_REGEXP.exec(data) !== null) return true;\n\t\tif (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n\t\treturn false;\n\t}\n\tfunction constructYamlTimestamp(data) {\n\t\tlet fraction = 0;\n\t\tlet delta = null;\n\t\tlet match = YAML_DATE_REGEXP.exec(data);\n\t\tif (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\t\tif (match === null) throw new Error(\"Date resolve error\");\n\t\tconst year = +match[1];\n\t\tconst month = +match[2] - 1;\n\t\tconst day = +match[3];\n\t\tif (!match[4]) return new Date(Date.UTC(year, month, day));\n\t\tconst hour = +match[4];\n\t\tconst minute = +match[5];\n\t\tconst second = +match[6];\n\t\tif (match[7]) {\n\t\t\tfraction = match[7].slice(0, 3);\n\t\t\twhile (fraction.length < 3) fraction += \"0\";\n\t\t\tfraction = +fraction;\n\t\t}\n\t\tif (match[9]) {\n\t\t\tconst tzHour = +match[10];\n\t\t\tconst tzMinute = +(match[11] || 0);\n\t\t\tdelta = (tzHour * 60 + tzMinute) * 6e4;\n\t\t\tif (match[9] === \"-\") delta = -delta;\n\t\t}\n\t\tconst date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\t\tif (delta) date.setTime(date.getTime() - delta);\n\t\treturn date;\n\t}\n\tfunction representYamlTimestamp(object) {\n\t\treturn object.toISOString();\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:timestamp\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlTimestamp,\n\t\tconstruct: constructYamlTimestamp,\n\t\tinstanceOf: Date,\n\t\trepresent: representYamlTimestamp\n\t});\n}));\n//#endregion\n//#region lib/type/merge.js\nvar require_merge = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tfunction resolveYamlMerge(data) {\n\t\treturn data === \"<<\" || data === null;\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:merge\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlMerge\n\t});\n}));\n//#endregion\n//#region lib/type/binary.js\nvar require_binary = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tvar BASE64_MAP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r\";\n\tfunction resolveYamlBinary(data) {\n\t\tif (data === null) return false;\n\t\tlet bitlen = 0;\n\t\tconst max = data.length;\n\t\tconst map = BASE64_MAP;\n\t\tfor (let idx = 0; idx < max; idx++) {\n\t\t\tconst code = map.indexOf(data.charAt(idx));\n\t\t\tif (code > 64) continue;\n\t\t\tif (code < 0) return false;\n\t\t\tbitlen += 6;\n\t\t}\n\t\treturn bitlen % 8 === 0;\n\t}\n\tfunction constructYamlBinary(data) {\n\t\tconst input = data.replace(/[\\r\\n=]/g, \"\");\n\t\tconst max = input.length;\n\t\tconst map = BASE64_MAP;\n\t\tlet bits = 0;\n\t\tconst result = [];\n\t\tfor (let idx = 0; idx < max; idx++) {\n\t\t\tif (idx % 4 === 0 && idx) {\n\t\t\t\tresult.push(bits >> 16 & 255);\n\t\t\t\tresult.push(bits >> 8 & 255);\n\t\t\t\tresult.push(bits & 255);\n\t\t\t}\n\t\t\tbits = bits << 6 | map.indexOf(input.charAt(idx));\n\t\t}\n\t\tconst tailbits = max % 4 * 6;\n\t\tif (tailbits === 0) {\n\t\t\tresult.push(bits >> 16 & 255);\n\t\t\tresult.push(bits >> 8 & 255);\n\t\t\tresult.push(bits & 255);\n\t\t} else if (tailbits === 18) {\n\t\t\tresult.push(bits >> 10 & 255);\n\t\t\tresult.push(bits >> 2 & 255);\n\t\t} else if (tailbits === 12) result.push(bits >> 4 & 255);\n\t\treturn new Uint8Array(result);\n\t}\n\tfunction representYamlBinary(object) {\n\t\tlet result = \"\";\n\t\tlet bits = 0;\n\t\tconst max = object.length;\n\t\tconst map = BASE64_MAP;\n\t\tfor (let idx = 0; idx < max; idx++) {\n\t\t\tif (idx % 3 === 0 && idx) {\n\t\t\t\tresult += map[bits >> 18 & 63];\n\t\t\t\tresult += map[bits >> 12 & 63];\n\t\t\t\tresult += map[bits >> 6 & 63];\n\t\t\t\tresult += map[bits & 63];\n\t\t\t}\n\t\t\tbits = (bits << 8) + object[idx];\n\t\t}\n\t\tconst tail = max % 3;\n\t\tif (tail === 0) {\n\t\t\tresult += map[bits >> 18 & 63];\n\t\t\tresult += map[bits >> 12 & 63];\n\t\t\tresult += map[bits >> 6 & 63];\n\t\t\tresult += map[bits & 63];\n\t\t} else if (tail === 2) {\n\t\t\tresult += map[bits >> 10 & 63];\n\t\t\tresult += map[bits >> 4 & 63];\n\t\t\tresult += map[bits << 2 & 63];\n\t\t\tresult += map[64];\n\t\t} else if (tail === 1) {\n\t\t\tresult += map[bits >> 2 & 63];\n\t\t\tresult += map[bits << 4 & 63];\n\t\t\tresult += map[64];\n\t\t\tresult += map[64];\n\t\t}\n\t\treturn result;\n\t}\n\tfunction isBinary(obj) {\n\t\treturn Object.prototype.toString.call(obj) === \"[object Uint8Array]\";\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:binary\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlBinary,\n\t\tconstruct: constructYamlBinary,\n\t\tpredicate: isBinary,\n\t\trepresent: representYamlBinary\n\t});\n}));\n//#endregion\n//#region lib/type/omap.js\nvar require_omap = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar _toString = Object.prototype.toString;\n\tfunction resolveYamlOmap(data) {\n\t\tif (data === null) return true;\n\t\tconst objectKeys = [];\n\t\tconst object = data;\n\t\tfor (let index = 0, length = object.length; index < length; index += 1) {\n\t\t\tconst pair = object[index];\n\t\t\tlet pairHasKey = false;\n\t\t\tif (_toString.call(pair) !== \"[object Object]\") return false;\n\t\t\tlet pairKey;\n\t\t\tfor (pairKey in pair) if (_hasOwnProperty.call(pair, pairKey)) if (!pairHasKey) pairHasKey = true;\n\t\t\telse return false;\n\t\t\tif (!pairHasKey) return false;\n\t\t\tif (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n\t\t\telse return false;\n\t\t}\n\t\treturn true;\n\t}\n\tfunction constructYamlOmap(data) {\n\t\treturn data !== null ? data : [];\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:omap\", {\n\t\tkind: \"sequence\",\n\t\tresolve: resolveYamlOmap,\n\t\tconstruct: constructYamlOmap\n\t});\n}));\n//#endregion\n//#region lib/type/pairs.js\nvar require_pairs = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tvar _toString = Object.prototype.toString;\n\tfunction resolveYamlPairs(data) {\n\t\tif (data === null) return true;\n\t\tconst object = data;\n\t\tconst result = new Array(object.length);\n\t\tfor (let index = 0, length = object.length; index < length; index += 1) {\n\t\t\tconst pair = object[index];\n\t\t\tif (_toString.call(pair) !== \"[object Object]\") return false;\n\t\t\tconst keys = Object.keys(pair);\n\t\t\tif (keys.length !== 1) return false;\n\t\t\tresult[index] = [keys[0], pair[keys[0]]];\n\t\t}\n\t\treturn true;\n\t}\n\tfunction constructYamlPairs(data) {\n\t\tif (data === null) return [];\n\t\tconst object = data;\n\t\tconst result = new Array(object.length);\n\t\tfor (let index = 0, length = object.length; index < length; index += 1) {\n\t\t\tconst pair = object[index];\n\t\t\tconst keys = Object.keys(pair);\n\t\t\tresult[index] = [keys[0], pair[keys[0]]];\n\t\t}\n\t\treturn result;\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:pairs\", {\n\t\tkind: \"sequence\",\n\t\tresolve: resolveYamlPairs,\n\t\tconstruct: constructYamlPairs\n\t});\n}));\n//#endregion\n//#region lib/type/set.js\nvar require_set = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\tfunction resolveYamlSet(data) {\n\t\tif (data === null) return true;\n\t\tconst object = data;\n\t\tfor (const key in object) if (_hasOwnProperty.call(object, key)) {\n\t\t\tif (object[key] !== null) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tfunction constructYamlSet(data) {\n\t\treturn data !== null ? data : {};\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:set\", {\n\t\tkind: \"mapping\",\n\t\tresolve: resolveYamlSet,\n\t\tconstruct: constructYamlSet\n\t});\n}));\n//#endregion\n//#region lib/schema/default.js\nvar require_default = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = require_core().extend({\n\t\timplicit: [require_timestamp(), require_merge()],\n\t\texplicit: [\n\t\t\trequire_binary(),\n\t\t\trequire_omap(),\n\t\t\trequire_pairs(),\n\t\t\trequire_set()\n\t\t]\n\t});\n}));\n//#endregion\n//#region lib/loader.js\nvar require_loader = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar common = require_common();\n\tvar YAMLException = require_exception();\n\tvar makeSnippet = require_snippet();\n\tvar DEFAULT_SCHEMA = require_default();\n\tvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar CONTEXT_FLOW_IN = 1;\n\tvar CONTEXT_FLOW_OUT = 2;\n\tvar CONTEXT_BLOCK_IN = 3;\n\tvar CONTEXT_BLOCK_OUT = 4;\n\tvar CHOMPING_CLIP = 1;\n\tvar CHOMPING_STRIP = 2;\n\tvar CHOMPING_KEEP = 3;\n\tvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\tvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\n\tvar PATTERN_FLOW_INDICATORS = /[,\\[\\]{}]/;\n\tvar PATTERN_TAG_HANDLE = /^(?:!|!!|![0-9A-Za-z-]+!)$/;\n\tvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]{}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;/?:@&=+$,_.!~*'()\\[\\]])*$/i;\n\tfunction _class(obj) {\n\t\treturn Object.prototype.toString.call(obj);\n\t}\n\tfunction isEol(c) {\n\t\treturn c === 10 || c === 13;\n\t}\n\tfunction isWhiteSpace(c) {\n\t\treturn c === 9 || c === 32;\n\t}\n\tfunction isWsOrEol(c) {\n\t\treturn c === 9 || c === 32 || c === 10 || c === 13;\n\t}\n\tfunction isFlowIndicator(c) {\n\t\treturn c === 44 || c === 91 || c === 93 || c === 123 || c === 125;\n\t}\n\tfunction fromHexCode(c) {\n\t\tif (c >= 48 && c <= 57) return c - 48;\n\t\tconst lc = c | 32;\n\t\tif (lc >= 97 && lc <= 102) return lc - 97 + 10;\n\t\treturn -1;\n\t}\n\tfunction escapedHexLen(c) {\n\t\tif (c === 120) return 2;\n\t\tif (c === 117) return 4;\n\t\tif (c === 85) return 8;\n\t\treturn 0;\n\t}\n\tfunction fromDecimalCode(c) {\n\t\tif (c >= 48 && c <= 57) return c - 48;\n\t\treturn -1;\n\t}\n\tfunction simpleEscapeSequence(c) {\n\t\tswitch (c) {\n\t\t\tcase 48: return \"\\0\";\n\t\t\tcase 97: return \"\\x07\";\n\t\t\tcase 98: return \"\\b\";\n\t\t\tcase 116: return \"\t\";\n\t\t\tcase 9: return \"\t\";\n\t\t\tcase 110: return \"\\n\";\n\t\t\tcase 118: return \"\\v\";\n\t\t\tcase 102: return \"\\f\";\n\t\t\tcase 114: return \"\\r\";\n\t\t\tcase 101: return \"\\x1B\";\n\t\t\tcase 32: return \" \";\n\t\t\tcase 34: return \"\\\"\";\n\t\t\tcase 47: return \"/\";\n\t\t\tcase 92: return \"\\\\\";\n\t\t\tcase 78: return \"
\";\n\t\t\tcase 95: return \"\\xA0\";\n\t\t\tcase 76: return \"\\u2028\";\n\t\t\tcase 80: return \"\\u2029\";\n\t\t\tdefault: return \"\";\n\t\t}\n\t}\n\tfunction charFromCodepoint(c) {\n\t\tif (c <= 65535) return String.fromCharCode(c);\n\t\treturn String.fromCharCode((c - 65536 >> 10) + 55296, (c - 65536 & 1023) + 56320);\n\t}\n\tfunction setProperty(object, key, value) {\n\t\tif (key === \"__proto__\") Object.defineProperty(object, key, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\twritable: true,\n\t\t\tvalue\n\t\t});\n\t\telse object[key] = value;\n\t}\n\tvar simpleEscapeCheck = new Array(256);\n\tvar simpleEscapeMap = new Array(256);\n\tfor (let i = 0; i < 256; i++) {\n\t\tsimpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n\t\tsimpleEscapeMap[i] = simpleEscapeSequence(i);\n\t}\n\tfunction State(input, options) {\n\t\tthis.input = input;\n\t\tthis.filename = options[\"filename\"] || null;\n\t\tthis.schema = options[\"schema\"] || DEFAULT_SCHEMA;\n\t\tthis.onWarning = options[\"onWarning\"] || null;\n\t\tthis.legacy = options[\"legacy\"] || false;\n\t\tthis.json = options[\"json\"] || false;\n\t\tthis.listener = options[\"listener\"] || null;\n\t\tthis.maxDepth = typeof options[\"maxDepth\"] === \"number\" ? options[\"maxDepth\"] : 100;\n\t\tthis.maxMergeSeqLength = typeof options[\"maxMergeSeqLength\"] === \"number\" ? options[\"maxMergeSeqLength\"] : 20;\n\t\tthis.implicitTypes = this.schema.compiledImplicit;\n\t\tthis.typeMap = this.schema.compiledTypeMap;\n\t\tthis.length = input.length;\n\t\tthis.position = 0;\n\t\tthis.line = 0;\n\t\tthis.lineStart = 0;\n\t\tthis.lineIndent = 0;\n\t\tthis.depth = 0;\n\t\tthis.firstTabInLine = -1;\n\t\tthis.documents = [];\n\t\tthis.anchorMapTransactions = [];\n\t}\n\tfunction generateError(state, message) {\n\t\tconst mark = {\n\t\t\tname: state.filename,\n\t\t\tbuffer: state.input.slice(0, -1),\n\t\t\tposition: state.position,\n\t\t\tline: state.line,\n\t\t\tcolumn: state.position - state.lineStart\n\t\t};\n\t\tmark.snippet = makeSnippet(mark);\n\t\treturn new YAMLException(message, mark);\n\t}\n\tfunction throwError(state, message) {\n\t\tthrow generateError(state, message);\n\t}\n\tfunction throwWarning(state, message) {\n\t\tif (state.onWarning) state.onWarning.call(null, generateError(state, message));\n\t}\n\tfunction storeAnchor(state, name, value) {\n\t\tconst transactions = state.anchorMapTransactions;\n\t\tif (transactions.length !== 0) {\n\t\t\tconst transaction = transactions[transactions.length - 1];\n\t\t\tif (!_hasOwnProperty.call(transaction, name)) transaction[name] = {\n\t\t\t\texisted: _hasOwnProperty.call(state.anchorMap, name),\n\t\t\t\tvalue: state.anchorMap[name]\n\t\t\t};\n\t\t}\n\t\tstate.anchorMap[name] = value;\n\t}\n\tfunction beginAnchorTransaction(state) {\n\t\tstate.anchorMapTransactions.push(Object.create(null));\n\t}\n\tfunction commitAnchorTransaction(state) {\n\t\tconst transaction = state.anchorMapTransactions.pop();\n\t\tconst transactions = state.anchorMapTransactions;\n\t\tif (transactions.length === 0) return;\n\t\tconst parent = transactions[transactions.length - 1];\n\t\tconst names = Object.keys(transaction);\n\t\tfor (let index = 0, length = names.length; index < length; index += 1) {\n\t\t\tconst name = names[index];\n\t\t\tif (!_hasOwnProperty.call(parent, name)) parent[name] = transaction[name];\n\t\t}\n\t}\n\tfunction rollbackAnchorTransaction(state) {\n\t\tconst transaction = state.anchorMapTransactions.pop();\n\t\tconst names = Object.keys(transaction);\n\t\tfor (let index = names.length - 1; index >= 0; index -= 1) {\n\t\t\tconst entry = transaction[names[index]];\n\t\t\tif (entry.existed) state.anchorMap[names[index]] = entry.value;\n\t\t\telse delete state.anchorMap[names[index]];\n\t\t}\n\t}\n\tfunction snapshotState(state) {\n\t\treturn {\n\t\t\tposition: state.position,\n\t\t\tline: state.line,\n\t\t\tlineStart: state.lineStart,\n\t\t\tlineIndent: state.lineIndent,\n\t\t\tfirstTabInLine: state.firstTabInLine,\n\t\t\ttag: state.tag,\n\t\t\tanchor: state.anchor,\n\t\t\tkind: state.kind,\n\t\t\tresult: state.result\n\t\t};\n\t}\n\tfunction restoreState(state, snapshot) {\n\t\tstate.position = snapshot.position;\n\t\tstate.line = snapshot.line;\n\t\tstate.lineStart = snapshot.lineStart;\n\t\tstate.lineIndent = snapshot.lineIndent;\n\t\tstate.firstTabInLine = snapshot.firstTabInLine;\n\t\tstate.tag = snapshot.tag;\n\t\tstate.anchor = snapshot.anchor;\n\t\tstate.kind = snapshot.kind;\n\t\tstate.result = snapshot.result;\n\t}\n\tvar directiveHandlers = {\n\t\tYAML: function handleYamlDirective(state, name, args) {\n\t\t\tif (state.version !== null) throwError(state, \"duplication of %YAML directive\");\n\t\t\tif (args.length !== 1) throwError(state, \"YAML directive accepts exactly one argument\");\n\t\t\tconst match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\t\t\tif (match === null) throwError(state, \"ill-formed argument of the YAML directive\");\n\t\t\tconst major = parseInt(match[1], 10);\n\t\t\tconst minor = parseInt(match[2], 10);\n\t\t\tif (major !== 1) throwError(state, \"unacceptable YAML version of the document\");\n\t\t\tstate.version = args[0];\n\t\t\tstate.checkLineBreaks = minor < 2;\n\t\t\tif (minor !== 1 && minor !== 2) throwWarning(state, \"unsupported YAML version of the document\");\n\t\t},\n\t\tTAG: function handleTagDirective(state, name, args) {\n\t\t\tlet prefix;\n\t\t\tif (args.length !== 2) throwError(state, \"TAG directive accepts exactly two arguments\");\n\t\t\tconst handle = args[0];\n\t\t\tprefix = args[1];\n\t\t\tif (!PATTERN_TAG_HANDLE.test(handle)) throwError(state, \"ill-formed tag handle (first argument) of the TAG directive\");\n\t\t\tif (_hasOwnProperty.call(state.tagMap, handle)) throwError(state, \"there is a previously declared suffix for \\\"\" + handle + \"\\\" tag handle\");\n\t\t\tif (!PATTERN_TAG_URI.test(prefix)) throwError(state, \"ill-formed tag prefix (second argument) of the TAG directive\");\n\t\t\ttry {\n\t\t\t\tprefix = decodeURIComponent(prefix);\n\t\t\t} catch (err) {\n\t\t\t\tthrowError(state, \"tag prefix is malformed: \" + prefix);\n\t\t\t}\n\t\t\tstate.tagMap[handle] = prefix;\n\t\t}\n\t};\n\tfunction captureSegment(state, start, end, checkJson) {\n\t\tif (start < end) {\n\t\t\tconst _result = state.input.slice(start, end);\n\t\t\tif (checkJson) for (let _position = 0, _length = _result.length; _position < _length; _position += 1) {\n\t\t\t\tconst _character = _result.charCodeAt(_position);\n\t\t\t\tif (!(_character === 9 || _character >= 32 && _character <= 1114111)) throwError(state, \"expected valid JSON character\");\n\t\t\t}\n\t\t\telse if (PATTERN_NON_PRINTABLE.test(_result)) throwError(state, \"the stream contains non-printable characters\");\n\t\t\tstate.result += _result;\n\t\t}\n\t}\n\tfunction mergeMappings(state, destination, source, overridableKeys) {\n\t\tif (!common.isObject(source)) throwError(state, \"cannot merge mappings; the provided source object is unacceptable\");\n\t\tconst sourceKeys = Object.keys(source);\n\t\tfor (let index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n\t\t\tconst key = sourceKeys[index];\n\t\t\tif (!_hasOwnProperty.call(destination, key)) {\n\t\t\t\tsetProperty(destination, key, source[key]);\n\t\t\t\toverridableKeys[key] = true;\n\t\t\t}\n\t\t}\n\t}\n\tfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) {\n\t\tif (Array.isArray(keyNode)) {\n\t\t\tkeyNode = Array.prototype.slice.call(keyNode);\n\t\t\tfor (let index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n\t\t\t\tif (Array.isArray(keyNode[index])) throwError(state, \"nested arrays are not supported inside keys\");\n\t\t\t\tif (typeof keyNode === \"object\" && _class(keyNode[index]) === \"[object Object]\") keyNode[index] = \"[object Object]\";\n\t\t\t}\n\t\t}\n\t\tif (typeof keyNode === \"object\" && _class(keyNode) === \"[object Object]\") keyNode = \"[object Object]\";\n\t\tkeyNode = String(keyNode);\n\t\tif (_result === null) _result = {};\n\t\tif (keyTag === \"tag:yaml.org,2002:merge\") if (Array.isArray(valueNode)) {\n\t\t\tif (valueNode.length > state.maxMergeSeqLength) throwError(state, \"merge sequence length exceeded maxMergeSeqLength (\" + state.maxMergeSeqLength + \")\");\n\t\t\tconst seen = /* @__PURE__ */ new Set();\n\t\t\tfor (let index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n\t\t\t\tconst src = valueNode[index];\n\t\t\t\tif (seen.has(src)) continue;\n\t\t\t\tseen.add(src);\n\t\t\t\tmergeMappings(state, _result, src, overridableKeys);\n\t\t\t}\n\t\t} else mergeMappings(state, _result, valueNode, overridableKeys);\n\t\telse {\n\t\t\tif (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) {\n\t\t\t\tstate.line = startLine || state.line;\n\t\t\t\tstate.lineStart = startLineStart || state.lineStart;\n\t\t\t\tstate.position = startPos || state.position;\n\t\t\t\tthrowError(state, \"duplicated mapping key\");\n\t\t\t}\n\t\t\tsetProperty(_result, keyNode, valueNode);\n\t\t\tdelete overridableKeys[keyNode];\n\t\t}\n\t\treturn _result;\n\t}\n\tfunction readLineBreak(state) {\n\t\tconst ch = state.input.charCodeAt(state.position);\n\t\tif (ch === 10) state.position++;\n\t\telse if (ch === 13) {\n\t\t\tstate.position++;\n\t\t\tif (state.input.charCodeAt(state.position) === 10) state.position++;\n\t\t} else throwError(state, \"a line break is expected\");\n\t\tstate.line += 1;\n\t\tstate.lineStart = state.position;\n\t\tstate.firstTabInLine = -1;\n\t}\n\tfunction skipSeparationSpace(state, allowComments, checkIndent) {\n\t\tlet lineBreaks = 0;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\twhile (ch !== 0) {\n\t\t\twhile (isWhiteSpace(ch)) {\n\t\t\t\tif (ch === 9 && state.firstTabInLine === -1) state.firstTabInLine = state.position;\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t}\n\t\t\tif (allowComments && ch === 35) do\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\twhile (ch !== 10 && ch !== 13 && ch !== 0);\n\t\t\tif (isEol(ch)) {\n\t\t\t\treadLineBreak(state);\n\t\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\t\tlineBreaks++;\n\t\t\t\tstate.lineIndent = 0;\n\t\t\t\twhile (ch === 32) {\n\t\t\t\t\tstate.lineIndent++;\n\t\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t\t}\n\t\t\t} else break;\n\t\t}\n\t\tif (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) throwWarning(state, \"deficient indentation\");\n\t\treturn lineBreaks;\n\t}\n\tfunction testDocumentSeparator(state) {\n\t\tlet _position = state.position;\n\t\tlet ch = state.input.charCodeAt(_position);\n\t\tif ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) {\n\t\t\t_position += 3;\n\t\t\tch = state.input.charCodeAt(_position);\n\t\t\tif (ch === 0 || isWsOrEol(ch)) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tfunction writeFoldedLines(state, count) {\n\t\tif (count === 1) state.result += \" \";\n\t\telse if (count > 1) state.result += common.repeat(\"\\n\", count - 1);\n\t}\n\tfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n\t\tlet captureStart;\n\t\tlet captureEnd;\n\t\tlet hasPendingContent;\n\t\tlet _line;\n\t\tlet _lineStart;\n\t\tlet _lineIndent;\n\t\tconst _kind = state.kind;\n\t\tconst _result = state.result;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (isWsOrEol(ch) || isFlowIndicator(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) return false;\n\t\tif (ch === 63 || ch === 45) {\n\t\t\tconst following = state.input.charCodeAt(state.position + 1);\n\t\t\tif (isWsOrEol(following) || withinFlowCollection && isFlowIndicator(following)) return false;\n\t\t}\n\t\tstate.kind = \"scalar\";\n\t\tstate.result = \"\";\n\t\tcaptureStart = captureEnd = state.position;\n\t\thasPendingContent = false;\n\t\twhile (ch !== 0) {\n\t\t\tif (ch === 58) {\n\t\t\t\tconst following = state.input.charCodeAt(state.position + 1);\n\t\t\t\tif (isWsOrEol(following) || withinFlowCollection && isFlowIndicator(following)) break;\n\t\t\t} else if (ch === 35) {\n\t\t\t\tif (isWsOrEol(state.input.charCodeAt(state.position - 1))) break;\n\t\t\t} else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && isFlowIndicator(ch)) break;\n\t\t\telse if (isEol(ch)) {\n\t\t\t\t_line = state.line;\n\t\t\t\t_lineStart = state.lineStart;\n\t\t\t\t_lineIndent = state.lineIndent;\n\t\t\t\tskipSeparationSpace(state, false, -1);\n\t\t\t\tif (state.lineIndent >= nodeIndent) {\n\t\t\t\t\thasPendingContent = true;\n\t\t\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tstate.position = captureEnd;\n\t\t\t\t\tstate.line = _line;\n\t\t\t\t\tstate.lineStart = _lineStart;\n\t\t\t\t\tstate.lineIndent = _lineIndent;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (hasPendingContent) {\n\t\t\t\tcaptureSegment(state, captureStart, captureEnd, false);\n\t\t\t\twriteFoldedLines(state, state.line - _line);\n\t\t\t\tcaptureStart = captureEnd = state.position;\n\t\t\t\thasPendingContent = false;\n\t\t\t}\n\t\t\tif (!isWhiteSpace(ch)) captureEnd = state.position + 1;\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t}\n\t\tcaptureSegment(state, captureStart, captureEnd, false);\n\t\tif (state.result) return true;\n\t\tstate.kind = _kind;\n\t\tstate.result = _result;\n\t\treturn false;\n\t}\n\tfunction readSingleQuotedScalar(state, nodeIndent) {\n\t\tlet captureStart;\n\t\tlet captureEnd;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch !== 39) return false;\n\t\tstate.kind = \"scalar\";\n\t\tstate.result = \"\";\n\t\tstate.position++;\n\t\tcaptureStart = captureEnd = state.position;\n\t\twhile ((ch = state.input.charCodeAt(state.position)) !== 0) if (ch === 39) {\n\t\t\tcaptureSegment(state, captureStart, state.position, true);\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\tif (ch === 39) {\n\t\t\t\tcaptureStart = state.position;\n\t\t\t\tstate.position++;\n\t\t\t\tcaptureEnd = state.position;\n\t\t\t} else return true;\n\t\t} else if (isEol(ch)) {\n\t\t\tcaptureSegment(state, captureStart, captureEnd, true);\n\t\t\twriteFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n\t\t\tcaptureStart = captureEnd = state.position;\n\t\t} else if (state.position === state.lineStart && testDocumentSeparator(state)) throwError(state, \"unexpected end of the document within a single quoted scalar\");\n\t\telse {\n\t\t\tstate.position++;\n\t\t\tif (!isWhiteSpace(ch)) captureEnd = state.position;\n\t\t}\n\t\tthrowError(state, \"unexpected end of the stream within a single quoted scalar\");\n\t}\n\tfunction readDoubleQuotedScalar(state, nodeIndent) {\n\t\tlet captureStart;\n\t\tlet captureEnd;\n\t\tlet tmp;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch !== 34) return false;\n\t\tstate.kind = \"scalar\";\n\t\tstate.result = \"\";\n\t\tstate.position++;\n\t\tcaptureStart = captureEnd = state.position;\n\t\twhile ((ch = state.input.charCodeAt(state.position)) !== 0) if (ch === 34) {\n\t\t\tcaptureSegment(state, captureStart, state.position, true);\n\t\t\tstate.position++;\n\t\t\treturn true;\n\t\t} else if (ch === 92) {\n\t\t\tcaptureSegment(state, captureStart, state.position, true);\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\tif (isEol(ch)) skipSeparationSpace(state, false, nodeIndent);\n\t\t\telse if (ch < 256 && simpleEscapeCheck[ch]) {\n\t\t\t\tstate.result += simpleEscapeMap[ch];\n\t\t\t\tstate.position++;\n\t\t\t} else if ((tmp = escapedHexLen(ch)) > 0) {\n\t\t\t\tlet hexLength = tmp;\n\t\t\t\tlet hexResult = 0;\n\t\t\t\tfor (; hexLength > 0; hexLength--) {\n\t\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t\t\tif ((tmp = fromHexCode(ch)) >= 0) hexResult = (hexResult << 4) + tmp;\n\t\t\t\t\telse throwError(state, \"expected hexadecimal character\");\n\t\t\t\t}\n\t\t\t\tstate.result += charFromCodepoint(hexResult);\n\t\t\t\tstate.position++;\n\t\t\t} else throwError(state, \"unknown escape sequence\");\n\t\t\tcaptureStart = captureEnd = state.position;\n\t\t} else if (isEol(ch)) {\n\t\t\tcaptureSegment(state, captureStart, captureEnd, true);\n\t\t\twriteFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n\t\t\tcaptureStart = captureEnd = state.position;\n\t\t} else if (state.position === state.lineStart && testDocumentSeparator(state)) throwError(state, \"unexpected end of the document within a double quoted scalar\");\n\t\telse {\n\t\t\tstate.position++;\n\t\t\tif (!isWhiteSpace(ch)) captureEnd = state.position;\n\t\t}\n\t\tthrowError(state, \"unexpected end of the stream within a double quoted scalar\");\n\t}\n\tfunction readFlowCollection(state, nodeIndent) {\n\t\tlet readNext = true;\n\t\tlet _line;\n\t\tlet _lineStart;\n\t\tlet _pos;\n\t\tconst _tag = state.tag;\n\t\tlet _result;\n\t\tconst _anchor = state.anchor;\n\t\tlet terminator;\n\t\tlet isPair;\n\t\tlet isExplicitPair;\n\t\tlet isMapping;\n\t\tconst overridableKeys = Object.create(null);\n\t\tlet keyNode;\n\t\tlet keyTag;\n\t\tlet valueNode;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch === 91) {\n\t\t\tterminator = 93;\n\t\t\tisMapping = false;\n\t\t\t_result = [];\n\t\t} else if (ch === 123) {\n\t\t\tterminator = 125;\n\t\t\tisMapping = true;\n\t\t\t_result = {};\n\t\t} else return false;\n\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, _result);\n\t\tch = state.input.charCodeAt(++state.position);\n\t\twhile (ch !== 0) {\n\t\t\tskipSeparationSpace(state, true, nodeIndent);\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\tif (ch === terminator) {\n\t\t\t\tstate.position++;\n\t\t\t\tstate.tag = _tag;\n\t\t\t\tstate.anchor = _anchor;\n\t\t\t\tstate.kind = isMapping ? \"mapping\" : \"sequence\";\n\t\t\t\tstate.result = _result;\n\t\t\t\treturn true;\n\t\t\t} else if (!readNext) throwError(state, \"missed comma between flow collection entries\");\n\t\t\telse if (ch === 44) throwError(state, \"expected the node content, but found ','\");\n\t\t\tkeyTag = keyNode = valueNode = null;\n\t\t\tisPair = isExplicitPair = false;\n\t\t\tif (ch === 63) {\n\t\t\t\tif (isWsOrEol(state.input.charCodeAt(state.position + 1))) {\n\t\t\t\t\tisPair = isExplicitPair = true;\n\t\t\t\t\tstate.position++;\n\t\t\t\t\tskipSeparationSpace(state, true, nodeIndent);\n\t\t\t\t}\n\t\t\t}\n\t\t\t_line = state.line;\n\t\t\t_lineStart = state.lineStart;\n\t\t\t_pos = state.position;\n\t\t\tcomposeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n\t\t\tkeyTag = state.tag;\n\t\t\tkeyNode = state.result;\n\t\t\tskipSeparationSpace(state, true, nodeIndent);\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\tif ((isExplicitPair || state.line === _line) && ch === 58) {\n\t\t\t\tisPair = true;\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t\tskipSeparationSpace(state, true, nodeIndent);\n\t\t\t\tcomposeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n\t\t\t\tvalueNode = state.result;\n\t\t\t}\n\t\t\tif (isMapping) storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n\t\t\telse if (isPair) _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n\t\t\telse _result.push(keyNode);\n\t\t\tskipSeparationSpace(state, true, nodeIndent);\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\tif (ch === 44) {\n\t\t\t\treadNext = true;\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t} else readNext = false;\n\t\t}\n\t\tthrowError(state, \"unexpected end of the stream within a flow collection\");\n\t}\n\tfunction readBlockScalar(state, nodeIndent) {\n\t\tlet folding;\n\t\tlet chomping = CHOMPING_CLIP;\n\t\tlet didReadContent = false;\n\t\tlet detectedIndent = false;\n\t\tlet textIndent = nodeIndent;\n\t\tlet emptyLines = 0;\n\t\tlet atMoreIndented = false;\n\t\tlet tmp;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch === 124) folding = false;\n\t\telse if (ch === 62) folding = true;\n\t\telse return false;\n\t\tstate.kind = \"scalar\";\n\t\tstate.result = \"\";\n\t\twhile (ch !== 0) {\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\tif (ch === 43 || ch === 45) if (CHOMPING_CLIP === chomping) chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP;\n\t\t\telse throwError(state, \"repeat of a chomping mode identifier\");\n\t\t\telse if ((tmp = fromDecimalCode(ch)) >= 0) if (tmp === 0) throwError(state, \"bad explicit indentation width of a block scalar; it cannot be less than one\");\n\t\t\telse if (!detectedIndent) {\n\t\t\t\ttextIndent = nodeIndent + tmp - 1;\n\t\t\t\tdetectedIndent = true;\n\t\t\t} else throwError(state, \"repeat of an indentation width identifier\");\n\t\t\telse break;\n\t\t}\n\t\tif (isWhiteSpace(ch)) {\n\t\t\tdo\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\twhile (isWhiteSpace(ch));\n\t\t\tif (ch === 35) do\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\twhile (!isEol(ch) && ch !== 0);\n\t\t}\n\t\twhile (ch !== 0) {\n\t\t\treadLineBreak(state);\n\t\t\tstate.lineIndent = 0;\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\twhile ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) {\n\t\t\t\tstate.lineIndent++;\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t}\n\t\t\tif (!detectedIndent && state.lineIndent > textIndent) textIndent = state.lineIndent;\n\t\t\tif (isEol(ch)) {\n\t\t\t\temptyLines++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!detectedIndent && textIndent === 0) throwError(state, \"missing indentation for block scalar\");\n\t\t\tif (state.lineIndent < textIndent) {\n\t\t\t\tif (chomping === CHOMPING_KEEP) state.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n\t\t\t\telse if (chomping === CHOMPING_CLIP) {\n\t\t\t\t\tif (didReadContent) state.result += \"\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (folding) if (isWhiteSpace(ch)) {\n\t\t\t\tatMoreIndented = true;\n\t\t\t\tstate.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n\t\t\t} else if (atMoreIndented) {\n\t\t\t\tatMoreIndented = false;\n\t\t\t\tstate.result += common.repeat(\"\\n\", emptyLines + 1);\n\t\t\t} else if (emptyLines === 0) {\n\t\t\t\tif (didReadContent) state.result += \" \";\n\t\t\t} else state.result += common.repeat(\"\\n\", emptyLines);\n\t\t\telse state.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n\t\t\tdidReadContent = true;\n\t\t\tdetectedIndent = true;\n\t\t\temptyLines = 0;\n\t\t\tconst captureStart = state.position;\n\t\t\twhile (!isEol(ch) && ch !== 0) ch = state.input.charCodeAt(++state.position);\n\t\t\tcaptureSegment(state, captureStart, state.position, false);\n\t\t}\n\t\treturn true;\n\t}\n\tfunction readBlockSequence(state, nodeIndent) {\n\t\tconst _tag = state.tag;\n\t\tconst _anchor = state.anchor;\n\t\tconst _result = [];\n\t\tlet detected = false;\n\t\tif (state.firstTabInLine !== -1) return false;\n\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, _result);\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\twhile (ch !== 0) {\n\t\t\tif (state.firstTabInLine !== -1) {\n\t\t\t\tstate.position = state.firstTabInLine;\n\t\t\t\tthrowError(state, \"tab characters must not be used in indentation\");\n\t\t\t}\n\t\t\tif (ch !== 45) break;\n\t\t\tif (!isWsOrEol(state.input.charCodeAt(state.position + 1))) break;\n\t\t\tdetected = true;\n\t\t\tstate.position++;\n\t\t\tif (skipSeparationSpace(state, true, -1)) {\n\t\t\t\tif (state.lineIndent <= nodeIndent) {\n\t\t\t\t\t_result.push(null);\n\t\t\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst _line = state.line;\n\t\t\tcomposeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n\t\t\t_result.push(state.result);\n\t\t\tskipSeparationSpace(state, true, -1);\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\tif ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) throwError(state, \"bad indentation of a sequence entry\");\n\t\t\telse if (state.lineIndent < nodeIndent) break;\n\t\t}\n\t\tif (detected) {\n\t\t\tstate.tag = _tag;\n\t\t\tstate.anchor = _anchor;\n\t\t\tstate.kind = \"sequence\";\n\t\t\tstate.result = _result;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tfunction readBlockMapping(state, nodeIndent, flowIndent) {\n\t\tlet allowCompact;\n\t\tlet _keyLine;\n\t\tlet _keyLineStart;\n\t\tlet _keyPos;\n\t\tconst _tag = state.tag;\n\t\tconst _anchor = state.anchor;\n\t\tconst _result = {};\n\t\tconst overridableKeys = Object.create(null);\n\t\tlet keyTag = null;\n\t\tlet keyNode = null;\n\t\tlet valueNode = null;\n\t\tlet atExplicitKey = false;\n\t\tlet detected = false;\n\t\tif (state.firstTabInLine !== -1) return false;\n\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, _result);\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\twhile (ch !== 0) {\n\t\t\tif (!atExplicitKey && state.firstTabInLine !== -1) {\n\t\t\t\tstate.position = state.firstTabInLine;\n\t\t\t\tthrowError(state, \"tab characters must not be used in indentation\");\n\t\t\t}\n\t\t\tconst following = state.input.charCodeAt(state.position + 1);\n\t\t\tconst _line = state.line;\n\t\t\tif ((ch === 63 || ch === 58) && isWsOrEol(following)) {\n\t\t\t\tif (ch === 63) {\n\t\t\t\t\tif (atExplicitKey) {\n\t\t\t\t\t\tstoreMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n\t\t\t\t\t\tkeyTag = keyNode = valueNode = null;\n\t\t\t\t\t}\n\t\t\t\t\tdetected = true;\n\t\t\t\t\tatExplicitKey = true;\n\t\t\t\t\tallowCompact = true;\n\t\t\t\t} else if (atExplicitKey) {\n\t\t\t\t\tatExplicitKey = false;\n\t\t\t\t\tallowCompact = true;\n\t\t\t\t} else throwError(state, \"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\");\n\t\t\t\tstate.position += 1;\n\t\t\t\tch = following;\n\t\t\t} else {\n\t\t\t\t_keyLine = state.line;\n\t\t\t\t_keyLineStart = state.lineStart;\n\t\t\t\t_keyPos = state.position;\n\t\t\t\tif (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) break;\n\t\t\t\tif (state.line === _line) {\n\t\t\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\t\t\twhile (isWhiteSpace(ch)) ch = state.input.charCodeAt(++state.position);\n\t\t\t\t\tif (ch === 58) {\n\t\t\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t\t\t\tif (!isWsOrEol(ch)) throwError(state, \"a whitespace character is expected after the key-value separator within a block mapping\");\n\t\t\t\t\t\tif (atExplicitKey) {\n\t\t\t\t\t\t\tstoreMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n\t\t\t\t\t\t\tkeyTag = keyNode = valueNode = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdetected = true;\n\t\t\t\t\t\tatExplicitKey = false;\n\t\t\t\t\t\tallowCompact = false;\n\t\t\t\t\t\tkeyTag = state.tag;\n\t\t\t\t\t\tkeyNode = state.result;\n\t\t\t\t\t} else if (detected) throwError(state, \"can not read an implicit mapping pair; a colon is missed\");\n\t\t\t\t\telse {\n\t\t\t\t\t\tstate.tag = _tag;\n\t\t\t\t\t\tstate.anchor = _anchor;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t} else if (detected) throwError(state, \"can not read a block mapping entry; a multiline key may not be an implicit key\");\n\t\t\t\telse {\n\t\t\t\t\tstate.tag = _tag;\n\t\t\t\t\tstate.anchor = _anchor;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (state.line === _line || state.lineIndent > nodeIndent) {\n\t\t\t\tif (atExplicitKey) {\n\t\t\t\t\t_keyLine = state.line;\n\t\t\t\t\t_keyLineStart = state.lineStart;\n\t\t\t\t\t_keyPos = state.position;\n\t\t\t\t}\n\t\t\t\tif (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) if (atExplicitKey) keyNode = state.result;\n\t\t\t\telse valueNode = state.result;\n\t\t\t\tif (!atExplicitKey) {\n\t\t\t\t\tstoreMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n\t\t\t\t\tkeyTag = keyNode = valueNode = null;\n\t\t\t\t}\n\t\t\t\tskipSeparationSpace(state, true, -1);\n\t\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\t}\n\t\t\tif ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) throwError(state, \"bad indentation of a mapping entry\");\n\t\t\telse if (state.lineIndent < nodeIndent) break;\n\t\t}\n\t\tif (atExplicitKey) storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n\t\tif (detected) {\n\t\t\tstate.tag = _tag;\n\t\t\tstate.anchor = _anchor;\n\t\t\tstate.kind = \"mapping\";\n\t\t\tstate.result = _result;\n\t\t}\n\t\treturn detected;\n\t}\n\tfunction readTagProperty(state) {\n\t\tlet isVerbatim = false;\n\t\tlet isNamed = false;\n\t\tlet tagHandle;\n\t\tlet tagName;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch !== 33) return false;\n\t\tif (state.tag !== null) throwError(state, \"duplication of a tag property\");\n\t\tch = state.input.charCodeAt(++state.position);\n\t\tif (ch === 60) {\n\t\t\tisVerbatim = true;\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t} else if (ch === 33) {\n\t\t\tisNamed = true;\n\t\t\ttagHandle = \"!!\";\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t} else tagHandle = \"!\";\n\t\tlet _position = state.position;\n\t\tif (isVerbatim) {\n\t\t\tdo\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\twhile (ch !== 0 && ch !== 62);\n\t\t\tif (state.position < state.length) {\n\t\t\t\ttagName = state.input.slice(_position, state.position);\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t} else throwError(state, \"unexpected end of the stream within a verbatim tag\");\n\t\t} else {\n\t\t\twhile (ch !== 0 && !isWsOrEol(ch)) {\n\t\t\t\tif (ch === 33) if (!isNamed) {\n\t\t\t\t\ttagHandle = state.input.slice(_position - 1, state.position + 1);\n\t\t\t\t\tif (!PATTERN_TAG_HANDLE.test(tagHandle)) throwError(state, \"named tag handle cannot contain such characters\");\n\t\t\t\t\tisNamed = true;\n\t\t\t\t\t_position = state.position + 1;\n\t\t\t\t} else throwError(state, \"tag suffix cannot contain exclamation marks\");\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t}\n\t\t\ttagName = state.input.slice(_position, state.position);\n\t\t\tif (PATTERN_FLOW_INDICATORS.test(tagName)) throwError(state, \"tag suffix cannot contain flow indicator characters\");\n\t\t}\n\t\tif (tagName && !PATTERN_TAG_URI.test(tagName)) throwError(state, \"tag name cannot contain such characters: \" + tagName);\n\t\ttry {\n\t\t\ttagName = decodeURIComponent(tagName);\n\t\t} catch (err) {\n\t\t\tthrowError(state, \"tag name is malformed: \" + tagName);\n\t\t}\n\t\tif (isVerbatim) state.tag = tagName;\n\t\telse if (_hasOwnProperty.call(state.tagMap, tagHandle)) state.tag = state.tagMap[tagHandle] + tagName;\n\t\telse if (tagHandle === \"!\") state.tag = \"!\" + tagName;\n\t\telse if (tagHandle === \"!!\") state.tag = \"tag:yaml.org,2002:\" + tagName;\n\t\telse throwError(state, \"undeclared tag handle \\\"\" + tagHandle + \"\\\"\");\n\t\treturn true;\n\t}\n\tfunction readAnchorProperty(state) {\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch !== 38) return false;\n\t\tif (state.anchor !== null) throwError(state, \"duplication of an anchor property\");\n\t\tch = state.input.charCodeAt(++state.position);\n\t\tconst _position = state.position;\n\t\twhile (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) ch = state.input.charCodeAt(++state.position);\n\t\tif (state.position === _position) throwError(state, \"name of an anchor node must contain at least one character\");\n\t\tstate.anchor = state.input.slice(_position, state.position);\n\t\treturn true;\n\t}\n\tfunction readAlias(state) {\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch !== 42) return false;\n\t\tch = state.input.charCodeAt(++state.position);\n\t\tconst _position = state.position;\n\t\twhile (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) ch = state.input.charCodeAt(++state.position);\n\t\tif (state.position === _position) throwError(state, \"name of an alias node must contain at least one character\");\n\t\tconst alias = state.input.slice(_position, state.position);\n\t\tif (!_hasOwnProperty.call(state.anchorMap, alias)) throwError(state, \"unidentified alias \\\"\" + alias + \"\\\"\");\n\t\tstate.result = state.anchorMap[alias];\n\t\tskipSeparationSpace(state, true, -1);\n\t\treturn true;\n\t}\n\tfunction tryReadBlockMappingFromProperty(state, propertyStart, nodeIndent, flowIndent) {\n\t\tconst fallbackState = snapshotState(state);\n\t\tbeginAnchorTransaction(state);\n\t\trestoreState(state, propertyStart);\n\t\tstate.tag = null;\n\t\tstate.anchor = null;\n\t\tstate.kind = null;\n\t\tstate.result = null;\n\t\tif (readBlockMapping(state, nodeIndent, flowIndent) && state.kind === \"mapping\") {\n\t\t\tcommitAnchorTransaction(state);\n\t\t\treturn true;\n\t\t}\n\t\trollbackAnchorTransaction(state);\n\t\trestoreState(state, fallbackState);\n\t\treturn false;\n\t}\n\tfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n\t\tlet allowBlockScalars;\n\t\tlet allowBlockCollections;\n\t\tlet indentStatus = 1;\n\t\tlet atNewLine = false;\n\t\tlet hasContent = false;\n\t\tlet propertyStart = null;\n\t\tlet type;\n\t\tlet flowIndent;\n\t\tlet blockIndent;\n\t\tif (state.depth >= state.maxDepth) throwError(state, \"nesting exceeded maxDepth (\" + state.maxDepth + \")\");\n\t\tstate.depth += 1;\n\t\tif (state.listener !== null) state.listener(\"open\", state);\n\t\tstate.tag = null;\n\t\tstate.anchor = null;\n\t\tstate.kind = null;\n\t\tstate.result = null;\n\t\tconst allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;\n\t\tif (allowToSeek) {\n\t\t\tif (skipSeparationSpace(state, true, -1)) {\n\t\t\t\tatNewLine = true;\n\t\t\t\tif (state.lineIndent > parentIndent) indentStatus = 1;\n\t\t\t\telse if (state.lineIndent === parentIndent) indentStatus = 0;\n\t\t\t\telse if (state.lineIndent < parentIndent) indentStatus = -1;\n\t\t\t}\n\t\t}\n\t\tif (indentStatus === 1) while (true) {\n\t\t\tconst ch = state.input.charCodeAt(state.position);\n\t\t\tconst propertyState = snapshotState(state);\n\t\t\tif (atNewLine && (ch === 33 && state.tag !== null || ch === 38 && state.anchor !== null)) break;\n\t\t\tif (!readTagProperty(state) && !readAnchorProperty(state)) break;\n\t\t\tif (propertyStart === null) propertyStart = propertyState;\n\t\t\tif (skipSeparationSpace(state, true, -1)) {\n\t\t\t\tatNewLine = true;\n\t\t\t\tallowBlockCollections = allowBlockStyles;\n\t\t\t\tif (state.lineIndent > parentIndent) indentStatus = 1;\n\t\t\t\telse if (state.lineIndent === parentIndent) indentStatus = 0;\n\t\t\t\telse if (state.lineIndent < parentIndent) indentStatus = -1;\n\t\t\t} else allowBlockCollections = false;\n\t\t}\n\t\tif (allowBlockCollections) allowBlockCollections = atNewLine || allowCompact;\n\t\tif (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n\t\t\tif (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) flowIndent = parentIndent;\n\t\t\telse flowIndent = parentIndent + 1;\n\t\t\tblockIndent = state.position - state.lineStart;\n\t\t\tif (indentStatus === 1) if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) hasContent = true;\n\t\t\telse {\n\t\t\t\tconst ch = state.input.charCodeAt(state.position);\n\t\t\t\tif (propertyStart !== null && allowBlockStyles && !allowBlockCollections && ch !== 124 && ch !== 62 && tryReadBlockMappingFromProperty(state, propertyStart, propertyStart.position - propertyStart.lineStart, flowIndent)) hasContent = true;\n\t\t\t\telse if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) hasContent = true;\n\t\t\t\telse if (readAlias(state)) {\n\t\t\t\t\thasContent = true;\n\t\t\t\t\tif (state.tag !== null || state.anchor !== null) throwError(state, \"alias node should not have any properties\");\n\t\t\t\t} else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n\t\t\t\t\thasContent = true;\n\t\t\t\t\tif (state.tag === null) state.tag = \"?\";\n\t\t\t\t}\n\t\t\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, state.result);\n\t\t\t}\n\t\t\telse if (indentStatus === 0) hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n\t\t}\n\t\tif (state.tag === null) {\n\t\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, state.result);\n\t\t} else if (state.tag === \"?\") {\n\t\t\tif (state.result !== null && state.kind !== \"scalar\") throwError(state, \"unacceptable node kind for !<?> tag; it should be \\\"scalar\\\", not \\\"\" + state.kind + \"\\\"\");\n\t\t\tfor (let typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n\t\t\t\ttype = state.implicitTypes[typeIndex];\n\t\t\t\tif (type.resolve(state.result)) {\n\t\t\t\t\tstate.result = type.construct(state.result);\n\t\t\t\t\tstate.tag = type.tag;\n\t\t\t\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, state.result);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (state.tag !== \"!\") {\n\t\t\tif (_hasOwnProperty.call(state.typeMap[state.kind || \"fallback\"], state.tag)) type = state.typeMap[state.kind || \"fallback\"][state.tag];\n\t\t\telse {\n\t\t\t\ttype = null;\n\t\t\t\tconst typeList = state.typeMap.multi[state.kind || \"fallback\"];\n\t\t\t\tfor (let typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n\t\t\t\t\ttype = typeList[typeIndex];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!type) throwError(state, \"unknown tag !<\" + state.tag + \">\");\n\t\t\tif (state.result !== null && type.kind !== state.kind) throwError(state, \"unacceptable node kind for !<\" + state.tag + \"> tag; it should be \\\"\" + type.kind + \"\\\", not \\\"\" + state.kind + \"\\\"\");\n\t\t\tif (!type.resolve(state.result, state.tag)) throwError(state, \"cannot resolve a node with !<\" + state.tag + \"> explicit tag\");\n\t\t\telse {\n\t\t\t\tstate.result = type.construct(state.result, state.tag);\n\t\t\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, state.result);\n\t\t\t}\n\t\t}\n\t\tif (state.listener !== null) state.listener(\"close\", state);\n\t\tstate.depth -= 1;\n\t\treturn state.tag !== null || state.anchor !== null || hasContent;\n\t}\n\tfunction readDocument(state) {\n\t\tconst documentStart = state.position;\n\t\tlet hasDirectives = false;\n\t\tlet ch;\n\t\tstate.version = null;\n\t\tstate.checkLineBreaks = state.legacy;\n\t\tstate.tagMap = Object.create(null);\n\t\tstate.anchorMap = Object.create(null);\n\t\twhile ((ch = state.input.charCodeAt(state.position)) !== 0) {\n\t\t\tskipSeparationSpace(state, true, -1);\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\tif (state.lineIndent > 0 || ch !== 37) break;\n\t\t\thasDirectives = true;\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\tlet _position = state.position;\n\t\t\twhile (ch !== 0 && !isWsOrEol(ch)) ch = state.input.charCodeAt(++state.position);\n\t\t\tconst directiveName = state.input.slice(_position, state.position);\n\t\t\tconst directiveArgs = [];\n\t\t\tif (directiveName.length < 1) throwError(state, \"directive name must not be less than one character in length\");\n\t\t\twhile (ch !== 0) {\n\t\t\t\twhile (isWhiteSpace(ch)) ch = state.input.charCodeAt(++state.position);\n\t\t\t\tif (ch === 35) {\n\t\t\t\t\tdo\n\t\t\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t\t\twhile (ch !== 0 && !isEol(ch));\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (isEol(ch)) break;\n\t\t\t\t_position = state.position;\n\t\t\t\twhile (ch !== 0 && !isWsOrEol(ch)) ch = state.input.charCodeAt(++state.position);\n\t\t\t\tdirectiveArgs.push(state.input.slice(_position, state.position));\n\t\t\t}\n\t\t\tif (ch !== 0) readLineBreak(state);\n\t\t\tif (_hasOwnProperty.call(directiveHandlers, directiveName)) directiveHandlers[directiveName](state, directiveName, directiveArgs);\n\t\t\telse throwWarning(state, \"unknown document directive \\\"\" + directiveName + \"\\\"\");\n\t\t}\n\t\tskipSeparationSpace(state, true, -1);\n\t\tif (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) {\n\t\t\tstate.position += 3;\n\t\t\tskipSeparationSpace(state, true, -1);\n\t\t} else if (hasDirectives) throwError(state, \"directives end mark is expected\");\n\t\tcomposeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n\t\tskipSeparationSpace(state, true, -1);\n\t\tif (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) throwWarning(state, \"non-ASCII line breaks are interpreted as content\");\n\t\tstate.documents.push(state.result);\n\t\tif (state.position === state.lineStart && testDocumentSeparator(state)) {\n\t\t\tif (state.input.charCodeAt(state.position) === 46) {\n\t\t\t\tstate.position += 3;\n\t\t\t\tskipSeparationSpace(state, true, -1);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (state.position < state.length - 1) throwError(state, \"end of the stream or a document separator is expected\");\n\t}\n\tfunction loadDocuments(input, options) {\n\t\tinput = String(input);\n\t\toptions = options || {};\n\t\tif (input.length !== 0) {\n\t\t\tif (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) input += \"\\n\";\n\t\t\tif (input.charCodeAt(0) === 65279) input = input.slice(1);\n\t\t}\n\t\tconst state = new State(input, options);\n\t\tconst nullpos = input.indexOf(\"\\0\");\n\t\tif (nullpos !== -1) {\n\t\t\tstate.position = nullpos;\n\t\t\tthrowError(state, \"null byte is not allowed in input\");\n\t\t}\n\t\tstate.input += \"\\0\";\n\t\twhile (state.input.charCodeAt(state.position) === 32) {\n\t\t\tstate.lineIndent += 1;\n\t\t\tstate.position += 1;\n\t\t}\n\t\twhile (state.position < state.length - 1) readDocument(state);\n\t\treturn state.documents;\n\t}\n\tfunction loadAll(input, iterator, options) {\n\t\tif (iterator !== null && typeof iterator === \"object\" && typeof options === \"undefined\") {\n\t\t\toptions = iterator;\n\t\t\titerator = null;\n\t\t}\n\t\tconst documents = loadDocuments(input, options);\n\t\tif (typeof iterator !== \"function\") return documents;\n\t\tfor (let index = 0, length = documents.length; index < length; index += 1) iterator(documents[index]);\n\t}\n\tfunction load(input, options) {\n\t\tconst documents = loadDocuments(input, options);\n\t\tif (documents.length === 0) return;\n\t\telse if (documents.length === 1) return documents[0];\n\t\tthrow new YAMLException(\"expected a single document in the stream, but found more\");\n\t}\n\tmodule.exports.loadAll = loadAll;\n\tmodule.exports.load = load;\n}));\n//#endregion\n//#region lib/dumper.js\nvar require_dumper = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar common = require_common();\n\tvar YAMLException = require_exception();\n\tvar DEFAULT_SCHEMA = require_default();\n\tvar _toString = Object.prototype.toString;\n\tvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar CHAR_BOM = 65279;\n\tvar CHAR_TAB = 9;\n\tvar CHAR_LINE_FEED = 10;\n\tvar CHAR_CARRIAGE_RETURN = 13;\n\tvar CHAR_SPACE = 32;\n\tvar CHAR_EXCLAMATION = 33;\n\tvar CHAR_DOUBLE_QUOTE = 34;\n\tvar CHAR_SHARP = 35;\n\tvar CHAR_PERCENT = 37;\n\tvar CHAR_AMPERSAND = 38;\n\tvar CHAR_SINGLE_QUOTE = 39;\n\tvar CHAR_ASTERISK = 42;\n\tvar CHAR_COMMA = 44;\n\tvar CHAR_MINUS = 45;\n\tvar CHAR_COLON = 58;\n\tvar CHAR_EQUALS = 61;\n\tvar CHAR_GREATER_THAN = 62;\n\tvar CHAR_QUESTION = 63;\n\tvar CHAR_COMMERCIAL_AT = 64;\n\tvar CHAR_LEFT_SQUARE_BRACKET = 91;\n\tvar CHAR_RIGHT_SQUARE_BRACKET = 93;\n\tvar CHAR_GRAVE_ACCENT = 96;\n\tvar CHAR_LEFT_CURLY_BRACKET = 123;\n\tvar CHAR_VERTICAL_LINE = 124;\n\tvar CHAR_RIGHT_CURLY_BRACKET = 125;\n\tvar ESCAPE_SEQUENCES = {};\n\tESCAPE_SEQUENCES[0] = \"\\\\0\";\n\tESCAPE_SEQUENCES[7] = \"\\\\a\";\n\tESCAPE_SEQUENCES[8] = \"\\\\b\";\n\tESCAPE_SEQUENCES[9] = \"\\\\t\";\n\tESCAPE_SEQUENCES[10] = \"\\\\n\";\n\tESCAPE_SEQUENCES[11] = \"\\\\v\";\n\tESCAPE_SEQUENCES[12] = \"\\\\f\";\n\tESCAPE_SEQUENCES[13] = \"\\\\r\";\n\tESCAPE_SEQUENCES[27] = \"\\\\e\";\n\tESCAPE_SEQUENCES[34] = \"\\\\\\\"\";\n\tESCAPE_SEQUENCES[92] = \"\\\\\\\\\";\n\tESCAPE_SEQUENCES[133] = \"\\\\N\";\n\tESCAPE_SEQUENCES[160] = \"\\\\_\";\n\tESCAPE_SEQUENCES[8232] = \"\\\\L\";\n\tESCAPE_SEQUENCES[8233] = \"\\\\P\";\n\tvar DEPRECATED_BOOLEANS_SYNTAX = [\n\t\t\"y\",\n\t\t\"Y\",\n\t\t\"yes\",\n\t\t\"Yes\",\n\t\t\"YES\",\n\t\t\"on\",\n\t\t\"On\",\n\t\t\"ON\",\n\t\t\"n\",\n\t\t\"N\",\n\t\t\"no\",\n\t\t\"No\",\n\t\t\"NO\",\n\t\t\"off\",\n\t\t\"Off\",\n\t\t\"OFF\"\n\t];\n\tvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\tfunction compileStyleMap(schema, map) {\n\t\tif (map === null) return {};\n\t\tconst result = {};\n\t\tconst keys = Object.keys(map);\n\t\tfor (let index = 0, length = keys.length; index < length; index += 1) {\n\t\t\tlet tag = keys[index];\n\t\t\tlet style = String(map[tag]);\n\t\t\tif (tag.slice(0, 2) === \"!!\") tag = \"tag:yaml.org,2002:\" + tag.slice(2);\n\t\t\tconst type = schema.compiledTypeMap[\"fallback\"][tag];\n\t\t\tif (type && _hasOwnProperty.call(type.styleAliases, style)) style = type.styleAliases[style];\n\t\t\tresult[tag] = style;\n\t\t}\n\t\treturn result;\n\t}\n\tfunction encodeHex(character) {\n\t\tlet handle;\n\t\tlet length;\n\t\tconst string = character.toString(16).toUpperCase();\n\t\tif (character <= 255) {\n\t\t\thandle = \"x\";\n\t\t\tlength = 2;\n\t\t} else if (character <= 65535) {\n\t\t\thandle = \"u\";\n\t\t\tlength = 4;\n\t\t} else if (character <= 4294967295) {\n\t\t\thandle = \"U\";\n\t\t\tlength = 8;\n\t\t} else throw new YAMLException(\"code point within a string may not be greater than 0xFFFFFFFF\");\n\t\treturn \"\\\\\" + handle + common.repeat(\"0\", length - string.length) + string;\n\t}\n\tvar QUOTING_TYPE_SINGLE = 1;\n\tvar QUOTING_TYPE_DOUBLE = 2;\n\tfunction State(options) {\n\t\tthis.schema = options[\"schema\"] || DEFAULT_SCHEMA;\n\t\tthis.indent = Math.max(1, options[\"indent\"] || 2);\n\t\tthis.noArrayIndent = options[\"noArrayIndent\"] || false;\n\t\tthis.skipInvalid = options[\"skipInvalid\"] || false;\n\t\tthis.flowLevel = common.isNothing(options[\"flowLevel\"]) ? -1 : options[\"flowLevel\"];\n\t\tthis.styleMap = compileStyleMap(this.schema, options[\"styles\"] || null);\n\t\tthis.sortKeys = options[\"sortKeys\"] || false;\n\t\tthis.lineWidth = options[\"lineWidth\"] || 80;\n\t\tthis.noRefs = options[\"noRefs\"] || false;\n\t\tthis.noCompatMode = options[\"noCompatMode\"] || false;\n\t\tthis.condenseFlow = options[\"condenseFlow\"] || false;\n\t\tthis.quotingType = options[\"quotingType\"] === \"\\\"\" ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n\t\tthis.forceQuotes = options[\"forceQuotes\"] || false;\n\t\tthis.replacer = typeof options[\"replacer\"] === \"function\" ? options[\"replacer\"] : null;\n\t\tthis.implicitTypes = this.schema.compiledImplicit;\n\t\tthis.explicitTypes = this.schema.compiledExplicit;\n\t\tthis.tag = null;\n\t\tthis.result = \"\";\n\t\tthis.duplicates = [];\n\t\tthis.usedDuplicates = null;\n\t}\n\tfunction indentString(string, spaces) {\n\t\tconst ind = common.repeat(\" \", spaces);\n\t\tlet position = 0;\n\t\tlet result = \"\";\n\t\tconst length = string.length;\n\t\twhile (position < length) {\n\t\t\tlet line;\n\t\t\tconst next = string.indexOf(\"\\n\", position);\n\t\t\tif (next === -1) {\n\t\t\t\tline = string.slice(position);\n\t\t\t\tposition = length;\n\t\t\t} else {\n\t\t\t\tline = string.slice(position, next + 1);\n\t\t\t\tposition = next + 1;\n\t\t\t}\n\t\t\tif (line.length && line !== \"\\n\") result += ind;\n\t\t\tresult += line;\n\t\t}\n\t\treturn result;\n\t}\n\tfunction generateNextLine(state, level) {\n\t\treturn \"\\n\" + common.repeat(\" \", state.indent * level);\n\t}\n\tfunction testImplicitResolving(state, str) {\n\t\tfor (let index = 0, length = state.implicitTypes.length; index < length; index += 1) if (state.implicitTypes[index].resolve(str)) return true;\n\t\treturn false;\n\t}\n\tfunction isWhitespace(c) {\n\t\treturn c === CHAR_SPACE || c === CHAR_TAB;\n\t}\n\tfunction isPrintable(c) {\n\t\treturn c >= 32 && c <= 126 || c >= 161 && c <= 55295 && c !== 8232 && c !== 8233 || c >= 57344 && c <= 65533 && c !== CHAR_BOM || c >= 65536 && c <= 1114111;\n\t}\n\tfunction isNsCharOrWhitespace(c) {\n\t\treturn isPrintable(c) && c !== CHAR_BOM && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED;\n\t}\n\tfunction isPlainSafe(c, prev, inblock) {\n\t\tconst cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n\t\tconst cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n\t\treturn (inblock ? cIsNsCharOrWhitespace : cIsNsCharOrWhitespace && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET) && c !== CHAR_SHARP && !(prev === CHAR_COLON && !cIsNsChar) || isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP || prev === CHAR_COLON && cIsNsChar;\n\t}\n\tfunction isPlainSafeFirst(c) {\n\t\treturn isPrintable(c) && c !== CHAR_BOM && !isWhitespace(c) && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT;\n\t}\n\tfunction isPlainSafeLast(c) {\n\t\treturn !isWhitespace(c) && c !== CHAR_COLON;\n\t}\n\tfunction codePointAt(string, pos) {\n\t\tconst first = string.charCodeAt(pos);\n\t\tlet second;\n\t\tif (first >= 55296 && first <= 56319 && pos + 1 < string.length) {\n\t\t\tsecond = string.charCodeAt(pos + 1);\n\t\t\tif (second >= 56320 && second <= 57343) return (first - 55296) * 1024 + second - 56320 + 65536;\n\t\t}\n\t\treturn first;\n\t}\n\tfunction needIndentIndicator(string) {\n\t\treturn /^\\n* /.test(string);\n\t}\n\tvar STYLE_PLAIN = 1;\n\tvar STYLE_SINGLE = 2;\n\tvar STYLE_LITERAL = 3;\n\tvar STYLE_FOLDED = 4;\n\tvar STYLE_DOUBLE = 5;\n\tfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) {\n\t\tlet i;\n\t\tlet char = 0;\n\t\tlet prevChar = null;\n\t\tlet hasLineBreak = false;\n\t\tlet hasFoldableLine = false;\n\t\tconst shouldTrackWidth = lineWidth !== -1;\n\t\tlet previousLineBreak = -1;\n\t\tlet plain = isPlainSafeFirst(codePointAt(string, 0)) && isPlainSafeLast(codePointAt(string, string.length - 1));\n\t\tif (singleLineOnly || forceQuotes) for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n\t\t\tchar = codePointAt(string, i);\n\t\t\tif (!isPrintable(char)) return STYLE_DOUBLE;\n\t\t\tplain = plain && isPlainSafe(char, prevChar, inblock);\n\t\t\tprevChar = char;\n\t\t}\n\t\telse {\n\t\t\tfor (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n\t\t\t\tchar = codePointAt(string, i);\n\t\t\t\tif (char === CHAR_LINE_FEED) {\n\t\t\t\t\thasLineBreak = true;\n\t\t\t\t\tif (shouldTrackWidth) {\n\t\t\t\t\t\thasFoldableLine = hasFoldableLine || i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== \" \";\n\t\t\t\t\t\tpreviousLineBreak = i;\n\t\t\t\t\t}\n\t\t\t\t} else if (!isPrintable(char)) return STYLE_DOUBLE;\n\t\t\t\tplain = plain && isPlainSafe(char, prevChar, inblock);\n\t\t\t\tprevChar = char;\n\t\t\t}\n\t\t\thasFoldableLine = hasFoldableLine || shouldTrackWidth && i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== \" \";\n\t\t}\n\t\tif (!hasLineBreak && !hasFoldableLine) {\n\t\t\tif (plain && !forceQuotes && !testAmbiguousType(string)) return STYLE_PLAIN;\n\t\t\treturn quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n\t\t}\n\t\tif (indentPerLevel > 9 && needIndentIndicator(string)) return STYLE_DOUBLE;\n\t\tif (!forceQuotes) return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n\t\treturn quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n\t}\n\tfunction writeScalar(state, string, level, iskey, inblock) {\n\t\tstate.dump = function() {\n\t\t\tif (string.length === 0) return state.quotingType === QUOTING_TYPE_DOUBLE ? \"\\\"\\\"\" : \"''\";\n\t\t\tif (!state.noCompatMode) {\n\t\t\t\tif (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) return state.quotingType === QUOTING_TYPE_DOUBLE ? \"\\\"\" + string + \"\\\"\" : \"'\" + string + \"'\";\n\t\t\t}\n\t\t\tconst indent = state.indent * Math.max(1, level);\n\t\t\tconst lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\t\t\tconst singleLineOnly = iskey || state.flowLevel > -1 && level >= state.flowLevel;\n\t\t\tfunction testAmbiguity(string) {\n\t\t\t\treturn testImplicitResolving(state, string);\n\t\t\t}\n\t\t\tswitch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\t\t\t\tcase STYLE_PLAIN: return string;\n\t\t\t\tcase STYLE_SINGLE: return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n\t\t\t\tcase STYLE_LITERAL: return \"|\" + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent));\n\t\t\t\tcase STYLE_FOLDED: return \">\" + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n\t\t\t\tcase STYLE_DOUBLE: return \"\\\"\" + escapeString(string, lineWidth) + \"\\\"\";\n\t\t\t\tdefault: throw new YAMLException(\"impossible error: invalid scalar style\");\n\t\t\t}\n\t\t}();\n\t}\n\tfunction blockHeader(string, indentPerLevel) {\n\t\tconst indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : \"\";\n\t\tconst clip = string[string.length - 1] === \"\\n\";\n\t\treturn indentIndicator + (clip && (string[string.length - 2] === \"\\n\" || string === \"\\n\") ? \"+\" : clip ? \"\" : \"-\") + \"\\n\";\n\t}\n\tfunction dropEndingNewline(string) {\n\t\treturn string[string.length - 1] === \"\\n\" ? string.slice(0, -1) : string;\n\t}\n\tfunction foldString(string, width) {\n\t\tconst lineRe = /(\\n+)([^\\n]*)/g;\n\t\tlet result = function() {\n\t\t\tlet nextLF = string.indexOf(\"\\n\");\n\t\t\tnextLF = nextLF !== -1 ? nextLF : string.length;\n\t\t\tlineRe.lastIndex = nextLF;\n\t\t\treturn foldLine(string.slice(0, nextLF), width);\n\t\t}();\n\t\tlet prevMoreIndented = string[0] === \"\\n\" || string[0] === \" \";\n\t\tlet moreIndented;\n\t\tlet match;\n\t\twhile (match = lineRe.exec(string)) {\n\t\t\tconst prefix = match[1];\n\t\t\tconst line = match[2];\n\t\t\tmoreIndented = line[0] === \" \";\n\t\t\tresult += prefix + (!prevMoreIndented && !moreIndented && line !== \"\" ? \"\\n\" : \"\") + foldLine(line, width);\n\t\t\tprevMoreIndented = moreIndented;\n\t\t}\n\t\treturn result;\n\t}\n\tfunction foldLine(line, width) {\n\t\tif (line === \"\" || line[0] === \" \") return line;\n\t\tconst breakRe = / [^ ]/g;\n\t\tlet match;\n\t\tlet start = 0;\n\t\tlet end;\n\t\tlet curr = 0;\n\t\tlet next = 0;\n\t\tlet result = \"\";\n\t\twhile (match = breakRe.exec(line)) {\n\t\t\tnext = match.index;\n\t\t\tif (next - start > width) {\n\t\t\t\tend = curr > start ? curr : next;\n\t\t\t\tresult += \"\\n\" + line.slice(start, end);\n\t\t\t\tstart = end + 1;\n\t\t\t}\n\t\t\tcurr = next;\n\t\t}\n\t\tresult += \"\\n\";\n\t\tif (line.length - start > width && curr > start) result += line.slice(start, curr) + \"\\n\" + line.slice(curr + 1);\n\t\telse result += line.slice(start);\n\t\treturn result.slice(1);\n\t}\n\tfunction escapeString(string) {\n\t\tlet result = \"\";\n\t\tlet char = 0;\n\t\tfor (let i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n\t\t\tchar = codePointAt(string, i);\n\t\t\tconst escapeSeq = ESCAPE_SEQUENCES[char];\n\t\t\tif (!escapeSeq && isPrintable(char)) {\n\t\t\t\tresult += string[i];\n\t\t\t\tif (char >= 65536) result += string[i + 1];\n\t\t\t} else result += escapeSeq || encodeHex(char);\n\t\t}\n\t\treturn result;\n\t}\n\tfunction writeFlowSequence(state, level, object) {\n\t\tlet _result = \"\";\n\t\tconst _tag = state.tag;\n\t\tfor (let index = 0, length = object.length; index < length; index += 1) {\n\t\t\tlet value = object[index];\n\t\t\tif (state.replacer) value = state.replacer.call(object, String(index), value);\n\t\t\tif (writeNode(state, level, value, false, false) || typeof value === \"undefined\" && writeNode(state, level, null, false, false)) {\n\t\t\t\tif (_result !== \"\") _result += \",\" + (!state.condenseFlow ? \" \" : \"\");\n\t\t\t\t_result += state.dump;\n\t\t\t}\n\t\t}\n\t\tstate.tag = _tag;\n\t\tstate.dump = \"[\" + _result + \"]\";\n\t}\n\tfunction writeBlockSequence(state, level, object, compact) {\n\t\tlet _result = \"\";\n\t\tconst _tag = state.tag;\n\t\tfor (let index = 0, length = object.length; index < length; index += 1) {\n\t\t\tlet value = object[index];\n\t\t\tif (state.replacer) value = state.replacer.call(object, String(index), value);\n\t\t\tif (writeNode(state, level + 1, value, true, true, false, true) || typeof value === \"undefined\" && writeNode(state, level + 1, null, true, true, false, true)) {\n\t\t\t\tif (!compact || _result !== \"\") _result += generateNextLine(state, level);\n\t\t\t\tif (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) _result += \"-\";\n\t\t\t\telse _result += \"- \";\n\t\t\t\t_result += state.dump;\n\t\t\t}\n\t\t}\n\t\tstate.tag = _tag;\n\t\tstate.dump = _result || \"[]\";\n\t}\n\tfunction writeFlowMapping(state, level, object) {\n\t\tlet _result = \"\";\n\t\tconst _tag = state.tag;\n\t\tconst objectKeyList = Object.keys(object);\n\t\tfor (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n\t\t\tlet pairBuffer = \"\";\n\t\t\tif (_result !== \"\") pairBuffer += \", \";\n\t\t\tif (state.condenseFlow) pairBuffer += \"\\\"\";\n\t\t\tconst objectKey = objectKeyList[index];\n\t\t\tlet objectValue = object[objectKey];\n\t\t\tif (state.replacer) objectValue = state.replacer.call(object, objectKey, objectValue);\n\t\t\tif (!writeNode(state, level, objectKey, false, false)) continue;\n\t\t\tif (state.dump.length > 1024) pairBuffer += \"? \";\n\t\t\tpairBuffer += state.dump + (state.condenseFlow ? \"\\\"\" : \"\") + \":\" + (state.condenseFlow ? \"\" : \" \");\n\t\t\tif (!writeNode(state, level, objectValue, false, false)) continue;\n\t\t\tpairBuffer += state.dump;\n\t\t\t_result += pairBuffer;\n\t\t}\n\t\tstate.tag = _tag;\n\t\tstate.dump = \"{\" + _result + \"}\";\n\t}\n\tfunction writeBlockMapping(state, level, object, compact) {\n\t\tlet _result = \"\";\n\t\tconst _tag = state.tag;\n\t\tconst objectKeyList = Object.keys(object);\n\t\tif (state.sortKeys === true) objectKeyList.sort();\n\t\telse if (typeof state.sortKeys === \"function\") objectKeyList.sort(state.sortKeys);\n\t\telse if (state.sortKeys) throw new YAMLException(\"sortKeys must be a boolean or a function\");\n\t\tfor (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n\t\t\tlet pairBuffer = \"\";\n\t\t\tif (!compact || _result !== \"\") pairBuffer += generateNextLine(state, level);\n\t\t\tconst objectKey = objectKeyList[index];\n\t\t\tlet objectValue = object[objectKey];\n\t\t\tif (state.replacer) objectValue = state.replacer.call(object, objectKey, objectValue);\n\t\t\tif (!writeNode(state, level + 1, objectKey, true, true, true)) continue;\n\t\t\tconst explicitPair = state.tag !== null && state.tag !== \"?\" || state.dump && state.dump.length > 1024;\n\t\t\tif (explicitPair) if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) pairBuffer += \"?\";\n\t\t\telse pairBuffer += \"? \";\n\t\t\tpairBuffer += state.dump;\n\t\t\tif (explicitPair) pairBuffer += generateNextLine(state, level);\n\t\t\tif (!writeNode(state, level + 1, objectValue, true, explicitPair)) continue;\n\t\t\tif (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) pairBuffer += \":\";\n\t\t\telse pairBuffer += \": \";\n\t\t\tpairBuffer += state.dump;\n\t\t\t_result += pairBuffer;\n\t\t}\n\t\tstate.tag = _tag;\n\t\tstate.dump = _result || \"{}\";\n\t}\n\tfunction detectType(state, object, explicit) {\n\t\tconst typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\t\tfor (let index = 0, length = typeList.length; index < length; index += 1) {\n\t\t\tconst type = typeList[index];\n\t\t\tif ((type.instanceOf || type.predicate) && (!type.instanceOf || typeof object === \"object\" && object instanceof type.instanceOf) && (!type.predicate || type.predicate(object))) {\n\t\t\t\tif (explicit) if (type.multi && type.representName) state.tag = type.representName(object);\n\t\t\t\telse state.tag = type.tag;\n\t\t\t\telse state.tag = \"?\";\n\t\t\t\tif (type.represent) {\n\t\t\t\t\tconst style = state.styleMap[type.tag] || type.defaultStyle;\n\t\t\t\t\tlet _result;\n\t\t\t\t\tif (_toString.call(type.represent) === \"[object Function]\") _result = type.represent(object, style);\n\t\t\t\t\telse if (_hasOwnProperty.call(type.represent, style)) _result = type.represent[style](object, style);\n\t\t\t\t\telse throw new YAMLException(\"!<\" + type.tag + \"> tag resolver accepts not \\\"\" + style + \"\\\" style\");\n\t\t\t\t\tstate.dump = _result;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n\t\tstate.tag = null;\n\t\tstate.dump = object;\n\t\tif (!detectType(state, object, false)) detectType(state, object, true);\n\t\tconst type = _toString.call(state.dump);\n\t\tconst inblock = block;\n\t\tif (block) block = state.flowLevel < 0 || state.flowLevel > level;\n\t\tconst objectOrArray = type === \"[object Object]\" || type === \"[object Array]\";\n\t\tlet duplicateIndex;\n\t\tlet duplicate;\n\t\tif (objectOrArray) {\n\t\t\tduplicateIndex = state.duplicates.indexOf(object);\n\t\t\tduplicate = duplicateIndex !== -1;\n\t\t}\n\t\tif (state.tag !== null && state.tag !== \"?\" || duplicate || state.indent !== 2 && level > 0) compact = false;\n\t\tif (duplicate && state.usedDuplicates[duplicateIndex]) state.dump = \"*ref_\" + duplicateIndex;\n\t\telse {\n\t\t\tif (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) state.usedDuplicates[duplicateIndex] = true;\n\t\t\tif (type === \"[object Object]\") if (block && Object.keys(state.dump).length !== 0) {\n\t\t\t\twriteBlockMapping(state, level, state.dump, compact);\n\t\t\t\tif (duplicate) state.dump = \"&ref_\" + duplicateIndex + state.dump;\n\t\t\t} else {\n\t\t\t\twriteFlowMapping(state, level, state.dump);\n\t\t\t\tif (duplicate) state.dump = \"&ref_\" + duplicateIndex + \" \" + state.dump;\n\t\t\t}\n\t\t\telse if (type === \"[object Array]\") if (block && state.dump.length !== 0) {\n\t\t\t\tif (state.noArrayIndent && !isblockseq && level > 0) writeBlockSequence(state, level - 1, state.dump, compact);\n\t\t\t\telse writeBlockSequence(state, level, state.dump, compact);\n\t\t\t\tif (duplicate) state.dump = \"&ref_\" + duplicateIndex + state.dump;\n\t\t\t} else {\n\t\t\t\twriteFlowSequence(state, level, state.dump);\n\t\t\t\tif (duplicate) state.dump = \"&ref_\" + duplicateIndex + \" \" + state.dump;\n\t\t\t}\n\t\t\telse if (type === \"[object String]\") {\n\t\t\t\tif (state.tag !== \"?\") writeScalar(state, state.dump, level, iskey, inblock);\n\t\t\t} else if (type === \"[object Undefined]\") return false;\n\t\t\telse {\n\t\t\t\tif (state.skipInvalid) return false;\n\t\t\t\tthrow new YAMLException(\"unacceptable kind of an object to dump \" + type);\n\t\t\t}\n\t\t\tif (state.tag !== null && state.tag !== \"?\") {\n\t\t\t\tlet tagStr = encodeURI(state.tag[0] === \"!\" ? state.tag.slice(1) : state.tag).replace(/!/g, \"%21\");\n\t\t\t\tif (state.tag[0] === \"!\") tagStr = \"!\" + tagStr;\n\t\t\t\telse if (tagStr.slice(0, 18) === \"tag:yaml.org,2002:\") tagStr = \"!!\" + tagStr.slice(18);\n\t\t\t\telse tagStr = \"!<\" + tagStr + \">\";\n\t\t\t\tstate.dump = tagStr + \" \" + state.dump;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tfunction getDuplicateReferences(object, state) {\n\t\tconst objects = [];\n\t\tconst duplicatesIndexes = [];\n\t\tinspectNode(object, objects, duplicatesIndexes);\n\t\tconst length = duplicatesIndexes.length;\n\t\tfor (let index = 0; index < length; index += 1) state.duplicates.push(objects[duplicatesIndexes[index]]);\n\t\tstate.usedDuplicates = new Array(length);\n\t}\n\tfunction inspectNode(object, objects, duplicatesIndexes) {\n\t\tif (object !== null && typeof object === \"object\") {\n\t\t\tconst index = objects.indexOf(object);\n\t\t\tif (index !== -1) {\n\t\t\t\tif (duplicatesIndexes.indexOf(index) === -1) duplicatesIndexes.push(index);\n\t\t\t} else {\n\t\t\t\tobjects.push(object);\n\t\t\t\tif (Array.isArray(object)) for (let i = 0, length = object.length; i < length; i += 1) inspectNode(object[i], objects, duplicatesIndexes);\n\t\t\t\telse {\n\t\t\t\t\tconst objectKeyList = Object.keys(object);\n\t\t\t\t\tfor (let i = 0, length = objectKeyList.length; i < length; i += 1) inspectNode(object[objectKeyList[i]], objects, duplicatesIndexes);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction dump(input, options) {\n\t\toptions = options || {};\n\t\tconst state = new State(options);\n\t\tif (!state.noRefs) getDuplicateReferences(input, state);\n\t\tlet value = input;\n\t\tif (state.replacer) value = state.replacer.call({ \"\": value }, \"\", value);\n\t\tif (writeNode(state, 0, value, true, true)) return state.dump + \"\\n\";\n\t\treturn \"\";\n\t}\n\tmodule.exports.dump = dump;\n}));\n//#endregion\n//#region lib/index_vite_proxy.tmp.mjs\nvar import_js_yaml = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar loader = require_loader();\n\tvar dumper = require_dumper();\n\tfunction renamed(from, to) {\n\t\treturn function() {\n\t\t\tthrow new Error(\"Function yaml.\" + from + \" is removed in js-yaml 4. Use yaml.\" + to + \" instead, which is now safe by default.\");\n\t\t};\n\t}\n\tmodule.exports.Type = require_type();\n\tmodule.exports.Schema = require_schema();\n\tmodule.exports.FAILSAFE_SCHEMA = require_failsafe();\n\tmodule.exports.JSON_SCHEMA = require_json();\n\tmodule.exports.CORE_SCHEMA = require_core();\n\tmodule.exports.DEFAULT_SCHEMA = require_default();\n\tmodule.exports.load = loader.load;\n\tmodule.exports.loadAll = loader.loadAll;\n\tmodule.exports.dump = dumper.dump;\n\tmodule.exports.YAMLException = require_exception();\n\tmodule.exports.types = {\n\t\tbinary: require_binary(),\n\t\tfloat: require_float(),\n\t\tmap: require_map(),\n\t\tnull: require_null(),\n\t\tpairs: require_pairs(),\n\t\tset: require_set(),\n\t\ttimestamp: require_timestamp(),\n\t\tbool: require_bool(),\n\t\tint: require_int(),\n\t\tmerge: require_merge(),\n\t\tomap: require_omap(),\n\t\tseq: require_seq(),\n\t\tstr: require_str()\n\t};\n\tmodule.exports.safeLoad = renamed(\"safeLoad\", \"load\");\n\tmodule.exports.safeLoadAll = renamed(\"safeLoadAll\", \"loadAll\");\n\tmodule.exports.safeDump = renamed(\"safeDump\", \"dump\");\n})))(), 1);\nvar { Type, Schema, FAILSAFE_SCHEMA, JSON_SCHEMA, CORE_SCHEMA, DEFAULT_SCHEMA, load, loadAll, dump, YAMLException, types, safeLoad, safeLoadAll, safeDump } = import_js_yaml.default;\nvar index_vite_proxy_tmp_default = import_js_yaml.default;\n//#endregion\nexport { CORE_SCHEMA, DEFAULT_SCHEMA, FAILSAFE_SCHEMA, JSON_SCHEMA, Schema, Type, YAMLException, index_vite_proxy_tmp_default as default, dump, load, loadAll, safeDump, safeLoad, safeLoadAll, types };\n\n//# sourceMappingURL=js-yaml.mjs.map",
|
|
37
|
-
"/**\n * Shared logger for packages that don't have access to CliContext.\n * Writes through the OutputSink abstraction so output is correctly\n * routed in CLI, MCP, and browser contexts.\n *\n * By default, all messages are written to stderr via the sink.\n * When a log file is configured (via --log-file), messages are\n * appended to that file instead.\n *\n * Routing (default / stderr mode):\n * all levels → writeErr (stderr), respecting the level threshold\n *\n * Routing (file mode, enabled via --log-file):\n * all levels → file, respecting the level threshold\n */\n\nimport { getFileSystem } from \"@uipath/filesystem\";\n\nimport { catchError } from \"./catch-error\";\nimport { getOutputSink, setGlobalSink } from \"./output-context\";\nimport type { OutputSink } from \"./output-sink\";\nimport { singleton } from \"./singleton\";\n\nconst logFilePathSlot = singleton<string>(\"logFilePath\");\n\nexport function setGlobalLogFilePath(path: string): void {\n logFilePathSlot.set(path);\n}\n\nexport function getGlobalLogFilePath(): string {\n return logFilePathSlot.get(\"\") as string;\n}\n\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n}\n\nexport const DEFAULT_LOG_LEVEL = LogLevel.ERROR;\n\nexport interface LoggerConfig {\n /** Log level threshold. Messages below this level are suppressed. */\n level?: LogLevel;\n /** Output sink to set as the process-wide default. */\n sink?: OutputSink;\n /** Set to false to disable file logging. Defaults to false. */\n fileLogging?: boolean;\n /** Path to a log file. When set, enables file logging to this path. */\n logFile?: string;\n}\n\nclass SimpleLogger {\n /** Brand marker for cross-bundle duck-type detection. */\n readonly __brand = \"SimpleLogger\" as const;\n\n private level: LogLevel;\n private logFilePath: string;\n private fileLoggingEnabled: boolean;\n // Chains for async file I/O. `flushFile()` awaits both so tests can\n // read the log file synchronously after logging.\n private pendingWrites: Promise<void> = Promise.resolve();\n private pendingInit: Promise<void> = Promise.resolve();\n\n constructor() {\n this.level = SimpleLogger.resolveLevel();\n this.logFilePath = \"\";\n this.fileLoggingEnabled = false;\n }\n\n static getInstance(): SimpleLogger {\n return loggerSingleton.getOrInit(\n () => new SimpleLogger(),\n (v) =>\n \"__brand\" in v &&\n (v as Record<string, unknown>).__brand === \"SimpleLogger\",\n );\n }\n\n /** Reset the singleton — intended for testing only. */\n static resetInstance(): void {\n loggerSingleton.clear();\n }\n\n private static readonly isNode =\n typeof process !== \"undefined\" && !!process.versions?.node;\n\n private static resolveLevel(): LogLevel {\n if (SimpleLogger.isNode) {\n const explicitLevel = SimpleLogger.parseLevel(\n process.env?.UIP_LOG_LEVEL ?? \"\",\n );\n if (explicitLevel !== undefined) return explicitLevel;\n\n // Only accept DEBUG=true or DEBUG=1; arbitrary npm debug patterns\n // (e.g. DEBUG=express:*) should not activate uip debug output.\n const debugVal = process.env?.DEBUG;\n if (debugVal === \"true\" || debugVal === \"1\") {\n return LogLevel.DEBUG;\n }\n\n return DEFAULT_LOG_LEVEL;\n }\n\n // Browser: check localStorage.debug (same convention as the `debug` npm package).\n // Accessing localStorage in Node ≥ 25 emits a noisy warning, so this is browser-only.\n const [localStorageError, hasDebug] = catchError(\n () =>\n typeof localStorage !== \"undefined\" &&\n !!localStorage.getItem(\"debug\"),\n );\n // localStorage may throw in private browsing or sandboxed iframes\n if (!localStorageError && hasDebug) {\n return LogLevel.DEBUG;\n }\n\n return DEFAULT_LOG_LEVEL;\n }\n\n private static parseLevel(value: string): LogLevel | undefined {\n switch (value.toLowerCase()) {\n case \"debug\":\n return LogLevel.DEBUG;\n case \"info\":\n return LogLevel.INFO;\n case \"warn\":\n return LogLevel.WARN;\n case \"error\":\n return LogLevel.ERROR;\n default:\n return undefined;\n }\n }\n\n private format(message: string, args: unknown[]): string {\n if (args.length === 0) return `${message}\\n`;\n return `${message} ${args.map(String).join(\" \")}\\n`;\n }\n\n /** Check if file logging is active (local or cross-bundle via globalThis). */\n private isFileLoggingActive(): boolean {\n return this.fileLoggingEnabled || !!getGlobalLogFilePath();\n }\n\n private writeToFile(formatted: string): void {\n const path = this.logFilePath || getGlobalLogFilePath();\n if (!path) return;\n const timestamp = new Date().toISOString();\n // Wait for setLogFile's truncate before any appendFile, or\n // LightningFS (no O_APPEND) can race and drop early writes.\n // Errors ignored to match the prior appendFileSync behaviour.\n this.pendingWrites = Promise.all([\n this.pendingWrites,\n this.pendingInit,\n ]).then(() =>\n getFileSystem()\n .appendFile(path, `${timestamp} ${formatted}`)\n .catch(() => {}),\n );\n }\n\n debug(message: string, ...args: unknown[]): void {\n if (this.level > LogLevel.DEBUG) return;\n const formatted = this.format(`[DEBUG] ${message}`, args);\n if (this.isFileLoggingActive()) {\n this.writeToFile(formatted);\n } else {\n getOutputSink().writeErr(formatted);\n }\n }\n\n info(message: string, ...args: unknown[]): void {\n if (this.level > LogLevel.INFO) return;\n const formatted = this.format(message, args);\n if (this.isFileLoggingActive()) {\n this.writeToFile(formatted);\n } else {\n getOutputSink().writeErr(formatted);\n }\n }\n\n warn(message: string, ...args: unknown[]): void {\n if (this.level > LogLevel.WARN) return;\n const formatted = this.format(`[WARN] ${message}`, args);\n if (this.isFileLoggingActive()) {\n this.writeToFile(formatted);\n } else {\n getOutputSink().writeErr(formatted);\n }\n }\n\n error(message: string, ...args: unknown[]): void {\n if (this.level > LogLevel.ERROR) return;\n const formatted = this.format(`[ERROR] ${message}`, args);\n if (this.isFileLoggingActive()) {\n this.writeToFile(formatted);\n } else {\n getOutputSink().writeErr(formatted);\n }\n }\n\n /**\n * Get the current log level.\n */\n getLevel(): LogLevel {\n return this.level;\n }\n\n /**\n * Set the log level dynamically\n */\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n /**\n * Enable or disable file logging.\n */\n setFileLogging(enabled: boolean): void {\n this.fileLoggingEnabled = enabled;\n if (!enabled) {\n this.logFilePath = \"\";\n setGlobalLogFilePath(\"\");\n }\n }\n\n /**\n * Set a log file path and enable file logging.\n */\n setLogFile(path: string): void {\n this.logFilePath = path;\n setGlobalLogFilePath(path);\n if (!path) return;\n // Optimistically enable; flipped back if the async init fails.\n this.fileLoggingEnabled = true;\n const fs = getFileSystem();\n this.pendingInit = (async () => {\n const [error] = await catchError(\n (async () => {\n await fs.mkdir(fs.path.dirname(path));\n await fs.writeFile(path, \"\");\n })(),\n );\n if (error) this.fileLoggingEnabled = false;\n })();\n }\n\n /** Drain pending async file I/O. For tests that read synchronously after logging. */\n async flushFile(): Promise<void> {\n await this.pendingInit;\n await this.pendingWrites;\n }\n\n /**\n * Get the path to the current log file (empty string if no --log-file was provided).\n */\n getLogFilePath(): string {\n return this.logFilePath || getGlobalLogFilePath();\n }\n\n /**\n * Log handler compatible with the SDK's LogHandler type.\n * Accepts a LogMessage-shaped object and routes it through SimpleLogger.\n *\n * Usage: pass `logger.handleLog` as the `logHandler` option to\n * `createNodeSolutionPackager` or `createNodeProjectPackager`.\n */\n handleLog = (logMessage: {\n message: string;\n logLevel: string;\n source?: string;\n sourceTarget?: string;\n }): void => {\n const parts: string[] = [];\n if (logMessage.source) {\n parts.push(`[${logMessage.source}]`);\n }\n if (logMessage.sourceTarget) {\n parts.push(`[${logMessage.sourceTarget}]`);\n }\n parts.push(logMessage.message);\n const msg = parts.join(\" \");\n\n switch (logMessage.logLevel) {\n case \"Debug\":\n this.debug(msg);\n break;\n case \"Information\":\n this.info(msg);\n break;\n case \"Warning\":\n this.warn(msg);\n break;\n case \"Error\":\n this.error(msg);\n break;\n default:\n this.info(msg);\n break;\n }\n };\n}\n\nconst loggerSingleton = singleton(SimpleLogger);\n\n// Singleton instance\nexport const logger = SimpleLogger.getInstance();\n\n/** Reset the logger singleton — intended for testing only. */\nexport function resetLoggerInstance(): void {\n SimpleLogger.resetInstance();\n}\n\n/**\n * Get the path to the current log file.\n */\nexport function getLogFilePath(): string {\n return logger.getLogFilePath();\n}\n\n/**\n * Configure the logger and output sink in one call.\n *\n * @example\n * // CLI entry point\n * configureLogger({ sink: new TerminalSink() });\n *\n * // Browser entry point\n * configureLogger({ sink: new BrowserSink() });\n *\n * // MCP — errors still surface via writeErr\n * configureLogger({ level: LogLevel.ERROR, sink: new BufferSink() });\n */\nexport function configureLogger(config: LoggerConfig): void {\n if (config.level !== undefined) {\n logger.setLevel(config.level);\n }\n if (config.sink !== undefined) {\n setGlobalSink(config.sink);\n }\n if (config.fileLogging !== undefined) {\n logger.setFileLogging(config.fileLogging);\n }\n if (config.logFile !== undefined) {\n logger.setLogFile(config.logFile);\n }\n}\n",
|
|
38
|
-
"/**\n * Process-wide output format & filter context.\n *\n * Stores the current OutputFormat and JMESPath filter expression so that\n * OutputFormatter functions can apply them automatically without every\n * command having to thread these values through.\n */\n\nimport type { OutputFormat } from \"./formatter\";\nimport { singleton } from \"./singleton\";\n\nconst formatSlot = singleton<OutputFormat>(\"OutputFormat\");\nconst formatExplicitSlot = singleton<boolean>(\"OutputFormatExplicit\");\nconst filterSlot = singleton<string | undefined>(\"OutputFilter\");\n\n/**\n * Set the process-wide output format.\n * Called once at CLI startup (from extractFormatFromArgs for early use via --output)\n * and updated by the preAction hook with the Commander-resolved value.\n */\nexport function setOutputFormat(format: OutputFormat): void {\n formatSlot.set(format);\n}\n\n/**\n * Get the current output format, defaulting to \"json\" if not set.\n */\nexport function getOutputFormat(): OutputFormat {\n return formatSlot.get(\"json\") as OutputFormat;\n}\n\n/**\n * Record whether `--output` was passed explicitly. Lets command handlers\n * distinguish \"user asked for json\" from \"json by default\" without\n * re-scanning argv themselves.\n */\nexport function setOutputFormatExplicit(explicit: boolean): void {\n formatExplicitSlot.set(explicit);\n}\n\n/**\n * True when `--output` was passed explicitly on the command line.\n * Defaults to false (i.e. resolved value is the default).\n */\nexport function getOutputFormatExplicit(): boolean {\n return formatExplicitSlot.get(false) ?? false;\n}\n\n/**\n * Set the process-wide output filter expression.\n * Called once at CLI startup after parsing the global --output-filter option.\n */\nexport function setOutputFilter(filter: string | undefined): void {\n filterSlot.set(filter);\n}\n\n/**\n * Get the current output filter expression, if any.\n */\nexport function getOutputFilter(): string | undefined {\n return filterSlot.get();\n}\n",
|
|
39
|
-
"export const CommonTelemetryEvents = {\n Error: \"uip.error\",\n} as const;\n",
|
|
40
|
-
"import { execFileSync } from \"node:child_process\";\n\nimport { catchError } from \"./catch-error\";\n\n/**\n * Read a value from the Windows registry.\n * reg utility always exist.\n * Returns an empty string on non-Windows platforms or when the key/value is missing.\n */\nexport function readRegistryValue(keyPath: string, valueName: string): string {\n if (process.platform !== \"win32\") {\n return \"\";\n }\n const [error, output] = catchError(() =>\n execFileSync(\"reg\", [\"query\", keyPath, \"/v\", valueName], {\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n }),\n );\n if (error) {\n return \"\";\n }\n const match = output.match(new RegExp(`${valueName}\\\\s+REG_SZ\\\\s+(.+)`));\n return match?.[1]?.trim() ?? \"\";\n}\n",
|
|
41
|
-
"import { logger } from \"../logger.js\";\nimport { readRegistryValue } from \"../registry.js\";\nimport type { ITelemetryProvider } from \"./telemetry-provider.js\";\nimport type { TelemetryProperties } from \"./telemetry-service.js\";\n\n/**\n * Telemetry provider that enriches all events with analyticsUniqueId\n * from the Windows registry and forwards them to the shared logger.\n */\nexport class LoggerTelemetryProvider implements ITelemetryProvider {\n private readonly analyticsUniqueId: string;\n\n constructor() {\n this.analyticsUniqueId = readRegistryValue(\n \"HKCU\\\\Software\\\\UiPath\",\n \"AnalyticsUniqueId\",\n );\n }\n\n private enrich(properties?: TelemetryProperties): TelemetryProperties {\n return {\n ...properties,\n ...(this.analyticsUniqueId\n ? { analyticsUniqueId: this.analyticsUniqueId }\n : {}),\n };\n }\n\n async trackEvent(\n eventName: string,\n properties?: TelemetryProperties,\n ): Promise<void> {\n logger.debug(\n formatMessage(\"Event\", eventName, this.enrich(properties)),\n );\n }\n\n async trackException(\n error: Error,\n properties?: TelemetryProperties,\n ): Promise<void> {\n logger.error(\n formatMessage(\n \"Exception\",\n error.message,\n this.enrich({\n ...properties,\n stack: error.stack,\n }),\n ),\n );\n }\n\n async trackRequest(\n name: string,\n duration: number,\n success: boolean,\n properties?: TelemetryProperties,\n ): Promise<void> {\n logger.debug(\n formatMessage(\n \"Request\",\n name,\n this.enrich({\n ...properties,\n duration: `${duration}ms`,\n success,\n }),\n ),\n );\n }\n\n async trackDependency(\n name: string,\n type: string,\n duration: number,\n success: boolean,\n properties?: TelemetryProperties,\n ): Promise<void> {\n logger.debug(\n formatMessage(\n \"Dependency\",\n name,\n this.enrich({\n ...properties,\n type,\n duration: `${duration}ms`,\n success,\n }),\n ),\n );\n }\n}\n\nfunction formatMessage(\n category: string,\n name: string,\n properties?: TelemetryProperties,\n): string {\n let message = `[Telemetry] [${category}] ${name}`;\n\n if (properties && Object.keys(properties).length > 0) {\n const propsStr = Object.entries(properties)\n .filter(([_, value]) => value !== undefined)\n .map(([key, value]) => `${key}=${value}`)\n .join(\", \");\n\n if (propsStr) {\n message += ` | ${propsStr}`;\n }\n }\n\n return message;\n}\n",
|
|
42
|
-
"import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { IContextStorage } from \"./context-storage.js\";\n\n/**\n * Node.js implementation of context storage using AsyncLocalStorage.\n * This provides proper async context propagation in Node.js environments.\n * @template TContext - The type of context to store\n */\nexport class NodeContextStorage<TContext = unknown>\n implements IContextStorage<TContext>\n{\n private readonly storage = new AsyncLocalStorage<TContext>();\n\n run<T>(context: TContext, fn: () => T): T {\n return this.storage.run(context, fn);\n }\n\n getContext(): TContext | undefined {\n return this.storage.getStore();\n }\n}\n",
|
|
43
|
-
"import { singleton } from \"../singleton.js\";\nimport type { TelemetryProperties } from \"./telemetry-service.js\";\n\n// Base telemetry properties (custom dimensions) attached to every event.\n// Stored on a Symbol.for()-keyed globalThis slot so all bundled copies of\n// @uipath/common — the CLI host and every tool bundle — share one source of\n// truth. The CLI host populates it at startup (app version, detected agent,\n// and the authenticated user/tenant/organization); tool bundles read the same\n// slot through the shared TelemetryService.\n//\n// This lives in its own module (rather than alongside the AppInsights provider)\n// so that TelemetryService can merge these props for ANY provider without\n// importing the AppInsights-specific file — which would otherwise create a\n// circular dependency.\nconst telemetryPropsSlot = singleton<TelemetryProperties | undefined>(\n \"TelemetryDefaultProps\",\n);\n\n/**\n * Merge `properties` into the shared global base properties.\n * Existing keys are preserved unless overwritten by `properties`, so callers\n * can contribute base props incrementally (e.g. agent first, then auth context).\n */\nexport function setGlobalTelemetryProperties(\n properties: TelemetryProperties,\n): void {\n const existing = getGlobalTelemetryProperties();\n telemetryPropsSlot.set({ ...existing, ...properties });\n}\n\nexport function getGlobalTelemetryProperties():\n | TelemetryProperties\n | undefined {\n return telemetryPropsSlot.get();\n}\n",
|
|
44
|
-
"import type { IContextStorage } from \"./context-storage.js\";\nimport { getGlobalTelemetryProperties } from \"./global-telemetry-properties.js\";\nimport type { ITelemetryProvider } from \"./telemetry-provider.js\";\n\n/**\n * Properties that can be attached to telemetry events\n */\nexport interface TelemetryProperties {\n [key: string]: string | number | boolean | undefined;\n}\n\n/**\n * Telemetry correlation context for tracking parent-child relationships\n */\nexport interface TelemetryContext {\n /**\n * Operation ID - unique identifier for the entire operation tree\n */\n operationId: string;\n\n /**\n * Parent ID - identifier of the parent operation (for correlation)\n */\n parentId?: string;\n\n /**\n * Current operation ID - identifier for this specific operation\n */\n id: string;\n}\n\n/**\n * Interface for tracking telemetry events.\n *\n * @remarks\n * Telemetry context (operationId, parentId) is managed automatically using IContextStorage.\n * You don't need to pass context around - it's stored and retrieved automatically.\n *\n * Once a `trackRequest` is called, all subsequent telemetry operations (trackEvent,\n * trackException, trackDependencyOperation) within the same async execution context\n * will automatically include the operationId for correlation. This enables full\n * distributed tracing and operation correlation across the entire request tree.\n */\nexport interface ITelemetryService {\n /**\n * Sets the operation ID for telemetry correlation.\n * @param operationId - The operation ID to set, or undefined to clear it\n *\n * @remarks\n * This method allows setting a custom operation ID that will be used by trackRequest\n * if provided. If not set, trackRequest will generate a new operation ID automatically.\n */\n setOperationId(operationId: string | undefined): void;\n\n /**\n * Replaces the telemetry provider at runtime.\n * @param provider - The new telemetry provider to use\n *\n * @remarks\n * Useful for switching between providers (e.g. AppInsights vs Console) without\n * recreating the service. Default properties and operation context are preserved.\n */\n setProvider(provider: ITelemetryProvider): void;\n\n /**\n * Sets default properties that will be included in all telemetry entries.\n * @param properties - The default properties to set. Pass undefined to clear.\n *\n * @remarks\n * These properties are merged into every telemetry call (trackEvent, trackException,\n * trackRequest, trackDependencyOperation). Per-call properties take precedence\n * over default properties when there are key conflicts.\n */\n setDefaultProperties(properties?: TelemetryProperties): void;\n\n /**\n * Track a telemetry event\n * @param name - The name of the event\n * @param properties - Optional properties to attach to the event\n *\n * @remarks\n * If called within a trackRequest block, automatically includes operationId for correlation.\n */\n trackEvent(name: string, properties?: TelemetryProperties): void;\n\n /**\n * Track an exception\n * @param error - The error to track\n * @param properties - Optional properties to attach to the exception\n *\n * @remarks\n * If called within a trackRequest block, automatically includes operationId for correlation.\n */\n trackException(error: Error, properties?: TelemetryProperties): void;\n\n /**\n * Track a request operation (top-level operation in the dependency tree).\n * Use this for main entry point.\n *\n * @template T The return type of the function\n * @param name The request name (e.g., 'PackSolution')\n * @param fn The async function to execute and track\n * @param properties Base properties to include in telemetry\n * @returns A promise that resolves to the function result\n *\n * @remarks\n * Creates a new operation ID and tracks this as a request in Application Insights.\n * All nested trackDependencyOperation calls will be automatically correlated to this request.\n */\n trackRequest<T>(\n name: string,\n fn: () => Promise<T>,\n properties?: TelemetryProperties,\n ): Promise<T>;\n\n /**\n * Track a dependency operation (child operation in the dependency tree).\n * Use this for operations that are part of a larger request.\n *\n * @template T The return type of the function\n * @param name The dependency name\n * @param type The dependency type\n * @param fn The async function to execute and track\n * @param properties Base properties to include in telemetry\n * @returns A promise that resolves to the function result\n *\n * @remarks\n * Tracks this operation as a dependency in Application Insights, automatically correlated\n * to the parent request using the context from IContextStorage.\n */\n trackDependencyOperation<T>(\n name: string,\n type: string,\n fn: () => Promise<T>,\n properties?: TelemetryProperties,\n ): Promise<T>;\n}\n\n/**\n * TelemetryService implementation that manages context storage and orchestrates telemetry operations.\n * This service handles all common logic:\n * - Context creation and correlation (operationId, id, parentId)\n * - Duration measurement\n * - Error handling and success/failure tracking\n * - Context propagation via storage\n *\n * ITelemetryProvider implementations are simple adapters that receive pre-measured data.\n */\nexport class TelemetryService implements ITelemetryService {\n private operationId?: string;\n private defaultProperties?: TelemetryProperties;\n\n constructor(\n private telemetryProvider: ITelemetryProvider,\n private readonly contextStorage: IContextStorage<TelemetryContext>,\n ) {}\n\n /**\n * Sets the operation ID for telemetry correlation.\n * @param operationId - The operation ID to set, or undefined to clear it\n */\n setOperationId(operationId: string | undefined): void {\n this.operationId = operationId;\n }\n\n setProvider(provider: ITelemetryProvider): void {\n this.telemetryProvider = provider;\n }\n\n setDefaultProperties(properties?: TelemetryProperties): void {\n // Merge, don't replace — base properties are contributed by multiple\n // callers at different startup stages (e.g. the detected `agent` in\n // telemetryInit, then the authenticated user/tenant/org once auth\n // context is resolved). Replacing would let the later caller clobber\n // the earlier one. Passing `undefined` explicitly clears them, per the\n // ITelemetryService contract.\n this.defaultProperties =\n properties === undefined\n ? undefined\n : { ...this.defaultProperties, ...properties };\n }\n\n trackEvent(name: string, properties?: TelemetryProperties): void {\n const context = this.getCurrentContext();\n const enrichedProperties = this.enrichPropertiesWithContext(\n properties,\n context,\n );\n // Fire and forget - don't await to avoid blocking\n void this.telemetryProvider.trackEvent(name, enrichedProperties);\n }\n\n trackException(error: Error, properties?: TelemetryProperties): void {\n const context = this.getCurrentContext();\n const enrichedProperties = this.enrichPropertiesWithContext(\n properties,\n context,\n );\n // Fire and forget - don't await to avoid blocking\n void this.telemetryProvider.trackException(error, enrichedProperties);\n }\n\n async trackRequest<T>(\n name: string,\n fn: () => Promise<T>,\n properties?: TelemetryProperties,\n ): Promise<T> {\n const context: TelemetryContext = {\n operationId: this.operationId ?? this.generateId(),\n id: this.generateId(),\n };\n\n const startTime = performance.now();\n\n try {\n // Store context in storage and execute user function\n const result = await this.contextStorage.run(context, fn);\n const durationMs = performance.now() - startTime;\n\n // Track successful request with measured duration\n const enrichedProperties = this.enrichPropertiesWithContext(\n properties,\n context,\n );\n await this.telemetryProvider.trackRequest(\n name,\n durationMs,\n true,\n enrichedProperties,\n );\n\n return result;\n } catch (error) {\n const durationMs = performance.now() - startTime;\n const err =\n error instanceof Error ? error : new Error(String(error));\n\n // Track failed request with error details\n const enrichedProperties = this.enrichPropertiesWithContext(\n { ...properties, errorMessage: err.message },\n context,\n );\n await this.telemetryProvider.trackRequest(\n name,\n durationMs,\n false,\n enrichedProperties,\n );\n\n throw error;\n }\n }\n\n async trackDependencyOperation<T>(\n name: string,\n type: string,\n fn: () => Promise<T>,\n properties?: TelemetryProperties,\n ): Promise<T> {\n const parentContext = this.getCurrentContext();\n if (!parentContext) {\n throw new Error(\n \"trackDependencyOperation must be called within a trackRequest block.\",\n );\n }\n\n const childContext: TelemetryContext = {\n operationId: parentContext.operationId,\n parentId: parentContext.id,\n id: this.generateId(),\n };\n\n const startTime = performance.now();\n\n try {\n // Store child context in storage and execute user function\n const result = await this.contextStorage.run(childContext, fn);\n const durationMs = performance.now() - startTime;\n\n // Track successful dependency with measured duration\n const enrichedProperties = this.enrichPropertiesWithContext(\n properties,\n childContext,\n );\n await this.telemetryProvider.trackDependency(\n name,\n type,\n durationMs,\n true,\n enrichedProperties,\n );\n\n return result;\n } catch (error) {\n const durationMs = performance.now() - startTime;\n const err =\n error instanceof Error ? error : new Error(String(error));\n\n // Track failed dependency with error details\n const enrichedProperties = this.enrichPropertiesWithContext(\n { ...properties, errorMessage: err.message },\n childContext,\n );\n await this.telemetryProvider.trackDependency(\n name,\n type,\n durationMs,\n false,\n enrichedProperties,\n );\n\n throw error;\n }\n }\n\n /**\n * Gets the current telemetry context from the context storage.\n * Returns undefined if no context is available (not within a trackRequest block).\n */\n private getCurrentContext(): TelemetryContext | undefined {\n return this.contextStorage.getContext();\n }\n\n /**\n * Enriches properties with the shared base properties, this service's\n * default properties, and context information (operationId, parentId, id).\n *\n * The global base properties (app version, detected agent, authenticated\n * user/tenant/org) are merged here — at the service level — rather than\n * inside a specific provider, so EVERY event carries them regardless of\n * which provider is active (AppInsights, logger fallback, or a tool\n * bundle's early local instance). Precedence, lowest to highest: global\n * base props → per-service defaults → per-call props → correlation context.\n */\n private enrichPropertiesWithContext(\n properties?: TelemetryProperties,\n context?: TelemetryContext,\n ): TelemetryProperties {\n return {\n ...getGlobalTelemetryProperties(),\n ...this.defaultProperties,\n ...properties,\n ...context,\n };\n }\n\n /**\n * Generate a unique ID for telemetry correlation\n */\n private generateId(): string {\n return crypto.randomUUID().replaceAll(\"-\", \"\");\n }\n}\n",
|
|
45
|
-
"import { catchError } from \"../catch-error.js\";\nimport { logger } from \"../logger.js\";\nimport { singleton } from \"../singleton.js\";\nimport { getGlobalTelemetryProperties } from \"./global-telemetry-properties.js\";\nimport type { ITelemetryProvider } from \"./telemetry-provider.js\";\nimport type { TelemetryProperties } from \"./telemetry-service.js\";\n\n// Re-exported for backward compatibility — the global base-property slot now\n// lives in ./global-telemetry-properties.js so TelemetryService can merge it\n// without importing this AppInsights-specific module (avoids a cycle).\nexport {\n getGlobalTelemetryProperties,\n setGlobalTelemetryProperties,\n} from \"./global-telemetry-properties.js\";\n\n// Single shared provider instance. Uses singleton directly because\n// getOrCreateProvider() has custom async/Promise deduplication logic.\nconst providerSlot = singleton<\n | NodeAppInsightsTelemetryProvider\n | Promise<NodeAppInsightsTelemetryProvider | undefined>\n | undefined\n>(\"TelemetryProvider\");\n\nconst APPINSIGHTS_BATCH_INTERVAL_MS = 1_000;\n\n/**\n * AppInsights' trackRequest validates `url` as an absolute URL. The CLI passes\n * operation identifiers like 'ProjectPackager.Tool.Pack' (not http URLs) which\n * causes a TypeError to be thrown to stderr. Wrap in a `urn:` scheme so URL\n * parsing succeeds without changing the displayed name.\n */\nfunction toOperationUrn(name: string): string {\n if (URL.canParse(name)) return name;\n // urn:uip:<name> — RFC 8141 conformant URN\n const sanitized = encodeURIComponent(name).replace(/%2F/g, \"/\");\n return `urn:uip:${sanitized}`;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\";\n}\n\nfunction formatFlushJsonError(error: unknown): string {\n if (error instanceof Error) return error.message;\n if (typeof error === \"string\") return error;\n if (!isRecord(error)) return String(error);\n\n const parts: string[] = [];\n if (error.index !== undefined) {\n parts.push(`index ${String(error.index)}`);\n }\n if (error.statusCode !== undefined) {\n parts.push(`status ${String(error.statusCode)}`);\n }\n if (error.message !== undefined) {\n parts.push(String(error.message));\n }\n\n return parts.length > 0 ? parts.join(\": \") : JSON.stringify(error);\n}\n\nfunction stripAppInsightsDumpStack(response: string): string {\n return response\n .replace(/stack:\\s*(['\"`])[\\s\\S]*?\\1\\s*,?\\s*/g, \"\")\n .replace(/^\\[object Error\\]\\s*/, \"\")\n .trim();\n}\n\nfunction extractAppInsightsDumpMessage(response: string): string | undefined {\n if (!response.startsWith(\"[object Error]\")) return undefined;\n\n const messageMatch = response.match(/\\bmessage:\\s*(['\"`])([\\s\\S]*?)\\1/);\n if (messageMatch?.[2]) return messageMatch[2];\n\n const normalizedDiagnostic = stripAppInsightsDumpStack(response);\n if (normalizedDiagnostic && normalizedDiagnostic !== \"{}\") {\n return normalizedDiagnostic;\n }\n\n const stackLineMatch = response.match(/Error:\\s*[^\\\\\\n\\r']+/);\n return stackLineMatch?.[0] ?? response;\n}\n\nfunction normalizeFlushCallbackError(response: unknown): string | undefined {\n if (response === undefined || response === null) return undefined;\n if (response instanceof Error) return response.message;\n\n const text = String(response).trim();\n if (!text) return undefined;\n if (text.toLowerCase().includes(\"no data to send\")) return undefined;\n\n const [parseError, parsed] = catchError(() => JSON.parse(text) as unknown);\n if (!parseError) {\n const errors = isRecord(parsed) ? parsed.errors : undefined;\n if (Array.isArray(errors) && errors.length > 0) {\n return errors.map(formatFlushJsonError).join(\"; \");\n }\n return undefined;\n }\n\n return extractAppInsightsDumpMessage(text) ?? text;\n}\n\n/** Minimal contract for the ApplicationInsights v2.x TelemetryClient. */\ninterface AppInsightsClient {\n trackEvent(envelope: {\n name: string;\n properties?: Record<string, string>;\n }): void;\n trackException(envelope: {\n exception: Error;\n properties?: Record<string, string>;\n }): void;\n trackRequest(envelope: {\n name: string;\n url: string;\n duration: number;\n resultCode: string;\n success: boolean;\n properties?: Record<string, string>;\n }): void;\n trackDependency(envelope: {\n name: string;\n dependencyTypeName: string;\n duration: number;\n resultCode: string;\n success: boolean;\n properties?: Record<string, string>;\n }): void;\n flush(options?: {\n isAppCrashing?: boolean;\n callback?: (v?: unknown) => void;\n }): void;\n context: {\n tags: Record<string, string>;\n keys: { sessionId: string; applicationVersion: string };\n };\n config?: {\n maxBatchIntervalMs?: number;\n disableStatsbeat?: boolean;\n };\n getStatsbeat?(): { enable(isEnabled: boolean): void } | undefined;\n}\n\nfunction setDefaultAppInsightsEnv(name: string, value: string): void {\n if (process.env[name] === undefined) {\n process.env[name] = value;\n }\n}\n\nfunction configureAppInsightsEnvironment(): void {\n setDefaultAppInsightsEnv(\"APPLICATION_INSIGHTS_DISABLE_WARNING_LOGS\", \"1\");\n setDefaultAppInsightsEnv(\"APPLICATION_INSIGHTS_NO_STATSBEAT\", \"1\");\n setDefaultAppInsightsEnv(\n \"APPLICATION_INSIGHTS_NO_HTTP_AGENT_KEEP_ALIVE\",\n \"1\",\n );\n setDefaultAppInsightsEnv(\"APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL\", \"1\");\n}\n\n/**\n * Dynamically import the `applicationinsights` package.\n * Returns undefined if the package is not installed (e.g. in tool packages\n * that don't ship with AppInsights).\n */\nasync function loadApplicationInsights(): Promise<\n typeof import(\"applicationinsights\") | undefined\n> {\n // Temporarily clear DEBUG so the npm `debug` package (used by\n // applicationinsights transitive deps like require-in-the-middle\n // and @azure/*) does not flood stderr with trace output.\n const savedDebug = process.env.DEBUG;\n delete process.env.DEBUG;\n // Silence the SDK's internal warning logger (e.g. \"Sender Ingestion\n // endpoint could not be reached\") so transport failures don't leak\n // to stderr. The flag is captured at module load, so it must be set\n // before the dynamic import below. Respect an explicit user override.\n configureAppInsightsEnvironment();\n const [error, mod] = await catchError(import(\"applicationinsights\"));\n if (savedDebug !== undefined) {\n process.env.DEBUG = savedDebug;\n }\n if (error) {\n logger.warn(\n `[Telemetry] applicationinsights package not available: ${error.message}. Telemetry will use logger fallback.`,\n );\n return undefined;\n }\n return mod;\n}\n\nfunction configureAppInsightsClient(client: AppInsightsClient): void {\n if (client.config) {\n client.config.maxBatchIntervalMs = Math.min(\n client.config.maxBatchIntervalMs ?? APPINSIGHTS_BATCH_INTERVAL_MS,\n APPINSIGHTS_BATCH_INTERVAL_MS,\n );\n client.config.disableStatsbeat = true;\n }\n\n const [statsbeatError] = catchError(() =>\n client.getStatsbeat?.()?.enable(false),\n );\n if (statsbeatError) {\n logger.debug(\"[AppInsights] failed to disable Statsbeat\");\n }\n}\n\n/**\n * Node.js Application Insights telemetry provider.\n * Uses the `applicationinsights` Node SDK (not the browser SDK).\n *\n * The provider is created asynchronously because `applicationinsights` is\n * loaded via dynamic import — it may not be installed in all packages.\n */\nexport class NodeAppInsightsTelemetryProvider implements ITelemetryProvider {\n private client: AppInsightsClient | undefined;\n private appInsightsModule: typeof import(\"applicationinsights\") | undefined;\n private readonly _sessionId: string;\n private initialized = false;\n\n constructor(private readonly connectionString: string) {\n this._sessionId = crypto.randomUUID();\n }\n\n /**\n * Initialize the provider by dynamically importing applicationinsights.\n * Returns false if the package is not available.\n */\n async initialize(): Promise<boolean> {\n if (this.initialized) return true;\n const mod = await loadApplicationInsights();\n if (!mod) return false;\n this.appInsightsModule = mod;\n logger.debug(\n \"[AppInsights] NodeAppInsightsTelemetryProvider initialized\",\n );\n const client = new mod.TelemetryClient(this.connectionString);\n client.context.tags[client.context.keys.sessionId] = this._sessionId;\n this.client = client as AppInsightsClient;\n configureAppInsightsClient(this.client);\n this.initialized = true;\n return true;\n }\n\n getSessionId(): string {\n return this._sessionId;\n }\n\n /**\n * Set the Application Version context tag (`ai.application.ver`).\n * Must be called after {@link initialize}.\n */\n setApplicationVersion(version: string): void {\n if (!this.client) return;\n this.client.context.tags[this.client.context.keys.applicationVersion] =\n version;\n }\n\n /**\n * Merge global default properties with per-call properties.\n * Per-call properties take precedence over global defaults.\n */\n private mergeProperties(\n properties?: TelemetryProperties,\n ): Record<string, string> | undefined {\n const globalProps = getGlobalTelemetryProperties();\n if (!globalProps && !properties) return undefined;\n return {\n ...globalProps,\n ...properties,\n } as Record<string, string>;\n }\n\n async trackEvent(\n eventName: string,\n properties?: TelemetryProperties,\n ): Promise<void> {\n const client = this.client;\n if (!client) return;\n const merged = this.mergeProperties(properties);\n // applicationinsights may fail if initialization was incomplete\n const [error] = catchError(() =>\n client.trackEvent({\n name: eventName,\n properties: merged,\n }),\n );\n if (error) {\n logger.debug(`[AppInsights] trackEvent failed for: ${eventName}`);\n }\n }\n\n async trackException(\n error: Error,\n properties?: TelemetryProperties,\n ): Promise<void> {\n const client = this.client;\n if (!client) return;\n const merged = this.mergeProperties(properties);\n const [trackError] = catchError(() =>\n client.trackException({\n exception: error,\n properties: merged,\n }),\n );\n if (trackError) {\n logger.debug(\n `[AppInsights] trackException failed for: ${error.message}`,\n );\n }\n }\n\n async trackRequest(\n name: string,\n duration: number,\n success: boolean,\n properties?: TelemetryProperties,\n ): Promise<void> {\n const client = this.client;\n if (!client) return;\n const merged = this.mergeProperties(properties);\n const [trackError] = catchError(() =>\n client.trackRequest({\n name,\n // Wrap the operation name in a urn: scheme so AppInsights URL\n // validation doesn't throw TypeError when name is a dot-separated\n // identifier like 'ProjectPackager.Tool.Pack' (not an http URL).\n url: toOperationUrn(name),\n duration,\n resultCode: success ? \"200\" : \"500\",\n success,\n properties: merged,\n }),\n );\n if (trackError) {\n logger.debug(`[AppInsights] trackRequest failed for: ${name}`);\n }\n }\n\n async trackDependency(\n name: string,\n type: string,\n duration: number,\n success: boolean,\n properties?: TelemetryProperties,\n ): Promise<void> {\n const client = this.client;\n if (!client) return;\n const merged = this.mergeProperties(properties);\n client.trackDependency({\n name,\n dependencyTypeName: type,\n duration,\n resultCode: success ? \"200\" : \"500\",\n success,\n properties: merged,\n });\n }\n\n async flush(): Promise<void> {\n const client = this.client;\n if (!client) {\n logger.debug(\"[AppInsights] flush skipped: no client\");\n return;\n }\n const [error] = await catchError(\n new Promise<void>((resolve, reject) => {\n client.flush({\n callback: (response) => {\n const errorMessage =\n normalizeFlushCallbackError(response);\n if (errorMessage === undefined) {\n resolve();\n return;\n }\n reject(new Error(errorMessage));\n },\n });\n }),\n );\n if (error) {\n logger.warn(\n `[AppInsights] flush error (non-fatal): ${error.message}`,\n );\n }\n }\n\n /**\n * Dispose the Application Insights SDK so its internal channels,\n * keep-alive sockets, and timers are closed — allowing the Node.js\n * event loop to drain and the process to exit naturally.\n *\n * IMPORTANT: The caller must NOT call `process.exit()` after this.\n * On Windows, forcing exit while libuv handles from the preceding\n * `flush()` are still closing triggers\n * `!(handle->flags & UV_HANDLE_CLOSING)` in `uv_async_send`.\n * Instead, set `process.exitCode` and let the loop drain.\n */\n async shutdown(): Promise<void> {\n const client = this.client;\n if (client) {\n const [statsbeatError] = catchError(() =>\n client.getStatsbeat?.()?.enable(false),\n );\n if (statsbeatError) {\n logger.debug(\"[AppInsights] failed to shut down Statsbeat\");\n }\n }\n const appInsights = this.appInsightsModule;\n if (appInsights) {\n const [err] = catchError(() => appInsights.dispose());\n if (err) {\n logger.warn(\n `[AppInsights] shutdown error (non-fatal): ${err.message}`,\n );\n }\n }\n this.client = undefined;\n this.appInsightsModule = undefined;\n this.initialized = false;\n }\n}\n\n/**\n * Get or create the single shared provider instance.\n * The first call creates the provider and stores it on globalThis;\n * subsequent calls (from other bundled copies) return the same instance.\n *\n * Now async — must be awaited. Returns undefined if applicationinsights\n * is not installed. Stores the init promise on globalThis to prevent\n * concurrent callers from creating duplicate providers.\n */\nexport async function getOrCreateProvider(\n connectionString: string,\n): Promise<NodeAppInsightsTelemetryProvider | undefined> {\n const existing = providerSlot.get();\n\n // If a resolved provider already exists, return it immediately.\n // Cannot use instanceof here — each bundle has its own class definition.\n // Use a duck-type check on the flush method instead.\n if (\n existing &&\n typeof existing === \"object\" &&\n \"flush\" in existing &&\n typeof (existing as unknown as Record<string, unknown>).flush ===\n \"function\"\n ) {\n return existing as NodeAppInsightsTelemetryProvider;\n }\n\n // If another caller is already initializing, await the same promise.\n if (existing instanceof Promise) {\n return existing as Promise<\n NodeAppInsightsTelemetryProvider | undefined\n >;\n }\n\n // First caller — store the init promise to prevent duplicate work.\n const initPromise = (async () => {\n const provider = new NodeAppInsightsTelemetryProvider(connectionString);\n const ok = await provider.initialize();\n if (!ok) {\n providerSlot.clear();\n return undefined;\n }\n providerSlot.set(provider);\n return provider;\n })();\n\n providerSlot.set(initPromise);\n return initPromise;\n}\n",
|
|
46
|
-
"import { catchError } from \"../catch-error.js\";\nimport { logger } from \"../logger.js\";\nimport { singleton } from \"../singleton.js\";\nimport { LoggerTelemetryProvider } from \"./logger-telemetry-provider.js\";\nimport type {\n ITelemetryProvider,\n ITelemetryService,\n TelemetryContext,\n} from \"./node.js\";\nimport { NodeContextStorage, TelemetryService } from \"./node.js\";\nimport {\n getOrCreateProvider,\n type NodeAppInsightsTelemetryProvider,\n setGlobalTelemetryProperties,\n} from \"./node-appinsights-telemetry-provider.js\";\nimport { isTelemetryDisabled } from \"./telemetry-config.js\";\n\n// Store the TelemetryService instance on globalThis so tool bundles can\n// reuse the same instance that the CLI initialized (with AppInsights).\nconst telemetryInstanceSlot = singleton<ITelemetryService | undefined>(\n \"TelemetryService\",\n);\n\n// atob() is available in both Node.js (>=16) and browsers — no Buffer import needed.\nconst DEFAULT_AI_CONNECTION_STRING = atob(\n \"SW5zdHJ1bWVudGF0aW9uS2V5PTliZDM3NDgyLTgxMGUtNDQyYS1hYWE2LWQzOGVmNjVjNjY3NDtJbmdlc3Rpb25FbmRwb2ludD1odHRwczovL3dlc3RldXJvcGUtNS5pbi5hcHBsaWNhdGlvbmluc2lnaHRzLmF6dXJlLmNvbS87TGl2ZUVuZHBvaW50PWh0dHBzOi8vd2VzdGV1cm9wZS5saXZlZGlhZ25vc3RpY3MubW9uaXRvci5henVyZS5jb20vO0FwcGxpY2F0aW9uSWQ9MzU2OTdlZjEtOGJkMC00ZjE5LWEyN2MtZDg3Y2NhYzY2ZDJj\",\n);\n\n/**\n * Get the Application Insights connection string.\n * Uses UIPATH_AI_CONNECTION_STRING env var if set, otherwise the default.\n */\nfunction getConnectionString(): string {\n return (\n process.env.UIPATH_AI_CONNECTION_STRING || DEFAULT_AI_CONNECTION_STRING\n );\n}\n\n/**\n * Create or retrieve the shared Node.js Application Insights telemetry provider.\n * Uses globalThis to ensure all bundled copies share a single TelemetryClient.\n * Returns undefined if the applicationinsights package is not installed.\n */\nexport async function createAppInsightsProvider(): Promise<\n NodeAppInsightsTelemetryProvider | undefined\n> {\n return getOrCreateProvider(getConnectionString());\n}\n\n// Re-exported so `@uipath/common`'s public API (via `index.ts`) keeps exposing\n// `isTelemetryDisabled` from here. The implementation lives in the browser-safe\n// `telemetry-config.js` module.\nexport { isTelemetryDisabled } from \"./telemetry-config.js\";\n\ninterface TelemetryProviderResult {\n provider: ITelemetryProvider;\n name: string;\n}\n\ninterface FlushableTelemetryProvider extends ITelemetryProvider {\n flush(): Promise<void>;\n shutdown(): Promise<void>;\n}\n\n// The active provider instance, tracked explicitly for flush/shutdown.\nlet telemetryProviderInstance: ITelemetryProvider | undefined;\nlet telemetryFlushShutdownPromise: Promise<void> | undefined;\n\n/**\n * Create the default telemetry provider (async).\n * Uses Application Insights (Node SDK) by default, falls back to\n * LoggerTelemetryProvider if telemetry is disabled, initialization\n * fails, or the applicationinsights package is not installed.\n *\n * Returns both the provider and its name so callers can log which\n * provider was selected without relying on module-level mutable state.\n */\nexport async function createTelemetryProvider(): Promise<TelemetryProviderResult> {\n telemetryFlushShutdownPromise = undefined;\n if (isTelemetryDisabled()) {\n const fallback = new LoggerTelemetryProvider();\n telemetryProviderInstance = fallback;\n return { provider: fallback, name: \"Disabled\" };\n }\n const [error, provider] = await catchError(createAppInsightsProvider());\n if (error) {\n logger.warn(\n `[Telemetry] AppInsights provider failed: ${error.message}. Falling back to logger.`,\n );\n }\n if (error || !provider) {\n const fallback = new LoggerTelemetryProvider();\n telemetryProviderInstance = fallback;\n return { provider: fallback, name: \"LoggerTelemetryProvider\" };\n }\n telemetryProviderInstance = provider;\n return { provider, name: \"NodeAppInsightsTelemetryProvider\" };\n}\n\n/**\n * Get the shared TelemetryService instance from globalThis.\n * This allows tool bundles (which don't have applicationinsights) to\n * reuse the instance that the CLI already initialized with AppInsights.\n */\nfunction getGlobalTelemetryInstance(): ITelemetryService | undefined {\n const existing = telemetryInstanceSlot.get();\n if (\n existing &&\n typeof existing === \"object\" &&\n \"trackEvent\" in existing &&\n typeof (existing as unknown as Record<string, unknown>).trackEvent ===\n \"function\"\n ) {\n return existing as ITelemetryService;\n }\n return undefined;\n}\n\nfunction setGlobalTelemetryInstance(instance: ITelemetryService): void {\n telemetryInstanceSlot.set(instance);\n}\n\n// Lazy initialization — the TelemetryService and its provider are only\n// created on first method call, avoiding heavy Application Insights\n// setup at import time (which blocks tests and unused code paths).\nlet _localTelemetryInstance: ITelemetryService | undefined;\n\n/**\n * Synchronously get a TelemetryService instance.\n *\n * 1. First checks globalThis — if the CLI already initialized AppInsights,\n * tool bundles reuse that instance without needing applicationinsights.\n * 2. Falls back to a local LoggerTelemetryProvider-based instance.\n *\n * The async `telemetryInit()` (called by CLI) replaces this with the real\n * AppInsights-backed instance.\n */\nfunction getTelemetryInstance(): ITelemetryService {\n // Prefer the global instance (set by CLI via telemetryInit)\n const global = getGlobalTelemetryInstance();\n if (global) return global;\n\n // Local fallback for tool bundles loaded before CLI init,\n // or when running without the CLI (e.g. standalone tool tests).\n if (!_localTelemetryInstance) {\n _localTelemetryInstance = new TelemetryService(\n new LoggerTelemetryProvider(),\n new NodeContextStorage<TelemetryContext>(),\n );\n }\n return _localTelemetryInstance;\n}\n\nexport const telemetry = new Proxy({} as ITelemetryService, {\n get(_, prop) {\n const instance = getTelemetryInstance();\n const value = (instance as unknown as Record<string | symbol, unknown>)[\n prop\n ];\n return typeof value === \"function\" ? value.bind(instance) : value;\n },\n});\n\nexport interface TelemetryInitOptions {\n /** Application version — sets the standard `ai.application.ver` context tag. */\n version?: string;\n /** Custom dimensions added to every telemetry event. */\n defaultProperties?: Record<string, string>;\n}\n\n/**\n * Initialize telemetry with default properties.\n * Call after logger is configured (e.g. after --log-file is processed).\n *\n * This is async — it awaits the dynamic import of applicationinsights.\n * Must be awaited to ensure the correct provider is selected before\n * telemetry events are tracked.\n *\n * The resulting TelemetryService instance is stored on globalThis so that\n * tool bundles (which don't ship applicationinsights) can reuse it.\n */\nexport async function telemetryInit(\n options?: TelemetryInitOptions,\n): Promise<void> {\n const { provider, name: providerName } = await createTelemetryProvider();\n const instance = new TelemetryService(\n provider,\n new NodeContextStorage<TelemetryContext>(),\n );\n // Store on globalThis so tool bundles can find it via the proxy.\n setGlobalTelemetryInstance(instance);\n _localTelemetryInstance = instance;\n\n const isAppInsights = providerName === \"NodeAppInsightsTelemetryProvider\";\n\n if (options?.version && isAppInsights) {\n (provider as NodeAppInsightsTelemetryProvider).setApplicationVersion(\n options.version,\n );\n }\n\n if (options?.defaultProperties) {\n setGlobalTelemetryProperties(options.defaultProperties);\n telemetry.setDefaultProperties(options.defaultProperties);\n }\n if (!isAppInsights) {\n logger.debug(\n `[Telemetry] initialized with fallback provider (${providerName}). applicationinsights package not available.`,\n );\n }\n}\n\nconst FLUSH_SHUTDOWN_TIMEOUT_MS = 1_000;\n\nfunction isFlushableTelemetryProvider(\n provider: ITelemetryProvider | undefined,\n): provider is FlushableTelemetryProvider {\n return (\n provider !== undefined &&\n \"flush\" in provider &&\n typeof (provider as unknown as Record<string, unknown>).flush ===\n \"function\" &&\n \"shutdown\" in provider &&\n typeof (provider as unknown as Record<string, unknown>).shutdown ===\n \"function\"\n );\n}\n\nasync function runWithTimeout(\n operation: Promise<void>,\n timeoutMs: number,\n): Promise<\"done\" | \"timeout\"> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n try {\n const timeout = new Promise<\"timeout\">((resolve) => {\n timer = setTimeout(() => resolve(\"timeout\"), timeoutMs);\n });\n\n return await Promise.race([\n operation.then(() => \"done\" as const),\n timeout,\n ]);\n } finally {\n if (timer) clearTimeout(timer);\n }\n}\n\n/**\n * Flush all buffered telemetry to the cloud.\n * Must be awaited before the process exits to ensure delivery.\n * Capped at FLUSH_SHUTDOWN_TIMEOUT_MS to avoid hanging on slow/unreachable endpoints.\n */\nexport async function telemetryFlushAndShutdown(): Promise<void> {\n if (!isFlushableTelemetryProvider(telemetryProviderInstance)) {\n return;\n }\n if (!telemetryFlushShutdownPromise) {\n const provider = telemetryProviderInstance;\n telemetryFlushShutdownPromise = (async () => {\n const [flushError, flushResult] = await catchError(\n runWithTimeout(provider.flush(), FLUSH_SHUTDOWN_TIMEOUT_MS),\n );\n if (flushError) {\n logger.warn(\n `[Telemetry] flush failed (non-fatal): ${flushError.message}`,\n );\n } else if (flushResult === \"timeout\") {\n logger.warn(\n `[Telemetry] flush timed out after ${FLUSH_SHUTDOWN_TIMEOUT_MS}ms`,\n );\n }\n\n const [shutdownError, shutdownResult] = await catchError(\n runWithTimeout(provider.shutdown(), FLUSH_SHUTDOWN_TIMEOUT_MS),\n );\n if (shutdownError) {\n logger.warn(\n `[Telemetry] shutdown failed (non-fatal): ${shutdownError.message}`,\n );\n } else if (shutdownResult === \"timeout\") {\n logger.warn(\n `[Telemetry] shutdown timed out after ${FLUSH_SHUTDOWN_TIMEOUT_MS}ms`,\n );\n }\n })();\n }\n await telemetryFlushShutdownPromise;\n}\n",
|
|
47
|
-
"import {\n compile as jmespathCompile,\n search as jmespathSearch,\n} from \"@jmespath-community/jmespath\";\nimport * as yaml from \"js-yaml\";\n\nimport { getLogFilePath } from \"./logger\";\nimport { getOutputSink } from \"./output-context\";\nimport { getOutputFilter, getOutputFormat } from \"./output-format-context\";\nimport { CommonTelemetryEvents } from \"./telemetry/telemetry-events.js\";\nimport { telemetry } from \"./telemetry/telemetry-init.js\";\n\nexport type OutputFormat = \"table\" | \"json\" | \"yaml\" | \"plain\";\n\nexport type ResultType =\n | \"Success\"\n | \"Failure\"\n | \"ConfigError\"\n | \"AuthenticationError\"\n | \"ValidationError\"\n | \"TimeoutError\";\n\nexport type FailureResultType = Exclude<ResultType, \"Success\">;\n\nexport const CLI_ERROR_CODES = [\n \"invalid_argument\",\n \"authentication_required\",\n \"permission_denied\",\n \"not_found\",\n \"rate_limited\",\n \"network_error\",\n \"timeout\",\n \"server_error\",\n \"method_not_allowed\",\n \"configuration_error\",\n \"unknown_error\",\n] as const;\n\nexport type CliErrorCode = (typeof CLI_ERROR_CODES)[number];\n\nexport const RETRY_HINTS = [\n \"RetryWillNotFix\",\n \"RetryLater\",\n \"RetryAfter1Second\",\n \"RetryAfter10Seconds\",\n \"RetryAfter30Seconds\",\n \"RetryAfter60Seconds\",\n] as const;\n\nexport type RetryHint = (typeof RETRY_HINTS)[number];\n\n/** Canonical string constants for {@link ResultType} values. */\nexport const RESULTS = {\n Success: \"Success\",\n Failure: \"Failure\",\n ConfigError: \"ConfigError\",\n AuthenticationError: \"AuthenticationError\",\n ValidationError: \"ValidationError\",\n /** Reserved — no code path emits this yet; here so the exit-code contract is stable. */\n TimeoutError: \"TimeoutError\",\n} as const satisfies Record<ResultType, ResultType>;\n\n/**\n * Maps each {@link ResultType} to a numeric process exit code.\n *\n * | Code | Meaning |\n * |------|--------------------------------|\n * | 0 | Success |\n * | 1 | Failure / ConfigError (generic)|\n * | 2 | AuthenticationError |\n * | 3 | ValidationError |\n * | 4 | TimeoutError |\n */\nexport const EXIT_CODES = {\n Success: 0,\n Failure: 1,\n ConfigError: 1,\n AuthenticationError: 2,\n ValidationError: 3,\n TimeoutError: 4,\n} as const satisfies Record<ResultType, number>;\n\n/** Widened record type that accepts interface types (which lack an implicit\n * index signature in TypeScript) while still representing keyed objects. */\nexport type DataRecord =\n | Record<string, unknown>\n | (object & Record<never, never>);\n\nexport class Pagination {\n Returned: number;\n Limit: number;\n Offset: number;\n Total?: number;\n HasMore: boolean;\n\n constructor({\n returned,\n limit,\n offset,\n total,\n }: { returned: number; limit: number; offset: number; total?: number }) {\n this.Returned = returned;\n this.Limit = limit;\n this.Offset = offset;\n this.Total = total;\n this.HasMore =\n total === undefined\n ? returned === limit\n : offset + returned < total;\n }\n}\n\nexport class SuccessOutput {\n Result: \"Success\" = RESULTS.Success;\n Code: string;\n Data: DataRecord | DataRecord[];\n Pagination?: Pagination;\n Instructions?: string;\n Log?: string;\n\n constructor(code: string, data: DataRecord | DataRecord[]) {\n this.Code = code;\n this.Data = data;\n const logPath = getLogFilePath();\n if (logPath) {\n this.Log = logPath;\n }\n }\n}\n\nexport interface ErrorContext {\n httpStatus?: number;\n errorCode?: string;\n requestId?: string;\n retryAfter?: number;\n /** Pipeline stage label (e.g. \"begin-debug-session\", \"create-debug-instance\")\n * identifying *which step* of a multi-stage command failed. Lets agents\n * decide retry vs. report without parsing free-text messages. */\n stage?: string;\n /** Backend endpoint path (e.g. \"/api/v1/debug-instances\") relative to the\n * service root. Combined with {@link method}, uniquely identifies the\n * failing API call. */\n endpoint?: string;\n /** HTTP method of the failing request (e.g. \"POST\", \"GET\"). */\n method?: string;\n /** Distributed-tracing id parsed from the backend error body when present. */\n traceId?: string;\n}\n\nexport class FailureOutput {\n Result: FailureResultType;\n Code?: string;\n ErrorCode?: CliErrorCode;\n Message: string;\n Instructions: string;\n Retry?: RetryHint;\n Context?: ErrorContext;\n Log?: string;\n /**\n * Optional structured payload for failure envelopes that need to carry\n * actionable detail beyond the Message string (e.g. JobKey + JobState\n * + SubState for the `jobs start --wait-for-completion` failure path).\n * Mirrors SuccessOutput.Data so consumers can use a single accessor\n * across success / failure paths.\n */\n Data?: DataRecord | DataRecord[];\n /**\n * Print the error and set the exit code, but don't emit the `uip.error`\n * telemetry event — rate-limits high-frequency identical failures (e.g. a\n * stuck auth-refresh loop). Stripped before the envelope is rendered.\n */\n SuppressTelemetry?: boolean;\n\n constructor(\n result: FailureResultType,\n message: string,\n instructions: string,\n context?: ErrorContext,\n errorCode?: CliErrorCode,\n retry?: RetryHint,\n ) {\n this.Result = result;\n this.Message = message;\n this.Instructions = instructions;\n if (errorCode) {\n this.ErrorCode = errorCode;\n }\n if (retry) {\n this.Retry = retry;\n }\n if (context) {\n this.Context = context;\n }\n const logPath = getLogFilePath();\n if (logPath) {\n this.Log = logPath;\n }\n }\n}\n\nexport type StructuredOutput = SuccessOutput | FailureOutput;\n\n/**\n * Escape every non-ASCII codepoint in a JSON-encoded string as `\\uXXXX`.\n *\n * Why: on Windows, when stdout is piped (not a TTY), Node writes raw UTF-8\n * bytes which PowerShell decodes using `[Console]::OutputEncoding` (cp 437 /\n * Shift_JIS / Windows-1252). Non-ASCII bytes get re-decoded incorrectly,\n * producing mojibake AND structurally invalid JSON (a stray byte from a\n * multi-byte UTF-8 sequence collides with the closing quote). Emitting pure\n * ASCII via `\\uXXXX` escapes — valid JSON per the spec — survives every\n * code page intact; `JSON.parse` / `ConvertFrom-Json` etc. all un-escape\n * correctly. Surrogate pairs (non-BMP codepoints) emit two escapes, which\n * JSON parsers reconstruct.\n *\n * Linux and macOS consumers read pipe bytes as UTF-8 by default, so this\n * escape is only applied on Windows (see `needsAsciiSafeJson`).\n */\nfunction escapeNonAscii(jsonText: string): string {\n return jsonText.replace(/[\\u0080-\\uffff]/g, (c) => {\n const hex = c.charCodeAt(0).toString(16).padStart(4, \"0\");\n return `\\\\u${hex}`;\n });\n}\n\n/**\n * Returns true when JSON output for this sink should be ASCII-escaped to\n * avoid mojibake from consumer-side code-page decoding. Only true on Windows\n * when the sink is non-interactive (piped or redirected).\n */\nfunction needsAsciiSafeJson(sink: {\n capabilities: { isInteractive: boolean };\n}): boolean {\n return process.platform === \"win32\" && !sink.capabilities.isInteractive;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n if (value === null || typeof value !== \"object\") return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\n/**\n * Detect a paged-list envelope and return its row collection.\n *\n * A migrated list endpoint forwards its public-API page verbatim as `Data`,\n * e.g. `{ Projects: [...], Total, Offset, Limit }`. For plain/table rendering\n * the rows are the inner array, not the wrapper object — otherwise the wrapper\n * is treated as a single record and stringifies to `[object Object],…`.\n *\n * To stay key-name agnostic and avoid misfiring on single-record or\n * multi-array payloads, this only matches when `value` is a non-null,\n * non-array object with EXACTLY one array-valued property AND at least one\n * scalar sibling — a metadata key beyond the array (the pagination fields, e.g.\n * Total/Offset/Limit; the value may be null, but the key must be present).\n * Requiring a scalar sibling is what distinguishes a paged envelope from an\n * ordinary single record that merely holds one array field (e.g.\n * `{ Errors: [...] }` or `{ PolicyIds: [...] }`), which must NOT be flattened.\n * Anything else returns `null` so the caller keeps its existing behavior.\n * json/yaml never call this.\n */\nfunction extractPagedRows(value: unknown): Record<string, unknown>[] | null {\n if (Array.isArray(value) || !isPlainRecord(value)) return null;\n const entries = Object.values(value);\n if (entries.length === 0) return null;\n\n let rows: unknown[] | null = null;\n let hasScalarSibling = false;\n for (const entry of entries) {\n if (Array.isArray(entry)) {\n if (rows !== null) return null; // more than one array sibling\n rows = entry;\n } else if (entry !== null && typeof entry === \"object\") {\n return null; // a non-array object sibling — not a paged envelope\n } else {\n hasScalarSibling = true; // number / string / boolean / null metadata\n }\n }\n if (rows === null || !hasScalarSibling) return null;\n return rows as Record<string, unknown>[];\n}\n\nfunction toLowerCamelCaseKey(key: string): string {\n if (!key) return key;\n if (/[_\\-\\s]/.test(key)) {\n const [firstPart, ...restParts] = key.split(/[_\\-\\s]+/).filter(Boolean);\n if (!firstPart) return key;\n return [\n toLowerCamelCaseSimpleKey(firstPart),\n ...restParts.map((part) => {\n const normalized = toLowerCamelCaseSimpleKey(part);\n return normalized.charAt(0).toUpperCase() + normalized.slice(1);\n }),\n ].join(\"\");\n }\n return toLowerCamelCaseSimpleKey(key);\n}\n\nfunction toLowerCamelCaseSimpleKey(key: string): string {\n if (/^[A-Z0-9]+$/.test(key)) return key.toLowerCase();\n return key.replace(/^[A-Z]+(?=[A-Z][a-z]|\\d|$)|^[A-Z]/, (match) =>\n match.toLowerCase(),\n );\n}\n\nfunction toPascalCaseKey(key: string): string {\n const lowerCamelKey = toLowerCamelCaseKey(key);\n return lowerCamelKey\n ? lowerCamelKey.charAt(0).toUpperCase() + lowerCamelKey.slice(1)\n : lowerCamelKey;\n}\n\nfunction toPascalCaseData(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(toPascalCaseData);\n if (!isPlainRecord(value)) return value;\n\n const result: Record<string, unknown> = {};\n for (const [key, nestedValue] of Object.entries(value)) {\n result[toPascalCaseKey(key)] = toPascalCaseData(nestedValue);\n }\n return result;\n}\n\nfunction normalizeDataKeys(\n data: DataRecord | DataRecord[],\n): DataRecord | DataRecord[] {\n return toPascalCaseData(data) as DataRecord | DataRecord[];\n}\n\n/**\n * PascalCase the envelope's own top-level keys (`Result`, `Code`, `Data`,\n * `Message`, `Pagination`, …) WITHOUT recursing into the `Data` payload.\n *\n * The caller is the single authority for `Data`'s key casing: `success` /\n * `formatToString` have already either normalized `Data` via\n * {@link normalizeDataKeys} or — for payloads that must round-trip verbatim\n * into UiPath artifacts (e.g. `registry get` node definitions whose camelCase\n * field names are copied straight into `.flow` files) — left it untouched.\n * Recursing into `Data` here would re-PascalCase it and defeat that\n * passthrough.\n *\n * For normally-normalized `Data` this is behavior-identical to a full\n * recursion, because PascalCasing keys is idempotent.\n */\nfunction normalizeOutputKeys(data: StructuredOutput): StructuredOutput {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n const pascalKey = toPascalCaseKey(key);\n result[pascalKey] =\n pascalKey === \"Data\" ? value : toPascalCaseData(value);\n }\n return result as unknown as StructuredOutput;\n}\n\nfunction printOutput(\n data: StructuredOutput,\n format: OutputFormat = \"json\",\n logFn: (message: string) => void,\n asciiSafe = false,\n): void {\n if (!data) {\n logFn(\"Empty response object. No data to display.\");\n return;\n }\n\n switch (format) {\n case \"json\": {\n const json = JSON.stringify(data, null, 2);\n logFn(asciiSafe ? escapeNonAscii(json) : json);\n break;\n }\n case \"yaml\":\n logFn(toYaml(data));\n break;\n case \"plain\": {\n if (\"Data\" in data && data.Data != null) {\n const pagedRows = extractPagedRows(data.Data);\n const items =\n pagedRows ??\n (Array.isArray(data.Data) ? data.Data : [data.Data]);\n items.forEach((item) => {\n const values = Object.values(item)\n .map((v) => v ?? \"\")\n .join(\"\\t\");\n logFn(values);\n });\n } else {\n const values = Object.values(data)\n .map((v) => v ?? \"\")\n .join(\"\\t\");\n logFn(values);\n }\n break;\n }\n default: {\n const hasData = \"Data\" in data && data.Data != null;\n const pagedRows = hasData ? extractPagedRows(data.Data) : null;\n const rows: Record<string, unknown>[] | null = pagedRows\n ? pagedRows\n : Array.isArray(data.Data)\n ? (data.Data as Record<string, unknown>[])\n : null;\n if (hasData && !(rows !== null && rows.length === 0)) {\n const logValue = data.Log;\n if (rows !== null) {\n printResizableTable(rows, logFn, logValue);\n } else {\n printVerticalTable(\n data.Data as Record<string, unknown>,\n logFn,\n logValue,\n );\n }\n } else {\n printTable([{ ...data } as Record<string, unknown>], logFn);\n }\n break;\n }\n }\n}\n\nfunction logOutput(\n data: StructuredOutput,\n format: OutputFormat = \"json\",\n): void {\n const sink = getOutputSink();\n printOutput(\n data,\n format,\n (msg) => sink.writeOut(`${msg}\\n`),\n needsAsciiSafeJson(sink),\n );\n}\n\nfunction cellToString(val: unknown): string {\n return val != null && typeof val === \"object\"\n ? JSON.stringify(val)\n : String(val ?? \"\");\n}\n\nfunction wrapText(text: string, width: number): string[] {\n if (text.length <= width) return [text];\n const lines: string[] = [];\n for (let pos = 0; pos < text.length; pos += width) {\n lines.push(text.substring(pos, pos + width));\n }\n return lines;\n}\n\nfunction printTable(\n data: Record<string, unknown>[],\n logFn: (message: string) => void,\n externalLogValue?: string,\n): void {\n if (data.length === 0) return;\n\n const keys = Object.keys(data[0]).filter(\n (key) => ![\"code\", \"log\"].includes(key.toLowerCase()),\n );\n\n const maxWidths = keys.map((key) =>\n Math.max(\n key.length,\n ...data.map((item) => cellToString(item[key]).length),\n ),\n );\n\n // Header\n const header = keys.map((key, i) => key.padEnd(maxWidths[i])).join(\" | \");\n logFn(header);\n logFn(keys.map((_, i) => \"-\".repeat(maxWidths[i])).join(\"-|-\"));\n\n // Rows\n data.forEach((item) => {\n const row = keys\n .map((key, i) => cellToString(item[key]).padEnd(maxWidths[i]))\n .join(\" | \");\n logFn(row);\n });\n\n // Log file reference\n if (externalLogValue) {\n logFn(\"\");\n logFn(`Log: ${externalLogValue}`);\n }\n}\n\nfunction printVerticalTable(\n data: Record<string, unknown>,\n logFn: (message: string) => void = console.log,\n externalLogValue?: string,\n): void {\n const keys = Object.keys(data).filter(\n (key) => ![\"code\", \"log\"].includes(key.toLowerCase()),\n );\n if (keys.length === 0) return;\n\n const maxKeyWidth = Math.max(...keys.map((key) => key.length));\n\n keys.forEach((key) => {\n const keyCol = key.padEnd(maxKeyWidth);\n logFn(`${keyCol} | ${cellToString(data[key])}`);\n });\n\n if (externalLogValue) {\n logFn(\"\");\n logFn(`Log: ${externalLogValue}`);\n }\n}\n\nfunction printResizableTable(\n data: Record<string, unknown>[],\n logFn: (message: string) => void = console.log,\n externalLogValue?: string,\n): void {\n if (data.length === 0) return;\n\n const keys = Object.keys(data[0]).filter(\n (key) => ![\"code\", \"log\"].includes(key.toLowerCase()),\n );\n if (keys.length === 0) return;\n\n if (!process.stdout.isTTY) {\n printTable(data, logFn, externalLogValue);\n return;\n }\n\n const naturalWidths = keys.map((key) =>\n Math.max(\n key.length,\n ...data.map((item) => cellToString(item[key]).length),\n ),\n );\n\n const separatorTotal = (keys.length - 1) * 3; // \" | \"\n const totalWidth =\n naturalWidths.reduce((a, b) => a + b, 0) + separatorTotal;\n const termWidth = process.stdout.columns || 120;\n\n if (totalWidth <= termWidth) {\n printTable(data, logFn, externalLogValue);\n return;\n }\n\n const overflow = totalWidth - termWidth;\n const MIN_COL_WIDTH = 10;\n const minWidths = keys.map((key) => Math.max(key.length, MIN_COL_WIDTH));\n\n // Try to find the best single column to shrink — the one that causes\n // the fewest extra (continuation) rows when absorbing all the overflow.\n let bestCol = -1;\n let bestCost = Infinity;\n\n for (let i = 0; i < keys.length; i++) {\n const maxShrink = naturalWidths[i] - minWidths[i];\n if (maxShrink < overflow) continue;\n\n const newWidth = naturalWidths[i] - overflow;\n let extraRows = 0;\n for (const item of data) {\n const cellLen = cellToString(item[keys[i]]).length;\n if (cellLen > newWidth) {\n extraRows += Math.ceil(cellLen / newWidth) - 1;\n }\n }\n\n if (extraRows < bestCost) {\n bestCost = extraRows;\n bestCol = i;\n }\n }\n\n const finalWidths = [...naturalWidths];\n\n if (bestCol !== -1) {\n finalWidths[bestCol] = naturalWidths[bestCol] - overflow;\n } else {\n // No single column can absorb all overflow — shrink multiple columns,\n // starting from the one with the most shrink potential.\n let remaining = overflow;\n const colsByShrinkPotential = keys\n .map((_, i) => ({\n index: i,\n potential: naturalWidths[i] - minWidths[i],\n }))\n .filter((c) => c.potential > 0)\n .sort((a, b) => b.potential - a.potential);\n\n for (const col of colsByShrinkPotential) {\n if (remaining <= 0) break;\n const shrink = Math.min(remaining, col.potential);\n finalWidths[col.index] -= shrink;\n remaining -= shrink;\n }\n }\n\n // Header\n const header = keys.map((key, i) => key.padEnd(finalWidths[i])).join(\" | \");\n logFn(header);\n logFn(keys.map((_, i) => \"-\".repeat(finalWidths[i])).join(\"-|-\"));\n\n // Rows — each data row may produce multiple output lines when cells wrap\n data.forEach((item) => {\n const cellLines = keys.map((key, i) =>\n wrapText(cellToString(item[key]), finalWidths[i]),\n );\n const lineCount = Math.max(...cellLines.map((l) => l.length));\n\n for (let line = 0; line < lineCount; line++) {\n const row = keys\n .map((_, i) => {\n const val =\n line < cellLines[i].length ? cellLines[i][line] : \"\";\n return val.padEnd(finalWidths[i]);\n })\n .join(\" | \");\n logFn(row);\n }\n });\n\n if (externalLogValue) {\n logFn(\"\");\n logFn(`Log: ${externalLogValue}`);\n }\n}\n\nfunction toYaml(data: StructuredOutput): string {\n return yaml.dump(data);\n}\n\n/**\n * Check whether `filter` is a syntactically valid JMESPath expression.\n * Returns `null` when valid, otherwise the parser error.\n *\n * Call this at CLI startup to fail fast with a ValidationError instead of\n * letting {@link applyFilter} throw mid-command and be reported as a generic\n * Failure.\n *\n * NOTE: this is a parse-time check only. JMESPath expressions that compile\n * successfully can still throw at evaluation time (e.g. type-coercion errors\n * when functions receive unexpected types). Callers that need a fully\n * closed-box guarantee must additionally wrap {@link applyFilter}.\n */\nexport function validateOutputFilter(filter: string): Error | null {\n try {\n jmespathCompile(filter);\n return null;\n } catch (err: unknown) {\n return err instanceof Error ? err : new Error(String(err));\n }\n}\n\n/**\n * Thrown when a `--output-filter` expression parses successfully but fails at\n * evaluation time (e.g. type-coercion errors when functions receive unexpected\n * types). Carries `instructions` and `result` so {@link trackedAction} can\n * surface filter-specific guidance through the failure envelope instead of the\n * generic \"unexpected error\" fallback.\n *\n * Uses a duck-type `__brand` rather than relying on `instanceof`, because each\n * tool bundles its own copy of `@uipath/common` and class identity differs\n * across bundle boundaries.\n */\nexport class FilterEvaluationError extends Error {\n readonly __brand = \"FilterEvaluationError\" as const;\n readonly filter: string;\n readonly errorCode: CliErrorCode = \"invalid_argument\";\n readonly instructions: string;\n readonly retry: RetryHint = \"RetryWillNotFix\";\n readonly result: FailureResultType = RESULTS.ValidationError;\n\n constructor(filter: string, cause: unknown) {\n const underlying =\n cause instanceof Error ? cause.message : String(cause);\n super(`Filter '${filter}' failed to evaluate: ${underlying}`);\n this.name = \"FilterEvaluationError\";\n this.filter = filter;\n this.instructions =\n `The --output-filter expression '${filter}' failed at evaluation time. ` +\n \"Note that --output-filter operates on the 'Data' field of the envelope, not the full object. \" +\n \"For example, on a list result use 'length(@)' instead of 'Data | length(@)'.\";\n }\n}\n\nfunction applyFilter(\n data: DataRecord[] | DataRecord,\n filter: string,\n): DataRecord[] | DataRecord {\n // Cast: our records are JSON-serialisable at runtime; the recursive\n // JSONValue type from jmespath is structurally compatible but tsc\n // cannot verify the infinite nesting.\n // try/catch (not catchError) because jmespathSearch is synchronous.\n let result: unknown;\n try {\n result = jmespathSearch(\n data as Parameters<typeof jmespathSearch>[0],\n filter,\n );\n } catch (err: unknown) {\n throw new FilterEvaluationError(filter, err);\n }\n if (result == null) return [];\n if (Array.isArray(result)) {\n // If the filter projected scalar values (e.g. [*].Name → [\"a\",\"b\"]),\n // wrap each back into a keyed object so table/plain formatters work.\n if (result.length > 0 && typeof result[0] !== \"object\") {\n // Extract the trailing field name from the expression (e.g. \"[*].Name\" → \"Name\")\n const fieldMatch = filter.match(/\\.(\\w+)$/);\n const key = fieldMatch ? fieldMatch[1] : \"Value\";\n return result.map((v) => ({ [key]: v }));\n }\n return result as DataRecord[];\n }\n if (typeof result === \"object\") return result as DataRecord;\n return { Value: result };\n}\n\nfunction defaultErrorCodeForResult(result: FailureResultType): CliErrorCode {\n switch (result) {\n case RESULTS.AuthenticationError:\n return \"authentication_required\";\n case RESULTS.ConfigError:\n return \"configuration_error\";\n case RESULTS.ValidationError:\n return \"invalid_argument\";\n case RESULTS.TimeoutError:\n return \"timeout\";\n default:\n return \"unknown_error\";\n }\n}\n\nfunction defaultRetryForErrorCode(errorCode: CliErrorCode): RetryHint {\n switch (errorCode) {\n case \"network_error\":\n case \"rate_limited\":\n case \"server_error\":\n case \"timeout\":\n return \"RetryLater\";\n default:\n return \"RetryWillNotFix\";\n }\n}\n\n/**\n * OutputFormatter namespace for formatting and displaying output.\n */\nexport namespace OutputFormatter {\n /**\n * Emit a success envelope.\n *\n * By default every key in `data.Data` is normalized to PascalCase for\n * cross-command output consistency (see {@link normalizeDataKeys}).\n *\n * Pass `{ preserveDataKeys: true }` when the `Data` payload is content that\n * is copied verbatim back into a UiPath artifact and whose key casing is\n * therefore load-bearing — most notably `registry get` node definitions,\n * whose camelCase field names (`inputDefinition`, `inputString`, …) are\n * pasted straight into `.flow` files. PascalCasing those names produces a\n * flow that passes `flow validate` but faults at runtime (the agent/job\n * receives `InputString` while its schema requires `inputString`). With\n * this flag the `Data` payload keeps its original casing; the envelope\n * keys (`Result`/`Code`/`Data`/`Log`/…) are still PascalCased.\n */\n export function success(\n data: SuccessOutput,\n options?: { preserveDataKeys?: boolean },\n ): void {\n data.Log ??= getLogFilePath() || undefined;\n const normalize = !options?.preserveDataKeys;\n if (normalize) {\n data.Data = normalizeDataKeys(data.Data);\n }\n const filter = getOutputFilter();\n if (filter) {\n const filtered = applyFilter(data.Data, filter);\n data.Data = normalize ? normalizeDataKeys(filtered) : filtered;\n }\n logOutput(normalizeOutputKeys(data), getOutputFormat());\n }\n\n /**\n * Format and display an error, then set {@link process.exitCode} to the\n * value from {@link EXIT_CODES} for `data.Result` (falls back to 1).\n *\n * **Side-effect:** sets `process.exitCode` so the process exits with a\n * non-zero status even if no explicit `process.exit()` call follows.\n */\n export function error(data: FailureOutput): void {\n data.Log ??= getLogFilePath() || undefined;\n data.ErrorCode ??= defaultErrorCodeForResult(data.Result);\n data.Retry ??= defaultRetryForErrorCode(data.ErrorCode);\n process.exitCode = EXIT_CODES[data.Result] ?? 1;\n const { SuppressTelemetry, ...envelope } = data;\n if (!SuppressTelemetry) {\n telemetry.trackEvent(CommonTelemetryEvents.Error, {\n result: data.Result,\n errorCode: data.ErrorCode,\n retry: data.Retry,\n message: data.Message,\n });\n }\n logOutput(normalizeOutputKeys(envelope), getOutputFormat());\n }\n\n /** Emit a list result. Always uses `Result: \"Success\"` — an empty list is not an error. */\n export function emitList<T extends DataRecord>(\n code: string,\n items: T[],\n opts?: { emptyInstructions?: string; warning?: string },\n ): void {\n const data: SuccessOutput & {\n Instructions?: string;\n Warning?: string;\n } = {\n Result: RESULTS.Success,\n Code: code,\n Data: items,\n };\n if (items.length === 0 && opts?.emptyInstructions) {\n data.Instructions = opts.emptyInstructions;\n }\n if (opts?.warning) {\n data.Warning = opts.warning;\n }\n success(data);\n }\n\n /**\n * Log an informational/progress message to stderr.\n * Accepts a simple object (e.g., `{ Message: \"...\" }` or `{ Warning: \"...\" }`).\n */\n export function log(data: Record<string, unknown>): void {\n const format = getOutputFormat();\n const sink = getOutputSink();\n const normalized = toPascalCaseData(data) as Record<string, unknown>;\n if (format === \"json\") {\n const json = JSON.stringify(normalized);\n const safe = needsAsciiSafeJson(sink) ? escapeNonAscii(json) : json;\n sink.writeErr(`${safe}\\n`);\n } else {\n for (const [key, value] of Object.entries(normalized)) {\n sink.writeErr(`${key}: ${value}\\n`);\n }\n }\n }\n\n /**\n * Format structured output to a string without writing to console.\n * Useful when the caller needs the formatted string (e.g., Commander's formatHelp).\n */\n export function formatToString(data: StructuredOutput): string {\n const filter = getOutputFilter();\n if (\"Data\" in data && data.Data != null) {\n data.Data = normalizeDataKeys(data.Data);\n if (filter) {\n data.Data = normalizeDataKeys(applyFilter(data.Data, filter));\n }\n }\n const output = normalizeOutputKeys(data);\n const lines: string[] = [];\n const sink = getOutputSink();\n printOutput(\n output,\n getOutputFormat(),\n (msg: string) => {\n lines.push(msg);\n },\n needsAsciiSafeJson(sink),\n );\n return lines.join(\"\\n\");\n }\n}\n",
|
|
48
|
-
"/**\n * PII redactor for telemetry property values.\n *\n * Two layers, applied in order:\n * 1. Name-based hard redact — property names are split on camelCase,\n * snake_case, and kebab-case boundaries, then any token matches a\n * sensitive-word set (token/secret/password/pwd/credential/auth/\n * certificate) triggers [REDACTED]. `key` is only flagged when preceded\n * by a sensitive prefix (apiKey, accessKey, signingKey, …) so benign\n * names like sortKey, cacheKey, keyword pass through.\n * 2. Value detectors — JWTs, UUIDs, emails, URLs, user-home paths are\n * rewritten to a non-reversible form (hash or structural redaction).\n * Long strings are truncated.\n *\n * The goal is defense in depth: even if a new sensitive option slips through\n * without being added to the denylist, value detectors catch common shapes.\n */\n\nconst REDACTED = \"[REDACTED]\";\nconst MAX_VALUE_LENGTH = 200;\n\nconst SENSITIVE_NAME_TOKENS = new Set([\n \"token\",\n \"tokens\",\n \"secret\",\n \"secrets\",\n \"password\",\n \"passwords\",\n \"pwd\",\n \"credential\",\n \"credentials\",\n \"auth\",\n \"authentication\",\n \"authorization\",\n \"authority\",\n \"cert\",\n \"certificate\",\n \"certificates\",\n]);\n\n// Prefixes that, when followed by `key`/`keys`, indicate key material.\n// Anything outside this list (sortKey, cacheKey, lookupKey, partitionKey) is\n// treated as benign — the value detectors still catch token-shaped contents.\nconst SENSITIVE_KEY_PREFIXES = new Set([\n \"api\",\n \"access\",\n \"client\",\n \"private\",\n \"public\",\n \"signing\",\n \"encryption\",\n \"session\",\n \"master\",\n \"shared\",\n \"root\",\n \"ssh\",\n \"rsa\",\n \"aes\",\n \"hmac\",\n \"oauth\",\n]);\n\nconst UUID_PATTERN =\n /\\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\b/gi;\n\n// Domain and TLD are restricted to domain-valid characters so adjacent path\n// suffixes (alice@corp.com/api/v1) don't get swallowed into the match.\nconst EMAIL_PATTERN = /\\b[^\\s@]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b/g;\n\nconst JWT_PATTERN = /\\beyJ[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+/g;\n\nconst LONG_TOKEN_PATTERN = /\\b[A-Za-z0-9_-]{40,}\\b/g;\n\nconst USER_HOME_PATTERN = /([/\\\\])(Users|home)([/\\\\])([^/\\\\]+)/gi;\n\n// Stop at whitespace AND `,`/`;`, which are common URL separators in prose\n// (e.g. \"a=https://x.com,b=https://y.com\") and aren't meaningfully preserved\n// in the redacted output anyway — we keep only protocol+host.\nconst URL_PATTERN = /\\bhttps?:\\/\\/[^\\s,;]+/gi;\n\n// Trailing punctuation that tends to follow, not belong to, a URL in prose.\nconst URL_TRAILING_PUNCT = /[.,;:!?)\\]}>'\"]+$/;\n\n/**\n * Deterministic 32-bit FNV-1a hash, rendered as 8 hex chars.\n * Used for non-cryptographic correlation — lets us tell apart different\n * tenants/emails/GUIDs in telemetry without storing the real value.\n */\nfunction shortHash(input: string): string {\n let hash = 0x811c9dc5;\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i);\n hash = Math.imul(hash, 0x01000193);\n }\n return (hash >>> 0).toString(16).padStart(8, \"0\");\n}\n\nfunction redactUrl(raw: string): string {\n try {\n const url = new URL(raw);\n return `${url.protocol}//${url.host}`;\n } catch {\n return `url#${shortHash(raw)}`;\n }\n}\n\nfunction redactValueDetectors(value: string): string {\n let out = value;\n out = out.replace(JWT_PATTERN, () => REDACTED);\n out = out.replace(URL_PATTERN, (match) => {\n // Peel off trailing prose punctuation (\", \", \".\", etc.) so the URL\n // parses cleanly and the punctuation is preserved in the output.\n const trailing = match.match(URL_TRAILING_PUNCT)?.[0] ?? \"\";\n const core = trailing ? match.slice(0, -trailing.length) : match;\n return `${redactUrl(core)}${trailing}`;\n });\n out = out.replace(\n USER_HOME_PATTERN,\n (_match, sep1: string, folder: string, sep2: string) =>\n `${sep1}${folder}${sep2}<user>`,\n );\n out = out.replace(EMAIL_PATTERN, (match) => `email#${shortHash(match)}`);\n out = out.replace(UUID_PATTERN, (match) => `uuid#${shortHash(match)}`);\n out = out.replace(LONG_TOKEN_PATTERN, () => REDACTED);\n if (out.length > MAX_VALUE_LENGTH) {\n out = `${out.slice(0, MAX_VALUE_LENGTH)}…`;\n }\n return out;\n}\n\ntype TelemetryValue = string | number | boolean;\n\n/**\n * Split a property name into lowercase word tokens, crossing camelCase,\n * snake_case, and kebab-case boundaries. `signingCertificatePassword` →\n * [\"signing\", \"certificate\", \"password\"]; `API_KEY` → [\"api\", \"key\"].\n */\nfunction nameTokens(name: string): string[] {\n return name\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1 $2\")\n .split(/[\\s_-]+/)\n .map((t) => t.toLowerCase())\n .filter(Boolean);\n}\n\nfunction isSensitiveName(name: string): boolean {\n const tokens = nameTokens(name);\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (SENSITIVE_NAME_TOKENS.has(token)) {\n return true;\n }\n if (token === \"key\" || token === \"keys\") {\n const prev = tokens[i - 1];\n if (prev && SENSITIVE_KEY_PREFIXES.has(prev)) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Redact a single telemetry property.\n * Preserves the original value's type (number/boolean pass through unchanged);\n * strings are scanned for sensitive shapes. Returns undefined for null/undefined\n * so callers can drop the key.\n */\nexport function redactProperty(\n name: string,\n value: unknown,\n): TelemetryValue | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (isSensitiveName(name)) {\n return REDACTED;\n }\n if (typeof value === \"boolean\" || typeof value === \"number\") {\n return value;\n }\n if (typeof value !== \"string\") {\n // Objects/arrays: don't risk leaking structure; mark presence only.\n return \"[OBJECT]\";\n }\n return redactValueDetectors(value);\n}\n\n/**\n * Redact an entire property bag. Preserves each value's native type\n * (numbers stay numbers, booleans stay booleans) so downstream sinks like\n * App Insights can still aggregate them as metrics. Undefined values are dropped.\n */\nexport function redactProperties(\n properties: Record<string, unknown>,\n): Record<string, TelemetryValue> {\n const out: Record<string, TelemetryValue> = {};\n for (const [name, value] of Object.entries(properties)) {\n const redacted = redactProperty(name, value);\n if (redacted !== undefined) {\n out[name] = redacted;\n }\n }\n return out;\n}\n",
|
|
49
|
-
"import { Command } from \"commander\";\nimport { catchError } from \"./catch-error\";\nimport {\n CLI_ERROR_CODES,\n type CliErrorCode,\n type ErrorContext,\n EXIT_CODES,\n type FailureResultType,\n OutputFormatter,\n RESULTS,\n RETRY_HINTS,\n type RetryHint,\n} from \"./formatter\";\nimport { logger } from \"./logger\";\nimport { singleton } from \"./singleton\";\nimport { redactProperties } from \"./telemetry/pii-redactor.js\";\nimport { telemetry } from \"./telemetry/telemetry-init.js\";\nimport type { TelemetryProperties } from \"./telemetry/telemetry-service.js\";\n\nexport interface CommandContext {\n exit: (code: number) => void;\n /** AbortSignal wired to SIGINT/SIGTERM. Pass to `pollUntil({ signal })` for graceful cancellation. */\n pollSignal?: AbortSignal;\n}\n\nconst pollSignalSlot = singleton<AbortSignal | undefined>(\"PollSignal\");\nconst cliErrorCodeValues = new Set<string>(CLI_ERROR_CODES);\nconst retryHintValues = new Set<string>(RETRY_HINTS);\n\n/**\n * Default CommandContext for tool packages that sets process.exitCode\n * instead of calling process.exit().\n *\n * `pollSignal` is resolved from globalThis so it works across bundle\n * boundaries — the CLI sets it once, all tool bundles see the same signal.\n */\nexport const processContext: CommandContext = {\n exit: (code: number) => {\n process.exitCode = code;\n },\n get pollSignal(): AbortSignal | undefined {\n return pollSignalSlot.get();\n },\n};\n\n/**\n * Wire an AbortSignal into the process-wide shared slot so all bundles\n * of `@uipath/common` see it via `processContext.pollSignal`.\n *\n * Call once at CLI startup after creating the poll abort controller.\n */\nexport function setProcessContextPollSignal(signal: AbortSignal): void {\n pollSignalSlot.set(signal);\n}\n\n/**\n * Collects the command's invocation parameters — positional arguments\n * (keyed by their registered names) and option flags (from `opts()`) —\n * so they can be attached to the telemetry event. Values flow through the\n * PII redactor downstream, so secrets/tokens/URLs are scrubbed.\n * Undefined values are dropped so the property bag only reflects what the\n * user actually supplied (or what has a default).\n */\nfunction extractCommandParams(cmd: Command): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n const registered = cmd.registeredArguments ?? [];\n const processed = cmd.processedArgs ?? [];\n for (let i = 0; i < registered.length; i++) {\n const value = processed[i];\n if (value === undefined) {\n continue;\n }\n const name = registered[i].name();\n if (name) {\n params[name] = value;\n }\n }\n for (const [key, value] of Object.entries(cmd.opts())) {\n if (value !== undefined) {\n params[key] = value;\n }\n }\n return params;\n}\n\n/**\n * Derives a telemetry event name from the command hierarchy.\n * Walks up the parent chain, collects command names, strips the root,\n * and always prepends \"uip\" so all events share a uniform prefix.\n * Names are lowercase dot-separated, mirroring the CLI invocation.\n *\n * Example: `uip maestro processes list` → `\"uip.maestro.processes.list\"`\n * Example: `uip login` → `\"uip.login\"`\n */\nfunction deriveCommandPath(cmd: Command): string {\n const parts: string[] = [];\n let current: Command | null = cmd;\n while (current) {\n const name = current.name();\n if (name) {\n parts.unshift(name);\n }\n current = current.parent as Command | null;\n }\n // Strip the root command (could be \"uip\", \"test\", etc.)\n if (parts.length > 1) {\n parts.shift();\n }\n // Always prefix with \"uip\" for uniform telemetry naming,\n // filtering out any remaining \"uip\" to avoid \"uip.uip\".\n return [\"uip\", ...parts.filter((p) => p !== \"uip\")].join(\".\");\n}\n\nfunction isCliErrorCode(value: unknown): value is CliErrorCode {\n return typeof value === \"string\" && cliErrorCodeValues.has(value);\n}\n\nfunction isRetryHint(value: unknown): value is RetryHint {\n return typeof value === \"string\" && retryHintValues.has(value);\n}\n\nfunction isErrorContext(value: unknown): value is ErrorContext {\n return value !== null && typeof value === \"object\";\n}\n\nfunction commandHelpHint(commandPath: string): string {\n const command = commandPath.replace(/\\./g, \" \");\n return `An unexpected error occurred. Run '${command} --help' to verify command syntax, or run with --log-level debug for details.`;\n}\n\ndeclare module \"commander\" {\n interface Command {\n trackedAction(\n context: CommandContext,\n // biome-ignore lint/suspicious/noExplicitAny: commander action args are untyped\n fn: (...args: any[]) => Promise<void>,\n properties?:\n | TelemetryProperties\n // biome-ignore lint/suspicious/noExplicitAny: commander action args are untyped\n | ((...args: any[]) => TelemetryProperties),\n ): this;\n }\n}\n\nCommand.prototype.trackedAction = function (\n context: CommandContext,\n // biome-ignore lint/suspicious/noExplicitAny: commander action args are untyped\n fn: (...args: any[]) => Promise<void>,\n properties?:\n | TelemetryProperties\n // biome-ignore lint/suspicious/noExplicitAny: commander action args are untyped\n | ((...args: any[]) => TelemetryProperties),\n): Command {\n const command = this as Command;\n\n return this.action(async (...args: unknown[]) => {\n const telemetryName = deriveCommandPath(command);\n const props =\n typeof properties === \"function\" ? properties(...args) : properties;\n const startTime = performance.now();\n let errorMessage: string | undefined;\n const [error] = await catchError(fn(...args));\n if (error) {\n errorMessage =\n error instanceof Error ? error.message : String(error);\n // Debug-only so stderr stays clean for `2>&1 | jq` consumers.\n logger.debug(\n `[trackedAction] ${telemetryName} failed: ${errorMessage}`,\n );\n const typed = error as {\n context?: unknown;\n Context?: unknown;\n errorCode?: unknown;\n ErrorCode?: unknown;\n instructions?: unknown;\n retry?: unknown;\n Retry?: unknown;\n result?: unknown;\n };\n const customInstructions =\n typeof typed.instructions === \"string\"\n ? typed.instructions\n : undefined;\n // Only accept canonical failure Result values; an unknown string\n // would leak into the envelope and yield EXIT_CODES[...] = undefined.\n const customResult =\n typeof typed.result === \"string\" &&\n typed.result !== RESULTS.Success &&\n (Object.values(RESULTS) as string[]).includes(typed.result)\n ? (typed.result as FailureResultType)\n : undefined;\n const finalResult = customResult ?? RESULTS.Failure;\n const typedErrorCode = typed.errorCode ?? typed.ErrorCode;\n const customErrorCode = isCliErrorCode(typedErrorCode)\n ? typedErrorCode\n : undefined;\n const typedRetry = typed.retry ?? typed.Retry;\n const customRetry = isRetryHint(typedRetry)\n ? typedRetry\n : undefined;\n const typedContext = typed.context ?? typed.Context;\n const customContext = isErrorContext(typedContext)\n ? typedContext\n : undefined;\n OutputFormatter.error({\n Result: finalResult,\n ...(customErrorCode ? { ErrorCode: customErrorCode } : {}),\n Message: errorMessage,\n Instructions:\n customInstructions ?? commandHelpHint(telemetryName),\n ...(customRetry ? { Retry: customRetry } : {}),\n ...(customContext ? { Context: customContext } : {}),\n });\n context.exit(EXIT_CODES[finalResult]);\n }\n const durationMs = performance.now() - startTime;\n // Detect failure from both thrown errors and internally-handled\n // failures that set process.exitCode without throwing.\n const success =\n !error &&\n (process.exitCode === undefined || process.exitCode === 0);\n // duration/success are stringified to preserve the pre-redactor\n // telemetry schema — downstream dashboards and Kusto queries expect\n // `success == \"true\"` / string duration. The redactor supports native\n // types for new callers that don't have that constraint.\n //\n // `command: \"true\"` marks this as the root event of a command\n // invocation (one per executed command), so dashboards can count\n // commands issued. Events emitted further down the road (auth,\n // error envelopes, dependencies) omit the property. Placed after\n // the spreads so callers and command params can't override it.\n telemetry.trackEvent(\n telemetryName,\n redactProperties({\n ...extractCommandParams(command),\n ...props,\n command: \"true\",\n duration: String(durationMs),\n success: String(success),\n ...(errorMessage ? { errorMessage } : {}),\n }),\n );\n });\n};\n\nexport { deriveCommandPath };\n",
|
|
50
|
-
"import { OutputFormatter, RESULTS } from \"./formatter\";\nimport { processContext } from \"./trackedAction\";\n\n/**\n * Flags that affirm a destructive operation. `--yes` is the canonical flag for\n * delete/remove commands; `--force` is the established alias used by overwrite\n * commands (`init`, `pull`). Either one satisfies the guard.\n *\n * Add the flag to a command with\n * `.option(\"-y, --yes\", \"Confirm this irreversible operation (required; the CLI never prompts)\")`\n * and gate the handler with {@link requireConfirmation}.\n */\nexport interface ConfirmationFlags {\n yes?: boolean;\n force?: boolean;\n}\n\n/**\n * Guard a destructive operation. Returns `true` when the caller passed `--yes`\n * (or `--force`). Otherwise emits a structured failure naming the flag to pass,\n * sets a non-zero exit code via {@link processContext}, and returns `false` so\n * the handler can bail in one line:\n *\n * ```ts\n * if (!requireConfirmation(options, `delete folder '${id}'`)) return;\n * ```\n *\n * @param flags - the parsed command options (must carry `yes`/`force`).\n * @param operation - a short description of what will happen, e.g.\n * `\"delete folder 'Finance'\"`. Surfaced in the error message.\n */\nexport function requireConfirmation(\n flags: ConfirmationFlags,\n operation: string,\n): boolean {\n if (flags.yes === true || flags.force === true) {\n return true;\n }\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Confirmation required: this will ${operation} and cannot be undone.`,\n Instructions: \"Re-run with --yes to confirm.\",\n });\n processContext.exit(1);\n return false;\n}\n",
|
|
51
|
-
"/**\n * Global console interception guard.\n *\n * Patches `console.log`, `console.info`, `console.warn`, `console.error`,\n * and `console.debug` so that output from third-party dependencies\n * (e.g. applicationinsights, future npm packages) is routed through the\n * OutputSink abstraction instead of writing directly to the terminal.\n *\n * Install once at CLI startup, after the sink is configured:\n *\n * configureLogger({ sink: new TerminalSink() });\n * installConsoleGuard();\n */\n\nimport { getOutputSink } from \"./output-context\";\nimport { singleton } from \"./singleton\";\n\n/**\n * Lightweight printf-style formatter matching the subset of `util.format`\n * used in practice: `%s`, `%d`/`%i`, `%f`, `%o`/`%O`, and `%%`.\n * Extra arguments beyond format specifiers are appended space-separated.\n */\nfunction format(first: unknown, ...rest: unknown[]): string {\n if (typeof first !== \"string\") {\n if (first === undefined && rest.length === 0) return \"\";\n return [first, ...rest].map(String).join(\" \");\n }\n\n let i = 0;\n const result = first.replace(/%[sdifjoO%]/g, (spec) => {\n if (spec === \"%%\") return \"%\";\n if (i >= rest.length) return spec;\n const arg = rest[i++];\n switch (spec) {\n case \"%s\":\n return String(arg);\n case \"%d\":\n case \"%i\":\n return String(parseInt(String(arg), 10));\n case \"%f\":\n return String(parseFloat(String(arg)));\n case \"%j\":\n case \"%o\":\n case \"%O\":\n try {\n return JSON.stringify(arg);\n } catch {\n return String(arg);\n }\n default:\n return spec;\n }\n });\n\n // Append any remaining arguments (matches Node's util.format behavior)\n const extra = rest.slice(i);\n if (extra.length > 0) {\n return result + \" \" + extra.map(String).join(\" \");\n }\n return result;\n}\n\nfunction formatArgs(args: unknown[]): string {\n // Destructure rather than spread: tsc cannot spread unknown[] into (first, ...rest).\n return `${format(args[0], ...args.slice(1))}\\n`;\n}\n\n// Saved originals for restoreConsole().\ninterface SavedConsole {\n log: typeof console.log;\n info: typeof console.info;\n warn: typeof console.warn;\n error: typeof console.error;\n debug: typeof console.debug;\n}\n\n// Cross-bundle guard state — console.* is process-wide, so we only\n// need to patch once. Using singleton() ensures that even if multiple\n// bundles import this module, they share the same installed/originals state.\nconst guardInstalledSlot = singleton<boolean>(\"ConsoleGuardInstalled\");\nconst savedOriginalsSlot = singleton<SavedConsole | undefined>(\n \"ConsoleGuardOriginals\",\n);\n\n/**\n * Install the console guard. Idempotent — calling twice is a no-op.\n *\n * Must be called **after** `configureLogger({ sink })` so that\n * `getOutputSink()` resolves to the correct sink.\n */\nexport function installConsoleGuard(): void {\n if (guardInstalledSlot.get(false)) return;\n\n // Save originals before patching.\n const originals: SavedConsole = {\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error,\n debug: console.debug,\n };\n savedOriginalsSlot.set(originals);\n\n // Reentrance flag — prevents infinite loops if a sink itself calls\n // console.* (defensive; current sinks don't, but custom sinks might).\n let reentrant = false;\n\n function guardedWriter(\n original: (...args: unknown[]) => void,\n ): (...args: unknown[]) => void {\n return (...args: unknown[]) => {\n if (reentrant) {\n original.apply(console, args);\n return;\n }\n reentrant = true;\n try {\n getOutputSink().writeErr(formatArgs(args));\n } finally {\n reentrant = false;\n }\n };\n }\n\n console.log = guardedWriter(originals.log);\n console.info = guardedWriter(originals.info);\n console.warn = guardedWriter(originals.warn);\n console.error = guardedWriter(originals.error);\n console.debug = guardedWriter(originals.debug);\n\n guardInstalledSlot.set(true);\n}\n\n/**\n * Restore the original console methods. Intended for testing teardown.\n */\nexport function restoreConsole(): void {\n const originals = savedOriginalsSlot.get();\n if (!originals) return;\n\n console.log = originals.log;\n console.info = originals.info;\n console.warn = originals.warn;\n console.error = originals.error;\n console.debug = originals.debug;\n\n guardInstalledSlot.clear();\n}\n",
|
|
52
|
-
"/** Home directory for all UiPath CLI data: ~/.uipath/ */\nexport const UIPATH_HOME_DIR = \".uipath\";\n\n/** Auth credentials filename within home directory */\nexport const AUTH_FILENAME = \".auth\";\n\n/** CLI config filename */\nexport const CONFIG_FILENAME = \"config.json\";\n\n/** Default UiPath cloud base URL */\nexport const DEFAULT_BASE_URL = \"https://cloud.uipath.com\";\n\n/** Default page size for paginated API list commands */\nexport const DEFAULT_PAGE_SIZE = 50;\n\n/** Auth callback server timeout (5 minutes) */\nexport const DEFAULT_AUTH_TIMEOUT_MS = 5 * 60 * 1000;\n\n/** HTTP fetch timeout (30 seconds) */\nexport const DEFAULT_FETCH_TIMEOUT_MS = 30_000;\n\n/** Localhost OIDC redirect URI */\nexport const DEFAULT_REDIRECT_URI = \"http://localhost:8104/oidc/login\";\n",
|
|
53
|
-
"/**\n * Process-wide interactivity mode.\n *\n * The CLI prompts by default only when both stdout and stdin are attached to an\n * interactive terminal. An automation agent or CI runner can never answer a\n * `y/N` prompt, so piped input or redirected output stays non-interactive.\n * Commands consult {@link canPrompt} before showing any optional/selection\n * prompt; when it returns `false` they must fall back to a flag-driven path or\n * fail fast with a structured error naming the flag to pass.\n *\n * Modes:\n * - \"never\" — never prompt.\n * - \"auto\" — prompt only when stdout and stdin are TTYs (the default).\n * - \"always\" — always prompt (assume a prompt-capable terminal).\n *\n * Stored via {@link singleton} so the value set once by the CLI host is visible\n * from every tool bundle's own copy of `@uipath/common`.\n *\n * Note: destructive confirmation does NOT use this — it is flag-only and\n * fail-closed (see `confirmation.ts`). Interactivity governs *optional* prompts.\n */\n\nimport { getOutputSink } from \"./output-context\";\nimport { singleton } from \"./singleton\";\n\nexport type InteractivityMode = \"never\" | \"auto\" | \"always\";\n\nconst modeSlot = singleton<InteractivityMode>(\"InteractivityMode\");\n\n/** Set the process-wide interactivity mode. Called once at CLI startup. */\nexport function setInteractivityMode(mode: InteractivityMode): void {\n modeSlot.set(mode);\n}\n\n/** Get the current interactivity mode, defaulting to \"auto\". */\nexport function getInteractivityMode(): InteractivityMode {\n return modeSlot.get(\"auto\") ?? \"auto\";\n}\n\n/**\n * True when the CLI may show an interactive prompt right now.\n *\n * \"always\" always prompts; \"never\" never does; \"auto\" prompts only when the\n * output sink reports an interactive (TTY) terminal and prompt-readable stdin.\n */\nexport function canPrompt(): boolean {\n const mode = getInteractivityMode();\n if (mode === \"always\") {\n return true;\n }\n if (mode === \"never\") {\n return false;\n }\n const capabilities = getOutputSink().capabilities;\n return capabilities.isInteractive && capabilities.canReadInput;\n}\n",
|
|
54
|
-
"import { type Command, Option } from \"commander\";\nimport { getOutputSink } from \"./output-context\";\n\nexport interface OptionAliasResult<T> {\n value: T | undefined;\n usedDeprecated: boolean;\n error?: {\n message: string;\n instructions: string;\n };\n}\n\nexport function resolveDeprecatedOptionAlias<T>({\n preferredValue,\n deprecatedValue,\n preferredFlag,\n deprecatedFlag,\n}: {\n preferredValue: T | undefined;\n deprecatedValue: T | undefined;\n preferredFlag: string;\n deprecatedFlag: string;\n}): OptionAliasResult<T> {\n const hasPreferred = preferredValue !== undefined;\n const hasDeprecated = deprecatedValue !== undefined;\n\n if (hasPreferred && hasDeprecated) {\n return {\n value: undefined,\n usedDeprecated: true,\n error: {\n message: `${deprecatedFlag} and ${preferredFlag} are aliases. Use only ${preferredFlag}.`,\n instructions: `Replace ${deprecatedFlag} with ${preferredFlag}.`,\n },\n };\n }\n\n return {\n value: hasPreferred ? preferredValue : deprecatedValue,\n usedDeprecated: hasDeprecated,\n };\n}\n\nexport function warnDeprecatedOptionAlias(\n deprecatedFlag: string,\n preferredFlag: string,\n): void {\n getOutputSink().writeErr(\n `[WARN] ${deprecatedFlag} is deprecated. Use ${preferredFlag} instead.\\n`,\n );\n}\n\nconst TENANT_SWITCH_COMMAND = \"uip login tenant set <tenant>\";\n\nexport function createHiddenDeprecatedTenantOption(\n flags = \"-t, --tenant <tenant-name>\",\n): Option {\n return new Option(\n flags,\n `Tenant name. Deprecated; use ${TENANT_SWITCH_COMMAND} to switch active tenants.`,\n )\n .hideHelp()\n .argParser((tenant: string) => {\n warnDeprecatedTenantOption(tenant);\n return tenant;\n });\n}\n\nexport function addHiddenDeprecatedTenantOption<T extends Command>(\n command: T,\n flags = \"-t, --tenant <tenant-name>\",\n): T {\n return command.addOption(createHiddenDeprecatedTenantOption(flags)) as T;\n}\n\nexport function warnDeprecatedTenantOption(tenant?: string): void {\n if (tenant === undefined) return;\n warnDeprecatedOptionAlias(\"--tenant\", TENANT_SWITCH_COMMAND);\n}\n",
|
|
55
|
-
"/**\n * Shared commander option-value validators.\n *\n * Use these as the third argument to `.option()` to coerce + validate\n * raw string input before it reaches command handlers. Throws\n * `commander.InvalidArgumentError` so commander emits a structured\n * ValidationError result instead of letting bad input propagate.\n *\n * Example:\n * .option(\"-l, --limit <number>\", \"Maximum results\", parseLimit)\n */\n\nimport { InvalidArgumentError } from \"commander\";\n\n/**\n * Parse and validate a positive-integer `--limit` value.\n * Accepts: integers in [1, max] (default max: 10000)\n * Rejects: non-numeric, negative, zero, fractional, > max\n */\nexport function parseLimit(raw: string, _previous?: number): number {\n return parseBoundedInt(raw, \"--limit\", { min: 1, max: 10000 });\n}\n\n/**\n * Parse and validate a non-negative-integer `--offset` value.\n * Accepts: integers in [0, max] (default max: 1_000_000)\n * Rejects: non-numeric, negative, fractional, > max\n */\nexport function parseOffset(raw: string, _previous?: number): number {\n return parseBoundedInt(raw, \"--offset\", { min: 0, max: 1_000_000 });\n}\n\n/**\n * Generic bounded-integer parser used by parseLimit/parseOffset.\n * Accepts integers in [bounds.min, bounds.max] (inclusive).\n * Use `min: 0` for non-negative, `min: 1` for strictly positive.\n * Exposed so other commands can build custom-bounded validators.\n */\nexport function parseBoundedInt(\n raw: string,\n optionName: string,\n bounds: { min: number; max: number },\n): number {\n const normalized = raw.trim();\n if (normalized === \"\") {\n throw new InvalidArgumentError(\n `${optionName} requires a value (got empty).`,\n );\n }\n // Reject anything that doesn't look like a plain integer\n if (!/^-?\\d+$/.test(normalized)) {\n throw new InvalidArgumentError(\n `${optionName} must be an integer, got '${normalized}'.`,\n );\n }\n const n = parseInt(normalized, 10);\n if (n < bounds.min || n > bounds.max) {\n throw new InvalidArgumentError(\n `${optionName} must be between ${bounds.min} and ${bounds.max}, got ${n}.`,\n );\n }\n return n;\n}\n\nexport function parsePositiveInteger(raw: string): number | undefined {\n return parseSafeInteger(raw, 1);\n}\n\nexport function parseNonNegativeInteger(raw: string): number | undefined {\n return parseSafeInteger(raw, 0);\n}\n\nfunction parseSafeInteger(raw: string, min: number): number | undefined {\n const normalized = raw.trim();\n if (!/^\\d+$/.test(normalized)) {\n return undefined;\n }\n\n const parsed = Number(normalized);\n if (!Number.isSafeInteger(parsed) || parsed < min) {\n return undefined;\n }\n\n return parsed;\n}\n",
|
|
56
|
-
"/**\n * Convert milliseconds to a human-readable HH:MM:SS duration string.\n *\n * Returns `\"00:00:00\"` for invalid input (negative, NaN, Infinity).\n *\n * @example\n * ```ts\n * msToDuration(5_023_000); // \"01:23:43\"\n * msToDuration(45_000); // \"00:00:45\"\n * msToDuration(0); // \"00:00:00\"\n * ```\n */\nexport function msToDuration(ms: number): string {\n if (!Number.isFinite(ms) || ms < 0) {\n return \"00:00:00\";\n }\n const totalSec = Math.floor(ms / 1000);\n const h = Math.floor(totalSec / 3600);\n const m = Math.floor((totalSec % 3600) / 60);\n const s = totalSec % 60;\n return [h, m, s].map((v) => String(v).padStart(2, \"0\")).join(\":\");\n}\n",
|
|
57
|
-
"/**\n * Shared polling utility types.\n *\n * These interfaces define the contract for `pollUntil` — a generic,\n * callback-driven polling utility that any tool can consume. The design\n * is driven by the union of all consumer requirements across the codebase.\n *\n * Callback ordering contract (per successful poll iteration):\n * beforePoll → fn() → onPoll → getStatus/onStatusChange → until → onComplete (if terminal)\n */\n\n/**\n * Context passed to dynamic functions (`intervalMs`, `beforePoll`).\n * Gives consumers full visibility into the polling state so they can\n * make informed decisions (e.g., token refresh after N minutes,\n * adaptive interval based on last status).\n */\nexport interface PollContext<T> {\n /** Number of completed successful polls (0 before first poll). */\n pollCount: number;\n /** Time elapsed since polling started, in ms. */\n elapsedMs: number;\n /** Result of the last successful poll. `undefined` before first success. */\n lastResult?: T;\n /** Status string from the last poll. `undefined` if `getStatus` is not provided or before the first poll. */\n lastStatus?: string;\n}\n\n/**\n * Backoff configuration for exponential backoff.\n * When `backoff` is set on `PollUntilOptions`, it overrides `intervalMs`.\n */\nexport interface BackoffConfig {\n /** Initial interval in ms. (default: 1000) */\n initialMs?: number;\n /** Multiplier applied per poll. (default: 2) */\n multiplier?: number;\n /** Maximum interval cap in ms. (default: 30000) */\n maxMs?: number;\n /**\n * Jitter factor in [0, 1]. Randomizes the interval to avoid thundering herd.\n * 0 = no jitter, 1 = full jitter (uniform in [0, computed]).\n * (default: 0.5 — equal jitter)\n */\n jitter?: number;\n}\n\n/**\n * Callback type for `onError`. Return `ErrorDecision.Abort` to stop polling,\n * or return nothing to continue with retry logic. Async-capable.\n */\nexport type OnErrorCallback = (\n error: Error,\n consecutiveCount: number,\n // biome-ignore lint/suspicious/noConfusingVoidType: void is required here — callbacks that conditionally return \"abort\" or nothing need void in the union\n) => void | ErrorDecision | Promise<void | ErrorDecision>;\n\n/** Resolved backoff config with all defaults filled in. */\nexport interface ResolvedBackoffConfig {\n initialMs: number;\n multiplier: number;\n maxMs: number;\n jitter: number;\n}\n\nexport interface PollUntilOptions<T> {\n /** Async function that fetches current state. */\n fn: () => Promise<T>;\n /** Predicate — return `true` when polling should stop. */\n until: (result: T) => boolean;\n\n // --- Status extraction (enables change detection + logging) ----------------\n\n /** Extract a status string from the poll result for change detection and logging. */\n getStatus?: (result: T) => string;\n\n // --- Timing ----------------------------------------------------------------\n\n /**\n * Polling interval in ms for **successful** polls. Static number or dynamic function.\n *\n * Dynamic function receives `PollContext` and returns the interval for the\n * upcoming sleep. Use for custom scheduling, e.g.:\n * ```ts\n * intervalMs: (ctx) => ctx.lastStatus === \"Running\" ? 2000 : 5000\n * ```\n *\n * (default: 5000)\n */\n intervalMs?: number | ((ctx: PollContext<T>) => number);\n\n /**\n * Max time to poll in ms. `0` means no limit — poll indefinitely until\n * a terminal state, abort, or interrupt.\n *\n * (default: 1_800_000 — 30 minutes)\n */\n timeoutMs?: number;\n\n // --- Error retry backoff (applies to error sleeps only) --------------------\n\n /**\n * Exponential backoff for **error retries only**. Does not affect\n * the interval between successful polls (that's `intervalMs`).\n *\n * - `true` — use defaults: `{ initialMs: 1000, multiplier: 2, maxMs: 30000 }`\n * - `BackoffConfig` object — customize any or all fields; unset fields use defaults.\n * - `false` / `undefined` — disabled, errors retry with `intervalMs` instead.\n *\n * The backoff counter resets when a poll succeeds.\n */\n backoff?: boolean | BackoffConfig;\n\n // --- Cancellation ----------------------------------------------------------\n\n /**\n * `AbortSignal` for external cancellation (from parent operation, tests, etc.).\n *\n * When the signal fires, the current sleep is interrupted immediately and\n * `pollUntil` returns with `outcome: \"interrupted\"`.\n *\n * For SIGINT/SIGTERM support, use `createPollAbortController()` at the CLI\n * entry point and pass its signal here.\n */\n signal?: AbortSignal;\n\n // --- Error resilience ------------------------------------------------------\n\n /**\n * Max consecutive poll errors before aborting (throwing).\n *\n * - `> 0` — throw after this many consecutive failures.\n * - `0` — never auto-abort on errors. Only timeout, `onError` returning\n * `\"abort\"`, or signal interruption stops polling. Used by consumers\n * that expect transient errors (e.g., integration-service OAuth,\n * trace streaming with 404s during startup).\n *\n * (default: 3)\n */\n maxConsecutiveErrors?: number;\n\n // --- Logging ---------------------------------------------------------------\n\n /**\n * Label for log messages (e.g., `\"job abc123\"`, `\"deployment xyz\"`).\n *\n * When provided, `pollUntil` emits structured log lines via `logger.info`\n * for start, progress, status changes, errors, and completion.\n *\n * Omit for silent mode — zero log output from the utility. Consumers\n * can still use callbacks (`onPoll`, etc.) for custom logging.\n */\n label?: string;\n\n /**\n * Prefix for log messages. Appears as `[prefix]` before each log line.\n * (default: `\"wait\"`)\n *\n * Override to match your command name, e.g. `\"deploy\"`, `\"activate\"`.\n */\n logPrefix?: string;\n\n /**\n * Interval between progress log lines in ms.\n *\n * Progress lines are only emitted when `label` is provided.\n *\n * (default: 30_000)\n */\n logIntervalMs?: number;\n\n // --- Lifecycle callbacks (all optional) ------------------------------------\n\n /**\n * Called BEFORE each poll. Async-capable.\n *\n * Use for token refresh, rate-limit checks, or any pre-flight logic.\n * If this throws, the error is treated as a poll error (increments\n * `consecutiveErrors`, fires `onError`, follows retry logic).\n */\n beforePoll?: (ctx: PollContext<T>) => void | Promise<void>;\n\n /**\n * Called after each successful `fn()` call.\n *\n * Fires on EVERY successful poll, including the terminal one (before\n * `onComplete`). Consumers that need to emit incremental data (e.g.,\n * trace streaming with span deduplication) use this callback.\n */\n onPoll?: (result: T, elapsedMs: number) => void;\n\n /**\n * Called when `getStatus()` detects a status transition.\n *\n * Only fires when the extracted status string differs from the previous\n * poll's status. `getStatus` must be provided for this to work.\n */\n onStatusChange?: (newStatus: string, oldStatus: string, result: T) => void;\n\n /**\n * Called on each poll error (including `beforePoll` errors).\n *\n * Return `\"abort\"` to stop polling immediately — `pollUntil` will return\n * with `outcome: \"aborted\"`. Return `void` (or nothing) to continue\n * with the retry/timeout logic.\n *\n * Async-capable: the return value is awaited if a Promise is returned.\n *\n * Use for selective error handling, e.g.:\n * ```ts\n * onError: (error) => {\n * if (error.message.includes(\"404\")) return; // transient, continue\n * return \"abort\"; // fatal, stop\n * }\n * ```\n */\n onError?: OnErrorCallback;\n\n /**\n * Called when polling completes (terminal state reached via `until`).\n */\n onComplete?: (result: T, elapsedMs: number) => void;\n\n /**\n * Called when the timeout deadline is reached without a terminal state.\n * `lastResult` may be `undefined` if no poll succeeded.\n */\n onTimeout?: (lastResult: T | undefined, elapsedMs: number) => void;\n\n /**\n * Called when polling is interrupted via `AbortSignal`.\n * `lastResult` may be `undefined` if no poll succeeded.\n */\n onInterrupt?: (lastResult: T | undefined, elapsedMs: number) => void;\n}\n\n/**\n * Result returned by `pollUntil`.\n *\n * - `\"completed\"` — `until(result)` returned `true`. `data` is guaranteed to be `T`.\n * - `\"timeout\"` — deadline reached. `data` is the last successful poll result, or `undefined`.\n * - `\"interrupted\"` — `AbortSignal` fired. `data` is the last successful poll result, or `undefined`.\n * - `\"aborted\"` — consumer's `onError` returned `\"abort\"`. `data` is the last successful poll result, or `undefined`.\n * - `\"failed\"` — `maxConsecutiveErrors` exceeded. `error` contains the last poll error.\n */\nexport interface PollUntilResult<T> {\n /** The final polled value. Guaranteed `T` when `outcome` is `\"completed\"`. `T | undefined` otherwise. */\n data: T | undefined;\n /** How the poll ended. Compare with `PollOutcome` constants. */\n outcome: PollOutcome;\n /** Total elapsed time in ms. */\n elapsedMs: number;\n /** The error associated with a non-successful outcome. Set when `outcome` is `\"aborted\"` or `\"failed\"`; `undefined` otherwise. */\n error?: Error;\n}\n\n// =============================================================================\n// Outcome and error-decision constants — avoid magic strings\n// =============================================================================\n\n/** Possible outcomes of a `pollUntil` call. Use instead of string literals. */\nexport const PollOutcome = {\n /** `until(result)` returned `true`. `data` is guaranteed to be `T`. */\n Completed: \"completed\",\n /** Deadline reached without terminal state. */\n Timeout: \"timeout\",\n /** `AbortSignal` fired. */\n Interrupted: \"interrupted\",\n /** Consumer's `onError` returned `ErrorDecision.Abort`. */\n Aborted: \"aborted\",\n /** `maxConsecutiveErrors` exceeded. `error` field has the last poll error. */\n Failed: \"failed\",\n} as const;\n\nexport type PollOutcome = (typeof PollOutcome)[keyof typeof PollOutcome];\n\n/** Return values from `onError` callback. Use instead of string literals. */\nexport const ErrorDecision = {\n /** Stop polling immediately. */\n Abort: \"abort\",\n} as const;\n\nexport type ErrorDecision = (typeof ErrorDecision)[keyof typeof ErrorDecision];\n\n/** Default values for `PollUntilOptions`. */\nexport const POLL_DEFAULTS = {\n intervalMs: 5000,\n timeoutMs: 1_800_000,\n maxConsecutiveErrors: 3,\n logIntervalMs: 30_000,\n logPrefix: \"wait\",\n} as const;\n\n/** Default values for `BackoffConfig`. */\nexport const BACKOFF_DEFAULTS: ResolvedBackoffConfig = {\n initialMs: 1000,\n multiplier: 2,\n maxMs: 30_000,\n jitter: 0.5,\n} as const;\n\n/** Minimum allowed polling interval in ms. Prevents CPU spin on bad dynamic values. */\nexport const MIN_INTERVAL_MS = 100;\n",
|
|
58
|
-
"import { PollOutcome } from \"./types\";\n\n/** Canonical taxonomy for poll-loop failures; library callers branch on this without parsing the message. */\nexport type PollFailureReason = \"poll_timeout\" | \"poll_failed\" | \"poll_aborted\";\n\nexport interface PollFailureMapped {\n reason: PollFailureReason;\n /** `${label} polling {timed out | failed: <err> | was interrupted | was aborted}`. */\n message: string;\n /** `2` for Timeout, `1` otherwise. */\n exitCode: number;\n}\n\ntype NonCompletedOutcome = Exclude<PollOutcome, typeof PollOutcome.Completed>;\n\nconst REASON_BY_OUTCOME: Record<NonCompletedOutcome, PollFailureReason> = {\n [PollOutcome.Timeout]: \"poll_timeout\",\n [PollOutcome.Failed]: \"poll_failed\",\n [PollOutcome.Interrupted]: \"poll_failed\",\n [PollOutcome.Aborted]: \"poll_aborted\",\n};\n\n/**\n * Maps a non-completed `pollUntil` result to `{ reason, message, exitCode }`.\n * `label` prefixes the message (e.g. `\"Deployment\"` → `\"Deployment polling timed out\"`).\n * Caller must check the outcome is non-completed before invoking.\n */\nexport function mapPollFailure(\n pollResult: { outcome: PollOutcome; error?: { message?: string } },\n label: string,\n): PollFailureMapped {\n const outcome = pollResult.outcome as NonCompletedOutcome;\n const errMsg = pollResult.error?.message ?? \"too many consecutive errors\";\n const messageByOutcome: Record<NonCompletedOutcome, string> = {\n [PollOutcome.Timeout]: `${label} polling timed out`,\n [PollOutcome.Failed]: `${label} polling failed: ${errMsg}`,\n [PollOutcome.Interrupted]: `${label} polling was interrupted`,\n [PollOutcome.Aborted]: `${label} polling was aborted`,\n };\n return {\n reason: REASON_BY_OUTCOME[outcome],\n message: messageByOutcome[outcome],\n exitCode: outcome === PollOutcome.Timeout ? 2 : 1,\n };\n}\n",
|
|
59
|
-
"import { catchError } from \"../catch-error\";\nimport { logger } from \"../logger\";\nimport { msToDuration } from \"./format-utils\";\nimport type {\n PollContext,\n PollUntilOptions,\n PollUntilResult,\n ResolvedBackoffConfig,\n} from \"./types\";\nimport {\n BACKOFF_DEFAULTS,\n ErrorDecision,\n MIN_INTERVAL_MS,\n POLL_DEFAULTS,\n PollOutcome,\n} from \"./types\";\n\n// =============================================================================\n// Interval resolution\n// =============================================================================\n\n/** Resolve `intervalMs` into a function for normal (successful) poll sleeps. */\nfunction resolveIntervalFn<T>(\n options: PollUntilOptions<T>,\n): (ctx: PollContext<T>) => number {\n if (typeof options.intervalMs === \"function\") {\n return options.intervalMs;\n }\n const staticInterval = options.intervalMs ?? POLL_DEFAULTS.intervalMs;\n return () => staticInterval;\n}\n\n/**\n * Resolve `backoff` into a function for error retry sleeps.\n * Returns undefined if backoff is not enabled — caller falls back to intervalMs.\n * The `errorCount` parameter is the consecutive error count (1-based).\n */\nfunction resolveBackoffFn(\n options: Pick<PollUntilOptions<unknown>, \"backoff\">,\n): ((errorCount: number) => number) | undefined {\n if (!options.backoff) return undefined;\n\n const config: ResolvedBackoffConfig =\n options.backoff === true\n ? { ...BACKOFF_DEFAULTS }\n : {\n initialMs:\n options.backoff.initialMs ?? BACKOFF_DEFAULTS.initialMs,\n multiplier:\n options.backoff.multiplier ?? BACKOFF_DEFAULTS.multiplier,\n maxMs: options.backoff.maxMs ?? BACKOFF_DEFAULTS.maxMs,\n jitter: Math.min(\n 1,\n Math.max(\n 0,\n options.backoff.jitter ?? BACKOFF_DEFAULTS.jitter,\n ),\n ),\n };\n\n return (errorCount: number) => {\n // errorCount is 1-based; exponent is 0-based (first error = no backoff yet)\n const exponent = Math.min(errorCount - 1, 30);\n const raw = Math.min(\n config.initialMs * config.multiplier ** exponent,\n config.maxMs,\n );\n // Apply jitter: interval becomes uniform in [raw * (1 - jitter), raw]\n if (config.jitter > 0) {\n const jitterAmount = raw * config.jitter;\n return raw - jitterAmount * Math.random();\n }\n return raw;\n };\n}\n\n/** Clamp interval to safe bounds. NaN/Infinity → default. Min 100ms. */\nfunction clampInterval(\n raw: number,\n label: string | undefined,\n prefix: string,\n): number {\n if (!Number.isFinite(raw) || Number.isNaN(raw)) {\n if (label) {\n logger.warn(\n `[${prefix}] ${label} — intervalMs returned ${raw}, falling back to ${POLL_DEFAULTS.intervalMs}ms`,\n );\n }\n return POLL_DEFAULTS.intervalMs;\n }\n if (raw < MIN_INTERVAL_MS) {\n if (label) {\n logger.warn(\n `[${prefix}] ${label} — intervalMs ${raw}ms clamped to minimum ${MIN_INTERVAL_MS}ms`,\n );\n }\n return MIN_INTERVAL_MS;\n }\n return raw;\n}\n\n// =============================================================================\n// Interruptible sleep\n// =============================================================================\n\n/** Extract or create an Error with name \"AbortError\" from a signal's reason. */\nfunction abortError(signal: AbortSignal): Error {\n const reason: unknown = signal.reason;\n // DOMException from default abort() already has name \"AbortError\"\n if (reason instanceof Error && reason.name === \"AbortError\") {\n return reason;\n }\n // Wrap in a new Error with name \"AbortError\"\n const msg =\n reason instanceof Error\n ? reason.message\n : typeof reason === \"string\" || typeof reason === \"number\"\n ? String(reason)\n : \"Aborted\";\n const err = new Error(msg);\n err.name = \"AbortError\";\n return err;\n}\n\n/** Sleep that rejects immediately when signal fires. */\nfunction interruptibleSleep(\n ms: number,\n signal: AbortSignal | undefined,\n): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (signal?.aborted) {\n reject(abortError(signal));\n return;\n }\n\n let onAbort: (() => void) | undefined;\n const cleanup = () => {\n if (onAbort) {\n signal?.removeEventListener(\"abort\", onAbort);\n }\n };\n\n const timer = setTimeout(() => {\n cleanup();\n resolve();\n }, ms);\n\n if (signal) {\n onAbort = () => {\n clearTimeout(timer);\n cleanup();\n reject(abortError(signal));\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n });\n}\n\n// =============================================================================\n// Internal mutable state shared across the loop\n// =============================================================================\n\ninterface PollState<T> {\n pollCount: number;\n consecutiveErrors: number;\n lastResult: T | undefined;\n lastStatus: string | undefined;\n lastLogAt: number;\n interrupted: boolean;\n}\n\n/** Resolved (with defaults applied) read-only config for a pollUntil run. */\ninterface ResolvedConfig<T> {\n fn: () => Promise<T>;\n until: (result: T) => boolean;\n getStatus?: (result: T) => string;\n signal?: AbortSignal;\n label?: string;\n beforePoll?: PollUntilOptions<T>[\"beforePoll\"];\n onPoll?: PollUntilOptions<T>[\"onPoll\"];\n onStatusChange?: PollUntilOptions<T>[\"onStatusChange\"];\n onError?: PollUntilOptions<T>[\"onError\"];\n onComplete?: PollUntilOptions<T>[\"onComplete\"];\n onTimeout?: PollUntilOptions<T>[\"onTimeout\"];\n onInterrupt?: PollUntilOptions<T>[\"onInterrupt\"];\n timeoutMs: number;\n maxConsecutiveErrors: number;\n logIntervalMs: number;\n logPrefix: string;\n getInterval: (ctx: PollContext<T>) => number;\n getErrorInterval: ((errorCount: number) => number) | undefined;\n startTime: number;\n deadline: number; // 0 = no deadline\n}\n\n/** Sanitize maxConsecutiveErrors: undefined → default (3), NaN/negative/Infinity → 0 (unlimited). */\nfunction sanitizeMaxErrors(value: number | undefined): number {\n if (value === undefined) return POLL_DEFAULTS.maxConsecutiveErrors;\n if (!Number.isFinite(value) || value < 0) return 0;\n return Math.floor(value);\n}\n\nfunction resolveConfig<T>(options: PollUntilOptions<T>): ResolvedConfig<T> {\n const timeoutMs = Math.max(0, options.timeoutMs ?? POLL_DEFAULTS.timeoutMs);\n const startTime = Date.now();\n return {\n fn: options.fn,\n until: options.until,\n getStatus: options.getStatus,\n signal: options.signal,\n label: options.label,\n beforePoll: options.beforePoll,\n onPoll: options.onPoll,\n onStatusChange: options.onStatusChange,\n onError: options.onError,\n onComplete: options.onComplete,\n onTimeout: options.onTimeout,\n onInterrupt: options.onInterrupt,\n timeoutMs,\n maxConsecutiveErrors: sanitizeMaxErrors(options.maxConsecutiveErrors),\n logIntervalMs: options.logIntervalMs ?? POLL_DEFAULTS.logIntervalMs,\n logPrefix: options.logPrefix ?? POLL_DEFAULTS.logPrefix,\n getInterval: resolveIntervalFn(options),\n getErrorInterval: resolveBackoffFn(options),\n startTime,\n deadline: timeoutMs > 0 ? startTime + timeoutMs : 0,\n };\n}\n\n// =============================================================================\n// Loop helpers — each handles one concern\n// =============================================================================\n\n/** Timing-only fields from ResolvedConfig, avoids generic type parameter issues. */\ninterface TimingConfig {\n startTime: number;\n deadline: number;\n}\n\nfunction elapsed(cfg: TimingConfig): number {\n return Date.now() - cfg.startTime;\n}\n\nfunction isPastDeadline(cfg: TimingConfig): boolean {\n return cfg.deadline > 0 && Date.now() >= cfg.deadline;\n}\n\nfunction buildContext<T>(\n cfg: ResolvedConfig<T>,\n state: PollState<T>,\n): PollContext<T> {\n return {\n pollCount: state.pollCount,\n elapsedMs: elapsed(cfg),\n lastResult: state.lastResult,\n lastStatus: state.lastStatus,\n };\n}\n\n/** Cap error messages to prevent bloated wrapping from large API responses. */\nfunction truncateMessage(msg: string, maxLen = 500): string {\n return msg.length > maxLen ? `${msg.slice(0, maxLen)}...` : msg;\n}\n\n/**\n * Handle a poll error (from either `beforePoll` or `fn`).\n * Returns ErrorDecision.Abort if the consumer says to stop,\n * undefined to retry, or throws if max errors exceeded.\n */\nasync function handlePollError<T>(\n error: Error,\n errorSource: string,\n cfg: ResolvedConfig<T>,\n state: PollState<T>,\n): Promise<\"abort\" | \"failed\" | undefined> {\n state.consecutiveErrors++;\n\n const onError = cfg.onError;\n if (onError) {\n const [callbackErr, decision] = await catchError(\n Promise.resolve().then(() =>\n onError(error, state.consecutiveErrors),\n ),\n );\n if (callbackErr) {\n if (cfg.label) {\n logger.warn(\n `[${cfg.logPrefix}] ${cfg.label} — onError callback threw: ${callbackErr.message}`,\n );\n }\n } else if (decision === ErrorDecision.Abort) {\n return \"abort\";\n }\n }\n\n if (cfg.label) {\n const maxLabel =\n cfg.maxConsecutiveErrors === 0\n ? \"unlimited\"\n : String(cfg.maxConsecutiveErrors);\n logger.warn(\n `[${cfg.logPrefix}] ${cfg.label} — ${errorSource} error (${state.consecutiveErrors}/${maxLabel}): ${error.message}, retrying...`,\n );\n }\n\n if (\n cfg.maxConsecutiveErrors > 0 &&\n state.consecutiveErrors >= cfg.maxConsecutiveErrors\n ) {\n return \"failed\";\n }\n\n return undefined;\n}\n\n/** Clamp an interval to deadline bounds. */\nfunction boundToDeadline(interval: number, deadline: number): number {\n if (deadline > 0) {\n return Math.min(interval, Math.max(0, deadline - Date.now()));\n }\n return interval;\n}\n\n/** Compute sleep duration for a normal (successful) poll. */\nfunction computeSleepMs<T>(\n cfg: ResolvedConfig<T>,\n ctx: PollContext<T>,\n): number {\n const interval = clampInterval(\n cfg.getInterval(ctx),\n cfg.label,\n cfg.logPrefix,\n );\n return boundToDeadline(interval, cfg.deadline);\n}\n\n/** Compute sleep duration for an error retry. Uses backoff if enabled, else falls back to intervalMs. */\nfunction computeErrorSleepMs<T>(\n cfg: ResolvedConfig<T>,\n state: PollState<T>,\n ctx: PollContext<T>,\n): number {\n if (cfg.getErrorInterval) {\n const interval = clampInterval(\n cfg.getErrorInterval(state.consecutiveErrors),\n cfg.label,\n cfg.logPrefix,\n );\n return boundToDeadline(interval, cfg.deadline);\n }\n return computeSleepMs(cfg, ctx);\n}\n\n/** Interruptible sleep. Only swallows abort-triggered rejections. */\nasync function doSleep<T>(ms: number, cfg: ResolvedConfig<T>): Promise<void> {\n if (ms > 0) {\n const [err] = await catchError(interruptibleSleep(ms, cfg.signal));\n if (err) {\n if (isAbortError(err)) return;\n throw err;\n }\n }\n}\n\n/** Check if an error was produced by abort handling (ours or the platform's). */\nfunction isAbortError(err: unknown): boolean {\n if (!(err instanceof Error)) return false;\n return err.name === \"AbortError\";\n}\n\n/** Safely invoke a consumer callback (sync or async). Logs and swallows errors — never crashes the loop. */\nasync function safeCallback(\n label: string | undefined,\n name: string,\n fn: () => void | Promise<void>,\n prefix: string,\n): Promise<void> {\n const [err] = await catchError(Promise.resolve().then(() => fn()));\n if (err && label) {\n logger.warn(\n `[${prefix}] ${label} — ${name} callback threw: ${err.message}`,\n );\n }\n}\n\n/** Process a successful poll: fire callbacks, track status, log progress. */\nasync function processSuccessfulPoll<T>(\n result: T,\n cfg: ResolvedConfig<T>,\n state: PollState<T>,\n): Promise<void> {\n state.consecutiveErrors = 0;\n\n if (cfg.onPoll) {\n await safeCallback(\n cfg.label,\n \"onPoll\",\n () => cfg.onPoll?.(result, elapsed(cfg)),\n cfg.logPrefix,\n );\n }\n\n if (cfg.getStatus) {\n const getStatus = cfg.getStatus;\n const [statusErr, newStatus] = catchError(() => getStatus(result));\n if (statusErr) {\n if (cfg.label) {\n logger.warn(\n `[${cfg.logPrefix}] ${cfg.label} — getStatus threw: ${statusErr.message}`,\n );\n }\n } else {\n if (\n state.lastStatus !== undefined &&\n newStatus !== state.lastStatus\n ) {\n const oldStatus = state.lastStatus ?? \"\";\n await safeCallback(\n cfg.label,\n \"onStatusChange\",\n () => cfg.onStatusChange?.(newStatus, oldStatus, result),\n cfg.logPrefix,\n );\n if (cfg.label) {\n logger.info(\n `[${cfg.logPrefix}] ${cfg.label} — status changed: ${state.lastStatus} → ${newStatus}`,\n );\n }\n }\n state.lastStatus = newStatus;\n }\n }\n\n logProgress(cfg, state);\n\n state.lastResult = result;\n state.pollCount++;\n}\n\n/** Emit a throttled progress log line. */\nfunction logProgress<T>(cfg: ResolvedConfig<T>, state: PollState<T>): void {\n if (!cfg.label || cfg.logIntervalMs <= 0) return;\n\n const now = elapsed(cfg);\n if (now - state.lastLogAt >= cfg.logIntervalMs) {\n const statusStr = state.lastStatus\n ? `status: ${state.lastStatus}, `\n : \"\";\n logger.info(\n `[${cfg.logPrefix}] ${cfg.label} — ${statusStr}elapsed: ${msToDuration(now)}`,\n );\n state.lastLogAt = now;\n }\n}\n\n// =============================================================================\n// Exit builders\n// =============================================================================\n\nfunction buildResult<T>(\n data: T | undefined,\n outcome: PollUntilResult<T>[\"outcome\"],\n cfg: ResolvedConfig<T>,\n): PollUntilResult<T> {\n return { data, outcome, elapsedMs: elapsed(cfg) };\n}\n\nasync function handleCompleted<T>(\n result: T,\n cfg: ResolvedConfig<T>,\n): Promise<PollUntilResult<T>> {\n await safeCallback(\n cfg.label,\n \"onComplete\",\n () => cfg.onComplete?.(result, elapsed(cfg)),\n cfg.logPrefix,\n );\n if (cfg.label) {\n let statusStr = \"\";\n if (cfg.getStatus) {\n const getStatus = cfg.getStatus;\n // getStatus may throw — already warned in processSuccessfulPoll\n const [, status] = catchError(() => getStatus(result));\n if (status != null) statusStr = ` ${status}`;\n }\n logger.info(\n `[${cfg.logPrefix}] ${cfg.label} — reached terminal status:${statusStr} (took ${msToDuration(elapsed(cfg))})`,\n );\n }\n return buildResult(result, PollOutcome.Completed, cfg);\n}\n\nasync function handleTimeout<T>(\n cfg: ResolvedConfig<T>,\n state: PollState<T>,\n): Promise<PollUntilResult<T>> {\n await safeCallback(\n cfg.label,\n \"onTimeout\",\n () => cfg.onTimeout?.(state.lastResult, elapsed(cfg)),\n cfg.logPrefix,\n );\n if (cfg.label) {\n const statusStr = state.lastStatus\n ? ` Last status: ${state.lastStatus}`\n : \"\";\n logger.info(\n `[${cfg.logPrefix}] ${cfg.label} — timed out after ${msToDuration(elapsed(cfg))}.${statusStr}`,\n );\n }\n return buildResult(state.lastResult, PollOutcome.Timeout, cfg);\n}\n\nasync function handleInterrupted<T>(\n cfg: ResolvedConfig<T>,\n state: PollState<T>,\n): Promise<PollUntilResult<T>> {\n await safeCallback(\n cfg.label,\n \"onInterrupt\",\n () => cfg.onInterrupt?.(state.lastResult, elapsed(cfg)),\n cfg.logPrefix,\n );\n if (cfg.label) {\n const statusStr = state.lastStatus\n ? ` Last status: ${state.lastStatus}`\n : \"\";\n logger.info(\n `[${cfg.logPrefix}] ${cfg.label} — interrupted.${statusStr}`,\n );\n }\n return buildResult(state.lastResult, PollOutcome.Interrupted, cfg);\n}\n\nfunction handleAborted<T>(\n cfg: ResolvedConfig<T>,\n state: PollState<T>,\n error?: Error,\n): PollUntilResult<T> {\n const result = buildResult(state.lastResult, PollOutcome.Aborted, cfg);\n if (error) {\n result.error = error;\n }\n return result;\n}\n\nfunction handleFailed<T>(\n cfg: ResolvedConfig<T>,\n state: PollState<T>,\n error: Error,\n): PollUntilResult<T> {\n if (cfg.label) {\n logger.warn(\n `[${cfg.logPrefix}] ${cfg.label} — polling failed after ${state.consecutiveErrors} consecutive errors. Last error: ${truncateMessage(error.message)}`,\n );\n }\n const result = buildResult(state.lastResult, PollOutcome.Failed, cfg);\n result.error = error;\n return result;\n}\n\n// =============================================================================\n// Signal management\n// =============================================================================\n\ninterface SignalGuard {\n cleanup: () => void;\n}\n\nfunction setupSignalGuard<T>(\n cfg: ResolvedConfig<T>,\n state: PollState<T>,\n): SignalGuard {\n const onAbort = () => {\n state.interrupted = true;\n };\n\n if (cfg.signal) {\n if (cfg.signal.aborted) {\n state.interrupted = true;\n } else {\n cfg.signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n }\n\n return {\n cleanup: () => {\n cfg.signal?.removeEventListener(\"abort\", onAbort);\n },\n };\n}\n\n// =============================================================================\n// Start logging\n// =============================================================================\n\nfunction logStart<T>(\n options: PollUntilOptions<T>,\n cfg: ResolvedConfig<T>,\n): void {\n if (!cfg.label) return;\n\n let intervalDesc: string;\n if (typeof options.intervalMs === \"function\") {\n intervalDesc = \"dynamic\";\n } else {\n const [intervalErr, intervalVal] = catchError(() =>\n cfg.getInterval({ pollCount: 0, elapsedMs: 0 }),\n );\n intervalDesc = intervalErr ? \"dynamic\" : `${intervalVal}ms`;\n }\n const backoffDesc = options.backoff ? \", error backoff enabled\" : \"\";\n const timeoutDesc = cfg.timeoutMs === 0 ? \"none\" : `${cfg.timeoutMs}ms`;\n logger.info(\n `[${cfg.logPrefix}] Waiting for ${cfg.label} — polling every ${intervalDesc}${backoffDesc}, timeout ${timeoutDesc}`,\n );\n}\n\n// =============================================================================\n// Validation\n// =============================================================================\n\nfunction validateConfig<T>(cfg: ResolvedConfig<T>): void {\n if (cfg.maxConsecutiveErrors === 0 && cfg.timeoutMs === 0 && !cfg.signal) {\n logger.warn(\n `[${cfg.logPrefix}] Warning: no timeout, no error limit, and no abort signal — polling will continue indefinitely until terminal state.`,\n );\n }\n}\n\n// =============================================================================\n// Main entry point\n// =============================================================================\n\n/**\n * Generic polling utility. Repeatedly calls `fn()` until `until(result)`\n * returns `true`, a timeout is reached, a signal interrupts, or a consumer\n * callback aborts.\n *\n * All lifecycle hooks are optional. The utility handles timing, retries,\n * status tracking, backoff, progress logging, and cancellation. Consumers\n * bring their domain logic via callbacks.\n *\n * @example Simple status polling\n * ```ts\n * const result = await pollUntil({\n * fn: () => api.getJobStatus({ jobId }),\n * until: (job) => TERMINAL.has(job.state),\n * getStatus: (job) => job.state,\n * label: `job ${jobId}`,\n * intervalMs: 5000,\n * timeoutMs: 360_000,\n * });\n * if (result.outcome === PollOutcome.Completed) { ... }\n * ```\n *\n * @example Error-resilient polling with retry\n * ```ts\n * const result = await pollUntil({\n * fn: () => api.getStatus({ id }),\n * until: (r) => r.done,\n * maxConsecutiveErrors: 3,\n * intervalMs: 60_000,\n * });\n * ```\n *\n * @example Selective error handling (404 transient, 403 fatal)\n * ```ts\n * const result = await pollUntil({\n * fn: () => getTraces(id),\n * until: (spans) => hasTerminalSpan(spans),\n * maxConsecutiveErrors: 0,\n * onError: (error) => {\n * if (error.message.includes(\"404\")) return;\n * return ErrorDecision.Abort;\n * },\n * });\n * ```\n *\n * @example Exponential backoff on errors (normal polls use intervalMs)\n * ```ts\n * const result = await pollUntil({\n * fn: () => api.getStatus({ id }),\n * until: (r) => r.done,\n * intervalMs: 5000, // 5s between successful polls\n * backoff: true, // errors: 1s → 2s → 4s → ... → 30s cap\n * maxConsecutiveErrors: 0, // never auto-abort\n * });\n * ```\n *\n * @see PollUntilOptions for full configuration and callback documentation.\n */\nexport async function pollUntil<T>(\n options: PollUntilOptions<T>,\n): Promise<PollUntilResult<T>> {\n const cfg = resolveConfig(options);\n const state: PollState<T> = {\n pollCount: 0,\n consecutiveErrors: 0,\n lastResult: undefined,\n lastStatus: undefined,\n lastLogAt: 0,\n interrupted: false,\n };\n\n validateConfig(cfg);\n const guard = setupSignalGuard(cfg, state);\n logStart(options, cfg);\n\n try {\n return await runPollLoop(cfg, state);\n } finally {\n guard.cleanup();\n }\n}\n\n/** The core polling loop — separated from setup/cleanup for clarity. */\nasync function runPollLoop<T>(\n cfg: ResolvedConfig<T>,\n state: PollState<T>,\n): Promise<PollUntilResult<T>> {\n while (!state.interrupted && !cfg.signal?.aborted) {\n if (isPastDeadline(cfg)) {\n return handleTimeout(cfg, state);\n }\n\n const ctx = buildContext(cfg, state);\n\n // Before poll\n if (cfg.beforePoll) {\n const [beforePollErr] = await catchError(\n Promise.resolve().then(() => cfg.beforePoll?.(ctx)),\n );\n if (beforePollErr) {\n const outcome = await handleErrorAndSleep(\n beforePollErr,\n \"beforePoll\",\n cfg,\n state,\n ctx,\n );\n if (outcome) return outcome;\n continue;\n }\n }\n\n // Poll\n const [pollErr, result] = await catchError(cfg.fn());\n if (pollErr) {\n const outcome = await handleErrorAndSleep(\n pollErr,\n \"poll\",\n cfg,\n state,\n ctx,\n );\n if (outcome) return outcome;\n continue;\n }\n\n // Process successful poll\n await processSuccessfulPoll(result, cfg, state);\n\n // Terminal check — if until() throws, treat as poll error\n const [untilErr, isTerminal] = catchError(() => cfg.until(result));\n if (untilErr) {\n const outcome = await handleErrorAndSleep(\n untilErr,\n \"until\",\n cfg,\n state,\n ctx,\n );\n if (outcome) return outcome;\n continue;\n }\n if (isTerminal) {\n return handleCompleted(result, cfg);\n }\n\n // Sleep before next poll — uses intervalMs (not backoff)\n const sleepCtx = buildContext(cfg, state);\n await doSleep(computeSleepMs(cfg, sleepCtx), cfg);\n }\n\n return handleInterrupted(cfg, state);\n}\n\n/**\n * Handle a poll/beforePoll error: fire onError, check limits, sleep.\n * Returns a result if polling should stop (abort/timeout), or undefined to continue.\n */\nasync function handleErrorAndSleep<T>(\n error: Error,\n source: string,\n cfg: ResolvedConfig<T>,\n state: PollState<T>,\n ctx: PollContext<T>,\n): Promise<PollUntilResult<T> | undefined> {\n const decision = await handlePollError(error, source, cfg, state);\n if (decision === \"abort\") {\n return handleAborted(cfg, state, error);\n }\n if (decision === \"failed\") {\n return handleFailed(cfg, state, error);\n }\n\n // Re-check deadline after async onError\n if (isPastDeadline(cfg)) {\n return handleTimeout(cfg, state);\n }\n\n // Error sleep — uses backoff if enabled, else falls back to intervalMs\n await doSleep(computeErrorSleepMs(cfg, state, ctx), cfg);\n return undefined;\n}\n",
|
|
60
|
-
"/**\n * Shared terminal status definitions across all UiPath async operations.\n *\n * These cover the superset of known statuses from Orchestrator, Flow,\n * Test Manager, and Solution deployments. Comparison is case-insensitive.\n *\n * Individual tools can extend with domain-specific statuses if needed,\n * but the common set eliminates each tool defining its own.\n */\n\n/** Canonical terminal statuses — compare case-insensitively via `isTerminalStatus`. */\nconst TERMINAL_STATUSES = new Set([\n \"completed\",\n \"successful\",\n \"faulted\",\n \"failed\",\n \"cancelled\",\n \"canceled\",\n \"stopped\",\n \"finished\",\n]);\n\n/** Subset of terminal statuses that indicate failure. */\nconst FAILURE_STATUSES = new Set([\n \"faulted\",\n \"failed\",\n \"cancelled\",\n \"canceled\",\n \"stopped\",\n]);\n\n/**\n * Check if a status string represents a terminal state (case-insensitive).\n *\n * Covers the known superset across Orchestrator jobs, Flow executions,\n * Test Manager executions, and Solution deployments.\n *\n * @example\n * ```ts\n * isTerminalStatus(\"Completed\") // true\n * isTerminalStatus(\"Running\") // false\n * isTerminalStatus(\"FAULTED\") // true\n * ```\n */\nexport function isTerminalStatus(status: string): boolean {\n return TERMINAL_STATUSES.has(status.toLowerCase());\n}\n\n/**\n * Check if a status string represents a failure state (case-insensitive).\n *\n * A subset of terminal statuses — excludes success states like\n * \"Completed\", \"Successful\", \"Finished\".\n *\n * @example\n * ```ts\n * isFailureStatus(\"Faulted\") // true\n * isFailureStatus(\"Completed\") // false\n * isFailureStatus(\"Cancelled\") // true\n * ```\n */\nexport function isFailureStatus(status: string): boolean {\n return FAILURE_STATUSES.has(status.toLowerCase());\n}\n\n/**\n * Check if a status string represents a successful terminal state (case-insensitive).\n *\n * Equivalent to `isTerminalStatus(s) && !isFailureStatus(s)`.\n *\n * @example\n * ```ts\n * isSuccessStatus(\"Completed\") // true\n * isSuccessStatus(\"Faulted\") // false\n * isSuccessStatus(\"Running\") // false\n * ```\n */\nexport function isSuccessStatus(status: string): boolean {\n return isTerminalStatus(status) && !isFailureStatus(status);\n}\n",
|
|
61
|
-
"import { getOutputSink } from \"./output-context\";\n\n/**\n * Standalone screen-output helper.\n * Methods here write human-visible messages to the screen,\n * bypassing log-level filtering and file-logging redirection.\n */\nexport namespace ScreenLogger {\n /** Write a progress message to the screen. */\n export function progress(message: string): void {\n getOutputSink().writeErr(`${message}\\n`);\n }\n}\n",
|
|
62
|
-
"import { singleton } from \"./singleton.js\";\nimport { getGlobalTelemetryProperties } from \"./telemetry/global-telemetry-properties.js\";\nimport { isTelemetryDisabled } from \"./telemetry/telemetry-config.js\";\n\nexport interface SdkUserAgentPackageInfo {\n name: string;\n version: string;\n}\n\nexport type SdkHttpHeaders = Record<string, string>;\n\ninterface GeneratedRequestInit {\n headers?: unknown;\n}\n\ntype GeneratedInitOverride = GeneratedRequestInit | undefined;\ntype GeneratedInitOverrideFunction = (requestContext: {\n init: GeneratedRequestInit;\n context: unknown;\n}) => Promise<GeneratedInitOverride>;\n\ntype GeneratedRequestFunction = (\n this: unknown,\n context: unknown,\n initOverrides?: GeneratedInitOverride | GeneratedInitOverrideFunction,\n) => Promise<unknown>;\n\ninterface PatchableGeneratedPrototype {\n request?: GeneratedRequestFunction;\n [key: symbol]: unknown;\n}\n\n/**\n * Adds the SDK headers to a request's existing header map and returns the\n * updated map. The generated runtimes always hand us a plain-object header map,\n * so that is the only shape we need to handle.\n */\ntype SdkHeaderForwarder = (\n headers: SdkHttpHeaders | undefined,\n) => SdkHttpHeaders;\n\nconst USER_AGENT_HEADER = \"User-Agent\";\nconst CODING_AGENT_HEADER = \"x-coding-agent-info\";\nconst AGENT_PROPERTY = \"agent\";\n// JSON field name inside the `x-coding-agent-info` header.\nconst CODING_AGENT_PROPERTY = \"CodingAgent\";\nconst sdkUserAgentHostToken = singleton<string | undefined>(\n \"SdkUserAgentHostToken\",\n);\n\nfunction userAgentPatchKey(userAgent: string): symbol {\n return Symbol.for(`@uipath/common/sdk-user-agent/${userAgent}`);\n}\n\nfunction codingAgentPatchKey(): symbol {\n return Symbol.for(\"@uipath/common/sdk-coding-agent\");\n}\n\nfunction splitUserAgentTokens(value: string | null | undefined): string[] {\n return value?.trim().split(/\\s+/).filter(Boolean) ?? [];\n}\n\nfunction appendUserAgentToken(\n value: string | null | undefined,\n userAgent: string,\n): string {\n const tokens = splitUserAgentTokens(value);\n const seen = new Set(tokens);\n\n for (const token of splitUserAgentTokens(userAgent)) {\n if (!seen.has(token)) {\n tokens.push(token);\n seen.add(token);\n }\n }\n\n return tokens.join(\" \");\n}\n\nfunction getEffectiveUserAgent(userAgent: string): string {\n return appendUserAgentToken(sdkUserAgentHostToken.get(), userAgent);\n}\n\nfunction getHeaderName(\n headers: SdkHttpHeaders,\n headerName: string,\n): string | undefined {\n return Object.keys(headers).find(\n (key) => key.toLowerCase() === headerName.toLowerCase(),\n );\n}\n\n/**\n * The telemetry `agent` (e.g. `codex`) captured by the host, read from the\n * shared global telemetry properties. Its value is a JSON string; it could be enriched with version\n * and other details in future.\n *\n * honouring `UIPATH_TELEMETRY_DISABLED` here\n */\nfunction getSdkAgentInfo(): string | undefined {\n if (isTelemetryDisabled()) {\n return undefined;\n }\n\n const agent = getGlobalTelemetryProperties()?.[AGENT_PROPERTY];\n return agent === undefined ? undefined : String(agent);\n}\n\nexport function getSdkUserAgentToken(pkg: SdkUserAgentPackageInfo): string {\n const packageName = pkg.name.replace(/^@uipath\\//, \"\");\n return getEffectiveUserAgent(`${packageName}/${pkg.version}`);\n}\n\nexport function setSdkUserAgentHostToken(token: string | undefined): void {\n if (token === undefined) {\n sdkUserAgentHostToken.clear();\n return;\n }\n\n sdkUserAgentHostToken.set(token);\n}\n\n/**\n * Forwards the SDK `User-Agent` token, prefixed with the host token (e.g.\n * `uip/1.1.0`) when one is configured. Appends to any existing value without\n * duplicating tokens and preserves the caller's header casing.\n */\nexport function addSdkUserAgentHeader(\n headers: SdkHttpHeaders | undefined,\n userAgent: string,\n): SdkHttpHeaders {\n const result = { ...(headers ?? {}) };\n const headerName = getHeaderName(result, USER_AGENT_HEADER);\n\n result[headerName ?? USER_AGENT_HEADER] = appendUserAgentToken(\n headerName ? result[headerName] : undefined,\n getEffectiveUserAgent(userAgent),\n );\n\n return result;\n}\n\n/**\n * Forwards the telemetry `agent` via `x-coding-agent-info` as a JSON envelope —\n * `{\"CodingAgent\":\"<agent>\"}`; preserves the caller's header casing.\n * Leaves the header absent when no agent is available.\n */\nexport function addSdkCodingAgentHeader(\n headers: SdkHttpHeaders | undefined,\n agent: string | undefined = getSdkAgentInfo(),\n): SdkHttpHeaders {\n const result = { ...(headers ?? {}) };\n\n if (agent === undefined) {\n return result;\n }\n\n const headerName = getHeaderName(result, CODING_AGENT_HEADER);\n result[headerName ?? CODING_AGENT_HEADER] = JSON.stringify({\n [CODING_AGENT_PROPERTY]: agent,\n });\n\n return result;\n}\n\nfunction asHeaderRecord(headers: unknown): SdkHttpHeaders {\n return typeof headers === \"object\" && headers !== null\n ? { ...(headers as SdkHttpHeaders) }\n : {};\n}\n\nfunction withForwardedHeadersInitOverride(\n initOverrides: GeneratedInitOverride | GeneratedInitOverrideFunction,\n forward: SdkHeaderForwarder,\n): GeneratedInitOverrideFunction {\n return async (requestContext) => {\n const initWithHeaders = {\n ...requestContext.init,\n headers: forward(asHeaderRecord(requestContext.init.headers)),\n };\n const override =\n typeof initOverrides === \"function\"\n ? await initOverrides({\n ...requestContext,\n init: initWithHeaders,\n })\n : initOverrides;\n\n return {\n ...(override ?? {}),\n headers: forward(\n asHeaderRecord(override?.headers ?? initWithHeaders.headers),\n ),\n };\n };\n}\n\n/**\n * Patch a generated `BaseAPI` so every request runs `forward` over its headers.\n * Idempotent per `patchKey`. Shared by the public installers below so the\n * request-wrapping plumbing lives in one place.\n */\nfunction installRequestHeaderForwarding(\n BaseApiClass: { prototype: unknown },\n patchKey: symbol,\n forward: SdkHeaderForwarder,\n): void {\n const prototype =\n BaseApiClass.prototype as unknown as PatchableGeneratedPrototype;\n\n if (prototype[patchKey]) {\n return;\n }\n\n if (typeof prototype.request !== \"function\") {\n throw new Error(\"Generated BaseAPI request function not found.\");\n }\n\n const originalRequest = prototype.request;\n prototype.request = function requestWithForwardedHeaders(\n context,\n initOverrides,\n ) {\n return originalRequest.call(\n this,\n context,\n withForwardedHeadersInitOverride(initOverrides, forward),\n );\n };\n\n Object.defineProperty(prototype, patchKey, {\n value: true,\n });\n}\n\nexport function installSdkUserAgentHeader(\n BaseApiClass: { prototype: unknown },\n userAgent: string,\n): void {\n installRequestHeaderForwarding(\n BaseApiClass,\n userAgentPatchKey(userAgent),\n (headers) => addSdkUserAgentHeader(headers, userAgent),\n );\n}\n\n// NOTE: This installer and `installSdkUserAgentHeader` both forward a header\n// onto generated SDK requests and share `installRequestHeaderForwarding`. They\n// are intentionally kept separate so `installSdkUserAgentHeader` stays\n// single-purpose (User-Agent only) and each SDK opts into the agent header\n// explicitly. They should be combined into a single header-forwarding installer\n// once we settle on the unified opt-in API.\nexport function installSdkCodingAgentHeader(BaseApiClass: {\n prototype: unknown;\n}): void {\n installRequestHeaderForwarding(\n BaseApiClass,\n codingAgentPatchKey(),\n (headers) => addSdkCodingAgentHeader(headers),\n );\n}\n",
|
|
63
|
-
"/**\n * Cross-module bridge for packager factory resolution.\n */\n\nimport { singleton } from \"./singleton\";\n\nexport type PackagerFactoryProvider = (verb: string) => Promise<void>;\n\nconst factorySlot = singleton<PackagerFactoryProvider | undefined>(\n \"PackagerFactoryProvider\",\n);\n\nexport function setPackagerFactoryProvider(\n provider: PackagerFactoryProvider,\n): void {\n factorySlot.set(provider);\n}\n\nexport async function ensurePackagerFactory(verb: string): Promise<void> {\n const provider = factorySlot.get();\n if (!provider) {\n throw new Error(\n `Packager factory for '${verb}' is required but no factory provider is registered. ` +\n `Run 'uip tools install ${verb}' manually.`,\n );\n }\n await provider(verb);\n}\n",
|
|
64
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"http://localhost\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n\n // restore prototype chain\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(this, actualProto);\n }\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n\n // restore prototype chain\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(this, actualProto);\n }\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n\n // restore prototype chain\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(this, actualProto);\n }\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n const result: { [key: string]: any } = {};\n for (const key of Object.keys(data)) {\n result[key] = fn(data[key]);\n }\n return result;\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n",
|
|
65
|
-
"import {\n getSdkUserAgentToken,\n installSdkUserAgentHeader,\n} from \"@uipath/common/sdk-user-agent\";\nimport { BaseAPI } from \"../generated/src/runtime.js\";\nimport pkg from \"../package.json\" with { type: \"json\" };\n\nexport const SDK_USER_AGENT = getSdkUserAgentToken(pkg);\n\ninstallSdkUserAgentHeader(BaseAPI, SDK_USER_AGENT);\n",
|
|
66
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const TargetFramework = {\n Legacy: 'Legacy',\n Windows: 'Windows',\n Portable: 'Portable'\n} as const;\nexport type TargetFramework = typeof TargetFramework[keyof typeof TargetFramework];\n\n\nexport function instanceOfTargetFramework(value: any): boolean {\n for (const key in TargetFramework) {\n if (Object.prototype.hasOwnProperty.call(TargetFramework, key)) {\n if (TargetFramework[key as keyof typeof TargetFramework] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function TargetFrameworkFromJSON(json: any): TargetFramework {\n return TargetFrameworkFromJSONTyped(json, false);\n}\n\nexport function TargetFrameworkFromJSONTyped(json: any, ignoreDiscriminator: boolean): TargetFramework {\n return json as TargetFramework;\n}\n\nexport function TargetFrameworkToJSON(value?: TargetFramework | null): any {\n return value as any;\n}\n\nexport function TargetFrameworkToJSONTyped(value: any, ignoreDiscriminator: boolean): TargetFramework {\n return value as TargetFramework;\n}\n\n",
|
|
67
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RepositoryDto\n */\nexport interface RepositoryDto {\n /**\n * \n * @type {string}\n * @memberof RepositoryDto\n */\n identifier?: string;\n /**\n * \n * @type {string}\n * @memberof RepositoryDto\n */\n name?: string | null;\n /**\n * \n * @type {string}\n * @memberof RepositoryDto\n */\n cloneUrl?: string | null;\n /**\n * \n * @type {string}\n * @memberof RepositoryDto\n */\n remoteId?: string | null;\n /**\n * \n * @type {string}\n * @memberof RepositoryDto\n */\n commitSha?: string | null;\n /**\n * \n * @type {string}\n * @memberof RepositoryDto\n */\n defaultBranch?: string | null;\n /**\n * \n * @type {string}\n * @memberof RepositoryDto\n */\n azureProject?: string | null;\n}\n\n/**\n * Check if a given object implements the RepositoryDto interface.\n */\nexport function instanceOfRepositoryDto(value: object): value is RepositoryDto {\n return true;\n}\n\nexport function RepositoryDtoFromJSON(json: any): RepositoryDto {\n return RepositoryDtoFromJSONTyped(json, false);\n}\n\nexport function RepositoryDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): RepositoryDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'identifier': json['identifier'] == null ? undefined : json['identifier'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'cloneUrl': json['cloneUrl'] == null ? undefined : json['cloneUrl'],\n 'remoteId': json['remoteId'] == null ? undefined : json['remoteId'],\n 'commitSha': json['commitSha'] == null ? undefined : json['commitSha'],\n 'defaultBranch': json['defaultBranch'] == null ? undefined : json['defaultBranch'],\n 'azureProject': json['azureProject'] == null ? undefined : json['azureProject'],\n };\n}\n\nexport function RepositoryDtoToJSON(json: any): RepositoryDto {\n return RepositoryDtoToJSONTyped(json, false);\n}\n\nexport function RepositoryDtoToJSONTyped(value?: RepositoryDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'identifier': value['identifier'],\n 'name': value['name'],\n 'cloneUrl': value['cloneUrl'],\n 'remoteId': value['remoteId'],\n 'commitSha': value['commitSha'],\n 'defaultBranch': value['defaultBranch'],\n 'azureProject': value['azureProject'],\n };\n}\n\n",
|
|
68
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TargetFramework } from './TargetFramework';\nimport {\n TargetFrameworkFromJSON,\n TargetFrameworkFromJSONTyped,\n TargetFrameworkToJSON,\n TargetFrameworkToJSONTyped,\n} from './TargetFramework';\nimport type { RepositoryDto } from './RepositoryDto';\nimport {\n RepositoryDtoFromJSON,\n RepositoryDtoFromJSONTyped,\n RepositoryDtoToJSON,\n RepositoryDtoToJSONTyped,\n} from './RepositoryDto';\n\n/**\n * \n * @export\n * @interface AutomationProjectDto\n */\nexport interface AutomationProjectDto {\n /**\n * \n * @type {string}\n * @memberof AutomationProjectDto\n */\n identifier?: string;\n /**\n * \n * @type {string}\n * @memberof AutomationProjectDto\n */\n name?: string | null;\n /**\n * \n * @type {string}\n * @memberof AutomationProjectDto\n */\n connectionIdentifier?: string;\n /**\n * \n * @type {string}\n * @memberof AutomationProjectDto\n */\n organizationIdentifier?: string | null;\n /**\n * \n * @type {string}\n * @memberof AutomationProjectDto\n */\n projectId?: string | null;\n /**\n * \n * @type {string}\n * @memberof AutomationProjectDto\n */\n description?: string | null;\n /**\n * \n * @type {string}\n * @memberof AutomationProjectDto\n */\n projectVersion?: string | null;\n /**\n * \n * @type {string}\n * @memberof AutomationProjectDto\n */\n path?: string | null;\n /**\n * \n * @type {RepositoryDto}\n * @memberof AutomationProjectDto\n */\n repository?: RepositoryDto | null;\n /**\n * \n * @type {Date}\n * @memberof AutomationProjectDto\n */\n lastUpdated?: Date;\n /**\n * \n * @type {string}\n * @memberof AutomationProjectDto\n */\n type?: string | null;\n /**\n * \n * @type {TargetFramework}\n * @memberof AutomationProjectDto\n */\n targetFramework?: TargetFramework;\n /**\n * \n * @type {string}\n * @memberof AutomationProjectDto\n */\n expressionLanguage?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof AutomationProjectDto\n */\n isTemplate?: boolean | null;\n /**\n * \n * @type {string}\n * @memberof AutomationProjectDto\n */\n automationHubIdeaUrl?: string | null;\n}\n\n\n\n/**\n * Check if a given object implements the AutomationProjectDto interface.\n */\nexport function instanceOfAutomationProjectDto(value: object): value is AutomationProjectDto {\n return true;\n}\n\nexport function AutomationProjectDtoFromJSON(json: any): AutomationProjectDto {\n return AutomationProjectDtoFromJSONTyped(json, false);\n}\n\nexport function AutomationProjectDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): AutomationProjectDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'identifier': json['identifier'] == null ? undefined : json['identifier'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'connectionIdentifier': json['connectionIdentifier'] == null ? undefined : json['connectionIdentifier'],\n 'organizationIdentifier': json['organizationIdentifier'] == null ? undefined : json['organizationIdentifier'],\n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'projectVersion': json['projectVersion'] == null ? undefined : json['projectVersion'],\n 'path': json['path'] == null ? undefined : json['path'],\n 'repository': json['repository'] == null ? undefined : RepositoryDtoFromJSON(json['repository']),\n 'lastUpdated': json['lastUpdated'] == null ? undefined : (new Date(json['lastUpdated'])),\n 'type': json['type'] == null ? undefined : json['type'],\n 'targetFramework': json['targetFramework'] == null ? undefined : TargetFrameworkFromJSON(json['targetFramework']),\n 'expressionLanguage': json['expressionLanguage'] == null ? undefined : json['expressionLanguage'],\n 'isTemplate': json['isTemplate'] == null ? undefined : json['isTemplate'],\n 'automationHubIdeaUrl': json['automationHubIdeaUrl'] == null ? undefined : json['automationHubIdeaUrl'],\n };\n}\n\nexport function AutomationProjectDtoToJSON(json: any): AutomationProjectDto {\n return AutomationProjectDtoToJSONTyped(json, false);\n}\n\nexport function AutomationProjectDtoToJSONTyped(value?: AutomationProjectDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'identifier': value['identifier'],\n 'name': value['name'],\n 'connectionIdentifier': value['connectionIdentifier'],\n 'organizationIdentifier': value['organizationIdentifier'],\n 'projectId': value['projectId'],\n 'description': value['description'],\n 'projectVersion': value['projectVersion'],\n 'path': value['path'],\n 'repository': RepositoryDtoToJSON(value['repository']),\n 'lastUpdated': value['lastUpdated'] == null ? value['lastUpdated'] : value['lastUpdated'].toISOString(),\n 'type': value['type'],\n 'targetFramework': TargetFrameworkToJSON(value['targetFramework']),\n 'expressionLanguage': value['expressionLanguage'],\n 'isTemplate': value['isTemplate'],\n 'automationHubIdeaUrl': value['automationHubIdeaUrl'],\n };\n}\n\n",
|
|
69
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { AutomationProjectDto } from './AutomationProjectDto';\nimport {\n AutomationProjectDtoFromJSON,\n AutomationProjectDtoFromJSONTyped,\n AutomationProjectDtoToJSON,\n AutomationProjectDtoToJSONTyped,\n} from './AutomationProjectDto';\n\n/**\n * \n * @export\n * @interface AutomationProjectDtoPagedResult\n */\nexport interface AutomationProjectDtoPagedResult {\n /**\n * \n * @type {number}\n * @memberof AutomationProjectDtoPagedResult\n */\n totalCount?: number;\n /**\n * \n * @type {Array<AutomationProjectDto>}\n * @memberof AutomationProjectDtoPagedResult\n */\n result?: Array<AutomationProjectDto> | null;\n}\n\n/**\n * Check if a given object implements the AutomationProjectDtoPagedResult interface.\n */\nexport function instanceOfAutomationProjectDtoPagedResult(value: object): value is AutomationProjectDtoPagedResult {\n return true;\n}\n\nexport function AutomationProjectDtoPagedResultFromJSON(json: any): AutomationProjectDtoPagedResult {\n return AutomationProjectDtoPagedResultFromJSONTyped(json, false);\n}\n\nexport function AutomationProjectDtoPagedResultFromJSONTyped(json: any, ignoreDiscriminator: boolean): AutomationProjectDtoPagedResult {\n if (json == null) {\n return json;\n }\n return {\n \n 'totalCount': json['totalCount'] == null ? undefined : json['totalCount'],\n 'result': json['result'] == null ? undefined : ((json['result'] as Array<any>).map(AutomationProjectDtoFromJSON)),\n };\n}\n\nexport function AutomationProjectDtoPagedResultToJSON(json: any): AutomationProjectDtoPagedResult {\n return AutomationProjectDtoPagedResultToJSONTyped(json, false);\n}\n\nexport function AutomationProjectDtoPagedResultToJSONTyped(value?: AutomationProjectDtoPagedResult | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'totalCount': value['totalCount'],\n 'result': value['result'] == null ? undefined : ((value['result'] as Array<any>).map(AutomationProjectDtoToJSON)),\n };\n}\n\n",
|
|
70
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AzureAuthorizationRequest\n */\nexport interface AzureAuthorizationRequest {\n /**\n * \n * @type {string}\n * @memberof AzureAuthorizationRequest\n */\n authCode?: string | null;\n}\n\n/**\n * Check if a given object implements the AzureAuthorizationRequest interface.\n */\nexport function instanceOfAzureAuthorizationRequest(value: object): value is AzureAuthorizationRequest {\n return true;\n}\n\nexport function AzureAuthorizationRequestFromJSON(json: any): AzureAuthorizationRequest {\n return AzureAuthorizationRequestFromJSONTyped(json, false);\n}\n\nexport function AzureAuthorizationRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): AzureAuthorizationRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'authCode': json['authCode'] == null ? undefined : json['authCode'],\n };\n}\n\nexport function AzureAuthorizationRequestToJSON(json: any): AzureAuthorizationRequest {\n return AzureAuthorizationRequestToJSONTyped(json, false);\n}\n\nexport function AzureAuthorizationRequestToJSONTyped(value?: AzureAuthorizationRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'authCode': value['authCode'],\n };\n}\n\n",
|
|
71
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AzureOrganizationDto\n */\nexport interface AzureOrganizationDto {\n /**\n * \n * @type {string}\n * @memberof AzureOrganizationDto\n */\n identifier?: string;\n /**\n * \n * @type {string}\n * @memberof AzureOrganizationDto\n */\n name?: string | null;\n}\n\n/**\n * Check if a given object implements the AzureOrganizationDto interface.\n */\nexport function instanceOfAzureOrganizationDto(value: object): value is AzureOrganizationDto {\n return true;\n}\n\nexport function AzureOrganizationDtoFromJSON(json: any): AzureOrganizationDto {\n return AzureOrganizationDtoFromJSONTyped(json, false);\n}\n\nexport function AzureOrganizationDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): AzureOrganizationDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'identifier': json['identifier'] == null ? undefined : json['identifier'],\n 'name': json['name'] == null ? undefined : json['name'],\n };\n}\n\nexport function AzureOrganizationDtoToJSON(json: any): AzureOrganizationDto {\n return AzureOrganizationDtoToJSONTyped(json, false);\n}\n\nexport function AzureOrganizationDtoToJSONTyped(value?: AzureOrganizationDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'identifier': value['identifier'],\n 'name': value['name'],\n };\n}\n\n",
|
|
72
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AzureProjectDto\n */\nexport interface AzureProjectDto {\n /**\n * \n * @type {string}\n * @memberof AzureProjectDto\n */\n identifier?: string;\n /**\n * \n * @type {string}\n * @memberof AzureProjectDto\n */\n name?: string | null;\n}\n\n/**\n * Check if a given object implements the AzureProjectDto interface.\n */\nexport function instanceOfAzureProjectDto(value: object): value is AzureProjectDto {\n return true;\n}\n\nexport function AzureProjectDtoFromJSON(json: any): AzureProjectDto {\n return AzureProjectDtoFromJSONTyped(json, false);\n}\n\nexport function AzureProjectDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): AzureProjectDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'identifier': json['identifier'] == null ? undefined : json['identifier'],\n 'name': json['name'] == null ? undefined : json['name'],\n };\n}\n\nexport function AzureProjectDtoToJSON(json: any): AzureProjectDto {\n return AzureProjectDtoToJSONTyped(json, false);\n}\n\nexport function AzureProjectDtoToJSONTyped(value?: AzureProjectDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'identifier': value['identifier'],\n 'name': value['name'],\n };\n}\n\n",
|
|
73
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface BranchDto\n */\nexport interface BranchDto {\n /**\n * \n * @type {string}\n * @memberof BranchDto\n */\n name?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof BranchDto\n */\n main?: boolean;\n}\n\n/**\n * Check if a given object implements the BranchDto interface.\n */\nexport function instanceOfBranchDto(value: object): value is BranchDto {\n return true;\n}\n\nexport function BranchDtoFromJSON(json: any): BranchDto {\n return BranchDtoFromJSONTyped(json, false);\n}\n\nexport function BranchDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): BranchDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'] == null ? undefined : json['name'],\n 'main': json['main'] == null ? undefined : json['main'],\n };\n}\n\nexport function BranchDtoToJSON(json: any): BranchDto {\n return BranchDtoToJSONTyped(json, false);\n}\n\nexport function BranchDtoToJSONTyped(value?: BranchDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n 'main': value['main'],\n };\n}\n\n",
|
|
74
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface FileStatusDto\n */\nexport interface FileStatusDto {\n /**\n * \n * @type {string}\n * @memberof FileStatusDto\n */\n status?: string | null;\n /**\n * \n * @type {string}\n * @memberof FileStatusDto\n */\n filePath?: string | null;\n}\n\n/**\n * Check if a given object implements the FileStatusDto interface.\n */\nexport function instanceOfFileStatusDto(value: object): value is FileStatusDto {\n return true;\n}\n\nexport function FileStatusDtoFromJSON(json: any): FileStatusDto {\n return FileStatusDtoFromJSONTyped(json, false);\n}\n\nexport function FileStatusDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): FileStatusDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'status': json['status'] == null ? undefined : json['status'],\n 'filePath': json['filePath'] == null ? undefined : json['filePath'],\n };\n}\n\nexport function FileStatusDtoToJSON(json: any): FileStatusDto {\n return FileStatusDtoToJSONTyped(json, false);\n}\n\nexport function FileStatusDtoToJSONTyped(value?: FileStatusDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'status': value['status'],\n 'filePath': value['filePath'],\n };\n}\n\n",
|
|
75
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { FileStatusDto } from './FileStatusDto';\nimport {\n FileStatusDtoFromJSON,\n FileStatusDtoFromJSONTyped,\n FileStatusDtoToJSON,\n FileStatusDtoToJSONTyped,\n} from './FileStatusDto';\n\n/**\n * \n * @export\n * @interface CommitDto\n */\nexport interface CommitDto {\n /**\n * \n * @type {string}\n * @memberof CommitDto\n */\n message?: string | null;\n /**\n * \n * @type {string}\n * @memberof CommitDto\n */\n author?: string | null;\n /**\n * \n * @type {Date}\n * @memberof CommitDto\n */\n date?: Date;\n /**\n * \n * @type {string}\n * @memberof CommitDto\n */\n reference?: string | null;\n /**\n * \n * @type {Array<FileStatusDto>}\n * @memberof CommitDto\n */\n fileStatuses?: Array<FileStatusDto> | null;\n /**\n * \n * @type {string}\n * @memberof CommitDto\n */\n previousCommitReference?: string | null;\n}\n\n/**\n * Check if a given object implements the CommitDto interface.\n */\nexport function instanceOfCommitDto(value: object): value is CommitDto {\n return true;\n}\n\nexport function CommitDtoFromJSON(json: any): CommitDto {\n return CommitDtoFromJSONTyped(json, false);\n}\n\nexport function CommitDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): CommitDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'message': json['message'] == null ? undefined : json['message'],\n 'author': json['author'] == null ? undefined : json['author'],\n 'date': json['date'] == null ? undefined : (new Date(json['date'])),\n 'reference': json['reference'] == null ? undefined : json['reference'],\n 'fileStatuses': json['fileStatuses'] == null ? undefined : ((json['fileStatuses'] as Array<any>).map(FileStatusDtoFromJSON)),\n 'previousCommitReference': json['previousCommitReference'] == null ? undefined : json['previousCommitReference'],\n };\n}\n\nexport function CommitDtoToJSON(json: any): CommitDto {\n return CommitDtoToJSONTyped(json, false);\n}\n\nexport function CommitDtoToJSONTyped(value?: CommitDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'message': value['message'],\n 'author': value['author'],\n 'date': value['date'] == null ? value['date'] : value['date'].toISOString(),\n 'reference': value['reference'],\n 'fileStatuses': value['fileStatuses'] == null ? undefined : ((value['fileStatuses'] as Array<any>).map(FileStatusDtoToJSON)),\n 'previousCommitReference': value['previousCommitReference'],\n };\n}\n\n",
|
|
76
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { CommitDto } from './CommitDto';\nimport {\n CommitDtoFromJSON,\n CommitDtoFromJSONTyped,\n CommitDtoToJSON,\n CommitDtoToJSONTyped,\n} from './CommitDto';\n\n/**\n * \n * @export\n * @interface CommitDtoLoadMoreResult\n */\nexport interface CommitDtoLoadMoreResult {\n /**\n * \n * @type {boolean}\n * @memberof CommitDtoLoadMoreResult\n */\n isLastBatch?: boolean;\n /**\n * \n * @type {Array<CommitDto>}\n * @memberof CommitDtoLoadMoreResult\n */\n result?: Array<CommitDto> | null;\n /**\n * \n * @type {number}\n * @memberof CommitDtoLoadMoreResult\n */\n totalCount?: number;\n /**\n * \n * @type {number}\n * @memberof CommitDtoLoadMoreResult\n */\n pageIndex?: number;\n}\n\n/**\n * Check if a given object implements the CommitDtoLoadMoreResult interface.\n */\nexport function instanceOfCommitDtoLoadMoreResult(value: object): value is CommitDtoLoadMoreResult {\n return true;\n}\n\nexport function CommitDtoLoadMoreResultFromJSON(json: any): CommitDtoLoadMoreResult {\n return CommitDtoLoadMoreResultFromJSONTyped(json, false);\n}\n\nexport function CommitDtoLoadMoreResultFromJSONTyped(json: any, ignoreDiscriminator: boolean): CommitDtoLoadMoreResult {\n if (json == null) {\n return json;\n }\n return {\n \n 'isLastBatch': json['isLastBatch'] == null ? undefined : json['isLastBatch'],\n 'result': json['result'] == null ? undefined : ((json['result'] as Array<any>).map(CommitDtoFromJSON)),\n 'totalCount': json['totalCount'] == null ? undefined : json['totalCount'],\n 'pageIndex': json['pageIndex'] == null ? undefined : json['pageIndex'],\n };\n}\n\nexport function CommitDtoLoadMoreResultToJSON(json: any): CommitDtoLoadMoreResult {\n return CommitDtoLoadMoreResultToJSONTyped(json, false);\n}\n\nexport function CommitDtoLoadMoreResultToJSONTyped(value?: CommitDtoLoadMoreResult | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'isLastBatch': value['isLastBatch'],\n 'result': value['result'] == null ? undefined : ((value['result'] as Array<any>).map(CommitDtoToJSON)),\n 'totalCount': value['totalCount'],\n 'pageIndex': value['pageIndex'],\n };\n}\n\n",
|
|
77
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const ConnectionType = {\n GitHub: 'GitHub',\n Azure: 'Azure'\n} as const;\nexport type ConnectionType = typeof ConnectionType[keyof typeof ConnectionType];\n\n\nexport function instanceOfConnectionType(value: any): boolean {\n for (const key in ConnectionType) {\n if (Object.prototype.hasOwnProperty.call(ConnectionType, key)) {\n if (ConnectionType[key as keyof typeof ConnectionType] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ConnectionTypeFromJSON(json: any): ConnectionType {\n return ConnectionTypeFromJSONTyped(json, false);\n}\n\nexport function ConnectionTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectionType {\n return json as ConnectionType;\n}\n\nexport function ConnectionTypeToJSON(value?: ConnectionType | null): any {\n return value as any;\n}\n\nexport function ConnectionTypeToJSONTyped(value: any, ignoreDiscriminator: boolean): ConnectionType {\n return value as ConnectionType;\n}\n\n",
|
|
78
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const ConnectionSyncState = {\n Success: 'Success',\n Fail: 'Fail',\n Broken: 'Broken'\n} as const;\nexport type ConnectionSyncState = typeof ConnectionSyncState[keyof typeof ConnectionSyncState];\n\n\nexport function instanceOfConnectionSyncState(value: any): boolean {\n for (const key in ConnectionSyncState) {\n if (Object.prototype.hasOwnProperty.call(ConnectionSyncState, key)) {\n if (ConnectionSyncState[key as keyof typeof ConnectionSyncState] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ConnectionSyncStateFromJSON(json: any): ConnectionSyncState {\n return ConnectionSyncStateFromJSONTyped(json, false);\n}\n\nexport function ConnectionSyncStateFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectionSyncState {\n return json as ConnectionSyncState;\n}\n\nexport function ConnectionSyncStateToJSON(value?: ConnectionSyncState | null): any {\n return value as any;\n}\n\nexport function ConnectionSyncStateToJSONTyped(value: any, ignoreDiscriminator: boolean): ConnectionSyncState {\n return value as ConnectionSyncState;\n}\n\n",
|
|
79
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ConnectionType } from './ConnectionType';\nimport {\n ConnectionTypeFromJSON,\n ConnectionTypeFromJSONTyped,\n ConnectionTypeToJSON,\n ConnectionTypeToJSONTyped,\n} from './ConnectionType';\nimport type { ConnectionSyncState } from './ConnectionSyncState';\nimport {\n ConnectionSyncStateFromJSON,\n ConnectionSyncStateFromJSONTyped,\n ConnectionSyncStateToJSON,\n ConnectionSyncStateToJSONTyped,\n} from './ConnectionSyncState';\n\n/**\n * \n * @export\n * @interface ConnectionDto\n */\nexport interface ConnectionDto {\n /**\n * \n * @type {string}\n * @memberof ConnectionDto\n */\n identifier?: string;\n /**\n * \n * @type {string}\n * @memberof ConnectionDto\n */\n name?: string | null;\n /**\n * \n * @type {ConnectionType}\n * @memberof ConnectionDto\n */\n type?: ConnectionType;\n /**\n * \n * @type {ConnectionSyncState}\n * @memberof ConnectionDto\n */\n syncState?: ConnectionSyncState | null;\n}\n\n\n\n/**\n * Check if a given object implements the ConnectionDto interface.\n */\nexport function instanceOfConnectionDto(value: object): value is ConnectionDto {\n return true;\n}\n\nexport function ConnectionDtoFromJSON(json: any): ConnectionDto {\n return ConnectionDtoFromJSONTyped(json, false);\n}\n\nexport function ConnectionDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectionDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'identifier': json['identifier'] == null ? undefined : json['identifier'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'type': json['type'] == null ? undefined : ConnectionTypeFromJSON(json['type']),\n 'syncState': json['syncState'] == null ? undefined : ConnectionSyncStateFromJSON(json['syncState']),\n };\n}\n\nexport function ConnectionDtoToJSON(json: any): ConnectionDto {\n return ConnectionDtoToJSONTyped(json, false);\n}\n\nexport function ConnectionDtoToJSONTyped(value?: ConnectionDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'identifier': value['identifier'],\n 'name': value['name'],\n 'type': ConnectionTypeToJSON(value['type']),\n 'syncState': ConnectionSyncStateToJSON(value['syncState']),\n };\n}\n\n",
|
|
80
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ConnectionType } from './ConnectionType';\nimport {\n ConnectionTypeFromJSON,\n ConnectionTypeFromJSONTyped,\n ConnectionTypeToJSON,\n ConnectionTypeToJSONTyped,\n} from './ConnectionType';\nimport type { AzureOrganizationDto } from './AzureOrganizationDto';\nimport {\n AzureOrganizationDtoFromJSON,\n AzureOrganizationDtoFromJSONTyped,\n AzureOrganizationDtoToJSON,\n AzureOrganizationDtoToJSONTyped,\n} from './AzureOrganizationDto';\nimport type { ConnectionSyncState } from './ConnectionSyncState';\nimport {\n ConnectionSyncStateFromJSON,\n ConnectionSyncStateFromJSONTyped,\n ConnectionSyncStateToJSON,\n ConnectionSyncStateToJSONTyped,\n} from './ConnectionSyncState';\n\n/**\n * \n * @export\n * @interface ConnectionStateDto\n */\nexport interface ConnectionStateDto {\n /**\n * \n * @type {string}\n * @memberof ConnectionStateDto\n */\n identifier?: string;\n /**\n * \n * @type {string}\n * @memberof ConnectionStateDto\n */\n name?: string | null;\n /**\n * \n * @type {ConnectionType}\n * @memberof ConnectionStateDto\n */\n type?: ConnectionType;\n /**\n * \n * @type {ConnectionSyncState}\n * @memberof ConnectionStateDto\n */\n syncState?: ConnectionSyncState | null;\n /**\n * \n * @type {Date}\n * @memberof ConnectionStateDto\n */\n lastSyncDate?: Date | null;\n /**\n * \n * @type {boolean}\n * @memberof ConnectionStateDto\n */\n syncingInProgress?: boolean;\n /**\n * \n * @type {Date}\n * @memberof ConnectionStateDto\n */\n createdDate?: Date | null;\n /**\n * \n * @type {Array<AzureOrganizationDto>}\n * @memberof ConnectionStateDto\n */\n organizations?: Array<AzureOrganizationDto> | null;\n}\n\n\n\n/**\n * Check if a given object implements the ConnectionStateDto interface.\n */\nexport function instanceOfConnectionStateDto(value: object): value is ConnectionStateDto {\n return true;\n}\n\nexport function ConnectionStateDtoFromJSON(json: any): ConnectionStateDto {\n return ConnectionStateDtoFromJSONTyped(json, false);\n}\n\nexport function ConnectionStateDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectionStateDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'identifier': json['identifier'] == null ? undefined : json['identifier'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'type': json['type'] == null ? undefined : ConnectionTypeFromJSON(json['type']),\n 'syncState': json['syncState'] == null ? undefined : ConnectionSyncStateFromJSON(json['syncState']),\n 'lastSyncDate': json['lastSyncDate'] == null ? undefined : (new Date(json['lastSyncDate'])),\n 'syncingInProgress': json['syncingInProgress'] == null ? undefined : json['syncingInProgress'],\n 'createdDate': json['createdDate'] == null ? undefined : (new Date(json['createdDate'])),\n 'organizations': json['organizations'] == null ? undefined : ((json['organizations'] as Array<any>).map(AzureOrganizationDtoFromJSON)),\n };\n}\n\nexport function ConnectionStateDtoToJSON(json: any): ConnectionStateDto {\n return ConnectionStateDtoToJSONTyped(json, false);\n}\n\nexport function ConnectionStateDtoToJSONTyped(value?: ConnectionStateDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'identifier': value['identifier'],\n 'name': value['name'],\n 'type': ConnectionTypeToJSON(value['type']),\n 'syncState': ConnectionSyncStateToJSON(value['syncState']),\n 'lastSyncDate': value['lastSyncDate'] == null ? value['lastSyncDate'] : value['lastSyncDate'].toISOString(),\n 'syncingInProgress': value['syncingInProgress'],\n 'createdDate': value['createdDate'] == null ? value['createdDate'] : value['createdDate'].toISOString(),\n 'organizations': value['organizations'] == null ? undefined : ((value['organizations'] as Array<any>).map(AzureOrganizationDtoToJSON)),\n };\n}\n\n",
|
|
81
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface InstallationRequest\n */\nexport interface InstallationRequest {\n /**\n * \n * @type {number}\n * @memberof InstallationRequest\n */\n installationId?: number;\n /**\n * \n * @type {string}\n * @memberof InstallationRequest\n */\n gitHubCode?: string | null;\n}\n\n/**\n * Check if a given object implements the InstallationRequest interface.\n */\nexport function instanceOfInstallationRequest(value: object): value is InstallationRequest {\n return true;\n}\n\nexport function InstallationRequestFromJSON(json: any): InstallationRequest {\n return InstallationRequestFromJSONTyped(json, false);\n}\n\nexport function InstallationRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): InstallationRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'installationId': json['installationId'] == null ? undefined : json['installationId'],\n 'gitHubCode': json['gitHubCode'] == null ? undefined : json['gitHubCode'],\n };\n}\n\nexport function InstallationRequestToJSON(json: any): InstallationRequest {\n return InstallationRequestToJSONTyped(json, false);\n}\n\nexport function InstallationRequestToJSONTyped(value?: InstallationRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'installationId': value['installationId'],\n 'gitHubCode': value['gitHubCode'],\n };\n}\n\n",
|
|
82
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ProjectFileContent\n */\nexport interface ProjectFileContent {\n /**\n * \n * @type {string}\n * @memberof ProjectFileContent\n */\n fileContent?: string | null;\n}\n\n/**\n * Check if a given object implements the ProjectFileContent interface.\n */\nexport function instanceOfProjectFileContent(value: object): value is ProjectFileContent {\n return true;\n}\n\nexport function ProjectFileContentFromJSON(json: any): ProjectFileContent {\n return ProjectFileContentFromJSONTyped(json, false);\n}\n\nexport function ProjectFileContentFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectFileContent {\n if (json == null) {\n return json;\n }\n return {\n \n 'fileContent': json['fileContent'] == null ? undefined : json['fileContent'],\n };\n}\n\nexport function ProjectFileContentToJSON(json: any): ProjectFileContent {\n return ProjectFileContentToJSONTyped(json, false);\n}\n\nexport function ProjectFileContentToJSONTyped(value?: ProjectFileContent | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'fileContent': value['fileContent'],\n };\n}\n\n",
|
|
83
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const ProjectItemType = {\n Unknown: 'Unknown',\n File: 'File',\n Dir: 'Dir',\n Symlink: 'Symlink',\n Submodule: 'Submodule'\n} as const;\nexport type ProjectItemType = typeof ProjectItemType[keyof typeof ProjectItemType];\n\n\nexport function instanceOfProjectItemType(value: any): boolean {\n for (const key in ProjectItemType) {\n if (Object.prototype.hasOwnProperty.call(ProjectItemType, key)) {\n if (ProjectItemType[key as keyof typeof ProjectItemType] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ProjectItemTypeFromJSON(json: any): ProjectItemType {\n return ProjectItemTypeFromJSONTyped(json, false);\n}\n\nexport function ProjectItemTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectItemType {\n return json as ProjectItemType;\n}\n\nexport function ProjectItemTypeToJSON(value?: ProjectItemType | null): any {\n return value as any;\n}\n\nexport function ProjectItemTypeToJSONTyped(value: any, ignoreDiscriminator: boolean): ProjectItemType {\n return value as ProjectItemType;\n}\n\n",
|
|
84
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectItemType } from './ProjectItemType';\nimport {\n ProjectItemTypeFromJSON,\n ProjectItemTypeFromJSONTyped,\n ProjectItemTypeToJSON,\n ProjectItemTypeToJSONTyped,\n} from './ProjectItemType';\n\n/**\n * \n * @export\n * @interface ProjectItemDetailsDto\n */\nexport interface ProjectItemDetailsDto {\n /**\n * \n * @type {string}\n * @memberof ProjectItemDetailsDto\n */\n name?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectItemDetailsDto\n */\n path?: string | null;\n /**\n * \n * @type {ProjectItemType}\n * @memberof ProjectItemDetailsDto\n */\n type?: ProjectItemType;\n /**\n * \n * @type {string}\n * @memberof ProjectItemDetailsDto\n */\n buildableUnitType?: string | null;\n}\n\n\n\n/**\n * Check if a given object implements the ProjectItemDetailsDto interface.\n */\nexport function instanceOfProjectItemDetailsDto(value: object): value is ProjectItemDetailsDto {\n return true;\n}\n\nexport function ProjectItemDetailsDtoFromJSON(json: any): ProjectItemDetailsDto {\n return ProjectItemDetailsDtoFromJSONTyped(json, false);\n}\n\nexport function ProjectItemDetailsDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectItemDetailsDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'] == null ? undefined : json['name'],\n 'path': json['path'] == null ? undefined : json['path'],\n 'type': json['type'] == null ? undefined : ProjectItemTypeFromJSON(json['type']),\n 'buildableUnitType': json['buildableUnitType'] == null ? undefined : json['buildableUnitType'],\n };\n}\n\nexport function ProjectItemDetailsDtoToJSON(json: any): ProjectItemDetailsDto {\n return ProjectItemDetailsDtoToJSONTyped(json, false);\n}\n\nexport function ProjectItemDetailsDtoToJSONTyped(value?: ProjectItemDetailsDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n 'path': value['path'],\n 'type': ProjectItemTypeToJSON(value['type']),\n 'buildableUnitType': value['buildableUnitType'],\n };\n}\n\n",
|
|
85
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SolutionProjectDto\n */\nexport interface SolutionProjectDto {\n /**\n * \n * @type {string}\n * @memberof SolutionProjectDto\n */\n projectId?: string | null;\n /**\n * \n * @type {string}\n * @memberof SolutionProjectDto\n */\n type?: string | null;\n /**\n * \n * @type {string}\n * @memberof SolutionProjectDto\n */\n projectRelativePath?: string | null;\n}\n\n/**\n * Check if a given object implements the SolutionProjectDto interface.\n */\nexport function instanceOfSolutionProjectDto(value: object): value is SolutionProjectDto {\n return true;\n}\n\nexport function SolutionProjectDtoFromJSON(json: any): SolutionProjectDto {\n return SolutionProjectDtoFromJSONTyped(json, false);\n}\n\nexport function SolutionProjectDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): SolutionProjectDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'type': json['type'] == null ? undefined : json['type'],\n 'projectRelativePath': json['projectRelativePath'] == null ? undefined : json['projectRelativePath'],\n };\n}\n\nexport function SolutionProjectDtoToJSON(json: any): SolutionProjectDto {\n return SolutionProjectDtoToJSONTyped(json, false);\n}\n\nexport function SolutionProjectDtoToJSONTyped(value?: SolutionProjectDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'projectId': value['projectId'],\n 'type': value['type'],\n 'projectRelativePath': value['projectRelativePath'],\n };\n}\n\n",
|
|
86
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { RepositoryDto } from './RepositoryDto';\nimport {\n RepositoryDtoFromJSON,\n RepositoryDtoFromJSONTyped,\n RepositoryDtoToJSON,\n RepositoryDtoToJSONTyped,\n} from './RepositoryDto';\nimport type { SolutionProjectDto } from './SolutionProjectDto';\nimport {\n SolutionProjectDtoFromJSON,\n SolutionProjectDtoFromJSONTyped,\n SolutionProjectDtoToJSON,\n SolutionProjectDtoToJSONTyped,\n} from './SolutionProjectDto';\n\n/**\n * \n * @export\n * @interface SolutionDto\n */\nexport interface SolutionDto {\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n identifier?: string;\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n connectionIdentifier?: string;\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n name?: string | null;\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n path?: string | null;\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n version?: string | null;\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n solutionId?: string | null;\n /**\n * \n * @type {Date}\n * @memberof SolutionDto\n */\n lastUpdated?: Date;\n /**\n * \n * @type {RepositoryDto}\n * @memberof SolutionDto\n */\n repository?: RepositoryDto | null;\n /**\n * \n * @type {Array<SolutionProjectDto>}\n * @memberof SolutionDto\n */\n projects?: Array<SolutionProjectDto> | null;\n}\n\n/**\n * Check if a given object implements the SolutionDto interface.\n */\nexport function instanceOfSolutionDto(value: object): value is SolutionDto {\n return true;\n}\n\nexport function SolutionDtoFromJSON(json: any): SolutionDto {\n return SolutionDtoFromJSONTyped(json, false);\n}\n\nexport function SolutionDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): SolutionDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'identifier': json['identifier'] == null ? undefined : json['identifier'],\n 'connectionIdentifier': json['connectionIdentifier'] == null ? undefined : json['connectionIdentifier'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'path': json['path'] == null ? undefined : json['path'],\n 'version': json['version'] == null ? undefined : json['version'],\n 'solutionId': json['solutionId'] == null ? undefined : json['solutionId'],\n 'lastUpdated': json['lastUpdated'] == null ? undefined : (new Date(json['lastUpdated'])),\n 'repository': json['repository'] == null ? undefined : RepositoryDtoFromJSON(json['repository']),\n 'projects': json['projects'] == null ? undefined : ((json['projects'] as Array<any>).map(SolutionProjectDtoFromJSON)),\n };\n}\n\nexport function SolutionDtoToJSON(json: any): SolutionDto {\n return SolutionDtoToJSONTyped(json, false);\n}\n\nexport function SolutionDtoToJSONTyped(value?: SolutionDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'identifier': value['identifier'],\n 'connectionIdentifier': value['connectionIdentifier'],\n 'name': value['name'],\n 'path': value['path'],\n 'version': value['version'],\n 'solutionId': value['solutionId'],\n 'lastUpdated': value['lastUpdated'] == null ? value['lastUpdated'] : value['lastUpdated'].toISOString(),\n 'repository': RepositoryDtoToJSON(value['repository']),\n 'projects': value['projects'] == null ? undefined : ((value['projects'] as Array<any>).map(SolutionProjectDtoToJSON)),\n };\n}\n\n",
|
|
87
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { SolutionDto } from './SolutionDto';\nimport {\n SolutionDtoFromJSON,\n SolutionDtoFromJSONTyped,\n SolutionDtoToJSON,\n SolutionDtoToJSONTyped,\n} from './SolutionDto';\n\n/**\n * \n * @export\n * @interface SolutionDtoPagedResult\n */\nexport interface SolutionDtoPagedResult {\n /**\n * \n * @type {number}\n * @memberof SolutionDtoPagedResult\n */\n totalCount?: number;\n /**\n * \n * @type {Array<SolutionDto>}\n * @memberof SolutionDtoPagedResult\n */\n result?: Array<SolutionDto> | null;\n}\n\n/**\n * Check if a given object implements the SolutionDtoPagedResult interface.\n */\nexport function instanceOfSolutionDtoPagedResult(value: object): value is SolutionDtoPagedResult {\n return true;\n}\n\nexport function SolutionDtoPagedResultFromJSON(json: any): SolutionDtoPagedResult {\n return SolutionDtoPagedResultFromJSONTyped(json, false);\n}\n\nexport function SolutionDtoPagedResultFromJSONTyped(json: any, ignoreDiscriminator: boolean): SolutionDtoPagedResult {\n if (json == null) {\n return json;\n }\n return {\n \n 'totalCount': json['totalCount'] == null ? undefined : json['totalCount'],\n 'result': json['result'] == null ? undefined : ((json['result'] as Array<any>).map(SolutionDtoFromJSON)),\n };\n}\n\nexport function SolutionDtoPagedResultToJSON(json: any): SolutionDtoPagedResult {\n return SolutionDtoPagedResultToJSONTyped(json, false);\n}\n\nexport function SolutionDtoPagedResultToJSONTyped(value?: SolutionDtoPagedResult | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'totalCount': value['totalCount'],\n 'result': value['result'] == null ? undefined : ((value['result'] as Array<any>).map(SolutionDtoToJSON)),\n };\n}\n\n",
|
|
88
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AutomationProjectDtoPagedResult,\n AzureAuthorizationRequest,\n AzureProjectDto,\n ConnectionDto,\n ConnectionStateDto,\n InstallationRequest,\n RepositoryDto,\n SolutionDtoPagedResult,\n} from '../models/index';\nimport {\n AutomationProjectDtoPagedResultFromJSON,\n AutomationProjectDtoPagedResultToJSON,\n AzureAuthorizationRequestFromJSON,\n AzureAuthorizationRequestToJSON,\n AzureProjectDtoFromJSON,\n AzureProjectDtoToJSON,\n ConnectionDtoFromJSON,\n ConnectionDtoToJSON,\n ConnectionStateDtoFromJSON,\n ConnectionStateDtoToJSON,\n InstallationRequestFromJSON,\n InstallationRequestToJSON,\n RepositoryDtoFromJSON,\n RepositoryDtoToJSON,\n SolutionDtoPagedResultFromJSON,\n SolutionDtoPagedResultToJSON,\n} from '../models/index';\n\nexport interface ConnectionsDeleteConnectionRequest {\n connectionIdentifier: string;\n}\n\nexport interface ConnectionsGetAzureProjectsRequest {\n connectionIdentifier: string;\n organizationIdentifier?: string;\n}\n\nexport interface ConnectionsGetProjectsRequest {\n connectionIdentifier: string;\n repositoryIds?: string;\n targetFramework?: string;\n projectType?: string;\n sortBy?: string;\n sortOrder?: string;\n azureProjectsIds?: string;\n organizationIdentifier?: string;\n pageIndex?: number;\n pageSize?: number;\n searchTerm?: string;\n}\n\nexport interface ConnectionsGetRepositoriesRequest {\n connectionIdentifier: string;\n azureProjectsIds?: string;\n organizationIdentifier?: string;\n}\n\nexport interface ConnectionsGetRepositoriesPerConnectionsRequest {\n connectionsIdentifiers?: Array<string>;\n}\n\nexport interface ConnectionsGetSolutionsRequest {\n connectionIdentifier: string;\n pageIndex?: number;\n pageSize?: number;\n searchTerm?: string;\n}\n\nexport interface ConnectionsSaveAzureConnectionRequest {\n azureAuthorizationRequest?: AzureAuthorizationRequest;\n}\n\nexport interface ConnectionsSaveGitHubConnectionRequest {\n installationRequest?: InstallationRequest;\n}\n\nexport interface ConnectionsSyncConnectionRequest {\n connectionIdentifier: string;\n}\n\n/**\n * \n */\nexport class ConnectionsApi extends runtime.BaseAPI {\n\n /**\n * Creates request options for connectionsDeleteConnection without sending the request\n */\n async connectionsDeleteConnectionRequestOpts(requestParameters: ConnectionsDeleteConnectionRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['connectionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'connectionIdentifier',\n 'Required parameter \"connectionIdentifier\" was null or undefined when calling connectionsDeleteConnection().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections/{connectionIdentifier}`;\n urlPath = urlPath.replace(`{${\"connectionIdentifier\"}}`, encodeURIComponent(String(requestParameters['connectionIdentifier'])));\n\n return {\n path: urlPath,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async connectionsDeleteConnectionRaw(requestParameters: ConnectionsDeleteConnectionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const requestOptions = await this.connectionsDeleteConnectionRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async connectionsDeleteConnection(requestParameters: ConnectionsDeleteConnectionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.connectionsDeleteConnectionRaw(requestParameters, initOverrides);\n }\n\n /**\n * Creates request options for connectionsGetAzureProjects without sending the request\n */\n async connectionsGetAzureProjectsRequestOpts(requestParameters: ConnectionsGetAzureProjectsRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['connectionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'connectionIdentifier',\n 'Required parameter \"connectionIdentifier\" was null or undefined when calling connectionsGetAzureProjects().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['organizationIdentifier'] != null) {\n queryParameters['organizationIdentifier'] = requestParameters['organizationIdentifier'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections/{connectionIdentifier}/azureProjects`;\n urlPath = urlPath.replace(`{${\"connectionIdentifier\"}}`, encodeURIComponent(String(requestParameters['connectionIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async connectionsGetAzureProjectsRaw(requestParameters: ConnectionsGetAzureProjectsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<AzureProjectDto>>> {\n const requestOptions = await this.connectionsGetAzureProjectsRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(AzureProjectDtoFromJSON));\n }\n\n /**\n */\n async connectionsGetAzureProjects(requestParameters: ConnectionsGetAzureProjectsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<AzureProjectDto>> {\n const response = await this.connectionsGetAzureProjectsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for connectionsGetConnections without sending the request\n */\n async connectionsGetConnectionsRequestOpts(): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async connectionsGetConnectionsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<ConnectionDto>>> {\n const requestOptions = await this.connectionsGetConnectionsRequestOpts();\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ConnectionDtoFromJSON));\n }\n\n /**\n */\n async connectionsGetConnections(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<ConnectionDto>> {\n const response = await this.connectionsGetConnectionsRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for connectionsGetConnectionsStates without sending the request\n */\n async connectionsGetConnectionsStatesRequestOpts(): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections/state`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async connectionsGetConnectionsStatesRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<ConnectionStateDto>>> {\n const requestOptions = await this.connectionsGetConnectionsStatesRequestOpts();\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ConnectionStateDtoFromJSON));\n }\n\n /**\n */\n async connectionsGetConnectionsStates(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<ConnectionStateDto>> {\n const response = await this.connectionsGetConnectionsStatesRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for connectionsGetProjects without sending the request\n */\n async connectionsGetProjectsRequestOpts(requestParameters: ConnectionsGetProjectsRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['connectionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'connectionIdentifier',\n 'Required parameter \"connectionIdentifier\" was null or undefined when calling connectionsGetProjects().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['repositoryIds'] != null) {\n queryParameters['repositoryIds'] = requestParameters['repositoryIds'];\n }\n\n if (requestParameters['targetFramework'] != null) {\n queryParameters['targetFramework'] = requestParameters['targetFramework'];\n }\n\n if (requestParameters['projectType'] != null) {\n queryParameters['projectType'] = requestParameters['projectType'];\n }\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortOrder'] != null) {\n queryParameters['sortOrder'] = requestParameters['sortOrder'];\n }\n\n if (requestParameters['azureProjectsIds'] != null) {\n queryParameters['azureProjectsIds'] = requestParameters['azureProjectsIds'];\n }\n\n if (requestParameters['organizationIdentifier'] != null) {\n queryParameters['organizationIdentifier'] = requestParameters['organizationIdentifier'];\n }\n\n if (requestParameters['pageIndex'] != null) {\n queryParameters['pageIndex'] = requestParameters['pageIndex'];\n }\n\n if (requestParameters['pageSize'] != null) {\n queryParameters['pageSize'] = requestParameters['pageSize'];\n }\n\n if (requestParameters['searchTerm'] != null) {\n queryParameters['searchTerm'] = requestParameters['searchTerm'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections/{connectionIdentifier}/projects`;\n urlPath = urlPath.replace(`{${\"connectionIdentifier\"}}`, encodeURIComponent(String(requestParameters['connectionIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async connectionsGetProjectsRaw(requestParameters: ConnectionsGetProjectsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AutomationProjectDtoPagedResult>> {\n const requestOptions = await this.connectionsGetProjectsRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => AutomationProjectDtoPagedResultFromJSON(jsonValue));\n }\n\n /**\n */\n async connectionsGetProjects(requestParameters: ConnectionsGetProjectsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AutomationProjectDtoPagedResult> {\n const response = await this.connectionsGetProjectsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for connectionsGetRepositories without sending the request\n */\n async connectionsGetRepositoriesRequestOpts(requestParameters: ConnectionsGetRepositoriesRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['connectionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'connectionIdentifier',\n 'Required parameter \"connectionIdentifier\" was null or undefined when calling connectionsGetRepositories().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['azureProjectsIds'] != null) {\n queryParameters['azureProjectsIds'] = requestParameters['azureProjectsIds'];\n }\n\n if (requestParameters['organizationIdentifier'] != null) {\n queryParameters['organizationIdentifier'] = requestParameters['organizationIdentifier'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections/{connectionIdentifier}/repos`;\n urlPath = urlPath.replace(`{${\"connectionIdentifier\"}}`, encodeURIComponent(String(requestParameters['connectionIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async connectionsGetRepositoriesRaw(requestParameters: ConnectionsGetRepositoriesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<RepositoryDto>>> {\n const requestOptions = await this.connectionsGetRepositoriesRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(RepositoryDtoFromJSON));\n }\n\n /**\n */\n async connectionsGetRepositories(requestParameters: ConnectionsGetRepositoriesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<RepositoryDto>> {\n const response = await this.connectionsGetRepositoriesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for connectionsGetRepositoriesPerConnections without sending the request\n */\n async connectionsGetRepositoriesPerConnectionsRequestOpts(requestParameters: ConnectionsGetRepositoriesPerConnectionsRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n if (requestParameters['connectionsIdentifiers'] != null) {\n queryParameters['connectionsIdentifiers'] = requestParameters['connectionsIdentifiers'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections/repos`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async connectionsGetRepositoriesPerConnectionsRaw(requestParameters: ConnectionsGetRepositoriesPerConnectionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: Array<RepositoryDto>; }>> {\n const requestOptions = await this.connectionsGetRepositoriesPerConnectionsRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse<any>(response);\n }\n\n /**\n */\n async connectionsGetRepositoriesPerConnections(requestParameters: ConnectionsGetRepositoriesPerConnectionsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: Array<RepositoryDto>; }> {\n const response = await this.connectionsGetRepositoriesPerConnectionsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for connectionsGetSolutions without sending the request\n */\n async connectionsGetSolutionsRequestOpts(requestParameters: ConnectionsGetSolutionsRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['connectionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'connectionIdentifier',\n 'Required parameter \"connectionIdentifier\" was null or undefined when calling connectionsGetSolutions().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['pageIndex'] != null) {\n queryParameters['pageIndex'] = requestParameters['pageIndex'];\n }\n\n if (requestParameters['pageSize'] != null) {\n queryParameters['pageSize'] = requestParameters['pageSize'];\n }\n\n if (requestParameters['searchTerm'] != null) {\n queryParameters['searchTerm'] = requestParameters['searchTerm'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections/{connectionIdentifier}/solutions`;\n urlPath = urlPath.replace(`{${\"connectionIdentifier\"}}`, encodeURIComponent(String(requestParameters['connectionIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async connectionsGetSolutionsRaw(requestParameters: ConnectionsGetSolutionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SolutionDtoPagedResult>> {\n const requestOptions = await this.connectionsGetSolutionsRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SolutionDtoPagedResultFromJSON(jsonValue));\n }\n\n /**\n */\n async connectionsGetSolutions(requestParameters: ConnectionsGetSolutionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SolutionDtoPagedResult> {\n const response = await this.connectionsGetSolutionsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for connectionsSaveAzureConnection without sending the request\n */\n async connectionsSaveAzureConnectionRequestOpts(requestParameters: ConnectionsSaveAzureConnectionRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections/azure`;\n\n return {\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AzureAuthorizationRequestToJSON(requestParameters['azureAuthorizationRequest']),\n };\n }\n\n /**\n */\n async connectionsSaveAzureConnectionRaw(requestParameters: ConnectionsSaveAzureConnectionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const requestOptions = await this.connectionsSaveAzureConnectionRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async connectionsSaveAzureConnection(requestParameters: ConnectionsSaveAzureConnectionRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.connectionsSaveAzureConnectionRaw(requestParameters, initOverrides);\n }\n\n /**\n * Creates request options for connectionsSaveGitHubConnection without sending the request\n */\n async connectionsSaveGitHubConnectionRequestOpts(requestParameters: ConnectionsSaveGitHubConnectionRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections/github`;\n\n return {\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: InstallationRequestToJSON(requestParameters['installationRequest']),\n };\n }\n\n /**\n */\n async connectionsSaveGitHubConnectionRaw(requestParameters: ConnectionsSaveGitHubConnectionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const requestOptions = await this.connectionsSaveGitHubConnectionRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async connectionsSaveGitHubConnection(requestParameters: ConnectionsSaveGitHubConnectionRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.connectionsSaveGitHubConnectionRaw(requestParameters, initOverrides);\n }\n\n /**\n * Creates request options for connectionsSyncConnection without sending the request\n */\n async connectionsSyncConnectionRequestOpts(requestParameters: ConnectionsSyncConnectionRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['connectionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'connectionIdentifier',\n 'Required parameter \"connectionIdentifier\" was null or undefined when calling connectionsSyncConnection().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections/{connectionIdentifier}/sync`;\n urlPath = urlPath.replace(`{${\"connectionIdentifier\"}}`, encodeURIComponent(String(requestParameters['connectionIdentifier'])));\n\n return {\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async connectionsSyncConnectionRaw(requestParameters: ConnectionsSyncConnectionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const requestOptions = await this.connectionsSyncConnectionRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async connectionsSyncConnection(requestParameters: ConnectionsSyncConnectionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.connectionsSyncConnectionRaw(requestParameters, initOverrides);\n }\n\n /**\n * Creates request options for connectionsSyncConnections without sending the request\n */\n async connectionsSyncConnectionsRequestOpts(): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Connections/sync`;\n\n return {\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async connectionsSyncConnectionsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const requestOptions = await this.connectionsSyncConnectionsRequestOpts();\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async connectionsSyncConnections(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.connectionsSyncConnectionsRaw(initOverrides);\n }\n\n}\n",
|
|
89
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AutomationProjectDto,\n CommitDto,\n CommitDtoLoadMoreResult,\n ProjectFileContent,\n ProjectItemDetailsDto,\n} from '../models/index';\nimport {\n AutomationProjectDtoFromJSON,\n AutomationProjectDtoToJSON,\n CommitDtoFromJSON,\n CommitDtoToJSON,\n CommitDtoLoadMoreResultFromJSON,\n CommitDtoLoadMoreResultToJSON,\n ProjectFileContentFromJSON,\n ProjectFileContentToJSON,\n ProjectItemDetailsDtoFromJSON,\n ProjectItemDetailsDtoToJSON,\n} from '../models/index';\n\nexport interface ProjectsGetAutomationProjectCommitRequest {\n projectIdentifier: string;\n reference: string;\n}\n\nexport interface ProjectsGetAutomationProjectCommitByRemoteMetadataRequest {\n repositoryName: string;\n reference: string;\n connectionIdentifier: string;\n path?: string;\n}\n\nexport interface ProjectsGetAutomationProjectCommitsRequest {\n projectIdentifier: string;\n path?: string;\n branch?: string;\n pageIndex?: number;\n pageSize?: number;\n searchTerm?: string;\n}\n\nexport interface ProjectsGetAutomationProjectFileContentRequest {\n projectIdentifier: string;\n path?: string;\n reference?: string;\n}\n\nexport interface ProjectsGetAutomationProjectFileContentByRemoteMetadataRequest {\n repositoryName: string;\n connectionIdentifier: string;\n path?: string;\n reference?: string;\n}\n\nexport interface ProjectsGetAutomationProjectFilesRequest {\n projectIdentifier: string;\n path?: string;\n reference?: string;\n}\n\nexport interface ProjectsGetAutomationProjectFilesByRemoteMetadataRequest {\n connectionIdentifier: string;\n repositoryName: string;\n path?: string;\n reference?: string;\n}\n\nexport interface ProjectsGetProjectRequest {\n projectIdentifier: string;\n reference?: string;\n}\n\nexport interface ProjectsGetProjectByRemoteMetadataRequest {\n connectionIdentifier: string;\n repositoryName: string;\n path?: string;\n reference?: string;\n}\n\n/**\n * \n */\nexport class ProjectsApi extends runtime.BaseAPI {\n\n /**\n * Creates request options for projectsGetAutomationProjectCommit without sending the request\n */\n async projectsGetAutomationProjectCommitRequestOpts(requestParameters: ProjectsGetAutomationProjectCommitRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['projectIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'projectIdentifier',\n 'Required parameter \"projectIdentifier\" was null or undefined when calling projectsGetAutomationProjectCommit().'\n );\n }\n\n if (requestParameters['reference'] == null) {\n throw new runtime.RequiredError(\n 'reference',\n 'Required parameter \"reference\" was null or undefined when calling projectsGetAutomationProjectCommit().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Projects/{projectIdentifier}/commits/{reference}`;\n urlPath = urlPath.replace(`{${\"projectIdentifier\"}}`, encodeURIComponent(String(requestParameters['projectIdentifier'])));\n urlPath = urlPath.replace(`{${\"reference\"}}`, encodeURIComponent(String(requestParameters['reference'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async projectsGetAutomationProjectCommitRaw(requestParameters: ProjectsGetAutomationProjectCommitRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CommitDto>> {\n const requestOptions = await this.projectsGetAutomationProjectCommitRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => CommitDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async projectsGetAutomationProjectCommit(requestParameters: ProjectsGetAutomationProjectCommitRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CommitDto> {\n const response = await this.projectsGetAutomationProjectCommitRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for projectsGetAutomationProjectCommitByRemoteMetadata without sending the request\n */\n async projectsGetAutomationProjectCommitByRemoteMetadataRequestOpts(requestParameters: ProjectsGetAutomationProjectCommitByRemoteMetadataRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['repositoryName'] == null) {\n throw new runtime.RequiredError(\n 'repositoryName',\n 'Required parameter \"repositoryName\" was null or undefined when calling projectsGetAutomationProjectCommitByRemoteMetadata().'\n );\n }\n\n if (requestParameters['reference'] == null) {\n throw new runtime.RequiredError(\n 'reference',\n 'Required parameter \"reference\" was null or undefined when calling projectsGetAutomationProjectCommitByRemoteMetadata().'\n );\n }\n\n if (requestParameters['connectionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'connectionIdentifier',\n 'Required parameter \"connectionIdentifier\" was null or undefined when calling projectsGetAutomationProjectCommitByRemoteMetadata().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['path'] != null) {\n queryParameters['path'] = requestParameters['path'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Projects/connection/{connectionIdentifier}/repo/{repositoryName}/commits/{reference}`;\n urlPath = urlPath.replace(`{${\"repositoryName\"}}`, encodeURIComponent(String(requestParameters['repositoryName'])));\n urlPath = urlPath.replace(`{${\"reference\"}}`, encodeURIComponent(String(requestParameters['reference'])));\n urlPath = urlPath.replace(`{${\"connectionIdentifier\"}}`, encodeURIComponent(String(requestParameters['connectionIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async projectsGetAutomationProjectCommitByRemoteMetadataRaw(requestParameters: ProjectsGetAutomationProjectCommitByRemoteMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CommitDto>> {\n const requestOptions = await this.projectsGetAutomationProjectCommitByRemoteMetadataRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => CommitDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async projectsGetAutomationProjectCommitByRemoteMetadata(requestParameters: ProjectsGetAutomationProjectCommitByRemoteMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CommitDto> {\n const response = await this.projectsGetAutomationProjectCommitByRemoteMetadataRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for projectsGetAutomationProjectCommits without sending the request\n */\n async projectsGetAutomationProjectCommitsRequestOpts(requestParameters: ProjectsGetAutomationProjectCommitsRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['projectIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'projectIdentifier',\n 'Required parameter \"projectIdentifier\" was null or undefined when calling projectsGetAutomationProjectCommits().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['path'] != null) {\n queryParameters['path'] = requestParameters['path'];\n }\n\n if (requestParameters['branch'] != null) {\n queryParameters['branch'] = requestParameters['branch'];\n }\n\n if (requestParameters['pageIndex'] != null) {\n queryParameters['pageIndex'] = requestParameters['pageIndex'];\n }\n\n if (requestParameters['pageSize'] != null) {\n queryParameters['pageSize'] = requestParameters['pageSize'];\n }\n\n if (requestParameters['searchTerm'] != null) {\n queryParameters['searchTerm'] = requestParameters['searchTerm'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Projects/{projectIdentifier}/commits`;\n urlPath = urlPath.replace(`{${\"projectIdentifier\"}}`, encodeURIComponent(String(requestParameters['projectIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async projectsGetAutomationProjectCommitsRaw(requestParameters: ProjectsGetAutomationProjectCommitsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CommitDtoLoadMoreResult>> {\n const requestOptions = await this.projectsGetAutomationProjectCommitsRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => CommitDtoLoadMoreResultFromJSON(jsonValue));\n }\n\n /**\n */\n async projectsGetAutomationProjectCommits(requestParameters: ProjectsGetAutomationProjectCommitsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CommitDtoLoadMoreResult> {\n const response = await this.projectsGetAutomationProjectCommitsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for projectsGetAutomationProjectFileContent without sending the request\n */\n async projectsGetAutomationProjectFileContentRequestOpts(requestParameters: ProjectsGetAutomationProjectFileContentRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['projectIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'projectIdentifier',\n 'Required parameter \"projectIdentifier\" was null or undefined when calling projectsGetAutomationProjectFileContent().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['path'] != null) {\n queryParameters['path'] = requestParameters['path'];\n }\n\n if (requestParameters['reference'] != null) {\n queryParameters['reference'] = requestParameters['reference'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Projects/{projectIdentifier}/content`;\n urlPath = urlPath.replace(`{${\"projectIdentifier\"}}`, encodeURIComponent(String(requestParameters['projectIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async projectsGetAutomationProjectFileContentRaw(requestParameters: ProjectsGetAutomationProjectFileContentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ProjectFileContent>> {\n const requestOptions = await this.projectsGetAutomationProjectFileContentRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ProjectFileContentFromJSON(jsonValue));\n }\n\n /**\n */\n async projectsGetAutomationProjectFileContent(requestParameters: ProjectsGetAutomationProjectFileContentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ProjectFileContent> {\n const response = await this.projectsGetAutomationProjectFileContentRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for projectsGetAutomationProjectFileContentByRemoteMetadata without sending the request\n */\n async projectsGetAutomationProjectFileContentByRemoteMetadataRequestOpts(requestParameters: ProjectsGetAutomationProjectFileContentByRemoteMetadataRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['repositoryName'] == null) {\n throw new runtime.RequiredError(\n 'repositoryName',\n 'Required parameter \"repositoryName\" was null or undefined when calling projectsGetAutomationProjectFileContentByRemoteMetadata().'\n );\n }\n\n if (requestParameters['connectionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'connectionIdentifier',\n 'Required parameter \"connectionIdentifier\" was null or undefined when calling projectsGetAutomationProjectFileContentByRemoteMetadata().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['path'] != null) {\n queryParameters['path'] = requestParameters['path'];\n }\n\n if (requestParameters['reference'] != null) {\n queryParameters['reference'] = requestParameters['reference'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Projects/connection/{connectionIdentifier}/repo/{repositoryName}/content`;\n urlPath = urlPath.replace(`{${\"repositoryName\"}}`, encodeURIComponent(String(requestParameters['repositoryName'])));\n urlPath = urlPath.replace(`{${\"connectionIdentifier\"}}`, encodeURIComponent(String(requestParameters['connectionIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async projectsGetAutomationProjectFileContentByRemoteMetadataRaw(requestParameters: ProjectsGetAutomationProjectFileContentByRemoteMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ProjectFileContent>> {\n const requestOptions = await this.projectsGetAutomationProjectFileContentByRemoteMetadataRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ProjectFileContentFromJSON(jsonValue));\n }\n\n /**\n */\n async projectsGetAutomationProjectFileContentByRemoteMetadata(requestParameters: ProjectsGetAutomationProjectFileContentByRemoteMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ProjectFileContent> {\n const response = await this.projectsGetAutomationProjectFileContentByRemoteMetadataRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for projectsGetAutomationProjectFiles without sending the request\n */\n async projectsGetAutomationProjectFilesRequestOpts(requestParameters: ProjectsGetAutomationProjectFilesRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['projectIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'projectIdentifier',\n 'Required parameter \"projectIdentifier\" was null or undefined when calling projectsGetAutomationProjectFiles().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['path'] != null) {\n queryParameters['path'] = requestParameters['path'];\n }\n\n if (requestParameters['reference'] != null) {\n queryParameters['reference'] = requestParameters['reference'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Projects/{projectIdentifier}/files`;\n urlPath = urlPath.replace(`{${\"projectIdentifier\"}}`, encodeURIComponent(String(requestParameters['projectIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async projectsGetAutomationProjectFilesRaw(requestParameters: ProjectsGetAutomationProjectFilesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<ProjectItemDetailsDto>>> {\n const requestOptions = await this.projectsGetAutomationProjectFilesRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ProjectItemDetailsDtoFromJSON));\n }\n\n /**\n */\n async projectsGetAutomationProjectFiles(requestParameters: ProjectsGetAutomationProjectFilesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<ProjectItemDetailsDto>> {\n const response = await this.projectsGetAutomationProjectFilesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for projectsGetAutomationProjectFilesByRemoteMetadata without sending the request\n */\n async projectsGetAutomationProjectFilesByRemoteMetadataRequestOpts(requestParameters: ProjectsGetAutomationProjectFilesByRemoteMetadataRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['connectionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'connectionIdentifier',\n 'Required parameter \"connectionIdentifier\" was null or undefined when calling projectsGetAutomationProjectFilesByRemoteMetadata().'\n );\n }\n\n if (requestParameters['repositoryName'] == null) {\n throw new runtime.RequiredError(\n 'repositoryName',\n 'Required parameter \"repositoryName\" was null or undefined when calling projectsGetAutomationProjectFilesByRemoteMetadata().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['path'] != null) {\n queryParameters['path'] = requestParameters['path'];\n }\n\n if (requestParameters['reference'] != null) {\n queryParameters['reference'] = requestParameters['reference'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Projects/connection/{connectionIdentifier}/repo/{repositoryName}/files`;\n urlPath = urlPath.replace(`{${\"connectionIdentifier\"}}`, encodeURIComponent(String(requestParameters['connectionIdentifier'])));\n urlPath = urlPath.replace(`{${\"repositoryName\"}}`, encodeURIComponent(String(requestParameters['repositoryName'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async projectsGetAutomationProjectFilesByRemoteMetadataRaw(requestParameters: ProjectsGetAutomationProjectFilesByRemoteMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<ProjectItemDetailsDto>>> {\n const requestOptions = await this.projectsGetAutomationProjectFilesByRemoteMetadataRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ProjectItemDetailsDtoFromJSON));\n }\n\n /**\n */\n async projectsGetAutomationProjectFilesByRemoteMetadata(requestParameters: ProjectsGetAutomationProjectFilesByRemoteMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<ProjectItemDetailsDto>> {\n const response = await this.projectsGetAutomationProjectFilesByRemoteMetadataRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for projectsGetProject without sending the request\n */\n async projectsGetProjectRequestOpts(requestParameters: ProjectsGetProjectRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['projectIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'projectIdentifier',\n 'Required parameter \"projectIdentifier\" was null or undefined when calling projectsGetProject().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['reference'] != null) {\n queryParameters['reference'] = requestParameters['reference'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Projects/{projectIdentifier}`;\n urlPath = urlPath.replace(`{${\"projectIdentifier\"}}`, encodeURIComponent(String(requestParameters['projectIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async projectsGetProjectRaw(requestParameters: ProjectsGetProjectRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AutomationProjectDto>> {\n const requestOptions = await this.projectsGetProjectRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => AutomationProjectDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async projectsGetProject(requestParameters: ProjectsGetProjectRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AutomationProjectDto> {\n const response = await this.projectsGetProjectRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for projectsGetProjectByRemoteMetadata without sending the request\n */\n async projectsGetProjectByRemoteMetadataRequestOpts(requestParameters: ProjectsGetProjectByRemoteMetadataRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['connectionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'connectionIdentifier',\n 'Required parameter \"connectionIdentifier\" was null or undefined when calling projectsGetProjectByRemoteMetadata().'\n );\n }\n\n if (requestParameters['repositoryName'] == null) {\n throw new runtime.RequiredError(\n 'repositoryName',\n 'Required parameter \"repositoryName\" was null or undefined when calling projectsGetProjectByRemoteMetadata().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['path'] != null) {\n queryParameters['path'] = requestParameters['path'];\n }\n\n if (requestParameters['reference'] != null) {\n queryParameters['reference'] = requestParameters['reference'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Projects/connection/{connectionIdentifier}/repo/{repositoryName}`;\n urlPath = urlPath.replace(`{${\"connectionIdentifier\"}}`, encodeURIComponent(String(requestParameters['connectionIdentifier'])));\n urlPath = urlPath.replace(`{${\"repositoryName\"}}`, encodeURIComponent(String(requestParameters['repositoryName'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async projectsGetProjectByRemoteMetadataRaw(requestParameters: ProjectsGetProjectByRemoteMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AutomationProjectDto>> {\n const requestOptions = await this.projectsGetProjectByRemoteMetadataRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => AutomationProjectDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async projectsGetProjectByRemoteMetadata(requestParameters: ProjectsGetProjectByRemoteMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AutomationProjectDto> {\n const response = await this.projectsGetProjectByRemoteMetadataRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n",
|
|
90
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n BranchDto,\n ProjectItemDetailsDto,\n} from '../models/index';\nimport {\n BranchDtoFromJSON,\n BranchDtoToJSON,\n ProjectItemDetailsDtoFromJSON,\n ProjectItemDetailsDtoToJSON,\n} from '../models/index';\n\nexport interface RepositoriesGetRepositoryBranchesRequest {\n repositoryIdentifier: string;\n}\n\nexport interface RepositoriesGetRepositoryProjectFilesRequest {\n repositoryIdentifier: string;\n reference?: string;\n}\n\n/**\n * \n */\nexport class RepositoriesApi extends runtime.BaseAPI {\n\n /**\n * Creates request options for repositoriesGetRepositoryBranches without sending the request\n */\n async repositoriesGetRepositoryBranchesRequestOpts(requestParameters: RepositoriesGetRepositoryBranchesRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['repositoryIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'repositoryIdentifier',\n 'Required parameter \"repositoryIdentifier\" was null or undefined when calling repositoriesGetRepositoryBranches().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/repos/{repositoryIdentifier}/branches`;\n urlPath = urlPath.replace(`{${\"repositoryIdentifier\"}}`, encodeURIComponent(String(requestParameters['repositoryIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async repositoriesGetRepositoryBranchesRaw(requestParameters: RepositoriesGetRepositoryBranchesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<BranchDto>>> {\n const requestOptions = await this.repositoriesGetRepositoryBranchesRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(BranchDtoFromJSON));\n }\n\n /**\n */\n async repositoriesGetRepositoryBranches(requestParameters: RepositoriesGetRepositoryBranchesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<BranchDto>> {\n const response = await this.repositoriesGetRepositoryBranchesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for repositoriesGetRepositoryProjectFiles without sending the request\n */\n async repositoriesGetRepositoryProjectFilesRequestOpts(requestParameters: RepositoriesGetRepositoryProjectFilesRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['repositoryIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'repositoryIdentifier',\n 'Required parameter \"repositoryIdentifier\" was null or undefined when calling repositoriesGetRepositoryProjectFiles().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['reference'] != null) {\n queryParameters['reference'] = requestParameters['reference'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/repos/{repositoryIdentifier}/projectFiles`;\n urlPath = urlPath.replace(`{${\"repositoryIdentifier\"}}`, encodeURIComponent(String(requestParameters['repositoryIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async repositoriesGetRepositoryProjectFilesRaw(requestParameters: RepositoriesGetRepositoryProjectFilesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<ProjectItemDetailsDto>>> {\n const requestOptions = await this.repositoriesGetRepositoryProjectFilesRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ProjectItemDetailsDtoFromJSON));\n }\n\n /**\n */\n async repositoriesGetRepositoryProjectFiles(requestParameters: RepositoriesGetRepositoryProjectFilesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<ProjectItemDetailsDto>> {\n const response = await this.repositoriesGetRepositoryProjectFilesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n",
|
|
91
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Source Control API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n CommitDtoLoadMoreResult,\n SolutionDto,\n} from '../models/index';\nimport {\n CommitDtoLoadMoreResultFromJSON,\n CommitDtoLoadMoreResultToJSON,\n SolutionDtoFromJSON,\n SolutionDtoToJSON,\n} from '../models/index';\n\nexport interface SolutionsGetSolutionRequest {\n solutionIdentifier: string;\n}\n\nexport interface SolutionsGetSolutionCommitsRequest {\n solutionIdentifier: string;\n path?: string;\n branch?: string;\n pageIndex?: number;\n pageSize?: number;\n searchTerm?: string;\n}\n\n/**\n * \n */\nexport class SolutionsApi extends runtime.BaseAPI {\n\n /**\n * Creates request options for solutionsGetSolution without sending the request\n */\n async solutionsGetSolutionRequestOpts(requestParameters: SolutionsGetSolutionRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['solutionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'solutionIdentifier',\n 'Required parameter \"solutionIdentifier\" was null or undefined when calling solutionsGetSolution().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Solutions/{solutionIdentifier}`;\n urlPath = urlPath.replace(`{${\"solutionIdentifier\"}}`, encodeURIComponent(String(requestParameters['solutionIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async solutionsGetSolutionRaw(requestParameters: SolutionsGetSolutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SolutionDto>> {\n const requestOptions = await this.solutionsGetSolutionRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SolutionDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async solutionsGetSolution(requestParameters: SolutionsGetSolutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SolutionDto> {\n const response = await this.solutionsGetSolutionRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for solutionsGetSolutionCommits without sending the request\n */\n async solutionsGetSolutionCommitsRequestOpts(requestParameters: SolutionsGetSolutionCommitsRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['solutionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'solutionIdentifier',\n 'Required parameter \"solutionIdentifier\" was null or undefined when calling solutionsGetSolutionCommits().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['path'] != null) {\n queryParameters['path'] = requestParameters['path'];\n }\n\n if (requestParameters['branch'] != null) {\n queryParameters['branch'] = requestParameters['branch'];\n }\n\n if (requestParameters['pageIndex'] != null) {\n queryParameters['pageIndex'] = requestParameters['pageIndex'];\n }\n\n if (requestParameters['pageSize'] != null) {\n queryParameters['pageSize'] = requestParameters['pageSize'];\n }\n\n if (requestParameters['searchTerm'] != null) {\n queryParameters['searchTerm'] = requestParameters['searchTerm'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Solutions/{solutionIdentifier}/commits`;\n urlPath = urlPath.replace(`{${\"solutionIdentifier\"}}`, encodeURIComponent(String(requestParameters['solutionIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async solutionsGetSolutionCommitsRaw(requestParameters: SolutionsGetSolutionCommitsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CommitDtoLoadMoreResult>> {\n const requestOptions = await this.solutionsGetSolutionCommitsRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => CommitDtoLoadMoreResultFromJSON(jsonValue));\n }\n\n /**\n */\n async solutionsGetSolutionCommits(requestParameters: SolutionsGetSolutionCommitsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CommitDtoLoadMoreResult> {\n const response = await this.solutionsGetSolutionCommitsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n",
|
|
92
|
-
"import type { AuthProvider } from \"./types\";\n\nexport class AuthNotInitializedError extends Error {\n readonly __brand = \"AuthNotInitializedError\" as const;\n constructor(message: string) {\n super(message);\n this.name = \"AuthNotInitializedError\";\n }\n}\n\nexport class AuthProviderAlreadyInitializedError extends Error {\n readonly __brand = \"AuthProviderAlreadyInitializedError\" as const;\n constructor(message: string) {\n super(message);\n this.name = \"AuthProviderAlreadyInitializedError\";\n }\n}\n\nexport const AUTH_PROVIDER_KEY: unique symbol = Symbol.for(\n \"@uipath/auth/provider@v1\",\n);\n\ntype GlobalSlot = { [AUTH_PROVIDER_KEY]?: AuthProvider };\n\nexport function initAuthProvider(p: AuthProvider): void {\n const g = globalThis as unknown as GlobalSlot;\n if (g[AUTH_PROVIDER_KEY] !== undefined) {\n throw new AuthProviderAlreadyInitializedError(\n \"@uipath/auth: provider already initialized. initAuthProvider() is callable once per process.\",\n );\n }\n g[AUTH_PROVIDER_KEY] = Object.freeze({ ...p });\n}\n\nexport function provider(): AuthProvider {\n const p = (globalThis as unknown as GlobalSlot)[AUTH_PROVIDER_KEY];\n if (!p) {\n throw new AuthNotInitializedError(\n \"@uipath/auth: provider not initialized. The CLI host must call initAuthProvider() before any auth API is invoked.\",\n );\n }\n return p;\n}\n\n// Re-export so existing consumers that import AuthProvider from \"./provider\"\n// continue to compile without changes.\nexport type { AuthProvider } from \"./types\";\n",
|
|
93
|
-
"// Thin facade over the registered AuthProvider. The CLI host owns the\n// real computation (packages/cli/src/services/auth/login-status.ts);\n// auth keeps only the public API surface and the cross-bundle provider\n// slot defined in ./provider.\n\nimport { provider } from \"./provider\";\nimport type { GetLoginStatusOptions, LoginStatus } from \"./types\";\n\nexport type {\n GetLoginStatusOptions,\n LoginStatus,\n LoginStatusValue,\n TokenRefreshTelemetry,\n} from \"./types\";\nexport { LoginStatusSource } from \"./types\";\n\nexport const getLoginStatusAsync = (\n options: GetLoginStatusOptions = {},\n): Promise<LoginStatus> => provider().getLoginStatus(options);\n",
|
|
94
|
-
"import { getLoginStatusAsync } from \"./getLoginStatusAsync\";\nimport type {\n AuthContext,\n GetAuthContextOptions,\n GetLoginStatusOptions,\n LoginStatus,\n} from \"./types\";\n\nexport const getAuthContext = async (\n options: GetAuthContextOptions = {},\n): Promise<AuthContext> => {\n const status = await getLoginStatusAsync({\n ensureTokenValidityMinutes: options.ensureTokenValidityMinutes,\n envFilePath: options.envFilePath,\n });\n\n if (\n status.loginStatus !== \"Logged in\" ||\n !status.baseUrl ||\n !status.accessToken\n ) {\n throw new Error(\n status.hint\n ? `Not logged in. ${status.hint}`\n : \"Not logged in. Run 'uip login' first.\",\n );\n }\n\n const tenantName = options.tenant ?? status.tenantName;\n\n if (options.requireOrganizationId && !status.organizationId) {\n throw new Error(\n \"Organization ID not available. Ensure you are logged in with an organization context.\",\n );\n }\n if (options.requireOrganizationName && !status.organizationName) {\n throw new Error(\n \"Organization name not available. Ensure you are logged in with an organization context.\",\n );\n }\n if (options.requireTenantId && !status.tenantId) {\n throw new Error(\n \"Tenant ID not available. Ensure UIPATH_TENANT_ID is set.\",\n );\n }\n // `=== undefined` (not `!tenantName`) to stay consistent with the `??`\n // fallback above: if a caller explicitly passes `tenant: \"\"` we treat it\n // as provided, matching CLAUDE.md's rule on optional CLI flags.\n if (options.requireTenantName && tenantName === undefined) {\n throw new Error(\n \"Tenant not provided and UIPATH_TENANT_NAME not set. Run 'uip login' to select a tenant, or use 'uip login tenant set <tenant>' to switch tenants.\",\n );\n }\n\n return {\n baseUrl: status.baseUrl,\n accessToken: status.accessToken,\n organizationId: status.organizationId,\n organizationName: status.organizationName,\n tenantId: status.tenantId,\n tenantName,\n };\n};\n\n// Re-export canonical types so existing consumers that import from\n// \"./authContext\" (or via the barrel) continue to compile without changes.\nexport type { AuthContext, GetAuthContextOptions } from \"./types\";\n\nexport interface AuthEnvResult {\n /** UiPath credential env vars to merge into a subprocess env. Empty when not logged in. */\n authEnv: Record<string, string>;\n /** The login status used to build {@link authEnv}, or undefined when it could not be read. */\n loginStatus?: LoginStatus;\n}\n\n/**\n * Build UiPath credential env vars from the live `uip login` status, for\n * injecting into a spawned process. The token is refreshed so the child gets\n * a valid bearer token, not a stale one off disk. Never throws: returns an\n * empty `authEnv` when there is no usable login.\n */\nexport const getAuthEnv = async (\n options: GetLoginStatusOptions = {},\n): Promise<AuthEnvResult> => {\n const authEnv: Record<string, string> = {};\n\n let status: LoginStatus;\n try {\n status = await getLoginStatusAsync(options);\n } catch {\n return { authEnv };\n }\n\n if (status.loginStatus === \"Logged in\" && status.accessToken) {\n authEnv.UIPATH_ACCESS_TOKEN = status.accessToken;\n if (status.baseUrl) {\n const org = status.organizationName || status.organizationId;\n const tenant = status.tenantName || status.tenantId;\n if (org && tenant) {\n authEnv.UIPATH_URL = `${status.baseUrl.replace(/\\/+$/, \"\")}/${org}/${tenant}`;\n }\n }\n if (status.organizationId)\n authEnv.UIPATH_ORGANIZATION_ID = status.organizationId;\n if (status.organizationName)\n authEnv.UIPATH_ORGANIZATION_NAME = status.organizationName;\n if (status.tenantId) authEnv.UIPATH_TENANT_ID = status.tenantId;\n if (status.tenantName) authEnv.UIPATH_TENANT_NAME = status.tenantName;\n }\n\n return { authEnv, loginStatus: status };\n};\n",
|
|
95
|
-
"import { getAuthContext } from \"@uipath/auth\";\nimport { addSdkUserAgentHeader } from \"@uipath/common/sdk-user-agent\";\nimport { Configuration } from \"../generated/src/runtime.js\";\nimport { SDK_USER_AGENT } from \"./user-agent.js\";\n\nexport interface CreateApiClientOptions {\n loginValidity?: number;\n s2sToken?: string;\n}\n\nexport async function createSourceControlConfig(\n options?: CreateApiClientOptions,\n): Promise<Configuration> {\n const ctx = await getAuthContext({\n ensureTokenValidityMinutes: options?.loginValidity,\n requireOrganizationId: true,\n });\n\n const basePath = `${ctx.baseUrl}/${ctx.organizationId}/roboticsops_/sourcecontrol_`;\n const bearerToken = options?.s2sToken ?? ctx.accessToken;\n\n return new Configuration({\n basePath,\n headers: addSdkUserAgentHeader(\n {\n Authorization: `Bearer ${bearerToken}`,\n },\n SDK_USER_AGENT,\n ),\n });\n}\n\nexport async function createApiClient<T>(\n ApiClass: new (config: Configuration) => T,\n options?: CreateApiClientOptions,\n): Promise<T> {\n const config = await createSourceControlConfig(options);\n return new ApiClass(config);\n}\n",
|
|
96
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"http://localhost\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n\n // restore prototype chain\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(this, actualProto);\n }\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n\n // restore prototype chain\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(this, actualProto);\n }\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n\n // restore prototype chain\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(this, actualProto);\n }\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n const result: { [key: string]: any } = {};\n for (const key of Object.keys(data)) {\n result[key] = fn(data[key]);\n }\n return result;\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n",
|
|
97
|
-
"import {\n getSdkUserAgentToken,\n installSdkUserAgentHeader,\n} from \"@uipath/common/sdk-user-agent\";\nimport { BaseAPI } from \"../generated/src/runtime.js\";\nimport pkg from \"../package.json\" with { type: \"json\" };\n\nexport const SDK_USER_AGENT = getSdkUserAgentToken(pkg);\n\ninstallSdkUserAgentHeader(BaseAPI, SDK_USER_AGENT);\n",
|
|
98
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AccessTokenDto\n */\nexport interface AccessTokenDto {\n /**\n * \n * @type {string}\n * @memberof AccessTokenDto\n */\n token?: string | null;\n}\n\n/**\n * Check if a given object implements the AccessTokenDto interface.\n */\nexport function instanceOfAccessTokenDto(value: object): value is AccessTokenDto {\n return true;\n}\n\nexport function AccessTokenDtoFromJSON(json: any): AccessTokenDto {\n return AccessTokenDtoFromJSONTyped(json, false);\n}\n\nexport function AccessTokenDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): AccessTokenDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'token': json['token'] == null ? undefined : json['token'],\n };\n}\n\nexport function AccessTokenDtoToJSON(json: any): AccessTokenDto {\n return AccessTokenDtoToJSONTyped(json, false);\n}\n\nexport function AccessTokenDtoToJSONTyped(value?: AccessTokenDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'token': value['token'],\n };\n}\n\n",
|
|
99
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PipelineRunMode = {\n AtSpecificTime: 'AtSpecificTime',\n ForEachCommit: 'ForEachCommit',\n Manually: 'Manually'\n} as const;\nexport type PipelineRunMode = typeof PipelineRunMode[keyof typeof PipelineRunMode];\n\n\nexport function instanceOfPipelineRunMode(value: any): boolean {\n for (const key in PipelineRunMode) {\n if (Object.prototype.hasOwnProperty.call(PipelineRunMode, key)) {\n if (PipelineRunMode[key as keyof typeof PipelineRunMode] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function PipelineRunModeFromJSON(json: any): PipelineRunMode {\n return PipelineRunModeFromJSONTyped(json, false);\n}\n\nexport function PipelineRunModeFromJSONTyped(json: any, ignoreDiscriminator: boolean): PipelineRunMode {\n return json as PipelineRunMode;\n}\n\nexport function PipelineRunModeToJSON(value?: PipelineRunMode | null): any {\n return value as any;\n}\n\nexport function PipelineRunModeToJSONTyped(value: any, ignoreDiscriminator: boolean): PipelineRunMode {\n return value as PipelineRunMode;\n}\n\n",
|
|
100
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { PipelineRunMode } from './PipelineRunMode';\nimport {\n PipelineRunModeFromJSON,\n PipelineRunModeFromJSONTyped,\n PipelineRunModeToJSON,\n PipelineRunModeToJSONTyped,\n} from './PipelineRunMode';\n\n/**\n * \n * @export\n * @interface EditPipelineDto\n */\nexport interface EditPipelineDto {\n /**\n * \n * @type {string}\n * @memberof EditPipelineDto\n */\n identifier?: string;\n /**\n * \n * @type {string}\n * @memberof EditPipelineDto\n */\n name?: string | null;\n /**\n * \n * @type {PipelineRunMode}\n * @memberof EditPipelineDto\n */\n runMode?: PipelineRunMode;\n /**\n * \n * @type {string}\n * @memberof EditPipelineDto\n */\n description?: string | null;\n /**\n * \n * @type {any}\n * @memberof EditPipelineDto\n */\n arguments?: any | null;\n}\n\n\n\n/**\n * Check if a given object implements the EditPipelineDto interface.\n */\nexport function instanceOfEditPipelineDto(value: object): value is EditPipelineDto {\n return true;\n}\n\nexport function EditPipelineDtoFromJSON(json: any): EditPipelineDto {\n return EditPipelineDtoFromJSONTyped(json, false);\n}\n\nexport function EditPipelineDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): EditPipelineDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'identifier': json['identifier'] == null ? undefined : json['identifier'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'runMode': json['runMode'] == null ? undefined : PipelineRunModeFromJSON(json['runMode']),\n 'description': json['description'] == null ? undefined : json['description'],\n 'arguments': json['arguments'] == null ? undefined : json['arguments'],\n };\n}\n\nexport function EditPipelineDtoToJSON(json: any): EditPipelineDto {\n return EditPipelineDtoToJSONTyped(json, false);\n}\n\nexport function EditPipelineDtoToJSONTyped(value?: EditPipelineDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'identifier': value['identifier'],\n 'name': value['name'],\n 'runMode': PipelineRunModeToJSON(value['runMode']),\n 'description': value['description'],\n 'arguments': value['arguments'],\n };\n}\n\n",
|
|
101
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const JobState = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n NUMBER_4: 4,\n NUMBER_5: 5,\n NUMBER_6: 6,\n NUMBER_7: 7,\n NUMBER_8: 8\n} as const;\nexport type JobState = typeof JobState[keyof typeof JobState];\n\n\nexport function instanceOfJobState(value: any): boolean {\n for (const key in JobState) {\n if (Object.prototype.hasOwnProperty.call(JobState, key)) {\n if (JobState[key as keyof typeof JobState] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function JobStateFromJSON(json: any): JobState {\n return JobStateFromJSONTyped(json, false);\n}\n\nexport function JobStateFromJSONTyped(json: any, ignoreDiscriminator: boolean): JobState {\n return json as JobState;\n}\n\nexport function JobStateToJSON(value?: JobState | null): any {\n return value as any;\n}\n\nexport function JobStateToJSONTyped(value: any, ignoreDiscriminator: boolean): JobState {\n return value as JobState;\n}\n\n",
|
|
102
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface Robot\n */\nexport interface Robot {\n /**\n * \n * @type {string}\n * @memberof Robot\n */\n name?: string | null;\n}\n\n/**\n * Check if a given object implements the Robot interface.\n */\nexport function instanceOfRobot(value: object): value is Robot {\n return true;\n}\n\nexport function RobotFromJSON(json: any): Robot {\n return RobotFromJSONTyped(json, false);\n}\n\nexport function RobotFromJSONTyped(json: any, ignoreDiscriminator: boolean): Robot {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'] == null ? undefined : json['name'],\n };\n}\n\nexport function RobotToJSON(json: any): Robot {\n return RobotToJSONTyped(json, false);\n}\n\nexport function RobotToJSONTyped(value?: Robot | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n };\n}\n\n",
|
|
103
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface Machine\n */\nexport interface Machine {\n /**\n * \n * @type {string}\n * @memberof Machine\n */\n name?: string | null;\n}\n\n/**\n * Check if a given object implements the Machine interface.\n */\nexport function instanceOfMachine(value: object): value is Machine {\n return true;\n}\n\nexport function MachineFromJSON(json: any): Machine {\n return MachineFromJSONTyped(json, false);\n}\n\nexport function MachineFromJSONTyped(json: any, ignoreDiscriminator: boolean): Machine {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'] == null ? undefined : json['name'],\n };\n}\n\nexport function MachineToJSON(json: any): Machine {\n return MachineToJSONTyped(json, false);\n}\n\nexport function MachineToJSONTyped(value?: Machine | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n };\n}\n\n",
|
|
104
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface Release\n */\nexport interface Release {\n /**\n * \n * @type {string}\n * @memberof Release\n */\n key?: string | null;\n /**\n * \n * @type {string}\n * @memberof Release\n */\n name?: string | null;\n /**\n * \n * @type {string}\n * @memberof Release\n */\n processKey?: string | null;\n /**\n * \n * @type {string}\n * @memberof Release\n */\n processVersion?: string | null;\n}\n\n/**\n * Check if a given object implements the Release interface.\n */\nexport function instanceOfRelease(value: object): value is Release {\n return true;\n}\n\nexport function ReleaseFromJSON(json: any): Release {\n return ReleaseFromJSONTyped(json, false);\n}\n\nexport function ReleaseFromJSONTyped(json: any, ignoreDiscriminator: boolean): Release {\n if (json == null) {\n return json;\n }\n return {\n \n 'key': json['key'] == null ? undefined : json['key'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'processKey': json['processKey'] == null ? undefined : json['processKey'],\n 'processVersion': json['processVersion'] == null ? undefined : json['processVersion'],\n };\n}\n\nexport function ReleaseToJSON(json: any): Release {\n return ReleaseToJSONTyped(json, false);\n}\n\nexport function ReleaseToJSONTyped(value?: Release | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'key': value['key'],\n 'name': value['name'],\n 'processKey': value['processKey'],\n 'processVersion': value['processVersion'],\n };\n}\n\n",
|
|
105
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { JobState } from './JobState';\nimport {\n JobStateFromJSON,\n JobStateFromJSONTyped,\n JobStateToJSON,\n JobStateToJSONTyped,\n} from './JobState';\nimport type { Robot } from './Robot';\nimport {\n RobotFromJSON,\n RobotFromJSONTyped,\n RobotToJSON,\n RobotToJSONTyped,\n} from './Robot';\nimport type { Machine } from './Machine';\nimport {\n MachineFromJSON,\n MachineFromJSONTyped,\n MachineToJSON,\n MachineToJSONTyped,\n} from './Machine';\nimport type { Release } from './Release';\nimport {\n ReleaseFromJSON,\n ReleaseFromJSONTyped,\n ReleaseToJSON,\n ReleaseToJSONTyped,\n} from './Release';\n\n/**\n * \n * @export\n * @interface JobDetailsDto\n */\nexport interface JobDetailsDto {\n /**\n * \n * @type {string}\n * @memberof JobDetailsDto\n */\n key?: string;\n /**\n * \n * @type {string}\n * @memberof JobDetailsDto\n */\n releaseName?: string | null;\n /**\n * \n * @type {JobState}\n * @memberof JobDetailsDto\n */\n state?: JobState;\n /**\n * \n * @type {Date}\n * @memberof JobDetailsDto\n */\n startTime?: Date | null;\n /**\n * \n * @type {Date}\n * @memberof JobDetailsDto\n */\n endTime?: Date | null;\n /**\n * \n * @type {string}\n * @memberof JobDetailsDto\n */\n orchestratorUserIdentity?: string | null;\n /**\n * \n * @type {string}\n * @memberof JobDetailsDto\n */\n hostMachineName?: string | null;\n /**\n * \n * @type {string}\n * @memberof JobDetailsDto\n */\n info?: string | null;\n /**\n * \n * @type {Release}\n * @memberof JobDetailsDto\n */\n release?: Release | null;\n /**\n * \n * @type {Robot}\n * @memberof JobDetailsDto\n */\n robot?: Robot | null;\n /**\n * \n * @type {Machine}\n * @memberof JobDetailsDto\n */\n machine?: Machine | null;\n /**\n * \n * @type {string}\n * @memberof JobDetailsDto\n */\n inputArguments?: string | null;\n}\n\n\n\n/**\n * Check if a given object implements the JobDetailsDto interface.\n */\nexport function instanceOfJobDetailsDto(value: object): value is JobDetailsDto {\n return true;\n}\n\nexport function JobDetailsDtoFromJSON(json: any): JobDetailsDto {\n return JobDetailsDtoFromJSONTyped(json, false);\n}\n\nexport function JobDetailsDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): JobDetailsDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'key': json['key'] == null ? undefined : json['key'],\n 'releaseName': json['releaseName'] == null ? undefined : json['releaseName'],\n 'state': json['state'] == null ? undefined : JobStateFromJSON(json['state']),\n 'startTime': json['startTime'] == null ? undefined : (new Date(json['startTime'])),\n 'endTime': json['endTime'] == null ? undefined : (new Date(json['endTime'])),\n 'orchestratorUserIdentity': json['orchestratorUserIdentity'] == null ? undefined : json['orchestratorUserIdentity'],\n 'hostMachineName': json['hostMachineName'] == null ? undefined : json['hostMachineName'],\n 'info': json['info'] == null ? undefined : json['info'],\n 'release': json['release'] == null ? undefined : ReleaseFromJSON(json['release']),\n 'robot': json['robot'] == null ? undefined : RobotFromJSON(json['robot']),\n 'machine': json['machine'] == null ? undefined : MachineFromJSON(json['machine']),\n 'inputArguments': json['inputArguments'] == null ? undefined : json['inputArguments'],\n };\n}\n\nexport function JobDetailsDtoToJSON(json: any): JobDetailsDto {\n return JobDetailsDtoToJSONTyped(json, false);\n}\n\nexport function JobDetailsDtoToJSONTyped(value?: JobDetailsDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'key': value['key'],\n 'releaseName': value['releaseName'],\n 'state': JobStateToJSON(value['state']),\n 'startTime': value['startTime'] == null ? value['startTime'] : value['startTime'].toISOString(),\n 'endTime': value['endTime'] == null ? value['endTime'] : value['endTime'].toISOString(),\n 'orchestratorUserIdentity': value['orchestratorUserIdentity'],\n 'hostMachineName': value['hostMachineName'],\n 'info': value['info'],\n 'release': ReleaseToJSON(value['release']),\n 'robot': RobotToJSON(value['robot']),\n 'machine': MachineToJSON(value['machine']),\n 'inputArguments': value['inputArguments'],\n };\n}\n\n",
|
|
106
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PipelineExecutionState = {\n Pending: 'Pending',\n Running: 'Running',\n Stopping: 'Stopping',\n Terminating: 'Terminating',\n Faulted: 'Faulted',\n Successful: 'Successful',\n Stopped: 'Stopped',\n Suspended: 'Suspended',\n Resumed: 'Resumed'\n} as const;\nexport type PipelineExecutionState = typeof PipelineExecutionState[keyof typeof PipelineExecutionState];\n\n\nexport function instanceOfPipelineExecutionState(value: any): boolean {\n for (const key in PipelineExecutionState) {\n if (Object.prototype.hasOwnProperty.call(PipelineExecutionState, key)) {\n if (PipelineExecutionState[key as keyof typeof PipelineExecutionState] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function PipelineExecutionStateFromJSON(json: any): PipelineExecutionState {\n return PipelineExecutionStateFromJSONTyped(json, false);\n}\n\nexport function PipelineExecutionStateFromJSONTyped(json: any, ignoreDiscriminator: boolean): PipelineExecutionState {\n return json as PipelineExecutionState;\n}\n\nexport function PipelineExecutionStateToJSON(value?: PipelineExecutionState | null): any {\n return value as any;\n}\n\nexport function PipelineExecutionStateToJSONTyped(value: any, ignoreDiscriminator: boolean): PipelineExecutionState {\n return value as PipelineExecutionState;\n}\n\n",
|
|
107
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { PipelineExecutionState } from './PipelineExecutionState';\nimport {\n PipelineExecutionStateFromJSON,\n PipelineExecutionStateFromJSONTyped,\n PipelineExecutionStateToJSON,\n PipelineExecutionStateToJSONTyped,\n} from './PipelineExecutionState';\nimport type { PipelineRunMode } from './PipelineRunMode';\nimport {\n PipelineRunModeFromJSON,\n PipelineRunModeFromJSONTyped,\n PipelineRunModeToJSON,\n PipelineRunModeToJSONTyped,\n} from './PipelineRunMode';\n\n/**\n * \n * @export\n * @interface PipelineExecutionDto\n */\nexport interface PipelineExecutionDto {\n /**\n * \n * @type {string}\n * @memberof PipelineExecutionDto\n */\n identifier?: string;\n /**\n * \n * @type {string}\n * @memberof PipelineExecutionDto\n */\n jobExecutionIdentifier?: string;\n /**\n * \n * @type {PipelineRunMode}\n * @memberof PipelineExecutionDto\n */\n runMode?: PipelineRunMode;\n /**\n * \n * @type {string}\n * @memberof PipelineExecutionDto\n */\n commitReference?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineExecutionDto\n */\n commitMessage?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineExecutionDto\n */\n userIdentifier?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineExecutionDto\n */\n userFirstName?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineExecutionDto\n */\n userLastName?: string | null;\n /**\n * \n * @type {Date}\n * @memberof PipelineExecutionDto\n */\n enqueueDate?: Date;\n /**\n * \n * @type {Date}\n * @memberof PipelineExecutionDto\n */\n endDate?: Date | null;\n /**\n * \n * @type {PipelineExecutionState}\n * @memberof PipelineExecutionDto\n */\n state?: PipelineExecutionState;\n /**\n * \n * @type {number}\n * @memberof PipelineExecutionDto\n */\n failureCode?: number | null;\n /**\n * \n * @type {number}\n * @memberof PipelineExecutionDto\n */\n buildNumber?: number;\n}\n\n\n\n/**\n * Check if a given object implements the PipelineExecutionDto interface.\n */\nexport function instanceOfPipelineExecutionDto(value: object): value is PipelineExecutionDto {\n return true;\n}\n\nexport function PipelineExecutionDtoFromJSON(json: any): PipelineExecutionDto {\n return PipelineExecutionDtoFromJSONTyped(json, false);\n}\n\nexport function PipelineExecutionDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PipelineExecutionDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'identifier': json['identifier'] == null ? undefined : json['identifier'],\n 'jobExecutionIdentifier': json['jobExecutionIdentifier'] == null ? undefined : json['jobExecutionIdentifier'],\n 'runMode': json['runMode'] == null ? undefined : PipelineRunModeFromJSON(json['runMode']),\n 'commitReference': json['commitReference'] == null ? undefined : json['commitReference'],\n 'commitMessage': json['commitMessage'] == null ? undefined : json['commitMessage'],\n 'userIdentifier': json['userIdentifier'] == null ? undefined : json['userIdentifier'],\n 'userFirstName': json['userFirstName'] == null ? undefined : json['userFirstName'],\n 'userLastName': json['userLastName'] == null ? undefined : json['userLastName'],\n 'enqueueDate': json['enqueueDate'] == null ? undefined : (new Date(json['enqueueDate'])),\n 'endDate': json['endDate'] == null ? undefined : (new Date(json['endDate'])),\n 'state': json['state'] == null ? undefined : PipelineExecutionStateFromJSON(json['state']),\n 'failureCode': json['failureCode'] == null ? undefined : json['failureCode'],\n 'buildNumber': json['buildNumber'] == null ? undefined : json['buildNumber'],\n };\n}\n\nexport function PipelineExecutionDtoToJSON(json: any): PipelineExecutionDto {\n return PipelineExecutionDtoToJSONTyped(json, false);\n}\n\nexport function PipelineExecutionDtoToJSONTyped(value?: PipelineExecutionDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'identifier': value['identifier'],\n 'jobExecutionIdentifier': value['jobExecutionIdentifier'],\n 'runMode': PipelineRunModeToJSON(value['runMode']),\n 'commitReference': value['commitReference'],\n 'commitMessage': value['commitMessage'],\n 'userIdentifier': value['userIdentifier'],\n 'userFirstName': value['userFirstName'],\n 'userLastName': value['userLastName'],\n 'enqueueDate': value['enqueueDate'] == null ? value['enqueueDate'] : value['enqueueDate'].toISOString(),\n 'endDate': value['endDate'] == null ? value['endDate'] : value['endDate'].toISOString(),\n 'state': PipelineExecutionStateToJSON(value['state']),\n 'failureCode': value['failureCode'],\n 'buildNumber': value['buildNumber'],\n };\n}\n\n",
|
|
108
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { PipelineExecutionDto } from './PipelineExecutionDto';\nimport {\n PipelineExecutionDtoFromJSON,\n PipelineExecutionDtoFromJSONTyped,\n PipelineExecutionDtoToJSON,\n PipelineExecutionDtoToJSONTyped,\n} from './PipelineExecutionDto';\nimport type { PipelineRunMode } from './PipelineRunMode';\nimport {\n PipelineRunModeFromJSON,\n PipelineRunModeFromJSONTyped,\n PipelineRunModeToJSON,\n PipelineRunModeToJSONTyped,\n} from './PipelineRunMode';\n\n/**\n * \n * @export\n * @interface PipelineDto\n */\nexport interface PipelineDto {\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n identifier?: string;\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n name?: string | null;\n /**\n * \n * @type {PipelineRunMode}\n * @memberof PipelineDto\n */\n runMode?: PipelineRunMode;\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n description?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n connectionIdentifier?: string;\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n repositoryId?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n repositoryUrl?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n repositoryName?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n repositoryType?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n branch: string;\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n projectName?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n projectPath?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineDto\n */\n processIdentifier?: string | null;\n /**\n * \n * @type {any}\n * @memberof PipelineDto\n */\n arguments?: any | null;\n /**\n * \n * @type {PipelineExecutionDto}\n * @memberof PipelineDto\n */\n latestPipelineExecution?: PipelineExecutionDto | null;\n}\n\n\n\n/**\n * Check if a given object implements the PipelineDto interface.\n */\nexport function instanceOfPipelineDto(value: object): value is PipelineDto {\n if (!('branch' in value) || value['branch'] === undefined) return false;\n return true;\n}\n\nexport function PipelineDtoFromJSON(json: any): PipelineDto {\n return PipelineDtoFromJSONTyped(json, false);\n}\n\nexport function PipelineDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PipelineDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'identifier': json['identifier'] == null ? undefined : json['identifier'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'runMode': json['runMode'] == null ? undefined : PipelineRunModeFromJSON(json['runMode']),\n 'description': json['description'] == null ? undefined : json['description'],\n 'connectionIdentifier': json['connectionIdentifier'] == null ? undefined : json['connectionIdentifier'],\n 'repositoryId': json['repositoryId'] == null ? undefined : json['repositoryId'],\n 'repositoryUrl': json['repositoryUrl'] == null ? undefined : json['repositoryUrl'],\n 'repositoryName': json['repositoryName'] == null ? undefined : json['repositoryName'],\n 'repositoryType': json['repositoryType'] == null ? undefined : json['repositoryType'],\n 'branch': json['branch'],\n 'projectName': json['projectName'] == null ? undefined : json['projectName'],\n 'projectPath': json['projectPath'] == null ? undefined : json['projectPath'],\n 'processIdentifier': json['processIdentifier'] == null ? undefined : json['processIdentifier'],\n 'arguments': json['arguments'] == null ? undefined : json['arguments'],\n 'latestPipelineExecution': json['latestPipelineExecution'] == null ? undefined : PipelineExecutionDtoFromJSON(json['latestPipelineExecution']),\n };\n}\n\nexport function PipelineDtoToJSON(json: any): PipelineDto {\n return PipelineDtoToJSONTyped(json, false);\n}\n\nexport function PipelineDtoToJSONTyped(value?: PipelineDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'identifier': value['identifier'],\n 'name': value['name'],\n 'runMode': PipelineRunModeToJSON(value['runMode']),\n 'description': value['description'],\n 'connectionIdentifier': value['connectionIdentifier'],\n 'repositoryId': value['repositoryId'],\n 'repositoryUrl': value['repositoryUrl'],\n 'repositoryName': value['repositoryName'],\n 'repositoryType': value['repositoryType'],\n 'branch': value['branch'],\n 'projectName': value['projectName'],\n 'projectPath': value['projectPath'],\n 'processIdentifier': value['processIdentifier'],\n 'arguments': value['arguments'],\n 'latestPipelineExecution': PipelineExecutionDtoToJSON(value['latestPipelineExecution']),\n };\n}\n\n",
|
|
109
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { PipelineDto } from './PipelineDto';\nimport {\n PipelineDtoFromJSON,\n PipelineDtoFromJSONTyped,\n PipelineDtoToJSON,\n PipelineDtoToJSONTyped,\n} from './PipelineDto';\n\n/**\n * \n * @export\n * @interface PipelineDtoLoadMoreResult\n */\nexport interface PipelineDtoLoadMoreResult {\n /**\n * \n * @type {boolean}\n * @memberof PipelineDtoLoadMoreResult\n */\n isLastBatch?: boolean;\n /**\n * \n * @type {Array<PipelineDto>}\n * @memberof PipelineDtoLoadMoreResult\n */\n result?: Array<PipelineDto> | null;\n /**\n * \n * @type {number}\n * @memberof PipelineDtoLoadMoreResult\n */\n totalCount?: number;\n /**\n * \n * @type {number}\n * @memberof PipelineDtoLoadMoreResult\n */\n pageIndex?: number;\n}\n\n/**\n * Check if a given object implements the PipelineDtoLoadMoreResult interface.\n */\nexport function instanceOfPipelineDtoLoadMoreResult(value: object): value is PipelineDtoLoadMoreResult {\n return true;\n}\n\nexport function PipelineDtoLoadMoreResultFromJSON(json: any): PipelineDtoLoadMoreResult {\n return PipelineDtoLoadMoreResultFromJSONTyped(json, false);\n}\n\nexport function PipelineDtoLoadMoreResultFromJSONTyped(json: any, ignoreDiscriminator: boolean): PipelineDtoLoadMoreResult {\n if (json == null) {\n return json;\n }\n return {\n \n 'isLastBatch': json['isLastBatch'] == null ? undefined : json['isLastBatch'],\n 'result': json['result'] == null ? undefined : ((json['result'] as Array<any>).map(PipelineDtoFromJSON)),\n 'totalCount': json['totalCount'] == null ? undefined : json['totalCount'],\n 'pageIndex': json['pageIndex'] == null ? undefined : json['pageIndex'],\n };\n}\n\nexport function PipelineDtoLoadMoreResultToJSON(json: any): PipelineDtoLoadMoreResult {\n return PipelineDtoLoadMoreResultToJSONTyped(json, false);\n}\n\nexport function PipelineDtoLoadMoreResultToJSONTyped(value?: PipelineDtoLoadMoreResult | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'isLastBatch': value['isLastBatch'],\n 'result': value['result'] == null ? undefined : ((value['result'] as Array<any>).map(PipelineDtoToJSON)),\n 'totalCount': value['totalCount'],\n 'pageIndex': value['pageIndex'],\n };\n}\n\n",
|
|
110
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { PipelineDto } from './PipelineDto';\nimport {\n PipelineDtoFromJSON,\n PipelineDtoFromJSONTyped,\n PipelineDtoToJSON,\n PipelineDtoToJSONTyped,\n} from './PipelineDto';\n\n/**\n * \n * @export\n * @interface PipelineDtoPagedResult\n */\nexport interface PipelineDtoPagedResult {\n /**\n * \n * @type {number}\n * @memberof PipelineDtoPagedResult\n */\n totalCount?: number;\n /**\n * \n * @type {Array<PipelineDto>}\n * @memberof PipelineDtoPagedResult\n */\n result?: Array<PipelineDto> | null;\n}\n\n/**\n * Check if a given object implements the PipelineDtoPagedResult interface.\n */\nexport function instanceOfPipelineDtoPagedResult(value: object): value is PipelineDtoPagedResult {\n return true;\n}\n\nexport function PipelineDtoPagedResultFromJSON(json: any): PipelineDtoPagedResult {\n return PipelineDtoPagedResultFromJSONTyped(json, false);\n}\n\nexport function PipelineDtoPagedResultFromJSONTyped(json: any, ignoreDiscriminator: boolean): PipelineDtoPagedResult {\n if (json == null) {\n return json;\n }\n return {\n \n 'totalCount': json['totalCount'] == null ? undefined : json['totalCount'],\n 'result': json['result'] == null ? undefined : ((json['result'] as Array<any>).map(PipelineDtoFromJSON)),\n };\n}\n\nexport function PipelineDtoPagedResultToJSON(json: any): PipelineDtoPagedResult {\n return PipelineDtoPagedResultToJSONTyped(json, false);\n}\n\nexport function PipelineDtoPagedResultToJSONTyped(value?: PipelineDtoPagedResult | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'totalCount': value['totalCount'],\n 'result': value['result'] == null ? undefined : ((value['result'] as Array<any>).map(PipelineDtoToJSON)),\n };\n}\n\n",
|
|
111
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { PipelineExecutionDto } from './PipelineExecutionDto';\nimport {\n PipelineExecutionDtoFromJSON,\n PipelineExecutionDtoFromJSONTyped,\n PipelineExecutionDtoToJSON,\n PipelineExecutionDtoToJSONTyped,\n} from './PipelineExecutionDto';\n\n/**\n * \n * @export\n * @interface PipelineExecutionDtoLoadMoreResult\n */\nexport interface PipelineExecutionDtoLoadMoreResult {\n /**\n * \n * @type {boolean}\n * @memberof PipelineExecutionDtoLoadMoreResult\n */\n isLastBatch?: boolean;\n /**\n * \n * @type {Array<PipelineExecutionDto>}\n * @memberof PipelineExecutionDtoLoadMoreResult\n */\n result?: Array<PipelineExecutionDto> | null;\n /**\n * \n * @type {number}\n * @memberof PipelineExecutionDtoLoadMoreResult\n */\n totalCount?: number;\n /**\n * \n * @type {number}\n * @memberof PipelineExecutionDtoLoadMoreResult\n */\n pageIndex?: number;\n}\n\n/**\n * Check if a given object implements the PipelineExecutionDtoLoadMoreResult interface.\n */\nexport function instanceOfPipelineExecutionDtoLoadMoreResult(value: object): value is PipelineExecutionDtoLoadMoreResult {\n return true;\n}\n\nexport function PipelineExecutionDtoLoadMoreResultFromJSON(json: any): PipelineExecutionDtoLoadMoreResult {\n return PipelineExecutionDtoLoadMoreResultFromJSONTyped(json, false);\n}\n\nexport function PipelineExecutionDtoLoadMoreResultFromJSONTyped(json: any, ignoreDiscriminator: boolean): PipelineExecutionDtoLoadMoreResult {\n if (json == null) {\n return json;\n }\n return {\n \n 'isLastBatch': json['isLastBatch'] == null ? undefined : json['isLastBatch'],\n 'result': json['result'] == null ? undefined : ((json['result'] as Array<any>).map(PipelineExecutionDtoFromJSON)),\n 'totalCount': json['totalCount'] == null ? undefined : json['totalCount'],\n 'pageIndex': json['pageIndex'] == null ? undefined : json['pageIndex'],\n };\n}\n\nexport function PipelineExecutionDtoLoadMoreResultToJSON(json: any): PipelineExecutionDtoLoadMoreResult {\n return PipelineExecutionDtoLoadMoreResultToJSONTyped(json, false);\n}\n\nexport function PipelineExecutionDtoLoadMoreResultToJSONTyped(value?: PipelineExecutionDtoLoadMoreResult | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'isLastBatch': value['isLastBatch'],\n 'result': value['result'] == null ? undefined : ((value['result'] as Array<any>).map(PipelineExecutionDtoToJSON)),\n 'totalCount': value['totalCount'],\n 'pageIndex': value['pageIndex'],\n };\n}\n\n",
|
|
112
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { PipelineExecutionDto } from './PipelineExecutionDto';\nimport {\n PipelineExecutionDtoFromJSON,\n PipelineExecutionDtoFromJSONTyped,\n PipelineExecutionDtoToJSON,\n PipelineExecutionDtoToJSONTyped,\n} from './PipelineExecutionDto';\n\n/**\n * \n * @export\n * @interface PipelineExecutionDtoPagedResult\n */\nexport interface PipelineExecutionDtoPagedResult {\n /**\n * \n * @type {number}\n * @memberof PipelineExecutionDtoPagedResult\n */\n totalCount?: number;\n /**\n * \n * @type {Array<PipelineExecutionDto>}\n * @memberof PipelineExecutionDtoPagedResult\n */\n result?: Array<PipelineExecutionDto> | null;\n}\n\n/**\n * Check if a given object implements the PipelineExecutionDtoPagedResult interface.\n */\nexport function instanceOfPipelineExecutionDtoPagedResult(value: object): value is PipelineExecutionDtoPagedResult {\n return true;\n}\n\nexport function PipelineExecutionDtoPagedResultFromJSON(json: any): PipelineExecutionDtoPagedResult {\n return PipelineExecutionDtoPagedResultFromJSONTyped(json, false);\n}\n\nexport function PipelineExecutionDtoPagedResultFromJSONTyped(json: any, ignoreDiscriminator: boolean): PipelineExecutionDtoPagedResult {\n if (json == null) {\n return json;\n }\n return {\n \n 'totalCount': json['totalCount'] == null ? undefined : json['totalCount'],\n 'result': json['result'] == null ? undefined : ((json['result'] as Array<any>).map(PipelineExecutionDtoFromJSON)),\n };\n}\n\nexport function PipelineExecutionDtoPagedResultToJSON(json: any): PipelineExecutionDtoPagedResult {\n return PipelineExecutionDtoPagedResultToJSONTyped(json, false);\n}\n\nexport function PipelineExecutionDtoPagedResultToJSONTyped(value?: PipelineExecutionDtoPagedResult | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'totalCount': value['totalCount'],\n 'result': value['result'] == null ? undefined : ((value['result'] as Array<any>).map(PipelineExecutionDtoToJSON)),\n };\n}\n\n",
|
|
113
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PipelineProcessDto\n */\nexport interface PipelineProcessDto {\n /**\n * \n * @type {string}\n * @memberof PipelineProcessDto\n */\n identifier?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineProcessDto\n */\n name?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineProcessDto\n */\n description?: string | null;\n /**\n * \n * @type {object}\n * @memberof PipelineProcessDto\n */\n arguments?: object | null;\n /**\n * \n * @type {string}\n * @memberof PipelineProcessDto\n */\n inputArguments?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineProcessDto\n */\n packageIdentifier?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineProcessDto\n */\n packageVersion?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineProcessDto\n */\n feedId?: string | null;\n}\n\n/**\n * Check if a given object implements the PipelineProcessDto interface.\n */\nexport function instanceOfPipelineProcessDto(value: object): value is PipelineProcessDto {\n return true;\n}\n\nexport function PipelineProcessDtoFromJSON(json: any): PipelineProcessDto {\n return PipelineProcessDtoFromJSONTyped(json, false);\n}\n\nexport function PipelineProcessDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PipelineProcessDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'identifier': json['identifier'] == null ? undefined : json['identifier'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'arguments': json['arguments'] == null ? undefined : json['arguments'],\n 'inputArguments': json['inputArguments'] == null ? undefined : json['inputArguments'],\n 'packageIdentifier': json['packageIdentifier'] == null ? undefined : json['packageIdentifier'],\n 'packageVersion': json['packageVersion'] == null ? undefined : json['packageVersion'],\n 'feedId': json['feedId'] == null ? undefined : json['feedId'],\n };\n}\n\nexport function PipelineProcessDtoToJSON(json: any): PipelineProcessDto {\n return PipelineProcessDtoToJSONTyped(json, false);\n}\n\nexport function PipelineProcessDtoToJSONTyped(value?: PipelineProcessDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'identifier': value['identifier'],\n 'name': value['name'],\n 'description': value['description'],\n 'arguments': value['arguments'],\n 'inputArguments': value['inputArguments'],\n 'packageIdentifier': value['packageIdentifier'],\n 'packageVersion': value['packageVersion'],\n 'feedId': value['feedId'],\n };\n}\n\n",
|
|
114
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PipelineRepoDto\n */\nexport interface PipelineRepoDto {\n /**\n * \n * @type {string}\n * @memberof PipelineRepoDto\n */\n id?: string | null;\n /**\n * \n * @type {string}\n * @memberof PipelineRepoDto\n */\n name?: string | null;\n}\n\n/**\n * Check if a given object implements the PipelineRepoDto interface.\n */\nexport function instanceOfPipelineRepoDto(value: object): value is PipelineRepoDto {\n return true;\n}\n\nexport function PipelineRepoDtoFromJSON(json: any): PipelineRepoDto {\n return PipelineRepoDtoFromJSONTyped(json, false);\n}\n\nexport function PipelineRepoDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PipelineRepoDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'name': json['name'] == null ? undefined : json['name'],\n };\n}\n\nexport function PipelineRepoDtoToJSON(json: any): PipelineRepoDto {\n return PipelineRepoDtoToJSONTyped(json, false);\n}\n\nexport function PipelineRepoDtoToJSONTyped(value?: PipelineRepoDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'name': value['name'],\n };\n}\n\n",
|
|
115
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PipelinesStateDto\n */\nexport interface PipelinesStateDto {\n /**\n * \n * @type {number}\n * @memberof PipelinesStateDto\n */\n pipelinesTotalCount?: number;\n /**\n * \n * @type {Array<string>}\n * @memberof PipelinesStateDto\n */\n validConnectionsIdentifiers?: Array<string> | null;\n /**\n * \n * @type {Array<string>}\n * @memberof PipelinesStateDto\n */\n validRepositoriesIdentifiers?: Array<string> | null;\n /**\n * \n * @type {Array<string>}\n * @memberof PipelinesStateDto\n */\n invalidRepositoriesIdentifiers?: Array<string> | null;\n}\n\n/**\n * Check if a given object implements the PipelinesStateDto interface.\n */\nexport function instanceOfPipelinesStateDto(value: object): value is PipelinesStateDto {\n return true;\n}\n\nexport function PipelinesStateDtoFromJSON(json: any): PipelinesStateDto {\n return PipelinesStateDtoFromJSONTyped(json, false);\n}\n\nexport function PipelinesStateDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PipelinesStateDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'pipelinesTotalCount': json['pipelinesTotalCount'] == null ? undefined : json['pipelinesTotalCount'],\n 'validConnectionsIdentifiers': json['validConnectionsIdentifiers'] == null ? undefined : json['validConnectionsIdentifiers'],\n 'validRepositoriesIdentifiers': json['validRepositoriesIdentifiers'] == null ? undefined : json['validRepositoriesIdentifiers'],\n 'invalidRepositoriesIdentifiers': json['invalidRepositoriesIdentifiers'] == null ? undefined : json['invalidRepositoriesIdentifiers'],\n };\n}\n\nexport function PipelinesStateDtoToJSON(json: any): PipelinesStateDto {\n return PipelinesStateDtoToJSONTyped(json, false);\n}\n\nexport function PipelinesStateDtoToJSONTyped(value?: PipelinesStateDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'pipelinesTotalCount': value['pipelinesTotalCount'],\n 'validConnectionsIdentifiers': value['validConnectionsIdentifiers'],\n 'validRepositoriesIdentifiers': value['validRepositoriesIdentifiers'],\n 'invalidRepositoriesIdentifiers': value['invalidRepositoriesIdentifiers'],\n };\n}\n\n",
|
|
116
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RobotLogDto\n */\nexport interface RobotLogDto {\n /**\n * \n * @type {string}\n * @memberof RobotLogDto\n */\n message?: string | null;\n}\n\n/**\n * Check if a given object implements the RobotLogDto interface.\n */\nexport function instanceOfRobotLogDto(value: object): value is RobotLogDto {\n return true;\n}\n\nexport function RobotLogDtoFromJSON(json: any): RobotLogDto {\n return RobotLogDtoFromJSONTyped(json, false);\n}\n\nexport function RobotLogDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): RobotLogDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'message': json['message'] == null ? undefined : json['message'],\n };\n}\n\nexport function RobotLogDtoToJSON(json: any): RobotLogDto {\n return RobotLogDtoToJSONTyped(json, false);\n}\n\nexport function RobotLogDtoToJSONTyped(value?: RobotLogDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'message': value['message'],\n };\n}\n\n",
|
|
117
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { RobotLogDto } from './RobotLogDto';\nimport {\n RobotLogDtoFromJSON,\n RobotLogDtoFromJSONTyped,\n RobotLogDtoToJSON,\n RobotLogDtoToJSONTyped,\n} from './RobotLogDto';\n\n/**\n * \n * @export\n * @interface RobotLogDtoLoadMoreResult\n */\nexport interface RobotLogDtoLoadMoreResult {\n /**\n * \n * @type {boolean}\n * @memberof RobotLogDtoLoadMoreResult\n */\n isLastBatch?: boolean;\n /**\n * \n * @type {Array<RobotLogDto>}\n * @memberof RobotLogDtoLoadMoreResult\n */\n result?: Array<RobotLogDto> | null;\n /**\n * \n * @type {number}\n * @memberof RobotLogDtoLoadMoreResult\n */\n totalCount?: number;\n /**\n * \n * @type {number}\n * @memberof RobotLogDtoLoadMoreResult\n */\n pageIndex?: number;\n}\n\n/**\n * Check if a given object implements the RobotLogDtoLoadMoreResult interface.\n */\nexport function instanceOfRobotLogDtoLoadMoreResult(value: object): value is RobotLogDtoLoadMoreResult {\n return true;\n}\n\nexport function RobotLogDtoLoadMoreResultFromJSON(json: any): RobotLogDtoLoadMoreResult {\n return RobotLogDtoLoadMoreResultFromJSONTyped(json, false);\n}\n\nexport function RobotLogDtoLoadMoreResultFromJSONTyped(json: any, ignoreDiscriminator: boolean): RobotLogDtoLoadMoreResult {\n if (json == null) {\n return json;\n }\n return {\n \n 'isLastBatch': json['isLastBatch'] == null ? undefined : json['isLastBatch'],\n 'result': json['result'] == null ? undefined : ((json['result'] as Array<any>).map(RobotLogDtoFromJSON)),\n 'totalCount': json['totalCount'] == null ? undefined : json['totalCount'],\n 'pageIndex': json['pageIndex'] == null ? undefined : json['pageIndex'],\n };\n}\n\nexport function RobotLogDtoLoadMoreResultToJSON(json: any): RobotLogDtoLoadMoreResult {\n return RobotLogDtoLoadMoreResultToJSONTyped(json, false);\n}\n\nexport function RobotLogDtoLoadMoreResultToJSONTyped(value?: RobotLogDtoLoadMoreResult | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'isLastBatch': value['isLastBatch'],\n 'result': value['result'] == null ? undefined : ((value['result'] as Array<any>).map(RobotLogDtoToJSON)),\n 'totalCount': value['totalCount'],\n 'pageIndex': value['pageIndex'],\n };\n}\n\n",
|
|
118
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n EditPipelineDto,\n PipelineDto,\n PipelineDtoLoadMoreResult,\n PipelineDtoPagedResult,\n PipelineExecutionDto,\n PipelineExecutionDtoLoadMoreResult,\n PipelineExecutionDtoPagedResult,\n PipelineProcessDto,\n PipelineRepoDto,\n PipelinesStateDto,\n} from '../models/index';\nimport {\n EditPipelineDtoFromJSON,\n EditPipelineDtoToJSON,\n PipelineDtoFromJSON,\n PipelineDtoToJSON,\n PipelineDtoLoadMoreResultFromJSON,\n PipelineDtoLoadMoreResultToJSON,\n PipelineDtoPagedResultFromJSON,\n PipelineDtoPagedResultToJSON,\n PipelineExecutionDtoFromJSON,\n PipelineExecutionDtoToJSON,\n PipelineExecutionDtoLoadMoreResultFromJSON,\n PipelineExecutionDtoLoadMoreResultToJSON,\n PipelineExecutionDtoPagedResultFromJSON,\n PipelineExecutionDtoPagedResultToJSON,\n PipelineProcessDtoFromJSON,\n PipelineProcessDtoToJSON,\n PipelineRepoDtoFromJSON,\n PipelineRepoDtoToJSON,\n PipelinesStateDtoFromJSON,\n PipelinesStateDtoToJSON,\n} from '../models/index';\n\nexport interface PipelineDeletePipelineRequest {\n pipelineIdentifier: string;\n}\n\nexport interface PipelineGetPipelineByIdentifierRequest {\n value?: string;\n}\n\nexport interface PipelineGetPipelineByNameRequest {\n value?: string;\n}\n\nexport interface PipelineGetPipelineExecutionsRequest {\n pipelineIdentifier: string;\n pageIndex?: number;\n pageSize?: number;\n searchTerm?: string;\n}\n\nexport interface PipelineGetPipelineExecutionsPageRequest {\n pipelineIdentifier: string;\n pageIndex?: number;\n pageSize?: number;\n searchTerm?: string;\n}\n\nexport interface PipelineGetPipelineProcessRequest {\n identifier?: string;\n}\n\nexport interface PipelineGetPipelinesRequest {\n repositoryIds?: string;\n pageIndex?: number;\n pageSize?: number;\n searchTerm?: string;\n}\n\nexport interface PipelineGetPipelinesByPrefixRequest {\n value?: string;\n}\n\nexport interface PipelineGetPipelinesExecutionsRequest {\n pipelineExecutionsIdentifiers?: Array<string>;\n}\n\nexport interface PipelineGetPipelinesPageRequest {\n repositoryIds?: string;\n pageIndex?: number;\n pageSize?: number;\n searchTerm?: string;\n}\n\nexport interface PipelineRunPipelineRequest {\n pipelineIdentifier: string;\n}\n\nexport interface PipelineSaveAndRunPipelineRequest {\n telemetryFlowId?: string;\n pipelineDto?: PipelineDto;\n}\n\nexport interface PipelineSavePipelineRequest {\n telemetryFlowId?: string;\n pipelineDto?: PipelineDto;\n}\n\nexport interface PipelineUpdatePipelineRequest {\n editPipelineDto?: EditPipelineDto;\n}\n\n/**\n * \n */\nexport class PipelineApi extends runtime.BaseAPI {\n\n /**\n * Creates request options for pipelineDeletePipeline without sending the request\n */\n async pipelineDeletePipelineRequestOpts(requestParameters: PipelineDeletePipelineRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['pipelineIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'pipelineIdentifier',\n 'Required parameter \"pipelineIdentifier\" was null or undefined when calling pipelineDeletePipeline().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/{pipelineIdentifier}`;\n urlPath = urlPath.replace(`{${\"pipelineIdentifier\"}}`, encodeURIComponent(String(requestParameters['pipelineIdentifier'])));\n\n return {\n path: urlPath,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineDeletePipelineRaw(requestParameters: PipelineDeletePipelineRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const requestOptions = await this.pipelineDeletePipelineRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async pipelineDeletePipeline(requestParameters: PipelineDeletePipelineRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.pipelineDeletePipelineRaw(requestParameters, initOverrides);\n }\n\n /**\n * Creates request options for pipelineGetPipelineByIdentifier without sending the request\n */\n async pipelineGetPipelineByIdentifierRequestOpts(requestParameters: PipelineGetPipelineByIdentifierRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n if (requestParameters['value'] != null) {\n queryParameters['value'] = requestParameters['value'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/search/identifier`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelineByIdentifierRaw(requestParameters: PipelineGetPipelineByIdentifierRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PipelineDto>> {\n const requestOptions = await this.pipelineGetPipelineByIdentifierRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PipelineDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineGetPipelineByIdentifier(requestParameters: PipelineGetPipelineByIdentifierRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PipelineDto> {\n const response = await this.pipelineGetPipelineByIdentifierRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineGetPipelineByName without sending the request\n */\n async pipelineGetPipelineByNameRequestOpts(requestParameters: PipelineGetPipelineByNameRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n if (requestParameters['value'] != null) {\n queryParameters['value'] = requestParameters['value'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/search/name`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelineByNameRaw(requestParameters: PipelineGetPipelineByNameRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PipelineDto>> {\n const requestOptions = await this.pipelineGetPipelineByNameRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PipelineDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineGetPipelineByName(requestParameters: PipelineGetPipelineByNameRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PipelineDto> {\n const response = await this.pipelineGetPipelineByNameRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineGetPipelineExecutions without sending the request\n */\n async pipelineGetPipelineExecutionsRequestOpts(requestParameters: PipelineGetPipelineExecutionsRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['pipelineIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'pipelineIdentifier',\n 'Required parameter \"pipelineIdentifier\" was null or undefined when calling pipelineGetPipelineExecutions().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['pageIndex'] != null) {\n queryParameters['pageIndex'] = requestParameters['pageIndex'];\n }\n\n if (requestParameters['pageSize'] != null) {\n queryParameters['pageSize'] = requestParameters['pageSize'];\n }\n\n if (requestParameters['searchTerm'] != null) {\n queryParameters['searchTerm'] = requestParameters['searchTerm'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/{pipelineIdentifier}/executions`;\n urlPath = urlPath.replace(`{${\"pipelineIdentifier\"}}`, encodeURIComponent(String(requestParameters['pipelineIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelineExecutionsRaw(requestParameters: PipelineGetPipelineExecutionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PipelineExecutionDtoLoadMoreResult>> {\n const requestOptions = await this.pipelineGetPipelineExecutionsRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PipelineExecutionDtoLoadMoreResultFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineGetPipelineExecutions(requestParameters: PipelineGetPipelineExecutionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PipelineExecutionDtoLoadMoreResult> {\n const response = await this.pipelineGetPipelineExecutionsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineGetPipelineExecutionsPage without sending the request\n */\n async pipelineGetPipelineExecutionsPageRequestOpts(requestParameters: PipelineGetPipelineExecutionsPageRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['pipelineIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'pipelineIdentifier',\n 'Required parameter \"pipelineIdentifier\" was null or undefined when calling pipelineGetPipelineExecutionsPage().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['pageIndex'] != null) {\n queryParameters['pageIndex'] = requestParameters['pageIndex'];\n }\n\n if (requestParameters['pageSize'] != null) {\n queryParameters['pageSize'] = requestParameters['pageSize'];\n }\n\n if (requestParameters['searchTerm'] != null) {\n queryParameters['searchTerm'] = requestParameters['searchTerm'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/{pipelineIdentifier}/executions-page`;\n urlPath = urlPath.replace(`{${\"pipelineIdentifier\"}}`, encodeURIComponent(String(requestParameters['pipelineIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelineExecutionsPageRaw(requestParameters: PipelineGetPipelineExecutionsPageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PipelineExecutionDtoPagedResult>> {\n const requestOptions = await this.pipelineGetPipelineExecutionsPageRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PipelineExecutionDtoPagedResultFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineGetPipelineExecutionsPage(requestParameters: PipelineGetPipelineExecutionsPageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PipelineExecutionDtoPagedResult> {\n const response = await this.pipelineGetPipelineExecutionsPageRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineGetPipelineProcess without sending the request\n */\n async pipelineGetPipelineProcessRequestOpts(requestParameters: PipelineGetPipelineProcessRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n if (requestParameters['identifier'] != null) {\n queryParameters['identifier'] = requestParameters['identifier'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/process`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelineProcessRaw(requestParameters: PipelineGetPipelineProcessRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PipelineProcessDto>> {\n const requestOptions = await this.pipelineGetPipelineProcessRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PipelineProcessDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineGetPipelineProcess(requestParameters: PipelineGetPipelineProcessRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PipelineProcessDto> {\n const response = await this.pipelineGetPipelineProcessRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineGetPipelineProcesses without sending the request\n */\n async pipelineGetPipelineProcessesRequestOpts(): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/processes`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelineProcessesRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<PipelineProcessDto>>> {\n const requestOptions = await this.pipelineGetPipelineProcessesRequestOpts();\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PipelineProcessDtoFromJSON));\n }\n\n /**\n */\n async pipelineGetPipelineProcesses(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<PipelineProcessDto>> {\n const response = await this.pipelineGetPipelineProcessesRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineGetPipelines without sending the request\n */\n async pipelineGetPipelinesRequestOpts(requestParameters: PipelineGetPipelinesRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n if (requestParameters['repositoryIds'] != null) {\n queryParameters['repositoryIds'] = requestParameters['repositoryIds'];\n }\n\n if (requestParameters['pageIndex'] != null) {\n queryParameters['pageIndex'] = requestParameters['pageIndex'];\n }\n\n if (requestParameters['pageSize'] != null) {\n queryParameters['pageSize'] = requestParameters['pageSize'];\n }\n\n if (requestParameters['searchTerm'] != null) {\n queryParameters['searchTerm'] = requestParameters['searchTerm'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelinesRaw(requestParameters: PipelineGetPipelinesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PipelineDtoLoadMoreResult>> {\n const requestOptions = await this.pipelineGetPipelinesRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PipelineDtoLoadMoreResultFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineGetPipelines(requestParameters: PipelineGetPipelinesRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PipelineDtoLoadMoreResult> {\n const response = await this.pipelineGetPipelinesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineGetPipelinesByPrefix without sending the request\n */\n async pipelineGetPipelinesByPrefixRequestOpts(requestParameters: PipelineGetPipelinesByPrefixRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n if (requestParameters['value'] != null) {\n queryParameters['value'] = requestParameters['value'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/search/prefix`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelinesByPrefixRaw(requestParameters: PipelineGetPipelinesByPrefixRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<PipelineDto>>> {\n const requestOptions = await this.pipelineGetPipelinesByPrefixRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PipelineDtoFromJSON));\n }\n\n /**\n */\n async pipelineGetPipelinesByPrefix(requestParameters: PipelineGetPipelinesByPrefixRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<PipelineDto>> {\n const response = await this.pipelineGetPipelinesByPrefixRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineGetPipelinesExecutions without sending the request\n */\n async pipelineGetPipelinesExecutionsRequestOpts(requestParameters: PipelineGetPipelinesExecutionsRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n if (requestParameters['pipelineExecutionsIdentifiers'] != null) {\n queryParameters['pipelineExecutionsIdentifiers'] = requestParameters['pipelineExecutionsIdentifiers'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/executions`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelinesExecutionsRaw(requestParameters: PipelineGetPipelinesExecutionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<PipelineExecutionDto>>> {\n const requestOptions = await this.pipelineGetPipelinesExecutionsRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PipelineExecutionDtoFromJSON));\n }\n\n /**\n */\n async pipelineGetPipelinesExecutions(requestParameters: PipelineGetPipelinesExecutionsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<PipelineExecutionDto>> {\n const response = await this.pipelineGetPipelinesExecutionsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineGetPipelinesPage without sending the request\n */\n async pipelineGetPipelinesPageRequestOpts(requestParameters: PipelineGetPipelinesPageRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n if (requestParameters['repositoryIds'] != null) {\n queryParameters['repositoryIds'] = requestParameters['repositoryIds'];\n }\n\n if (requestParameters['pageIndex'] != null) {\n queryParameters['pageIndex'] = requestParameters['pageIndex'];\n }\n\n if (requestParameters['pageSize'] != null) {\n queryParameters['pageSize'] = requestParameters['pageSize'];\n }\n\n if (requestParameters['searchTerm'] != null) {\n queryParameters['searchTerm'] = requestParameters['searchTerm'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/page`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelinesPageRaw(requestParameters: PipelineGetPipelinesPageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PipelineDtoPagedResult>> {\n const requestOptions = await this.pipelineGetPipelinesPageRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PipelineDtoPagedResultFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineGetPipelinesPage(requestParameters: PipelineGetPipelinesPageRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PipelineDtoPagedResult> {\n const response = await this.pipelineGetPipelinesPageRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineGetPipelinesRepositories without sending the request\n */\n async pipelineGetPipelinesRepositoriesRequestOpts(): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/repositories`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelinesRepositoriesRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<PipelineRepoDto>>> {\n const requestOptions = await this.pipelineGetPipelinesRepositoriesRequestOpts();\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PipelineRepoDtoFromJSON));\n }\n\n /**\n */\n async pipelineGetPipelinesRepositories(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<PipelineRepoDto>> {\n const response = await this.pipelineGetPipelinesRepositoriesRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineGetPipelinesState without sending the request\n */\n async pipelineGetPipelinesStateRequestOpts(): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/state`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineGetPipelinesStateRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PipelinesStateDto>> {\n const requestOptions = await this.pipelineGetPipelinesStateRequestOpts();\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PipelinesStateDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineGetPipelinesState(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PipelinesStateDto> {\n const response = await this.pipelineGetPipelinesStateRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineRunPipeline without sending the request\n */\n async pipelineRunPipelineRequestOpts(requestParameters: PipelineRunPipelineRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['pipelineIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'pipelineIdentifier',\n 'Required parameter \"pipelineIdentifier\" was null or undefined when calling pipelineRunPipeline().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/{pipelineIdentifier}/run`;\n urlPath = urlPath.replace(`{${\"pipelineIdentifier\"}}`, encodeURIComponent(String(requestParameters['pipelineIdentifier'])));\n\n return {\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineRunPipelineRaw(requestParameters: PipelineRunPipelineRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const requestOptions = await this.pipelineRunPipelineRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async pipelineRunPipeline(requestParameters: PipelineRunPipelineRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.pipelineRunPipelineRaw(requestParameters, initOverrides);\n }\n\n /**\n * Creates request options for pipelineSaveAndRunPipeline without sending the request\n */\n async pipelineSaveAndRunPipelineRequestOpts(requestParameters: PipelineSaveAndRunPipelineRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n if (requestParameters['telemetryFlowId'] != null) {\n queryParameters['telemetryFlowId'] = requestParameters['telemetryFlowId'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline/saveAndRun`;\n\n return {\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: PipelineDtoToJSON(requestParameters['pipelineDto']),\n };\n }\n\n /**\n */\n async pipelineSaveAndRunPipelineRaw(requestParameters: PipelineSaveAndRunPipelineRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PipelineDto>> {\n const requestOptions = await this.pipelineSaveAndRunPipelineRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PipelineDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineSaveAndRunPipeline(requestParameters: PipelineSaveAndRunPipelineRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PipelineDto> {\n const response = await this.pipelineSaveAndRunPipelineRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineSavePipeline without sending the request\n */\n async pipelineSavePipelineRequestOpts(requestParameters: PipelineSavePipelineRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n if (requestParameters['telemetryFlowId'] != null) {\n queryParameters['telemetryFlowId'] = requestParameters['telemetryFlowId'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline`;\n\n return {\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: PipelineDtoToJSON(requestParameters['pipelineDto']),\n };\n }\n\n /**\n */\n async pipelineSavePipelineRaw(requestParameters: PipelineSavePipelineRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PipelineDto>> {\n const requestOptions = await this.pipelineSavePipelineRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PipelineDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineSavePipeline(requestParameters: PipelineSavePipelineRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PipelineDto> {\n const response = await this.pipelineSavePipelineRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineUpdatePipeline without sending the request\n */\n async pipelineUpdatePipelineRequestOpts(requestParameters: PipelineUpdatePipelineRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/Pipeline`;\n\n return {\n path: urlPath,\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: EditPipelineDtoToJSON(requestParameters['editPipelineDto']),\n };\n }\n\n /**\n */\n async pipelineUpdatePipelineRaw(requestParameters: PipelineUpdatePipelineRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const requestOptions = await this.pipelineUpdatePipelineRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async pipelineUpdatePipeline(requestParameters: PipelineUpdatePipelineRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.pipelineUpdatePipelineRaw(requestParameters, initOverrides);\n }\n\n}\n",
|
|
119
|
-
"/* tslint:disable */\n/* eslint-disable */\n/**\n * CICD API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: V1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AccessTokenDto,\n JobDetailsDto,\n PipelineExecutionDto,\n PipelineExecutionStageSnapshotDto,\n RobotLogDtoLoadMoreResult,\n} from '../models/index';\nimport {\n AccessTokenDtoFromJSON,\n AccessTokenDtoToJSON,\n JobDetailsDtoFromJSON,\n JobDetailsDtoToJSON,\n PipelineExecutionDtoFromJSON,\n PipelineExecutionDtoToJSON,\n PipelineExecutionStageSnapshotDtoFromJSON,\n PipelineExecutionStageSnapshotDtoToJSON,\n RobotLogDtoLoadMoreResultFromJSON,\n RobotLogDtoLoadMoreResultToJSON,\n} from '../models/index';\n\nexport interface PipelineExecutionsGetAccessTokenRequest {\n jobKey: string;\n}\n\nexport interface PipelineExecutionsGetPipelineExecutionRequest {\n pipelineExecutionIdentifier: string;\n}\n\nexport interface PipelineExecutionsGetPipelineExecutionLogsRequest {\n jobKey: string;\n skip?: number;\n take?: number;\n}\n\nexport interface PipelineExecutionsGetPipelineExecutionStageStatusRequest {\n requestBody?: Array<string>;\n}\n\nexport interface PipelineExecutionsGetPipelineJobDetailsRequest {\n jobKey: string;\n}\n\nexport interface PipelineExecutionsStopPipelineJobExecutionRequest {\n jobKey: string;\n}\n\n/**\n * \n */\nexport class PipelineExecutionsApi extends runtime.BaseAPI {\n\n /**\n * Creates request options for pipelineExecutionsGetAccessToken without sending the request\n */\n async pipelineExecutionsGetAccessTokenRequestOpts(requestParameters: PipelineExecutionsGetAccessTokenRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['jobKey'] == null) {\n throw new runtime.RequiredError(\n 'jobKey',\n 'Required parameter \"jobKey\" was null or undefined when calling pipelineExecutionsGetAccessToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/PipelineExecutions/{jobKey}/token`;\n urlPath = urlPath.replace(`{${\"jobKey\"}}`, encodeURIComponent(String(requestParameters['jobKey'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineExecutionsGetAccessTokenRaw(requestParameters: PipelineExecutionsGetAccessTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccessTokenDto>> {\n const requestOptions = await this.pipelineExecutionsGetAccessTokenRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => AccessTokenDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineExecutionsGetAccessToken(requestParameters: PipelineExecutionsGetAccessTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccessTokenDto> {\n const response = await this.pipelineExecutionsGetAccessTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineExecutionsGetPipelineExecution without sending the request\n */\n async pipelineExecutionsGetPipelineExecutionRequestOpts(requestParameters: PipelineExecutionsGetPipelineExecutionRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['pipelineExecutionIdentifier'] == null) {\n throw new runtime.RequiredError(\n 'pipelineExecutionIdentifier',\n 'Required parameter \"pipelineExecutionIdentifier\" was null or undefined when calling pipelineExecutionsGetPipelineExecution().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/PipelineExecutions/{pipelineExecutionIdentifier}`;\n urlPath = urlPath.replace(`{${\"pipelineExecutionIdentifier\"}}`, encodeURIComponent(String(requestParameters['pipelineExecutionIdentifier'])));\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineExecutionsGetPipelineExecutionRaw(requestParameters: PipelineExecutionsGetPipelineExecutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PipelineExecutionDto>> {\n const requestOptions = await this.pipelineExecutionsGetPipelineExecutionRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PipelineExecutionDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineExecutionsGetPipelineExecution(requestParameters: PipelineExecutionsGetPipelineExecutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PipelineExecutionDto> {\n const response = await this.pipelineExecutionsGetPipelineExecutionRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineExecutionsGetPipelineExecutionLogs without sending the request\n */\n async pipelineExecutionsGetPipelineExecutionLogsRequestOpts(requestParameters: PipelineExecutionsGetPipelineExecutionLogsRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['jobKey'] == null) {\n throw new runtime.RequiredError(\n 'jobKey',\n 'Required parameter \"jobKey\" was null or undefined when calling pipelineExecutionsGetPipelineExecutionLogs().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['jobKey'] != null) {\n queryParameters['jobKey'] = requestParameters['jobKey'];\n }\n\n if (requestParameters['skip'] != null) {\n queryParameters['skip'] = requestParameters['skip'];\n }\n\n if (requestParameters['take'] != null) {\n queryParameters['take'] = requestParameters['take'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/PipelineExecutions/logs`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineExecutionsGetPipelineExecutionLogsRaw(requestParameters: PipelineExecutionsGetPipelineExecutionLogsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RobotLogDtoLoadMoreResult>> {\n const requestOptions = await this.pipelineExecutionsGetPipelineExecutionLogsRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RobotLogDtoLoadMoreResultFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineExecutionsGetPipelineExecutionLogs(requestParameters: PipelineExecutionsGetPipelineExecutionLogsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RobotLogDtoLoadMoreResult> {\n const response = await this.pipelineExecutionsGetPipelineExecutionLogsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineExecutionsGetPipelineExecutionStageStatus without sending the request\n */\n async pipelineExecutionsGetPipelineExecutionStageStatusRequestOpts(requestParameters: PipelineExecutionsGetPipelineExecutionStageStatusRequest): Promise<runtime.RequestOpts> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/PipelineExecutions/stages/snapshot`;\n\n return {\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: requestParameters['requestBody'],\n };\n }\n\n /**\n */\n async pipelineExecutionsGetPipelineExecutionStageStatusRaw(requestParameters: PipelineExecutionsGetPipelineExecutionStageStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: Array<PipelineExecutionStageSnapshotDto>; }>> {\n const requestOptions = await this.pipelineExecutionsGetPipelineExecutionStageStatusRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse<any>(response);\n }\n\n /**\n */\n async pipelineExecutionsGetPipelineExecutionStageStatus(requestParameters: PipelineExecutionsGetPipelineExecutionStageStatusRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: Array<PipelineExecutionStageSnapshotDto>; }> {\n const response = await this.pipelineExecutionsGetPipelineExecutionStageStatusRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineExecutionsGetPipelineJobDetails without sending the request\n */\n async pipelineExecutionsGetPipelineJobDetailsRequestOpts(requestParameters: PipelineExecutionsGetPipelineJobDetailsRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['jobKey'] == null) {\n throw new runtime.RequiredError(\n 'jobKey',\n 'Required parameter \"jobKey\" was null or undefined when calling pipelineExecutionsGetPipelineJobDetails().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['jobKey'] != null) {\n queryParameters['jobKey'] = requestParameters['jobKey'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/PipelineExecutions/details`;\n\n return {\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineExecutionsGetPipelineJobDetailsRaw(requestParameters: PipelineExecutionsGetPipelineJobDetailsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<JobDetailsDto>> {\n const requestOptions = await this.pipelineExecutionsGetPipelineJobDetailsRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => JobDetailsDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async pipelineExecutionsGetPipelineJobDetails(requestParameters: PipelineExecutionsGetPipelineJobDetailsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<JobDetailsDto> {\n const response = await this.pipelineExecutionsGetPipelineJobDetailsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Creates request options for pipelineExecutionsStopPipelineJobExecution without sending the request\n */\n async pipelineExecutionsStopPipelineJobExecutionRequestOpts(requestParameters: PipelineExecutionsStopPipelineJobExecutionRequest): Promise<runtime.RequestOpts> {\n if (requestParameters['jobKey'] == null) {\n throw new runtime.RequiredError(\n 'jobKey',\n 'Required parameter \"jobKey\" was null or undefined when calling pipelineExecutionsStopPipelineJobExecution().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"Authorization\"] = await this.configuration.apiKey(\"Authorization\"); // Bearer authentication\n }\n\n\n let urlPath = `/api/PipelineExecutions/{jobKey}/execution/stop`;\n urlPath = urlPath.replace(`{${\"jobKey\"}}`, encodeURIComponent(String(requestParameters['jobKey'])));\n\n return {\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n };\n }\n\n /**\n */\n async pipelineExecutionsStopPipelineJobExecutionRaw(requestParameters: PipelineExecutionsStopPipelineJobExecutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const requestOptions = await this.pipelineExecutionsStopPipelineJobExecutionRequestOpts(requestParameters);\n const response = await this.request(requestOptions, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async pipelineExecutionsStopPipelineJobExecution(requestParameters: PipelineExecutionsStopPipelineJobExecutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.pipelineExecutionsStopPipelineJobExecutionRaw(requestParameters, initOverrides);\n }\n\n}\n",
|
|
120
|
-
"import { getAuthContext } from \"@uipath/auth\";\nimport { addSdkUserAgentHeader } from \"@uipath/common/sdk-user-agent\";\nimport { Configuration } from \"../generated/src/runtime.js\";\nimport { SDK_USER_AGENT } from \"./user-agent.js\";\n\nexport interface CreateApiClientOptions {\n loginValidity?: number;\n s2sToken?: string;\n}\n\nexport async function createCicdConfig(\n options?: CreateApiClientOptions,\n): Promise<Configuration> {\n const ctx = await getAuthContext({\n ensureTokenValidityMinutes: options?.loginValidity,\n requireOrganizationId: true,\n });\n\n const basePath = `${ctx.baseUrl}/${ctx.organizationId}/roboticsops_/cicd_`;\n const bearerToken = options?.s2sToken ?? ctx.accessToken;\n\n return new Configuration({\n basePath,\n headers: addSdkUserAgentHeader(\n {\n Authorization: `Bearer ${bearerToken}`,\n },\n SDK_USER_AGENT,\n ),\n });\n}\n\nexport async function createApiClient<T>(\n ApiClass: new (config: Configuration) => T,\n options?: CreateApiClientOptions,\n): Promise<T> {\n const config = await createCicdConfig(options);\n return new ApiClass(config);\n}\n",
|
|
121
|
-
"import {\n type Configuration as CicdConfiguration,\n createApiClient as createCicdApiClient,\n} from \"@uipath/cicd-sdk\";\nimport {\n catchError,\n extractErrorMessage,\n OutputFormatter,\n parseBoundedInt,\n processContext,\n RESULTS,\n resolveDeprecatedOptionAlias,\n warnDeprecatedOptionAlias,\n} from \"@uipath/common\";\nimport {\n createApiClient as createScApiClient,\n type Configuration as ScConfiguration,\n} from \"@uipath/sc-sdk\";\nimport type { Command } from \"commander\";\n\nexport const SC_LOGIN_INSTRUCTIONS =\n \"Ensure you are logged in with 'uip login' against an organization that has the StudioAdmin SourceControl service enabled.\";\n\nexport const CICD_LOGIN_INSTRUCTIONS =\n \"Ensure you are logged in with 'uip login' against an organization that has the StudioAdmin CICD service enabled. The current user must hold CICD permissions on the targeted runtime environment. Pipelines.View is required at minimum; mutations require Pipelines.Edit / Pipelines.Run.\";\n\nexport interface BaseOptions {\n loginValidity?: number;\n}\n\nexport interface LimitOffsetOptions {\n limit?: number;\n offset?: number;\n take?: number;\n skip?: number;\n}\n\nexport interface ResolvedLimitOffsetOptions {\n limit: number;\n offset: number;\n error?: {\n message: string;\n instructions: string;\n };\n}\n\n/**\n * Build a Commander option parser that requires a strict positive integer\n * (digits-only, >= 1). Delegates to `parseBoundedInt` from @uipath/common so\n * the error path stays consistent with the rest of the CLI.\n *\n * .option(\"--limit <n>\", \"...\", parsePositiveInt(\"--limit\"))\n */\nexport const parsePositiveInt = (\n optionName: string,\n): ((raw: string) => number) => {\n return (raw: string) =>\n parseBoundedInt(raw, optionName, {\n min: 1,\n max: Number.MAX_SAFE_INTEGER,\n });\n};\n\n/**\n * Build a Commander option parser that requires a strict non-negative integer\n * (digits-only, >= 0). Use for `--offset`-style flags where zero is meaningful.\n *\n * .option(\"--offset <n>\", \"...\", parseNonNegativeInt(\"--offset\"))\n */\nexport const parseNonNegativeInt = (\n optionName: string,\n): ((raw: string) => number) => {\n return (raw: string) =>\n parseBoundedInt(raw, optionName, {\n min: 0,\n max: Number.MAX_SAFE_INTEGER,\n });\n};\n\nexport function resolveLimitOffsetOptions(\n options: LimitOffsetOptions,\n defaults: { limit: number; offset: number },\n): ResolvedLimitOffsetOptions {\n const limit = resolveDeprecatedOptionAlias({\n preferredValue: options.limit,\n deprecatedValue: options.take,\n preferredFlag: \"--limit\",\n deprecatedFlag: \"--take\",\n });\n if (limit.error) {\n return { limit: 0, offset: 0, error: limit.error };\n }\n\n const offset = resolveDeprecatedOptionAlias({\n preferredValue: options.offset,\n deprecatedValue: options.skip,\n preferredFlag: \"--offset\",\n deprecatedFlag: \"--skip\",\n });\n if (offset.error) {\n return { limit: 0, offset: 0, error: offset.error };\n }\n\n if (limit.usedDeprecated) {\n warnDeprecatedOptionAlias(\"--take\", \"--limit\");\n }\n if (offset.usedDeprecated) {\n warnDeprecatedOptionAlias(\"--skip\", \"--offset\");\n }\n\n return {\n limit: limit.value ?? defaults.limit,\n offset: offset.value ?? defaults.offset,\n };\n}\n\nexport const withLoginValidity = <T extends Command>(cmd: T): T => {\n cmd.option(\n \"--login-validity <minutes>\",\n \"Override the interactive-login token lifetime for this call. Rarely needed.\",\n parsePositiveInt(\"--login-validity\"),\n );\n return cmd;\n};\n\nexport async function getScApi<T>(\n ApiClass: new (config: ScConfiguration) => T,\n options: BaseOptions,\n): Promise<T | null> {\n const [err, api] = await catchError(\n createScApiClient(ApiClass, { loginValidity: options.loginValidity }),\n );\n if (err) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(err),\n Instructions: SC_LOGIN_INSTRUCTIONS,\n });\n processContext.exit(1);\n return null;\n }\n return api;\n}\n\nexport async function getCicdApi<T>(\n ApiClass: new (config: CicdConfiguration) => T,\n options: BaseOptions,\n): Promise<T | null> {\n const [err, api] = await catchError(\n createCicdApiClient(ApiClass, { loginValidity: options.loginValidity }),\n );\n if (err) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(err),\n Instructions: CICD_LOGIN_INSTRUCTIONS,\n });\n processContext.exit(1);\n return null;\n }\n return api;\n}\n",
|
|
122
|
-
"import type { AutomationProjectDto } from \"@uipath/sc-sdk\";\n\n/**\n * Curated shape used by list verbs — `connection projects` and `project list`.\n *\n * Hand-picked so the default `--output table` view stays legible. Drill into\n * a single project with `project get --project <ProjectId>` for the detail view.\n */\nexport interface ProjectRow {\n ProjectId: string;\n Name: string;\n Description: string;\n Type: string;\n Repository: string;\n}\n\nconst safeString = (value: string | null | undefined): string => value ?? \"\";\n\nconst repositoryName = (p: AutomationProjectDto): string =>\n safeString(p.repository?.name) || safeString(p.repository?.cloneUrl);\n\nconst DESCRIPTION_MAX = 100;\n\n/** Collapse internal whitespace, then truncate with an ellipsis if too long. Keeps list rows compact for `--output table`. */\nconst compactDescription = (raw: string | null | undefined): string => {\n const collapsed = safeString(raw).replace(/\\s+/g, \" \").trim();\n if (collapsed.length <= DESCRIPTION_MAX) return collapsed;\n return `${collapsed.slice(0, DESCRIPTION_MAX - 1)}…`;\n};\n\nexport const mapProjectRow = (p: AutomationProjectDto): ProjectRow => ({\n ProjectId: safeString(p.identifier),\n Name: safeString(p.name),\n Description: compactDescription(p.description),\n Type: safeString(p.type),\n Repository: repositoryName(p),\n});\n\n/**\n * Curated detail shape for `project get`. Subtractive transform on\n * AutomationProjectDto: drops fields that are noise in the standard view,\n * flattens `repository` to just the repository name, and surfaces the\n * default branch as a top-level field for free.\n *\n * Dropped: automationHubIdeaUrl, organizationIdentifier, isTemplate, path,\n * projectId. The DTO's `projectId` is the Studio-side project.json id, which\n * collides semantically with the CLI's `--project-id` flag (the SC service\n * UUID). Dropping it removes the ambiguity; users that need the Studio id\n * can recover it from a `project content --path project.json` fetch.\n *\n * `availableBranches` is only populated when the caller passes\n * `--with-branches` to `project get`; otherwise it is omitted to keep the\n * default response cheap.\n */\nexport type ProjectDetail = Omit<\n AutomationProjectDto,\n | \"automationHubIdeaUrl\"\n | \"organizationIdentifier\"\n | \"isTemplate\"\n | \"path\"\n | \"projectId\"\n | \"repository\"\n> & {\n repository: string;\n defaultBranch: string;\n availableBranches?: string[];\n};\n\nexport const mapProjectDetail = (p: AutomationProjectDto): ProjectDetail => {\n const {\n automationHubIdeaUrl: _automationHubIdeaUrl,\n organizationIdentifier: _organizationIdentifier,\n isTemplate: _isTemplate,\n path: _path,\n projectId: _projectId,\n repository: _repository,\n ...rest\n } = p;\n return {\n ...rest,\n repository: repositoryName(p),\n defaultBranch: safeString(p.repository?.defaultBranch),\n };\n};\n",
|
|
123
|
-
"import { PollOutcome, type PollUntilResult, pollUntil } from \"@uipath/common\";\nimport {\n type ConnectionStateDto,\n ConnectionSyncState,\n type ConnectionsApi,\n} from \"@uipath/sc-sdk\";\n\nexport interface SyncPollOptions {\n pollIntervalMs?: number;\n timeoutMs?: number;\n /**\n * Wall-clock ms (Date.now()) captured right after the sync trigger\n * call returned. The poller treats a row as still in-flight while\n * `lastSyncDate <= triggeredAtMs` — without this gate, the state\n * endpoint can return the *previous* run's \"Success\" before the new\n * sync starts, and the poller would exit immediately on stale data.\n *\n * Subject to client/server clock skew (the comparison is between a\n * client wall time and a server timestamp). Acceptable for \"did the\n * new sync finish\" feedback; not for compliance auditing.\n */\n triggeredAtMs?: number;\n}\n\nconst DEFAULT_INTERVAL_MS = 2_000;\nconst DEFAULT_TIMEOUT_MS = 5 * 60 * 1_000;\n\n/** Result wrapper carrying enough state for the caller to format success/failure output. */\nexport interface SyncPollResult {\n /** All connection rows from the final poll — useful for the bulk variant. */\n states: ConnectionStateDto[];\n /** When polling a single connection, the row matching the id (or undefined if it disappeared). */\n target?: ConnectionStateDto;\n /** True when every observed connection finished successfully. */\n succeeded: boolean;\n}\n\nconst isFresh = (\n row: ConnectionStateDto,\n triggeredAtMs: number | undefined,\n): boolean => {\n if (triggeredAtMs === undefined) return true;\n const last = row.lastSyncDate?.getTime();\n return last !== undefined && last > triggeredAtMs;\n};\n\nconst isSingleSettled = (\n row: ConnectionStateDto | undefined,\n triggeredAtMs: number | undefined,\n): boolean =>\n row !== undefined &&\n row.syncingInProgress !== true &&\n isFresh(row, triggeredAtMs);\n\nconst isAllSettled = (\n rows: ConnectionStateDto[],\n triggeredAtMs: number | undefined,\n): boolean =>\n rows.every(\n (r) => r.syncingInProgress !== true && isFresh(r, triggeredAtMs),\n );\n\nconst statusLabel = (row: ConnectionStateDto | undefined): string => {\n if (!row) return \"NotFound\";\n if (row.syncingInProgress) return \"Running\";\n if (row.syncState === ConnectionSyncState.Success) return \"Success\";\n if (row.syncState === ConnectionSyncState.Fail) return \"Fail\";\n if (row.syncState === ConnectionSyncState.Broken) return \"Broken\";\n return \"Unknown\";\n};\n\n/** Poll until the connection identified by `connectionId` is no longer syncing. */\nexport async function pollConnectionSync(\n api: ConnectionsApi,\n connectionId: string,\n options: SyncPollOptions = {},\n): Promise<PollUntilResult<SyncPollResult>> {\n const triggeredAtMs = options.triggeredAtMs;\n return pollUntil({\n fn: async (): Promise<SyncPollResult> => {\n const states = await api.connectionsGetConnectionsStates();\n const target = states.find((s) => s.identifier === connectionId);\n return {\n states,\n target,\n succeeded:\n target !== undefined &&\n target.syncingInProgress !== true &&\n target.syncState === ConnectionSyncState.Success &&\n isFresh(target, triggeredAtMs),\n };\n },\n until: (r) =>\n isSingleSettled(r.target, triggeredAtMs) || r.target === undefined,\n getStatus: (r) => statusLabel(r.target),\n intervalMs: options.pollIntervalMs ?? DEFAULT_INTERVAL_MS,\n timeoutMs: options.timeoutMs ?? DEFAULT_TIMEOUT_MS,\n label: `connection ${connectionId}`,\n logPrefix: \"sc sync\",\n });\n}\n\n/** Poll until every connection has finished syncing (used by the no-id sync-all form). */\nexport async function pollAllConnectionsSync(\n api: ConnectionsApi,\n options: SyncPollOptions = {},\n): Promise<PollUntilResult<SyncPollResult>> {\n const triggeredAtMs = options.triggeredAtMs;\n return pollUntil({\n fn: async (): Promise<SyncPollResult> => {\n const states = await api.connectionsGetConnectionsStates();\n return {\n states,\n target: undefined,\n succeeded:\n isAllSettled(states, triggeredAtMs) &&\n states.every(\n (s) =>\n !s.syncState ||\n s.syncState === ConnectionSyncState.Success,\n ),\n };\n },\n until: (r) => isAllSettled(r.states, triggeredAtMs),\n getStatus: (r) => {\n const remaining = r.states.filter(\n (s) => s.syncingInProgress,\n ).length;\n return remaining > 0 ? `Running(${remaining})` : \"Settled\";\n },\n intervalMs: options.pollIntervalMs ?? DEFAULT_INTERVAL_MS,\n timeoutMs: options.timeoutMs ?? DEFAULT_TIMEOUT_MS,\n label: \"all connections\",\n logPrefix: \"sc sync\",\n });\n}\n\nexport { PollOutcome };\n",
|
|
124
|
-
"import {\n type CommandExample,\n catchError,\n extractErrorMessage,\n logger,\n OutputFormatter,\n PollOutcome,\n processContext,\n RESULTS,\n requireConfirmation,\n} from \"@uipath/common\";\nimport { ConnectionsApi } from \"@uipath/sc-sdk\";\nimport { type Command, Option } from \"commander\";\nimport {\n type BaseOptions,\n getScApi,\n parseNonNegativeInt,\n parsePositiveInt,\n resolveLimitOffsetOptions,\n withLoginValidity,\n} from \"./_shared/get-api.js\";\nimport { mapProjectRow } from \"./_shared/project-row.js\";\nimport {\n pollAllConnectionsSync,\n pollConnectionSync,\n} from \"./_shared/sync-poller.js\";\n\nconst SAMPLE_CONNECTION_ID = \"f1e2d3c4-0000-0000-0000-000000000001\";\nconst SAMPLE_REPO_ID = \"abcd1234-0000-0000-0000-000000000001\";\n\nconst csvToArray = (raw: string): string[] =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n\ninterface SyncOptions extends BaseOptions {\n wait?: boolean;\n timeout?: number;\n pollInterval?: number;\n}\n\ninterface ReposOptions extends BaseOptions {\n azureProjectsIds?: string;\n organizationIdentifier?: string;\n}\n\ninterface ReposBulkOptions extends BaseOptions {\n ids: string;\n}\n\ninterface ProjectsOptions extends BaseOptions {\n repositoryIds?: string;\n targetFramework?: string;\n projectType?: string;\n sortBy?: string;\n sortOrder?: string;\n azureProjectsIds?: string;\n organizationIdentifier?: string;\n offset?: number;\n limit?: number;\n skip?: number;\n take?: number;\n search?: string;\n}\n\ninterface SolutionsOptions extends BaseOptions {\n offset?: number;\n limit?: number;\n skip?: number;\n take?: number;\n search?: string;\n}\n\ninterface AzureProjectsOptions extends BaseOptions {\n organizationIdentifier?: string;\n}\n\ninterface StateOptions extends BaseOptions {\n connection?: string;\n}\n\nconst LIST_EXAMPLES: CommandExample[] = [\n {\n Description: \"List all SourceControl connections in the organization\",\n Command: \"uip aops connection list\",\n Output: {\n Code: \"ConnectionList\",\n Data: [\n {\n identifier: SAMPLE_CONNECTION_ID,\n name: \"GitHub - main org\",\n type: \"GitHub\",\n },\n ],\n },\n },\n];\n\nconst STATE_EXAMPLES: CommandExample[] = [\n {\n Description: \"Inspect sync state for every connection\",\n Command: \"uip aops connection state\",\n Output: {\n Code: \"ConnectionState\",\n Data: [\n {\n identifier: SAMPLE_CONNECTION_ID,\n syncState: \"Success\",\n syncingInProgress: false,\n },\n ],\n },\n },\n {\n Description: \"Filter to one connection\",\n Command:\n \"uip aops connection state --connection f1e2d3c4-0000-0000-0000-000000000001\",\n Output: {\n Code: \"ConnectionState\",\n Data: [\n {\n identifier: SAMPLE_CONNECTION_ID,\n syncState: \"Success\",\n syncingInProgress: false,\n },\n ],\n },\n },\n];\n\nconst SYNC_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"Trigger sync for one connection and wait for it to complete\",\n Command:\n \"uip aops connection sync f1e2d3c4-0000-0000-0000-000000000001 --wait\",\n Output: {\n Code: \"ConnectionSynced\",\n Data: {\n identifier: SAMPLE_CONNECTION_ID,\n syncState: \"Success\",\n syncingInProgress: false,\n },\n },\n },\n {\n Description:\n \"Trigger sync for every connection in the org without waiting\",\n Command: \"uip aops connection sync\",\n Output: {\n Code: \"ConnectionSyncStarted\",\n Data: {\n scope: \"all\",\n hint: \"Sync queued. Re-run with --wait to block until it completes, or call 'uip aops connection state' to inspect progress.\",\n },\n },\n },\n];\n\nconst DELETE_EXAMPLES: CommandExample[] = [\n {\n Description: \"Delete a connection by identifier\",\n Command:\n \"uip aops connection delete f1e2d3c4-0000-0000-0000-000000000001\",\n Output: {\n Code: \"ConnectionDeleted\",\n Data: { ConnectionId: SAMPLE_CONNECTION_ID },\n },\n },\n];\n\nconst REPOS_EXAMPLES: CommandExample[] = [\n {\n Description: \"List repositories visible through a connection\",\n Command:\n \"uip aops connection repos f1e2d3c4-0000-0000-0000-000000000001\",\n Output: {\n Code: \"ConnectionRepos\",\n Data: [\n {\n identifier: SAMPLE_REPO_ID,\n name: \"automation-hub\",\n },\n ],\n },\n },\n];\n\nconst REPOS_BULK_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"Fetch repositories for multiple connections in a single call\",\n Command:\n \"uip aops connection repos-bulk --ids f1e2d3c4-0000-0000-0000-000000000001,f1e2d3c4-0000-0000-0000-000000000002\",\n Output: {\n Code: \"ConnectionReposBulk\",\n Data: {\n [SAMPLE_CONNECTION_ID]: [\n { identifier: SAMPLE_REPO_ID, name: \"automation-hub\" },\n ],\n },\n },\n },\n];\n\nconst PROJECTS_EXAMPLES: CommandExample[] = [\n {\n Description: \"List automation projects discovered in a connection\",\n Command:\n \"uip aops connection projects f1e2d3c4-0000-0000-0000-000000000001\",\n Output: {\n Code: \"ConnectionProjects\",\n Data: [\n {\n ProjectId: \"9999dddd-0000-0000-0000-000000000001\",\n Name: \"Invoice Processing\",\n Description: \"Daily invoice ingest\",\n Type: \"Process\",\n Repository: \"automation-hub\",\n },\n ],\n },\n },\n {\n Description:\n \"Filter to a specific repository, sorted by name ascending\",\n Command:\n \"uip aops connection projects f1e2d3c4-0000-0000-0000-000000000001 --repository-ids abcd1234-0000-0000-0000-000000000001 --sort-by name --sort-order asc\",\n Output: { Code: \"ConnectionProjects\", Data: [] },\n },\n];\n\nconst SOLUTIONS_EXAMPLES: CommandExample[] = [\n {\n Description: \"List Studio solutions discovered in a connection\",\n Command:\n \"uip aops connection solutions f1e2d3c4-0000-0000-0000-000000000001\",\n Output: {\n Code: \"ConnectionSolutions\",\n Data: { result: [] },\n },\n },\n];\n\nconst AZURE_PROJECTS_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"List Azure DevOps projects reachable through an Azure connection\",\n Command:\n \"uip aops connection azure-projects f1e2d3c4-0000-0000-0000-000000000001\",\n Output: {\n Code: \"ConnectionAzureProjects\",\n Data: [],\n },\n },\n];\n\nexport const registerConnectionCommand = (program: Command): void => {\n const connection = program\n .command(\"connection\")\n .description(\n [\n \"Manage SourceControl connections — the per-tenant link to a Git provider\",\n \"(GitHub or Azure DevOps) that StudioAdmin uses to discover repositories,\",\n \"automation projects and solutions.\",\n \"\",\n \"Connection creation is currently performed via the StudioAdmin UI; this CLI\",\n \"consumes already-provisioned connections by identifier. Use `connection list`\",\n \"to discover identifiers, then `connection sync --wait` to refresh them.\",\n ].join(\"\\n\"),\n );\n\n // --- list ---\n withLoginValidity(\n connection\n .command(\"list\")\n .description(\n [\n \"List all SourceControl connections visible to the current user.\",\n \"Returns connection identifier, display name, provider type and link metadata.\",\n \"Use the returned `identifier` with the other `connection`, `repo` and `project`\",\n \"commands.\",\n ].join(\"\\n\"),\n )\n .examples(LIST_EXAMPLES),\n ).trackedAction(processContext, async (options: BaseOptions) => {\n const api = await getScApi(ConnectionsApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.connectionsGetConnections(),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify you have access to the SourceControl service. Try 'uip login' to refresh credentials.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ConnectionList\",\n Data: result,\n });\n });\n\n // --- state ---\n withLoginValidity(\n connection\n .command(\"state\")\n .description(\n [\n \"Fetch the current sync state for connections.\",\n \"\",\n \"Returns one row per connection with `syncingInProgress`, `syncState`\",\n \"(Success/Fail/Broken) and `lastSyncDate`. Use `--connection <id>` to filter\",\n \"the response client-side to a single row.\",\n ].join(\"\\n\"),\n )\n .option(\n \"--connection <id>\",\n \"Filter to a single connection identifier (client-side filter — the API returns all rows).\",\n )\n .examples(STATE_EXAMPLES),\n ).trackedAction(processContext, async (options: StateOptions) => {\n const api = await getScApi(ConnectionsApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.connectionsGetConnectionsStates(),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify you have access to the SourceControl service.\",\n });\n processContext.exit(1);\n return;\n }\n\n const filtered = options.connection\n ? result.filter((row) => row.identifier === options.connection)\n : result;\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ConnectionState\",\n Data: filtered,\n });\n });\n\n // --- sync ---\n withLoginValidity(\n connection\n .command(\"sync\")\n .description(\n [\n \"Trigger a sync for a connection (or every connection if no id is given).\",\n \"\",\n \"The endpoint returns 202 immediately. Pass `--wait` to poll the state\",\n \"endpoint until the sync settles to a terminal state (Success / Fail / Broken).\",\n \"Without `--wait`, control returns as soon as the sync is queued.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"[connection-id]\",\n \"Connection identifier from `connection list`. Omit to sync every connection in the org.\",\n )\n .option(\n \"--wait\",\n \"Poll until the sync reaches a terminal state instead of returning immediately.\",\n )\n .option(\n \"--timeout <ms>\",\n \"Maximum time (milliseconds) to wait when --wait is set. Defaults to 300000 (5 minutes).\",\n parsePositiveInt(\"--timeout\"),\n )\n .option(\n \"--poll-interval <ms>\",\n \"Interval (milliseconds) between state polls. Defaults to 2000.\",\n parsePositiveInt(\"--poll-interval\"),\n )\n .examples(SYNC_EXAMPLES),\n ).trackedAction(\n processContext,\n async (connectionId: string | undefined, options: SyncOptions) => {\n const api = await getScApi(ConnectionsApi, options);\n if (!api) return;\n\n const target = connectionId\n ? `connection ${connectionId}`\n : \"all connections\";\n logger.info(`Triggering sync for ${target}...`);\n\n const triggerCall = connectionId\n ? api.connectionsSyncConnection({\n connectionIdentifier: connectionId,\n })\n : api.connectionsSyncConnections();\n\n const [error] = await catchError(triggerCall);\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions: connectionId\n ? \"Check the connection id with 'uip aops connection list'.\"\n : \"Verify SourceControl access and try again.\",\n });\n processContext.exit(1);\n return;\n }\n\n const triggeredAtMs = Date.now();\n const triggeredAt = new Date(triggeredAtMs).toLocaleString();\n\n if (!options.wait) {\n logger.info(\n `✓ Sync queued at ${triggeredAt}. Re-run with --wait to block on completion, or use 'uip aops connection state' to inspect.`,\n );\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ConnectionSyncStarted\",\n Data: {\n ...(connectionId\n ? { identifier: connectionId }\n : { scope: \"all\" }),\n hint: \"Sync queued. Re-run with --wait to block until it completes, or call 'uip aops connection state' to inspect progress.\",\n },\n });\n return;\n }\n\n logger.info(\n `✓ Sync queued at ${triggeredAt}. Polling until terminal state...`,\n );\n\n const pollResult = connectionId\n ? await pollConnectionSync(api, connectionId, {\n pollIntervalMs: options.pollInterval,\n timeoutMs: options.timeout,\n triggeredAtMs,\n })\n : await pollAllConnectionsSync(api, {\n pollIntervalMs: options.pollInterval,\n timeoutMs: options.timeout,\n triggeredAtMs,\n });\n\n if (pollResult.outcome !== PollOutcome.Completed) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Sync did not settle in time (${pollResult.outcome}).`,\n Instructions:\n \"Re-run with a larger --timeout, or call 'uip aops connection state' to inspect the partial state.\",\n });\n processContext.exit(1);\n return;\n }\n\n const data = pollResult.data;\n if (!data?.succeeded) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: \"Sync settled in a non-success state.\",\n Instructions:\n \"Inspect the failureReason on the returned row(s) and retry, or recreate the connection in StudioAdmin.\",\n });\n processContext.exit(1);\n return;\n }\n\n logger.info(`✓ Sync settled at ${new Date().toLocaleString()}.`);\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ConnectionSynced\",\n Data: connectionId ? data.target : data.states,\n });\n },\n );\n\n // --- delete ---\n withLoginValidity(\n connection\n .command(\"delete\")\n .description(\n [\n \"Delete a SourceControl connection by identifier.\",\n \"\",\n \"Deletion is permanent — derived projects and solutions will no longer be\",\n \"discoverable through this connection. Use `connection list` first to confirm\",\n \"you have the right identifier.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<connection-id>\",\n \"Connection identifier from `connection list`.\",\n )\n .option(\n \"-y, --yes\",\n \"Confirm this irreversible operation (required; the CLI never prompts)\",\n )\n .examples(DELETE_EXAMPLES),\n ).trackedAction(\n processContext,\n async (\n connectionId: string,\n options: BaseOptions & { yes?: boolean },\n ) => {\n if (\n !requireConfirmation(\n options,\n `delete connection '${connectionId}'`,\n )\n )\n return;\n const api = await getScApi(ConnectionsApi, options);\n if (!api) return;\n\n const [error] = await catchError(\n api.connectionsDeleteConnection({\n connectionIdentifier: connectionId,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Check the connection id with 'uip aops connection list'.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ConnectionDeleted\",\n Data: { ConnectionId: connectionId },\n });\n },\n );\n\n // --- repos ---\n withLoginValidity(\n connection\n .command(\"repos\")\n .description(\n [\n \"List repositories visible through a single connection.\",\n \"\",\n \"For Azure DevOps connections, narrow the list with `--azure-projects-ids`\",\n \"(comma-separated project ids); for cross-organization Azure connections use\",\n \"`--organization-identifier` to scope to one Azure org.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<connection-id>\",\n \"Connection identifier from `connection list`.\",\n )\n .option(\n \"--azure-projects-ids <csv>\",\n \"Comma-separated Azure DevOps project identifiers (Azure connections only).\",\n )\n .option(\n \"--organization-identifier <name>\",\n \"Azure DevOps organization name (Azure connections only).\",\n )\n .examples(REPOS_EXAMPLES),\n ).trackedAction(\n processContext,\n async (connectionId: string, options: ReposOptions) => {\n const api = await getScApi(ConnectionsApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.connectionsGetRepositories({\n connectionIdentifier: connectionId,\n azureProjectsIds: options.azureProjectsIds,\n organizationIdentifier: options.organizationIdentifier,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the connection id and that the connection has finished syncing ('uip aops connection state').\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ConnectionRepos\",\n Data: result,\n });\n },\n );\n\n // --- repos-bulk ---\n withLoginValidity(\n connection\n .command(\"repos-bulk\")\n .description(\n [\n \"Fetch repositories for multiple connections in a single round-trip.\",\n \"\",\n \"Returns a map keyed by connection identifier — handy when you need a quick\",\n \"cross-connection inventory without N round-trips. Pass connection ids as a\",\n \"comma-separated list via `--ids`.\",\n ].join(\"\\n\"),\n )\n .requiredOption(\n \"--ids <csv>\",\n \"Comma-separated connection identifiers from `connection list`.\",\n )\n .examples(REPOS_BULK_EXAMPLES),\n ).trackedAction(processContext, async (options: ReposBulkOptions) => {\n const api = await getScApi(ConnectionsApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.connectionsGetRepositoriesPerConnections({\n connectionsIdentifiers: csvToArray(options.ids),\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify every id in --ids appears in 'uip aops connection list'.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ConnectionReposBulk\",\n Data: result,\n });\n });\n\n // --- projects ---\n withLoginValidity(\n connection\n .command(\"projects\")\n .description(\n [\n \"List automation projects discovered through a connection.\",\n \"\",\n \"Filters: `--repository-ids` narrows to specific repos, `--target-framework` and\",\n \"`--project-type` apply server-side filters, `--search` does substring search\",\n \"on project name. Pagination via `--offset` and `--limit` (`--offset` must be a\",\n \"multiple of `--limit`).\",\n \"\",\n \"Default `--limit` is 10. Raise it to fetch a bigger batch in one call.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<connection-id>\",\n \"Connection identifier from `connection list`.\",\n )\n .option(\n \"--repository-ids <csv>\",\n \"Comma-separated repository identifiers from `connection repos`.\",\n )\n .option(\n \"--target-framework <name>\",\n \"Server-side filter on project target framework.\",\n )\n .option(\n \"--project-type <type>\",\n \"Server-side filter on project type (e.g. Process, Library, Agent).\",\n )\n .option(\n \"--azure-projects-ids <csv>\",\n \"Comma-separated Azure DevOps project identifiers (Azure connections only).\",\n )\n .option(\n \"--organization-identifier <name>\",\n \"Azure DevOps organization name (Azure connections only).\",\n )\n .option(\n \"--sort-by <field>\",\n \"Field name to sort by (e.g. name, lastModifiedDate).\",\n )\n .option(\n \"--sort-order <asc|desc>\",\n \"Sort direction. Combine with --sort-by.\",\n )\n .option(\n \"--offset <n>\",\n \"Number of projects to skip from the start. Must be a multiple of --limit. Defaults to 0.\",\n parseNonNegativeInt(\"--offset\"),\n )\n .option(\n \"--limit <n>\",\n \"Maximum projects to return. Defaults to 10. Raise it to fetch a bigger batch in one call.\",\n parsePositiveInt(\"--limit\"),\n )\n .addOption(\n new Option(\"--skip <n>\")\n .hideHelp()\n .argParser(parseNonNegativeInt(\"--skip\")),\n )\n .addOption(\n new Option(\"--take <n>\")\n .hideHelp()\n .argParser(parsePositiveInt(\"--take\")),\n )\n .option(\n \"--search <term>\",\n \"Server-side substring filter on project name.\",\n )\n .examples(PROJECTS_EXAMPLES),\n ).trackedAction(\n processContext,\n async (connectionId: string, options: ProjectsOptions) => {\n const api = await getScApi(ConnectionsApi, options);\n if (!api) return;\n\n const pagination = resolveLimitOffsetOptions(options, {\n limit: 10,\n offset: 0,\n });\n if (pagination.error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: pagination.error.message,\n Instructions: pagination.error.instructions,\n });\n processContext.exit(1);\n return;\n }\n const take = pagination.limit;\n const skip = pagination.offset;\n if (skip % take !== 0) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `--offset (${skip}) must be a multiple of --limit (${take}) for page-based pagination.`,\n Instructions:\n \"Use --offset values like 0, --limit, 2*--limit, etc.\",\n });\n processContext.exit(1);\n return;\n }\n\n const [error, result] = await catchError(\n api.connectionsGetProjects({\n connectionIdentifier: connectionId,\n repositoryIds: options.repositoryIds,\n targetFramework: options.targetFramework,\n projectType: options.projectType,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n azureProjectsIds: options.azureProjectsIds,\n organizationIdentifier: options.organizationIdentifier,\n pageIndex: skip / take,\n pageSize: take,\n searchTerm: options.search,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the connection id and that it has been synced ('uip aops connection sync --wait').\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ConnectionProjects\",\n Data: (result.result ?? []).map(mapProjectRow),\n });\n },\n );\n\n // --- solutions ---\n withLoginValidity(\n connection\n .command(\"solutions\")\n .description(\n [\n \"List Studio solutions discovered through a connection.\",\n \"\",\n \"Pagination via `--offset` / `--limit` (`--offset` must be a multiple of `--limit`);\",\n \"`--search` does substring search on solution name.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<connection-id>\",\n \"Connection identifier from `connection list`.\",\n )\n .option(\n \"--offset <n>\",\n \"Number of solutions to skip from the start. Must be a multiple of --limit. Defaults to 0.\",\n parseNonNegativeInt(\"--offset\"),\n )\n .option(\n \"--limit <n>\",\n \"Maximum solutions to return. Defaults to 20.\",\n parsePositiveInt(\"--limit\"),\n )\n .addOption(\n new Option(\"--skip <n>\")\n .hideHelp()\n .argParser(parseNonNegativeInt(\"--skip\")),\n )\n .addOption(\n new Option(\"--take <n>\")\n .hideHelp()\n .argParser(parsePositiveInt(\"--take\")),\n )\n .option(\n \"--search <term>\",\n \"Server-side substring filter on solution name.\",\n )\n .examples(SOLUTIONS_EXAMPLES),\n ).trackedAction(\n processContext,\n async (connectionId: string, options: SolutionsOptions) => {\n const api = await getScApi(ConnectionsApi, options);\n if (!api) return;\n\n const pagination = resolveLimitOffsetOptions(options, {\n limit: 20,\n offset: 0,\n });\n if (pagination.error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: pagination.error.message,\n Instructions: pagination.error.instructions,\n });\n processContext.exit(1);\n return;\n }\n const take = pagination.limit;\n const skip = pagination.offset;\n if (skip % take !== 0) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `--offset (${skip}) must be a multiple of --limit (${take}) for page-based pagination.`,\n Instructions:\n \"Use --offset values like 0, --limit, 2*--limit, etc.\",\n });\n processContext.exit(1);\n return;\n }\n\n const [error, result] = await catchError(\n api.connectionsGetSolutions({\n connectionIdentifier: connectionId,\n pageIndex: skip / take,\n pageSize: take,\n searchTerm: options.search,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the connection id and that it has been synced ('uip aops connection sync --wait').\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ConnectionSolutions\",\n Data: result,\n });\n },\n );\n\n // --- azure-projects ---\n withLoginValidity(\n connection\n .command(\"azure-projects\")\n .description(\n [\n \"List Azure DevOps projects reachable through an Azure connection.\",\n \"\",\n \"Only meaningful for Azure DevOps connections; GitHub connections will return\",\n \"an empty list. Pass `--organization-identifier` to scope to one Azure org\",\n \"when the connection spans multiple.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<connection-id>\",\n \"Azure connection identifier from `connection list`.\",\n )\n .option(\n \"--organization-identifier <name>\",\n \"Azure DevOps organization name to scope to.\",\n )\n .examples(AZURE_PROJECTS_EXAMPLES),\n ).trackedAction(\n processContext,\n async (connectionId: string, options: AzureProjectsOptions) => {\n const api = await getScApi(ConnectionsApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.connectionsGetAzureProjects({\n connectionIdentifier: connectionId,\n organizationIdentifier: options.organizationIdentifier,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the connection id and that the connection is an Azure DevOps connection.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ConnectionAzureProjects\",\n Data: result,\n });\n },\n );\n};\n",
|
|
125
|
-
"import {\n PipelineExecutionState,\n PipelineExecutionsApi,\n} from \"@uipath/cicd-sdk\";\nimport {\n type CommandExample,\n catchError,\n extractErrorMessage,\n logger,\n OutputFormatter,\n PollOutcome,\n pollUntil,\n processContext,\n RESULTS,\n} from \"@uipath/common\";\nimport type { Command } from \"commander\";\nimport {\n type BaseOptions,\n getCicdApi,\n parsePositiveInt,\n withLoginValidity,\n} from \"./_shared/get-api.js\";\n\nconst SAMPLE_EXECUTION_ID = \"22222222-3333-4444-5555-666666666666\";\n\nconst TERMINAL_STATES = new Set<string>([\n PipelineExecutionState.Faulted,\n PipelineExecutionState.Successful,\n PipelineExecutionState.Stopped,\n]);\n\nconst isTerminal = (state: string | undefined): boolean =>\n state !== undefined && TERMINAL_STATES.has(state);\n\ninterface BaseExecutionOptions extends BaseOptions {\n jobKey?: string;\n}\n\ninterface GetExecutionOptions extends BaseOptions {\n withArguments?: boolean;\n}\n\n/**\n * Best-effort parse of JobDetailsDto.inputArguments. Orchestrator serializes\n * input arguments as a JSON string. Returns the parsed object on success, the\n * raw string if parsing fails, or null if the field is empty.\n */\nconst parseInputArguments = (raw: string | null | undefined): unknown => {\n if (raw === null || raw === undefined || raw === \"\") return null;\n try {\n return JSON.parse(raw);\n } catch {\n return raw;\n }\n};\n\ninterface LogsOptions extends BaseExecutionOptions {\n follow?: boolean;\n limit?: number;\n pollInterval?: number;\n timeout?: number;\n}\n\ninterface StopOptions extends BaseExecutionOptions {\n wait?: boolean;\n pollInterval?: number;\n timeout?: number;\n}\n\nconst GET_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"Fetch execution metadata, also surfacing the runtime input arguments\",\n Command:\n \"uip aops execution get 22222222-3333-4444-5555-666666666666 --with-arguments\",\n Output: {\n Code: \"ExecutionGet\",\n Data: {\n identifier: SAMPLE_EXECUTION_ID,\n state: \"Successful\",\n inputArguments: { ArgumentName: \"value\" },\n },\n },\n },\n {\n Description: \"Fetch execution metadata by execution id\",\n Command: \"uip aops execution get 22222222-3333-4444-5555-666666666666\",\n Output: {\n Code: \"ExecutionGet\",\n Data: { identifier: SAMPLE_EXECUTION_ID, state: \"Running\" },\n },\n },\n];\n\nconst LOGS_EXAMPLES: CommandExample[] = [\n {\n Description: \"Dump the current logs for an execution\",\n Command: \"uip aops execution logs 22222222-3333-4444-5555-666666666666\",\n Output: { Code: \"ExecutionLogs\", Data: { result: [] } },\n },\n {\n Description:\n \"Stream logs incrementally until the execution reaches a terminal state\",\n Command:\n \"uip aops execution logs 22222222-3333-4444-5555-666666666666 --follow\",\n Output: {\n Code: \"ExecutionLogsFollowed\",\n Data: { state: \"Successful\", lineCount: 42 },\n },\n },\n];\n\nconst DETAILS_EXAMPLES: CommandExample[] = [\n {\n Description: \"Fetch the underlying job-execution detail document\",\n Command:\n \"uip aops execution details 22222222-3333-4444-5555-666666666666\",\n Output: { Code: \"ExecutionDetails\", Data: {} },\n },\n];\n\nconst STOP_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"Request a stop. Idempotent — already-terminal executions return their current state.\",\n Command: \"uip aops execution stop 22222222-3333-4444-5555-666666666666\",\n Output: {\n Code: \"ExecutionStopRequested\",\n Data: { identifier: SAMPLE_EXECUTION_ID, state: \"Stopping\" },\n },\n },\n {\n Description: \"Stop and wait for the execution to settle to terminal\",\n Command:\n \"uip aops execution stop 22222222-3333-4444-5555-666666666666 --wait\",\n Output: {\n Code: \"ExecutionStopped\",\n Data: { identifier: SAMPLE_EXECUTION_ID, state: \"Stopped\" },\n },\n },\n];\n\n/**\n * Resolve the jobKey for an execution. Caller passes the executionId positional\n * (may be undefined) and the `--job-key` override (may be undefined). The\n * override short-circuits to a single jobKey lookup; otherwise we look the\n * execution up by id and pull the jobKey off the response. If both are\n * missing we emit a structured Failure. Returns `null` on any failure path —\n * callers should bail out without further work.\n */\nasync function resolveJobKey(\n api: PipelineExecutionsApi,\n executionId: string | undefined,\n override: string | undefined,\n): Promise<{ jobKey: string; state?: string } | null> {\n if (override) return { jobKey: override };\n if (!executionId) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: \"Either <execution-id> or --job-key must be provided.\",\n Instructions:\n \"Pass the execution id as the positional argument, or pass --job-key to skip the executionId lookup.\",\n });\n processContext.exit(1);\n return null;\n }\n const [error, exec] = await catchError(\n api.pipelineExecutionsGetPipelineExecution({\n pipelineExecutionIdentifier: executionId,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the execution id with 'uip aops pipeline executions <pipeline-id>', or pass --job-key directly to skip the lookup.\",\n });\n processContext.exit(1);\n return null;\n }\n if (!exec?.identifier) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Execution ${executionId} not found.`,\n Instructions:\n \"Verify the execution id. Use 'uip aops pipeline executions <pipeline-id>' to list valid ids, or pass --job-key directly to skip the lookup.\",\n });\n processContext.exit(1);\n return null;\n }\n if (!exec.jobExecutionIdentifier) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: \"Execution has no job-execution identifier yet.\",\n Instructions:\n \"The pipeline run is queued but a runner has not picked it up. Retry shortly, or pass --job-key directly if you have it.\",\n });\n processContext.exit(1);\n return null;\n }\n return { jobKey: exec.jobExecutionIdentifier, state: exec.state };\n}\n\nexport const registerExecutionCommand = (program: Command): void => {\n const execution = program\n .command(\"execution\")\n .description(\n [\n \"Inspect and control pipeline executions — `get`, `logs --follow`, `details`,\",\n \"`stop`.\",\n \"\",\n \"All non-`get` verbs accept either a `<execution-id>` (the CLI looks up the\",\n \"underlying jobKey for you) or `--job-key <key>` to skip the lookup when you\",\n \"already have it. The `get` verb is keyed by executionId only.\",\n ].join(\"\\n\"),\n );\n\n // --- get ---\n withLoginValidity(\n execution\n .command(\"get\")\n .description(\n [\n \"Fetch a pipeline execution's metadata by execution id.\",\n \"\",\n \"Returns the PipelineExecutionDto — state, run mode, job-execution id, commit\",\n \"info, timing. Use the returned `jobExecutionIdentifier` as `--job-key` for\",\n \"`logs` / `details` / `stop` if you want to skip the auto-lookup.\",\n \"\",\n \"Pass `--with-arguments` to also include the runtime input arguments the\",\n \"pipeline ran with (sourced from JobDetailsDto.inputArguments). One extra\",\n \"round-trip.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<execution-id>\",\n \"Pipeline execution identifier (from `pipeline executions <pipeline-id>`).\",\n )\n .option(\n \"--with-arguments\",\n \"Also fetch the runtime input arguments from JobDetailsDto and merge them into Data as `inputArguments` (parsed JSON, or the raw string if parsing fails). Adds one extra round-trip.\",\n )\n .examples(GET_EXAMPLES),\n ).trackedAction(\n processContext,\n async (executionId: string, options: GetExecutionOptions) => {\n const api = await getCicdApi(PipelineExecutionsApi, options);\n if (!api) return;\n const [error, result] = await catchError(\n api.pipelineExecutionsGetPipelineExecution({\n pipelineExecutionIdentifier: executionId,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the execution id with 'uip aops pipeline executions <pipeline-id>'.\",\n });\n processContext.exit(1);\n return;\n }\n if (!result?.identifier) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Execution ${executionId} not found.`,\n Instructions:\n \"Verify the execution id. Use 'uip aops pipeline executions <pipeline-id>' to list valid ids for a pipeline.\",\n });\n processContext.exit(1);\n return;\n }\n\n let data: Record<string, unknown> = { ...result };\n if (options.withArguments) {\n if (!result.jobExecutionIdentifier) {\n logger.warn(\n \"--with-arguments: execution has no jobExecutionIdentifier yet (runner not picked up); inputArguments will be null.\",\n );\n data = { ...data, inputArguments: null };\n } else {\n const [detailsErr, details] = await catchError(\n api.pipelineExecutionsGetPipelineJobDetails({\n jobKey: result.jobExecutionIdentifier,\n }),\n );\n if (detailsErr) {\n logger.warn(\n `--with-arguments: failed to fetch job details (${await extractErrorMessage(detailsErr)}); inputArguments will be null.`,\n );\n data = { ...data, inputArguments: null };\n } else {\n data = {\n ...data,\n inputArguments: parseInputArguments(\n details?.inputArguments,\n ),\n };\n }\n }\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ExecutionGet\",\n Data: data,\n });\n },\n );\n\n // --- logs ---\n withLoginValidity(\n execution\n .command(\"logs\")\n .description(\n [\n \"Fetch logs for an execution. With `--follow`, polls until the execution\",\n \"reaches a terminal state (Successful / Faulted / Stopped) and emits a final\",\n \"summary.\",\n \"\",\n \"Without `--follow`: prints the current log slice and exits.\",\n \"With `--follow`: log lines are streamed via the logger as they arrive; the\",\n \"command's structured success Data carries the final state and the line count.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"[execution-id]\",\n \"Pipeline execution identifier (from `pipeline executions <pipeline-id>`). Required unless `--job-key` is set.\",\n )\n .option(\n \"--job-key <key>\",\n \"JobKey to use directly. Skips the executionId lookup.\",\n )\n .option(\n \"--follow\",\n \"Stream logs until the execution reaches a terminal state.\",\n )\n .option(\n \"--limit <n>\",\n \"Page size for each log fetch. Defaults to 200.\",\n parsePositiveInt(\"--limit\"),\n 200,\n )\n .option(\n \"--poll-interval <ms>\",\n \"Interval (milliseconds) between log polls when --follow is set. Defaults to 2000.\",\n parsePositiveInt(\"--poll-interval\"),\n )\n .option(\n \"--timeout <ms>\",\n \"Maximum time (milliseconds) to follow before giving up. Defaults to 1800000 (30 minutes).\",\n parsePositiveInt(\"--timeout\"),\n )\n .examples(LOGS_EXAMPLES),\n ).trackedAction(\n processContext,\n async (executionId: string | undefined, options: LogsOptions) => {\n if (options.follow && !executionId) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message:\n \"--follow requires the <execution-id> positional (state polling is executionId-keyed).\",\n Instructions:\n \"Pass the execution id as the positional, or drop --follow to drain the current log slice with --job-key alone.\",\n });\n processContext.exit(1);\n return;\n }\n const api = await getCicdApi(PipelineExecutionsApi, options);\n if (!api) return;\n const resolved = await resolveJobKey(\n api,\n executionId,\n options.jobKey,\n );\n if (!resolved) return;\n\n const limit = options.limit ?? 200;\n\n if (!options.follow) {\n const [error, result] = await catchError(\n api.pipelineExecutionsGetPipelineExecutionLogs({\n jobKey: resolved.jobKey,\n skip: 0,\n take: limit,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the executionId / --job-key and that the runner has produced log output yet.\",\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ExecutionLogs\",\n Data: result,\n });\n return;\n }\n\n // --follow: stream new lines, poll until terminal. The guard above\n // ensures executionId is set when options.follow is true; rebind to\n // a non-nullable const so TS narrows it inside the closure.\n const idForPoll = executionId as string;\n let skip = 0;\n const pollResult = await pollUntil({\n fn: async () => {\n // 1. drain logs from the current cursor.\n let drained = false;\n while (!drained) {\n const page =\n await api.pipelineExecutionsGetPipelineExecutionLogs(\n {\n jobKey: resolved.jobKey,\n skip,\n take: limit,\n },\n );\n const rows = page.result ?? [];\n for (const row of rows) {\n if (row.message) logger.info(row.message);\n }\n skip += rows.length;\n drained =\n page.isLastBatch !== false || rows.length === 0;\n }\n // 2. check execution state.\n const exec =\n await api.pipelineExecutionsGetPipelineExecution({\n pipelineExecutionIdentifier: idForPoll,\n });\n return { state: exec.state, lineCount: skip };\n },\n until: (r) => isTerminal(r.state),\n getStatus: (r) => r.state ?? \"Unknown\",\n intervalMs: options.pollInterval ?? 2_000,\n timeoutMs: options.timeout ?? 30 * 60 * 1_000,\n label: `execution ${idForPoll}`,\n logPrefix: \"cicd logs\",\n });\n\n if (pollResult.outcome !== PollOutcome.Completed) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Did not reach a terminal state in time (${pollResult.outcome}).`,\n Instructions:\n \"Re-run with a larger --timeout, or call 'uip aops execution get <execution-id>' to inspect the partial state.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ExecutionLogsFollowed\",\n Data: {\n executionId,\n state: pollResult.data?.state,\n lineCount: pollResult.data?.lineCount ?? skip,\n },\n });\n },\n );\n\n // --- details ---\n withLoginValidity(\n execution\n .command(\"details\")\n .description(\n [\n \"Fetch the underlying job-execution detail document for an execution.\",\n \"\",\n \"Returns the JobDetailsDto — robot, machine, folder, queue context. Useful\",\n \"when triaging a failure to see which runner / where it ran.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"[execution-id]\",\n \"Pipeline execution identifier (from `pipeline executions <pipeline-id>`). Required unless `--job-key` is set.\",\n )\n .option(\n \"--job-key <key>\",\n \"JobKey to use directly. Skips the executionId lookup.\",\n )\n .examples(DETAILS_EXAMPLES),\n ).trackedAction(\n processContext,\n async (\n executionId: string | undefined,\n options: BaseExecutionOptions,\n ) => {\n const api = await getCicdApi(PipelineExecutionsApi, options);\n if (!api) return;\n const resolved = await resolveJobKey(\n api,\n executionId,\n options.jobKey,\n );\n if (!resolved) return;\n const [error, result] = await catchError(\n api.pipelineExecutionsGetPipelineJobDetails({\n jobKey: resolved.jobKey,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the executionId / --job-key with 'uip aops execution get <execution-id>'.\",\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ExecutionDetails\",\n Data: result,\n });\n },\n );\n\n // --- stop ---\n withLoginValidity(\n execution\n .command(\"stop\")\n .description(\n [\n \"Request a stop on a pipeline execution.\",\n \"\",\n \"**Idempotent.** Calling stop on an already-terminal execution returns the\",\n \"current state without erroring. With `--wait`, the command polls until the\",\n \"execution settles to terminal (Stopped / Faulted / Successful) and reports\",\n \"the final state in success Data.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"[execution-id]\",\n \"Pipeline execution identifier (from `pipeline executions <pipeline-id>`). Required unless `--job-key` is set.\",\n )\n .option(\n \"--job-key <key>\",\n \"JobKey to use directly. Skips the executionId lookup.\",\n )\n .option(\n \"--wait\",\n \"Poll until the execution reaches a terminal state instead of returning immediately.\",\n )\n .option(\n \"--poll-interval <ms>\",\n \"Interval (milliseconds) between state polls when --wait is set. Defaults to 2000.\",\n parsePositiveInt(\"--poll-interval\"),\n )\n .option(\n \"--timeout <ms>\",\n \"Maximum time (milliseconds) to wait when --wait is set. Defaults to 300000 (5 minutes).\",\n parsePositiveInt(\"--timeout\"),\n )\n .examples(STOP_EXAMPLES),\n ).trackedAction(\n processContext,\n async (executionId: string | undefined, options: StopOptions) => {\n if (options.wait && !executionId) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message:\n \"--wait requires the <execution-id> positional (state polling is executionId-keyed).\",\n Instructions:\n \"Pass the execution id as the positional, or drop --wait to issue stop with --job-key alone.\",\n });\n processContext.exit(1);\n return;\n }\n const api = await getCicdApi(PipelineExecutionsApi, options);\n if (!api) return;\n const resolved = await resolveJobKey(\n api,\n executionId,\n options.jobKey,\n );\n if (!resolved) return;\n\n // Idempotency: if the execution is already terminal, skip the stop call\n // and just report the state. The pre-check needs an executionId — when\n // the caller only passed --job-key we let the stop call itself handle\n // the no-op (the endpoint is idempotent).\n let currentState = resolved.state;\n if (currentState === undefined && executionId) {\n const [, exec] = await catchError(\n api.pipelineExecutionsGetPipelineExecution({\n pipelineExecutionIdentifier: executionId,\n }),\n );\n currentState = exec?.state;\n }\n if (isTerminal(currentState)) {\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ExecutionAlreadyTerminal\",\n Data: {\n ...(executionId ? { identifier: executionId } : {}),\n jobKey: resolved.jobKey,\n state: currentState,\n },\n });\n return;\n }\n\n const [stopErr] = await catchError(\n api.pipelineExecutionsStopPipelineJobExecution({\n jobKey: resolved.jobKey,\n }),\n );\n if (stopErr) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(stopErr),\n Instructions:\n \"Verify the executionId / --job-key and that the current user holds Pipelines.Run on the active runtime environment.\",\n });\n processContext.exit(1);\n return;\n }\n\n if (!options.wait) {\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ExecutionStopRequested\",\n Data: {\n ...(executionId ? { identifier: executionId } : {}),\n jobKey: resolved.jobKey,\n state: \"Stopping\",\n },\n });\n return;\n }\n\n // Guarded above: options.wait implies executionId is set.\n const idForPoll = executionId as string;\n const pollResult = await pollUntil({\n fn: async () =>\n api.pipelineExecutionsGetPipelineExecution({\n pipelineExecutionIdentifier: idForPoll,\n }),\n until: (exec) => isTerminal(exec.state),\n getStatus: (exec) => exec.state ?? \"Unknown\",\n intervalMs: options.pollInterval ?? 2_000,\n timeoutMs: options.timeout ?? 5 * 60 * 1_000,\n label: `execution ${idForPoll}`,\n logPrefix: \"cicd stop\",\n });\n\n if (pollResult.outcome !== PollOutcome.Completed) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Did not settle to terminal in time (${pollResult.outcome}).`,\n Instructions:\n \"Re-run with a larger --timeout, or call 'uip aops execution get <execution-id>' to inspect the partial state.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ExecutionStopped\",\n Data: {\n identifier: idForPoll,\n state: pollResult.data?.state,\n },\n });\n },\n );\n};\n",
|
|
126
|
-
"import type { PipelineExecutionDto } from \"@uipath/cicd-sdk\";\n\n/**\n * Curated row shape used by `pipeline executions` and `pipeline executions-bulk`.\n *\n * Hand-picked from PipelineExecutionDto so the default `--output table` view\n * stays legible and the ExecutionId column survives without truncation. User\n * (firstName/lastName/userIdentifier) is intentionally omitted from the list\n * view — drill into a single execution with `execution get <executionId>`\n * for the full DTO including triggering user, run mode, failure code, and\n * the underlying jobExecutionIdentifier.\n */\nexport interface ExecutionRow {\n ExecutionId: string;\n BuildNumber: string;\n CommitRef: string;\n State: string;\n EnqueuedAt: string;\n EndedAt: string;\n}\n\nconst safeString = (value: string | null | undefined): string => value ?? \"\";\n\nconst toIso = (d: Date | string | null | undefined): string => {\n if (!d) return \"\";\n if (d instanceof Date) return d.toISOString();\n return String(d);\n};\n\nexport const mapExecutionRow = (e: PipelineExecutionDto): ExecutionRow => ({\n ExecutionId: safeString(e.identifier),\n BuildNumber: e.buildNumber !== undefined ? String(e.buildNumber) : \"\",\n CommitRef: safeString(e.commitReference),\n State: safeString(e.state),\n EnqueuedAt: toIso(e.enqueueDate),\n EndedAt: toIso(e.endDate),\n});\n",
|
|
127
|
-
"import {\n catchError,\n OutputFormatter,\n processContext,\n RESULTS,\n} from \"@uipath/common\";\nimport { getFileSystem } from \"@uipath/filesystem\";\n\ninterface LoadError {\n message: string;\n instructions: string;\n}\n\n/**\n * Read and JSON-parse a file. Emits a structured error and returns `null` on\n * failure — callers should bail out without further work.\n */\nexport const loadJsonFile = async <T>(\n file: string,\n contractName: string,\n): Promise<T | null> => {\n const fs = getFileSystem();\n const [readErr, content] = await catchError(fs.readFile(file, \"utf-8\"));\n if (readErr || content === null) {\n return emit({\n message: readErr?.message ?? `File not found: ${file}`,\n instructions: `Verify the file exists at '${file}' and is readable.`,\n });\n }\n const [parseErr, parsed] = catchError(() => JSON.parse(content) as T);\n if (parseErr) {\n return emit({\n message: parseErr.message,\n instructions: `The file must be valid JSON conforming to ${contractName}.`,\n });\n }\n return parsed;\n};\n\nconst emit = <T>(err: LoadError): T | null => {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: err.message,\n Instructions: err.instructions,\n });\n processContext.exit(1);\n return null;\n};\n",
|
|
128
|
-
"import type { PipelineDto } from \"@uipath/cicd-sdk\";\n\n/**\n * Curated row shape used by `pipeline list`.\n *\n * Hand-picked from PipelineDto so the default `--output table` view stays\n * legible and the PipelineId column survives without truncation. Branch is\n * intentionally omitted from this view — it tends to repeat across rows and\n * eats column width that's better spent on the id. Drill into a single\n * pipeline with `pipeline get --identifier <id>` for the full DTO.\n *\n * `LastRunState` and `LastRunEnd` flatten the nested\n * `latestPipelineExecution` object so the table has answers to \"did the last\n * run succeed?\" and \"when did it finish?\" without rendering a sub-object.\n */\nexport interface PipelineRow {\n PipelineId: string;\n Name: string;\n Repository: string;\n LastRunState: string;\n LastRunEnd: string;\n}\n\nconst safeString = (value: string | null | undefined): string => value ?? \"\";\n\nconst repositoryLabel = (p: PipelineDto): string =>\n safeString(p.repositoryName) || safeString(p.repositoryUrl);\n\nconst lastRunEnd = (p: PipelineDto): string => {\n const endDate = p.latestPipelineExecution?.endDate;\n if (!endDate) return \"\";\n if (endDate instanceof Date) return endDate.toISOString();\n return String(endDate);\n};\n\nexport const mapPipelineRow = (p: PipelineDto): PipelineRow => ({\n PipelineId: safeString(p.identifier),\n Name: safeString(p.name),\n Repository: repositoryLabel(p),\n LastRunState: safeString(p.latestPipelineExecution?.state),\n LastRunEnd: lastRunEnd(p),\n});\n",
|
|
129
|
-
"import type { PipelineProcessDto } from \"@uipath/cicd-sdk\";\n\n/**\n * Curated row shape used by `pipeline processes`.\n *\n * Hand-picked from PipelineProcessDto so the default `--output table` view\n * stays legible and the ProcessId column survives without truncation. The\n * verbose argument fields (`arguments`, `inputArguments`) and the low-signal\n * `feedId` are intentionally dropped — drill into a single process with\n * `pipeline process --identifier <id>` for the full DTO.\n */\nexport interface ProcessRow {\n ProcessId: string;\n Name: string;\n Description: string;\n Package: string;\n Version: string;\n}\n\nconst safeString = (value: string | null | undefined): string => value ?? \"\";\n\nconst DESCRIPTION_MAX = 100;\n\n/** Collapse internal whitespace and truncate at 100 chars with an ellipsis. */\nconst compactDescription = (raw: string | null | undefined): string => {\n const collapsed = safeString(raw).replace(/\\s+/g, \" \").trim();\n if (collapsed.length <= DESCRIPTION_MAX) return collapsed;\n return `${collapsed.slice(0, DESCRIPTION_MAX - 1)}…`;\n};\n\nexport const mapProcessRow = (p: PipelineProcessDto): ProcessRow => ({\n ProcessId: safeString(p.identifier),\n Name: safeString(p.name),\n Description: compactDescription(p.description),\n Package: safeString(p.packageIdentifier),\n Version: safeString(p.packageVersion),\n});\n",
|
|
130
|
-
"import type { EditPipelineDto, PipelineDto } from \"@uipath/cicd-sdk\";\n\n/**\n * Map a `PipelineDto` (returned by `pipeline get`) into the `EditPipelineDto`\n * shape (consumed by `pipeline update`).\n *\n * Positive mapper: only fields present on `EditPipelineDto` are copied over.\n * Server-only fields on `PipelineDto` (lastModified, repository binding, project\n * binding, latestPipelineExecution, etc.) are intentionally omitted so the\n * resulting file can be passed back into `pipeline update --file` as-is.\n *\n * Field list mirrors `EditPipelineDto`. If the SDK regenerates and adds a new\n * editable field, this picker must be updated explicitly — that surfaces as a\n * test failure rather than silently leaking unrelated fields through.\n */\nexport const toEditPipelineDto = (dto: PipelineDto): EditPipelineDto => ({\n identifier: dto.identifier,\n name: dto.name,\n runMode: dto.runMode,\n description: dto.description,\n arguments: dto.arguments,\n});\n",
|
|
131
|
-
"import {\n catchError,\n OutputFormatter,\n processContext,\n RESULTS,\n} from \"@uipath/common\";\nimport { getFileSystem } from \"@uipath/filesystem\";\n\n/**\n * JSON-stringify `data` and write it to `path` (UTF-8, 2-space indent).\n * Emits a structured Failure and returns `false` if the write fails — the\n * caller should bail out. Returns `true` on success.\n *\n * The remote call has already succeeded by the time we get here, so the local\n * IO error is surfaced loudly rather than silently swallowed.\n *\n * The input path is resolved to an absolute path before delegating to the\n * filesystem helper. The helper unconditionally calls `mkdir(dirname(path),\n * { recursive: true })`, and on Windows that throws `EEXIST` when dirname\n * resolves to '.' (bare filename in cwd) even with the recursive flag.\n * Absolutising the path sidesteps that edge case.\n */\nexport const writeJsonFile = async (\n path: string,\n data: unknown,\n): Promise<boolean> => {\n const fs = getFileSystem();\n const absolutePath = fs.path.resolve(path);\n const json = `${JSON.stringify(data, null, 2)}\\n`;\n const [err] = await catchError(fs.writeFile(absolutePath, json));\n if (err) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Failed to write '${path}': ${err.message}`,\n Instructions:\n \"Verify the parent directory exists, is writable, and that the path is not a directory or a read-only file.\",\n });\n processContext.exit(1);\n return false;\n }\n return true;\n};\n",
|
|
132
|
-
"import {\n type EditPipelineDto,\n PipelineApi,\n type PipelineDto,\n} from \"@uipath/cicd-sdk\";\nimport {\n type CommandExample,\n catchError,\n extractErrorMessage,\n OutputFormatter,\n processContext,\n RESULTS,\n requireConfirmation,\n} from \"@uipath/common\";\nimport type { Command } from \"commander\";\nimport { mapExecutionRow } from \"./_shared/execution-row.js\";\nimport {\n type BaseOptions,\n getCicdApi,\n parseNonNegativeInt,\n parsePositiveInt,\n withLoginValidity,\n} from \"./_shared/get-api.js\";\nimport { loadJsonFile } from \"./_shared/load-json.js\";\nimport { mapPipelineRow } from \"./_shared/pipeline-row.js\";\nimport { mapProcessRow } from \"./_shared/process-row.js\";\nimport { toEditPipelineDto } from \"./_shared/to-edit-dto.js\";\nimport { writeJsonFile } from \"./_shared/write-json-file.js\";\n\nconst SAMPLE_PIPELINE_ID = \"11111111-2222-3333-4444-555555555555\";\nconst SAMPLE_EXECUTION_ID = \"22222222-3333-4444-5555-666666666666\";\n\nconst csvToArray = (raw: string): string[] =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n\n/**\n * Pull the new execution identifier out of a pipeline-save-and-run response.\n *\n * The SDK's PipelineDto declares `latestPipelineExecution?: PipelineExecutionDto`\n * and that is what the save-and-run endpoint populates. Narrowed at runtime\n * (treating the response as `unknown`) so the SDK type doesn't have to be\n * widened with a cast. Returns `null` if the field is absent or doesn't carry\n * a string identifier.\n */\nconst readFirstExecutionId = (value: unknown): string | null => {\n if (typeof value !== \"object\" || value === null) return null;\n const latest = (value as { latestPipelineExecution?: unknown })\n .latestPipelineExecution;\n if (typeof latest !== \"object\" || latest === null) return null;\n const id = (latest as { identifier?: unknown }).identifier;\n return typeof id === \"string\" ? id : null;\n};\n\ninterface ListOptions extends BaseOptions {\n repositoryIds?: string;\n offset?: number;\n limit?: number;\n search?: string;\n}\n\ninterface SearchOptions extends BaseOptions {\n name?: string;\n prefix?: string;\n}\n\ninterface GetOptions extends BaseOptions {\n forUpdate?: boolean;\n outputFile?: string;\n}\n\ninterface FileOptions extends BaseOptions {\n file: string;\n telemetryFlowId?: string;\n}\n\ninterface ExecutionsOptions extends BaseOptions {\n offset?: number;\n limit?: number;\n}\n\ninterface ExecutionsBulkOptions extends BaseOptions {\n ids: string;\n}\n\nconst RUNTIME_ENV_INSTRUCTIONS =\n \"Verify a runtime environment is selected in the StudioAdmin UI. Mutations require Pipelines.Edit / Pipelines.Run on the active runtime environment.\";\n\nconst LIST_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"List the first page of pipelines for the active runtime environment\",\n Command: \"uip aops pipeline list\",\n Output: {\n Code: \"PipelineList\",\n Data: [\n {\n PipelineId: SAMPLE_PIPELINE_ID,\n Name: \"release-main\",\n Repository: \"automation-hub\",\n LastRunState: \"Successful\",\n LastRunEnd: \"2026-05-05T14:23:00.000Z\",\n },\n ],\n },\n },\n {\n Description: \"Page through pipelines with a search filter\",\n Command:\n 'uip aops pipeline list --search \"release\" --offset 25 --limit 25',\n Output: { Code: \"PipelineList\", Data: [] },\n },\n];\n\nconst STATE_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"Inspect the runtime-environment-wide pipelines state snapshot\",\n Command: \"uip aops pipeline state\",\n Output: { Code: \"PipelinesState\", Data: {} },\n },\n];\n\nconst PROCESSES_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"List automation processes available to bind into pipelines\",\n Command: \"uip aops pipeline processes\",\n Output: {\n Code: \"PipelineProcesses\",\n Data: [\n {\n ProcessId: \"33333333-4444-5555-6666-777777777777\",\n Name: \"InvoiceProcessing\",\n Description: \"Daily invoice ingest\",\n Package: \"MyOrg.Invoice.Processing\",\n Version: \"1.2.0\",\n },\n ],\n },\n },\n];\n\nconst PROCESS_EXAMPLES: CommandExample[] = [\n {\n Description: \"Resolve a single process by identifier\",\n Command:\n \"uip aops pipeline process 33333333-4444-5555-6666-777777777777\",\n Output: { Code: \"PipelineProcess\", Data: {} },\n },\n];\n\nconst REPOS_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"List SourceControl repositories that have at least one pipeline\",\n Command: \"uip aops pipeline repos\",\n Output: { Code: \"PipelineRepos\", Data: [] },\n },\n];\n\nconst GET_EXAMPLES: CommandExample[] = [\n {\n Description: \"Fetch a pipeline by identifier\",\n Command: \"uip aops pipeline get 11111111-2222-3333-4444-555555555555\",\n Output: {\n Code: \"PipelineGet\",\n Data: { identifier: SAMPLE_PIPELINE_ID, name: \"release-main\" },\n },\n },\n {\n Description:\n \"Fetch a pipeline in EditPipelineDto shape and write it to a file for editing\",\n Command:\n \"uip aops pipeline get 11111111-2222-3333-4444-555555555555 --for-update --output-file ./pipeline.json\",\n Output: {\n Code: \"PipelineGet\",\n Data: { identifier: SAMPLE_PIPELINE_ID, name: \"release-main\" },\n },\n },\n];\n\nconst SEARCH_EXAMPLES: CommandExample[] = [\n {\n Description: \"Find a pipeline by exact name (returns a single row)\",\n Command: 'uip aops pipeline search --name \"release-main\"',\n Output: { Code: \"PipelineSearch\", Data: {} },\n },\n {\n Description:\n \"Find every pipeline whose name starts with a prefix (array)\",\n Command: 'uip aops pipeline search --prefix \"release-\"',\n Output: { Code: \"PipelineSearch\", Data: [] },\n },\n];\n\nconst CREATE_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"Create a new pipeline from a JSON file conforming to PipelineDto\",\n Command: \"uip aops pipeline create --file ./pipeline.json\",\n Output: {\n Code: \"PipelineCreated\",\n Data: { identifier: SAMPLE_PIPELINE_ID },\n },\n },\n];\n\nconst UPDATE_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"Update an existing pipeline from a JSON file conforming to EditPipelineDto\",\n Command:\n \"uip aops pipeline update 11111111-2222-3333-4444-555555555555 --file ./pipeline-edit.json\",\n Output: {\n Code: \"PipelineUpdated\",\n Data: {\n Pipeline: {\n identifier: SAMPLE_PIPELINE_ID,\n name: \"release-main\",\n },\n },\n },\n },\n];\n\nconst DELETE_EXAMPLES: CommandExample[] = [\n {\n Description: \"Delete a pipeline by identifier\",\n Command:\n \"uip aops pipeline delete 11111111-2222-3333-4444-555555555555\",\n Output: {\n Code: \"PipelineDeleted\",\n Data: { PipelineId: SAMPLE_PIPELINE_ID },\n },\n },\n];\n\nconst RUN_EXAMPLES: CommandExample[] = [\n {\n Description: \"Trigger a pipeline run (returns immediately, 202+poll)\",\n Command: \"uip aops pipeline run 11111111-2222-3333-4444-555555555555\",\n Output: {\n Code: \"PipelineRunStarted\",\n Data: { PipelineId: SAMPLE_PIPELINE_ID },\n },\n },\n];\n\nconst SAVE_AND_RUN_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"Persist a pipeline DTO from JSON and run it; success Data carries the pipeline + first execution id\",\n Command: \"uip aops pipeline save-and-run --file ./pipeline.json\",\n Output: {\n Code: \"PipelineSavedAndRunStarted\",\n Data: {\n pipeline: { identifier: SAMPLE_PIPELINE_ID },\n executionId: SAMPLE_EXECUTION_ID,\n },\n },\n },\n];\n\nconst EXECUTIONS_EXAMPLES: CommandExample[] = [\n {\n Description: \"List executions for a pipeline\",\n Command:\n \"uip aops pipeline executions 11111111-2222-3333-4444-555555555555\",\n Output: {\n Code: \"PipelineExecutions\",\n Data: [\n {\n ExecutionId: SAMPLE_EXECUTION_ID,\n BuildNumber: \"42\",\n CommitRef: \"0123456789abcdef0123456789abcdef01234567\",\n State: \"Successful\",\n EnqueuedAt: \"2026-05-05T14:21:00.000Z\",\n EndedAt: \"2026-05-05T14:23:00.000Z\",\n },\n ],\n },\n },\n];\n\nconst EXECUTIONS_BULK_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"Fetch metadata for several pipeline executions in one call. `--ids` are execution identifiers (from `pipeline executions <pipeline-id>`), not pipeline ids.\",\n Command:\n \"uip aops pipeline executions-bulk --ids 22222222-3333-4444-5555-666666666666,33333333-4444-5555-6666-777777777777\",\n Output: { Code: \"PipelineExecutionsBulk\", Data: [] },\n },\n];\n\nexport const registerPipelineCommand = (program: Command): void => {\n const pipeline = program\n .command(\"pipeline\")\n .description(\n [\n \"Manage CICD pipelines — list, fetch, create, update, run, delete.\",\n \"\",\n \"**Important: `pipeline update <id> --file` is full-replace (HTTP PUT semantics)** and\",\n \"expects the **EditPipelineDto** shape, NOT the PipelineDto returned by `get`. Don't\",\n \"pipe `pipeline get <id> > p.json` straight into `update <id> --file p.json` without\",\n \"transforming the JSON to the edit shape first.\",\n \"\",\n \"Pipeline runs are async (HTTP 202 + poll). `run` and `save-and-run` return as soon\",\n \"as the run is queued; use `execution logs <jobKey> --follow` to track end-of-job.\",\n ].join(\"\\n\"),\n );\n\n // --- list ---\n withLoginValidity(\n pipeline\n .command(\"list\")\n .description(\n [\n \"List pipelines visible in the active runtime environment.\",\n \"\",\n \"The active runtime environment is set via the StudioAdmin UI; switch\",\n \"tenants/folders first if you don't see what you expect.\",\n \"\",\n \"Returns a curated row per pipeline — PipelineId, Name, Repository,\",\n \"LastRunState, LastRunEnd — so '--output table' stays legible. Use\",\n \"'pipeline get <pipeline-id>' for the full DTO including branch and\",\n \"project binding.\",\n \"\",\n \"Flags: '--search' filters by pipeline name, '--repository-ids' narrows\",\n \"to one or more SC repository UUIDs, '--offset' and '--limit' drive\",\n \"the cursor (--offset must be a multiple of --limit).\",\n ].join(\"\\n\"),\n )\n .option(\n \"--repository-ids <csv>\",\n \"Comma-separated SC repository UUIDs to filter on. Obtain via `uip aops connection repos`.\",\n )\n .option(\n \"--offset <n>\",\n \"Number of pipelines to skip from the start. Must be a multiple of --limit. Defaults to 0.\",\n parseNonNegativeInt(\"--offset\"),\n 0,\n )\n .option(\n \"--limit <n>\",\n \"Maximum pipelines to return. Defaults to 20.\",\n parsePositiveInt(\"--limit\"),\n 20,\n )\n .option(\n \"--search <term>\",\n \"Server-side substring filter on pipeline name.\",\n )\n .examples(LIST_EXAMPLES),\n ).trackedAction(processContext, async (options: ListOptions) => {\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n\n const limit = options.limit ?? 20;\n const offset = options.offset ?? 0;\n if (offset % limit !== 0) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `--offset (${offset}) must be a multiple of --limit (${limit}) for page-based pagination.`,\n Instructions:\n \"Use --offset values like 0, --limit, 2*--limit, etc.\",\n });\n processContext.exit(1);\n return;\n }\n\n const [error, result] = await catchError(\n api.pipelineGetPipelines({\n repositoryIds: options.repositoryIds,\n pageIndex: offset / limit,\n pageSize: limit,\n searchTerm: options.search,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions: RUNTIME_ENV_INSTRUCTIONS,\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineList\",\n Data: (result.result ?? []).map(mapPipelineRow),\n });\n });\n\n // --- state ---\n withLoginValidity(\n pipeline\n .command(\"state\")\n .description(\n [\n \"Fetch a runtime-environment-wide snapshot of pipelines state.\",\n \"\",\n \"Returns counts and roll-up state used by the StudioAdmin dashboard. Cheap\",\n \"first call to confirm the runtime environment is reachable before listing or mutating.\",\n ].join(\"\\n\"),\n )\n .examples(STATE_EXAMPLES),\n ).trackedAction(processContext, async (options: BaseOptions) => {\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const [error, result] = await catchError(\n api.pipelineGetPipelinesState(),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions: RUNTIME_ENV_INSTRUCTIONS,\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelinesState\",\n Data: result,\n });\n });\n\n // --- processes ---\n withLoginValidity(\n pipeline\n .command(\"processes\")\n .description(\n [\n \"List automation processes that pipelines can be bound to.\",\n \"\",\n \"Returns a curated row per process — ProcessId, Name, Description,\",\n \"Package, Version — so '--output table' stays legible. The verbose\",\n \"argument payloads are dropped from the list view; drill into a\",\n \"single process with 'pipeline process <process-id>' for the\",\n \"full DTO including arguments and inputArguments.\",\n \"\",\n \"Use the returned ProcessId inside the `automationProcessIdentifier`\",\n \"field of the PipelineDto JSON when authoring a pipeline.\",\n ].join(\"\\n\"),\n )\n .examples(PROCESSES_EXAMPLES),\n ).trackedAction(processContext, async (options: BaseOptions) => {\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const [error, result] = await catchError(\n api.pipelineGetPipelineProcesses(),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions: RUNTIME_ENV_INSTRUCTIONS,\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineProcesses\",\n Data: result.map(mapProcessRow),\n });\n });\n\n // --- process ---\n withLoginValidity(\n pipeline\n .command(\"process\")\n .description(\"Resolve a single automation process by identifier.\")\n .argument(\n \"<process-id>\",\n \"Process identifier from `pipeline processes`.\",\n )\n .examples(PROCESS_EXAMPLES),\n ).trackedAction(\n processContext,\n async (processId: string, options: BaseOptions) => {\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const [error, result] = await catchError(\n api.pipelineGetPipelineProcess({ identifier: processId }),\n );\n if (error) {\n // Server returns an empty body for an unknown process id, which\n // the SDK then fails to JSON-parse (SyntaxError from JSON.parse,\n // or a similar \"Unexpected end of JSON input\" message). Translate\n // those into a \"not found\" message instead of leaking the parser\n // error to the caller.\n const message =\n error instanceof SyntaxError ||\n /unexpected end of json/i.test(error.message ?? \"\")\n ? `Process ${processId} not found.`\n : await extractErrorMessage(error);\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: message,\n Instructions:\n \"Verify the process id with 'uip aops pipeline processes'.\",\n });\n processContext.exit(1);\n return;\n }\n if (!result?.identifier) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Process ${processId} not found.`,\n Instructions:\n \"Verify the process id with 'uip aops pipeline processes'.\",\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineProcess\",\n Data: result,\n });\n },\n );\n\n // --- repos ---\n withLoginValidity(\n pipeline\n .command(\"repos\")\n .description(\n \"List SourceControl repositories that have at least one pipeline.\",\n )\n .examples(REPOS_EXAMPLES),\n ).trackedAction(processContext, async (options: BaseOptions) => {\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const [error, result] = await catchError(\n api.pipelineGetPipelinesRepositories(),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions: RUNTIME_ENV_INSTRUCTIONS,\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineRepos\",\n Data: result,\n });\n });\n\n // --- get ---\n withLoginValidity(\n pipeline\n .command(\"get\")\n .description(\n [\n \"Fetch a pipeline by identifier.\",\n \"\",\n \"Returns the PipelineDto by default. Pass `--for-update` to receive the\",\n \"EditPipelineDto shape (server-only fields stripped) so the output can be\",\n \"fed straight into `pipeline update --file` without manual transformation.\",\n \"Pass `--output-file <path>` to persist the payload to a JSON file in\",\n \"addition to the structured stdout envelope.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<pipeline-id>\",\n \"Pipeline identifier from `pipeline list`.\",\n )\n .option(\n \"--for-update\",\n \"Return the EditPipelineDto shape instead of the full PipelineDto. The result is round-trip-ready for `pipeline update --file`.\",\n )\n .option(\n \"--output-file <path>\",\n \"Write the success Data payload to this file as JSON (UTF-8, 2-space indent). Stdout still emits the structured envelope.\",\n )\n .examples(GET_EXAMPLES),\n ).trackedAction(\n processContext,\n async (pipelineId: string, options: GetOptions) => {\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const [error, result] = await catchError(\n api.pipelineGetPipelineByIdentifier({ value: pipelineId }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the pipeline id with 'uip aops pipeline list'.\",\n });\n processContext.exit(1);\n return;\n }\n const data = options.forUpdate ? toEditPipelineDto(result) : result;\n if (options.outputFile) {\n const written = await writeJsonFile(options.outputFile, data);\n if (!written) return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineGet\",\n Data: data,\n });\n },\n );\n\n // --- search ---\n withLoginValidity(\n pipeline\n .command(\"search\")\n .description(\n [\n \"Find pipelines by name. Pass `--name` for an exact-match lookup (returns\",\n \"a single PipelineDto) or `--prefix` for a startsWith query (returns an array).\",\n \"\",\n \"Mutually exclusive — pass exactly one.\",\n ].join(\"\\n\"),\n )\n .option(\n \"--name <name>\",\n \"Exact pipeline name to look up. Returns a single row.\",\n )\n .option(\n \"--prefix <prefix>\",\n \"Pipeline name prefix to match. Returns every pipeline whose name starts with this prefix.\",\n )\n .examples(SEARCH_EXAMPLES),\n ).trackedAction(processContext, async (options: SearchOptions) => {\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n\n const hasName = options.name !== undefined;\n const hasPrefix = options.prefix !== undefined;\n if (hasName === hasPrefix) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message:\n \"search requires exactly one of --name or --prefix (not both, not neither).\",\n Instructions:\n \"Use --name 'exact-name' for a single row, or --prefix 'release-' for a startsWith query.\",\n });\n processContext.exit(1);\n return;\n }\n\n const call = hasName\n ? api.pipelineGetPipelineByName({ value: options.name })\n : api.pipelineGetPipelinesByPrefix({ value: options.prefix });\n\n const [error, result] = await catchError(call);\n if (error) {\n // Servers commonly return 200 + empty body for an unknown name /\n // prefix; the SDK then throws while trying to JSON-parse (or to\n // .map(...) the absent array). Translate those into a useful\n // not-found message instead of leaking the parser error.\n const message = error.message ?? \"\";\n const looksLikeNoMatch =\n error instanceof SyntaxError ||\n /unexpected end of json/i.test(message) ||\n /\\.map is not a function/i.test(message) ||\n /cannot read prop.*['\"]map['\"]/i.test(message);\n if (looksLikeNoMatch) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: hasName\n ? `Pipeline '${options.name}' not found.`\n : `No pipelines matched prefix '${options.prefix}'.`,\n Instructions: hasName\n ? \"Verify the pipeline name with 'uip aops pipeline list'.\"\n : \"Try a shorter prefix, or 'uip aops pipeline list' to enumerate visible pipelines.\",\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions: RUNTIME_ENV_INSTRUCTIONS,\n });\n processContext.exit(1);\n return;\n }\n if (\n hasName &&\n !(result as { identifier?: string } | null)?.identifier\n ) {\n // Server returned 200 with an empty/null body — treat as not found.\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Pipeline '${options.name}' not found.`,\n Instructions:\n \"Verify the pipeline name with 'uip aops pipeline list'.\",\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineSearch\",\n Data: result,\n });\n });\n\n // --- create ---\n withLoginValidity(\n pipeline\n .command(\"create\")\n .description(\n [\n \"Create a new pipeline from a JSON file conforming to PipelineDto.\",\n \"\",\n \"Do not include a server-assigned `identifier`. On success the persisted\",\n \"PipelineDto is returned with the new identifier — capture it for follow-up\",\n \"`run` / `update` / `delete` calls.\",\n ].join(\"\\n\"),\n )\n .requiredOption(\n \"--file <path>\",\n \"Path to a JSON file containing the PipelineDto to create.\",\n )\n .option(\n \"--telemetry-flow-id <id>\",\n \"Optional telemetry flow id used for server-side correlation.\",\n )\n .examples(CREATE_EXAMPLES),\n ).trackedAction(processContext, async (options: FileOptions) => {\n const dto = await loadJsonFile<PipelineDto>(\n options.file,\n \"PipelineDto\",\n );\n if (!dto) return;\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const [error, result] = await catchError(\n api.pipelineSavePipeline({\n pipelineDto: dto,\n telemetryFlowId: options.telemetryFlowId,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify --file is valid JSON conforming to PipelineDto. A conflict usually means a pipeline with the same name already exists.\",\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineCreated\",\n Data: result,\n });\n });\n\n // --- update ---\n withLoginValidity(\n pipeline\n .command(\"update\")\n .description(\n [\n \"Update an existing pipeline with a JSON file conforming to **EditPipelineDto**\",\n \"(HTTP PUT — full replace).\",\n \"\",\n \"Any field omitted from the file is dropped server-side. EditPipelineDto is a\",\n \"deliberately narrower shape than PipelineDto — fields like server-assigned\",\n \"metadata are not present and don't need to be supplied. Don't blindly pipe\",\n \"`pipeline get` output here.\",\n \"\",\n \"The positional `<pipeline-id>` is authoritative. If the file's `identifier`\",\n \"is set and disagrees, the command fails; otherwise the positional is used.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<pipeline-id>\",\n \"Pipeline identifier to update. Must match the EditPipelineDto's `identifier` field if it is set.\",\n )\n .requiredOption(\n \"--file <path>\",\n \"Path to a JSON file containing the EditPipelineDto to apply.\",\n )\n .examples(UPDATE_EXAMPLES),\n ).trackedAction(\n processContext,\n async (pipelineId: string, options: FileOptions) => {\n const dto = await loadJsonFile<EditPipelineDto>(\n options.file,\n \"EditPipelineDto\",\n );\n if (!dto) return;\n if (dto.identifier && dto.identifier !== pipelineId) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Mismatch: --file declares pipeline '${dto.identifier}' but the positional id is '${pipelineId}'.`,\n Instructions:\n \"Pass the same id in both places, or remove `identifier` from the file and rely on the positional.\",\n });\n processContext.exit(1);\n return;\n }\n dto.identifier = pipelineId;\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const [error] = await catchError(\n api.pipelineUpdatePipeline({ editPipelineDto: dto }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the positional id matches an existing pipeline (use 'uip aops pipeline list') and that --file is valid JSON conforming to EditPipelineDto.\",\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineUpdated\",\n Data: { Pipeline: dto },\n });\n },\n );\n\n // --- delete ---\n withLoginValidity(\n pipeline\n .command(\"delete\")\n .description(\n [\n \"Delete a pipeline by identifier.\",\n \"\",\n \"Deletion is permanent — running executions are not auto-stopped, but new runs\",\n \"will be rejected immediately.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<pipeline-id>\",\n \"Pipeline identifier from `pipeline list`.\",\n )\n .option(\n \"-y, --yes\",\n \"Confirm this irreversible operation (required; the CLI never prompts)\",\n )\n .examples(DELETE_EXAMPLES),\n ).trackedAction(\n processContext,\n async (\n pipelineId: string,\n options: BaseOptions & { yes?: boolean },\n ) => {\n if (\n !requireConfirmation(options, `delete pipeline '${pipelineId}'`)\n )\n return;\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const [error] = await catchError(\n api.pipelineDeletePipeline({ pipelineIdentifier: pipelineId }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the pipeline id with 'uip aops pipeline list'.\",\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineDeleted\",\n Data: { PipelineId: pipelineId },\n });\n },\n );\n\n // --- run ---\n withLoginValidity(\n pipeline\n .command(\"run\")\n .description(\n [\n \"Trigger a pipeline run.\",\n \"\",\n \"Returns 202 immediately — the run is queued asynchronously. Use\",\n \"`pipeline executions <pipeline-id>` to discover the new execution id, then\",\n \"`execution logs --follow <jobKey>` to track it to terminal state.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<pipeline-id>\",\n \"Pipeline identifier from `pipeline list`.\",\n )\n .examples(RUN_EXAMPLES),\n ).trackedAction(\n processContext,\n async (pipelineId: string, options: BaseOptions) => {\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const [error] = await catchError(\n api.pipelineRunPipeline({ pipelineIdentifier: pipelineId }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the pipeline id and that the current user holds Pipelines.Run on the active runtime environment.\",\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineRunStarted\",\n Data: { PipelineId: pipelineId },\n });\n },\n );\n\n // --- save-and-run ---\n withLoginValidity(\n pipeline\n .command(\"save-and-run\")\n .description(\n [\n \"Persist a pipeline DTO from JSON and immediately run it.\",\n \"\",\n \"Returns the persisted PipelineDto. The new execution is surfaced as\",\n \"`latestPipelineExecution` on the response; its `identifier` is also\",\n \"lifted into success Data as `executionId` for downstream chaining\",\n \"(e.g. `execution logs --follow <executionId>`).\",\n ].join(\"\\n\"),\n )\n .requiredOption(\n \"--file <path>\",\n \"Path to a JSON file containing the PipelineDto to save and run.\",\n )\n .option(\n \"--telemetry-flow-id <id>\",\n \"Optional telemetry flow id used for server-side correlation.\",\n )\n .examples(SAVE_AND_RUN_EXAMPLES),\n ).trackedAction(processContext, async (options: FileOptions) => {\n const dto = await loadJsonFile<PipelineDto>(\n options.file,\n \"PipelineDto\",\n );\n if (!dto) return;\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const [error, result] = await catchError(\n api.pipelineSaveAndRunPipeline({\n pipelineDto: dto,\n telemetryFlowId: options.telemetryFlowId,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify --file is valid JSON conforming to PipelineDto and that the current user holds Pipelines.Edit + Pipelines.Run on the active runtime environment.\",\n });\n processContext.exit(1);\n return;\n }\n\n // Dig the execution id out of the persisted pipeline, if present, so AC #3\n // (\"returns the execution ID\") is satisfied without forcing the caller to\n // re-list executions. The SDK's PipelineDto does not declare `executions`,\n // so the response is treated as `unknown` and narrowed at runtime instead\n // of widened with a cast.\n const executionId = readFirstExecutionId(result);\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineSavedAndRunStarted\",\n Data: { pipeline: result, executionId },\n });\n });\n\n // --- executions ---\n withLoginValidity(\n pipeline\n .command(\"executions\")\n .description(\n [\n \"List executions for a pipeline.\",\n \"\",\n \"Returns a curated row per execution — ExecutionId, BuildNumber,\",\n \"CommitRef, State, EnqueuedAt, EndedAt — so '--output table' stays\",\n \"legible. Drill into a single execution with\",\n \"'execution get <execution-id>' for the full DTO including run mode,\",\n \"triggering user, jobExecutionIdentifier, and failure code.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<pipeline-id>\",\n \"Pipeline identifier from `pipeline list`.\",\n )\n .option(\n \"--offset <n>\",\n \"Number of executions to skip from the start. Must be a multiple of --limit. Defaults to 0.\",\n parseNonNegativeInt(\"--offset\"),\n 0,\n )\n .option(\n \"--limit <n>\",\n \"Maximum executions to return. Defaults to 20.\",\n parsePositiveInt(\"--limit\"),\n 20,\n )\n .examples(EXECUTIONS_EXAMPLES),\n ).trackedAction(\n processContext,\n async (pipelineId: string, options: ExecutionsOptions) => {\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const limit = options.limit ?? 20;\n const offset = options.offset ?? 0;\n if (offset % limit !== 0) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `--offset (${offset}) must be a multiple of --limit (${limit}) for page-based pagination.`,\n Instructions:\n \"Use --offset values like 0, --limit, 2*--limit, etc.\",\n });\n processContext.exit(1);\n return;\n }\n const [error, result] = await catchError(\n api.pipelineGetPipelineExecutions({\n pipelineIdentifier: pipelineId,\n pageIndex: offset / limit,\n pageSize: limit,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the pipeline id with 'uip aops pipeline list'.\",\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineExecutions\",\n Data: (result.result ?? []).map(mapExecutionRow),\n });\n },\n );\n\n // --- executions-bulk ---\n withLoginValidity(\n pipeline\n .command(\"executions-bulk\")\n .description(\n [\n \"Fetch metadata for several pipeline executions in a single round-trip.\",\n \"\",\n \"`--ids` is a comma-separated list of execution identifiers (from\",\n \"`pipeline executions <pipeline-id>`), not pipeline ids. Same curated\",\n \"row shape as `pipeline executions`. Drill into a single execution with\",\n \"`execution get <execution-id>` for the full DTO.\",\n ].join(\"\\n\"),\n )\n .requiredOption(\n \"--ids <csv>\",\n \"Comma-separated pipeline execution identifiers (not pipeline ids).\",\n )\n .examples(EXECUTIONS_BULK_EXAMPLES),\n ).trackedAction(processContext, async (options: ExecutionsBulkOptions) => {\n const api = await getCicdApi(PipelineApi, options);\n if (!api) return;\n const [error, result] = await catchError(\n api.pipelineGetPipelinesExecutions({\n pipelineExecutionsIdentifiers: csvToArray(options.ids),\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify each id in --ids is a real pipeline-execution identifier.\",\n });\n processContext.exit(1);\n return;\n }\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"PipelineExecutionsBulk\",\n Data: result.map(mapExecutionRow),\n });\n });\n};\n",
|
|
133
|
-
"import {\n type CommandExample,\n catchError,\n extractErrorMessage,\n logger,\n OutputFormatter,\n processContext,\n RESULTS,\n} from \"@uipath/common\";\nimport { ConnectionsApi, ProjectsApi, RepositoriesApi } from \"@uipath/sc-sdk\";\nimport { type Command, Option } from \"commander\";\nimport {\n type BaseOptions,\n getScApi,\n parseNonNegativeInt,\n parsePositiveInt,\n resolveLimitOffsetOptions,\n withLoginValidity,\n} from \"./_shared/get-api.js\";\nimport {\n mapProjectDetail,\n mapProjectRow,\n type ProjectRow,\n} from \"./_shared/project-row.js\";\n\nconst SAMPLE_PROJECT_ID = \"9999dddd-0000-0000-0000-000000000001\";\nconst SAMPLE_SHA = \"0123456789abcdef0123456789abcdef01234567\";\n\ninterface ReferenceOptions extends BaseOptions {\n projectId: string;\n reference?: string;\n}\n\ninterface GetOptions extends ReferenceOptions {\n withBranches?: boolean;\n}\n\ninterface PathOptions extends ReferenceOptions {\n path?: string;\n}\n\ninterface CommitsOptions extends BaseOptions {\n projectId: string;\n path?: string;\n branch?: string;\n offset?: number;\n limit?: number;\n skip?: number;\n take?: number;\n search?: string;\n}\n\ninterface CommitOptions extends BaseOptions {\n projectId: string;\n reference: string;\n}\n\ninterface ListOptions extends BaseOptions {\n offset?: number;\n limit?: number;\n skip?: number;\n take?: number;\n search?: string;\n targetFramework?: string;\n projectType?: string;\n connections?: string;\n}\n\nconst GET_EXAMPLES: CommandExample[] = [\n {\n Description: \"Fetch a project by id at the default branch HEAD\",\n Command:\n \"uip aops project get --project-id 9999dddd-0000-0000-0000-000000000001\",\n Output: {\n Code: \"ProjectGet\",\n Data: {\n identifier: SAMPLE_PROJECT_ID,\n name: \"Invoice Processing\",\n description: \"Daily invoice ingest\",\n type: \"Process\",\n projectVersion: \"1.2.0\",\n repository: \"automation-hub\",\n defaultBranch: \"main\",\n },\n },\n },\n {\n Description:\n \"Fetch a project and also enumerate every branch on its repository\",\n Command:\n \"uip aops project get --project-id 9999dddd-0000-0000-0000-000000000001 --with-branches\",\n Output: {\n Code: \"ProjectGet\",\n Data: {\n identifier: SAMPLE_PROJECT_ID,\n name: \"Invoice Processing\",\n repository: \"automation-hub\",\n defaultBranch: \"main\",\n availableBranches: [\"main\", \"release\", \"feature/x\"],\n },\n },\n },\n];\n\nconst FILES_EXAMPLES: CommandExample[] = [\n {\n Description: \"List files in a project at a specific reference\",\n Command:\n \"uip aops project files --project-id 9999dddd-0000-0000-0000-000000000001 --reference main\",\n Output: { Code: \"ProjectFiles\", Data: [] },\n },\n];\n\nconst CONTENT_EXAMPLES: CommandExample[] = [\n {\n Description: \"Fetch the content of a file at HEAD\",\n Command:\n \"uip aops project content --project-id 9999dddd-0000-0000-0000-000000000001 --path Main.xaml\",\n Output: {\n Code: \"ProjectFileContent\",\n Data: { content: \"<xaml…>\", encoding: \"utf-8\" },\n },\n },\n {\n Description: \"Fetch file content at a specific commit\",\n Command:\n \"uip aops project content --project-id 9999dddd-0000-0000-0000-000000000001 --path Main.xaml --reference 0123456789abcdef0123456789abcdef01234567\",\n Output: {\n Code: \"ProjectFileContent\",\n Data: { content: \"<xaml…>\", encoding: \"utf-8\" },\n },\n },\n];\n\nconst COMMITS_EXAMPLES: CommandExample[] = [\n {\n Description: \"List the most recent commits on the default branch\",\n Command:\n \"uip aops project commits --project-id 9999dddd-0000-0000-0000-000000000001\",\n Output: { Code: \"ProjectCommits\", Data: { result: [] } },\n },\n {\n Description: \"Filter commits to a path on a release branch\",\n Command:\n \"uip aops project commits --project-id 9999dddd-0000-0000-0000-000000000001 --branch release --path Main.xaml\",\n Output: { Code: \"ProjectCommits\", Data: { result: [] } },\n },\n];\n\nconst COMMIT_EXAMPLES: CommandExample[] = [\n {\n Description: \"Fetch a single commit by SHA\",\n Command:\n \"uip aops project commit --project-id 9999dddd-0000-0000-0000-000000000001 --reference 0123456789abcdef0123456789abcdef01234567\",\n Output: {\n Code: \"ProjectCommit\",\n Data: { sha: SAMPLE_SHA, message: \"Initial commit\" },\n },\n },\n];\n\nconst LIST_EXAMPLES: CommandExample[] = [\n {\n Description: \"List projects across every connection\",\n Command: \"uip aops project list\",\n Output: {\n Code: \"ProjectList\",\n Data: [\n {\n ProjectId: SAMPLE_PROJECT_ID,\n Name: \"Invoice Processing\",\n Description: \"Daily invoice ingest\",\n Type: \"Process\",\n Repository: \"automation-hub\",\n },\n ],\n },\n },\n {\n Description: \"Scope to a subset of connections with a search filter\",\n Command:\n \"uip aops project list --connections f1e2d3c4-0000-0000-0000-000000000001 --search invoice\",\n Output: { Code: \"ProjectList\", Data: [] },\n },\n];\n\nexport const registerProjectCommand = (program: Command): void => {\n const project = program\n .command(\"project\")\n .description(\n [\n \"Inspect automation projects discovered through a SourceControl connection.\",\n \"\",\n \"Verbs target a project by its SC service UUID via `--project-id <id>`.\",\n \"Discover ids with `connection projects <connection-id>`.\",\n ].join(\"\\n\"),\n );\n\n // --- list (cross-connection aggregator) ---\n withLoginValidity(\n project\n .command(\"list\")\n .description(\n [\n \"List projects across every visible SourceControl connection.\",\n \"\",\n \"By default this returns at most 10 projects per connection. Raise\",\n \"`--limit` if you want a bigger batch. Pagination via `--offset`/`--limit`\",\n \"(`--offset` must be a multiple of `--limit`); `--search` does substring\",\n \"search on project name.\",\n ].join(\"\\n\"),\n )\n .option(\n \"--connections <csv>\",\n \"Comma-separated connection identifiers to fan out to. Defaults to every visible connection.\",\n )\n .option(\n \"--target-framework <name>\",\n \"Server-side filter on project target framework.\",\n )\n .option(\n \"--project-type <type>\",\n \"Server-side filter on project type, for example Process, Library, Agent.\",\n )\n .option(\n \"--offset <n>\",\n \"Number of projects to skip per connection. Must be a multiple of --limit. Defaults to 0.\",\n parseNonNegativeInt(\"--offset\"),\n )\n .option(\n \"--limit <n>\",\n \"Maximum projects to return per connection. Defaults to 10. Raise it to fetch a bigger batch.\",\n parsePositiveInt(\"--limit\"),\n )\n .addOption(\n new Option(\"--skip <n>\")\n .hideHelp()\n .argParser(parseNonNegativeInt(\"--skip\")),\n )\n .addOption(\n new Option(\"--take <n>\")\n .hideHelp()\n .argParser(parsePositiveInt(\"--take\")),\n )\n .option(\n \"--search <term>\",\n \"Server-side substring filter on project name.\",\n )\n .examples(LIST_EXAMPLES),\n ).trackedAction(processContext, async (options: ListOptions) => {\n const connectionsApi = await getScApi(ConnectionsApi, options);\n if (!connectionsApi) return;\n\n const pagination = resolveLimitOffsetOptions(options, {\n limit: 10,\n offset: 0,\n });\n if (pagination.error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: pagination.error.message,\n Instructions: pagination.error.instructions,\n });\n processContext.exit(1);\n return;\n }\n const take = pagination.limit;\n const skip = pagination.offset;\n if (skip % take !== 0) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `--offset (${skip}) must be a multiple of --limit (${take}) for page-based pagination.`,\n Instructions:\n \"Use --offset values like 0, --limit, 2*--limit, etc.\",\n });\n processContext.exit(1);\n return;\n }\n\n let connectionIds: string[];\n if (options.connections) {\n connectionIds = options.connections\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n } else {\n const [discoverErr, discovered] = await catchError(\n connectionsApi.connectionsGetConnections(),\n );\n if (discoverErr) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(discoverErr),\n Instructions:\n \"Could not enumerate connections. Verify SourceControl access ('uip aops connection list').\",\n });\n processContext.exit(1);\n return;\n }\n connectionIds = discovered\n .map((c) => c.identifier)\n .filter((id): id is string => typeof id === \"string\");\n }\n\n if (connectionIds.length === 0) {\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ProjectList\",\n Data: [],\n });\n return;\n }\n\n const fanout = await Promise.all(\n connectionIds.map(async (connectionIdentifier) => {\n const [err, page] = await catchError(\n connectionsApi.connectionsGetProjects({\n connectionIdentifier,\n targetFramework: options.targetFramework,\n projectType: options.projectType,\n pageIndex: skip / take,\n pageSize: take,\n searchTerm: options.search,\n }),\n );\n if (err) {\n return {\n connectionIdentifier,\n error: await extractErrorMessage(err),\n rows: [] as ProjectRow[],\n };\n }\n const rows = (page.result ?? []).map(mapProjectRow);\n return { connectionIdentifier, rows };\n }),\n );\n\n // Surface per-connection failures via logger so the table row stream stays clean.\n // Errors are still observable on stderr; the success Data is just the project rows.\n let failureCount = 0;\n for (const entry of fanout) {\n if (\"error\" in entry && entry.error) {\n failureCount += 1;\n logger.warn(\n `connection ${entry.connectionIdentifier}: ${entry.error}`,\n );\n }\n }\n\n if (failureCount > 0 && failureCount === fanout.length) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `All ${failureCount} connection lookup(s) failed; no project list could be produced.`,\n Instructions:\n \"Verify SourceControl access ('uip aops connection list') or pass --connections to scope the call.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ProjectList\",\n Data: fanout.flatMap((r) => r.rows),\n });\n });\n\n // --- get ---\n withLoginValidity(\n project\n .command(\"get\")\n .description(\n [\n \"Fetch a project's metadata at a given reference, branch, tag, or SHA.\",\n \"\",\n \"Returns curated metadata. The default branch is included as a top-level\",\n \"`defaultBranch` field. Pass `--with-branches` to also fetch the full list\",\n \"of branches as `availableBranches`. The branches fetch is one extra\",\n \"round-trip, off by default.\",\n ].join(\"\\n\"),\n )\n .requiredOption(\n \"--project-id <id>\",\n \"SC service UUID for the automation project, from `connection projects`.\",\n )\n .option(\n \"--reference <ref>\",\n \"Branch name, tag, or commit SHA. Defaults to the default branch HEAD.\",\n )\n .option(\n \"--with-branches\",\n \"Also fetch the full list of branches and include them as `availableBranches`. Adds one extra round-trip.\",\n )\n .examples(GET_EXAMPLES),\n ).trackedAction(processContext, async (options: GetOptions) => {\n const api = await getScApi(ProjectsApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.projectsGetProject({\n projectIdentifier: options.projectId,\n reference: options.reference,\n }),\n );\n if (error) {\n const message =\n error instanceof SyntaxError ||\n /unexpected end of json/i.test(error.message ?? \"\")\n ? `Project ${options.projectId} not found.`\n : await extractErrorMessage(error);\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: message,\n Instructions:\n \"Verify the --project-id and that --reference points to an existing branch/tag/sha.\",\n });\n processContext.exit(1);\n return;\n }\n if (!result?.identifier) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Project ${options.projectId} not found.`,\n Instructions:\n \"Verify the --project-id and that --reference points to an existing branch/tag/sha.\",\n });\n processContext.exit(1);\n return;\n }\n\n const detail = mapProjectDetail(result);\n\n if (options.withBranches) {\n // Resolve the SC service's repo UUID. The project response's\n // `repository.identifier` is a different identifier namespace than\n // what `repositoriesGetRepositoryBranches` accepts (the SC service's\n // own UUID). Look the repo up via `connectionsGetRepositories` and\n // match by the most stable discriminator available:\n // remoteId (provider-side unique id) → cloneUrl → name.\n // Name-only matching collides across orgs/forks; remoteId and\n // cloneUrl are unique per-provider so they're preferred when set.\n const connectionId = result.connectionIdentifier;\n const targetRepo = result.repository;\n const repoLabel =\n targetRepo?.name ??\n targetRepo?.cloneUrl ??\n targetRepo?.remoteId;\n\n if (!connectionId || !repoLabel) {\n logger.warn(\n \"--with-branches: could not resolve the project's connection or repository identity; availableBranches will be empty.\",\n );\n detail.availableBranches = [];\n } else {\n const connectionsApi = await getScApi(ConnectionsApi, options);\n if (!connectionsApi) return;\n const [reposErr, repos] = await catchError(\n connectionsApi.connectionsGetRepositories({\n connectionIdentifier: connectionId,\n }),\n );\n if (reposErr) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(reposErr),\n Instructions:\n \"Could not list repositories for the project's connection. Drop --with-branches to retrieve metadata only.\",\n });\n processContext.exit(1);\n return;\n }\n\n // Try the most stable discriminator across the whole list\n // first, fall back to the next one if it didn't match.\n // Otherwise a single predicate would short-circuit on a\n // weaker (e.g. name) match before checking remoteId.\n const matchBy = (\n predicate: (r: (typeof repos)[number]) => boolean,\n ): string | undefined => repos.find(predicate)?.identifier;\n const repositoryIdentifier =\n (targetRepo?.remoteId\n ? matchBy((r) => r.remoteId === targetRepo.remoteId)\n : undefined) ??\n (targetRepo?.cloneUrl\n ? matchBy((r) => r.cloneUrl === targetRepo.cloneUrl)\n : undefined) ??\n (targetRepo?.name\n ? matchBy((r) => r.name === targetRepo.name)\n : undefined);\n if (!repositoryIdentifier) {\n logger.warn(\n `--with-branches: repository '${repoLabel}' not found in connection ${connectionId}; availableBranches will be empty.`,\n );\n detail.availableBranches = [];\n } else {\n const branchesApi = await getScApi(\n RepositoriesApi,\n options,\n );\n if (!branchesApi) return;\n const [bErr, branches] = await catchError(\n branchesApi.repositoriesGetRepositoryBranches({\n repositoryIdentifier,\n }),\n );\n if (bErr) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(bErr),\n Instructions:\n \"Could not enumerate branches for the project's repository. Drop --with-branches to retrieve metadata only.\",\n });\n processContext.exit(1);\n return;\n }\n detail.availableBranches = branches\n .map((b) => b.name)\n .filter((n): n is string => typeof n === \"string\");\n }\n }\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ProjectGet\",\n Data: detail,\n });\n });\n\n // --- files ---\n withLoginValidity(\n project\n .command(\"files\")\n .description(\n [\n \"List the file tree of a project at a given reference.\",\n \"\",\n \"`--path` scopes to a subdirectory; `--reference` targets a non-default\",\n \"branch / tag / commit. Returns one row per file with type, size, and path.\",\n ].join(\"\\n\"),\n )\n .requiredOption(\n \"--project-id <id>\",\n \"SC service UUID for the automation project, from `connection projects`.\",\n )\n .option(\n \"--path <path>\",\n \"Subdirectory inside the project to list. Defaults to the project root.\",\n )\n .option(\n \"--reference <ref>\",\n \"Branch name, tag, or commit SHA. Defaults to the default branch HEAD.\",\n )\n .examples(FILES_EXAMPLES),\n ).trackedAction(processContext, async (options: PathOptions) => {\n const api = await getScApi(ProjectsApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.projectsGetAutomationProjectFiles({\n projectIdentifier: options.projectId,\n path: options.path,\n reference: options.reference,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the --project-id and that --reference / --path resolve.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ProjectFiles\",\n Data: result,\n });\n });\n\n // --- content ---\n withLoginValidity(\n project\n .command(\"content\")\n .description(\n [\n \"Fetch the raw content of a file inside a project.\",\n \"\",\n \"`--path` is the file path relative to the project root. `--reference` picks\",\n \"a non-default branch / tag / SHA — leave it off for the default branch HEAD.\",\n ].join(\"\\n\"),\n )\n .requiredOption(\n \"--project-id <id>\",\n \"SC service UUID for the automation project, from `connection projects`.\",\n )\n .option(\n \"--path <path>\",\n \"Path to the file inside the project (relative to the project root).\",\n )\n .option(\n \"--reference <ref>\",\n \"Branch name, tag, or commit SHA. Defaults to the default branch HEAD.\",\n )\n .examples(CONTENT_EXAMPLES),\n ).trackedAction(processContext, async (options: PathOptions) => {\n const api = await getScApi(ProjectsApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.projectsGetAutomationProjectFileContent({\n projectIdentifier: options.projectId,\n path: options.path,\n reference: options.reference,\n }),\n );\n if (error) {\n const message =\n error instanceof SyntaxError ||\n /unexpected end of json/i.test(error.message ?? \"\")\n ? `Project file '${options.path}' not found.`\n : await extractErrorMessage(error);\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: message,\n Instructions:\n \"Verify the --project-id, --path, and --reference. Files outside the project root are not addressable.\",\n });\n processContext.exit(1);\n return;\n }\n if (!result) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Project file '${options.path}' not found.`,\n Instructions:\n \"Verify the --project-id, --path, and --reference. Files outside the project root are not addressable.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ProjectFileContent\",\n Data: result,\n });\n });\n\n // --- commits ---\n // Note: commit history is only addressable by --project-id; the SC SDK exposes no\n // location-based variant for this endpoint.\n withLoginValidity(\n project\n .command(\"commits\")\n .description(\n [\n \"List the commit history for a project. Targeted by `--project-id` only.\",\n \"\",\n \"`--branch` filters to one branch; `--path` to a single file. Pagination via\",\n \"`--offset` / `--limit` (`--offset` must be a multiple of `--limit`); `--search`\",\n \"does substring search on commit message.\",\n ].join(\"\\n\"),\n )\n .requiredOption(\n \"--project-id <id>\",\n \"SC service UUID for the project, from `connection projects`.\",\n )\n .option(\n \"--path <path>\",\n \"Filter the history to commits touching this path.\",\n )\n .option(\n \"--branch <name>\",\n \"Filter the history to a specific branch. Defaults to the default branch.\",\n )\n .option(\n \"--offset <n>\",\n \"Number of commits to skip from the start. Must be a multiple of --limit. Defaults to 0.\",\n parseNonNegativeInt(\"--offset\"),\n )\n .option(\n \"--limit <n>\",\n \"Maximum commits to return. Defaults to 20.\",\n parsePositiveInt(\"--limit\"),\n )\n .addOption(\n new Option(\"--skip <n>\")\n .hideHelp()\n .argParser(parseNonNegativeInt(\"--skip\")),\n )\n .addOption(\n new Option(\"--take <n>\")\n .hideHelp()\n .argParser(parsePositiveInt(\"--take\")),\n )\n .option(\n \"--search <term>\",\n \"Server-side substring filter on commit message.\",\n )\n .examples(COMMITS_EXAMPLES),\n ).trackedAction(processContext, async (options: CommitsOptions) => {\n const api = await getScApi(ProjectsApi, options);\n if (!api) return;\n\n const pagination = resolveLimitOffsetOptions(options, {\n limit: 20,\n offset: 0,\n });\n if (pagination.error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: pagination.error.message,\n Instructions: pagination.error.instructions,\n });\n processContext.exit(1);\n return;\n }\n const take = pagination.limit;\n const skip = pagination.offset;\n if (skip % take !== 0) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `--offset (${skip}) must be a multiple of --limit (${take}) for page-based pagination.`,\n Instructions:\n \"Use --offset values like 0, --limit, 2*--limit, etc.\",\n });\n processContext.exit(1);\n return;\n }\n\n const [error, result] = await catchError(\n api.projectsGetAutomationProjectCommits({\n projectIdentifier: options.projectId,\n path: options.path,\n branch: options.branch,\n pageIndex: skip / take,\n pageSize: take,\n searchTerm: options.search,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the --project-id and that --branch resolves on the underlying repository.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ProjectCommits\",\n Data: result,\n });\n });\n\n // --- commit ---\n withLoginValidity(\n project\n .command(\"commit\")\n .description(\n [\n \"Fetch a single commit by SHA.\",\n \"\",\n \"`--reference` is required and must resolve to a commit on the project's\",\n \"underlying repository (branch HEAD or explicit SHA both work).\",\n ].join(\"\\n\"),\n )\n .requiredOption(\n \"--project-id <id>\",\n \"SC service UUID for the automation project, from `connection projects`.\",\n )\n .requiredOption(\n \"--reference <sha>\",\n \"Commit SHA (or a branch/tag that resolves to one).\",\n )\n .examples(COMMIT_EXAMPLES),\n ).trackedAction(processContext, async (options: CommitOptions) => {\n const api = await getScApi(ProjectsApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.projectsGetAutomationProjectCommit({\n projectIdentifier: options.projectId,\n reference: options.reference,\n }),\n );\n if (error) {\n const message =\n error instanceof SyntaxError ||\n /unexpected end of json/i.test(error.message ?? \"\")\n ? `Commit ${options.reference} not found.`\n : await extractErrorMessage(error);\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: message,\n Instructions:\n \"Verify the --project-id and that --reference resolves to a commit on the project's repository.\",\n });\n processContext.exit(1);\n return;\n }\n if (!result?.reference) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Commit ${options.reference} not found.`,\n Instructions:\n \"Verify the --project-id and that --reference resolves to a commit on the project's repository.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"ProjectCommit\",\n Data: result,\n });\n });\n};\n",
|
|
134
|
-
"import {\n type CommandExample,\n catchError,\n extractErrorMessage,\n OutputFormatter,\n processContext,\n RESULTS,\n} from \"@uipath/common\";\nimport { RepositoriesApi } from \"@uipath/sc-sdk\";\nimport type { Command } from \"commander\";\nimport {\n type BaseOptions,\n getScApi,\n withLoginValidity,\n} from \"./_shared/get-api.js\";\n\ninterface ProjectFilesOptions extends BaseOptions {\n reference?: string;\n}\n\nconst BRANCHES_EXAMPLES: CommandExample[] = [\n {\n Description: \"List branches for a repository\",\n Command: \"uip aops repo branches abcd1234-0000-0000-0000-000000000001\",\n Output: {\n Code: \"RepoBranches\",\n Data: [\n { name: \"main\", isDefault: true },\n { name: \"release\", isDefault: false },\n ],\n },\n },\n];\n\nconst PROJECT_FILES_EXAMPLES: CommandExample[] = [\n {\n Description:\n \"List automation project files at the default branch's HEAD\",\n Command:\n \"uip aops repo project-files abcd1234-0000-0000-0000-000000000001\",\n Output: {\n Code: \"RepoProjectFiles\",\n Data: [],\n },\n },\n {\n Description: \"List project files at a specific branch or commit\",\n Command:\n \"uip aops repo project-files abcd1234-0000-0000-0000-000000000001 --reference release\",\n Output: {\n Code: \"RepoProjectFiles\",\n Data: [],\n },\n },\n];\n\nexport const registerRepoCommand = (program: Command): void => {\n const repo = program\n .command(\"repo\")\n .description(\n [\n \"Inspect repositories already linked to a SourceControl connection.\",\n \"\",\n \"Repositories are surfaced via `connection repos <connection-id>`. Once you have\",\n \"a repository identifier, use these subcommands to enumerate its branches and the\",\n \"automation project files (project.json) that live at a given reference.\",\n ].join(\"\\n\"),\n );\n\n // --- branches ---\n withLoginValidity(\n repo\n .command(\"branches\")\n .description(\n [\n \"List branches for a repository.\",\n \"\",\n \"Returns one row per branch with its name and a `isDefault` flag. Use the\",\n \"branch name as `--reference` for `repo project-files`, `project content`,\",\n \"etc., when you need to inspect non-default branches.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<repo-id>\",\n \"Repository identifier from `connection repos <connection-id>`.\",\n )\n .examples(BRANCHES_EXAMPLES),\n ).trackedAction(\n processContext,\n async (repoId: string, options: BaseOptions) => {\n const api = await getScApi(RepositoriesApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.repositoriesGetRepositoryBranches({\n repositoryIdentifier: repoId,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the repo id with 'uip aops connection repos <connection-id>'.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"RepoBranches\",\n Data: result,\n });\n },\n );\n\n // --- project-files ---\n withLoginValidity(\n repo\n .command(\"project-files\")\n .description(\n [\n \"List automation project files (project.json roots) in the repository at a\",\n \"given reference.\",\n \"\",\n \"`--reference` accepts a branch name, tag, or commit SHA. When omitted, the\",\n \"service uses the default branch's HEAD.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<repo-id>\",\n \"Repository identifier from `connection repos <connection-id>`.\",\n )\n .option(\n \"--reference <ref>\",\n \"Branch name, tag, or commit SHA. Defaults to the default branch HEAD.\",\n )\n .examples(PROJECT_FILES_EXAMPLES),\n ).trackedAction(\n processContext,\n async (repoId: string, options: ProjectFilesOptions) => {\n const api = await getScApi(RepositoriesApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.repositoriesGetRepositoryProjectFiles({\n repositoryIdentifier: repoId,\n reference: options.reference,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the repo id with 'uip aops connection repos <connection-id>' and that --reference is a valid branch/tag/sha.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"RepoProjectFiles\",\n Data: result,\n });\n },\n );\n};\n",
|
|
135
|
-
"import {\n type CommandExample,\n catchError,\n extractErrorMessage,\n OutputFormatter,\n processContext,\n RESULTS,\n} from \"@uipath/common\";\nimport { SolutionsApi } from \"@uipath/sc-sdk\";\nimport { type Command, Option } from \"commander\";\nimport {\n type BaseOptions,\n getScApi,\n parseNonNegativeInt,\n parsePositiveInt,\n resolveLimitOffsetOptions,\n withLoginValidity,\n} from \"./_shared/get-api.js\";\n\nconst SAMPLE_SOLUTION_ID = \"abcd5678-0000-0000-0000-000000000001\";\n\ninterface CommitsOptions extends BaseOptions {\n path?: string;\n branch?: string;\n offset?: number;\n limit?: number;\n skip?: number;\n take?: number;\n search?: string;\n}\n\nconst GET_EXAMPLES: CommandExample[] = [\n {\n Description: \"Fetch a solution's metadata by identifier\",\n Command: \"uip aops solution get abcd5678-0000-0000-0000-000000000001\",\n Output: {\n Code: \"SolutionGet\",\n Data: { identifier: SAMPLE_SOLUTION_ID, name: \"Finance Suite\" },\n },\n },\n];\n\nconst COMMITS_EXAMPLES: CommandExample[] = [\n {\n Description: \"List recent commits on a solution's default branch\",\n Command:\n \"uip aops solution commits abcd5678-0000-0000-0000-000000000001\",\n Output: { Code: \"SolutionCommits\", Data: { result: [] } },\n },\n {\n Description: \"Filter commits to a path on a release branch\",\n Command:\n \"uip aops solution commits abcd5678-0000-0000-0000-000000000001 --branch release --path solution.json\",\n Output: { Code: \"SolutionCommits\", Data: { result: [] } },\n },\n];\n\nexport const registerSolutionCommand = (program: Command): void => {\n const solution = program\n .command(\"solution\")\n .description(\n [\n \"Inspect Studio solutions discovered through a SourceControl connection.\",\n \"\",\n \"Solutions are surfaced via `connection solutions <connection-id>`. Use `solution\",\n \"get <id>` for the persisted DTO and `solution commits <id>` for the underlying\",\n \"git history.\",\n ].join(\"\\n\"),\n );\n\n // --- get ---\n withLoginValidity(\n solution\n .command(\"get\")\n .description(\n [\n \"Fetch a solution's metadata by identifier.\",\n \"\",\n \"Returns the persisted solution DTO — name, identifier, source repository,\",\n \"default branch, last-modified info.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<solution-id>\",\n \"Solution identifier from `connection solutions <connection-id>`.\",\n )\n .examples(GET_EXAMPLES),\n ).trackedAction(\n processContext,\n async (solutionId: string, options: BaseOptions) => {\n const api = await getScApi(SolutionsApi, options);\n if (!api) return;\n\n const [error, result] = await catchError(\n api.solutionsGetSolution({\n solutionIdentifier: solutionId,\n }),\n );\n if (error) {\n const message =\n error instanceof SyntaxError ||\n /unexpected end of json/i.test(error.message ?? \"\")\n ? `Solution ${solutionId} not found.`\n : await extractErrorMessage(error);\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: message,\n Instructions:\n \"Verify the solution id with 'uip aops connection solutions <connection-id>'.\",\n });\n processContext.exit(1);\n return;\n }\n if (!result?.identifier) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `Solution ${solutionId} not found.`,\n Instructions:\n \"Verify the solution id with 'uip aops connection solutions <connection-id>'.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"SolutionGet\",\n Data: result,\n });\n },\n );\n\n // --- commits ---\n withLoginValidity(\n solution\n .command(\"commits\")\n .description(\n [\n \"List the commit history for a solution.\",\n \"\",\n \"`--branch` filters to one branch; `--path` to a single file. Pagination via\",\n \"`--offset` / `--limit` (`--offset` must be a multiple of `--limit`); `--search`\",\n \"does substring search on commit message.\",\n ].join(\"\\n\"),\n )\n .argument(\n \"<solution-id>\",\n \"Solution identifier from `connection solutions <connection-id>`.\",\n )\n .option(\n \"--path <path>\",\n \"Filter the history to commits touching this path.\",\n )\n .option(\n \"--branch <name>\",\n \"Filter the history to a specific branch. Defaults to the default branch.\",\n )\n .option(\n \"--offset <n>\",\n \"Number of commits to skip from the start. Must be a multiple of --limit. Defaults to 0.\",\n parseNonNegativeInt(\"--offset\"),\n )\n .option(\n \"--limit <n>\",\n \"Maximum commits to return. Defaults to 20.\",\n parsePositiveInt(\"--limit\"),\n )\n .addOption(\n new Option(\"--skip <n>\")\n .hideHelp()\n .argParser(parseNonNegativeInt(\"--skip\")),\n )\n .addOption(\n new Option(\"--take <n>\")\n .hideHelp()\n .argParser(parsePositiveInt(\"--take\")),\n )\n .option(\n \"--search <term>\",\n \"Server-side substring filter on commit message.\",\n )\n .examples(COMMITS_EXAMPLES),\n ).trackedAction(\n processContext,\n async (solutionId: string, options: CommitsOptions) => {\n const api = await getScApi(SolutionsApi, options);\n if (!api) return;\n\n const pagination = resolveLimitOffsetOptions(options, {\n limit: 20,\n offset: 0,\n });\n if (pagination.error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: pagination.error.message,\n Instructions: pagination.error.instructions,\n });\n processContext.exit(1);\n return;\n }\n const take = pagination.limit;\n const skip = pagination.offset;\n if (skip % take !== 0) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: `--offset (${skip}) must be a multiple of --limit (${take}) for page-based pagination.`,\n Instructions:\n \"Use --offset values like 0, --limit, 2*--limit, etc.\",\n });\n processContext.exit(1);\n return;\n }\n\n const [error, result] = await catchError(\n api.solutionsGetSolutionCommits({\n solutionIdentifier: solutionId,\n path: options.path,\n branch: options.branch,\n pageIndex: skip / take,\n pageSize: take,\n searchTerm: options.search,\n }),\n );\n if (error) {\n OutputFormatter.error({\n Result: RESULTS.Failure,\n Message: await extractErrorMessage(error),\n Instructions:\n \"Verify the solution id and that --branch resolves on the underlying repository.\",\n });\n processContext.exit(1);\n return;\n }\n\n OutputFormatter.success({\n Result: RESULTS.Success,\n Code: \"SolutionCommits\",\n Data: result,\n });\n },\n );\n};\n",
|
|
136
|
-
"import type { Command } from \"commander\";\nimport pkg from \"../package.json\" with { type: \"json\" };\nimport { registerConnectionCommand } from \"./commands/connection.js\";\nimport { registerExecutionCommand } from \"./commands/execution.js\";\nimport { registerPipelineCommand } from \"./commands/pipeline.js\";\nimport { registerProjectCommand } from \"./commands/project.js\";\nimport { registerRepoCommand } from \"./commands/repo.js\";\nimport { registerSolutionCommand } from \"./commands/solution.js\";\n\nexport const metadata = {\n name: \"aops-tool\",\n version: pkg.version,\n description:\n \"Manage UiPath StudioAdmin AOps — connections, repos, projects, solutions, pipelines, executions.\",\n commandPrefix: \"aops\",\n};\n\nexport const registerCommands = async (program: Command): Promise<void> => {\n registerConnectionCommand(program);\n registerRepoCommand(program);\n registerProjectCommand(program);\n registerSolutionCommand(program);\n registerPipelineCommand(program);\n registerExecutionCommand(program);\n};\n"
|
|
137
|
-
],
|
|
138
|
-
"mappings": "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",
|
|
139
|
-
"debugId": "CE7D56391B4A70E864756E2164756E21",
|
|
140
|
-
"names": []
|
|
141
|
-
}
|