@cmflow/atlas 3.6.1 → 3.7.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"taskProgressService-BIc_o1wl.mjs","names":["NO_TRUNCATION","fastStringTruncatedWidth","stringWidth","cursor","erase","l","cursor","erase","SelectPrompt","#storage"],"sources":["../src/config/mappers/normalizeBackendSources.ts","../src/config/mappers/normalizeExpressionRules.ts","../src/config/utils/getTsconfigAliases.ts","../src/config/userConfig.ts","../../../node_modules/fast-string-truncated-width/dist/utils.js","../../../node_modules/fast-string-truncated-width/dist/index.js","../../../node_modules/fast-string-width/dist/index.js","../../../node_modules/fast-wrap-ansi/lib/main.js","../../../node_modules/sisteransi/src/index.js","../../../node_modules/@clack/core/dist/index.mjs","../../../node_modules/@clack/prompts/dist/index.mjs","../src/utils/logger/atlasLogger.ts","../src/services/tasks/taskProgressService.ts"],"sourcesContent":["import type { BackendSource } from \"../../interfaces\";\nimport type { UserConfig } from \"../interfaces/UserConfig\";\n\nexport function normalizeBackendSources(backends: UserConfig[\"analysis\"][\"backends\"]): BackendSource[] {\n const sources = backends.map((backend) => (typeof backend === \"string\" ? { name: backend } : backend));\n const sourcesByName = new Map<string, BackendSource>();\n for (const source of sources) {\n if (!source.name.trim()) {\n throw new Error(\"Backend source names must not be empty\");\n }\n sourcesByName.set(source.name, source);\n }\n return [...sourcesByName.values()];\n}\n","export function normalizeExpressionRules<Rule>(rules: Rule[]): Rule[] {\n return [...new Set(rules)]\n .map((rule, index) => ({ rule, index }))\n .sort(\n (left, right) =>\n ((right.rule as { priority?: number }).priority || 0) - ((left.rule as { priority?: number }).priority || 0) ||\n left.index - right.index\n )\n .map(({ rule }) => rule);\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { Project } from \"ts-morph\";\n\nexport function getTsconfigAliases(workingDirectory = process.cwd()): Record<string, string> {\n const tsconfigPath = path.join(workingDirectory, \"tsconfig.json\");\n if (!fs.existsSync(tsconfigPath)) {\n return {};\n }\n\n const paths = new Project({ tsConfigFilePath: tsconfigPath, skipAddingFilesFromTsConfig: true }).getCompilerOptions().paths ?? {};\n return Object.fromEntries(\n Object.entries(paths).flatMap(([alias, targets]) => {\n const target = targets?.[0];\n if (!target) {\n return [];\n }\n return [[alias.replace(/\\/\\*$/, \"\"), target.replace(/^\\.\\//, \"\").replace(/\\/\\*$/, \"\")]];\n })\n );\n}\n","import path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { ResolvedUserConfig } from \"./interfaces/ResolvedUserConfig\";\nimport type { UserConfig } from \"./interfaces/UserConfig\";\nimport { normalizeBackendSources } from \"./mappers/normalizeBackendSources\";\nimport { normalizeExpressionRules } from \"./mappers/normalizeExpressionRules\";\nimport { getTsconfigAliases } from \"./utils/getTsconfigAliases\";\n\nlet _config: ResolvedUserConfig | undefined;\n\nexport function setUserConfig(config: ResolvedUserConfig): void {\n const backends = normalizeBackendSources(config.analysis.backends);\n _config = {\n ...config,\n outputDir: path.resolve(config.outputDir),\n envs: config.envs ?? {},\n analysis: {\n ...config.analysis,\n backends,\n rules: normalizeExpressionRules([...config.analysis.rules, ...backends.flatMap((backend) => backend.rules || [])])\n }\n };\n}\n\nexport function getUserConfig(): ResolvedUserConfig {\n if (!_config) {\n throw new Error(\"Atlas config not loaded. Run Atlas from a directory containing atlas.config.ts or pass --config.\");\n }\n return _config;\n}\n\nexport async function userConfig(configPath: string, analysisDir?: string): Promise<ResolvedUserConfig> {\n const filePath = path.resolve(configPath);\n try {\n let mod: { default?: UserConfig };\n if (filePath.endsWith(\".ts\")) {\n const { register } = await import(\"tsx/esm/api\");\n const unregister = register();\n try {\n mod = await import(pathToFileURL(filePath).href);\n } finally {\n await unregister();\n }\n } else {\n mod = await import(pathToFileURL(filePath).href);\n }\n\n const config = mod.default ?? (mod as unknown as UserConfig);\n const resolvedAnalysisDir = path.resolve(analysisDir || config.analysis.rootDir || process.cwd());\n const backends = normalizeBackendSources(config.analysis.backends);\n\n return {\n ...config,\n configPath: filePath,\n outputDir: path.resolve(config.outputDir),\n cwd: resolvedAnalysisDir,\n envs: config.envs ?? {},\n analysis: {\n ...config.analysis,\n rootDir: resolvedAnalysisDir,\n backends\n },\n resolver: {\n alias: {\n ...getTsconfigAliases(),\n ...config.resolver?.alias\n }\n }\n };\n } catch (error) {\n throw new Error(`Unable to load Atlas configuration at ${filePath}: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n","/* MAIN */\nconst getCodePointsLength = (() => {\n const SURROGATE_PAIR_RE = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n return (input) => {\n let surrogatePairsNr = 0;\n SURROGATE_PAIR_RE.lastIndex = 0;\n while (SURROGATE_PAIR_RE.test(input)) {\n surrogatePairsNr += 1;\n }\n return input.length - surrogatePairsNr;\n };\n})();\nconst isFullWidth = (x) => {\n return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6;\n};\nconst isWideNotCJKTNotEmoji = (x) => {\n return x === 0x231B || x === 0x2329 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD;\n};\n/* EXPORT */\nexport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji };\n","/* IMPORT */\nimport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji } from './utils.js';\n/* HELPERS */\nconst ANSI_RE = /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\\u001b\\]8;[^;]*;.*?(?:\\u0007|\\u001b\\u005c)/y;\nconst CONTROL_RE = /[\\x00-\\x08\\x0A-\\x1F\\x7F-\\x9F]{1,1000}/y;\nconst CJKT_WIDE_RE = /(?:(?![\\uFF61-\\uFF9F\\uFF00-\\uFFEF])[\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}\\p{Script=Hangul}\\p{Script=Tangut}]){1,1000}/yu;\nconst TAB_RE = /\\t{1,1000}/y;\nconst EMOJI_RE = /[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*/yu;\nconst LATIN_RE = /(?:[\\x20-\\x7E\\xA0-\\xFF](?!\\uFE0F)){1,1000}/y;\nconst MODIFIER_RE = /\\p{M}+/gu;\nconst NO_TRUNCATION = { limit: Infinity, ellipsis: '' };\n/* MAIN */\nconst getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => {\n /* CONSTANTS */\n const LIMIT = truncationOptions.limit ?? Infinity;\n const ELLIPSIS = truncationOptions.ellipsis ?? '';\n const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0);\n const ANSI_WIDTH = 0;\n const CONTROL_WIDTH = widthOptions.controlWidth ?? 0;\n const TAB_WIDTH = widthOptions.tabWidth ?? 8;\n const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2;\n const FULL_WIDTH_WIDTH = 2;\n const REGULAR_WIDTH = widthOptions.regularWidth ?? 1;\n const WIDE_WIDTH = widthOptions.wideWidth ?? FULL_WIDTH_WIDTH;\n const PARSE_BLOCKS = [\n [LATIN_RE, REGULAR_WIDTH],\n [ANSI_RE, ANSI_WIDTH],\n [CONTROL_RE, CONTROL_WIDTH],\n [TAB_RE, TAB_WIDTH],\n [EMOJI_RE, EMOJI_WIDTH],\n [CJKT_WIDE_RE, WIDE_WIDTH],\n ];\n /* STATE */\n let indexPrev = 0;\n let index = 0;\n let length = input.length;\n let lengthExtra = 0;\n let truncationEnabled = false;\n let truncationIndex = length;\n let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH);\n let unmatchedStart = 0;\n let unmatchedEnd = 0;\n let width = 0;\n let widthExtra = 0;\n /* PARSE LOOP */\n outer: while (true) {\n /* UNMATCHED */\n if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) {\n const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index);\n lengthExtra = 0;\n for (const char of unmatched.replaceAll(MODIFIER_RE, '')) {\n const codePoint = char.codePointAt(0) || 0;\n if (isFullWidth(codePoint)) {\n widthExtra = FULL_WIDTH_WIDTH;\n }\n else if (isWideNotCJKTNotEmoji(codePoint)) {\n widthExtra = WIDE_WIDTH;\n }\n else {\n widthExtra = REGULAR_WIDTH;\n }\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra);\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n lengthExtra += char.length;\n width += widthExtra;\n }\n unmatchedStart = unmatchedEnd = 0;\n }\n /* EXITING */\n if (index >= length) {\n break outer;\n }\n /* PARSE BLOCKS */\n for (let i = 0, l = PARSE_BLOCKS.length; i < l; i++) {\n const [BLOCK_RE, BLOCK_WIDTH] = PARSE_BLOCKS[i];\n BLOCK_RE.lastIndex = index;\n if (BLOCK_RE.test(input)) {\n lengthExtra = BLOCK_RE === CJKT_WIDE_RE ? getCodePointsLength(input.slice(index, BLOCK_RE.lastIndex)) : BLOCK_RE === EMOJI_RE ? 1 : BLOCK_RE.lastIndex - index;\n widthExtra = lengthExtra * BLOCK_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / BLOCK_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = BLOCK_RE.lastIndex;\n continue outer;\n }\n }\n /* UNMATCHED INDEX */\n index += 1;\n }\n /* RETURN */\n return {\n width: truncationEnabled ? truncationLimit : width,\n index: truncationEnabled ? truncationIndex : length,\n truncated: truncationEnabled,\n ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH\n };\n};\n/* EXPORT */\nexport default getStringTruncatedWidth;\n","/* IMPORT */\nimport fastStringTruncatedWidth from 'fast-string-truncated-width';\n/* HELPERS */\nconst NO_TRUNCATION = {\n limit: Infinity,\n ellipsis: '',\n ellipsisWidth: 0,\n};\n/* MAIN */\nconst fastStringWidth = (input, options = {}) => {\n return fastStringTruncatedWidth(input, NO_TRUNCATION, options).width;\n};\n/* EXPORT */\nexport default fastStringWidth;\n","import stringWidth from 'fast-string-width';\nconst ESC = '\\x1B';\nconst CSI = '\\x9B';\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\nconst GROUP_REGEX = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`, 'y');\nconst getClosingCode = (openingCode) => {\n if (openingCode >= 30 && openingCode <= 37)\n return 39;\n if (openingCode >= 90 && openingCode <= 97)\n return 39;\n if (openingCode >= 40 && openingCode <= 47)\n return 49;\n if (openingCode >= 100 && openingCode <= 107)\n return 49;\n if (openingCode === 1 || openingCode === 2)\n return 22;\n if (openingCode === 3)\n return 23;\n if (openingCode === 4)\n return 24;\n if (openingCode === 7)\n return 27;\n if (openingCode === 8)\n return 28;\n if (openingCode === 9)\n return 29;\n if (openingCode === 0)\n return 0;\n return undefined;\n};\nconst wrapAnsiCode = (code) => `${ESC}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = (url) => `${ESC}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\nconst wrapWord = (rows, word, columns) => {\n const characters = word[Symbol.iterator]();\n let isInsideEscape = false;\n let isInsideLinkEscape = false;\n let lastRow = rows.at(-1);\n let visible = lastRow === undefined ? 0 : stringWidth(lastRow);\n let currentCharacter = characters.next();\n let nextCharacter = characters.next();\n let rawCharacterIndex = 0;\n while (!currentCharacter.done) {\n const character = currentCharacter.value;\n const characterLength = stringWidth(character);\n if (visible + characterLength <= columns) {\n rows[rows.length - 1] += character;\n }\n else {\n rows.push(character);\n visible = 0;\n }\n if (character === ESC || character === CSI) {\n isInsideEscape = true;\n isInsideLinkEscape = word.startsWith(ANSI_ESCAPE_LINK, rawCharacterIndex + 1);\n }\n if (isInsideEscape) {\n if (isInsideLinkEscape) {\n if (character === ANSI_ESCAPE_BELL) {\n isInsideEscape = false;\n isInsideLinkEscape = false;\n }\n }\n else if (character === ANSI_SGR_TERMINATOR) {\n isInsideEscape = false;\n }\n }\n else {\n visible += characterLength;\n if (visible === columns && !nextCharacter.done) {\n rows.push('');\n visible = 0;\n }\n }\n currentCharacter = nextCharacter;\n nextCharacter = characters.next();\n rawCharacterIndex += character.length;\n }\n lastRow = rows.at(-1);\n if (!visible && lastRow !== undefined && lastRow.length && rows.length > 1) {\n rows[rows.length - 2] += rows.pop();\n }\n};\nconst stringVisibleTrimSpacesRight = (string) => {\n const words = string.split(' ');\n let last = words.length;\n while (last) {\n if (stringWidth(words[last - 1])) {\n break;\n }\n last--;\n }\n if (last === words.length) {\n return string;\n }\n return words.slice(0, last).join(' ') + words.slice(last).join('');\n};\nconst exec = (string, columns, options = {}) => {\n if (options.trim !== false && string.trim() === '') {\n return '';\n }\n let returnValue = '';\n let escapeCode;\n let escapeUrl;\n const words = string.split(' ');\n let rows = [''];\n let rowLength = 0;\n for (let index = 0; index < words.length; index++) {\n const word = words[index];\n if (options.trim !== false) {\n const row = rows.at(-1) ?? '';\n const trimmed = row.trimStart();\n if (row.length !== trimmed.length) {\n rows[rows.length - 1] = trimmed;\n rowLength = stringWidth(trimmed);\n }\n }\n if (index !== 0) {\n if (rowLength >= columns &&\n (options.wordWrap === false || options.trim === false)) {\n rows.push('');\n rowLength = 0;\n }\n if (rowLength || options.trim === false) {\n rows[rows.length - 1] += ' ';\n rowLength++;\n }\n }\n const wordLength = stringWidth(word);\n if (options.hard && wordLength > columns) {\n const remainingColumns = columns - rowLength;\n const breaksStartingThisLine = 1 + Math.floor((wordLength - remainingColumns - 1) / columns);\n const breaksStartingNextLine = Math.floor((wordLength - 1) / columns);\n if (breaksStartingNextLine < breaksStartingThisLine) {\n rows.push('');\n }\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n if (rowLength + wordLength > columns && rowLength && wordLength) {\n if (options.wordWrap === false && rowLength < columns) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows.push('');\n rowLength = 0;\n }\n if (rowLength + wordLength > columns && options.wordWrap === false) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows[rows.length - 1] += word;\n rowLength += wordLength;\n }\n if (options.trim !== false) {\n rows = rows.map((row) => stringVisibleTrimSpacesRight(row));\n }\n const preString = rows.join('\\n');\n let inSurrogate = false;\n for (let i = 0; i < preString.length; i++) {\n const character = preString[i];\n returnValue += character;\n if (!inSurrogate) {\n inSurrogate = character >= '\\ud800' && character <= '\\udbff';\n if (inSurrogate) {\n continue;\n }\n }\n else {\n inSurrogate = false;\n }\n if (character === ESC || character === CSI) {\n GROUP_REGEX.lastIndex = i + 1;\n const groupsResult = GROUP_REGEX.exec(preString);\n const groups = groupsResult?.groups;\n if (groups?.code !== undefined) {\n const code = Number.parseFloat(groups.code);\n escapeCode = code === END_CODE ? undefined : code;\n }\n else if (groups?.uri !== undefined) {\n escapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n }\n }\n if (preString[i + 1] === '\\n') {\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink('');\n }\n const closingCode = escapeCode ? getClosingCode(escapeCode) : undefined;\n if (escapeCode && closingCode) {\n returnValue += wrapAnsiCode(closingCode);\n }\n }\n else if (character === '\\n') {\n if (escapeCode && getClosingCode(escapeCode)) {\n returnValue += wrapAnsiCode(escapeCode);\n }\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink(escapeUrl);\n }\n }\n }\n return returnValue;\n};\nconst CRLF_OR_LF = /\\r?\\n/;\nexport function wrapAnsi(string, columns, options) {\n return String(string)\n .normalize()\n .split(CRLF_OR_LF)\n .map((line) => exec(line, columns, options))\n .join('\\n');\n}\n","'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","import { styleText } from 'node:util';\nimport { stdout, stdin } from 'node:process';\nimport * as l from 'node:readline';\nimport l__default from 'node:readline';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor, erase } from 'sisteransi';\nimport { ReadStream } from 'node:tty';\n\nfunction findCursor(s, o, l) {\n if (!l.some((r) => !r.disabled))\n return s;\n const t = s + o, n = Math.max(l.length - 1, 0), e = t < 0 ? n : t > n ? 0 : t;\n return l[e]?.disabled ? findCursor(e, o < 0 ? -1 : 1, l) : e;\n}\nfunction findTextCursor(s, o, l, i) {\n const t = i.split(`\n`);\n let n = 0, e = s;\n for (const r of t) {\n if (e <= r.length)\n break;\n e -= r.length + 1, n++;\n }\n for (n = Math.max(0, Math.min(t.length - 1, n + l)), e = Math.min(e, t[n].length) + o; e < 0 && n > 0; )\n n--, e += t[n].length + 1;\n for (; e > t[n].length && n < t.length - 1; )\n e -= t[n].length + 1, n++;\n e = Math.max(0, Math.min(t[n].length, e));\n let h = 0;\n for (let r = 0; r < n; r++)\n h += t[r].length + 1;\n return h + e;\n}\n\nconst a$1 = [\"up\", \"down\", \"left\", \"right\", \"space\", \"enter\", \"cancel\"], t = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\nconst settings = {\n actions: new Set(a$1),\n aliases: /* @__PURE__ */ new Map([\n // vim support\n [\"k\", \"up\"],\n [\"j\", \"down\"],\n [\"h\", \"left\"],\n [\"l\", \"right\"],\n [\"\u0003\", \"cancel\"],\n // opinionated defaults!\n [\"escape\", \"cancel\"]\n ]),\n messages: {\n cancel: \"Canceled\",\n error: \"Something went wrong\"\n },\n withGuide: true,\n date: {\n monthNames: [...t],\n messages: {\n required: \"Please enter a valid date\",\n invalidMonth: \"There are only 12 months in a year\",\n invalidDay: (n, e) => `There are only ${n} days in ${e}`,\n afterMin: (n) => `Date must be on or after ${n.toISOString().slice(0, 10)}`,\n beforeMax: (n) => `Date must be on or before ${n.toISOString().slice(0, 10)}`\n }\n }\n};\nfunction updateSettings(n) {\n if (n.aliases !== void 0) {\n const e = n.aliases;\n for (const s in e) {\n if (!Object.hasOwn(e, s)) continue;\n const i = e[s];\n i === void 0 || !settings.actions.has(i) || settings.aliases.has(s) || settings.aliases.set(s, i);\n }\n }\n if (n.messages !== void 0) {\n const e = n.messages;\n e.cancel !== void 0 && (settings.messages.cancel = e.cancel), e.error !== void 0 && (settings.messages.error = e.error);\n }\n if (n.withGuide !== void 0 && (settings.withGuide = n.withGuide !== false), n.date !== void 0) {\n const e = n.date;\n e.monthNames !== void 0 && (settings.date.monthNames = [...e.monthNames]), e.messages !== void 0 && (e.messages.required !== void 0 && (settings.date.messages.required = e.messages.required), e.messages.invalidMonth !== void 0 && (settings.date.messages.invalidMonth = e.messages.invalidMonth), e.messages.invalidDay !== void 0 && (settings.date.messages.invalidDay = e.messages.invalidDay), e.messages.afterMin !== void 0 && (settings.date.messages.afterMin = e.messages.afterMin), e.messages.beforeMax !== void 0 && (settings.date.messages.beforeMax = e.messages.beforeMax));\n }\n}\nfunction isActionKey(n, e) {\n if (typeof n == \"string\")\n return settings.aliases.get(n) === e;\n for (const s of n)\n if (s !== void 0 && isActionKey(s, e))\n return true;\n return false;\n}\n\nfunction diffLines(i, s) {\n if (i === s) return;\n const e = i.split(`\n`), t = s.split(`\n`), r = Math.max(e.length, t.length), f = [];\n for (let n = 0; n < r; n++)\n e[n] !== t[n] && f.push(n);\n return {\n lines: f,\n numLinesBefore: e.length,\n numLinesAfter: t.length,\n numLines: r\n };\n}\n\nconst R = globalThis.process.platform.startsWith(\"win\");\nconst CANCEL_SYMBOL = Symbol(\"clack:cancel\");\nfunction isCancel(e) {\n return e === CANCEL_SYMBOL;\n}\nfunction setRawMode(e, r) {\n const o = e;\n o.isTTY && o.setRawMode(r);\n}\nfunction block({\n input: e = stdin,\n output: r = stdout,\n overwrite: o = true,\n hideCursor: t = true\n} = {}) {\n const s = l.createInterface({\n input: e,\n output: r,\n prompt: \"\",\n tabSize: 1\n });\n l.emitKeypressEvents(e, s), e instanceof ReadStream && e.isTTY && e.setRawMode(true);\n const n = (f, { name: a, sequence: p }) => {\n const c = String(f);\n if (isActionKey([c, a, p], \"cancel\")) {\n t && r.write(cursor.show), process.exit(0);\n return;\n }\n if (!o) return;\n const i = a === \"return\" ? 0 : -1, m = a === \"return\" ? -1 : 0;\n l.moveCursor(r, i, m, () => {\n l.clearLine(r, 1, () => {\n e.once(\"keypress\", n);\n });\n });\n };\n return t && r.write(cursor.hide), e.once(\"keypress\", n), () => {\n e.off(\"keypress\", n), t && r.write(cursor.show), e instanceof ReadStream && e.isTTY && !R && e.setRawMode(false), s.terminal = false, s.close();\n };\n}\nconst getColumns = (e) => \"columns\" in e && typeof e.columns == \"number\" ? e.columns : 80, getRows = (e) => \"rows\" in e && typeof e.rows == \"number\" ? e.rows : 20;\nfunction wrapTextWithPrefix(e, r, o, t = o, s = o, n) {\n const f = getColumns(e ?? stdout);\n return wrapAnsi(r, f - o.length, {\n hard: true,\n trim: false\n }).split(`\n`).map((c, i, m) => {\n const d = n ? n(c, i) : c;\n return i === 0 ? `${t}${d}` : i === m.length - 1 ? `${s}${d}` : `${o}${d}`;\n }).join(`\n`);\n}\n\nfunction runValidation(e, n) {\n if (\"~standard\" in e) {\n const a = e[\"~standard\"].validate(n);\n if (a instanceof Promise)\n throw new TypeError(\n \"Schema validation must be synchronous. Update `validate()` and remove any asynchronous logic.\"\n );\n return a.issues?.at(0)?.message;\n }\n return e(n);\n}\n\nclass V {\n input;\n output;\n _abortSignal;\n rl;\n opts;\n _render;\n _track = false;\n _prevFrame = \"\";\n _subscribers = /* @__PURE__ */ new Map();\n _cursor = 0;\n state = \"initial\";\n error = \"\";\n value;\n userInput = \"\";\n constructor(t, e = true) {\n const { input: i = stdin, output: n = stdout, render: s, signal: r, ...o } = t;\n this.opts = o, this.onKeypress = this.onKeypress.bind(this), this.close = this.close.bind(this), this.render = this.render.bind(this), this._render = s.bind(this), this._track = e, this._abortSignal = r, this.input = i, this.output = n;\n }\n /**\n * Unsubscribe all listeners\n */\n unsubscribe() {\n this._subscribers.clear();\n }\n /**\n * Set a subscriber with opts\n * @param event - The event name\n */\n setSubscriber(t, e) {\n const i = this._subscribers.get(t) ?? [];\n i.push(e), this._subscribers.set(t, i);\n }\n /**\n * Subscribe to an event\n * @param event - The event name\n * @param cb - The callback\n */\n on(t, e) {\n this.setSubscriber(t, { cb: e });\n }\n /**\n * Subscribe to an event once\n * @param event - The event name\n * @param cb - The callback\n */\n once(t, e) {\n this.setSubscriber(t, { cb: e, once: true });\n }\n /**\n * Emit an event with data\n * @param event - The event name\n * @param data - The data to pass to the callback\n */\n emit(t, ...e) {\n const i = this._subscribers.get(t) ?? [], n = [];\n for (const s of i)\n s.cb(...e), s.once && n.push(() => i.splice(i.indexOf(s), 1));\n for (const s of n)\n s();\n }\n prompt() {\n return new Promise((t) => {\n if (this._abortSignal) {\n if (this._abortSignal.aborted)\n return this.state = \"cancel\", this.close(), t(CANCEL_SYMBOL);\n this._abortSignal.addEventListener(\n \"abort\",\n () => {\n this.state = \"cancel\", this.close();\n },\n { once: true }\n );\n }\n this.rl = l__default.createInterface({\n input: this.input,\n tabSize: 2,\n prompt: \"\",\n escapeCodeTimeout: 50,\n terminal: true\n }), this.rl.prompt(), this.opts.initialUserInput !== void 0 && this._setUserInput(this.opts.initialUserInput, true), this.input.on(\"keypress\", this.onKeypress), setRawMode(this.input, true), this.output.on(\"resize\", this.render), this.render(), this.once(\"submit\", () => {\n this.output.write(cursor.show), this.output.off(\"resize\", this.render), setRawMode(this.input, false), t(this.value);\n }), this.once(\"cancel\", () => {\n this.output.write(cursor.show), this.output.off(\"resize\", this.render), setRawMode(this.input, false), t(CANCEL_SYMBOL);\n });\n });\n }\n _isActionKey(t, e) {\n return t === \"\t\";\n }\n _shouldSubmit(t, e) {\n return true;\n }\n _setValue(t) {\n this.value = t, this.emit(\"value\", this.value);\n }\n _setUserInput(t, e) {\n this.userInput = t ?? \"\", this.emit(\"userInput\", this.userInput), e && this._track && this.rl && (this.rl.write(this.userInput), this._cursor = this.rl.cursor);\n }\n _clearUserInput() {\n this.rl?.write(null, { ctrl: true, name: \"u\" }), this._setUserInput(\"\");\n }\n onKeypress(t, e) {\n if (this._track && e.name !== \"return\" && (e.name && this._isActionKey(t, e) && this.rl?.write(null, { ctrl: true, name: \"h\" }), this._cursor = this.rl?.cursor ?? 0, this._setUserInput(this.rl?.line)), this.state === \"error\" && (this.state = \"active\"), e?.name && (!this._track && settings.aliases.has(e.name) && this.emit(\"cursor\", settings.aliases.get(e.name)), settings.actions.has(e.name) && this.emit(\"cursor\", e.name)), t && (t.toLowerCase() === \"y\" || t.toLowerCase() === \"n\") && this.emit(\"confirm\", t.toLowerCase() === \"y\"), this.emit(\"key\", t, e), e?.name === \"return\" && this._shouldSubmit(t, e)) {\n if (this.opts.validate) {\n const i = runValidation(this.opts.validate, this.value);\n i && (this.error = i instanceof Error ? i.message : i, this.state = \"error\", this.rl?.write(this.userInput));\n }\n this.state !== \"error\" && (this.state = \"submit\");\n }\n isActionKey([t, e?.name, e?.sequence], \"cancel\") && (this.state = \"cancel\"), (this.state === \"submit\" || this.state === \"cancel\") && this.emit(\"finalize\"), this.render(), (this.state === \"submit\" || this.state === \"cancel\") && this.close();\n }\n close() {\n this.input.unpipe(), this.input.removeListener(\"keypress\", this.onKeypress), this.output.write(`\n`), setRawMode(this.input, false), this.rl?.close(), this.rl = void 0, this.emit(`${this.state}`, this.value), this.unsubscribe();\n }\n restoreCursor() {\n const t = wrapAnsi(this._prevFrame, process.stdout.columns, { hard: true, trim: false }).split(`\n`).length - 1;\n this.output.write(cursor.move(-999, t * -1));\n }\n render() {\n const t = wrapAnsi(this._render(this) ?? \"\", process.stdout.columns, {\n hard: true,\n trim: false\n });\n if (t !== this._prevFrame) {\n if (this.state === \"initial\")\n this.output.write(cursor.hide);\n else {\n const e = diffLines(this._prevFrame, t), i = getRows(this.output);\n if (this.restoreCursor(), e) {\n const n = Math.max(0, e.numLinesAfter - i), s = Math.max(0, e.numLinesBefore - i);\n let r = e.lines.find((o) => o >= n);\n if (r === void 0) {\n this._prevFrame = t;\n return;\n }\n if (e.lines.length === 1) {\n this.output.write(cursor.move(0, r - s)), this.output.write(erase.lines(1));\n const o = t.split(`\n`);\n this.output.write(o[r]), this._prevFrame = t, this.output.write(cursor.move(0, o.length - r - 1));\n return;\n } else if (e.lines.length > 1) {\n if (n < s)\n r = n;\n else {\n const h = r - s;\n h > 0 && this.output.write(cursor.move(0, h));\n }\n this.output.write(erase.down());\n const f = t.split(`\n`).slice(r);\n this.output.write(f.join(`\n`)), this._prevFrame = t;\n return;\n }\n }\n this.output.write(erase.down());\n }\n this.output.write(t), this.state === \"initial\" && (this.state = \"active\"), this._prevFrame = t;\n }\n }\n}\n\nfunction p$1(l, e) {\n if (l === void 0 || e.length === 0)\n return 0;\n const i = e.findIndex((s) => s.value === l);\n return i !== -1 ? i : 0;\n}\nfunction g(l, e) {\n return (e.label ?? String(e.value)).toLowerCase().includes(l.toLowerCase());\n}\nfunction m(l, e) {\n if (e)\n return l ? e : e[0];\n}\nlet T$1 = class T extends V {\n filteredOptions;\n multiple;\n isNavigating = false;\n selectedValues = [];\n focusedValue;\n #e = 0;\n #s = \"\";\n #t;\n #i;\n #n;\n get cursor() {\n return this.#e;\n }\n get userInputWithCursor() {\n if (!this.userInput)\n return styleText([\"inverse\", \"hidden\"], \"_\");\n if (this._cursor >= this.userInput.length)\n return `${this.userInput}\\u2588`;\n const e = this.userInput.slice(0, this.cursor), t = this.userInput.slice(this.cursor, this.cursor + 1), i = this.userInput.slice(this.cursor + 1);\n return `${e}${styleText(\"inverse\", t)}${i}`;\n }\n get options() {\n return typeof this.#i == \"function\" ? this.#i() : this.#i;\n }\n constructor(e) {\n super(e), this.#i = e.options, this.#n = e.placeholder;\n const t = this.options;\n this.filteredOptions = [...t], this.multiple = e.multiple === true, this.#t = typeof e.options == \"function\" ? e.filter : e.filter ?? g;\n let i;\n if (e.initialValue && Array.isArray(e.initialValue) ? this.multiple ? i = e.initialValue : i = e.initialValue.slice(0, 1) : !this.multiple && this.options.length > 0 && (i = [this.options[0]?.value]), i)\n for (const s of i) {\n const n = t.findIndex((o) => o.value === s);\n n !== -1 && (this.toggleSelected(s), this.#e = n);\n }\n this.focusedValue = this.options[this.#e]?.value, this.on(\"key\", (s, n) => this.#l(s, n)), this.on(\"userInput\", (s) => this.#u(s));\n }\n _isActionKey(e, t) {\n return e === \"\t\" || this.multiple && this.isNavigating && t.name === \"space\" && e !== void 0 && e !== \"\";\n }\n #l(e, t) {\n const i = t.name === \"up\", s = t.name === \"down\", n = t.name === \"return\", o = this.userInput === \"\" || this.userInput === \"\t\", u = this.#n, a = this.options, f = u !== void 0 && u !== \"\" && a.some(\n (r) => !r.disabled && (this.#t ? this.#t(u, r) : true)\n );\n if (t.name === \"tab\" && o && f) {\n this.userInput === \"\t\" && this._clearUserInput(), this._setUserInput(u, true), this.isNavigating = false;\n return;\n }\n i || s ? (this.#e = findCursor(this.#e, i ? -1 : 1, this.filteredOptions), this.focusedValue = this.filteredOptions[this.#e]?.value, this.multiple || (this.selectedValues = [this.focusedValue]), this.isNavigating = true) : n ? this.value = m(this.multiple, this.selectedValues) : this.multiple ? this.focusedValue !== void 0 && (t.name === \"tab\" || this.isNavigating && t.name === \"space\") ? this.toggleSelected(this.focusedValue) : this.isNavigating = false : (this.focusedValue && (this.selectedValues = [this.focusedValue]), this.isNavigating = false);\n }\n deselectAll() {\n this.selectedValues = [];\n }\n toggleSelected(e) {\n this.filteredOptions.length !== 0 && (this.multiple ? this.selectedValues.includes(e) ? this.selectedValues = this.selectedValues.filter((t) => t !== e) : this.selectedValues = [...this.selectedValues, e] : this.selectedValues = [e]);\n }\n #u(e) {\n if (e !== this.#s) {\n this.#s = e;\n const t = this.options;\n e && this.#t ? this.filteredOptions = t.filter((n) => this.#t?.(e, n)) : this.filteredOptions = [...t];\n const i = p$1(this.focusedValue, this.filteredOptions);\n this.#e = findCursor(i, 0, this.filteredOptions);\n const s = this.filteredOptions[this.#e];\n s && !s.disabled ? this.focusedValue = s.value : this.focusedValue = void 0, this.multiple || (this.focusedValue !== void 0 ? this.toggleSelected(this.focusedValue) : this.deselectAll());\n }\n }\n};\n\nclass r extends V {\n get cursor() {\n return this.value ? 0 : 1;\n }\n get _value() {\n return this.cursor === 0;\n }\n constructor(t) {\n super(t, false), this.value = !!t.initialValue, this.on(\"userInput\", () => {\n this.value = this._value;\n }), this.on(\"confirm\", (i) => {\n this.output.write(cursor.move(0, -1)), this.value = i, this.state = \"submit\", this.close();\n }), this.on(\"cursor\", () => {\n this.value = !this.value;\n });\n }\n}\n\nconst _ = {\n Y: { type: \"year\", len: 4 },\n M: { type: \"month\", len: 2 },\n D: { type: \"day\", len: 2 }\n};\nfunction M(r) {\n return [...r].map((t) => _[t]);\n}\nfunction P(r) {\n const i = new Intl.DateTimeFormat(r, {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\"\n }).formatToParts(new Date(2e3, 0, 15)), s = [];\n let n = \"/\";\n for (const e of i)\n e.type === \"literal\" ? n = e.value.trim() || e.value : (e.type === \"year\" || e.type === \"month\" || e.type === \"day\") && s.push({ type: e.type, len: e.type === \"year\" ? 4 : 2 });\n return { segments: s, separator: n };\n}\nfunction p(r) {\n return Number.parseInt((r || \"0\").replace(/_/g, \"0\"), 10) || 0;\n}\nfunction f(r) {\n return {\n year: p(r.year),\n month: p(r.month),\n day: p(r.day)\n };\n}\nfunction c(r, t) {\n return new Date(r || 2001, t || 1, 0).getDate();\n}\nfunction b(r) {\n const { year: t, month: i, day: s } = f(r);\n if (!t || t < 0 || t > 9999 || !i || i < 1 || i > 12 || !s || s < 1) return;\n const n = new Date(Date.UTC(t, i - 1, s));\n if (!(n.getUTCFullYear() !== t || n.getUTCMonth() !== i - 1 || n.getUTCDate() !== s))\n return { year: t, month: i, day: s };\n}\nfunction C(r) {\n const t = b(r);\n return t ? new Date(Date.UTC(t.year, t.month - 1, t.day)) : void 0;\n}\nfunction T(r, t, i, s) {\n const n = i ? {\n year: i.getUTCFullYear(),\n month: i.getUTCMonth() + 1,\n day: i.getUTCDate()\n } : null, e = s ? {\n year: s.getUTCFullYear(),\n month: s.getUTCMonth() + 1,\n day: s.getUTCDate()\n } : null;\n return r === \"year\" ? { min: n?.year ?? 1, max: e?.year ?? 9999 } : r === \"month\" ? {\n min: n && t.year === n.year ? n.month : 1,\n max: e && t.year === e.year ? e.month : 12\n } : {\n min: n && t.year === n.year && t.month === n.month ? n.day : 1,\n max: e && t.year === e.year && t.month === e.month ? e.day : c(t.year, t.month)\n };\n}\nclass U extends V {\n #i;\n #o;\n #t;\n #h;\n #u;\n #e = { segmentIndex: 0, positionInSegment: 0 };\n #n = true;\n #s = null;\n inlineError = \"\";\n get segmentCursor() {\n return { ...this.#e };\n }\n get segmentValues() {\n return { ...this.#t };\n }\n get segments() {\n return this.#i;\n }\n get separator() {\n return this.#o;\n }\n get formattedValue() {\n return this.#l(this.#t);\n }\n #l(t) {\n return this.#i.map((i) => t[i.type]).join(this.#o);\n }\n #r() {\n this._setUserInput(this.#l(this.#t)), this._setValue(C(this.#t) ?? void 0);\n }\n constructor(t) {\n const i = t.format ? { segments: M(t.format), separator: t.separator ?? \"/\" } : P(t.locale), s = t.separator ?? i.separator, n = t.format ? M(t.format) : i.segments, e = t.initialValue ?? t.defaultValue, m = e ? {\n year: String(e.getUTCFullYear()).padStart(4, \"0\"),\n month: String(e.getUTCMonth() + 1).padStart(2, \"0\"),\n day: String(e.getUTCDate()).padStart(2, \"0\")\n } : { year: \"____\", month: \"__\", day: \"__\" }, o = n.map((a) => m[a.type]).join(s);\n super({ ...t, initialUserInput: o }, false), this.#i = n, this.#o = s, this.#t = m, this.#h = t.minDate, this.#u = t.maxDate, this.#r(), this.on(\"cursor\", (a) => this.#f(a)), this.on(\"key\", (a, u) => this.#y(a, u)), this.on(\"finalize\", () => this.#p(t));\n }\n #a() {\n const t = Math.max(0, Math.min(this.#e.segmentIndex, this.#i.length - 1)), i = this.#i[t];\n if (i)\n return this.#e.positionInSegment = Math.max(\n 0,\n Math.min(this.#e.positionInSegment, i.len - 1)\n ), { segment: i, index: t };\n }\n #m(t) {\n this.inlineError = \"\", this.#s = null;\n const i = this.#a();\n i && (this.#e.segmentIndex = Math.max(\n 0,\n Math.min(this.#i.length - 1, i.index + t)\n ), this.#e.positionInSegment = 0, this.#n = true);\n }\n #d(t) {\n const i = this.#a();\n if (!i) return;\n const { segment: s } = i, n = this.#t[s.type], e = !n || n.replace(/_/g, \"\") === \"\", m = Number.parseInt((n || \"0\").replace(/_/g, \"0\"), 10) || 0, o = T(\n s.type,\n f(this.#t),\n this.#h,\n this.#u\n );\n let a;\n e ? a = t === 1 ? o.min : o.max : a = Math.max(Math.min(o.max, m + t), o.min), this.#t = {\n ...this.#t,\n [s.type]: a.toString().padStart(s.len, \"0\")\n }, this.#n = true, this.#s = null, this.#r();\n }\n #f(t) {\n if (t)\n switch (t) {\n case \"right\":\n return this.#m(1);\n case \"left\":\n return this.#m(-1);\n case \"up\":\n return this.#d(1);\n case \"down\":\n return this.#d(-1);\n }\n }\n #y(t, i) {\n if (i?.name === \"backspace\" || i?.sequence === \"\\x7F\" || i?.sequence === \"\\b\" || t === \"\\x7F\" || t === \"\\b\") {\n this.inlineError = \"\";\n const n = this.#a();\n if (!n) return;\n if (!this.#t[n.segment.type].replace(/_/g, \"\")) {\n this.#m(-1);\n return;\n }\n this.#t[n.segment.type] = \"_\".repeat(n.segment.len), this.#n = true, this.#e.positionInSegment = 0, this.#r();\n return;\n }\n if (i?.name === \"tab\") {\n this.inlineError = \"\";\n const n = this.#a();\n if (!n) return;\n const e = i.shift ? -1 : 1, m = n.index + e;\n m >= 0 && m < this.#i.length && (this.#e.segmentIndex = m, this.#e.positionInSegment = 0, this.#n = true);\n return;\n }\n if (t && /^[0-9]$/.test(t)) {\n const n = this.#a();\n if (!n) return;\n const { segment: e } = n, m = !this.#t[e.type].replace(/_/g, \"\");\n if (this.#n && this.#s !== null && !m) {\n const h = this.#s + t, d = { ...this.#t, [e.type]: h }, g = this.#g(d, e);\n if (g) {\n this.inlineError = g, this.#s = null, this.#n = false;\n return;\n }\n this.inlineError = \"\", this.#t[e.type] = h, this.#s = null, this.#n = false, this.#r(), n.index < this.#i.length - 1 && (this.#e.segmentIndex = n.index + 1, this.#e.positionInSegment = 0, this.#n = true);\n return;\n }\n this.#n && !m && (this.#t[e.type] = \"_\".repeat(e.len), this.#e.positionInSegment = 0), this.#n = false, this.#s = null;\n const o = this.#t[e.type], a = o.indexOf(\"_\"), u = a >= 0 ? a : Math.min(this.#e.positionInSegment, e.len - 1);\n if (u < 0 || u >= e.len) return;\n let l = o.slice(0, u) + t + o.slice(u + 1), D = false;\n if (u === 0 && o === \"__\" && (e.type === \"month\" || e.type === \"day\")) {\n const h = Number.parseInt(t, 10);\n l = `0${t}`, D = h <= (e.type === \"month\" ? 1 : 2);\n }\n if (e.type === \"year\" && (l = (o.replace(/_/g, \"\") + t).padStart(e.len, \"_\")), !l.includes(\"_\")) {\n const h = { ...this.#t, [e.type]: l }, d = this.#g(h, e);\n if (d) {\n this.inlineError = d;\n return;\n }\n }\n this.inlineError = \"\", this.#t[e.type] = l;\n const y = l.includes(\"_\") ? void 0 : b(this.#t);\n if (y) {\n const { year: h, month: d } = y, g = c(h, d);\n this.#t = {\n year: String(Math.max(0, Math.min(9999, h))).padStart(4, \"0\"),\n month: String(Math.max(1, Math.min(12, d))).padStart(2, \"0\"),\n day: String(Math.max(1, Math.min(g, y.day))).padStart(2, \"0\")\n };\n }\n this.#r();\n const S = l.indexOf(\"_\");\n D ? (this.#n = true, this.#s = t) : S >= 0 ? this.#e.positionInSegment = S : a >= 0 && n.index < this.#i.length - 1 ? (this.#e.segmentIndex = n.index + 1, this.#e.positionInSegment = 0, this.#n = true) : this.#e.positionInSegment = Math.min(u + 1, e.len - 1);\n }\n }\n #g(t, i) {\n const { month: s, day: n } = f(t);\n if (i.type === \"month\" && (s < 0 || s > 12))\n return settings.date.messages.invalidMonth;\n if (i.type === \"day\" && (n < 0 || n > 31))\n return settings.date.messages.invalidDay(31, \"any month\");\n }\n #p(t) {\n const { year: i, month: s, day: n } = f(this.#t);\n if (i && s && n) {\n const e = c(i, s);\n this.#t = {\n ...this.#t,\n day: String(Math.min(n, e)).padStart(2, \"0\")\n };\n }\n this.value = C(this.#t) ?? t.defaultValue ?? void 0;\n }\n}\n\nlet u$2 = class u extends V {\n options;\n cursor = 0;\n #t;\n getGroupItems(t) {\n return this.options.filter((r) => r.group === t);\n }\n isGroupSelected(t) {\n const r = this.getGroupItems(t), e = this.value;\n return e === void 0 ? false : r.every((s) => e.includes(s.value));\n }\n toggleValue() {\n const t = this.options[this.cursor];\n if (t !== void 0)\n if (this.value === void 0 && (this.value = []), t.group === true) {\n const r = t.value, e = this.getGroupItems(r);\n this.isGroupSelected(r) ? this.value = this.value.filter(\n (s) => e.findIndex((i) => i.value === s) === -1\n ) : this.value = [...this.value, ...e.map((s) => s.value)], this.value = Array.from(new Set(this.value));\n } else {\n const r = this.value.includes(t.value);\n this.value = r ? this.value.filter((e) => e !== t.value) : [...this.value, t.value];\n }\n }\n constructor(t) {\n super(t, false);\n const { options: r } = t;\n this.#t = t.selectableGroups !== false, this.options = Object.entries(r).flatMap(([e, s]) => [\n { value: e, group: true, label: e },\n ...s.map((i) => ({ ...i, group: e }))\n ]), this.value = [...t.initialValues ?? []], this.cursor = Math.max(\n this.options.findIndex(({ value: e }) => e === t.cursorAt),\n this.#t ? 0 : 1\n ), this.on(\"cursor\", (e) => {\n switch (e) {\n case \"left\":\n case \"up\": {\n this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n const s = this.options[this.cursor]?.group === true;\n !this.#t && s && (this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1);\n break;\n }\n case \"down\":\n case \"right\": {\n this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n const s = this.options[this.cursor]?.group === true;\n !this.#t && s && (this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1);\n break;\n }\n case \"space\":\n this.toggleValue();\n break;\n }\n });\n }\n};\n\nconst o = /* @__PURE__ */ new Set([\"up\", \"down\", \"left\", \"right\"]);\nclass h extends V {\n #t = false;\n #s;\n focused = \"editor\";\n get userInputWithCursor() {\n if (this.state === \"submit\")\n return this.userInput;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${t}\\u2588`;\n const s = t.slice(0, this.cursor), r = t.slice(this.cursor, this.cursor + 1), i = t.slice(this.cursor + 1);\n return r === `\n` ? `${s}\\u2588\n${i}` : `${s}${styleText(\"inverse\", r)}${i}`;\n }\n get cursor() {\n return this._cursor;\n }\n #r(t) {\n if (this.userInput.length === 0) {\n this._setUserInput(t);\n return;\n }\n this._setUserInput(\n this.userInput.slice(0, this.cursor) + t + this.userInput.slice(this.cursor)\n );\n }\n #i(t) {\n const s = this.value ?? \"\";\n switch (t) {\n case \"up\":\n this._cursor = findTextCursor(this._cursor, 0, -1, s);\n return;\n case \"down\":\n this._cursor = findTextCursor(this._cursor, 0, 1, s);\n return;\n case \"left\":\n this._cursor = findTextCursor(this._cursor, -1, 0, s);\n return;\n case \"right\":\n this._cursor = findTextCursor(this._cursor, 1, 0, s);\n return;\n }\n }\n _shouldSubmit(t, s) {\n if (this.#s)\n return this.focused === \"submit\" ? true : (this.#r(`\n`), this._cursor++, false);\n const r = this.#t;\n return this.#t = true, r && this.cursor === this.userInput.length ? (this.userInput[this.cursor - 1] === `\n` && (this._setUserInput(\n this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor)\n ), this._cursor--), true) : (this.#r(`\n`), this._cursor++, false);\n }\n constructor(t) {\n const s = t.initialUserInput ?? t.initialValue;\n super(\n {\n ...t,\n initialUserInput: s\n },\n false\n ), s !== void 0 && (this._cursor = s.length), this.#s = t.showSubmit ?? false, this.on(\"key\", (r, i) => {\n if (i?.name && o.has(i.name)) {\n this.#t = false, this.#i(i.name);\n return;\n }\n if (r === \"\t\" && this.#s) {\n this.focused = this.focused === \"editor\" ? \"submit\" : \"editor\";\n return;\n }\n if (i?.name !== \"return\") {\n if (this.#t = false, i?.name === \"backspace\" && this.cursor > 0) {\n this._setUserInput(\n this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor)\n ), this._cursor--;\n return;\n }\n if (i?.name === \"delete\" && this.cursor < this.userInput.length) {\n this._setUserInput(\n this.userInput.slice(0, this.cursor) + this.userInput.slice(this.cursor + 1)\n );\n return;\n }\n r && (this.#s && this.focused === \"submit\" && (this.focused = \"editor\"), this.#r(r ?? \"\"), this._cursor++);\n }\n }), this.on(\"userInput\", (r) => {\n this._setValue(r);\n }), this.on(\"finalize\", () => {\n this.value || (this.value = t.defaultValue), this.value === void 0 && (this.value = \"\");\n });\n }\n}\n\nclass a extends V {\n options;\n cursor = 0;\n get _value() {\n return this.options[this.cursor]?.value;\n }\n get _enabledOptions() {\n return this.options.filter((e) => e.disabled !== true);\n }\n toggleAll() {\n const e = this._enabledOptions, i = this.value !== void 0 && this.value.length === e.length;\n this.value = i ? [] : e.map((t) => t.value);\n }\n toggleInvert() {\n const e = this.value;\n if (!e)\n return;\n const i = this._enabledOptions.filter((t) => !e.includes(t.value));\n this.value = i.map((t) => t.value);\n }\n toggleValue() {\n this.value === void 0 && (this.value = []);\n const e = this.value.includes(this._value);\n this.value = e ? this.value.filter((i) => i !== this._value) : [...this.value, this._value];\n }\n constructor(e) {\n super(e, false), this.options = e.options, this.value = [...e.initialValues ?? []];\n const i = Math.max(\n this.options.findIndex(({ value: t }) => t === e.cursorAt),\n 0\n );\n this.cursor = this.options[i]?.disabled ? findCursor(i, 1, this.options) : i, this.on(\"key\", (t, l) => {\n l.name === \"a\" && this.toggleAll(), l.name === \"i\" && this.toggleInvert();\n }), this.on(\"cursor\", (t) => {\n switch (t) {\n case \"left\":\n case \"up\":\n this.cursor = findCursor(this.cursor, -1, this.options);\n break;\n case \"down\":\n case \"right\":\n this.cursor = findCursor(this.cursor, 1, this.options);\n break;\n case \"space\":\n this.toggleValue();\n break;\n }\n });\n }\n}\n\nlet u$1 = class u extends V {\n _mask = \"\\u2022\";\n get cursor() {\n return this._cursor;\n }\n get masked() {\n return this.userInput.replaceAll(/./g, this._mask);\n }\n get userInputWithCursor() {\n if (this.state === \"submit\" || this.state === \"cancel\")\n return this.masked;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${this.masked}${styleText([\"inverse\", \"hidden\"], \"_\")}`;\n const s = this.masked, r = s.slice(0, this.cursor), i = s.slice(this.cursor, this.cursor + 1), o = s.slice(this.cursor + 1);\n return `${r}${styleText(\"inverse\", i)}${o}`;\n }\n clear() {\n this._clearUserInput();\n }\n constructor({ mask: t, ...s }) {\n super(s), this._mask = t ?? \"\\u2022\", this.on(\"userInput\", (r) => {\n this._setValue(r);\n }), this.on(\"finalize\", () => {\n this.value === void 0 && (this.value = \"\");\n });\n }\n};\n\nlet n$1 = class n extends V {\n options;\n cursor = 0;\n get _selectedValue() {\n return this.options[this.cursor];\n }\n changeValue() {\n const e = this._selectedValue;\n this.value = e === void 0 ? void 0 : e.value;\n }\n constructor(e) {\n super(e, false), this.options = e.options;\n const o = this.options.findIndex(({ value: s }) => s === e.initialValue), t = o === -1 ? 0 : o;\n this.cursor = this.options[t]?.disabled ? findCursor(t, 1, this.options) : t, this.changeValue(), this.on(\"cursor\", (s) => {\n switch (s) {\n case \"left\":\n case \"up\":\n this.cursor = findCursor(this.cursor, -1, this.options);\n break;\n case \"down\":\n case \"right\":\n this.cursor = findCursor(this.cursor, 1, this.options);\n break;\n }\n this.changeValue();\n });\n }\n};\n\nclass u extends V {\n options;\n cursor = 0;\n constructor(t) {\n super(t, false), this.options = t.options;\n const s = t.caseSensitive === true, i = this.options.map(({ value: [e] }) => s ? e : e?.toLowerCase());\n this.cursor = Math.max(i.indexOf(t.initialValue), 0), this.on(\"key\", (e) => {\n if (!e)\n return;\n const o = s ? e : e.toLowerCase();\n if (!i.includes(o))\n return;\n const n = this.options.find(({ value: [r] }) => s ? r === o : r?.toLowerCase() === o);\n n && (this.value = n.value, this.state = \"submit\", this.emit(\"submit\"));\n });\n }\n}\n\nclass n extends V {\n get userInputWithCursor() {\n if (this.state === \"submit\")\n return this.userInput;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${this.userInput}\\u2588`;\n const r = t.slice(0, this.cursor), s = t.slice(this.cursor, this.cursor + 1), e = t.slice(this.cursor + 1);\n return `${r}${styleText(\"inverse\", s)}${e}`;\n }\n get cursor() {\n return this._cursor;\n }\n constructor(t) {\n super({\n ...t,\n initialUserInput: t.initialUserInput ?? t.initialValue\n }), this.on(\"userInput\", (r) => {\n this._setValue(r);\n }), this.on(\"finalize\", () => {\n this.value || (this.value = t.defaultValue), this.value === void 0 && (this.value = \"\");\n });\n }\n}\n\nexport { T$1 as AutocompletePrompt, r as ConfirmPrompt, U as DatePrompt, u$2 as GroupMultiSelectPrompt, h as MultiLinePrompt, a as MultiSelectPrompt, u$1 as PasswordPrompt, V as Prompt, u as SelectKeyPrompt, n$1 as SelectPrompt, n as TextPrompt, block, getColumns, getRows, isCancel, runValidation, settings, updateSettings, wrapTextWithPrefix };\n","import { getColumns, getRows, AutocompletePrompt, settings, ConfirmPrompt, wrapTextWithPrefix, DatePrompt, runValidation, isCancel, MultiSelectPrompt, GroupMultiSelectPrompt, MultiLinePrompt, PasswordPrompt, block, SelectPrompt, SelectKeyPrompt, TextPrompt } from '@clack/core';\nexport { isCancel, settings, updateSettings } from '@clack/core';\nimport { styleText, stripVTControlCharacters } from 'node:util';\nimport process$1 from 'node:process';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport l from 'fast-string-width';\nimport { existsSync, lstatSync, readdirSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { cursor, erase } from 'sisteransi';\n\nfunction isUnicodeSupported() {\n\tif (process$1.platform !== 'win32') {\n\t\treturn process$1.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process$1.env.CI)\n\t\t|| Boolean(process$1.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process$1.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process$1.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process$1.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process$1.env.TERM_PROGRAM === 'vscode'\n\t\t|| process$1.env.TERM === 'xterm-256color'\n\t\t|| process$1.env.TERM === 'alacritty'\n\t\t|| process$1.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n\nconst unicode = isUnicodeSupported(), isCI = () => process.env.CI === \"true\", isTTY = (o) => o.isTTY === true, unicodeOr = (o, e) => unicode ? o : e, S_STEP_ACTIVE = unicodeOr(\"\\u25C6\", \"*\"), S_STEP_CANCEL = unicodeOr(\"\\u25A0\", \"x\"), S_STEP_ERROR = unicodeOr(\"\\u25B2\", \"x\"), S_STEP_SUBMIT = unicodeOr(\"\\u25C7\", \"o\"), S_BAR_START = unicodeOr(\"\\u250C\", \"T\"), S_BAR = unicodeOr(\"\\u2502\", \"|\"), S_BAR_END = unicodeOr(\"\\u2514\", \"\\u2014\"), S_BAR_START_RIGHT = unicodeOr(\"\\u2510\", \"T\"), S_BAR_END_RIGHT = unicodeOr(\"\\u2518\", \"\\u2014\"), S_RADIO_ACTIVE = unicodeOr(\"\\u25CF\", \">\"), S_RADIO_INACTIVE = unicodeOr(\"\\u25CB\", \" \"), S_CHECKBOX_ACTIVE = unicodeOr(\"\\u25FB\", \"[\\u2022]\"), S_CHECKBOX_SELECTED = unicodeOr(\"\\u25FC\", \"[+]\"), S_CHECKBOX_INACTIVE = unicodeOr(\"\\u25FB\", \"[ ]\"), S_PASSWORD_MASK = unicodeOr(\"\\u25AA\", \"\\u2022\"), S_BAR_H = unicodeOr(\"\\u2500\", \"-\"), S_CORNER_TOP_RIGHT = unicodeOr(\"\\u256E\", \"+\"), S_CONNECT_LEFT = unicodeOr(\"\\u251C\", \"+\"), S_CORNER_BOTTOM_RIGHT = unicodeOr(\"\\u256F\", \"+\"), S_CORNER_BOTTOM_LEFT = unicodeOr(\"\\u2570\", \"+\"), S_CORNER_TOP_LEFT = unicodeOr(\"\\u256D\", \"+\"), S_INFO = unicodeOr(\"\\u25CF\", \"\\u2022\"), S_SUCCESS = unicodeOr(\"\\u25C6\", \"*\"), S_WARN = unicodeOr(\"\\u25B2\", \"!\"), S_ERROR = unicodeOr(\"\\u25A0\", \"x\"), symbol = (o) => {\n switch (o) {\n case \"initial\":\n case \"active\":\n return styleText(\"cyan\", S_STEP_ACTIVE);\n case \"cancel\":\n return styleText(\"red\", S_STEP_CANCEL);\n case \"error\":\n return styleText(\"yellow\", S_STEP_ERROR);\n case \"submit\":\n return styleText(\"green\", S_STEP_SUBMIT);\n }\n}, symbolBar = (o) => {\n switch (o) {\n case \"initial\":\n case \"active\":\n return styleText(\"cyan\", S_BAR);\n case \"cancel\":\n return styleText(\"red\", S_BAR);\n case \"error\":\n return styleText(\"yellow\", S_BAR);\n case \"submit\":\n return styleText(\"green\", S_BAR);\n }\n};\nfunction formatInstructionFooter(o, e) {\n const r = [`${e ? `${styleText(\"cyan\", S_BAR)} ` : \"\"}${o.join(\" \\u2022 \")}`];\n return e && r.push(styleText(\"cyan\", S_BAR_END)), r;\n}\n\nconst I = (l, e, w, p, b, C = false) => {\n let r = e, O = 0;\n if (C)\n for (let i = p - 1; i >= w; i--) {\n const m = l[i];\n if (m && (r -= m.length), O++, r <= b) break;\n }\n else\n for (let i = w; i < p; i++) {\n const m = l[i];\n if (m && (r -= m.length), O++, r <= b) break;\n }\n return { lineCount: r, removals: O };\n};\nconst limitOptions = ({\n cursor: l,\n options: e,\n style: w,\n output: p = process.stdout,\n maxItems: b = Number.POSITIVE_INFINITY,\n columnPadding: C = 0,\n rowPadding: r = 4\n}) => {\n const i = getColumns(p) - C, m = getRows(p), M = styleText(\"dim\", \"...\"), v = Math.max(m - r, 0), a = Math.max(Math.min(b, v), 5);\n let f = 0;\n l >= a - 3 && (f = Math.max(\n Math.min(l - a + 3, e.length - a),\n 0\n ));\n let d = a < e.length && f > 0, c = a < e.length && f + a < e.length;\n const W = Math.min(\n f + a,\n e.length\n ), s = [];\n let g = 0;\n d && g++, c && g++;\n const T = f + (d ? 1 : 0), y = W - (c ? 1 : 0);\n for (let t = T; t < y; t++) {\n const n = e[t], o = n ? w(n, t === l) : \"\", h = wrapAnsi(o, i, {\n hard: true,\n trim: false\n }).split(`\n`);\n s.push(h), g += h.length;\n }\n if (g > v) {\n let t = 0, n = 0, o = g;\n const h = l - T;\n let u = v;\n const L = () => I(s, o, 0, h, u), E = () => I(\n s,\n o,\n h + 1,\n s.length,\n u,\n true\n );\n d ? ({ lineCount: o, removals: t } = L(), o > u && (c || (u -= 1), { lineCount: o, removals: n } = E())) : (c || (u -= 1), { lineCount: o, removals: n } = E(), o > u && (u -= 1, { lineCount: o, removals: t } = L())), t > 0 && (d = true, s.splice(0, t)), n > 0 && (c = true, s.splice(s.length - n, n));\n }\n const x = [];\n d && x.push(M);\n for (const t of s)\n for (const n of t)\n x.push(n);\n return c && x.push(M), x;\n};\n\nfunction P(t) {\n return t.label ?? String(t.value ?? \"\");\n}\nfunction E(t, c) {\n if (!t)\n return true;\n const n = (c.label ?? String(c.value ?? \"\")).toLowerCase(), i = (c.hint ?? \"\").toLowerCase(), l = String(c.value).toLowerCase(), o = t.toLowerCase();\n return n.includes(o) || i.includes(o) || l.includes(o);\n}\nfunction N(t, c) {\n const n = [];\n for (const i of c)\n t.includes(i.value) && n.push(i);\n return n;\n}\nconst autocomplete = (t) => new AutocompletePrompt({\n options: t.options,\n initialValue: t.initialValue ? [t.initialValue] : void 0,\n initialUserInput: t.initialUserInput,\n placeholder: t.placeholder,\n filter: t.filter ?? ((n, i) => E(n, i)),\n signal: t.signal,\n input: t.input,\n output: t.output,\n validate: t.validate,\n render() {\n const n = t.withGuide ?? settings.withGuide, i = n ? [`${styleText(\"gray\", S_BAR)}`, `${symbol(this.state)} ${t.message}`] : [`${symbol(this.state)} ${t.message}`], l = this.userInput, o = this.options, m = t.placeholder, p = l === \"\" && m !== void 0, $ = (r, s) => {\n const a = P(r), u = r.hint && r.value === this.focusedValue ? styleText(\"dim\", ` (${r.hint})`) : \"\";\n switch (s) {\n case \"active\":\n return `${styleText(\"green\", S_RADIO_ACTIVE)} ${a}${u}`;\n case \"inactive\":\n return `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", a)}`;\n case \"disabled\":\n return `${styleText(\"gray\", S_RADIO_INACTIVE)} ${styleText([\"strikethrough\", \"gray\"], a)}`;\n }\n };\n switch (this.state) {\n case \"submit\": {\n const r = N(this.selectedValues, o), s = r.length > 0 ? ` ${styleText(\"dim\", r.map(P).join(\", \"))}` : \"\", a = n ? styleText(\"gray\", S_BAR) : \"\";\n return `${i.join(`\n`)}\n${a}${s}`;\n }\n case \"cancel\": {\n const r = l ? ` ${styleText([\"strikethrough\", \"dim\"], l)}` : \"\", s = n ? styleText(\"gray\", S_BAR) : \"\";\n return `${i.join(`\n`)}\n${s}${r}`;\n }\n default: {\n const r = this.state === \"error\" ? \"yellow\" : \"cyan\", s = n ? `${styleText(r, S_BAR)} ` : \"\", a = n ? styleText(r, S_BAR_END) : \"\";\n let u = \"\";\n if (this.isNavigating || p) {\n const d = p ? m : l;\n u = d !== \"\" ? ` ${styleText(\"dim\", d)}` : \"\";\n } else\n u = ` ${this.userInputWithCursor}`;\n const V = this.filteredOptions.length !== o.length ? styleText(\n \"dim\",\n ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? \"\" : \"es\"})`\n ) : \"\", y = this.filteredOptions.length === 0 && l ? [`${s}${styleText(\"yellow\", \"No matches found\")}`] : [], b = this.state === \"error\" ? [`${s}${styleText(\"yellow\", this.error)}`] : [];\n n && i.push(`${s.trimEnd()}`), i.push(\n `${s}${styleText(\"dim\", \"Search:\")}${u}${V}`,\n ...y,\n ...b\n );\n const v = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`,\n `${styleText(\"dim\", \"Type:\")} to search`\n ], g = [`${s}${v.join(\" \\u2022 \")}`, a], O = this.filteredOptions.length === 0 ? [] : limitOptions({\n cursor: this.cursor,\n options: this.filteredOptions,\n columnPadding: n ? 3 : 0,\n // for `| ` when guide is shown\n rowPadding: i.length + g.length,\n style: (d, f) => $(\n d,\n d.disabled ? \"disabled\" : f ? \"active\" : \"inactive\"\n ),\n maxItems: t.maxItems,\n output: t.output\n });\n return [\n ...i,\n ...O.map((d) => `${s}${d}`),\n ...g\n ].join(`\n`);\n }\n }\n }\n}).prompt(), autocompleteMultiselect = (t) => {\n const c = (i, l, o, m) => {\n const p = o.includes(i.value), $ = i.label ?? String(i.value ?? \"\"), r = i.hint && m !== void 0 && i.value === m ? styleText(\"dim\", ` (${i.hint})`) : \"\", s = p ? styleText(\"green\", S_CHECKBOX_SELECTED) : styleText(\"dim\", S_CHECKBOX_INACTIVE);\n return i.disabled ? `${styleText(\"gray\", S_CHECKBOX_INACTIVE)} ${styleText([\"strikethrough\", \"gray\"], $)}` : l ? `${s} ${$}${r}` : `${s} ${styleText(\"dim\", $)}`;\n }, n = new AutocompletePrompt({\n options: t.options,\n multiple: true,\n placeholder: t.placeholder,\n filter: t.filter ?? ((i, l) => E(i, l)),\n validate: () => {\n if (t.required && n.selectedValues.length === 0)\n return \"Please select at least one item\";\n },\n initialValue: t.initialValues,\n signal: t.signal,\n input: t.input,\n output: t.output,\n render() {\n const i = t.withGuide ?? settings.withGuide, l = `${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${t.message}\n`, o = this.userInput, m = t.placeholder, p = o === \"\" && m !== void 0, $ = this.isNavigating || p ? styleText(\"dim\", p ? m : o) : this.userInputWithCursor, r = this.options, s = this.filteredOptions.length !== r.length ? styleText(\n \"dim\",\n ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? \"\" : \"es\"})`\n ) : \"\";\n switch (this.state) {\n case \"submit\":\n return `${l}${i ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${styleText(\n \"dim\",\n `${this.selectedValues.length} items selected`\n )}`;\n case \"cancel\":\n return `${l}${i ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${styleText(\n [\"strikethrough\", \"dim\"],\n o\n )}`;\n default: {\n const a = this.state === \"error\" ? \"yellow\" : \"cyan\", u = i ? `${styleText(a, S_BAR)} ` : \"\", V = i ? styleText(a, S_BAR_END) : \"\", y = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", this.isNavigating ? \"Space/Tab:\" : \"Tab:\")} select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`,\n `${styleText(\"dim\", \"Type:\")} to search`\n ], b = this.filteredOptions.length === 0 && o ? [`${u}${styleText(\"yellow\", \"No matches found\")}`] : [], v = this.state === \"error\" ? [`${u}${styleText(\"yellow\", this.error)}`] : [], g = [\n ...`${l}${i ? styleText(a, S_BAR) : \"\"}`.split(`\n`),\n `${u}${styleText(\"dim\", \"Search:\")} ${$}${s}`,\n ...b,\n ...v\n ], O = [`${u}${y.join(\" \\u2022 \")}`, V], d = limitOptions({\n cursor: this.cursor,\n options: this.filteredOptions,\n style: (f, _) => c(f, _, this.selectedValues, this.focusedValue),\n maxItems: t.maxItems,\n output: t.output,\n rowPadding: g.length + O.length\n });\n return [\n ...g,\n ...d.map((f) => `${u}${f}`),\n ...O\n ].join(`\n`);\n }\n }\n }\n });\n return n.prompt();\n};\n\nconst J = [\n S_CORNER_TOP_LEFT,\n S_CORNER_TOP_RIGHT,\n S_CORNER_BOTTOM_LEFT,\n S_CORNER_BOTTOM_RIGHT\n], K = [S_BAR_START, S_BAR_START_RIGHT, S_BAR_END, S_BAR_END_RIGHT];\nfunction A$1(n, e, t, o) {\n let i = t, f = t;\n return o === \"center\" ? i = Math.floor((e - n) / 2) : o === \"right\" && (i = e - n - t), f = e - i - n, [i, f];\n}\nconst Q = (n) => n;\nconst box = (n = \"\", e = \"\", t) => {\n const o = t?.output ?? process.stdout, i = getColumns(o), R = 1 * 2, u = t?.titlePadding ?? 1, h = t?.contentPadding ?? 2, w = t?.width === void 0 || t.width === \"auto\" ? 1 : Math.min(1, t.width), m = t?.withGuide ?? settings.withGuide ? `${S_BAR} ` : \"\", b = t?.formatBorder ?? Q, a = (t?.rounded ? J : K).map(b), _ = b(S_BAR_H), B = b(S_BAR), p = l(m), x = l(e), O = i - p;\n let r = Math.floor(i * w) - p;\n if (t?.width === \"auto\") {\n const c = n.split(`\n`);\n let s = x + u * 2;\n for (const G of c) {\n const P = l(G) + h * 2;\n P > s && (s = P);\n }\n const g = s + R;\n g < r && (r = g);\n }\n r % 2 !== 0 && (r < O ? r++ : r--);\n const d = r - R, S = d - u * 2, T = x > S ? `${e.slice(0, S - 3)}...` : e, [y, W] = A$1(\n l(T),\n d,\n u,\n t?.titleAlign\n ), L = wrapAnsi(n, d - h * 2, {\n hard: true,\n trim: false\n });\n o.write(\n `${m}${a[0]}${_.repeat(y)}${T}${_.repeat(W)}${a[1]}\n`\n );\n const E = L.split(`\n`);\n for (const c of E) {\n const [s, g] = A$1(\n l(c),\n d,\n h,\n t?.contentAlign\n );\n o.write(\n `${m}${B}${\" \".repeat(s)}${c}${\" \".repeat(g)}${B}\n`\n );\n }\n o.write(`${m}${a[2]}${_.repeat(d)}${a[3]}\n`);\n};\n\nconst confirm = (i) => {\n const a = i.active ?? \"Yes\", s = i.inactive ?? \"No\";\n return new ConfirmPrompt({\n active: a,\n inactive: s,\n signal: i.signal,\n input: i.input,\n output: i.output,\n initialValue: i.initialValue ?? true,\n render() {\n const e = i.withGuide ?? settings.withGuide, u = `${symbol(this.state)} `, l = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", f = wrapTextWithPrefix(\n i.output,\n i.message,\n l,\n u\n ), o = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${f}\n`, c = this.value ? a : s;\n switch (this.state) {\n case \"submit\": {\n const r = e ? `${styleText(\"gray\", S_BAR)} ` : \"\";\n return `${o}${r}${styleText(\"dim\", c)}`;\n }\n case \"cancel\": {\n const r = e ? `${styleText(\"gray\", S_BAR)} ` : \"\";\n return `${o}${r}${styleText([\"strikethrough\", \"dim\"], c)}${e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const r = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", g = e ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${o}${r}${this.value ? `${styleText(\"green\", S_RADIO_ACTIVE)} ${a}` : `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", a)}`}${i.vertical ? e ? `\n${styleText(\"cyan\", S_BAR)} ` : `\n` : ` ${styleText(\"dim\", \"/\")} `}${this.value ? `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", s)}` : `${styleText(\"green\", S_RADIO_ACTIVE)} ${s}`}\n${g}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst date = (e) => {\n const r = e.validate;\n return new DatePrompt({\n ...e,\n validate(t) {\n if (t === void 0)\n return e.defaultValue !== void 0 ? void 0 : r ? runValidation(r, t) : settings.date.messages.required;\n const o = (i) => i.toISOString().slice(0, 10);\n if (e.minDate && o(t) < o(e.minDate))\n return settings.date.messages.afterMin(e.minDate);\n if (e.maxDate && o(t) > o(e.maxDate))\n return settings.date.messages.beforeMax(e.maxDate);\n if (r) return runValidation(r, t);\n },\n render() {\n const t = (e?.withGuide ?? settings.withGuide) !== false, i = `${`${t ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, l = this.state !== \"initial\" ? this.state : \"active\", d = b(this, l), c = this.value instanceof Date ? this.formattedValue : \"\";\n switch (this.state) {\n case \"error\": {\n const a = this.error ? ` ${styleText(\"yellow\", this.error)}` : \"\", s = t ? `${styleText(\"yellow\", S_BAR)} ` : \"\", f = t ? styleText(\"yellow\", S_BAR_END) : \"\";\n return `${i.trim()}\n${s}${d}\n${f}${a}\n`;\n }\n case \"submit\": {\n const a = c ? ` ${styleText(\"dim\", c)}` : \"\", s = t ? styleText(\"gray\", S_BAR) : \"\";\n return `${i}${s}${a}`;\n }\n case \"cancel\": {\n const a = c ? ` ${styleText([\"strikethrough\", \"dim\"], c)}` : \"\", s = t ? styleText(\"gray\", S_BAR) : \"\";\n return `${i}${s}${a}${c.trim() ? `\n${s}` : \"\"}`;\n }\n default: {\n const a = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = t ? styleText(\"cyan\", S_BAR_END) : \"\", f = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", g = this.inlineError ? `\n${f}${styleText(\"yellow\", this.inlineError)}` : \"\";\n return `${i}${a}${d}${g}\n${s}\n`;\n }\n }\n }\n }).prompt();\n};\nfunction b(e, r) {\n const t = e.segmentValues, o = e.segmentCursor;\n if (r === \"submit\" || r === \"cancel\")\n return e.formattedValue;\n const i = styleText(\"gray\", e.separator);\n return e.segments.map((l, d) => {\n const c = d === o.segmentIndex && ![\"submit\", \"cancel\"].includes(r), a = p[l.type];\n return x(t[l.type], { isActive: c, label: a });\n }).join(i);\n}\nfunction x(e, r) {\n const t = !e || e.replace(/_/g, \"\") === \"\";\n return r.isActive ? styleText(\"inverse\", t ? r.label : e.replace(/_/g, \" \")) : t ? styleText(\"dim\", r.label) : e.replace(/_/g, styleText(\"dim\", \" \"));\n}\nconst p = {\n year: \"yyyy\",\n month: \"mm\",\n day: \"dd\"\n};\n\nconst group = async (o, r) => {\n const t = {}, p = Object.keys(o);\n for (const e of p) {\n const i = o[e], n = await i({ results: t })?.catch((a) => {\n throw a;\n });\n if (typeof r?.onCancel == \"function\" && isCancel(n)) {\n t[e] = \"canceled\", r.onCancel({ results: t });\n continue;\n }\n t[e] = n;\n }\n return t;\n};\n\nconst MULTISELECT_INSTRUCTIONS = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", \"Space:\")} select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`\n];\nconst m = (i, u) => i.split(`\n`).map((d) => u(d)).join(`\n`);\nconst multiselect = (i) => {\n const u = (t, a) => {\n const r = t.label ?? String(t.value);\n return a === \"disabled\" ? `${styleText(\"gray\", S_CHECKBOX_INACTIVE)} ${m(r, (o) => styleText([\"strikethrough\", \"gray\"], o))}${t.hint ? ` ${styleText(\"dim\", `(${t.hint ?? \"disabled\"})`)}` : \"\"}` : a === \"active\" ? `${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} ${r}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"selected\" ? `${styleText(\"green\", S_CHECKBOX_SELECTED)} ${m(r, (o) => styleText(\"dim\", o))}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"cancelled\" ? `${m(r, (o) => styleText([\"strikethrough\", \"dim\"], o))}` : a === \"active-selected\" ? `${styleText(\"green\", S_CHECKBOX_SELECTED)} ${r}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"submitted\" ? `${m(r, (o) => styleText(\"dim\", o))}` : `${styleText(\"dim\", S_CHECKBOX_INACTIVE)} ${m(r, (o) => styleText(\"dim\", o))}`;\n }, d = i.required ?? true, v = i.showInstructions ?? true;\n return new MultiSelectPrompt({\n options: i.options,\n signal: i.signal,\n input: i.input,\n output: i.output,\n initialValues: i.initialValues,\n required: d,\n cursorAt: i.cursorAt,\n validate(t) {\n if (d && (t === void 0 || t.length === 0))\n return `Please select at least one option.\n${styleText(\n \"reset\",\n styleText(\n \"dim\",\n `Press ${styleText([\"gray\", \"bgWhite\", \"inverse\"], \" space \")} to select, ${styleText(\n \"gray\",\n styleText(\"bgWhite\", styleText(\"inverse\", \" enter \"))\n )} to submit`\n )\n )}`;\n },\n render() {\n const t = i.withGuide ?? settings.withGuide, a = wrapTextWithPrefix(\n i.output,\n i.message,\n t ? `${symbolBar(this.state)} ` : \"\",\n `${symbol(this.state)} `\n ), r = `${t ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${a}\n`, o = this.value ?? [], p = (n, l) => {\n if (n.disabled)\n return u(n, \"disabled\");\n const s = o.includes(n.value);\n return l && s ? u(n, \"active-selected\") : s ? u(n, \"selected\") : u(n, l ? \"active\" : \"inactive\");\n };\n switch (this.state) {\n case \"submit\": {\n const n = this.options.filter(({ value: s }) => o.includes(s)).map((s) => u(s, \"submitted\")).join(styleText(\"dim\", \", \")) || styleText(\"dim\", \"none\"), l = wrapTextWithPrefix(\n i.output,\n n,\n t ? `${styleText(\"gray\", S_BAR)} ` : \"\"\n );\n return `${r}${l}`;\n }\n case \"cancel\": {\n const n = this.options.filter(({ value: s }) => o.includes(s)).map((s) => u(s, \"cancelled\")).join(styleText(\"dim\", \", \"));\n if (n.trim() === \"\")\n return `${r}${styleText(\"gray\", S_BAR)}`;\n const l = wrapTextWithPrefix(\n i.output,\n n,\n t ? `${styleText(\"gray\", S_BAR)} ` : \"\"\n );\n return `${r}${l}${t ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n case \"error\": {\n const n = t ? `${styleText(\"yellow\", S_BAR)} ` : \"\", l = this.error.split(`\n`).map(\n ($, C) => C === 0 ? `${t ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\"}${styleText(\"yellow\", $)}` : ` ${$}`\n ).join(`\n`), s = r.split(`\n`).length, h = l.split(`\n`).length + 1;\n return `${r}${n}${limitOptions({\n output: i.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: i.maxItems,\n columnPadding: n.length,\n rowPadding: s + h,\n style: p\n }).join(`\n${n}`)}\n${l}\n`;\n }\n default: {\n const n = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", l = r.split(`\n`).length, s = v ? formatInstructionFooter(MULTISELECT_INSTRUCTIONS, t) : t ? [styleText(\"cyan\", S_BAR_END)] : [], h = s.join(`\n`), $ = s.length + 1;\n return `${r}${n}${limitOptions({\n output: i.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: i.maxItems,\n columnPadding: n.length,\n rowPadding: l + $,\n style: p\n }).join(`\n${n}`)}\n${h}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst groupMultiselect = (o) => {\n const { selectableGroups: h = true, groupSpacing: x = 0 } = o, m = (n, l, g = []) => {\n const a = n.label ?? String(n.value), t = typeof n.group == \"string\", s = t && (g[g.indexOf(n) + 1] ?? { group: true }), u = t && s && s.group === true;\n let r = \"\", c = \"\";\n t && (h ? (r = u ? `${S_BAR_END} ` : `${S_BAR} `, c = u ? \" \" : `${S_BAR} `) : r = \" \");\n let i = \"\";\n if (x > 0 && !t && (i = `\n`.repeat(x)), l === \"active\")\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} `,\n `${i}${styleText(\"dim\", c)} `\n );\n if (l === \"group-active\")\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${r} `,\n `${i}${r}${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} `,\n `${i}${c} `,\n (d) => styleText(\"dim\", d)\n );\n if (l === \"group-active-selected\")\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${r} `,\n `${i}${r}${styleText(\"green\", S_CHECKBOX_SELECTED)} `,\n `${i}${c} `,\n (d) => styleText(\"dim\", d)\n );\n if (l === \"selected\") {\n const d = t || h ? styleText(\"green\", S_CHECKBOX_SELECTED) : \"\";\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` (${n.hint})` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${d} `,\n `${i}${styleText(\"dim\", c)} `,\n (S) => styleText(\"dim\", S)\n );\n }\n if (l === \"cancelled\")\n return `${styleText([\"strikethrough\", \"dim\"], a)}`;\n if (l === \"active-selected\")\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${styleText(\"green\", S_CHECKBOX_SELECTED)} `,\n `${i}${styleText(\"dim\", c)} `\n );\n if (l === \"submitted\")\n return `${styleText(\"dim\", a)}`;\n const f = t || h ? styleText(\"dim\", S_CHECKBOX_INACTIVE) : \"\";\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${f} `,\n `${i}${styleText(\"dim\", c)} `,\n (d) => styleText(\"dim\", d)\n );\n }, y = o.required ?? true, I = o.showInstructions ?? true;\n return new GroupMultiSelectPrompt({\n options: o.options,\n signal: o.signal,\n input: o.input,\n output: o.output,\n initialValues: o.initialValues,\n required: y,\n cursorAt: o.cursorAt,\n selectableGroups: h,\n validate(n) {\n if (y && (n === void 0 || n.length === 0))\n return `Please select at least one option.\n${styleText(\n \"reset\",\n styleText(\n \"dim\",\n `Press ${styleText([\"gray\", \"bgWhite\", \"inverse\"], \" space \")} to select, ${styleText(\n \"gray\",\n styleText([\"bgWhite\", \"inverse\"], \" enter \")\n )} to submit`\n )\n )}`;\n },\n render() {\n const n = o.withGuide ?? settings.withGuide, l = `${n ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${o.message}\n`, g = this.value ?? [], a = (t, s) => {\n const u = this.options, r = g.includes(t.value) || t.group === true && this.isGroupSelected(`${t.value}`);\n return !s && typeof t.group == \"string\" && this.options[this.cursor]?.value === t.group ? m(t, r ? \"group-active-selected\" : \"group-active\", u) : s && r ? m(t, \"active-selected\", u) : r ? m(t, \"selected\", u) : m(t, s ? \"active\" : \"inactive\", u);\n };\n switch (this.state) {\n case \"submit\": {\n const t = this.options.filter(({ value: u }) => g.includes(u)).map((u) => m(u, \"submitted\")), s = t.length === 0 ? \"\" : ` ${t.join(styleText(\"dim\", \", \"))}`;\n return `${l}${n ? styleText(\"gray\", S_BAR) : \"\"}${s}`;\n }\n case \"cancel\": {\n const t = this.options.filter(({ value: s }) => g.includes(s)).map((s) => m(s, \"cancelled\")).join(styleText(\"dim\", \", \"));\n return `${l}${n ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${t.trim() ? `${t}${n ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}` : \"\"}`;\n }\n case \"error\": {\n const t = n ? `${styleText(\"yellow\", S_BAR)} ` : \"\", s = this.error.split(`\n`).map(\n (i, f) => f === 0 ? `${n ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\"}${styleText(\"yellow\", i)}` : ` ${i}`\n ).join(`\n`), u = l.split(`\n`).length, r = s.split(`\n`).length + 1, c = limitOptions({\n output: o.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: o.maxItems,\n columnPadding: t.length,\n rowPadding: u + r,\n style: a\n }).join(`\n${t}`);\n return `${l}${t}${c}\n${s}\n`;\n }\n default: {\n const t = n ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = l.split(`\n`).length, u = I ? formatInstructionFooter(MULTISELECT_INSTRUCTIONS, n) : n ? [styleText(\"cyan\", S_BAR_END)] : [], r = u.join(`\n`), c = u.length + 1, i = limitOptions({\n output: o.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: o.maxItems,\n columnPadding: t.length,\n rowPadding: s + c,\n style: a\n }).join(`\n${t}`);\n return `${l}${t}${i}\n${r}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst log = {\n message: (s = [], {\n symbol: e = styleText(\"gray\", S_BAR),\n secondarySymbol: r = styleText(\"gray\", S_BAR),\n output: m = process.stdout,\n spacing: l = 1,\n withGuide: c\n } = {}) => {\n const t = [], o = c ?? settings.withGuide, f = o ? r : \"\", O = o ? `${e} ` : \"\", u = o ? `${r} ` : \"\";\n for (let i = 0; i < l; i++)\n t.push(f);\n const g = Array.isArray(s) ? s : s.split(`\n`);\n if (g.length > 0) {\n const [i, ...y] = g;\n i.length > 0 ? t.push(`${O}${i}`) : t.push(o ? e : \"\");\n for (const p of y)\n p.length > 0 ? t.push(`${u}${p}`) : t.push(o ? r : \"\");\n }\n m.write(`${t.join(`\n`)}\n`);\n },\n info: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"blue\", S_INFO) });\n },\n success: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"green\", S_SUCCESS) });\n },\n step: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"green\", S_STEP_SUBMIT) });\n },\n warn: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"yellow\", S_WARN) });\n },\n /** alias for `log.warn()`. */\n warning: (s, e) => {\n log.warn(s, e);\n },\n error: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"red\", S_ERROR) });\n }\n};\n\nconst cancel = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR_END)} ` : \"\";\n i.write(`${e}${styleText(\"red\", o)}\n\n`);\n}, intro = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR_START)} ` : \"\";\n i.write(`${e}${o}\n`);\n}, outro = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR)}\n${styleText(\"gray\", S_BAR_END)} ` : \"\";\n i.write(`${e}${o}\n\n`);\n};\n\nconst multiline = (e) => new MultiLinePrompt({\n validate: e.validate,\n placeholder: e.placeholder,\n defaultValue: e.defaultValue,\n initialValue: e.initialValue,\n showSubmit: e.showSubmit,\n output: e.output,\n signal: e.signal,\n input: e.input,\n render() {\n const i = e?.withGuide ?? settings.withGuide, o = `${`${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, m = e.placeholder && e.placeholder.length > 0 ? (\n // biome-ignore lint/style/noNonNullAssertion: guarded by placeholder.length > 0\n styleText(\"inverse\", e.placeholder[0]) + styleText(\"dim\", e.placeholder.slice(1))\n ) : styleText([\"inverse\", \"hidden\"], \"_\"), a = this.userInput ? this.userInputWithCursor : m, l = this.value ?? \"\", c = e.showSubmit ? `\n ${styleText(this.focused === \"submit\" ? \"cyan\" : \"dim\", \"[ submit ]\")}` : \"\";\n switch (this.state) {\n case \"error\": {\n const n = `${styleText(\"yellow\", S_BAR)} `, r = i ? wrapTextWithPrefix(e.output, a, n, void 0) : a, u = styleText(\"yellow\", S_BAR_END);\n return `${o}${r}\n${u} ${styleText(\"yellow\", this.error)}${c}\n`;\n }\n case \"submit\": {\n const n = `${styleText(\"gray\", S_BAR)} `, r = i ? wrapTextWithPrefix(\n e.output,\n l,\n n,\n void 0,\n void 0,\n (u) => styleText(\"dim\", u)\n ) : l ? styleText(\"dim\", l) : \"\";\n return `${o}${r}`;\n }\n case \"cancel\": {\n const n = `${styleText(\"gray\", S_BAR)} `, r = i ? wrapTextWithPrefix(\n e.output,\n l,\n n,\n void 0,\n void 0,\n (u) => styleText([\"strikethrough\", \"dim\"], u)\n ) : l ? styleText([\"strikethrough\", \"dim\"], l) : \"\";\n return `${o}${r}`;\n }\n default: {\n const n = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", r = i ? styleText(\"cyan\", S_BAR_END) : \"\", u = i ? wrapTextWithPrefix(e.output, a, n) : a;\n return `${o}${u}\n${r}${c}\n`;\n }\n }\n }\n}).prompt();\n\nconst W$1 = (o) => o, C = (o, e, s) => {\n const a = {\n hard: true,\n trim: false\n }, i = wrapAnsi(o, e, a).split(`\n`), c = i.reduce((n, t) => Math.max(l(t), n), 0), u = i.map(s).reduce((n, t) => Math.max(l(t), n), 0), g = e - (u - c);\n return wrapAnsi(o, g, a);\n};\nconst note = (o = \"\", e = \"\", s) => {\n const a = s?.output ?? process$1.stdout, i = s?.withGuide ?? settings.withGuide, c = s?.format ?? W$1, g = [\"\", ...C(o, getColumns(a) - 6, c).split(`\n`).map(c), \"\"], n = l(e), t = Math.max(\n g.reduce((m, F) => {\n const O = l(F);\n return O > m ? O : m;\n }, 0),\n n\n ) + 2, h = g.map(\n (m) => `${styleText(\"gray\", S_BAR)} ${m}${\" \".repeat(t - l(m))}${styleText(\"gray\", S_BAR)}`\n ).join(`\n`), T = i ? `${styleText(\"gray\", S_BAR)}\n` : \"\", l$1 = i ? S_CONNECT_LEFT : S_CORNER_BOTTOM_LEFT;\n a.write(\n `${T}${styleText(\"green\", S_STEP_SUBMIT)} ${styleText(\"reset\", e)} ${styleText(\n \"gray\",\n S_BAR_H.repeat(Math.max(t - n - 1, 1)) + S_CORNER_TOP_RIGHT\n )}\n${h}\n${styleText(\"gray\", l$1 + S_BAR_H.repeat(t + 2) + S_CORNER_BOTTOM_RIGHT)}\n`\n );\n};\n\nconst password = (r) => new PasswordPrompt({\n validate: r.validate,\n mask: r.mask ?? S_PASSWORD_MASK,\n signal: r.signal,\n input: r.input,\n output: r.output,\n render() {\n const e = r.withGuide ?? settings.withGuide, o = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${r.message}\n`, c = this.userInputWithCursor, i = this.masked;\n switch (this.state) {\n case \"error\": {\n const s = e ? `${styleText(\"yellow\", S_BAR)} ` : \"\", n = e ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\", l = i ?? \"\";\n return r.clearOnError && this.clear(), `${o.trim()}\n${s}${l}\n${n}${styleText(\"yellow\", this.error)}\n`;\n }\n case \"submit\": {\n const s = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", n = i ? styleText(\"dim\", i) : \"\";\n return `${o}${s}${n}`;\n }\n case \"cancel\": {\n const s = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", n = i ? styleText([\"strikethrough\", \"dim\"], i) : \"\";\n return `${o}${s}${n}${i && e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const s = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", n = e ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${o}${s}${c}\n${n}\n`;\n }\n }\n }\n}).prompt();\n\nconst path = (e) => {\n const a = e.validate;\n return autocomplete({\n ...e,\n initialUserInput: e.initialValue ?? e.root ?? process.cwd(),\n maxItems: 5,\n validate(t) {\n if (!Array.isArray(t)) {\n if (!t)\n return \"Please select a path\";\n if (a)\n return runValidation(a, t);\n }\n },\n options() {\n const t = this.userInput;\n if (t === \"\")\n return [];\n try {\n let i;\n existsSync(t) ? lstatSync(t).isDirectory() && (!e.directory || t.endsWith(\"/\")) ? i = t : i = dirname(t) : i = dirname(t);\n const c = t.length > 1 && t.endsWith(\"/\") ? t.slice(0, -1) : t;\n return readdirSync(i).map((r) => {\n const n = join(i, r), m = lstatSync(n);\n return {\n name: r,\n path: n,\n isDirectory: m.isDirectory()\n };\n }).filter(\n ({ path: r, isDirectory: n }) => r.startsWith(c) && (n || !e.directory)\n ).map((r) => ({\n value: r.path\n }));\n } catch {\n return [];\n }\n }\n });\n};\n\nconst W = (l) => styleText(\"magenta\", l);\nconst spinner = ({\n indicator: l = \"dots\",\n onCancel: h,\n output: n = process.stdout,\n cancelMessage: G,\n errorMessage: O,\n frames: E = unicode ? [\"\\u25D2\", \"\\u25D0\", \"\\u25D3\", \"\\u25D1\"] : [\"\\u2022\", \"o\", \"O\", \"0\"],\n delay: F = unicode ? 80 : 120,\n signal: m,\n ...I\n} = {}) => {\n const u = isCI();\n let M, T, d = false, S = false, s = \"\", p, w = performance.now();\n const x = getColumns(n), k = I?.styleFrame ?? W, g = (e) => {\n const r = e > 1 ? O ?? settings.messages.error : G ?? settings.messages.cancel;\n S = e === 1, d && (a(r, e), S && typeof h == \"function\" && h());\n }, f = () => g(2), i = () => g(1), A = () => {\n process.on(\"uncaughtExceptionMonitor\", f), process.on(\"unhandledRejection\", f), process.on(\"SIGINT\", i), process.on(\"SIGTERM\", i), process.on(\"exit\", g), m && m.addEventListener(\"abort\", i);\n }, H = () => {\n process.removeListener(\"uncaughtExceptionMonitor\", f), process.removeListener(\"unhandledRejection\", f), process.removeListener(\"SIGINT\", i), process.removeListener(\"SIGTERM\", i), process.removeListener(\"exit\", g), m && m.removeEventListener(\"abort\", i);\n }, y = () => {\n if (p === void 0) return;\n u && n.write(`\n`);\n const r = wrapAnsi(p, x, {\n hard: true,\n trim: false\n }).split(`\n`);\n r.length > 1 && n.write(cursor.up(r.length - 1)), n.write(cursor.to(0)), n.write(erase.down());\n }, C = (e) => e.replace(/\\.+$/, \"\"), _ = (e) => {\n const r = (performance.now() - e) / 1e3, t = Math.floor(r / 60), o = Math.floor(r % 60);\n return t > 0 ? `[${t}m ${o}s]` : `[${o}s]`;\n }, N = I.withGuide ?? settings.withGuide, P = (e = \"\") => {\n d = true, M = block({ output: n }), s = C(e), w = performance.now(), N && n.write(`${styleText(\"gray\", S_BAR)}\n`);\n let r = 0, t = 0;\n A(), T = setInterval(() => {\n if (u && s === p)\n return;\n y(), p = s;\n const o = k(E[r]);\n let v;\n if (u)\n v = `${o} ${s}...`;\n else if (l === \"timer\")\n v = `${o} ${s} ${_(w)}`;\n else {\n const B = \".\".repeat(Math.floor(t)).slice(0, 3);\n v = `${o} ${s}${B}`;\n }\n const j = wrapAnsi(v, x, {\n hard: true,\n trim: false\n });\n n.write(j), r = r + 1 < E.length ? r + 1 : 0, t = t < 4 ? t + 0.125 : 0;\n }, F);\n }, a = (e = \"\", r = 0, t = false) => {\n if (!d) return;\n d = false, clearInterval(T), y();\n const o = r === 0 ? styleText(\"green\", S_STEP_SUBMIT) : r === 1 ? styleText(\"red\", S_STEP_CANCEL) : styleText(\"red\", S_STEP_ERROR);\n s = e ?? s, t || (l === \"timer\" ? n.write(`${o} ${s} ${_(w)}\n`) : n.write(`${o} ${s}\n`)), H(), M();\n };\n return {\n start: P,\n stop: (e = \"\") => a(e, 0),\n message: (e = \"\") => {\n s = C(e ?? s);\n },\n cancel: (e = \"\") => a(e, 1),\n error: (e = \"\") => a(e, 2),\n clear: () => a(\"\", 0, true),\n get isCancelled() {\n return S;\n }\n };\n};\n\nconst u = {\n light: unicodeOr(\"\\u2500\", \"-\"),\n heavy: unicodeOr(\"\\u2501\", \"=\"),\n block: unicodeOr(\"\\u2588\", \"#\")\n};\nfunction progress({\n style: o = \"heavy\",\n max: d = 100,\n size: v = 40,\n ...x\n} = {}) {\n const r = spinner(x);\n let a = 0, n = \"\";\n const c = Math.max(1, d), l = Math.max(1, v), S = (t) => {\n switch (t) {\n case \"initial\":\n case \"active\":\n return (e) => styleText(\"magenta\", e);\n case \"error\":\n case \"cancel\":\n return (e) => styleText(\"red\", e);\n case \"submit\":\n return (e) => styleText(\"green\", e);\n default:\n return (e) => styleText(\"magenta\", e);\n }\n }, p = (t, e) => {\n const m = Math.floor(a / c * l);\n return `${S(t)(u[o].repeat(m))}${styleText(\"dim\", u[o].repeat(l - m))} ${e}`;\n }, h = (t = \"\") => {\n n = t, r.start(p(\"initial\", t));\n }, g = (t = 1, e) => {\n a = Math.min(c, t + a), r.message(p(\"active\", e ?? n)), n = e ?? n;\n };\n return {\n start: h,\n stop: r.stop,\n cancel: r.cancel,\n error: r.error,\n clear: r.clear,\n advance: g,\n isCancelled: r.isCancelled,\n message: (t) => g(0, t)\n };\n}\n\nconst SELECT_INSTRUCTIONS = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", \"Enter:\")} confirm`\n];\nconst c = (t, o) => t.includes(`\n`) ? t.split(`\n`).map((d) => o(d)).join(`\n`) : o(t);\nconst select = (t) => {\n const o = (n, m) => {\n if (n === void 0)\n return \"\";\n const s = n.label ?? String(n.value);\n switch (m) {\n case \"disabled\":\n return `${styleText(\"gray\", S_RADIO_INACTIVE)} ${c(s, (i) => styleText(\"gray\", i))}${n.hint ? ` ${styleText(\"dim\", `(${n.hint ?? \"disabled\"})`)}` : \"\"}`;\n case \"selected\":\n return `${c(s, (i) => styleText(\"dim\", i))}`;\n case \"active\":\n return `${styleText(\"green\", S_RADIO_ACTIVE)} ${s}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`;\n case \"cancelled\":\n return `${c(s, (i) => styleText([\"strikethrough\", \"dim\"], i))}`;\n default:\n return `${styleText(\"dim\", S_RADIO_INACTIVE)} ${c(s, (i) => styleText(\"dim\", i))}`;\n }\n }, d = t.showInstructions ?? true;\n return new SelectPrompt({\n options: t.options,\n signal: t.signal,\n input: t.input,\n output: t.output,\n initialValue: t.initialValue,\n render() {\n const n = t.withGuide ?? settings.withGuide, m = `${symbol(this.state)} `, s = `${symbolBar(this.state)} `, i = wrapTextWithPrefix(\n t.output,\n t.message,\n s,\n m\n ), u = `${n ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${i}\n`;\n switch (this.state) {\n case \"submit\": {\n const r = n ? `${styleText(\"gray\", S_BAR)} ` : \"\", a = wrapTextWithPrefix(\n t.output,\n o(this.options[this.cursor], \"selected\"),\n r\n );\n return `${u}${a}`;\n }\n case \"cancel\": {\n const r = n ? `${styleText(\"gray\", S_BAR)} ` : \"\", a = wrapTextWithPrefix(\n t.output,\n o(this.options[this.cursor], \"cancelled\"),\n r\n );\n return `${u}${a}${n ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const r = n ? `${styleText(\"cyan\", S_BAR)} ` : \"\", a = u.split(`\n`).length, p = d ? formatInstructionFooter(SELECT_INSTRUCTIONS, n) : n ? [styleText(\"cyan\", S_BAR_END)] : [], b = p.join(`\n`), f = p.length + 1;\n return `${u}${r}${limitOptions({\n output: t.output,\n cursor: this.cursor,\n options: this.options,\n maxItems: t.maxItems,\n columnPadding: r.length,\n rowPadding: a + f,\n style: (g, x) => o(g, g.disabled ? \"disabled\" : x ? \"active\" : \"inactive\")\n }).join(`\n${r}`)}\n${b}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst selectKey = (t) => {\n const l = (e, a = \"inactive\") => {\n if (e === void 0)\n return \"\";\n const n = e.label ?? String(e.value);\n return a === \"selected\" ? `${styleText(\"dim\", n)}` : a === \"cancelled\" ? `${styleText([\"strikethrough\", \"dim\"], n)}` : a === \"active\" ? `${styleText([\"bgCyan\", \"gray\"], ` ${e.value} `)} ${n}${e.hint ? ` ${styleText(\"dim\", `(${e.hint})`)}` : \"\"}` : `${styleText([\"gray\", \"bgWhite\", \"inverse\"], ` ${e.value} `)} ${n}${e.hint ? ` ${styleText(\"dim\", `(${e.hint})`)}` : \"\"}`;\n };\n return new SelectKeyPrompt({\n options: t.options,\n signal: t.signal,\n input: t.input,\n output: t.output,\n initialValue: t.initialValue,\n caseSensitive: t.caseSensitive,\n render() {\n const e = t.withGuide ?? settings.withGuide, a = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${t.message}\n`;\n switch (this.state) {\n case \"submit\": {\n const n = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", s = this.options.find((u) => u.value === this.value) ?? t.options[0], c = wrapTextWithPrefix(\n t.output,\n l(s, \"selected\"),\n n\n );\n return `${a}${c}`;\n }\n case \"cancel\": {\n const n = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", s = wrapTextWithPrefix(\n t.output,\n l(this.options[0], \"cancelled\"),\n n\n );\n return `${a}${s}${e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const n = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = e ? styleText(\"cyan\", S_BAR_END) : \"\", c = this.options.map(\n (u, d) => wrapTextWithPrefix(\n t.output,\n l(u, d === this.cursor ? \"active\" : \"inactive\"),\n n\n )\n ).join(`\n`);\n return `${a}${c}\n${s}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst i = `${styleText(\"gray\", S_BAR)} `;\nconst stream = {\n message: async (e, { symbol: l = styleText(\"gray\", S_BAR) } = {}) => {\n process.stdout.write(`${styleText(\"gray\", S_BAR)}\n${l} `);\n let s = 3;\n for await (let r of e) {\n r = r.replace(/\\n/g, `\n${i}`), r.includes(`\n`) && (s = 3 + stripVTControlCharacters(r.slice(r.lastIndexOf(`\n`))).length);\n const o = stripVTControlCharacters(r).length;\n s + o < process.stdout.columns ? (s += o, process.stdout.write(r)) : (process.stdout.write(`\n${i}${r.trimStart()}`), s = 3 + stripVTControlCharacters(r.trimStart()).length);\n }\n process.stdout.write(`\n`);\n },\n info: (e) => stream.message(e, { symbol: styleText(\"blue\", S_INFO) }),\n success: (e) => stream.message(e, { symbol: styleText(\"green\", S_SUCCESS) }),\n step: (e) => stream.message(e, { symbol: styleText(\"green\", S_STEP_SUBMIT) }),\n warn: (e) => stream.message(e, { symbol: styleText(\"yellow\", S_WARN) }),\n /** alias for `log.warn()`. */\n warning: (e) => stream.warn(e),\n error: (e) => stream.message(e, { symbol: styleText(\"red\", S_ERROR) })\n};\n\nconst tasks = async (o, e) => {\n for (const t of o) {\n if (t.enabled === false) continue;\n const s = spinner(e);\n s.start(t.title);\n const n = await t.task(s.message);\n s.stop(n || t.title);\n }\n};\n\nconst A = (l) => l.replace(/\\x1b\\[(?:\\d+;)*\\d*[ABCDEFGHfJKSTsu]|\\x1b\\[(s|u)/g, \"\");\nconst taskLog = (l) => {\n const r = l.output ?? process.stdout, O = getColumns(r), i = styleText(\"gray\", S_BAR), p = l.spacing ?? 1, k = 3, m = l.retainLog === true, d = !isCI() && isTTY(r);\n r.write(`${i}\n`), r.write(`${styleText(\"green\", S_STEP_SUBMIT)} ${l.title}\n`);\n for (let e = 0; e < p; e++)\n r.write(`${i}\n`);\n const n = [\n {\n value: \"\",\n full: \"\"\n }\n ];\n let v = false;\n const f = (e) => {\n if (n.length === 0)\n return;\n let s = 0;\n e && (s += p + 2);\n for (const t of n) {\n const { value: o, result: a } = t;\n let g = a?.message ?? o;\n if (g.length === 0)\n continue;\n a === void 0 && t.header !== void 0 && t.header !== \"\" && (g += `\n${t.header}`);\n const E = g.split(`\n`).reduce((b, w) => w === \"\" ? b + 1 : b + Math.ceil((w.length + k) / O), 0);\n s += E;\n }\n s > 0 && (s += 1, r.write(erase.lines(s)));\n }, h = (e, s, t) => {\n const o = t ? `${e.full}\n${e.value}` : e.value;\n e.header !== void 0 && e.header !== \"\" && log.message(\n e.header.split(`\n`).map((a) => styleText(\"bold\", a)),\n {\n output: r,\n secondarySymbol: i,\n symbol: i,\n spacing: 0\n }\n ), log.message(\n o.split(`\n`).map((a) => styleText(\"dim\", a)),\n {\n output: r,\n secondarySymbol: i,\n symbol: i,\n spacing: s ?? p\n }\n );\n }, T = () => {\n for (const e of n) {\n const { header: s, value: t, full: o } = e;\n (s === void 0 || s.length === 0) && t.length === 0 || h(e, void 0, m === true && o.length > 0);\n }\n }, L = (e, s, t) => {\n if (f(false), (t?.raw !== true || !v) && e.value !== \"\" && (e.value += `\n`), e.value += A(s), v = t?.raw === true, l.limit !== void 0) {\n const o = e.value.split(`\n`), a = o.length - l.limit;\n if (a > 0) {\n const g = o.splice(0, a);\n m && (e.full += (e.full === \"\" ? \"\" : `\n`) + g.join(`\n`));\n }\n e.value = o.join(`\n`);\n }\n d && y();\n }, y = () => {\n for (const e of n)\n e.result ? e.result.status === \"error\" ? log.error(e.result.message, { output: r, secondarySymbol: i, spacing: 0 }) : log.success(e.result.message, { output: r, secondarySymbol: i, spacing: 0 }) : e.value !== \"\" && h(e, 0);\n }, B = (e, s) => {\n f(false), e.result = s, d && y();\n };\n return {\n message(e, s) {\n L(n[0], e, s);\n },\n group(e) {\n const s = {\n header: e,\n value: \"\",\n full: \"\"\n };\n return n.push(s), {\n message(t, o) {\n L(s, t, o);\n },\n error(t) {\n B(s, {\n status: \"error\",\n message: t\n });\n },\n success(t) {\n B(s, {\n status: \"success\",\n message: t\n });\n }\n };\n },\n error(e, s) {\n f(true), log.error(e, { output: r, secondarySymbol: i, spacing: 1 }), s?.showLog !== false && T(), n.splice(1, n.length - 1), n[0].value = \"\", n[0].full = \"\";\n },\n success(e, s) {\n f(true), log.success(e, { output: r, secondarySymbol: i, spacing: 1 }), s?.showLog === true && T(), n.splice(1, n.length - 1), n[0].value = \"\", n[0].full = \"\";\n }\n };\n};\n\nconst text = (e) => new TextPrompt({\n validate: e.validate,\n placeholder: e.placeholder,\n defaultValue: e.defaultValue,\n initialValue: e.initialValue,\n output: e.output,\n signal: e.signal,\n input: e.input,\n render() {\n const i = e?.withGuide ?? settings.withGuide, s = `${`${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, c = e.placeholder && e.placeholder.length > 0 ? (\n // biome-ignore lint/style/noNonNullAssertion: guarded by placeholder.length > 0\n styleText(\"inverse\", e.placeholder[0]) + styleText(\"dim\", e.placeholder.slice(1))\n ) : styleText([\"inverse\", \"hidden\"], \"_\"), o = this.userInput ? this.userInputWithCursor : c, l = this.value ?? \"\";\n switch (this.state) {\n case \"error\": {\n const n = this.error ? ` ${styleText(\"yellow\", this.error)}` : \"\", r = i ? `${styleText(\"yellow\", S_BAR)} ` : \"\", d = i ? styleText(\"yellow\", S_BAR_END) : \"\";\n return `${s.trim()}\n${r}${o}\n${d}${n}\n`;\n }\n case \"submit\": {\n const n = l ? ` ${styleText(\"dim\", l)}` : \"\", r = i ? styleText(\"gray\", S_BAR) : \"\";\n return `${s}${r}${n}`;\n }\n case \"cancel\": {\n const n = l ? ` ${styleText([\"strikethrough\", \"dim\"], l)}` : \"\", r = i ? styleText(\"gray\", S_BAR) : \"\";\n return `${s}${r}${n}${l.trim() ? `\n${r}` : \"\"}`;\n }\n default: {\n const n = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", r = i ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${s}${n}${o}\n${r}\n`;\n }\n }\n }\n}).prompt();\n\nexport { MULTISELECT_INSTRUCTIONS, SELECT_INSTRUCTIONS, S_BAR, S_BAR_END, S_BAR_END_RIGHT, S_BAR_H, S_BAR_START, S_BAR_START_RIGHT, S_CHECKBOX_ACTIVE, S_CHECKBOX_INACTIVE, S_CHECKBOX_SELECTED, S_CONNECT_LEFT, S_CORNER_BOTTOM_LEFT, S_CORNER_BOTTOM_RIGHT, S_CORNER_TOP_LEFT, S_CORNER_TOP_RIGHT, S_ERROR, S_INFO, S_PASSWORD_MASK, S_RADIO_ACTIVE, S_RADIO_INACTIVE, S_STEP_ACTIVE, S_STEP_CANCEL, S_STEP_ERROR, S_STEP_SUBMIT, S_SUCCESS, S_WARN, autocomplete, autocompleteMultiselect, box, cancel, confirm, date, formatInstructionFooter, group, groupMultiselect, intro, isCI, isTTY, limitOptions, log, multiline, multiselect, note, outro, password, path, progress, select, selectKey, spinner, stream, symbol, symbolBar, taskLog, tasks, text, unicode, unicodeOr };\n","import { cancel, intro, note, outro } from \"@clack/prompts\";\nimport fancyLog from \"fancy-log\";\n\nclass AtlasLogger {\n get isCi(): boolean {\n return [\"1\", \"true\"].includes(process.env.CI?.toLowerCase() || \"\") || process.env.CIRCLECI === \"true\";\n }\n\n intro(message: string): void {\n if (this.isCi) {\n fancyLog.info(message);\n return;\n }\n intro(message);\n }\n\n info(message: string): void {\n fancyLog.info(message);\n }\n\n note(message: string, title: string): void {\n if (this.isCi) {\n fancyLog.info(`${title}\\n${message}`);\n return;\n }\n note(message, title);\n }\n\n outro(message: string): void {\n if (this.isCi) {\n fancyLog.info(message);\n return;\n }\n outro(message);\n }\n\n error(message: string): void {\n if (this.isCi) {\n fancyLog.error(message);\n return;\n }\n cancel(message);\n }\n}\n\nexport const atlasLogger = new AtlasLogger();\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { spinner } from \"@clack/prompts\";\nimport { atlasLogger } from \"../../utils/logger/atlasLogger\";\n\nexport type StepDescriptor = {\n id: string;\n title: string;\n completedTitle?: string;\n detail?: string;\n};\n\ntype TaskProgressSink = {\n log: (message: string) => void;\n report?: (message: string) => void;\n};\n\nfunction formatDuration(durationMs: number): string {\n if (durationMs < 1_000) {\n return `${durationMs}ms`;\n }\n return `${(durationMs / 1_000).toFixed(1)}s`;\n}\n\nclass TaskProgressService {\n readonly #storage = new AsyncLocalStorage<TaskProgressSink>();\n\n attach<T>(sink: TaskProgressSink, task: () => Promise<T>): Promise<T> {\n return this.#storage.run(sink, task);\n }\n\n log(message: string): void {\n this.#storage.getStore()?.log(message);\n }\n\n report(message: string): void {\n const sink = this.#storage.getStore();\n const reporter = sink?.report || sink?.log;\n reporter?.(message);\n }\n\n createStepProgress(classify: (message: string) => StepDescriptor = (message) => ({ id: message, title: message })) {\n if (atlasLogger.isCi) {\n const start = (step: StepDescriptor) => atlasLogger.info(step.detail ? `${step.title}: ${step.detail}` : step.title);\n const execute = <T>(task: () => Promise<T>): Promise<T> =>\n this.attach(\n {\n log: (message) => atlasLogger.info(message),\n report: (message) => start(classify(message))\n },\n task\n );\n\n return {\n report(message: string) {\n start(classify(message));\n },\n start,\n execute,\n run: async <T>(step: StepDescriptor, task: () => Promise<T>): Promise<T> => {\n start(step);\n return execute(task);\n },\n finish(label?: string) {\n if (label) {\n atlasLogger.info(label);\n }\n },\n fail(label: string) {\n atlasLogger.error(label);\n }\n };\n }\n\n const progress = spinner();\n let active: { id: string; title: string; completedTitle?: string; startedAt: number } | undefined;\n\n const finishActive = (label?: string) => {\n if (!active) {\n return;\n }\n const duration = formatDuration(Date.now() - active.startedAt);\n progress.stop(`${label || active.completedTitle || `${active.title} completed`} (${duration})`);\n active = undefined;\n };\n\n const start = (step: StepDescriptor) => {\n if (active?.id === step.id) {\n progress.message(step.detail ? `${step.title}: ${step.detail}` : step.title);\n return;\n }\n\n finishActive();\n active = {\n id: step.id,\n title: step.title,\n completedTitle: step.completedTitle,\n startedAt: Date.now()\n };\n progress.start(step.detail ? `${step.title}: ${step.detail}` : step.title);\n };\n\n const execute = <T>(task: () => Promise<T>): Promise<T> =>\n this.attach(\n {\n log: (message) => progress.message(active ? `${active.title}: ${message}` : message),\n report: (message) => start(classify(message))\n },\n task\n );\n\n return {\n report(message: string) {\n start(classify(message));\n },\n start,\n execute,\n run: async <T>(step: StepDescriptor, task: () => Promise<T>): Promise<T> => {\n start(step);\n await new Promise<void>((resolve) => setImmediate(resolve));\n const result = await execute(task);\n finishActive();\n return result;\n },\n finish(label?: string) {\n finishActive(label);\n },\n fail(label: string) {\n if (!active) {\n return;\n }\n const duration = formatDuration(Date.now() - active.startedAt);\n progress.stop(`${label} (${duration})`);\n active = undefined;\n }\n };\n }\n}\n\nexport const taskProgressService = new TaskProgressService();\n"],"x_google_ignoreList":[4,5,6,7,8,9,10],"mappings":"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"}
1
+ {"version":3,"file":"taskProgressService-DAEpEqsT.mjs","names":["NO_TRUNCATION","fastStringTruncatedWidth","stringWidth","cursor","erase","l","cursor","erase","SelectPrompt","#storage"],"sources":["../src/config/mappers/normalizeBackendSources.ts","../src/config/mappers/normalizeExpressionRules.ts","../src/config/utils/getTsconfigAliases.ts","../src/config/userConfig.ts","../../../node_modules/fast-string-truncated-width/dist/utils.js","../../../node_modules/fast-string-truncated-width/dist/index.js","../../../node_modules/fast-string-width/dist/index.js","../../../node_modules/fast-wrap-ansi/lib/main.js","../../../node_modules/sisteransi/src/index.js","../../../node_modules/@clack/core/dist/index.mjs","../../../node_modules/@clack/prompts/dist/index.mjs","../src/utils/logger/atlasLogger.ts","../src/services/tasks/taskProgressService.ts"],"sourcesContent":["import type { BackendSource } from \"../../interfaces\";\nimport type { UserConfig } from \"../interfaces/UserConfig\";\n\nexport function normalizeBackendSources(backends: UserConfig[\"analysis\"][\"backends\"]): BackendSource[] {\n const sources = backends.map((backend) => (typeof backend === \"string\" ? { name: backend } : backend));\n const sourcesByName = new Map<string, BackendSource>();\n for (const source of sources) {\n if (!source.name.trim()) {\n throw new Error(\"Backend source names must not be empty\");\n }\n sourcesByName.set(source.name, source);\n }\n return [...sourcesByName.values()];\n}\n","export function normalizeExpressionRules<Rule>(rules: Rule[]): Rule[] {\n return [...new Set(rules)]\n .map((rule, index) => ({ rule, index }))\n .sort(\n (left, right) =>\n ((right.rule as { priority?: number }).priority || 0) - ((left.rule as { priority?: number }).priority || 0) ||\n left.index - right.index\n )\n .map(({ rule }) => rule);\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { Project } from \"ts-morph\";\n\nexport function getTsconfigAliases(workingDirectory = process.cwd()): Record<string, string> {\n const tsconfigPath = path.join(workingDirectory, \"tsconfig.json\");\n if (!fs.existsSync(tsconfigPath)) {\n return {};\n }\n\n const paths = new Project({ tsConfigFilePath: tsconfigPath, skipAddingFilesFromTsConfig: true }).getCompilerOptions().paths ?? {};\n return Object.fromEntries(\n Object.entries(paths).flatMap(([alias, targets]) => {\n const target = targets?.[0];\n if (!target) {\n return [];\n }\n return [[alias.replace(/\\/\\*$/, \"\"), target.replace(/^\\.\\//, \"\").replace(/\\/\\*$/, \"\")]];\n })\n );\n}\n","import path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { ResolvedUserConfig } from \"./interfaces/ResolvedUserConfig\";\nimport type { UserConfig } from \"./interfaces/UserConfig\";\nimport { normalizeBackendSources } from \"./mappers/normalizeBackendSources\";\nimport { normalizeExpressionRules } from \"./mappers/normalizeExpressionRules\";\nimport { getTsconfigAliases } from \"./utils/getTsconfigAliases\";\n\nlet _config: ResolvedUserConfig | undefined;\n\nexport function setUserConfig(config: ResolvedUserConfig): void {\n const backends = normalizeBackendSources(config.analysis.backends);\n _config = {\n ...config,\n outputDir: path.resolve(config.outputDir),\n envs: config.envs ?? {},\n analysis: {\n ...config.analysis,\n backends,\n rules: normalizeExpressionRules([...config.analysis.rules, ...backends.flatMap((backend) => backend.rules || [])])\n }\n };\n}\n\nexport function getUserConfig(): ResolvedUserConfig {\n if (!_config) {\n throw new Error(\"Atlas config not loaded. Run Atlas from a directory containing atlas.config.ts or pass --config.\");\n }\n return _config;\n}\n\nexport async function userConfig(configPath: string, analysisDir?: string): Promise<ResolvedUserConfig> {\n const filePath = path.resolve(configPath);\n try {\n let mod: { default?: UserConfig };\n if (filePath.endsWith(\".ts\")) {\n const { register } = await import(\"tsx/esm/api\");\n const unregister = register();\n try {\n mod = await import(pathToFileURL(filePath).href);\n } finally {\n await unregister();\n }\n } else {\n mod = await import(pathToFileURL(filePath).href);\n }\n\n const config = mod.default ?? (mod as unknown as UserConfig);\n const resolvedAnalysisDir = path.resolve(analysisDir || config.analysis.rootDir || process.cwd());\n const backends = normalizeBackendSources(config.analysis.backends);\n\n return {\n ...config,\n configPath: filePath,\n outputDir: path.resolve(config.outputDir),\n cwd: resolvedAnalysisDir,\n envs: config.envs ?? {},\n analysis: {\n ...config.analysis,\n rootDir: resolvedAnalysisDir,\n backends\n },\n resolver: {\n alias: {\n ...getTsconfigAliases(),\n ...config.resolver?.alias\n }\n }\n };\n } catch (error) {\n throw new Error(`Unable to load Atlas configuration at ${filePath}: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n","/* MAIN */\nconst getCodePointsLength = (() => {\n const SURROGATE_PAIR_RE = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n return (input) => {\n let surrogatePairsNr = 0;\n SURROGATE_PAIR_RE.lastIndex = 0;\n while (SURROGATE_PAIR_RE.test(input)) {\n surrogatePairsNr += 1;\n }\n return input.length - surrogatePairsNr;\n };\n})();\nconst isFullWidth = (x) => {\n return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6;\n};\nconst isWideNotCJKTNotEmoji = (x) => {\n return x === 0x231B || x === 0x2329 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD;\n};\n/* EXPORT */\nexport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji };\n","/* IMPORT */\nimport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji } from './utils.js';\n/* HELPERS */\nconst ANSI_RE = /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\\u001b\\]8;[^;]*;.*?(?:\\u0007|\\u001b\\u005c)/y;\nconst CONTROL_RE = /[\\x00-\\x08\\x0A-\\x1F\\x7F-\\x9F]{1,1000}/y;\nconst CJKT_WIDE_RE = /(?:(?![\\uFF61-\\uFF9F\\uFF00-\\uFFEF])[\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}\\p{Script=Hangul}\\p{Script=Tangut}]){1,1000}/yu;\nconst TAB_RE = /\\t{1,1000}/y;\nconst EMOJI_RE = /[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*/yu;\nconst LATIN_RE = /(?:[\\x20-\\x7E\\xA0-\\xFF](?!\\uFE0F)){1,1000}/y;\nconst MODIFIER_RE = /\\p{M}+/gu;\nconst NO_TRUNCATION = { limit: Infinity, ellipsis: '' };\n/* MAIN */\nconst getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => {\n /* CONSTANTS */\n const LIMIT = truncationOptions.limit ?? Infinity;\n const ELLIPSIS = truncationOptions.ellipsis ?? '';\n const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0);\n const ANSI_WIDTH = 0;\n const CONTROL_WIDTH = widthOptions.controlWidth ?? 0;\n const TAB_WIDTH = widthOptions.tabWidth ?? 8;\n const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2;\n const FULL_WIDTH_WIDTH = 2;\n const REGULAR_WIDTH = widthOptions.regularWidth ?? 1;\n const WIDE_WIDTH = widthOptions.wideWidth ?? FULL_WIDTH_WIDTH;\n const PARSE_BLOCKS = [\n [LATIN_RE, REGULAR_WIDTH],\n [ANSI_RE, ANSI_WIDTH],\n [CONTROL_RE, CONTROL_WIDTH],\n [TAB_RE, TAB_WIDTH],\n [EMOJI_RE, EMOJI_WIDTH],\n [CJKT_WIDE_RE, WIDE_WIDTH],\n ];\n /* STATE */\n let indexPrev = 0;\n let index = 0;\n let length = input.length;\n let lengthExtra = 0;\n let truncationEnabled = false;\n let truncationIndex = length;\n let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH);\n let unmatchedStart = 0;\n let unmatchedEnd = 0;\n let width = 0;\n let widthExtra = 0;\n /* PARSE LOOP */\n outer: while (true) {\n /* UNMATCHED */\n if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) {\n const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index);\n lengthExtra = 0;\n for (const char of unmatched.replaceAll(MODIFIER_RE, '')) {\n const codePoint = char.codePointAt(0) || 0;\n if (isFullWidth(codePoint)) {\n widthExtra = FULL_WIDTH_WIDTH;\n }\n else if (isWideNotCJKTNotEmoji(codePoint)) {\n widthExtra = WIDE_WIDTH;\n }\n else {\n widthExtra = REGULAR_WIDTH;\n }\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra);\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n lengthExtra += char.length;\n width += widthExtra;\n }\n unmatchedStart = unmatchedEnd = 0;\n }\n /* EXITING */\n if (index >= length) {\n break outer;\n }\n /* PARSE BLOCKS */\n for (let i = 0, l = PARSE_BLOCKS.length; i < l; i++) {\n const [BLOCK_RE, BLOCK_WIDTH] = PARSE_BLOCKS[i];\n BLOCK_RE.lastIndex = index;\n if (BLOCK_RE.test(input)) {\n lengthExtra = BLOCK_RE === CJKT_WIDE_RE ? getCodePointsLength(input.slice(index, BLOCK_RE.lastIndex)) : BLOCK_RE === EMOJI_RE ? 1 : BLOCK_RE.lastIndex - index;\n widthExtra = lengthExtra * BLOCK_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / BLOCK_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = BLOCK_RE.lastIndex;\n continue outer;\n }\n }\n /* UNMATCHED INDEX */\n index += 1;\n }\n /* RETURN */\n return {\n width: truncationEnabled ? truncationLimit : width,\n index: truncationEnabled ? truncationIndex : length,\n truncated: truncationEnabled,\n ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH\n };\n};\n/* EXPORT */\nexport default getStringTruncatedWidth;\n","/* IMPORT */\nimport fastStringTruncatedWidth from 'fast-string-truncated-width';\n/* HELPERS */\nconst NO_TRUNCATION = {\n limit: Infinity,\n ellipsis: '',\n ellipsisWidth: 0,\n};\n/* MAIN */\nconst fastStringWidth = (input, options = {}) => {\n return fastStringTruncatedWidth(input, NO_TRUNCATION, options).width;\n};\n/* EXPORT */\nexport default fastStringWidth;\n","import stringWidth from 'fast-string-width';\nconst ESC = '\\x1B';\nconst CSI = '\\x9B';\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\nconst GROUP_REGEX = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`, 'y');\nconst getClosingCode = (openingCode) => {\n if (openingCode >= 30 && openingCode <= 37)\n return 39;\n if (openingCode >= 90 && openingCode <= 97)\n return 39;\n if (openingCode >= 40 && openingCode <= 47)\n return 49;\n if (openingCode >= 100 && openingCode <= 107)\n return 49;\n if (openingCode === 1 || openingCode === 2)\n return 22;\n if (openingCode === 3)\n return 23;\n if (openingCode === 4)\n return 24;\n if (openingCode === 7)\n return 27;\n if (openingCode === 8)\n return 28;\n if (openingCode === 9)\n return 29;\n if (openingCode === 0)\n return 0;\n return undefined;\n};\nconst wrapAnsiCode = (code) => `${ESC}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = (url) => `${ESC}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\nconst wrapWord = (rows, word, columns) => {\n const characters = word[Symbol.iterator]();\n let isInsideEscape = false;\n let isInsideLinkEscape = false;\n let lastRow = rows.at(-1);\n let visible = lastRow === undefined ? 0 : stringWidth(lastRow);\n let currentCharacter = characters.next();\n let nextCharacter = characters.next();\n let rawCharacterIndex = 0;\n while (!currentCharacter.done) {\n const character = currentCharacter.value;\n const characterLength = stringWidth(character);\n if (visible + characterLength <= columns) {\n rows[rows.length - 1] += character;\n }\n else {\n rows.push(character);\n visible = 0;\n }\n if (character === ESC || character === CSI) {\n isInsideEscape = true;\n isInsideLinkEscape = word.startsWith(ANSI_ESCAPE_LINK, rawCharacterIndex + 1);\n }\n if (isInsideEscape) {\n if (isInsideLinkEscape) {\n if (character === ANSI_ESCAPE_BELL) {\n isInsideEscape = false;\n isInsideLinkEscape = false;\n }\n }\n else if (character === ANSI_SGR_TERMINATOR) {\n isInsideEscape = false;\n }\n }\n else {\n visible += characterLength;\n if (visible === columns && !nextCharacter.done) {\n rows.push('');\n visible = 0;\n }\n }\n currentCharacter = nextCharacter;\n nextCharacter = characters.next();\n rawCharacterIndex += character.length;\n }\n lastRow = rows.at(-1);\n if (!visible && lastRow !== undefined && lastRow.length && rows.length > 1) {\n rows[rows.length - 2] += rows.pop();\n }\n};\nconst stringVisibleTrimSpacesRight = (string) => {\n const words = string.split(' ');\n let last = words.length;\n while (last) {\n if (stringWidth(words[last - 1])) {\n break;\n }\n last--;\n }\n if (last === words.length) {\n return string;\n }\n return words.slice(0, last).join(' ') + words.slice(last).join('');\n};\nconst exec = (string, columns, options = {}) => {\n if (options.trim !== false && string.trim() === '') {\n return '';\n }\n let returnValue = '';\n let escapeCode;\n let escapeUrl;\n const words = string.split(' ');\n let rows = [''];\n let rowLength = 0;\n for (let index = 0; index < words.length; index++) {\n const word = words[index];\n if (options.trim !== false) {\n const row = rows.at(-1) ?? '';\n const trimmed = row.trimStart();\n if (row.length !== trimmed.length) {\n rows[rows.length - 1] = trimmed;\n rowLength = stringWidth(trimmed);\n }\n }\n if (index !== 0) {\n if (rowLength >= columns &&\n (options.wordWrap === false || options.trim === false)) {\n rows.push('');\n rowLength = 0;\n }\n if (rowLength || options.trim === false) {\n rows[rows.length - 1] += ' ';\n rowLength++;\n }\n }\n const wordLength = stringWidth(word);\n if (options.hard && wordLength > columns) {\n const remainingColumns = columns - rowLength;\n const breaksStartingThisLine = 1 + Math.floor((wordLength - remainingColumns - 1) / columns);\n const breaksStartingNextLine = Math.floor((wordLength - 1) / columns);\n if (breaksStartingNextLine < breaksStartingThisLine) {\n rows.push('');\n }\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n if (rowLength + wordLength > columns && rowLength && wordLength) {\n if (options.wordWrap === false && rowLength < columns) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows.push('');\n rowLength = 0;\n }\n if (rowLength + wordLength > columns && options.wordWrap === false) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows[rows.length - 1] += word;\n rowLength += wordLength;\n }\n if (options.trim !== false) {\n rows = rows.map((row) => stringVisibleTrimSpacesRight(row));\n }\n const preString = rows.join('\\n');\n let inSurrogate = false;\n for (let i = 0; i < preString.length; i++) {\n const character = preString[i];\n returnValue += character;\n if (!inSurrogate) {\n inSurrogate = character >= '\\ud800' && character <= '\\udbff';\n if (inSurrogate) {\n continue;\n }\n }\n else {\n inSurrogate = false;\n }\n if (character === ESC || character === CSI) {\n GROUP_REGEX.lastIndex = i + 1;\n const groupsResult = GROUP_REGEX.exec(preString);\n const groups = groupsResult?.groups;\n if (groups?.code !== undefined) {\n const code = Number.parseFloat(groups.code);\n escapeCode = code === END_CODE ? undefined : code;\n }\n else if (groups?.uri !== undefined) {\n escapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n }\n }\n if (preString[i + 1] === '\\n') {\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink('');\n }\n const closingCode = escapeCode ? getClosingCode(escapeCode) : undefined;\n if (escapeCode && closingCode) {\n returnValue += wrapAnsiCode(closingCode);\n }\n }\n else if (character === '\\n') {\n if (escapeCode && getClosingCode(escapeCode)) {\n returnValue += wrapAnsiCode(escapeCode);\n }\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink(escapeUrl);\n }\n }\n }\n return returnValue;\n};\nconst CRLF_OR_LF = /\\r?\\n/;\nexport function wrapAnsi(string, columns, options) {\n return String(string)\n .normalize()\n .split(CRLF_OR_LF)\n .map((line) => exec(line, columns, options))\n .join('\\n');\n}\n","'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","import { styleText } from 'node:util';\nimport { stdout, stdin } from 'node:process';\nimport * as l from 'node:readline';\nimport l__default from 'node:readline';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor, erase } from 'sisteransi';\nimport { ReadStream } from 'node:tty';\n\nfunction findCursor(s, o, l) {\n if (!l.some((r) => !r.disabled))\n return s;\n const t = s + o, n = Math.max(l.length - 1, 0), e = t < 0 ? n : t > n ? 0 : t;\n return l[e]?.disabled ? findCursor(e, o < 0 ? -1 : 1, l) : e;\n}\nfunction findTextCursor(s, o, l, i) {\n const t = i.split(`\n`);\n let n = 0, e = s;\n for (const r of t) {\n if (e <= r.length)\n break;\n e -= r.length + 1, n++;\n }\n for (n = Math.max(0, Math.min(t.length - 1, n + l)), e = Math.min(e, t[n].length) + o; e < 0 && n > 0; )\n n--, e += t[n].length + 1;\n for (; e > t[n].length && n < t.length - 1; )\n e -= t[n].length + 1, n++;\n e = Math.max(0, Math.min(t[n].length, e));\n let h = 0;\n for (let r = 0; r < n; r++)\n h += t[r].length + 1;\n return h + e;\n}\n\nconst a$1 = [\"up\", \"down\", \"left\", \"right\", \"space\", \"enter\", \"cancel\"], t = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\nconst settings = {\n actions: new Set(a$1),\n aliases: /* @__PURE__ */ new Map([\n // vim support\n [\"k\", \"up\"],\n [\"j\", \"down\"],\n [\"h\", \"left\"],\n [\"l\", \"right\"],\n [\"\u0003\", \"cancel\"],\n // opinionated defaults!\n [\"escape\", \"cancel\"]\n ]),\n messages: {\n cancel: \"Canceled\",\n error: \"Something went wrong\"\n },\n withGuide: true,\n date: {\n monthNames: [...t],\n messages: {\n required: \"Please enter a valid date\",\n invalidMonth: \"There are only 12 months in a year\",\n invalidDay: (n, e) => `There are only ${n} days in ${e}`,\n afterMin: (n) => `Date must be on or after ${n.toISOString().slice(0, 10)}`,\n beforeMax: (n) => `Date must be on or before ${n.toISOString().slice(0, 10)}`\n }\n }\n};\nfunction updateSettings(n) {\n if (n.aliases !== void 0) {\n const e = n.aliases;\n for (const s in e) {\n if (!Object.hasOwn(e, s)) continue;\n const i = e[s];\n i === void 0 || !settings.actions.has(i) || settings.aliases.has(s) || settings.aliases.set(s, i);\n }\n }\n if (n.messages !== void 0) {\n const e = n.messages;\n e.cancel !== void 0 && (settings.messages.cancel = e.cancel), e.error !== void 0 && (settings.messages.error = e.error);\n }\n if (n.withGuide !== void 0 && (settings.withGuide = n.withGuide !== false), n.date !== void 0) {\n const e = n.date;\n e.monthNames !== void 0 && (settings.date.monthNames = [...e.monthNames]), e.messages !== void 0 && (e.messages.required !== void 0 && (settings.date.messages.required = e.messages.required), e.messages.invalidMonth !== void 0 && (settings.date.messages.invalidMonth = e.messages.invalidMonth), e.messages.invalidDay !== void 0 && (settings.date.messages.invalidDay = e.messages.invalidDay), e.messages.afterMin !== void 0 && (settings.date.messages.afterMin = e.messages.afterMin), e.messages.beforeMax !== void 0 && (settings.date.messages.beforeMax = e.messages.beforeMax));\n }\n}\nfunction isActionKey(n, e) {\n if (typeof n == \"string\")\n return settings.aliases.get(n) === e;\n for (const s of n)\n if (s !== void 0 && isActionKey(s, e))\n return true;\n return false;\n}\n\nfunction diffLines(i, s) {\n if (i === s) return;\n const e = i.split(`\n`), t = s.split(`\n`), r = Math.max(e.length, t.length), f = [];\n for (let n = 0; n < r; n++)\n e[n] !== t[n] && f.push(n);\n return {\n lines: f,\n numLinesBefore: e.length,\n numLinesAfter: t.length,\n numLines: r\n };\n}\n\nconst R = globalThis.process.platform.startsWith(\"win\");\nconst CANCEL_SYMBOL = Symbol(\"clack:cancel\");\nfunction isCancel(e) {\n return e === CANCEL_SYMBOL;\n}\nfunction setRawMode(e, r) {\n const o = e;\n o.isTTY && o.setRawMode(r);\n}\nfunction block({\n input: e = stdin,\n output: r = stdout,\n overwrite: o = true,\n hideCursor: t = true\n} = {}) {\n const s = l.createInterface({\n input: e,\n output: r,\n prompt: \"\",\n tabSize: 1\n });\n l.emitKeypressEvents(e, s), e instanceof ReadStream && e.isTTY && e.setRawMode(true);\n const n = (f, { name: a, sequence: p }) => {\n const c = String(f);\n if (isActionKey([c, a, p], \"cancel\")) {\n t && r.write(cursor.show), process.exit(0);\n return;\n }\n if (!o) return;\n const i = a === \"return\" ? 0 : -1, m = a === \"return\" ? -1 : 0;\n l.moveCursor(r, i, m, () => {\n l.clearLine(r, 1, () => {\n e.once(\"keypress\", n);\n });\n });\n };\n return t && r.write(cursor.hide), e.once(\"keypress\", n), () => {\n e.off(\"keypress\", n), t && r.write(cursor.show), e instanceof ReadStream && e.isTTY && !R && e.setRawMode(false), s.terminal = false, s.close();\n };\n}\nconst getColumns = (e) => \"columns\" in e && typeof e.columns == \"number\" ? e.columns : 80, getRows = (e) => \"rows\" in e && typeof e.rows == \"number\" ? e.rows : 20;\nfunction wrapTextWithPrefix(e, r, o, t = o, s = o, n) {\n const f = getColumns(e ?? stdout);\n return wrapAnsi(r, f - o.length, {\n hard: true,\n trim: false\n }).split(`\n`).map((c, i, m) => {\n const d = n ? n(c, i) : c;\n return i === 0 ? `${t}${d}` : i === m.length - 1 ? `${s}${d}` : `${o}${d}`;\n }).join(`\n`);\n}\n\nfunction runValidation(e, n) {\n if (\"~standard\" in e) {\n const a = e[\"~standard\"].validate(n);\n if (a instanceof Promise)\n throw new TypeError(\n \"Schema validation must be synchronous. Update `validate()` and remove any asynchronous logic.\"\n );\n return a.issues?.at(0)?.message;\n }\n return e(n);\n}\n\nclass V {\n input;\n output;\n _abortSignal;\n rl;\n opts;\n _render;\n _track = false;\n _prevFrame = \"\";\n _subscribers = /* @__PURE__ */ new Map();\n _cursor = 0;\n state = \"initial\";\n error = \"\";\n value;\n userInput = \"\";\n constructor(t, e = true) {\n const { input: i = stdin, output: n = stdout, render: s, signal: r, ...o } = t;\n this.opts = o, this.onKeypress = this.onKeypress.bind(this), this.close = this.close.bind(this), this.render = this.render.bind(this), this._render = s.bind(this), this._track = e, this._abortSignal = r, this.input = i, this.output = n;\n }\n /**\n * Unsubscribe all listeners\n */\n unsubscribe() {\n this._subscribers.clear();\n }\n /**\n * Set a subscriber with opts\n * @param event - The event name\n */\n setSubscriber(t, e) {\n const i = this._subscribers.get(t) ?? [];\n i.push(e), this._subscribers.set(t, i);\n }\n /**\n * Subscribe to an event\n * @param event - The event name\n * @param cb - The callback\n */\n on(t, e) {\n this.setSubscriber(t, { cb: e });\n }\n /**\n * Subscribe to an event once\n * @param event - The event name\n * @param cb - The callback\n */\n once(t, e) {\n this.setSubscriber(t, { cb: e, once: true });\n }\n /**\n * Emit an event with data\n * @param event - The event name\n * @param data - The data to pass to the callback\n */\n emit(t, ...e) {\n const i = this._subscribers.get(t) ?? [], n = [];\n for (const s of i)\n s.cb(...e), s.once && n.push(() => i.splice(i.indexOf(s), 1));\n for (const s of n)\n s();\n }\n prompt() {\n return new Promise((t) => {\n if (this._abortSignal) {\n if (this._abortSignal.aborted)\n return this.state = \"cancel\", this.close(), t(CANCEL_SYMBOL);\n this._abortSignal.addEventListener(\n \"abort\",\n () => {\n this.state = \"cancel\", this.close();\n },\n { once: true }\n );\n }\n this.rl = l__default.createInterface({\n input: this.input,\n tabSize: 2,\n prompt: \"\",\n escapeCodeTimeout: 50,\n terminal: true\n }), this.rl.prompt(), this.opts.initialUserInput !== void 0 && this._setUserInput(this.opts.initialUserInput, true), this.input.on(\"keypress\", this.onKeypress), setRawMode(this.input, true), this.output.on(\"resize\", this.render), this.render(), this.once(\"submit\", () => {\n this.output.write(cursor.show), this.output.off(\"resize\", this.render), setRawMode(this.input, false), t(this.value);\n }), this.once(\"cancel\", () => {\n this.output.write(cursor.show), this.output.off(\"resize\", this.render), setRawMode(this.input, false), t(CANCEL_SYMBOL);\n });\n });\n }\n _isActionKey(t, e) {\n return t === \"\t\";\n }\n _shouldSubmit(t, e) {\n return true;\n }\n _setValue(t) {\n this.value = t, this.emit(\"value\", this.value);\n }\n _setUserInput(t, e) {\n this.userInput = t ?? \"\", this.emit(\"userInput\", this.userInput), e && this._track && this.rl && (this.rl.write(this.userInput), this._cursor = this.rl.cursor);\n }\n _clearUserInput() {\n this.rl?.write(null, { ctrl: true, name: \"u\" }), this._setUserInput(\"\");\n }\n onKeypress(t, e) {\n if (this._track && e.name !== \"return\" && (e.name && this._isActionKey(t, e) && this.rl?.write(null, { ctrl: true, name: \"h\" }), this._cursor = this.rl?.cursor ?? 0, this._setUserInput(this.rl?.line)), this.state === \"error\" && (this.state = \"active\"), e?.name && (!this._track && settings.aliases.has(e.name) && this.emit(\"cursor\", settings.aliases.get(e.name)), settings.actions.has(e.name) && this.emit(\"cursor\", e.name)), t && (t.toLowerCase() === \"y\" || t.toLowerCase() === \"n\") && this.emit(\"confirm\", t.toLowerCase() === \"y\"), this.emit(\"key\", t, e), e?.name === \"return\" && this._shouldSubmit(t, e)) {\n if (this.opts.validate) {\n const i = runValidation(this.opts.validate, this.value);\n i && (this.error = i instanceof Error ? i.message : i, this.state = \"error\", this.rl?.write(this.userInput));\n }\n this.state !== \"error\" && (this.state = \"submit\");\n }\n isActionKey([t, e?.name, e?.sequence], \"cancel\") && (this.state = \"cancel\"), (this.state === \"submit\" || this.state === \"cancel\") && this.emit(\"finalize\"), this.render(), (this.state === \"submit\" || this.state === \"cancel\") && this.close();\n }\n close() {\n this.input.unpipe(), this.input.removeListener(\"keypress\", this.onKeypress), this.output.write(`\n`), setRawMode(this.input, false), this.rl?.close(), this.rl = void 0, this.emit(`${this.state}`, this.value), this.unsubscribe();\n }\n restoreCursor() {\n const t = wrapAnsi(this._prevFrame, process.stdout.columns, { hard: true, trim: false }).split(`\n`).length - 1;\n this.output.write(cursor.move(-999, t * -1));\n }\n render() {\n const t = wrapAnsi(this._render(this) ?? \"\", process.stdout.columns, {\n hard: true,\n trim: false\n });\n if (t !== this._prevFrame) {\n if (this.state === \"initial\")\n this.output.write(cursor.hide);\n else {\n const e = diffLines(this._prevFrame, t), i = getRows(this.output);\n if (this.restoreCursor(), e) {\n const n = Math.max(0, e.numLinesAfter - i), s = Math.max(0, e.numLinesBefore - i);\n let r = e.lines.find((o) => o >= n);\n if (r === void 0) {\n this._prevFrame = t;\n return;\n }\n if (e.lines.length === 1) {\n this.output.write(cursor.move(0, r - s)), this.output.write(erase.lines(1));\n const o = t.split(`\n`);\n this.output.write(o[r]), this._prevFrame = t, this.output.write(cursor.move(0, o.length - r - 1));\n return;\n } else if (e.lines.length > 1) {\n if (n < s)\n r = n;\n else {\n const h = r - s;\n h > 0 && this.output.write(cursor.move(0, h));\n }\n this.output.write(erase.down());\n const f = t.split(`\n`).slice(r);\n this.output.write(f.join(`\n`)), this._prevFrame = t;\n return;\n }\n }\n this.output.write(erase.down());\n }\n this.output.write(t), this.state === \"initial\" && (this.state = \"active\"), this._prevFrame = t;\n }\n }\n}\n\nfunction p$1(l, e) {\n if (l === void 0 || e.length === 0)\n return 0;\n const i = e.findIndex((s) => s.value === l);\n return i !== -1 ? i : 0;\n}\nfunction g(l, e) {\n return (e.label ?? String(e.value)).toLowerCase().includes(l.toLowerCase());\n}\nfunction m(l, e) {\n if (e)\n return l ? e : e[0];\n}\nlet T$1 = class T extends V {\n filteredOptions;\n multiple;\n isNavigating = false;\n selectedValues = [];\n focusedValue;\n #e = 0;\n #s = \"\";\n #t;\n #i;\n #n;\n get cursor() {\n return this.#e;\n }\n get userInputWithCursor() {\n if (!this.userInput)\n return styleText([\"inverse\", \"hidden\"], \"_\");\n if (this._cursor >= this.userInput.length)\n return `${this.userInput}\\u2588`;\n const e = this.userInput.slice(0, this.cursor), t = this.userInput.slice(this.cursor, this.cursor + 1), i = this.userInput.slice(this.cursor + 1);\n return `${e}${styleText(\"inverse\", t)}${i}`;\n }\n get options() {\n return typeof this.#i == \"function\" ? this.#i() : this.#i;\n }\n constructor(e) {\n super(e), this.#i = e.options, this.#n = e.placeholder;\n const t = this.options;\n this.filteredOptions = [...t], this.multiple = e.multiple === true, this.#t = typeof e.options == \"function\" ? e.filter : e.filter ?? g;\n let i;\n if (e.initialValue && Array.isArray(e.initialValue) ? this.multiple ? i = e.initialValue : i = e.initialValue.slice(0, 1) : !this.multiple && this.options.length > 0 && (i = [this.options[0]?.value]), i)\n for (const s of i) {\n const n = t.findIndex((o) => o.value === s);\n n !== -1 && (this.toggleSelected(s), this.#e = n);\n }\n this.focusedValue = this.options[this.#e]?.value, this.on(\"key\", (s, n) => this.#l(s, n)), this.on(\"userInput\", (s) => this.#u(s));\n }\n _isActionKey(e, t) {\n return e === \"\t\" || this.multiple && this.isNavigating && t.name === \"space\" && e !== void 0 && e !== \"\";\n }\n #l(e, t) {\n const i = t.name === \"up\", s = t.name === \"down\", n = t.name === \"return\", o = this.userInput === \"\" || this.userInput === \"\t\", u = this.#n, a = this.options, f = u !== void 0 && u !== \"\" && a.some(\n (r) => !r.disabled && (this.#t ? this.#t(u, r) : true)\n );\n if (t.name === \"tab\" && o && f) {\n this.userInput === \"\t\" && this._clearUserInput(), this._setUserInput(u, true), this.isNavigating = false;\n return;\n }\n i || s ? (this.#e = findCursor(this.#e, i ? -1 : 1, this.filteredOptions), this.focusedValue = this.filteredOptions[this.#e]?.value, this.multiple || (this.selectedValues = [this.focusedValue]), this.isNavigating = true) : n ? this.value = m(this.multiple, this.selectedValues) : this.multiple ? this.focusedValue !== void 0 && (t.name === \"tab\" || this.isNavigating && t.name === \"space\") ? this.toggleSelected(this.focusedValue) : this.isNavigating = false : (this.focusedValue && (this.selectedValues = [this.focusedValue]), this.isNavigating = false);\n }\n deselectAll() {\n this.selectedValues = [];\n }\n toggleSelected(e) {\n this.filteredOptions.length !== 0 && (this.multiple ? this.selectedValues.includes(e) ? this.selectedValues = this.selectedValues.filter((t) => t !== e) : this.selectedValues = [...this.selectedValues, e] : this.selectedValues = [e]);\n }\n #u(e) {\n if (e !== this.#s) {\n this.#s = e;\n const t = this.options;\n e && this.#t ? this.filteredOptions = t.filter((n) => this.#t?.(e, n)) : this.filteredOptions = [...t];\n const i = p$1(this.focusedValue, this.filteredOptions);\n this.#e = findCursor(i, 0, this.filteredOptions);\n const s = this.filteredOptions[this.#e];\n s && !s.disabled ? this.focusedValue = s.value : this.focusedValue = void 0, this.multiple || (this.focusedValue !== void 0 ? this.toggleSelected(this.focusedValue) : this.deselectAll());\n }\n }\n};\n\nclass r extends V {\n get cursor() {\n return this.value ? 0 : 1;\n }\n get _value() {\n return this.cursor === 0;\n }\n constructor(t) {\n super(t, false), this.value = !!t.initialValue, this.on(\"userInput\", () => {\n this.value = this._value;\n }), this.on(\"confirm\", (i) => {\n this.output.write(cursor.move(0, -1)), this.value = i, this.state = \"submit\", this.close();\n }), this.on(\"cursor\", () => {\n this.value = !this.value;\n });\n }\n}\n\nconst _ = {\n Y: { type: \"year\", len: 4 },\n M: { type: \"month\", len: 2 },\n D: { type: \"day\", len: 2 }\n};\nfunction M(r) {\n return [...r].map((t) => _[t]);\n}\nfunction P(r) {\n const i = new Intl.DateTimeFormat(r, {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\"\n }).formatToParts(new Date(2e3, 0, 15)), s = [];\n let n = \"/\";\n for (const e of i)\n e.type === \"literal\" ? n = e.value.trim() || e.value : (e.type === \"year\" || e.type === \"month\" || e.type === \"day\") && s.push({ type: e.type, len: e.type === \"year\" ? 4 : 2 });\n return { segments: s, separator: n };\n}\nfunction p(r) {\n return Number.parseInt((r || \"0\").replace(/_/g, \"0\"), 10) || 0;\n}\nfunction f(r) {\n return {\n year: p(r.year),\n month: p(r.month),\n day: p(r.day)\n };\n}\nfunction c(r, t) {\n return new Date(r || 2001, t || 1, 0).getDate();\n}\nfunction b(r) {\n const { year: t, month: i, day: s } = f(r);\n if (!t || t < 0 || t > 9999 || !i || i < 1 || i > 12 || !s || s < 1) return;\n const n = new Date(Date.UTC(t, i - 1, s));\n if (!(n.getUTCFullYear() !== t || n.getUTCMonth() !== i - 1 || n.getUTCDate() !== s))\n return { year: t, month: i, day: s };\n}\nfunction C(r) {\n const t = b(r);\n return t ? new Date(Date.UTC(t.year, t.month - 1, t.day)) : void 0;\n}\nfunction T(r, t, i, s) {\n const n = i ? {\n year: i.getUTCFullYear(),\n month: i.getUTCMonth() + 1,\n day: i.getUTCDate()\n } : null, e = s ? {\n year: s.getUTCFullYear(),\n month: s.getUTCMonth() + 1,\n day: s.getUTCDate()\n } : null;\n return r === \"year\" ? { min: n?.year ?? 1, max: e?.year ?? 9999 } : r === \"month\" ? {\n min: n && t.year === n.year ? n.month : 1,\n max: e && t.year === e.year ? e.month : 12\n } : {\n min: n && t.year === n.year && t.month === n.month ? n.day : 1,\n max: e && t.year === e.year && t.month === e.month ? e.day : c(t.year, t.month)\n };\n}\nclass U extends V {\n #i;\n #o;\n #t;\n #h;\n #u;\n #e = { segmentIndex: 0, positionInSegment: 0 };\n #n = true;\n #s = null;\n inlineError = \"\";\n get segmentCursor() {\n return { ...this.#e };\n }\n get segmentValues() {\n return { ...this.#t };\n }\n get segments() {\n return this.#i;\n }\n get separator() {\n return this.#o;\n }\n get formattedValue() {\n return this.#l(this.#t);\n }\n #l(t) {\n return this.#i.map((i) => t[i.type]).join(this.#o);\n }\n #r() {\n this._setUserInput(this.#l(this.#t)), this._setValue(C(this.#t) ?? void 0);\n }\n constructor(t) {\n const i = t.format ? { segments: M(t.format), separator: t.separator ?? \"/\" } : P(t.locale), s = t.separator ?? i.separator, n = t.format ? M(t.format) : i.segments, e = t.initialValue ?? t.defaultValue, m = e ? {\n year: String(e.getUTCFullYear()).padStart(4, \"0\"),\n month: String(e.getUTCMonth() + 1).padStart(2, \"0\"),\n day: String(e.getUTCDate()).padStart(2, \"0\")\n } : { year: \"____\", month: \"__\", day: \"__\" }, o = n.map((a) => m[a.type]).join(s);\n super({ ...t, initialUserInput: o }, false), this.#i = n, this.#o = s, this.#t = m, this.#h = t.minDate, this.#u = t.maxDate, this.#r(), this.on(\"cursor\", (a) => this.#f(a)), this.on(\"key\", (a, u) => this.#y(a, u)), this.on(\"finalize\", () => this.#p(t));\n }\n #a() {\n const t = Math.max(0, Math.min(this.#e.segmentIndex, this.#i.length - 1)), i = this.#i[t];\n if (i)\n return this.#e.positionInSegment = Math.max(\n 0,\n Math.min(this.#e.positionInSegment, i.len - 1)\n ), { segment: i, index: t };\n }\n #m(t) {\n this.inlineError = \"\", this.#s = null;\n const i = this.#a();\n i && (this.#e.segmentIndex = Math.max(\n 0,\n Math.min(this.#i.length - 1, i.index + t)\n ), this.#e.positionInSegment = 0, this.#n = true);\n }\n #d(t) {\n const i = this.#a();\n if (!i) return;\n const { segment: s } = i, n = this.#t[s.type], e = !n || n.replace(/_/g, \"\") === \"\", m = Number.parseInt((n || \"0\").replace(/_/g, \"0\"), 10) || 0, o = T(\n s.type,\n f(this.#t),\n this.#h,\n this.#u\n );\n let a;\n e ? a = t === 1 ? o.min : o.max : a = Math.max(Math.min(o.max, m + t), o.min), this.#t = {\n ...this.#t,\n [s.type]: a.toString().padStart(s.len, \"0\")\n }, this.#n = true, this.#s = null, this.#r();\n }\n #f(t) {\n if (t)\n switch (t) {\n case \"right\":\n return this.#m(1);\n case \"left\":\n return this.#m(-1);\n case \"up\":\n return this.#d(1);\n case \"down\":\n return this.#d(-1);\n }\n }\n #y(t, i) {\n if (i?.name === \"backspace\" || i?.sequence === \"\\x7F\" || i?.sequence === \"\\b\" || t === \"\\x7F\" || t === \"\\b\") {\n this.inlineError = \"\";\n const n = this.#a();\n if (!n) return;\n if (!this.#t[n.segment.type].replace(/_/g, \"\")) {\n this.#m(-1);\n return;\n }\n this.#t[n.segment.type] = \"_\".repeat(n.segment.len), this.#n = true, this.#e.positionInSegment = 0, this.#r();\n return;\n }\n if (i?.name === \"tab\") {\n this.inlineError = \"\";\n const n = this.#a();\n if (!n) return;\n const e = i.shift ? -1 : 1, m = n.index + e;\n m >= 0 && m < this.#i.length && (this.#e.segmentIndex = m, this.#e.positionInSegment = 0, this.#n = true);\n return;\n }\n if (t && /^[0-9]$/.test(t)) {\n const n = this.#a();\n if (!n) return;\n const { segment: e } = n, m = !this.#t[e.type].replace(/_/g, \"\");\n if (this.#n && this.#s !== null && !m) {\n const h = this.#s + t, d = { ...this.#t, [e.type]: h }, g = this.#g(d, e);\n if (g) {\n this.inlineError = g, this.#s = null, this.#n = false;\n return;\n }\n this.inlineError = \"\", this.#t[e.type] = h, this.#s = null, this.#n = false, this.#r(), n.index < this.#i.length - 1 && (this.#e.segmentIndex = n.index + 1, this.#e.positionInSegment = 0, this.#n = true);\n return;\n }\n this.#n && !m && (this.#t[e.type] = \"_\".repeat(e.len), this.#e.positionInSegment = 0), this.#n = false, this.#s = null;\n const o = this.#t[e.type], a = o.indexOf(\"_\"), u = a >= 0 ? a : Math.min(this.#e.positionInSegment, e.len - 1);\n if (u < 0 || u >= e.len) return;\n let l = o.slice(0, u) + t + o.slice(u + 1), D = false;\n if (u === 0 && o === \"__\" && (e.type === \"month\" || e.type === \"day\")) {\n const h = Number.parseInt(t, 10);\n l = `0${t}`, D = h <= (e.type === \"month\" ? 1 : 2);\n }\n if (e.type === \"year\" && (l = (o.replace(/_/g, \"\") + t).padStart(e.len, \"_\")), !l.includes(\"_\")) {\n const h = { ...this.#t, [e.type]: l }, d = this.#g(h, e);\n if (d) {\n this.inlineError = d;\n return;\n }\n }\n this.inlineError = \"\", this.#t[e.type] = l;\n const y = l.includes(\"_\") ? void 0 : b(this.#t);\n if (y) {\n const { year: h, month: d } = y, g = c(h, d);\n this.#t = {\n year: String(Math.max(0, Math.min(9999, h))).padStart(4, \"0\"),\n month: String(Math.max(1, Math.min(12, d))).padStart(2, \"0\"),\n day: String(Math.max(1, Math.min(g, y.day))).padStart(2, \"0\")\n };\n }\n this.#r();\n const S = l.indexOf(\"_\");\n D ? (this.#n = true, this.#s = t) : S >= 0 ? this.#e.positionInSegment = S : a >= 0 && n.index < this.#i.length - 1 ? (this.#e.segmentIndex = n.index + 1, this.#e.positionInSegment = 0, this.#n = true) : this.#e.positionInSegment = Math.min(u + 1, e.len - 1);\n }\n }\n #g(t, i) {\n const { month: s, day: n } = f(t);\n if (i.type === \"month\" && (s < 0 || s > 12))\n return settings.date.messages.invalidMonth;\n if (i.type === \"day\" && (n < 0 || n > 31))\n return settings.date.messages.invalidDay(31, \"any month\");\n }\n #p(t) {\n const { year: i, month: s, day: n } = f(this.#t);\n if (i && s && n) {\n const e = c(i, s);\n this.#t = {\n ...this.#t,\n day: String(Math.min(n, e)).padStart(2, \"0\")\n };\n }\n this.value = C(this.#t) ?? t.defaultValue ?? void 0;\n }\n}\n\nlet u$2 = class u extends V {\n options;\n cursor = 0;\n #t;\n getGroupItems(t) {\n return this.options.filter((r) => r.group === t);\n }\n isGroupSelected(t) {\n const r = this.getGroupItems(t), e = this.value;\n return e === void 0 ? false : r.every((s) => e.includes(s.value));\n }\n toggleValue() {\n const t = this.options[this.cursor];\n if (t !== void 0)\n if (this.value === void 0 && (this.value = []), t.group === true) {\n const r = t.value, e = this.getGroupItems(r);\n this.isGroupSelected(r) ? this.value = this.value.filter(\n (s) => e.findIndex((i) => i.value === s) === -1\n ) : this.value = [...this.value, ...e.map((s) => s.value)], this.value = Array.from(new Set(this.value));\n } else {\n const r = this.value.includes(t.value);\n this.value = r ? this.value.filter((e) => e !== t.value) : [...this.value, t.value];\n }\n }\n constructor(t) {\n super(t, false);\n const { options: r } = t;\n this.#t = t.selectableGroups !== false, this.options = Object.entries(r).flatMap(([e, s]) => [\n { value: e, group: true, label: e },\n ...s.map((i) => ({ ...i, group: e }))\n ]), this.value = [...t.initialValues ?? []], this.cursor = Math.max(\n this.options.findIndex(({ value: e }) => e === t.cursorAt),\n this.#t ? 0 : 1\n ), this.on(\"cursor\", (e) => {\n switch (e) {\n case \"left\":\n case \"up\": {\n this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n const s = this.options[this.cursor]?.group === true;\n !this.#t && s && (this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1);\n break;\n }\n case \"down\":\n case \"right\": {\n this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n const s = this.options[this.cursor]?.group === true;\n !this.#t && s && (this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1);\n break;\n }\n case \"space\":\n this.toggleValue();\n break;\n }\n });\n }\n};\n\nconst o = /* @__PURE__ */ new Set([\"up\", \"down\", \"left\", \"right\"]);\nclass h extends V {\n #t = false;\n #s;\n focused = \"editor\";\n get userInputWithCursor() {\n if (this.state === \"submit\")\n return this.userInput;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${t}\\u2588`;\n const s = t.slice(0, this.cursor), r = t.slice(this.cursor, this.cursor + 1), i = t.slice(this.cursor + 1);\n return r === `\n` ? `${s}\\u2588\n${i}` : `${s}${styleText(\"inverse\", r)}${i}`;\n }\n get cursor() {\n return this._cursor;\n }\n #r(t) {\n if (this.userInput.length === 0) {\n this._setUserInput(t);\n return;\n }\n this._setUserInput(\n this.userInput.slice(0, this.cursor) + t + this.userInput.slice(this.cursor)\n );\n }\n #i(t) {\n const s = this.value ?? \"\";\n switch (t) {\n case \"up\":\n this._cursor = findTextCursor(this._cursor, 0, -1, s);\n return;\n case \"down\":\n this._cursor = findTextCursor(this._cursor, 0, 1, s);\n return;\n case \"left\":\n this._cursor = findTextCursor(this._cursor, -1, 0, s);\n return;\n case \"right\":\n this._cursor = findTextCursor(this._cursor, 1, 0, s);\n return;\n }\n }\n _shouldSubmit(t, s) {\n if (this.#s)\n return this.focused === \"submit\" ? true : (this.#r(`\n`), this._cursor++, false);\n const r = this.#t;\n return this.#t = true, r && this.cursor === this.userInput.length ? (this.userInput[this.cursor - 1] === `\n` && (this._setUserInput(\n this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor)\n ), this._cursor--), true) : (this.#r(`\n`), this._cursor++, false);\n }\n constructor(t) {\n const s = t.initialUserInput ?? t.initialValue;\n super(\n {\n ...t,\n initialUserInput: s\n },\n false\n ), s !== void 0 && (this._cursor = s.length), this.#s = t.showSubmit ?? false, this.on(\"key\", (r, i) => {\n if (i?.name && o.has(i.name)) {\n this.#t = false, this.#i(i.name);\n return;\n }\n if (r === \"\t\" && this.#s) {\n this.focused = this.focused === \"editor\" ? \"submit\" : \"editor\";\n return;\n }\n if (i?.name !== \"return\") {\n if (this.#t = false, i?.name === \"backspace\" && this.cursor > 0) {\n this._setUserInput(\n this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor)\n ), this._cursor--;\n return;\n }\n if (i?.name === \"delete\" && this.cursor < this.userInput.length) {\n this._setUserInput(\n this.userInput.slice(0, this.cursor) + this.userInput.slice(this.cursor + 1)\n );\n return;\n }\n r && (this.#s && this.focused === \"submit\" && (this.focused = \"editor\"), this.#r(r ?? \"\"), this._cursor++);\n }\n }), this.on(\"userInput\", (r) => {\n this._setValue(r);\n }), this.on(\"finalize\", () => {\n this.value || (this.value = t.defaultValue), this.value === void 0 && (this.value = \"\");\n });\n }\n}\n\nclass a extends V {\n options;\n cursor = 0;\n get _value() {\n return this.options[this.cursor]?.value;\n }\n get _enabledOptions() {\n return this.options.filter((e) => e.disabled !== true);\n }\n toggleAll() {\n const e = this._enabledOptions, i = this.value !== void 0 && this.value.length === e.length;\n this.value = i ? [] : e.map((t) => t.value);\n }\n toggleInvert() {\n const e = this.value;\n if (!e)\n return;\n const i = this._enabledOptions.filter((t) => !e.includes(t.value));\n this.value = i.map((t) => t.value);\n }\n toggleValue() {\n this.value === void 0 && (this.value = []);\n const e = this.value.includes(this._value);\n this.value = e ? this.value.filter((i) => i !== this._value) : [...this.value, this._value];\n }\n constructor(e) {\n super(e, false), this.options = e.options, this.value = [...e.initialValues ?? []];\n const i = Math.max(\n this.options.findIndex(({ value: t }) => t === e.cursorAt),\n 0\n );\n this.cursor = this.options[i]?.disabled ? findCursor(i, 1, this.options) : i, this.on(\"key\", (t, l) => {\n l.name === \"a\" && this.toggleAll(), l.name === \"i\" && this.toggleInvert();\n }), this.on(\"cursor\", (t) => {\n switch (t) {\n case \"left\":\n case \"up\":\n this.cursor = findCursor(this.cursor, -1, this.options);\n break;\n case \"down\":\n case \"right\":\n this.cursor = findCursor(this.cursor, 1, this.options);\n break;\n case \"space\":\n this.toggleValue();\n break;\n }\n });\n }\n}\n\nlet u$1 = class u extends V {\n _mask = \"\\u2022\";\n get cursor() {\n return this._cursor;\n }\n get masked() {\n return this.userInput.replaceAll(/./g, this._mask);\n }\n get userInputWithCursor() {\n if (this.state === \"submit\" || this.state === \"cancel\")\n return this.masked;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${this.masked}${styleText([\"inverse\", \"hidden\"], \"_\")}`;\n const s = this.masked, r = s.slice(0, this.cursor), i = s.slice(this.cursor, this.cursor + 1), o = s.slice(this.cursor + 1);\n return `${r}${styleText(\"inverse\", i)}${o}`;\n }\n clear() {\n this._clearUserInput();\n }\n constructor({ mask: t, ...s }) {\n super(s), this._mask = t ?? \"\\u2022\", this.on(\"userInput\", (r) => {\n this._setValue(r);\n }), this.on(\"finalize\", () => {\n this.value === void 0 && (this.value = \"\");\n });\n }\n};\n\nlet n$1 = class n extends V {\n options;\n cursor = 0;\n get _selectedValue() {\n return this.options[this.cursor];\n }\n changeValue() {\n const e = this._selectedValue;\n this.value = e === void 0 ? void 0 : e.value;\n }\n constructor(e) {\n super(e, false), this.options = e.options;\n const o = this.options.findIndex(({ value: s }) => s === e.initialValue), t = o === -1 ? 0 : o;\n this.cursor = this.options[t]?.disabled ? findCursor(t, 1, this.options) : t, this.changeValue(), this.on(\"cursor\", (s) => {\n switch (s) {\n case \"left\":\n case \"up\":\n this.cursor = findCursor(this.cursor, -1, this.options);\n break;\n case \"down\":\n case \"right\":\n this.cursor = findCursor(this.cursor, 1, this.options);\n break;\n }\n this.changeValue();\n });\n }\n};\n\nclass u extends V {\n options;\n cursor = 0;\n constructor(t) {\n super(t, false), this.options = t.options;\n const s = t.caseSensitive === true, i = this.options.map(({ value: [e] }) => s ? e : e?.toLowerCase());\n this.cursor = Math.max(i.indexOf(t.initialValue), 0), this.on(\"key\", (e) => {\n if (!e)\n return;\n const o = s ? e : e.toLowerCase();\n if (!i.includes(o))\n return;\n const n = this.options.find(({ value: [r] }) => s ? r === o : r?.toLowerCase() === o);\n n && (this.value = n.value, this.state = \"submit\", this.emit(\"submit\"));\n });\n }\n}\n\nclass n extends V {\n get userInputWithCursor() {\n if (this.state === \"submit\")\n return this.userInput;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${this.userInput}\\u2588`;\n const r = t.slice(0, this.cursor), s = t.slice(this.cursor, this.cursor + 1), e = t.slice(this.cursor + 1);\n return `${r}${styleText(\"inverse\", s)}${e}`;\n }\n get cursor() {\n return this._cursor;\n }\n constructor(t) {\n super({\n ...t,\n initialUserInput: t.initialUserInput ?? t.initialValue\n }), this.on(\"userInput\", (r) => {\n this._setValue(r);\n }), this.on(\"finalize\", () => {\n this.value || (this.value = t.defaultValue), this.value === void 0 && (this.value = \"\");\n });\n }\n}\n\nexport { T$1 as AutocompletePrompt, r as ConfirmPrompt, U as DatePrompt, u$2 as GroupMultiSelectPrompt, h as MultiLinePrompt, a as MultiSelectPrompt, u$1 as PasswordPrompt, V as Prompt, u as SelectKeyPrompt, n$1 as SelectPrompt, n as TextPrompt, block, getColumns, getRows, isCancel, runValidation, settings, updateSettings, wrapTextWithPrefix };\n","import { getColumns, getRows, AutocompletePrompt, settings, ConfirmPrompt, wrapTextWithPrefix, DatePrompt, runValidation, isCancel, MultiSelectPrompt, GroupMultiSelectPrompt, MultiLinePrompt, PasswordPrompt, block, SelectPrompt, SelectKeyPrompt, TextPrompt } from '@clack/core';\nexport { isCancel, settings, updateSettings } from '@clack/core';\nimport { styleText, stripVTControlCharacters } from 'node:util';\nimport process$1 from 'node:process';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport l from 'fast-string-width';\nimport { existsSync, lstatSync, readdirSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { cursor, erase } from 'sisteransi';\n\nfunction isUnicodeSupported() {\n\tif (process$1.platform !== 'win32') {\n\t\treturn process$1.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process$1.env.CI)\n\t\t|| Boolean(process$1.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process$1.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process$1.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process$1.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process$1.env.TERM_PROGRAM === 'vscode'\n\t\t|| process$1.env.TERM === 'xterm-256color'\n\t\t|| process$1.env.TERM === 'alacritty'\n\t\t|| process$1.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n\nconst unicode = isUnicodeSupported(), isCI = () => process.env.CI === \"true\", isTTY = (o) => o.isTTY === true, unicodeOr = (o, e) => unicode ? o : e, S_STEP_ACTIVE = unicodeOr(\"\\u25C6\", \"*\"), S_STEP_CANCEL = unicodeOr(\"\\u25A0\", \"x\"), S_STEP_ERROR = unicodeOr(\"\\u25B2\", \"x\"), S_STEP_SUBMIT = unicodeOr(\"\\u25C7\", \"o\"), S_BAR_START = unicodeOr(\"\\u250C\", \"T\"), S_BAR = unicodeOr(\"\\u2502\", \"|\"), S_BAR_END = unicodeOr(\"\\u2514\", \"\\u2014\"), S_BAR_START_RIGHT = unicodeOr(\"\\u2510\", \"T\"), S_BAR_END_RIGHT = unicodeOr(\"\\u2518\", \"\\u2014\"), S_RADIO_ACTIVE = unicodeOr(\"\\u25CF\", \">\"), S_RADIO_INACTIVE = unicodeOr(\"\\u25CB\", \" \"), S_CHECKBOX_ACTIVE = unicodeOr(\"\\u25FB\", \"[\\u2022]\"), S_CHECKBOX_SELECTED = unicodeOr(\"\\u25FC\", \"[+]\"), S_CHECKBOX_INACTIVE = unicodeOr(\"\\u25FB\", \"[ ]\"), S_PASSWORD_MASK = unicodeOr(\"\\u25AA\", \"\\u2022\"), S_BAR_H = unicodeOr(\"\\u2500\", \"-\"), S_CORNER_TOP_RIGHT = unicodeOr(\"\\u256E\", \"+\"), S_CONNECT_LEFT = unicodeOr(\"\\u251C\", \"+\"), S_CORNER_BOTTOM_RIGHT = unicodeOr(\"\\u256F\", \"+\"), S_CORNER_BOTTOM_LEFT = unicodeOr(\"\\u2570\", \"+\"), S_CORNER_TOP_LEFT = unicodeOr(\"\\u256D\", \"+\"), S_INFO = unicodeOr(\"\\u25CF\", \"\\u2022\"), S_SUCCESS = unicodeOr(\"\\u25C6\", \"*\"), S_WARN = unicodeOr(\"\\u25B2\", \"!\"), S_ERROR = unicodeOr(\"\\u25A0\", \"x\"), symbol = (o) => {\n switch (o) {\n case \"initial\":\n case \"active\":\n return styleText(\"cyan\", S_STEP_ACTIVE);\n case \"cancel\":\n return styleText(\"red\", S_STEP_CANCEL);\n case \"error\":\n return styleText(\"yellow\", S_STEP_ERROR);\n case \"submit\":\n return styleText(\"green\", S_STEP_SUBMIT);\n }\n}, symbolBar = (o) => {\n switch (o) {\n case \"initial\":\n case \"active\":\n return styleText(\"cyan\", S_BAR);\n case \"cancel\":\n return styleText(\"red\", S_BAR);\n case \"error\":\n return styleText(\"yellow\", S_BAR);\n case \"submit\":\n return styleText(\"green\", S_BAR);\n }\n};\nfunction formatInstructionFooter(o, e) {\n const r = [`${e ? `${styleText(\"cyan\", S_BAR)} ` : \"\"}${o.join(\" \\u2022 \")}`];\n return e && r.push(styleText(\"cyan\", S_BAR_END)), r;\n}\n\nconst I = (l, e, w, p, b, C = false) => {\n let r = e, O = 0;\n if (C)\n for (let i = p - 1; i >= w; i--) {\n const m = l[i];\n if (m && (r -= m.length), O++, r <= b) break;\n }\n else\n for (let i = w; i < p; i++) {\n const m = l[i];\n if (m && (r -= m.length), O++, r <= b) break;\n }\n return { lineCount: r, removals: O };\n};\nconst limitOptions = ({\n cursor: l,\n options: e,\n style: w,\n output: p = process.stdout,\n maxItems: b = Number.POSITIVE_INFINITY,\n columnPadding: C = 0,\n rowPadding: r = 4\n}) => {\n const i = getColumns(p) - C, m = getRows(p), M = styleText(\"dim\", \"...\"), v = Math.max(m - r, 0), a = Math.max(Math.min(b, v), 5);\n let f = 0;\n l >= a - 3 && (f = Math.max(\n Math.min(l - a + 3, e.length - a),\n 0\n ));\n let d = a < e.length && f > 0, c = a < e.length && f + a < e.length;\n const W = Math.min(\n f + a,\n e.length\n ), s = [];\n let g = 0;\n d && g++, c && g++;\n const T = f + (d ? 1 : 0), y = W - (c ? 1 : 0);\n for (let t = T; t < y; t++) {\n const n = e[t], o = n ? w(n, t === l) : \"\", h = wrapAnsi(o, i, {\n hard: true,\n trim: false\n }).split(`\n`);\n s.push(h), g += h.length;\n }\n if (g > v) {\n let t = 0, n = 0, o = g;\n const h = l - T;\n let u = v;\n const L = () => I(s, o, 0, h, u), E = () => I(\n s,\n o,\n h + 1,\n s.length,\n u,\n true\n );\n d ? ({ lineCount: o, removals: t } = L(), o > u && (c || (u -= 1), { lineCount: o, removals: n } = E())) : (c || (u -= 1), { lineCount: o, removals: n } = E(), o > u && (u -= 1, { lineCount: o, removals: t } = L())), t > 0 && (d = true, s.splice(0, t)), n > 0 && (c = true, s.splice(s.length - n, n));\n }\n const x = [];\n d && x.push(M);\n for (const t of s)\n for (const n of t)\n x.push(n);\n return c && x.push(M), x;\n};\n\nfunction P(t) {\n return t.label ?? String(t.value ?? \"\");\n}\nfunction E(t, c) {\n if (!t)\n return true;\n const n = (c.label ?? String(c.value ?? \"\")).toLowerCase(), i = (c.hint ?? \"\").toLowerCase(), l = String(c.value).toLowerCase(), o = t.toLowerCase();\n return n.includes(o) || i.includes(o) || l.includes(o);\n}\nfunction N(t, c) {\n const n = [];\n for (const i of c)\n t.includes(i.value) && n.push(i);\n return n;\n}\nconst autocomplete = (t) => new AutocompletePrompt({\n options: t.options,\n initialValue: t.initialValue ? [t.initialValue] : void 0,\n initialUserInput: t.initialUserInput,\n placeholder: t.placeholder,\n filter: t.filter ?? ((n, i) => E(n, i)),\n signal: t.signal,\n input: t.input,\n output: t.output,\n validate: t.validate,\n render() {\n const n = t.withGuide ?? settings.withGuide, i = n ? [`${styleText(\"gray\", S_BAR)}`, `${symbol(this.state)} ${t.message}`] : [`${symbol(this.state)} ${t.message}`], l = this.userInput, o = this.options, m = t.placeholder, p = l === \"\" && m !== void 0, $ = (r, s) => {\n const a = P(r), u = r.hint && r.value === this.focusedValue ? styleText(\"dim\", ` (${r.hint})`) : \"\";\n switch (s) {\n case \"active\":\n return `${styleText(\"green\", S_RADIO_ACTIVE)} ${a}${u}`;\n case \"inactive\":\n return `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", a)}`;\n case \"disabled\":\n return `${styleText(\"gray\", S_RADIO_INACTIVE)} ${styleText([\"strikethrough\", \"gray\"], a)}`;\n }\n };\n switch (this.state) {\n case \"submit\": {\n const r = N(this.selectedValues, o), s = r.length > 0 ? ` ${styleText(\"dim\", r.map(P).join(\", \"))}` : \"\", a = n ? styleText(\"gray\", S_BAR) : \"\";\n return `${i.join(`\n`)}\n${a}${s}`;\n }\n case \"cancel\": {\n const r = l ? ` ${styleText([\"strikethrough\", \"dim\"], l)}` : \"\", s = n ? styleText(\"gray\", S_BAR) : \"\";\n return `${i.join(`\n`)}\n${s}${r}`;\n }\n default: {\n const r = this.state === \"error\" ? \"yellow\" : \"cyan\", s = n ? `${styleText(r, S_BAR)} ` : \"\", a = n ? styleText(r, S_BAR_END) : \"\";\n let u = \"\";\n if (this.isNavigating || p) {\n const d = p ? m : l;\n u = d !== \"\" ? ` ${styleText(\"dim\", d)}` : \"\";\n } else\n u = ` ${this.userInputWithCursor}`;\n const V = this.filteredOptions.length !== o.length ? styleText(\n \"dim\",\n ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? \"\" : \"es\"})`\n ) : \"\", y = this.filteredOptions.length === 0 && l ? [`${s}${styleText(\"yellow\", \"No matches found\")}`] : [], b = this.state === \"error\" ? [`${s}${styleText(\"yellow\", this.error)}`] : [];\n n && i.push(`${s.trimEnd()}`), i.push(\n `${s}${styleText(\"dim\", \"Search:\")}${u}${V}`,\n ...y,\n ...b\n );\n const v = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`,\n `${styleText(\"dim\", \"Type:\")} to search`\n ], g = [`${s}${v.join(\" \\u2022 \")}`, a], O = this.filteredOptions.length === 0 ? [] : limitOptions({\n cursor: this.cursor,\n options: this.filteredOptions,\n columnPadding: n ? 3 : 0,\n // for `| ` when guide is shown\n rowPadding: i.length + g.length,\n style: (d, f) => $(\n d,\n d.disabled ? \"disabled\" : f ? \"active\" : \"inactive\"\n ),\n maxItems: t.maxItems,\n output: t.output\n });\n return [\n ...i,\n ...O.map((d) => `${s}${d}`),\n ...g\n ].join(`\n`);\n }\n }\n }\n}).prompt(), autocompleteMultiselect = (t) => {\n const c = (i, l, o, m) => {\n const p = o.includes(i.value), $ = i.label ?? String(i.value ?? \"\"), r = i.hint && m !== void 0 && i.value === m ? styleText(\"dim\", ` (${i.hint})`) : \"\", s = p ? styleText(\"green\", S_CHECKBOX_SELECTED) : styleText(\"dim\", S_CHECKBOX_INACTIVE);\n return i.disabled ? `${styleText(\"gray\", S_CHECKBOX_INACTIVE)} ${styleText([\"strikethrough\", \"gray\"], $)}` : l ? `${s} ${$}${r}` : `${s} ${styleText(\"dim\", $)}`;\n }, n = new AutocompletePrompt({\n options: t.options,\n multiple: true,\n placeholder: t.placeholder,\n filter: t.filter ?? ((i, l) => E(i, l)),\n validate: () => {\n if (t.required && n.selectedValues.length === 0)\n return \"Please select at least one item\";\n },\n initialValue: t.initialValues,\n signal: t.signal,\n input: t.input,\n output: t.output,\n render() {\n const i = t.withGuide ?? settings.withGuide, l = `${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${t.message}\n`, o = this.userInput, m = t.placeholder, p = o === \"\" && m !== void 0, $ = this.isNavigating || p ? styleText(\"dim\", p ? m : o) : this.userInputWithCursor, r = this.options, s = this.filteredOptions.length !== r.length ? styleText(\n \"dim\",\n ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? \"\" : \"es\"})`\n ) : \"\";\n switch (this.state) {\n case \"submit\":\n return `${l}${i ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${styleText(\n \"dim\",\n `${this.selectedValues.length} items selected`\n )}`;\n case \"cancel\":\n return `${l}${i ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${styleText(\n [\"strikethrough\", \"dim\"],\n o\n )}`;\n default: {\n const a = this.state === \"error\" ? \"yellow\" : \"cyan\", u = i ? `${styleText(a, S_BAR)} ` : \"\", V = i ? styleText(a, S_BAR_END) : \"\", y = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", this.isNavigating ? \"Space/Tab:\" : \"Tab:\")} select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`,\n `${styleText(\"dim\", \"Type:\")} to search`\n ], b = this.filteredOptions.length === 0 && o ? [`${u}${styleText(\"yellow\", \"No matches found\")}`] : [], v = this.state === \"error\" ? [`${u}${styleText(\"yellow\", this.error)}`] : [], g = [\n ...`${l}${i ? styleText(a, S_BAR) : \"\"}`.split(`\n`),\n `${u}${styleText(\"dim\", \"Search:\")} ${$}${s}`,\n ...b,\n ...v\n ], O = [`${u}${y.join(\" \\u2022 \")}`, V], d = limitOptions({\n cursor: this.cursor,\n options: this.filteredOptions,\n style: (f, _) => c(f, _, this.selectedValues, this.focusedValue),\n maxItems: t.maxItems,\n output: t.output,\n rowPadding: g.length + O.length\n });\n return [\n ...g,\n ...d.map((f) => `${u}${f}`),\n ...O\n ].join(`\n`);\n }\n }\n }\n });\n return n.prompt();\n};\n\nconst J = [\n S_CORNER_TOP_LEFT,\n S_CORNER_TOP_RIGHT,\n S_CORNER_BOTTOM_LEFT,\n S_CORNER_BOTTOM_RIGHT\n], K = [S_BAR_START, S_BAR_START_RIGHT, S_BAR_END, S_BAR_END_RIGHT];\nfunction A$1(n, e, t, o) {\n let i = t, f = t;\n return o === \"center\" ? i = Math.floor((e - n) / 2) : o === \"right\" && (i = e - n - t), f = e - i - n, [i, f];\n}\nconst Q = (n) => n;\nconst box = (n = \"\", e = \"\", t) => {\n const o = t?.output ?? process.stdout, i = getColumns(o), R = 1 * 2, u = t?.titlePadding ?? 1, h = t?.contentPadding ?? 2, w = t?.width === void 0 || t.width === \"auto\" ? 1 : Math.min(1, t.width), m = t?.withGuide ?? settings.withGuide ? `${S_BAR} ` : \"\", b = t?.formatBorder ?? Q, a = (t?.rounded ? J : K).map(b), _ = b(S_BAR_H), B = b(S_BAR), p = l(m), x = l(e), O = i - p;\n let r = Math.floor(i * w) - p;\n if (t?.width === \"auto\") {\n const c = n.split(`\n`);\n let s = x + u * 2;\n for (const G of c) {\n const P = l(G) + h * 2;\n P > s && (s = P);\n }\n const g = s + R;\n g < r && (r = g);\n }\n r % 2 !== 0 && (r < O ? r++ : r--);\n const d = r - R, S = d - u * 2, T = x > S ? `${e.slice(0, S - 3)}...` : e, [y, W] = A$1(\n l(T),\n d,\n u,\n t?.titleAlign\n ), L = wrapAnsi(n, d - h * 2, {\n hard: true,\n trim: false\n });\n o.write(\n `${m}${a[0]}${_.repeat(y)}${T}${_.repeat(W)}${a[1]}\n`\n );\n const E = L.split(`\n`);\n for (const c of E) {\n const [s, g] = A$1(\n l(c),\n d,\n h,\n t?.contentAlign\n );\n o.write(\n `${m}${B}${\" \".repeat(s)}${c}${\" \".repeat(g)}${B}\n`\n );\n }\n o.write(`${m}${a[2]}${_.repeat(d)}${a[3]}\n`);\n};\n\nconst confirm = (i) => {\n const a = i.active ?? \"Yes\", s = i.inactive ?? \"No\";\n return new ConfirmPrompt({\n active: a,\n inactive: s,\n signal: i.signal,\n input: i.input,\n output: i.output,\n initialValue: i.initialValue ?? true,\n render() {\n const e = i.withGuide ?? settings.withGuide, u = `${symbol(this.state)} `, l = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", f = wrapTextWithPrefix(\n i.output,\n i.message,\n l,\n u\n ), o = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${f}\n`, c = this.value ? a : s;\n switch (this.state) {\n case \"submit\": {\n const r = e ? `${styleText(\"gray\", S_BAR)} ` : \"\";\n return `${o}${r}${styleText(\"dim\", c)}`;\n }\n case \"cancel\": {\n const r = e ? `${styleText(\"gray\", S_BAR)} ` : \"\";\n return `${o}${r}${styleText([\"strikethrough\", \"dim\"], c)}${e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const r = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", g = e ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${o}${r}${this.value ? `${styleText(\"green\", S_RADIO_ACTIVE)} ${a}` : `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", a)}`}${i.vertical ? e ? `\n${styleText(\"cyan\", S_BAR)} ` : `\n` : ` ${styleText(\"dim\", \"/\")} `}${this.value ? `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", s)}` : `${styleText(\"green\", S_RADIO_ACTIVE)} ${s}`}\n${g}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst date = (e) => {\n const r = e.validate;\n return new DatePrompt({\n ...e,\n validate(t) {\n if (t === void 0)\n return e.defaultValue !== void 0 ? void 0 : r ? runValidation(r, t) : settings.date.messages.required;\n const o = (i) => i.toISOString().slice(0, 10);\n if (e.minDate && o(t) < o(e.minDate))\n return settings.date.messages.afterMin(e.minDate);\n if (e.maxDate && o(t) > o(e.maxDate))\n return settings.date.messages.beforeMax(e.maxDate);\n if (r) return runValidation(r, t);\n },\n render() {\n const t = (e?.withGuide ?? settings.withGuide) !== false, i = `${`${t ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, l = this.state !== \"initial\" ? this.state : \"active\", d = b(this, l), c = this.value instanceof Date ? this.formattedValue : \"\";\n switch (this.state) {\n case \"error\": {\n const a = this.error ? ` ${styleText(\"yellow\", this.error)}` : \"\", s = t ? `${styleText(\"yellow\", S_BAR)} ` : \"\", f = t ? styleText(\"yellow\", S_BAR_END) : \"\";\n return `${i.trim()}\n${s}${d}\n${f}${a}\n`;\n }\n case \"submit\": {\n const a = c ? ` ${styleText(\"dim\", c)}` : \"\", s = t ? styleText(\"gray\", S_BAR) : \"\";\n return `${i}${s}${a}`;\n }\n case \"cancel\": {\n const a = c ? ` ${styleText([\"strikethrough\", \"dim\"], c)}` : \"\", s = t ? styleText(\"gray\", S_BAR) : \"\";\n return `${i}${s}${a}${c.trim() ? `\n${s}` : \"\"}`;\n }\n default: {\n const a = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = t ? styleText(\"cyan\", S_BAR_END) : \"\", f = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", g = this.inlineError ? `\n${f}${styleText(\"yellow\", this.inlineError)}` : \"\";\n return `${i}${a}${d}${g}\n${s}\n`;\n }\n }\n }\n }).prompt();\n};\nfunction b(e, r) {\n const t = e.segmentValues, o = e.segmentCursor;\n if (r === \"submit\" || r === \"cancel\")\n return e.formattedValue;\n const i = styleText(\"gray\", e.separator);\n return e.segments.map((l, d) => {\n const c = d === o.segmentIndex && ![\"submit\", \"cancel\"].includes(r), a = p[l.type];\n return x(t[l.type], { isActive: c, label: a });\n }).join(i);\n}\nfunction x(e, r) {\n const t = !e || e.replace(/_/g, \"\") === \"\";\n return r.isActive ? styleText(\"inverse\", t ? r.label : e.replace(/_/g, \" \")) : t ? styleText(\"dim\", r.label) : e.replace(/_/g, styleText(\"dim\", \" \"));\n}\nconst p = {\n year: \"yyyy\",\n month: \"mm\",\n day: \"dd\"\n};\n\nconst group = async (o, r) => {\n const t = {}, p = Object.keys(o);\n for (const e of p) {\n const i = o[e], n = await i({ results: t })?.catch((a) => {\n throw a;\n });\n if (typeof r?.onCancel == \"function\" && isCancel(n)) {\n t[e] = \"canceled\", r.onCancel({ results: t });\n continue;\n }\n t[e] = n;\n }\n return t;\n};\n\nconst MULTISELECT_INSTRUCTIONS = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", \"Space:\")} select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`\n];\nconst m = (i, u) => i.split(`\n`).map((d) => u(d)).join(`\n`);\nconst multiselect = (i) => {\n const u = (t, a) => {\n const r = t.label ?? String(t.value);\n return a === \"disabled\" ? `${styleText(\"gray\", S_CHECKBOX_INACTIVE)} ${m(r, (o) => styleText([\"strikethrough\", \"gray\"], o))}${t.hint ? ` ${styleText(\"dim\", `(${t.hint ?? \"disabled\"})`)}` : \"\"}` : a === \"active\" ? `${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} ${r}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"selected\" ? `${styleText(\"green\", S_CHECKBOX_SELECTED)} ${m(r, (o) => styleText(\"dim\", o))}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"cancelled\" ? `${m(r, (o) => styleText([\"strikethrough\", \"dim\"], o))}` : a === \"active-selected\" ? `${styleText(\"green\", S_CHECKBOX_SELECTED)} ${r}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"submitted\" ? `${m(r, (o) => styleText(\"dim\", o))}` : `${styleText(\"dim\", S_CHECKBOX_INACTIVE)} ${m(r, (o) => styleText(\"dim\", o))}`;\n }, d = i.required ?? true, v = i.showInstructions ?? true;\n return new MultiSelectPrompt({\n options: i.options,\n signal: i.signal,\n input: i.input,\n output: i.output,\n initialValues: i.initialValues,\n required: d,\n cursorAt: i.cursorAt,\n validate(t) {\n if (d && (t === void 0 || t.length === 0))\n return `Please select at least one option.\n${styleText(\n \"reset\",\n styleText(\n \"dim\",\n `Press ${styleText([\"gray\", \"bgWhite\", \"inverse\"], \" space \")} to select, ${styleText(\n \"gray\",\n styleText(\"bgWhite\", styleText(\"inverse\", \" enter \"))\n )} to submit`\n )\n )}`;\n },\n render() {\n const t = i.withGuide ?? settings.withGuide, a = wrapTextWithPrefix(\n i.output,\n i.message,\n t ? `${symbolBar(this.state)} ` : \"\",\n `${symbol(this.state)} `\n ), r = `${t ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${a}\n`, o = this.value ?? [], p = (n, l) => {\n if (n.disabled)\n return u(n, \"disabled\");\n const s = o.includes(n.value);\n return l && s ? u(n, \"active-selected\") : s ? u(n, \"selected\") : u(n, l ? \"active\" : \"inactive\");\n };\n switch (this.state) {\n case \"submit\": {\n const n = this.options.filter(({ value: s }) => o.includes(s)).map((s) => u(s, \"submitted\")).join(styleText(\"dim\", \", \")) || styleText(\"dim\", \"none\"), l = wrapTextWithPrefix(\n i.output,\n n,\n t ? `${styleText(\"gray\", S_BAR)} ` : \"\"\n );\n return `${r}${l}`;\n }\n case \"cancel\": {\n const n = this.options.filter(({ value: s }) => o.includes(s)).map((s) => u(s, \"cancelled\")).join(styleText(\"dim\", \", \"));\n if (n.trim() === \"\")\n return `${r}${styleText(\"gray\", S_BAR)}`;\n const l = wrapTextWithPrefix(\n i.output,\n n,\n t ? `${styleText(\"gray\", S_BAR)} ` : \"\"\n );\n return `${r}${l}${t ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n case \"error\": {\n const n = t ? `${styleText(\"yellow\", S_BAR)} ` : \"\", l = this.error.split(`\n`).map(\n ($, C) => C === 0 ? `${t ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\"}${styleText(\"yellow\", $)}` : ` ${$}`\n ).join(`\n`), s = r.split(`\n`).length, h = l.split(`\n`).length + 1;\n return `${r}${n}${limitOptions({\n output: i.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: i.maxItems,\n columnPadding: n.length,\n rowPadding: s + h,\n style: p\n }).join(`\n${n}`)}\n${l}\n`;\n }\n default: {\n const n = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", l = r.split(`\n`).length, s = v ? formatInstructionFooter(MULTISELECT_INSTRUCTIONS, t) : t ? [styleText(\"cyan\", S_BAR_END)] : [], h = s.join(`\n`), $ = s.length + 1;\n return `${r}${n}${limitOptions({\n output: i.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: i.maxItems,\n columnPadding: n.length,\n rowPadding: l + $,\n style: p\n }).join(`\n${n}`)}\n${h}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst groupMultiselect = (o) => {\n const { selectableGroups: h = true, groupSpacing: x = 0 } = o, m = (n, l, g = []) => {\n const a = n.label ?? String(n.value), t = typeof n.group == \"string\", s = t && (g[g.indexOf(n) + 1] ?? { group: true }), u = t && s && s.group === true;\n let r = \"\", c = \"\";\n t && (h ? (r = u ? `${S_BAR_END} ` : `${S_BAR} `, c = u ? \" \" : `${S_BAR} `) : r = \" \");\n let i = \"\";\n if (x > 0 && !t && (i = `\n`.repeat(x)), l === \"active\")\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} `,\n `${i}${styleText(\"dim\", c)} `\n );\n if (l === \"group-active\")\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${r} `,\n `${i}${r}${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} `,\n `${i}${c} `,\n (d) => styleText(\"dim\", d)\n );\n if (l === \"group-active-selected\")\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${r} `,\n `${i}${r}${styleText(\"green\", S_CHECKBOX_SELECTED)} `,\n `${i}${c} `,\n (d) => styleText(\"dim\", d)\n );\n if (l === \"selected\") {\n const d = t || h ? styleText(\"green\", S_CHECKBOX_SELECTED) : \"\";\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` (${n.hint})` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${d} `,\n `${i}${styleText(\"dim\", c)} `,\n (S) => styleText(\"dim\", S)\n );\n }\n if (l === \"cancelled\")\n return `${styleText([\"strikethrough\", \"dim\"], a)}`;\n if (l === \"active-selected\")\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${styleText(\"green\", S_CHECKBOX_SELECTED)} `,\n `${i}${styleText(\"dim\", c)} `\n );\n if (l === \"submitted\")\n return `${styleText(\"dim\", a)}`;\n const f = t || h ? styleText(\"dim\", S_CHECKBOX_INACTIVE) : \"\";\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${f} `,\n `${i}${styleText(\"dim\", c)} `,\n (d) => styleText(\"dim\", d)\n );\n }, y = o.required ?? true, I = o.showInstructions ?? true;\n return new GroupMultiSelectPrompt({\n options: o.options,\n signal: o.signal,\n input: o.input,\n output: o.output,\n initialValues: o.initialValues,\n required: y,\n cursorAt: o.cursorAt,\n selectableGroups: h,\n validate(n) {\n if (y && (n === void 0 || n.length === 0))\n return `Please select at least one option.\n${styleText(\n \"reset\",\n styleText(\n \"dim\",\n `Press ${styleText([\"gray\", \"bgWhite\", \"inverse\"], \" space \")} to select, ${styleText(\n \"gray\",\n styleText([\"bgWhite\", \"inverse\"], \" enter \")\n )} to submit`\n )\n )}`;\n },\n render() {\n const n = o.withGuide ?? settings.withGuide, l = `${n ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${o.message}\n`, g = this.value ?? [], a = (t, s) => {\n const u = this.options, r = g.includes(t.value) || t.group === true && this.isGroupSelected(`${t.value}`);\n return !s && typeof t.group == \"string\" && this.options[this.cursor]?.value === t.group ? m(t, r ? \"group-active-selected\" : \"group-active\", u) : s && r ? m(t, \"active-selected\", u) : r ? m(t, \"selected\", u) : m(t, s ? \"active\" : \"inactive\", u);\n };\n switch (this.state) {\n case \"submit\": {\n const t = this.options.filter(({ value: u }) => g.includes(u)).map((u) => m(u, \"submitted\")), s = t.length === 0 ? \"\" : ` ${t.join(styleText(\"dim\", \", \"))}`;\n return `${l}${n ? styleText(\"gray\", S_BAR) : \"\"}${s}`;\n }\n case \"cancel\": {\n const t = this.options.filter(({ value: s }) => g.includes(s)).map((s) => m(s, \"cancelled\")).join(styleText(\"dim\", \", \"));\n return `${l}${n ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${t.trim() ? `${t}${n ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}` : \"\"}`;\n }\n case \"error\": {\n const t = n ? `${styleText(\"yellow\", S_BAR)} ` : \"\", s = this.error.split(`\n`).map(\n (i, f) => f === 0 ? `${n ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\"}${styleText(\"yellow\", i)}` : ` ${i}`\n ).join(`\n`), u = l.split(`\n`).length, r = s.split(`\n`).length + 1, c = limitOptions({\n output: o.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: o.maxItems,\n columnPadding: t.length,\n rowPadding: u + r,\n style: a\n }).join(`\n${t}`);\n return `${l}${t}${c}\n${s}\n`;\n }\n default: {\n const t = n ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = l.split(`\n`).length, u = I ? formatInstructionFooter(MULTISELECT_INSTRUCTIONS, n) : n ? [styleText(\"cyan\", S_BAR_END)] : [], r = u.join(`\n`), c = u.length + 1, i = limitOptions({\n output: o.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: o.maxItems,\n columnPadding: t.length,\n rowPadding: s + c,\n style: a\n }).join(`\n${t}`);\n return `${l}${t}${i}\n${r}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst log = {\n message: (s = [], {\n symbol: e = styleText(\"gray\", S_BAR),\n secondarySymbol: r = styleText(\"gray\", S_BAR),\n output: m = process.stdout,\n spacing: l = 1,\n withGuide: c\n } = {}) => {\n const t = [], o = c ?? settings.withGuide, f = o ? r : \"\", O = o ? `${e} ` : \"\", u = o ? `${r} ` : \"\";\n for (let i = 0; i < l; i++)\n t.push(f);\n const g = Array.isArray(s) ? s : s.split(`\n`);\n if (g.length > 0) {\n const [i, ...y] = g;\n i.length > 0 ? t.push(`${O}${i}`) : t.push(o ? e : \"\");\n for (const p of y)\n p.length > 0 ? t.push(`${u}${p}`) : t.push(o ? r : \"\");\n }\n m.write(`${t.join(`\n`)}\n`);\n },\n info: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"blue\", S_INFO) });\n },\n success: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"green\", S_SUCCESS) });\n },\n step: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"green\", S_STEP_SUBMIT) });\n },\n warn: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"yellow\", S_WARN) });\n },\n /** alias for `log.warn()`. */\n warning: (s, e) => {\n log.warn(s, e);\n },\n error: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"red\", S_ERROR) });\n }\n};\n\nconst cancel = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR_END)} ` : \"\";\n i.write(`${e}${styleText(\"red\", o)}\n\n`);\n}, intro = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR_START)} ` : \"\";\n i.write(`${e}${o}\n`);\n}, outro = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR)}\n${styleText(\"gray\", S_BAR_END)} ` : \"\";\n i.write(`${e}${o}\n\n`);\n};\n\nconst multiline = (e) => new MultiLinePrompt({\n validate: e.validate,\n placeholder: e.placeholder,\n defaultValue: e.defaultValue,\n initialValue: e.initialValue,\n showSubmit: e.showSubmit,\n output: e.output,\n signal: e.signal,\n input: e.input,\n render() {\n const i = e?.withGuide ?? settings.withGuide, o = `${`${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, m = e.placeholder && e.placeholder.length > 0 ? (\n // biome-ignore lint/style/noNonNullAssertion: guarded by placeholder.length > 0\n styleText(\"inverse\", e.placeholder[0]) + styleText(\"dim\", e.placeholder.slice(1))\n ) : styleText([\"inverse\", \"hidden\"], \"_\"), a = this.userInput ? this.userInputWithCursor : m, l = this.value ?? \"\", c = e.showSubmit ? `\n ${styleText(this.focused === \"submit\" ? \"cyan\" : \"dim\", \"[ submit ]\")}` : \"\";\n switch (this.state) {\n case \"error\": {\n const n = `${styleText(\"yellow\", S_BAR)} `, r = i ? wrapTextWithPrefix(e.output, a, n, void 0) : a, u = styleText(\"yellow\", S_BAR_END);\n return `${o}${r}\n${u} ${styleText(\"yellow\", this.error)}${c}\n`;\n }\n case \"submit\": {\n const n = `${styleText(\"gray\", S_BAR)} `, r = i ? wrapTextWithPrefix(\n e.output,\n l,\n n,\n void 0,\n void 0,\n (u) => styleText(\"dim\", u)\n ) : l ? styleText(\"dim\", l) : \"\";\n return `${o}${r}`;\n }\n case \"cancel\": {\n const n = `${styleText(\"gray\", S_BAR)} `, r = i ? wrapTextWithPrefix(\n e.output,\n l,\n n,\n void 0,\n void 0,\n (u) => styleText([\"strikethrough\", \"dim\"], u)\n ) : l ? styleText([\"strikethrough\", \"dim\"], l) : \"\";\n return `${o}${r}`;\n }\n default: {\n const n = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", r = i ? styleText(\"cyan\", S_BAR_END) : \"\", u = i ? wrapTextWithPrefix(e.output, a, n) : a;\n return `${o}${u}\n${r}${c}\n`;\n }\n }\n }\n}).prompt();\n\nconst W$1 = (o) => o, C = (o, e, s) => {\n const a = {\n hard: true,\n trim: false\n }, i = wrapAnsi(o, e, a).split(`\n`), c = i.reduce((n, t) => Math.max(l(t), n), 0), u = i.map(s).reduce((n, t) => Math.max(l(t), n), 0), g = e - (u - c);\n return wrapAnsi(o, g, a);\n};\nconst note = (o = \"\", e = \"\", s) => {\n const a = s?.output ?? process$1.stdout, i = s?.withGuide ?? settings.withGuide, c = s?.format ?? W$1, g = [\"\", ...C(o, getColumns(a) - 6, c).split(`\n`).map(c), \"\"], n = l(e), t = Math.max(\n g.reduce((m, F) => {\n const O = l(F);\n return O > m ? O : m;\n }, 0),\n n\n ) + 2, h = g.map(\n (m) => `${styleText(\"gray\", S_BAR)} ${m}${\" \".repeat(t - l(m))}${styleText(\"gray\", S_BAR)}`\n ).join(`\n`), T = i ? `${styleText(\"gray\", S_BAR)}\n` : \"\", l$1 = i ? S_CONNECT_LEFT : S_CORNER_BOTTOM_LEFT;\n a.write(\n `${T}${styleText(\"green\", S_STEP_SUBMIT)} ${styleText(\"reset\", e)} ${styleText(\n \"gray\",\n S_BAR_H.repeat(Math.max(t - n - 1, 1)) + S_CORNER_TOP_RIGHT\n )}\n${h}\n${styleText(\"gray\", l$1 + S_BAR_H.repeat(t + 2) + S_CORNER_BOTTOM_RIGHT)}\n`\n );\n};\n\nconst password = (r) => new PasswordPrompt({\n validate: r.validate,\n mask: r.mask ?? S_PASSWORD_MASK,\n signal: r.signal,\n input: r.input,\n output: r.output,\n render() {\n const e = r.withGuide ?? settings.withGuide, o = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${r.message}\n`, c = this.userInputWithCursor, i = this.masked;\n switch (this.state) {\n case \"error\": {\n const s = e ? `${styleText(\"yellow\", S_BAR)} ` : \"\", n = e ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\", l = i ?? \"\";\n return r.clearOnError && this.clear(), `${o.trim()}\n${s}${l}\n${n}${styleText(\"yellow\", this.error)}\n`;\n }\n case \"submit\": {\n const s = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", n = i ? styleText(\"dim\", i) : \"\";\n return `${o}${s}${n}`;\n }\n case \"cancel\": {\n const s = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", n = i ? styleText([\"strikethrough\", \"dim\"], i) : \"\";\n return `${o}${s}${n}${i && e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const s = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", n = e ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${o}${s}${c}\n${n}\n`;\n }\n }\n }\n}).prompt();\n\nconst path = (e) => {\n const a = e.validate;\n return autocomplete({\n ...e,\n initialUserInput: e.initialValue ?? e.root ?? process.cwd(),\n maxItems: 5,\n validate(t) {\n if (!Array.isArray(t)) {\n if (!t)\n return \"Please select a path\";\n if (a)\n return runValidation(a, t);\n }\n },\n options() {\n const t = this.userInput;\n if (t === \"\")\n return [];\n try {\n let i;\n existsSync(t) ? lstatSync(t).isDirectory() && (!e.directory || t.endsWith(\"/\")) ? i = t : i = dirname(t) : i = dirname(t);\n const c = t.length > 1 && t.endsWith(\"/\") ? t.slice(0, -1) : t;\n return readdirSync(i).map((r) => {\n const n = join(i, r), m = lstatSync(n);\n return {\n name: r,\n path: n,\n isDirectory: m.isDirectory()\n };\n }).filter(\n ({ path: r, isDirectory: n }) => r.startsWith(c) && (n || !e.directory)\n ).map((r) => ({\n value: r.path\n }));\n } catch {\n return [];\n }\n }\n });\n};\n\nconst W = (l) => styleText(\"magenta\", l);\nconst spinner = ({\n indicator: l = \"dots\",\n onCancel: h,\n output: n = process.stdout,\n cancelMessage: G,\n errorMessage: O,\n frames: E = unicode ? [\"\\u25D2\", \"\\u25D0\", \"\\u25D3\", \"\\u25D1\"] : [\"\\u2022\", \"o\", \"O\", \"0\"],\n delay: F = unicode ? 80 : 120,\n signal: m,\n ...I\n} = {}) => {\n const u = isCI();\n let M, T, d = false, S = false, s = \"\", p, w = performance.now();\n const x = getColumns(n), k = I?.styleFrame ?? W, g = (e) => {\n const r = e > 1 ? O ?? settings.messages.error : G ?? settings.messages.cancel;\n S = e === 1, d && (a(r, e), S && typeof h == \"function\" && h());\n }, f = () => g(2), i = () => g(1), A = () => {\n process.on(\"uncaughtExceptionMonitor\", f), process.on(\"unhandledRejection\", f), process.on(\"SIGINT\", i), process.on(\"SIGTERM\", i), process.on(\"exit\", g), m && m.addEventListener(\"abort\", i);\n }, H = () => {\n process.removeListener(\"uncaughtExceptionMonitor\", f), process.removeListener(\"unhandledRejection\", f), process.removeListener(\"SIGINT\", i), process.removeListener(\"SIGTERM\", i), process.removeListener(\"exit\", g), m && m.removeEventListener(\"abort\", i);\n }, y = () => {\n if (p === void 0) return;\n u && n.write(`\n`);\n const r = wrapAnsi(p, x, {\n hard: true,\n trim: false\n }).split(`\n`);\n r.length > 1 && n.write(cursor.up(r.length - 1)), n.write(cursor.to(0)), n.write(erase.down());\n }, C = (e) => e.replace(/\\.+$/, \"\"), _ = (e) => {\n const r = (performance.now() - e) / 1e3, t = Math.floor(r / 60), o = Math.floor(r % 60);\n return t > 0 ? `[${t}m ${o}s]` : `[${o}s]`;\n }, N = I.withGuide ?? settings.withGuide, P = (e = \"\") => {\n d = true, M = block({ output: n }), s = C(e), w = performance.now(), N && n.write(`${styleText(\"gray\", S_BAR)}\n`);\n let r = 0, t = 0;\n A(), T = setInterval(() => {\n if (u && s === p)\n return;\n y(), p = s;\n const o = k(E[r]);\n let v;\n if (u)\n v = `${o} ${s}...`;\n else if (l === \"timer\")\n v = `${o} ${s} ${_(w)}`;\n else {\n const B = \".\".repeat(Math.floor(t)).slice(0, 3);\n v = `${o} ${s}${B}`;\n }\n const j = wrapAnsi(v, x, {\n hard: true,\n trim: false\n });\n n.write(j), r = r + 1 < E.length ? r + 1 : 0, t = t < 4 ? t + 0.125 : 0;\n }, F);\n }, a = (e = \"\", r = 0, t = false) => {\n if (!d) return;\n d = false, clearInterval(T), y();\n const o = r === 0 ? styleText(\"green\", S_STEP_SUBMIT) : r === 1 ? styleText(\"red\", S_STEP_CANCEL) : styleText(\"red\", S_STEP_ERROR);\n s = e ?? s, t || (l === \"timer\" ? n.write(`${o} ${s} ${_(w)}\n`) : n.write(`${o} ${s}\n`)), H(), M();\n };\n return {\n start: P,\n stop: (e = \"\") => a(e, 0),\n message: (e = \"\") => {\n s = C(e ?? s);\n },\n cancel: (e = \"\") => a(e, 1),\n error: (e = \"\") => a(e, 2),\n clear: () => a(\"\", 0, true),\n get isCancelled() {\n return S;\n }\n };\n};\n\nconst u = {\n light: unicodeOr(\"\\u2500\", \"-\"),\n heavy: unicodeOr(\"\\u2501\", \"=\"),\n block: unicodeOr(\"\\u2588\", \"#\")\n};\nfunction progress({\n style: o = \"heavy\",\n max: d = 100,\n size: v = 40,\n ...x\n} = {}) {\n const r = spinner(x);\n let a = 0, n = \"\";\n const c = Math.max(1, d), l = Math.max(1, v), S = (t) => {\n switch (t) {\n case \"initial\":\n case \"active\":\n return (e) => styleText(\"magenta\", e);\n case \"error\":\n case \"cancel\":\n return (e) => styleText(\"red\", e);\n case \"submit\":\n return (e) => styleText(\"green\", e);\n default:\n return (e) => styleText(\"magenta\", e);\n }\n }, p = (t, e) => {\n const m = Math.floor(a / c * l);\n return `${S(t)(u[o].repeat(m))}${styleText(\"dim\", u[o].repeat(l - m))} ${e}`;\n }, h = (t = \"\") => {\n n = t, r.start(p(\"initial\", t));\n }, g = (t = 1, e) => {\n a = Math.min(c, t + a), r.message(p(\"active\", e ?? n)), n = e ?? n;\n };\n return {\n start: h,\n stop: r.stop,\n cancel: r.cancel,\n error: r.error,\n clear: r.clear,\n advance: g,\n isCancelled: r.isCancelled,\n message: (t) => g(0, t)\n };\n}\n\nconst SELECT_INSTRUCTIONS = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", \"Enter:\")} confirm`\n];\nconst c = (t, o) => t.includes(`\n`) ? t.split(`\n`).map((d) => o(d)).join(`\n`) : o(t);\nconst select = (t) => {\n const o = (n, m) => {\n if (n === void 0)\n return \"\";\n const s = n.label ?? String(n.value);\n switch (m) {\n case \"disabled\":\n return `${styleText(\"gray\", S_RADIO_INACTIVE)} ${c(s, (i) => styleText(\"gray\", i))}${n.hint ? ` ${styleText(\"dim\", `(${n.hint ?? \"disabled\"})`)}` : \"\"}`;\n case \"selected\":\n return `${c(s, (i) => styleText(\"dim\", i))}`;\n case \"active\":\n return `${styleText(\"green\", S_RADIO_ACTIVE)} ${s}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`;\n case \"cancelled\":\n return `${c(s, (i) => styleText([\"strikethrough\", \"dim\"], i))}`;\n default:\n return `${styleText(\"dim\", S_RADIO_INACTIVE)} ${c(s, (i) => styleText(\"dim\", i))}`;\n }\n }, d = t.showInstructions ?? true;\n return new SelectPrompt({\n options: t.options,\n signal: t.signal,\n input: t.input,\n output: t.output,\n initialValue: t.initialValue,\n render() {\n const n = t.withGuide ?? settings.withGuide, m = `${symbol(this.state)} `, s = `${symbolBar(this.state)} `, i = wrapTextWithPrefix(\n t.output,\n t.message,\n s,\n m\n ), u = `${n ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${i}\n`;\n switch (this.state) {\n case \"submit\": {\n const r = n ? `${styleText(\"gray\", S_BAR)} ` : \"\", a = wrapTextWithPrefix(\n t.output,\n o(this.options[this.cursor], \"selected\"),\n r\n );\n return `${u}${a}`;\n }\n case \"cancel\": {\n const r = n ? `${styleText(\"gray\", S_BAR)} ` : \"\", a = wrapTextWithPrefix(\n t.output,\n o(this.options[this.cursor], \"cancelled\"),\n r\n );\n return `${u}${a}${n ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const r = n ? `${styleText(\"cyan\", S_BAR)} ` : \"\", a = u.split(`\n`).length, p = d ? formatInstructionFooter(SELECT_INSTRUCTIONS, n) : n ? [styleText(\"cyan\", S_BAR_END)] : [], b = p.join(`\n`), f = p.length + 1;\n return `${u}${r}${limitOptions({\n output: t.output,\n cursor: this.cursor,\n options: this.options,\n maxItems: t.maxItems,\n columnPadding: r.length,\n rowPadding: a + f,\n style: (g, x) => o(g, g.disabled ? \"disabled\" : x ? \"active\" : \"inactive\")\n }).join(`\n${r}`)}\n${b}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst selectKey = (t) => {\n const l = (e, a = \"inactive\") => {\n if (e === void 0)\n return \"\";\n const n = e.label ?? String(e.value);\n return a === \"selected\" ? `${styleText(\"dim\", n)}` : a === \"cancelled\" ? `${styleText([\"strikethrough\", \"dim\"], n)}` : a === \"active\" ? `${styleText([\"bgCyan\", \"gray\"], ` ${e.value} `)} ${n}${e.hint ? ` ${styleText(\"dim\", `(${e.hint})`)}` : \"\"}` : `${styleText([\"gray\", \"bgWhite\", \"inverse\"], ` ${e.value} `)} ${n}${e.hint ? ` ${styleText(\"dim\", `(${e.hint})`)}` : \"\"}`;\n };\n return new SelectKeyPrompt({\n options: t.options,\n signal: t.signal,\n input: t.input,\n output: t.output,\n initialValue: t.initialValue,\n caseSensitive: t.caseSensitive,\n render() {\n const e = t.withGuide ?? settings.withGuide, a = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${t.message}\n`;\n switch (this.state) {\n case \"submit\": {\n const n = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", s = this.options.find((u) => u.value === this.value) ?? t.options[0], c = wrapTextWithPrefix(\n t.output,\n l(s, \"selected\"),\n n\n );\n return `${a}${c}`;\n }\n case \"cancel\": {\n const n = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", s = wrapTextWithPrefix(\n t.output,\n l(this.options[0], \"cancelled\"),\n n\n );\n return `${a}${s}${e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const n = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = e ? styleText(\"cyan\", S_BAR_END) : \"\", c = this.options.map(\n (u, d) => wrapTextWithPrefix(\n t.output,\n l(u, d === this.cursor ? \"active\" : \"inactive\"),\n n\n )\n ).join(`\n`);\n return `${a}${c}\n${s}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst i = `${styleText(\"gray\", S_BAR)} `;\nconst stream = {\n message: async (e, { symbol: l = styleText(\"gray\", S_BAR) } = {}) => {\n process.stdout.write(`${styleText(\"gray\", S_BAR)}\n${l} `);\n let s = 3;\n for await (let r of e) {\n r = r.replace(/\\n/g, `\n${i}`), r.includes(`\n`) && (s = 3 + stripVTControlCharacters(r.slice(r.lastIndexOf(`\n`))).length);\n const o = stripVTControlCharacters(r).length;\n s + o < process.stdout.columns ? (s += o, process.stdout.write(r)) : (process.stdout.write(`\n${i}${r.trimStart()}`), s = 3 + stripVTControlCharacters(r.trimStart()).length);\n }\n process.stdout.write(`\n`);\n },\n info: (e) => stream.message(e, { symbol: styleText(\"blue\", S_INFO) }),\n success: (e) => stream.message(e, { symbol: styleText(\"green\", S_SUCCESS) }),\n step: (e) => stream.message(e, { symbol: styleText(\"green\", S_STEP_SUBMIT) }),\n warn: (e) => stream.message(e, { symbol: styleText(\"yellow\", S_WARN) }),\n /** alias for `log.warn()`. */\n warning: (e) => stream.warn(e),\n error: (e) => stream.message(e, { symbol: styleText(\"red\", S_ERROR) })\n};\n\nconst tasks = async (o, e) => {\n for (const t of o) {\n if (t.enabled === false) continue;\n const s = spinner(e);\n s.start(t.title);\n const n = await t.task(s.message);\n s.stop(n || t.title);\n }\n};\n\nconst A = (l) => l.replace(/\\x1b\\[(?:\\d+;)*\\d*[ABCDEFGHfJKSTsu]|\\x1b\\[(s|u)/g, \"\");\nconst taskLog = (l) => {\n const r = l.output ?? process.stdout, O = getColumns(r), i = styleText(\"gray\", S_BAR), p = l.spacing ?? 1, k = 3, m = l.retainLog === true, d = !isCI() && isTTY(r);\n r.write(`${i}\n`), r.write(`${styleText(\"green\", S_STEP_SUBMIT)} ${l.title}\n`);\n for (let e = 0; e < p; e++)\n r.write(`${i}\n`);\n const n = [\n {\n value: \"\",\n full: \"\"\n }\n ];\n let v = false;\n const f = (e) => {\n if (n.length === 0)\n return;\n let s = 0;\n e && (s += p + 2);\n for (const t of n) {\n const { value: o, result: a } = t;\n let g = a?.message ?? o;\n if (g.length === 0)\n continue;\n a === void 0 && t.header !== void 0 && t.header !== \"\" && (g += `\n${t.header}`);\n const E = g.split(`\n`).reduce((b, w) => w === \"\" ? b + 1 : b + Math.ceil((w.length + k) / O), 0);\n s += E;\n }\n s > 0 && (s += 1, r.write(erase.lines(s)));\n }, h = (e, s, t) => {\n const o = t ? `${e.full}\n${e.value}` : e.value;\n e.header !== void 0 && e.header !== \"\" && log.message(\n e.header.split(`\n`).map((a) => styleText(\"bold\", a)),\n {\n output: r,\n secondarySymbol: i,\n symbol: i,\n spacing: 0\n }\n ), log.message(\n o.split(`\n`).map((a) => styleText(\"dim\", a)),\n {\n output: r,\n secondarySymbol: i,\n symbol: i,\n spacing: s ?? p\n }\n );\n }, T = () => {\n for (const e of n) {\n const { header: s, value: t, full: o } = e;\n (s === void 0 || s.length === 0) && t.length === 0 || h(e, void 0, m === true && o.length > 0);\n }\n }, L = (e, s, t) => {\n if (f(false), (t?.raw !== true || !v) && e.value !== \"\" && (e.value += `\n`), e.value += A(s), v = t?.raw === true, l.limit !== void 0) {\n const o = e.value.split(`\n`), a = o.length - l.limit;\n if (a > 0) {\n const g = o.splice(0, a);\n m && (e.full += (e.full === \"\" ? \"\" : `\n`) + g.join(`\n`));\n }\n e.value = o.join(`\n`);\n }\n d && y();\n }, y = () => {\n for (const e of n)\n e.result ? e.result.status === \"error\" ? log.error(e.result.message, { output: r, secondarySymbol: i, spacing: 0 }) : log.success(e.result.message, { output: r, secondarySymbol: i, spacing: 0 }) : e.value !== \"\" && h(e, 0);\n }, B = (e, s) => {\n f(false), e.result = s, d && y();\n };\n return {\n message(e, s) {\n L(n[0], e, s);\n },\n group(e) {\n const s = {\n header: e,\n value: \"\",\n full: \"\"\n };\n return n.push(s), {\n message(t, o) {\n L(s, t, o);\n },\n error(t) {\n B(s, {\n status: \"error\",\n message: t\n });\n },\n success(t) {\n B(s, {\n status: \"success\",\n message: t\n });\n }\n };\n },\n error(e, s) {\n f(true), log.error(e, { output: r, secondarySymbol: i, spacing: 1 }), s?.showLog !== false && T(), n.splice(1, n.length - 1), n[0].value = \"\", n[0].full = \"\";\n },\n success(e, s) {\n f(true), log.success(e, { output: r, secondarySymbol: i, spacing: 1 }), s?.showLog === true && T(), n.splice(1, n.length - 1), n[0].value = \"\", n[0].full = \"\";\n }\n };\n};\n\nconst text = (e) => new TextPrompt({\n validate: e.validate,\n placeholder: e.placeholder,\n defaultValue: e.defaultValue,\n initialValue: e.initialValue,\n output: e.output,\n signal: e.signal,\n input: e.input,\n render() {\n const i = e?.withGuide ?? settings.withGuide, s = `${`${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, c = e.placeholder && e.placeholder.length > 0 ? (\n // biome-ignore lint/style/noNonNullAssertion: guarded by placeholder.length > 0\n styleText(\"inverse\", e.placeholder[0]) + styleText(\"dim\", e.placeholder.slice(1))\n ) : styleText([\"inverse\", \"hidden\"], \"_\"), o = this.userInput ? this.userInputWithCursor : c, l = this.value ?? \"\";\n switch (this.state) {\n case \"error\": {\n const n = this.error ? ` ${styleText(\"yellow\", this.error)}` : \"\", r = i ? `${styleText(\"yellow\", S_BAR)} ` : \"\", d = i ? styleText(\"yellow\", S_BAR_END) : \"\";\n return `${s.trim()}\n${r}${o}\n${d}${n}\n`;\n }\n case \"submit\": {\n const n = l ? ` ${styleText(\"dim\", l)}` : \"\", r = i ? styleText(\"gray\", S_BAR) : \"\";\n return `${s}${r}${n}`;\n }\n case \"cancel\": {\n const n = l ? ` ${styleText([\"strikethrough\", \"dim\"], l)}` : \"\", r = i ? styleText(\"gray\", S_BAR) : \"\";\n return `${s}${r}${n}${l.trim() ? `\n${r}` : \"\"}`;\n }\n default: {\n const n = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", r = i ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${s}${n}${o}\n${r}\n`;\n }\n }\n }\n}).prompt();\n\nexport { MULTISELECT_INSTRUCTIONS, SELECT_INSTRUCTIONS, S_BAR, S_BAR_END, S_BAR_END_RIGHT, S_BAR_H, S_BAR_START, S_BAR_START_RIGHT, S_CHECKBOX_ACTIVE, S_CHECKBOX_INACTIVE, S_CHECKBOX_SELECTED, S_CONNECT_LEFT, S_CORNER_BOTTOM_LEFT, S_CORNER_BOTTOM_RIGHT, S_CORNER_TOP_LEFT, S_CORNER_TOP_RIGHT, S_ERROR, S_INFO, S_PASSWORD_MASK, S_RADIO_ACTIVE, S_RADIO_INACTIVE, S_STEP_ACTIVE, S_STEP_CANCEL, S_STEP_ERROR, S_STEP_SUBMIT, S_SUCCESS, S_WARN, autocomplete, autocompleteMultiselect, box, cancel, confirm, date, formatInstructionFooter, group, groupMultiselect, intro, isCI, isTTY, limitOptions, log, multiline, multiselect, note, outro, password, path, progress, select, selectKey, spinner, stream, symbol, symbolBar, taskLog, tasks, text, unicode, unicodeOr };\n","import { cancel, intro, note, outro } from \"@clack/prompts\";\nimport fancyLog from \"fancy-log\";\n\nclass AtlasLogger {\n get isCi(): boolean {\n return [\"1\", \"true\"].includes(process.env.CI?.toLowerCase() || \"\") || process.env.CIRCLECI === \"true\";\n }\n\n intro(message: string): void {\n if (this.isCi) {\n fancyLog.info(message);\n return;\n }\n intro(message);\n }\n\n info(message: string): void {\n fancyLog.info(message);\n }\n\n note(message: string, title: string): void {\n if (this.isCi) {\n fancyLog.info(`${title}\\n${message}`);\n return;\n }\n note(message, title);\n }\n\n outro(message: string): void {\n if (this.isCi) {\n fancyLog.info(message);\n return;\n }\n outro(message);\n }\n\n error(message: string): void {\n if (this.isCi) {\n fancyLog.error(message);\n return;\n }\n cancel(message);\n }\n}\n\nexport const atlasLogger = new AtlasLogger();\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { spinner } from \"@clack/prompts\";\nimport { atlasLogger } from \"../../utils/logger/atlasLogger\";\n\nexport type StepDescriptor = {\n id: string;\n title: string;\n completedTitle?: string;\n detail?: string;\n};\n\ntype TaskProgressSink = {\n log: (message: string) => void;\n report?: (message: string) => void;\n};\n\nfunction formatDuration(durationMs: number): string {\n if (durationMs < 1_000) {\n return `${durationMs}ms`;\n }\n return `${(durationMs / 1_000).toFixed(1)}s`;\n}\n\nclass TaskProgressService {\n readonly #storage = new AsyncLocalStorage<TaskProgressSink>();\n\n attach<T>(sink: TaskProgressSink, task: () => Promise<T>): Promise<T> {\n return this.#storage.run(sink, task);\n }\n\n log(message: string): void {\n this.#storage.getStore()?.log(message);\n }\n\n report(message: string): void {\n const sink = this.#storage.getStore();\n const reporter = sink?.report || sink?.log;\n reporter?.(message);\n }\n\n createStepProgress(classify: (message: string) => StepDescriptor = (message) => ({ id: message, title: message })) {\n if (atlasLogger.isCi) {\n const start = (step: StepDescriptor) => atlasLogger.info(step.detail ? `${step.title}: ${step.detail}` : step.title);\n const execute = <T>(task: () => Promise<T>): Promise<T> =>\n this.attach(\n {\n log: (message) => atlasLogger.info(message),\n report: (message) => start(classify(message))\n },\n task\n );\n\n return {\n report(message: string) {\n start(classify(message));\n },\n start,\n execute,\n run: async <T>(step: StepDescriptor, task: () => Promise<T>): Promise<T> => {\n start(step);\n return execute(task);\n },\n finish(label?: string) {\n if (label) {\n atlasLogger.info(label);\n }\n },\n fail(label: string) {\n atlasLogger.error(label);\n }\n };\n }\n\n const progress = spinner();\n let active: { id: string; title: string; completedTitle?: string; startedAt: number } | undefined;\n\n const finishActive = (label?: string) => {\n if (!active) {\n return;\n }\n const duration = formatDuration(Date.now() - active.startedAt);\n progress.stop(`${label || active.completedTitle || `${active.title} completed`} (${duration})`);\n active = undefined;\n };\n\n const start = (step: StepDescriptor) => {\n if (active?.id === step.id) {\n progress.message(step.detail ? `${step.title}: ${step.detail}` : step.title);\n return;\n }\n\n finishActive();\n active = {\n id: step.id,\n title: step.title,\n completedTitle: step.completedTitle,\n startedAt: Date.now()\n };\n progress.start(step.detail ? `${step.title}: ${step.detail}` : step.title);\n };\n\n const execute = <T>(task: () => Promise<T>): Promise<T> =>\n this.attach(\n {\n log: (message) => progress.message(active ? `${active.title}: ${message}` : message),\n report: (message) => start(classify(message))\n },\n task\n );\n\n return {\n report(message: string) {\n start(classify(message));\n },\n start,\n execute,\n run: async <T>(step: StepDescriptor, task: () => Promise<T>): Promise<T> => {\n start(step);\n await new Promise<void>((resolve) => setImmediate(resolve));\n const result = await execute(task);\n finishActive();\n return result;\n },\n finish(label?: string) {\n finishActive(label);\n },\n fail(label: string) {\n if (!active) {\n return;\n }\n const duration = formatDuration(Date.now() - active.startedAt);\n progress.stop(`${label} (${duration})`);\n active = undefined;\n }\n };\n }\n}\n\nexport const taskProgressService = new TaskProgressService();\n"],"x_google_ignoreList":[4,5,6,7,8,9,10],"mappings":"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"}