sandbox 2.0.0-alpha3 → 2.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-BQds8e4O.mjs","names":["styles","red","green","blue","process","prefix","flag","argv","env","version","string","prefix","supportsColor","chalk","ansiStyles","open","string","list","__importDefault","chalk_1","option","extendType","type_1","__createBinding","m","__setModuleDefault","__importStar","o","__importDefault","chalk_1","Result","findOption_1","type_1","types_1","_a","env","__createBinding","m","__setModuleDefault","__importStar","o","Result","effects_1","flag_1","types_1","version","__createBinding","m","__setModuleDefault","__importStar","o","__importDefault","chalk_1","Result","types_1","_a","_b","_c","positional","__createBinding","m","__setModuleDefault","__importStar","o","__importDefault","subcommands","chalk_1","Result","circuitbreaker_1","positional_1","cmd","flatMap","option","array","__importDefault","strip_ansi_1","__createBinding","m","__setModuleDefault","__importStar","o","__importDefault","chalk_1","Result","utils_1","option","__createBinding","m","__setModuleDefault","__importStar","o","__importDefault","chalk_1","Result","findOption_1","types_1","_a","env","option","__importDefault","chalk_1","utils_1","s","option","prefix","__importDefault","parse","debug","push","token","string","run","parse","__createBinding","m","__setModuleDefault","__importStar","o","Result","positional","__createBinding","m","__setModuleDefault","__importStar","o","Result","flag_1","findOption_1","option","__createBinding","m","__setModuleDefault","__importStar","o","__importDefault","Result","option","__createBinding","m","__setModuleDefault","__importStar","o","Result","type_1","__createBinding","m","o","m","exports","parse","match","ms","string","match","chalk","fs","process","fs","fsConstants","isWsl","process","execFileAsync","process","execFileAsync","process","execFileAsync","defaultBrowser","match","string","process","windows","execFile","process","Buffer","array","app","isWsl","command","platform","fsConstants","binary","spinners","isUnicodeSupported","process","chalk","isUnicodeSupported","string","isUnicodeSupported","process","env","TERM","process","process","indent","isUnicodeSupported","cliSpinners","chalk","logSymbols","prefix","err","debug","s","open","chalk","error: Error | undefined","__defProp","__getOwnPropDesc","__getOwnPropNames","__hasOwnProp","__export","__copyProps","__toCommonJS","__defProp","__getOwnPropDesc","__getOwnPropNames","__hasOwnProp","__export","__copyProps","__toCommonJS","getVercelOidcToken","import_get_context","token","err","refreshToken","__getOwnPropNames","debug","cmd","chalk","err","z","err: any","err","string","fs","debug","token","team","cmd","team: typeof scopeParser","scope","team","scope: ArgParser<{\n token: string;\n project: string;\n team: string;\n}> &\n ProvidesHelp","err","chalk","chalk","sandboxClient: Pick<typeof Sandbox, \"get\" | \"list\" | \"create\">","fetchWithUserAgent: typeof globalThis.fetch","init","chalk","Path","args","cmd","chalk","scope","timeout","cmd","s","chalk","BINARY_TYPES","hasBlob","FastBuffer","concat","list","EMPTY_BUFFER","toArrayBuffer","toBuffer","bufferUtil","output","Limiter","FastBuffer","kError","PerMessageDeflate","err","data","kStatusCode","tokenChars","isValidStatusCode","isBlob","isValidUTF8","PerMessageDeflate","Receiver","Writable","BINARY_TYPES","kWebSocket","EMPTY_BUFFER","err","isValidStatusCode","prefix","kStatusCode","PerMessageDeflate","Sender","NOOP","kWebSocket","EMPTY_BUFFER","isBlob","toBuffer","err","list","kForOnEventAttribute","kListener","onError","parse","tokenChars","token","format","extension","EventEmitter","http","PerMessageDeflate","Receiver","Sender","WebSocket","kWebSocket","socketOnError","err","URL","format","key","createHash","GUID","parse","abortHandshake","emitClose","err","createWebSocketStream","Duplex","open","protocol","EventEmitter","WebSocket","WebSocketServer","version","err","h","err","parse$1","WebSocket","chalk","command","args","debug","timeout","setTimeout","nextTick","debug","installed","err","ora","randomUUID","env","command: Command | null","spinners","chalk","s","command","output: string | Buffer","output","cmd","rest","obj: Record<string, string>","missingVars: string[]","plural","chalk","args","cmd","chalk","sandboxId","project","team","command","Create.args","Exec.args","rest","args","formatDistance","token","args","token","args","args","string","rest","array","string","args","rest","formatDistance","defaultOptions","defaultLocale","_spinner","s","team","project","sandboxes","chalk","maxWidths: number[]","Exec.args","args","EventEmitter","args","EventEmitter","tty","string","open","colors","rfdc","handler","clone","EventEmitter","args","string","output","prefix","m","output$1","DefaultRenderer","s","SimpleRenderer","TestRenderer","VerboseRenderer","err","sandboxId","team","project","cmd","path","chalk","Fs","scope","chalk","Run.run","Run.sh"],"sources":["../../../node_modules/.pnpm/chalk@5.6.0/node_modules/chalk/source/vendor/ansi-styles/index.js","../../../node_modules/.pnpm/chalk@5.6.0/node_modules/chalk/source/vendor/supports-color/index.js","../../../node_modules/.pnpm/chalk@5.6.0/node_modules/chalk/source/utilities.js","../../../node_modules/.pnpm/chalk@5.6.0/node_modules/chalk/source/index.js","../../../node_modules/.pnpm/didyoumean@1.2.2/node_modules/didyoumean/didYouMean-1.2.1.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/Result.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/effects.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/newparser/findOption.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/from.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/type.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/types.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/flag.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/circuitbreaker.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/positional.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/subcommands.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/binary.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/utils.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/command.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/option.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/errorBox.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/newparser/parser.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/newparser/tokenizer.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/runner.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/restPositionals.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/multiflag.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/multioption.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/union.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/oneOf.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/rest.js","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/index.js","../src/args/runtime.ts","../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../src/types/duration.ts","../src/args/timeout.ts","../src/util/output.ts","../../../node_modules/.pnpm/is-docker@3.0.0/node_modules/is-docker/index.js","../../../node_modules/.pnpm/is-inside-container@1.0.0/node_modules/is-inside-container/index.js","../../../node_modules/.pnpm/is-wsl@3.1.0/node_modules/is-wsl/index.js","../../../node_modules/.pnpm/wsl-utils@0.1.0/node_modules/wsl-utils/index.js","../../../node_modules/.pnpm/define-lazy-prop@3.0.0/node_modules/define-lazy-prop/index.js","../../../node_modules/.pnpm/default-browser-id@5.0.0/node_modules/default-browser-id/index.js","../../../node_modules/.pnpm/run-applescript@7.1.0/node_modules/run-applescript/index.js","../../../node_modules/.pnpm/bundle-name@4.1.0/node_modules/bundle-name/index.js","../../../node_modules/.pnpm/default-browser@5.2.1/node_modules/default-browser/windows.js","../../../node_modules/.pnpm/default-browser@5.2.1/node_modules/default-browser/index.js","../../../node_modules/.pnpm/open@10.2.0/node_modules/open/index.js","../../../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/spinners.json","../../../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/index.js","../../../node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../../../node_modules/.pnpm/log-symbols@6.0.0/node_modules/log-symbols/index.js","../../../node_modules/.pnpm/ansi-regex@6.2.0/node_modules/ansi-regex/index.js","../../../node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js","../../../node_modules/.pnpm/is-interactive@2.0.0/node_modules/is-interactive/index.js","../../../node_modules/.pnpm/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js","../../../node_modules/.pnpm/stdin-discarder@0.2.2/node_modules/stdin-discarder/index.js","../../../node_modules/.pnpm/ora@8.2.0/node_modules/ora/index.js","../src/util/abort-controller.ts","../src/util/disposables.ts","../src/commands/login.ts","../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/get-context.js","../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token.js","../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/index.js","../src/args/auth.ts","../src/util/zod.ts","../src/util/project-configuration.ts","../src/util/infer-scope.ts","../src/args/scope.ts","../package.json","../src/error.ts","../src/client.ts","../src/commands/create.ts","../src/args/sandbox-id.ts","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/constants.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/buffer-util.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/limiter.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/permessage-deflate.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/validation.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/receiver.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/sender.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/event-target.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/extension.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/websocket.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/stream.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/subprotocol.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/websocket-server.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/wrapper.mjs","../../pty-tunnel/dist/index.mjs","../src/util/print-command.ts","../src/interactive-shell/extend-sandbox-timeout.ts","../src/interactive-shell/interactive-shell.ts","../src/args/key-value-pair.ts","../src/commands/exec.ts","../src/util/omit.ts","../src/commands/run.ts","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/localize.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/match.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/defaultOptions.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/compareAsc.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarMonths.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfDay.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfMonth.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isLastDayOfMonth.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInMonths.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getRoundingMethod.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInMilliseconds.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInSeconds.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatDistance.js","../src/commands/list.ts","../src/commands/ssh.ts","../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.js","../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.mjs","../../../node_modules/.pnpm/colorette@2.0.20/node_modules/colorette/index.js","../../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js","../../../node_modules/.pnpm/listr2@9.0.3/node_modules/listr2/dist/index.js","../src/commands/stop.ts","../../../node_modules/.pnpm/cmd-ts@0.14.3/node_modules/cmd-ts/dist/cjs/batteries/fs.js","../src/commands/cp.ts","../src/commands/logout.ts","../src/app.ts"],"sourcesContent":["const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","/*\n\ndidYouMean.js - A simple JavaScript matching engine\n===================================================\n\n[Available on GitHub](https://github.com/dcporter/didyoumean.js).\n\nA super-simple, highly optimized JS library for matching human-quality input to a list of potential\nmatches. You can use it to suggest a misspelled command-line utility option to a user, or to offer\nlinks to nearby valid URLs on your 404 page. (The examples below are taken from a personal project,\nmy [HTML5 business card](http://dcporter.aws.af.cm/me), which uses didYouMean.js to suggest correct\nURLs from misspelled ones, such as [dcporter.aws.af.cm/me/instagarm](http://dcporter.aws.af.cm/me/instagarm).)\nUses the [Levenshtein distance algorithm](https://en.wikipedia.org/wiki/Levenshtein_distance).\n\ndidYouMean.js works in the browser as well as in node.js. To install it for use in node:\n\n```\nnpm install didyoumean\n```\n\n\nExamples\n--------\n\nMatching against a list of strings:\n```\nvar input = 'insargrm'\nvar list = ['facebook', 'twitter', 'instagram', 'linkedin'];\nconsole.log(didYouMean(input, list));\n> 'instagram'\n// The method matches 'insargrm' to 'instagram'.\n\ninput = 'google plus';\nconsole.log(didYouMean(input, list));\n> null\n// The method was unable to find 'google plus' in the list of options.\n```\n\nMatching against a list of objects:\n```\nvar input = 'insargrm';\nvar list = [ { id: 'facebook' }, { id: 'twitter' }, { id: 'instagram' }, { id: 'linkedin' } ];\nvar key = 'id';\nconsole.log(didYouMean(input, list, key));\n> 'instagram'\n// The method returns the matching value.\n\ndidYouMean.returnWinningObject = true;\nconsole.log(didYouMean(input, list, key));\n> { id: 'instagram' }\n// The method returns the matching object.\n```\n\n\ndidYouMean(str, list, [key])\n----------------------------\n\n- str: The string input to match.\n- list: An array of strings or objects to match against.\n- key (OPTIONAL): If your list array contains objects, you must specify the key which contains the string\n to match against.\n\nReturns: the closest matching string, or null if no strings exceed the threshold.\n\n\nOptions\n-------\n\nOptions are set on the didYouMean function object. You may change them at any time.\n\n### threshold\n\n By default, the method will only return strings whose edit distance is less than 40% (0.4x) of their length.\n For example, if a ten-letter string is five edits away from its nearest match, the method will return null.\n\n You can control this by setting the \"threshold\" value on the didYouMean function. For example, to set the\n edit distance threshold to 50% of the input string's length:\n\n ```\n didYouMean.threshold = 0.5;\n ```\n\n To return the nearest match no matter the threshold, set this value to null.\n\n### thresholdAbsolute\n\n This option behaves the same as threshold, but instead takes an integer number of edit steps. For example,\n if thresholdAbsolute is set to 20 (the default), then the method will only return strings whose edit distance\n is less than 20. Both options apply.\n\n### caseSensitive\n\n By default, the method will perform case-insensitive comparisons. If you wish to force case sensitivity, set\n the \"caseSensitive\" value to true:\n\n ```\n didYouMean.caseSensitive = true;\n ```\n\n### nullResultValue\n\n By default, the method will return null if there is no sufficiently close match. You can change this value here.\n\n### returnWinningObject\n\n By default, the method will return the winning string value (if any). If your list contains objects rather\n than strings, you may set returnWinningObject to true.\n \n ```\n didYouMean.returnWinningObject = true;\n ```\n \n This option has no effect on lists of strings.\n\n### returnFirstMatch\n \n By default, the method will search all values and return the closest match. If you're simply looking for a \"good-\n enough\" match, you can set your thresholds appropriately and set returnFirstMatch to true to substantially speed\n things up.\n\n\nLicense\n-------\n\ndidYouMean copyright (c) 2013-2014 Dave Porter.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License\n[here](http://www.apache.org/licenses/LICENSE-2.0).\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n*/\n(function() {\n \"use strict\";\n\n // The didYouMean method.\n function didYouMean(str, list, key) {\n if (!str) return null;\n\n // If we're running a case-insensitive search, smallify str.\n if (!didYouMean.caseSensitive) { str = str.toLowerCase(); }\n\n // Calculate the initial value (the threshold) if present.\n var thresholdRelative = didYouMean.threshold === null ? null : didYouMean.threshold * str.length,\n thresholdAbsolute = didYouMean.thresholdAbsolute,\n winningVal;\n if (thresholdRelative !== null && thresholdAbsolute !== null) winningVal = Math.min(thresholdRelative, thresholdAbsolute);\n else if (thresholdRelative !== null) winningVal = thresholdRelative;\n else if (thresholdAbsolute !== null) winningVal = thresholdAbsolute;\n else winningVal = null;\n\n // Get the edit distance to each option. If the closest one is less than 40% (by default) of str's length,\n // then return it.\n var winner, candidate, testCandidate, val,\n i, len = list.length;\n for (i = 0; i < len; i++) {\n // Get item.\n candidate = list[i];\n // If there's a key, get the candidate value out of the object.\n if (key) { candidate = candidate[key]; }\n // Gatekeep.\n if (!candidate) { continue; }\n // If we're running a case-insensitive search, smallify the candidate.\n if (!didYouMean.caseSensitive) { testCandidate = candidate.toLowerCase(); }\n else { testCandidate = candidate; }\n // Get and compare edit distance.\n val = getEditDistance(str, testCandidate, winningVal);\n // If this value is smaller than our current winning value, OR if we have no winning val yet (i.e. the\n // threshold option is set to null, meaning the caller wants a match back no matter how bad it is), then\n // this is our new winner.\n if (winningVal === null || val < winningVal) {\n winningVal = val;\n // Set the winner to either the value or its object, depending on the returnWinningObject option.\n if (key && didYouMean.returnWinningObject) winner = list[i];\n else winner = candidate;\n // If we're returning the first match, return it now.\n if (didYouMean.returnFirstMatch) return winner;\n }\n }\n\n // If we have a winner, return it.\n return winner || didYouMean.nullResultValue;\n }\n\n // Set default options.\n didYouMean.threshold = 0.4;\n didYouMean.thresholdAbsolute = 20;\n didYouMean.caseSensitive = false;\n didYouMean.nullResultValue = null;\n didYouMean.returnWinningObject = null;\n didYouMean.returnFirstMatch = false;\n\n // Expose.\n // In node...\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = didYouMean;\n }\n // Otherwise...\n else {\n window.didYouMean = didYouMean;\n }\n\n var MAX_INT = Math.pow(2,32) - 1; // We could probably go higher than this, but for practical reasons let's not.\n function getEditDistance(a, b, max) {\n // Handle null or undefined max.\n max = max || max === 0 ? max : MAX_INT;\n\n var lena = a.length;\n var lenb = b.length;\n\n // Fast path - no A or B.\n if (lena === 0) return Math.min(max + 1, lenb);\n if (lenb === 0) return Math.min(max + 1, lena);\n\n // Fast path - length diff larger than max.\n if (Math.abs(lena - lenb) > max) return max + 1;\n\n // Slow path.\n var matrix = [],\n i, j, colMin, minJ, maxJ;\n\n // Set up the first row ([0, 1, 2, 3, etc]).\n for (i = 0; i <= lenb; i++) { matrix[i] = [i]; }\n\n // Set up the first column (same).\n for (j = 0; j <= lena; j++) { matrix[0][j] = j; }\n\n // Loop over the rest of the columns.\n for (i = 1; i <= lenb; i++) {\n colMin = MAX_INT;\n minJ = 1;\n if (i > max) minJ = i - max;\n maxJ = lenb + 1;\n if (maxJ > max + i) maxJ = max + i;\n // Loop over the rest of the rows.\n for (j = 1; j <= lena; j++) {\n // If j is out of bounds, just put a large value in the slot.\n if (j < minJ || j > maxJ) {\n matrix[i][j] = max + 1;\n }\n\n // Otherwise do the normal Levenshtein thing.\n else {\n // If the characters are the same, there's no change in edit distance.\n if (b.charAt(i - 1) === a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n }\n // Otherwise, see if we're substituting, inserting or deleting.\n else {\n matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // Substitute\n Math.min(matrix[i][j - 1] + 1, // Insert\n matrix[i - 1][j] + 1)); // Delete\n }\n }\n\n // Either way, update colMin.\n if (matrix[i][j] < colMin) colMin = matrix[i][j];\n }\n\n // If this column's minimum is greater than the allowed maximum, there's no point\n // in going on with life.\n if (colMin > max) return max + 1;\n }\n // If we made it this far without running into the max, then return the final matrix value.\n return matrix[lenb][lena];\n }\n\n})();\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ok = ok;\nexports.err = err;\nexports.isOk = isOk;\nexports.isErr = isErr;\nexports.safeAsync = safeAsync;\nfunction ok(value) {\n return { _tag: \"ok\", value };\n}\nfunction err(error) {\n return { _tag: \"error\", error };\n}\n/**\n * Checks whether a value is an `Ok`.\n * Handy with TypeScript guards\n */\nfunction isOk(result) {\n return result._tag === \"ok\";\n}\n/**\n * Checks whether a value is an `Err`.\n * Handy with TypeScript guards\n */\nfunction isErr(either) {\n return either._tag === \"error\";\n}\n/**\n * Convert a `Promise<T>` into a `Promise<Result<Error, T>>`,\n * therefore catching the errors and being able to handle them explicitly\n */\nasync function safeAsync(promise) {\n try {\n const value = await promise;\n return ok(value);\n }\n catch (e) {\n return err(e);\n }\n}\n//# sourceMappingURL=Result.js.map","\"use strict\";\n/**\n * \"Effects\" are custom exceptions that can do stuff.\n * The concept comes from React, where they throw a `Promise` to provide the ability to write\n * async code with synchronous syntax.\n *\n * These effects _should stay an implementation detail_ and not leak out of the library.\n *\n * @packageDocumentation\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Exit = void 0;\nconst chalk_1 = __importDefault(require(\"chalk\"));\n/**\n * An effect to exit the program with a message\n *\n * **Why this is an effect?**\n *\n * Using `process.exit` in a program is both a problem:\n * * in tests, because it needs to be mocked somehow\n * * in browser usage, because it does not have `process` at all\n *\n * Also, using `console.log` is something we'd rather avoid and return strings, and if returning strings\n * would be harmful for performance we might ask for a stream to write to:\n * Printing to stdout and stderr means that we don't control the values and it ties us to only use `cmd-ts`\n * with a command line, and again, to mock `stdout` and `stderr` it if we want to test it.\n */\nclass Exit {\n constructor(config) {\n this.config = config;\n }\n run() {\n const output = this.output();\n output(this.config.message);\n process.exit(this.config.exitCode);\n }\n dryRun() {\n const { into, message, exitCode } = this.config;\n const coloredExit = chalk_1.default.dim(`process exited with status ${exitCode} (${into})`);\n return `${message}\\n\\n${coloredExit}`;\n }\n output() {\n if (this.config.into === \"stderr\") {\n return console.error;\n }\n return console.log;\n }\n}\nexports.Exit = Exit;\n//# sourceMappingURL=effects.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findOption = findOption;\n/**\n * A utility function to find an option in the AST\n *\n * @param nodes AST node list\n * @param opts Long and short names to look up\n */\nfunction findOption(nodes, opts) {\n const result = [];\n for (const node of nodes) {\n if (node.type === \"longOption\" && opts.longNames.includes(node.key)) {\n result.push(node);\n continue;\n }\n if (node.type === \"shortOptions\" && opts.shortNames.length) {\n for (const option of node.options) {\n if (opts.shortNames.includes(option.key)) {\n result.push(option);\n }\n }\n }\n }\n return result;\n}\n//# sourceMappingURL=findOption.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.identity = identity;\n/**\n * A type \"conversion\" from any type to itself\n */\nfunction identity() {\n return {\n async from(a) {\n return a;\n },\n };\n}\n//# sourceMappingURL=from.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.identity = void 0;\nexports.typeDef = typeDef;\nexports.fromFn = fromFn;\nexports.extendType = extendType;\nvar from_1 = require(\"./from\");\nObject.defineProperty(exports, \"identity\", { enumerable: true, get: function () { return from_1.identity; } });\n/**\n * Get the type definitions or an empty object from a type or a decoding function\n */\nfunction typeDef(from) {\n if (typeof from === \"function\") {\n return {};\n }\n return from;\n}\n/**\n * Get the decoding function from a type or a function\n */\nfunction fromFn(t) {\n if (typeof t === \"function\") {\n return t;\n }\n return t.from;\n}\n/**\n * Extend a type: take a type and use it as a base for another type. Much like using the spread operator:\n * ```\n * const newType = { ...oldType }\n * ```\n * but composes the `from` arguments\n *\n * @param base A base type from `InputA` to `OutputA`\n * @param nextTypeOrDecodingFunction Either an entire `Type<OutputA, AnyOutput>` or just a decoding function from `OutputA` to any type\n */\nfunction extendType(base, nextTypeOrDecodingFunction) {\n const { defaultValue: _defaultValue, onMissing: _onMissing, from: _from, ...t1WithoutDefault } = base;\n const t2Object = typeDef(nextTypeOrDecodingFunction);\n const t2From = fromFn(nextTypeOrDecodingFunction);\n return {\n ...t1WithoutDefault,\n ...t2Object,\n async from(a) {\n const f1Result = await base.from(a);\n return await t2From(f1Result);\n },\n };\n}\n//# sourceMappingURL=type.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolean = exports.string = exports.number = void 0;\nexports.optional = optional;\nexports.array = array;\nconst type_1 = require(\"./type\");\n/**\n * A number type to be used with `option`\n *\n * Throws an error when the provided string is not a number\n */\nexports.number = {\n async from(str) {\n const decoded = Number.parseFloat(str);\n if (Number.isNaN(decoded)) {\n throw new Error(\"Not a number\");\n }\n return decoded;\n },\n displayName: \"number\",\n description: \"a number\",\n};\n/**\n * A string type to be used with `option`.\n */\nexports.string = {\n ...(0, type_1.identity)(),\n description: \"a string\",\n displayName: \"str\",\n};\n/**\n * A boolean type to be used with `flag`.\n */\nexports.boolean = {\n ...(0, type_1.identity)(),\n description: \"a boolean\",\n displayName: \"true/false\",\n defaultValue() {\n return false;\n },\n};\n/**\n * Makes any type optional, by defaulting to `undefined`.\n */\nfunction optional(t) {\n return {\n ...t,\n defaultValue() {\n return undefined;\n },\n };\n}\n/**\n * Transforms any type into an array, useful for `multioption` and `multiflag`.\n */\nfunction array(t) {\n return {\n ...t,\n async from(inputs) {\n return Promise.all(inputs.map((input) => t.from(input)));\n },\n };\n}\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolean = void 0;\nexports.fullFlag = fullFlag;\nexports.flag = flag;\nconst chalk_1 = __importDefault(require(\"chalk\"));\nconst Result = __importStar(require(\"./Result\"));\nconst findOption_1 = require(\"./newparser/findOption\");\nconst type_1 = require(\"./type\");\nconst types_1 = require(\"./types\");\n/**\n * A decoder from `string` to `boolean`\n * works for `true` and `false` only.\n */\nexports.boolean = {\n async from(str) {\n if (str === \"true\")\n return true;\n if (str === \"false\")\n return false;\n throw new Error(`expected value to be either \"true\" or \"false\". got: \"${str}\"`);\n },\n displayName: \"true/false\",\n defaultValue: () => false,\n};\nfunction fullFlag(config) {\n var _a;\n const decoder = (0, type_1.extendType)(exports.boolean, config.type);\n return {\n description: (_a = config.description) !== null && _a !== void 0 ? _a : config.type.description,\n helpTopics() {\n var _a, _b;\n let usage = `--${config.long}`;\n if (config.short) {\n usage += `, -${config.short}`;\n }\n const defaults = [];\n if (config.env) {\n const env = process.env[config.env] === undefined\n ? \"\"\n : `=${chalk_1.default.italic(process.env[config.env])}`;\n defaults.push(`env: ${config.env}${env}`);\n }\n if (config.defaultValue) {\n try {\n const defaultValue = config.defaultValue();\n if (config.defaultValueIsSerializable) {\n defaults.push(`default: ${chalk_1.default.italic(defaultValue)}`);\n }\n else {\n defaults.push(\"optional\");\n }\n }\n catch (e) { }\n }\n else if (config.type.defaultValue) {\n try {\n const defaultValue = config.type.defaultValue();\n if (config.type.defaultValueIsSerializable) {\n defaults.push(`default: ${chalk_1.default.italic(defaultValue)}`);\n }\n else {\n defaults.push(\"optional\");\n }\n }\n catch (e) { }\n }\n else if (config.onMissing || config.type.onMissing) {\n defaults.push(\"optional\");\n }\n return [\n {\n category: \"flags\",\n usage,\n defaults,\n description: (_b = (_a = config.description) !== null && _a !== void 0 ? _a : config.type.description) !== null && _b !== void 0 ? _b : \"self explanatory\",\n },\n ];\n },\n register(opts) {\n opts.forceFlagLongNames.add(config.long);\n if (config.short) {\n opts.forceFlagShortNames.add(config.short);\n }\n },\n async parse({ nodes, visitedNodes, }) {\n var _a, _b;\n const options = (0, findOption_1.findOption)(nodes, {\n longNames: [config.long],\n shortNames: config.short ? [config.short] : [],\n }).filter((x) => !visitedNodes.has(x));\n options.forEach((opt) => visitedNodes.add(opt));\n if (options.length > 1) {\n return Result.err({\n errors: [\n {\n nodes: options,\n message: `Expected 1 occurence, got ${options.length}`,\n },\n ],\n });\n }\n const valueFromEnv = config.env ? process.env[config.env] : undefined;\n const onMissingFn = config.onMissing || config.type.onMissing;\n let rawValue;\n let envPrefix = \"\";\n if (options.length === 0 && valueFromEnv !== undefined) {\n rawValue = valueFromEnv;\n envPrefix = `env[${chalk_1.default.italic(config.env)}]: `;\n }\n else if (options.length === 0 && config.defaultValue) {\n try {\n const defaultValue = config.defaultValue();\n return Result.ok(defaultValue);\n }\n catch (e) {\n const message = `Default value not found for '--${config.long}': ${e.message}`;\n return Result.err({\n errors: [{ message, nodes: [] }],\n });\n }\n }\n else if (options.length === 0 && onMissingFn) {\n try {\n const missingValue = await onMissingFn();\n return Result.ok(missingValue);\n }\n catch (e) {\n const message = `Failed to get missing value for '--${config.long}': ${e.message}`;\n return Result.err({\n errors: [{ message, nodes: [] }],\n });\n }\n }\n else if (options.length === 0 && config.type.defaultValue) {\n try {\n const defaultValue = config.type.defaultValue();\n return Result.ok(defaultValue);\n }\n catch (e) {\n const message = `Default value not found for '--${config.long}': ${e.message}`;\n return Result.err({\n errors: [{ message, nodes: [] }],\n });\n }\n }\n else if (options.length === 1) {\n rawValue = (_b = (_a = options[0].value) === null || _a === void 0 ? void 0 : _a.node.raw) !== null && _b !== void 0 ? _b : \"true\";\n }\n else {\n return Result.err({\n errors: [\n { nodes: [], message: `No value provided for --${config.long}` },\n ],\n });\n }\n const decoded = await Result.safeAsync(decoder.from(rawValue));\n if (Result.isErr(decoded)) {\n return Result.err({\n errors: [\n {\n nodes: options,\n message: envPrefix + decoded.error.message,\n },\n ],\n });\n }\n return decoded;\n },\n };\n}\nfunction flag(config) {\n return fullFlag({\n type: types_1.boolean,\n ...config,\n });\n}\n//# sourceMappingURL=flag.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.versionFlag = exports.helpFlag = void 0;\nexports.handleCircuitBreaker = handleCircuitBreaker;\nexports.createCircuitBreaker = createCircuitBreaker;\nconst Result = __importStar(require(\"./Result\"));\nconst effects_1 = require(\"./effects\");\nconst flag_1 = require(\"./flag\");\nconst types_1 = require(\"./types\");\nexports.helpFlag = (0, flag_1.flag)({\n long: \"help\",\n short: \"h\",\n type: types_1.boolean,\n description: \"show help\",\n});\nexports.versionFlag = (0, flag_1.flag)({\n long: \"version\",\n short: \"v\",\n type: types_1.boolean,\n description: \"print the version\",\n});\nfunction handleCircuitBreaker(context, value, breaker) {\n if (Result.isErr(breaker)) {\n return;\n }\n if (breaker.value === \"help\") {\n const message = value.printHelp(context);\n throw new effects_1.Exit({ exitCode: 0, message, into: \"stdout\" });\n }\n if (breaker.value === \"version\") {\n const message = value.version || \"0.0.0\";\n throw new effects_1.Exit({ exitCode: 0, message, into: \"stdout\" });\n }\n}\n/**\n * Helper flags that are being used in `command` and `subcommands`:\n * `--help, -h` to show help\n * `--version, -v` to show the current version\n *\n * It is called circuitbreaker because if you have `--help` or `--version`\n * anywhere in your argument list, you'll see the version and the help for the closest command\n */\nfunction createCircuitBreaker(withVersion) {\n return {\n register(opts) {\n exports.helpFlag.register(opts);\n if (withVersion) {\n exports.versionFlag.register(opts);\n }\n },\n helpTopics() {\n const helpTopics = exports.helpFlag.helpTopics();\n if (withVersion) {\n helpTopics.push(...exports.versionFlag.helpTopics());\n }\n return helpTopics;\n },\n async parse(context) {\n const help = await exports.helpFlag.parse(context);\n const version = withVersion\n ? await exports.versionFlag.parse(context)\n : undefined;\n if (Result.isErr(help) || (version && Result.isErr(version))) {\n const helpErrors = Result.isErr(help) ? help.error.errors : [];\n const versionErrors = version && Result.isErr(version) ? version.error.errors : [];\n return Result.err({ errors: [...helpErrors, ...versionErrors] });\n }\n if (help.value) {\n return Result.ok(\"help\");\n }\n if (version === null || version === void 0 ? void 0 : version.value) {\n return Result.ok(\"version\");\n }\n return Result.err({\n errors: [\n {\n nodes: [],\n message: \"Neither help nor version\",\n },\n ],\n });\n },\n };\n}\n//# sourceMappingURL=circuitbreaker.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.positional = positional;\nconst chalk_1 = __importDefault(require(\"chalk\"));\nconst Result = __importStar(require(\"./Result\"));\nconst types_1 = require(\"./types\");\nfunction fullPositional(config) {\n var _a, _b, _c;\n const displayName = (_b = (_a = config.displayName) !== null && _a !== void 0 ? _a : config.type.displayName) !== null && _b !== void 0 ? _b : \"arg\";\n return {\n description: (_c = config.description) !== null && _c !== void 0 ? _c : config.type.description,\n helpTopics() {\n var _a, _b, _c, _d;\n const defaults = [];\n const defaultValueFn = (_a = config.defaultValue) !== null && _a !== void 0 ? _a : config.type.defaultValue;\n if (defaultValueFn) {\n try {\n const defaultValue = defaultValueFn();\n if ((_b = config.defaultValueIsSerializable) !== null && _b !== void 0 ? _b : config.type.defaultValueIsSerializable) {\n defaults.push(`default: ${chalk_1.default.italic(defaultValue)}`);\n }\n else {\n defaults.push(\"optional\");\n }\n }\n catch (e) { }\n }\n const usage = defaults.length > 0 ? `[${displayName}]` : `<${displayName}>`;\n return [\n {\n category: \"arguments\",\n usage,\n description: (_d = (_c = config.description) !== null && _c !== void 0 ? _c : config.type.description) !== null && _d !== void 0 ? _d : \"self explanatory\",\n defaults,\n },\n ];\n },\n register(_opts) { },\n async parse({ nodes, visitedNodes, }) {\n var _a;\n const positionals = nodes.filter((node) => node.type === \"positionalArgument\" && !visitedNodes.has(node));\n const defaultValueFn = (_a = config.defaultValue) !== null && _a !== void 0 ? _a : config.type.defaultValue;\n const positional = positionals[0];\n if (!positional) {\n if (defaultValueFn) {\n return Result.ok(defaultValueFn());\n }\n return Result.err({\n errors: [\n {\n nodes: [],\n message: `No value provided for ${displayName}`,\n },\n ],\n });\n }\n visitedNodes.add(positional);\n const decoded = await Result.safeAsync(config.type.from(positional.raw));\n if (Result.isErr(decoded)) {\n return Result.err({\n errors: [\n {\n nodes: [positional],\n message: decoded.error.message,\n },\n ],\n });\n }\n return Result.ok(decoded.value);\n },\n };\n}\nfunction positional(config) {\n return fullPositional({\n type: types_1.string,\n ...config,\n });\n}\n//# sourceMappingURL=positional.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subcommands = subcommands;\nconst chalk_1 = __importDefault(require(\"chalk\"));\nconst didyoumean_1 = __importDefault(require(\"didyoumean\"));\nconst Result = __importStar(require(\"./Result\"));\nconst circuitbreaker_1 = require(\"./circuitbreaker\");\nconst positional_1 = require(\"./positional\");\n/**\n * Combine multiple `command`s into one\n */\nfunction subcommands(config) {\n const circuitbreaker = (0, circuitbreaker_1.createCircuitBreaker)(!!config.version);\n const type = {\n async from(str) {\n const commands = Object.entries(config.cmds).map(([name, cmd]) => {\n var _a;\n return {\n cmdName: name,\n names: [name, ...((_a = cmd.aliases) !== null && _a !== void 0 ? _a : [])],\n };\n });\n const cmd = commands.find((x) => x.names.includes(str));\n if (cmd) {\n return cmd.cmdName;\n }\n let errorMessage = \"Not a valid subcommand name\";\n const closeOptions = (0, didyoumean_1.default)(str, flatMap(commands, (x) => x.names));\n if (closeOptions) {\n const option = Array.isArray(closeOptions)\n ? closeOptions[0]\n : closeOptions;\n errorMessage += `\\nDid you mean ${chalk_1.default.italic(option)}?`;\n }\n throw new Error(errorMessage);\n },\n };\n const subcommand = (0, positional_1.positional)({\n displayName: \"subcommand\",\n description: `one of ${Object.keys(config.cmds).join(\", \")}`,\n type,\n });\n function normalizeContext(context) {\n var _a;\n if (((_a = context.hotPath) === null || _a === void 0 ? void 0 : _a.length) === 0) {\n context.hotPath.push(config.name);\n }\n // Called without any arguments? We default to subcommand help.\n if (!context.nodes.some((n) => !context.visitedNodes.has(n))) {\n context.nodes.push({\n type: \"longOption\",\n index: 0,\n key: \"help\",\n raw: \"--help\",\n });\n }\n }\n return {\n version: config.version,\n description: config.description,\n name: config.name,\n handler: (value) => {\n const cmd = config.cmds[value.command];\n return cmd.handler(value.args);\n },\n register(opts) {\n for (const cmd of Object.values(config.cmds)) {\n cmd.register(opts);\n }\n circuitbreaker.register(opts);\n },\n printHelp(context) {\n var _a, _b, _c, _d;\n const lines = [];\n const argsSoFar = (_b = (_a = context.hotPath) === null || _a === void 0 ? void 0 : _a.join(\" \")) !== null && _b !== void 0 ? _b : \"cli\";\n lines.push(chalk_1.default.bold(argsSoFar + chalk_1.default.italic(\" <subcommand>\")));\n if (config.description) {\n lines.push(chalk_1.default.dim(\"> \") + config.description);\n }\n lines.push(\"\");\n lines.push(`where ${chalk_1.default.italic(\"<subcommand>\")} can be one of:`);\n lines.push(\"\");\n for (const key of Object.keys(config.cmds)) {\n const cmd = config.cmds[key];\n let description = (_c = cmd.description) !== null && _c !== void 0 ? _c : \"\";\n description = description && ` - ${description} `;\n if ((_d = cmd.aliases) === null || _d === void 0 ? void 0 : _d.length) {\n const aliasTxt = cmd.aliases.length === 1 ? \"alias\" : \"aliases\";\n const aliases = cmd.aliases.join(\", \");\n description += chalk_1.default.dim(`[${aliasTxt}: ${aliases}]`);\n }\n const row = chalk_1.default.dim(\"- \") + key + description;\n lines.push(row.trim());\n }\n const helpCommand = chalk_1.default.yellow(`${argsSoFar} <subcommand> --help`);\n lines.push(\"\");\n lines.push(chalk_1.default.dim(`For more help, try running \\`${helpCommand}\\``));\n return lines.join(\"\\n\");\n },\n async parse(context) {\n var _a;\n normalizeContext(context);\n const parsed = await subcommand.parse(context);\n if (Result.isErr(parsed)) {\n return Result.err({\n errors: parsed.error.errors,\n partialValue: {},\n });\n }\n (_a = context.hotPath) === null || _a === void 0 ? void 0 : _a.push(parsed.value);\n const cmd = config.cmds[parsed.value];\n const parsedCommand = await cmd.parse(context);\n if (Result.isErr(parsedCommand)) {\n return Result.err({\n errors: parsedCommand.error.errors,\n partialValue: {\n command: parsed.value,\n args: parsedCommand.error.partialValue,\n },\n });\n }\n return Result.ok({\n args: parsedCommand.value,\n command: parsed.value,\n });\n },\n async run(context) {\n var _a;\n normalizeContext(context);\n const parsedSubcommand = await subcommand.parse(context);\n if (Result.isErr(parsedSubcommand)) {\n const breaker = await circuitbreaker.parse(context);\n (0, circuitbreaker_1.handleCircuitBreaker)(context, this, breaker);\n return Result.err({ ...parsedSubcommand.error, partialValue: {} });\n }\n (_a = context.hotPath) === null || _a === void 0 ? void 0 : _a.push(parsedSubcommand.value);\n const cmd = config.cmds[parsedSubcommand.value];\n const commandRun = await cmd.run(context);\n if (Result.isOk(commandRun)) {\n return Result.ok({\n command: parsedSubcommand.value,\n value: commandRun.value,\n });\n }\n return Result.err({\n ...commandRun.error,\n partialValue: {\n command: parsedSubcommand.value,\n value: commandRun.error.partialValue,\n },\n });\n },\n };\n}\nfunction flatMap(array, f) {\n const rs = [];\n for (const item of array) {\n rs.push(...f(item));\n }\n return rs;\n}\n//# sourceMappingURL=subcommands.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.binary = binary;\n/**\n * A small helper to easily use `process.argv` without dropping context\n *\n * @param cmd a command line parser\n */\nfunction binary(cmd) {\n return {\n ...cmd,\n run(context) {\n var _a;\n const name = cmd.name || context.nodes[1].raw;\n (_a = context.hotPath) === null || _a === void 0 ? void 0 : _a.push(name);\n context.nodes.splice(0, 1);\n context.nodes[0].raw = name;\n context.visitedNodes.add(context.nodes[0]);\n return cmd.run(context);\n },\n };\n}\n//# sourceMappingURL=binary.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.padNoAnsi = padNoAnsi;\nexports.groupBy = groupBy;\nexports.entries = entries;\nexports.enumerate = enumerate;\nexports.flatMap = flatMap;\nexports.flatten = flatten;\nconst strip_ansi_1 = __importDefault(require(\"strip-ansi\"));\n/**\n * @ignore\n */\nfunction padNoAnsi(str, length, place) {\n const noAnsiStr = (0, strip_ansi_1.default)(str);\n if (length < noAnsiStr.length)\n return str;\n const pad = Array(length - noAnsiStr.length + 1).join(\" \");\n if (place === \"end\") {\n return str + pad;\n }\n return pad + str;\n}\n/**\n * Group an array by a function that returns the key\n *\n * @ignore\n */\nfunction groupBy(objs, f) {\n var _a;\n const result = {};\n for (const obj of objs) {\n const key = f(obj);\n result[key] = (_a = result[key]) !== null && _a !== void 0 ? _a : [];\n result[key].push(obj);\n }\n return result;\n}\n/**\n * A better typed version of `Object.entries`\n *\n * @ignore\n */\nfunction entries(obj) {\n return Object.entries(obj);\n}\n/**\n * Enumerate over a list, to get a pair of [index, value]\n *\n * @ignore\n */\nfunction* enumerate(arr) {\n for (let i = 0; i < arr.length; i++) {\n yield [i, arr[i]];\n }\n}\n/**\n * Array#flatMap polyfill\n *\n * @ignore\n */\nfunction flatMap(xs, fn) {\n const results = [];\n for (const x of xs) {\n results.push(...fn(x));\n }\n return results;\n}\n/**\n * Flatten an array\n *\n * @ignore\n */\nfunction flatten(xs) {\n const results = [];\n for (const x of xs) {\n results.push(...x);\n }\n return results;\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.command = command;\nconst chalk_1 = __importDefault(require(\"chalk\"));\nconst Result = __importStar(require(\"./Result\"));\nconst circuitbreaker_1 = require(\"./circuitbreaker\");\nconst utils_1 = require(\"./utils\");\n/**\n * A command line utility.\n *\n * A combination of multiple flags, options and arguments\n * with a common name and a handler that expects them as input.\n */\nfunction command(config) {\n const argEntries = (0, utils_1.entries)(config.args);\n const circuitbreaker = (0, circuitbreaker_1.createCircuitBreaker)(!!config.version);\n return {\n name: config.name,\n aliases: config.aliases,\n handler: config.handler,\n description: config.description,\n version: config.version,\n helpTopics() {\n return (0, utils_1.flatMap)(Object.values(config.args).concat([circuitbreaker]), (x) => { var _a, _b; return (_b = (_a = x.helpTopics) === null || _a === void 0 ? void 0 : _a.call(x)) !== null && _b !== void 0 ? _b : []; });\n },\n printHelp(context) {\n var _a, _b;\n const lines = [];\n let name = (_b = (_a = context.hotPath) === null || _a === void 0 ? void 0 : _a.join(\" \")) !== null && _b !== void 0 ? _b : \"\";\n if (!name) {\n name = config.name;\n }\n name = chalk_1.default.bold(name);\n if (config.version) {\n name += ` ${chalk_1.default.dim(config.version)}`;\n }\n lines.push(name);\n if (config.description) {\n lines.push(chalk_1.default.dim(\"> \") + config.description);\n }\n const usageBreakdown = (0, utils_1.groupBy)(this.helpTopics(), (x) => x.category);\n for (const [category, helpTopics] of (0, utils_1.entries)(usageBreakdown)) {\n lines.push(\"\");\n lines.push(`${category.toUpperCase()}:`);\n const widestUsage = helpTopics.reduce((len, curr) => {\n return Math.max(len, curr.usage.length);\n }, 0);\n for (const helpTopic of helpTopics) {\n let line = \"\";\n line += ` ${(0, utils_1.padNoAnsi)(helpTopic.usage, widestUsage, \"end\")}`;\n line += \" - \";\n line += helpTopic.description;\n for (const defaultValue of helpTopic.defaults) {\n line += chalk_1.default.dim(` [${defaultValue}]`);\n }\n lines.push(line);\n }\n }\n return lines.join(\"\\n\");\n },\n register(opts) {\n var _a;\n for (const [, arg] of argEntries) {\n (_a = arg.register) === null || _a === void 0 ? void 0 : _a.call(arg, opts);\n }\n },\n async parse(context) {\n var _a;\n if (((_a = context.hotPath) === null || _a === void 0 ? void 0 : _a.length) === 0) {\n context.hotPath.push(config.name);\n }\n const resultObject = {};\n const errors = [];\n for (const [argName, arg] of argEntries) {\n const result = await arg.parse(context);\n if (Result.isErr(result)) {\n errors.push(...result.error.errors);\n }\n else {\n resultObject[argName] = result.value;\n }\n }\n const unknownArguments = [];\n for (const node of context.nodes) {\n if (context.visitedNodes.has(node)) {\n continue;\n }\n if (node.type === \"forcePositional\") {\n }\n else if (node.type === \"shortOptions\") {\n for (const option of node.options) {\n if (context.visitedNodes.has(option)) {\n continue;\n }\n unknownArguments.push(option);\n }\n }\n else {\n unknownArguments.push(node);\n }\n }\n if (unknownArguments.length > 0) {\n errors.push({\n message: \"Unknown arguments\",\n nodes: unknownArguments,\n });\n }\n if (errors.length > 0) {\n return Result.err({\n errors: errors,\n partialValue: resultObject,\n });\n }\n return Result.ok(resultObject);\n },\n async run(context) {\n const breaker = await circuitbreaker.parse(context);\n (0, circuitbreaker_1.handleCircuitBreaker)(context, this, breaker);\n const parsed = await this.parse(context);\n if (Result.isErr(parsed)) {\n return Result.err(parsed.error);\n }\n return Result.ok(await this.handler(parsed.value));\n },\n };\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.option = option;\nconst chalk_1 = __importDefault(require(\"chalk\"));\nconst Result = __importStar(require(\"./Result\"));\nconst findOption_1 = require(\"./newparser/findOption\");\nconst types_1 = require(\"./types\");\nfunction fullOption(config) {\n var _a;\n return {\n description: (_a = config.description) !== null && _a !== void 0 ? _a : config.type.description,\n helpTopics() {\n var _a, _b, _c;\n const displayName = (_a = config.type.displayName) !== null && _a !== void 0 ? _a : \"value\";\n let usage = `--${config.long}`;\n if (config.short) {\n usage += `, -${config.short}`;\n }\n usage += ` <${displayName}>`;\n const defaults = [];\n if (config.env) {\n const env = process.env[config.env] === undefined\n ? \"\"\n : `=${chalk_1.default.italic(process.env[config.env])}`;\n defaults.push(`env: ${config.env}${env}`);\n }\n if (config.defaultValue) {\n try {\n const defaultValue = config.defaultValue();\n if (config.defaultValueIsSerializable) {\n defaults.push(`default: ${chalk_1.default.italic(defaultValue)}`);\n }\n else {\n defaults.push(\"optional\");\n }\n }\n catch (e) { }\n }\n else if (config.type.defaultValue) {\n try {\n const defaultValue = config.type.defaultValue();\n if (config.type.defaultValueIsSerializable) {\n defaults.push(`default: ${chalk_1.default.italic(defaultValue)}`);\n }\n else {\n defaults.push(\"optional\");\n }\n }\n catch (e) { }\n }\n else if (config.onMissing || config.type.onMissing) {\n defaults.push(\"optional\");\n }\n return [\n {\n category: \"options\",\n usage,\n defaults,\n description: (_c = (_b = config.description) !== null && _b !== void 0 ? _b : config.type.description) !== null && _c !== void 0 ? _c : \"self explanatory\",\n },\n ];\n },\n register(opts) {\n opts.forceOptionLongNames.add(config.long);\n if (config.short) {\n opts.forceOptionShortNames.add(config.short);\n }\n },\n async parse({ nodes, visitedNodes, }) {\n const options = (0, findOption_1.findOption)(nodes, {\n longNames: [config.long],\n shortNames: config.short ? [config.short] : [],\n }).filter((x) => !visitedNodes.has(x));\n options.forEach((opt) => visitedNodes.add(opt));\n if (options.length > 1) {\n const error = {\n message: `Too many times provided. Expected 1, got: ${options.length}`,\n nodes: options,\n };\n return Result.err({ errors: [error] });\n }\n const valueFromEnv = config.env ? process.env[config.env] : undefined;\n const defaultValueFn = config.defaultValue || config.type.defaultValue;\n const onMissingFn = config.onMissing || config.type.onMissing;\n const option = options[0];\n let rawValue;\n let envPrefix = \"\";\n if (option === null || option === void 0 ? void 0 : option.value) {\n rawValue = option.value.node.raw;\n }\n else if (valueFromEnv !== undefined) {\n rawValue = valueFromEnv;\n envPrefix = `env[${chalk_1.default.italic(config.env)}]: `;\n }\n else if (defaultValueFn) {\n try {\n const defaultValue = defaultValueFn();\n return Result.ok(defaultValue);\n }\n catch (e) {\n const message = `Default value not found for '--${config.long}': ${e.message}`;\n return Result.err({\n errors: [\n {\n nodes: [],\n message,\n },\n ],\n });\n }\n }\n else if (onMissingFn) {\n try {\n const missingValue = await onMissingFn();\n return Result.ok(missingValue);\n }\n catch (e) {\n const message = `Failed to get missing value for '--${config.long}': ${e.message}`;\n return Result.err({\n errors: [\n {\n nodes: [],\n message,\n },\n ],\n });\n }\n }\n else {\n // If we reach here, no default or prompt value was available\n const raw = (option === null || option === void 0 ? void 0 : option.type) === \"shortOption\"\n ? `-${option === null || option === void 0 ? void 0 : option.key}`\n : `--${config.long}`;\n return Result.err({\n errors: [\n {\n nodes: options,\n message: `No value provided for ${raw}`,\n },\n ],\n });\n }\n const decoded = await Result.safeAsync(config.type.from(rawValue));\n if (Result.isErr(decoded)) {\n return Result.err({\n errors: [\n { nodes: options, message: envPrefix + decoded.error.message },\n ],\n });\n }\n return Result.ok(decoded.value);\n },\n };\n}\nfunction option(config) {\n return fullOption({\n type: types_1.string,\n ...config,\n });\n}\n//# sourceMappingURL=option.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.errorBox = errorBox;\nconst chalk_1 = __importDefault(require(\"chalk\"));\nconst strip_ansi_1 = __importDefault(require(\"strip-ansi\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Get the input as highlighted keywords to show to the user\n * with the error that was generated from parsing the input.\n *\n * @param nodes AST nodes\n * @param error A parsing error\n */\nfunction highlight(nodes, error) {\n const strings = [];\n let errorIndex = undefined;\n function foundError() {\n if (errorIndex !== undefined)\n return;\n errorIndex = (0, strip_ansi_1.default)(strings.join(\" \")).length;\n }\n if (error.nodes.length === 0)\n return;\n nodes.forEach((node) => {\n if (error.nodes.includes(node)) {\n foundError();\n return strings.push(chalk_1.default.red(node.raw));\n }\n if (node.type === \"shortOptions\") {\n let failed = false;\n let s = \"\";\n for (const option of node.options) {\n if (error.nodes.includes(option)) {\n s += chalk_1.default.red(option.raw);\n failed = true;\n }\n else {\n s += chalk_1.default.dim(option.raw);\n }\n }\n const prefix = failed ? chalk_1.default.red(\"-\") : chalk_1.default.dim(\"-\");\n if (failed) {\n foundError();\n }\n return strings.push(prefix + s);\n }\n return strings.push(chalk_1.default.dim(node.raw));\n });\n return { colorized: strings.join(\" \"), errorIndex: errorIndex !== null && errorIndex !== void 0 ? errorIndex : 0 };\n}\n/**\n * An error UI\n *\n * @param breadcrumbs The command breadcrumbs to print with the error\n */\nfunction errorBox(nodes, errors, breadcrumbs) {\n const withHighlight = [];\n const errorMessages = [];\n for (const error of errors) {\n const highlighted = highlight(nodes, error);\n withHighlight.push({ message: error.message, highlighted });\n }\n let number = 1;\n const maxNumberWidth = String(withHighlight.length).length;\n errorMessages.push(`${chalk_1.default.red.bold(\"error: \")}found ${chalk_1.default.yellow(withHighlight.length)} error${withHighlight.length > 1 ? \"s\" : \"\"}`);\n errorMessages.push(\"\");\n withHighlight\n .filter((x) => x.highlighted)\n .forEach((x) => {\n if (!x.highlighted) {\n throw new Error(\"WELP\");\n }\n const pad = \"\".padStart(x.highlighted.errorIndex);\n errorMessages.push(` ${x.highlighted.colorized}`);\n for (const [index, line] of (0, utils_1.enumerate)(x.message.split(\"\\n\"))) {\n const prefix = index === 0 ? chalk_1.default.bold(\"^\") : \" \";\n const msg = chalk_1.default.red(` ${pad} ${prefix} ${line}`);\n errorMessages.push(msg);\n }\n errorMessages.push(\"\");\n number++;\n });\n const withNoHighlight = withHighlight.filter((x) => !x.highlighted);\n if (number > 1) {\n if (withNoHighlight.length === 1) {\n errorMessages.push(\"Along with the following error:\");\n }\n else if (withNoHighlight.length > 1) {\n errorMessages.push(\"Along with the following errors:\");\n }\n }\n withNoHighlight.forEach(({ message }) => {\n const num = chalk_1.default.red.bold(`${(0, utils_1.padNoAnsi)(number.toString(), maxNumberWidth, \"start\")}.`);\n errorMessages.push(` ${num} ${chalk_1.default.red(message)}`);\n number++;\n });\n const helpCmd = chalk_1.default.yellow(`${breadcrumbs.join(\" \")} --help`);\n errorMessages.push(\"\");\n errorMessages.push(`${chalk_1.default.red.bold(\"hint: \")}for more information, try '${helpCmd}'`);\n return errorMessages.join(\"\\n\");\n}\n//# sourceMappingURL=errorBox.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = parse;\nconst debug_1 = __importDefault(require(\"debug\"));\nconst debug = (0, debug_1.default)(\"cmd-ts:parser\");\n/**\n * Create an AST from a token list\n *\n * @param tokens A token list, coming from `tokenizer.ts`\n * @param forceFlag Keys to force as flag. {@see ForceFlag} to read more about it.\n */\nfunction parse(tokens, forceFlag) {\n if (debug.enabled) {\n const registered = {\n shortFlags: [...forceFlag.forceFlagShortNames],\n longFlags: [...forceFlag.forceFlagLongNames],\n shortOptions: [...forceFlag.forceOptionShortNames],\n longOptions: [...forceFlag.forceOptionLongNames],\n };\n debug(\"Registered:\", JSON.stringify(registered));\n }\n const nodes = [];\n let index = 0;\n let forcedPositional = false;\n function getToken() {\n return tokens[index++];\n }\n function peekToken() {\n return tokens[index];\n }\n while (index < tokens.length) {\n const currentToken = getToken();\n if (!currentToken)\n break;\n if (currentToken.type === \"argumentDivider\") {\n continue;\n }\n if (forcedPositional) {\n let str = currentToken.raw;\n let nextToken = getToken();\n while (nextToken && (nextToken === null || nextToken === void 0 ? void 0 : nextToken.type) !== \"argumentDivider\") {\n str += nextToken.raw;\n nextToken = getToken();\n }\n nodes.push({\n type: \"positionalArgument\",\n index: currentToken.index,\n raw: str,\n });\n continue;\n }\n if (currentToken.type === \"char\") {\n let str = currentToken.raw;\n let nextToken = getToken();\n while (nextToken && (nextToken === null || nextToken === void 0 ? void 0 : nextToken.type) !== \"argumentDivider\") {\n str += nextToken.raw;\n nextToken = getToken();\n }\n nodes.push({\n type: \"positionalArgument\",\n index: currentToken.index,\n raw: str,\n });\n continue;\n }\n if (currentToken.type === \"longPrefix\") {\n let nextToken = getToken();\n if ((nextToken === null || nextToken === void 0 ? void 0 : nextToken.type) === \"argumentDivider\" || !nextToken) {\n nodes.push({\n type: \"forcePositional\",\n index: currentToken.index,\n raw: \"--\",\n });\n forcedPositional = true;\n continue;\n }\n let key = \"\";\n while (nextToken &&\n (nextToken === null || nextToken === void 0 ? void 0 : nextToken.raw) !== \"=\" &&\n (nextToken === null || nextToken === void 0 ? void 0 : nextToken.type) !== \"argumentDivider\") {\n key += nextToken.raw;\n nextToken = getToken();\n }\n const parsedValue = parseOptionValue({\n key,\n delimiterToken: nextToken,\n forceFlag: forceFlag.forceFlagLongNames,\n getToken,\n peekToken,\n forceOption: forceFlag.forceOptionLongNames,\n });\n let raw = `--${key}`;\n if (parsedValue) {\n raw += parsedValue.raw;\n }\n nodes.push({\n type: \"longOption\",\n key,\n index: currentToken.index,\n raw,\n value: parsedValue,\n });\n continue;\n }\n if (currentToken.type === \"shortPrefix\") {\n const keys = [];\n let nextToken = getToken();\n if ((nextToken === null || nextToken === void 0 ? void 0 : nextToken.type) === \"argumentDivider\" || !nextToken) {\n nodes.push({\n type: \"positionalArgument\",\n index: currentToken.index,\n raw: \"-\",\n });\n continue;\n }\n while (nextToken &&\n (nextToken === null || nextToken === void 0 ? void 0 : nextToken.type) !== \"argumentDivider\" &&\n (nextToken === null || nextToken === void 0 ? void 0 : nextToken.raw) !== \"=\") {\n keys.push(nextToken);\n nextToken = getToken();\n }\n // biome-ignore lint/style/noNonNullAssertion: migration\n const lastKey = keys.pop();\n const parsedValue = parseOptionValue({\n key: lastKey.raw,\n delimiterToken: nextToken,\n forceFlag: forceFlag.forceFlagShortNames,\n forceOption: forceFlag.forceOptionShortNames,\n getToken,\n peekToken,\n });\n const options = [];\n for (const key of keys) {\n options.push({\n type: \"shortOption\",\n index: key.index,\n raw: key.raw,\n key: key.raw,\n });\n }\n let lastKeyRaw = lastKey.raw;\n if (parsedValue) {\n lastKeyRaw += parsedValue.raw;\n }\n options.push({\n type: \"shortOption\",\n index: lastKey.index,\n raw: lastKeyRaw,\n value: parsedValue,\n key: lastKey.raw,\n });\n let optionsRaw = `-${keys.map((x) => x.raw).join(\"\")}${lastKey.raw}`;\n if (parsedValue) {\n optionsRaw += parsedValue.raw;\n }\n const shortOptions = {\n type: \"shortOptions\",\n index: currentToken.index,\n raw: optionsRaw,\n options,\n };\n nodes.push(shortOptions);\n continue;\n }\n index++;\n }\n if (debug.enabled) {\n const objectNodes = nodes.map((node) => ({ [node.type]: node.raw }));\n debug(\"Parsed items:\", JSON.stringify(objectNodes));\n }\n return nodes;\n}\nfunction parseOptionValue(opts) {\n var _a;\n const { getToken, delimiterToken, forceFlag, key, forceOption } = opts;\n const shouldReadKeyAsOption = forceOption.has(key);\n const shouldReadKeyAsFlag = !shouldReadKeyAsOption &&\n (forceFlag.has(key) || ((_a = opts.peekToken()) === null || _a === void 0 ? void 0 : _a.type) !== \"char\");\n if (!delimiterToken || (delimiterToken.raw !== \"=\" && shouldReadKeyAsFlag)) {\n return;\n }\n const delimiter = delimiterToken.raw === \"=\" ? \"=\" : \" \";\n const delimiterIndex = delimiterToken.index;\n let nextToken = getToken();\n if (!nextToken) {\n return;\n }\n let value = \"\";\n const valueIndex = nextToken.index;\n while (nextToken && (nextToken === null || nextToken === void 0 ? void 0 : nextToken.type) !== \"argumentDivider\") {\n value += nextToken.raw;\n nextToken = getToken();\n }\n return {\n type: \"optionValue\",\n index: delimiterToken.index,\n delimiter: { type: \"delimiter\", raw: delimiter, index: delimiterIndex },\n node: { type: \"value\", raw: value, index: valueIndex },\n raw: `${delimiter}${value}`,\n };\n}\n//# sourceMappingURL=parser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tokenize = tokenize;\nconst utils_1 = require(\"../utils\");\n/**\n * Tokenize a list of arguments\n *\n * @param strings arguments, based on `process.argv`\n */\nfunction tokenize(strings) {\n const tokens = [];\n let overallIndex = 0;\n const push = (token) => {\n tokens.push(token);\n overallIndex += token.raw.length;\n };\n for (const [stringIndex, string] of (0, utils_1.enumerate)(strings)) {\n const chars = [...string];\n for (let i = 0; i < chars.length; i++) {\n if (chars[i] === \"-\" && chars[i + 1] === \"-\") {\n push({ type: \"longPrefix\", raw: \"--\", index: overallIndex });\n i++;\n }\n else if (chars[i] === \"-\") {\n push({ type: \"shortPrefix\", raw: \"-\", index: overallIndex });\n }\n else {\n push({ type: \"char\", raw: chars[i], index: overallIndex });\n }\n }\n if (stringIndex + 1 !== strings.length) {\n push({ type: \"argumentDivider\", raw: \" \", index: overallIndex });\n }\n }\n return tokens;\n}\n//# sourceMappingURL=tokenizer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.run = run;\nexports.runSafely = runSafely;\nexports.dryRun = dryRun;\nexports.parse = parse;\nconst Result_1 = require(\"./Result\");\nconst effects_1 = require(\"./effects\");\nconst errorBox_1 = require(\"./errorBox\");\nconst parser_1 = require(\"./newparser/parser\");\nconst tokenizer_1 = require(\"./newparser/tokenizer\");\nasync function run(ap, strings) {\n const result = await runSafely(ap, strings);\n if ((0, Result_1.isErr)(result)) {\n return result.error.run();\n }\n return result.value;\n}\n/**\n * Runs a command but does not apply any effect\n */\nasync function runSafely(ap, strings) {\n const hotPath = [];\n const nodes = parseCommon(ap, strings);\n try {\n const result = await ap.run({ nodes, visitedNodes: new Set(), hotPath });\n if ((0, Result_1.isErr)(result)) {\n throw new effects_1.Exit({\n message: (0, errorBox_1.errorBox)(nodes, result.error.errors, hotPath),\n exitCode: 1,\n into: \"stderr\",\n });\n }\n return (0, Result_1.ok)(result.value);\n }\n catch (e) {\n if (e instanceof effects_1.Exit) {\n return (0, Result_1.err)(e);\n }\n throw e;\n }\n}\n/**\n * Run a command but don't quit. Returns an `Result` instead.\n */\nasync function dryRun(ap, strings) {\n const result = await runSafely(ap, strings);\n if ((0, Result_1.isErr)(result)) {\n return (0, Result_1.err)(result.error.dryRun());\n }\n return result;\n}\n/**\n * Parse the command as if to run it, but only return the parse result and don't run the command.\n */\nfunction parse(ap, strings) {\n const hotPath = [];\n const nodes = parseCommon(ap, strings);\n return ap.parse({ nodes, visitedNodes: new Set(), hotPath });\n}\nfunction parseCommon(ap, strings) {\n const longFlagKeys = new Set();\n const shortFlagKeys = new Set();\n const longOptionKeys = new Set();\n const shortOptionKeys = new Set();\n const registerContext = {\n forceFlagShortNames: shortFlagKeys,\n forceFlagLongNames: longFlagKeys,\n forceOptionShortNames: shortOptionKeys,\n forceOptionLongNames: longOptionKeys,\n };\n ap.register(registerContext);\n const tokens = (0, tokenizer_1.tokenize)(strings);\n return (0, parser_1.parse)(tokens, registerContext);\n}\n//# sourceMappingURL=runner.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.restPositionals = restPositionals;\nconst Result = __importStar(require(\"./Result\"));\nconst types_1 = require(\"./types\");\n/**\n * Read all the positionals and decode them using the type provided.\n * Works best when it is the last item on the `command` construct, to be\n * used like the `...rest` operator in JS and TypeScript.\n */\nfunction fullRestPositionals(config) {\n return {\n helpTopics() {\n var _a, _b, _c, _d;\n const displayName = (_b = (_a = config.displayName) !== null && _a !== void 0 ? _a : config.type.displayName) !== null && _b !== void 0 ? _b : \"arg\";\n return [\n {\n usage: `[...${displayName}]`,\n category: \"arguments\",\n defaults: [],\n description: (_d = (_c = config.description) !== null && _c !== void 0 ? _c : config.type.description) !== null && _d !== void 0 ? _d : \"\",\n },\n ];\n },\n register(_opts) { },\n async parse({ nodes, visitedNodes, }) {\n const positionals = nodes.filter((node) => node.type === \"positionalArgument\" && !visitedNodes.has(node));\n const results = [];\n const errors = [];\n for (const positional of positionals) {\n visitedNodes.add(positional);\n const decoded = await Result.safeAsync(config.type.from(positional.raw));\n if (Result.isOk(decoded)) {\n results.push(decoded.value);\n }\n else {\n errors.push({\n nodes: [positional],\n message: decoded.error.message,\n });\n }\n }\n if (errors.length > 0) {\n return Result.err({\n errors,\n });\n }\n return Result.ok(results);\n },\n };\n}\nfunction restPositionals(config) {\n return fullRestPositionals({\n type: types_1.string,\n ...config,\n });\n}\n//# sourceMappingURL=restPositionals.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multiflag = multiflag;\nconst Result = __importStar(require(\"./Result\"));\nconst flag_1 = require(\"./flag\");\nconst findOption_1 = require(\"./newparser/findOption\");\n/**\n * Like `option`, but can accept multiple options, and expects a decoder from a list of strings.\n * An error will highlight all option occurences.\n */\nfunction multiflag(config) {\n return {\n helpTopics() {\n var _a;\n let usage = `--${config.long}`;\n if (config.short) {\n usage += `, -${config.short}`;\n }\n return [\n {\n category: \"flags\",\n usage,\n defaults: [],\n description: (_a = config.description) !== null && _a !== void 0 ? _a : \"self explanatory\",\n },\n ];\n },\n register(opts) {\n opts.forceFlagLongNames.add(config.long);\n if (config.short) {\n opts.forceFlagShortNames.add(config.short);\n }\n },\n async parse({ nodes, visitedNodes, }) {\n var _a, _b;\n const options = (0, findOption_1.findOption)(nodes, {\n longNames: [config.long],\n shortNames: config.short ? [config.short] : [],\n }).filter((x) => !visitedNodes.has(x));\n for (const option of options) {\n visitedNodes.add(option);\n }\n const optionValues = [];\n const errors = [];\n for (const option of options) {\n const decoded = await Result.safeAsync(flag_1.boolean.from((_b = (_a = option.value) === null || _a === void 0 ? void 0 : _a.node.raw) !== null && _b !== void 0 ? _b : \"true\"));\n if (Result.isErr(decoded)) {\n errors.push({ nodes: [option], message: decoded.error.message });\n }\n else {\n optionValues.push(decoded.value);\n }\n }\n if (errors.length > 0) {\n return Result.err({\n errors,\n });\n }\n const multiDecoded = await Result.safeAsync(config.type.from(optionValues));\n if (Result.isErr(multiDecoded)) {\n return Result.err({\n errors: [\n {\n nodes: options,\n message: multiDecoded.error.message,\n },\n ],\n });\n }\n return multiDecoded;\n },\n };\n}\n//# sourceMappingURL=multiflag.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multioption = multioption;\nconst chalk_1 = __importDefault(require(\"chalk\"));\nconst Result = __importStar(require(\"./Result\"));\nconst findOption_1 = require(\"./newparser/findOption\");\n/**\n * Like `option`, but can accept multiple options, and expects a decoder from a list of strings.\n * An error will highlight all option occurences.\n */\nfunction multioption(config) {\n return {\n helpTopics() {\n var _a, _b;\n const displayName = (_a = config.type.displayName) !== null && _a !== void 0 ? _a : \"value\";\n let usage = `--${config.long} <${displayName}>`;\n if (config.short) {\n usage += `, -${config.short}=<${displayName}>`;\n }\n const defaults = [];\n if (config.defaultValue) {\n try {\n const defaultValue = config.defaultValue();\n if (config.defaultValueIsSerializable) {\n defaults.push(`default: ${chalk_1.default.italic(defaultValue)}`);\n }\n else {\n defaults.push(\"[...optional]\");\n }\n }\n catch (e) { }\n }\n else if (config.type.defaultValue) {\n try {\n const defaultValue = config.type.defaultValue();\n if (config.type.defaultValueIsSerializable) {\n defaults.push(`default: ${chalk_1.default.italic(defaultValue)}`);\n }\n else {\n defaults.push(\"[...optional]\");\n }\n }\n catch (e) { }\n }\n else if (config.onMissing || config.type.onMissing) {\n defaults.push(\"[...optional]\");\n }\n return [\n {\n category: \"options\",\n usage,\n defaults,\n description: (_b = config.description) !== null && _b !== void 0 ? _b : \"self explanatory\",\n },\n ];\n },\n register(opts) {\n opts.forceOptionLongNames.add(config.long);\n if (config.short) {\n opts.forceOptionShortNames.add(config.short);\n }\n },\n async parse({ nodes, visitedNodes, }) {\n var _a;\n const options = (0, findOption_1.findOption)(nodes, {\n longNames: [config.long],\n shortNames: config.short ? [config.short] : [],\n }).filter((x) => !visitedNodes.has(x));\n const defaultValueFn = config.defaultValue || config.type.defaultValue;\n const onMissingFn = config.onMissing || config.type.onMissing;\n if (options.length === 0 && defaultValueFn) {\n try {\n const defaultValue = defaultValueFn();\n return Result.ok(defaultValue);\n }\n catch (e) {\n const message = `Failed to resolve default value for '--${config.long}': ${e.message}`;\n return Result.err({\n errors: [\n {\n nodes: [],\n message,\n },\n ],\n });\n }\n }\n else if (options.length === 0 && onMissingFn) {\n try {\n const missingValue = await onMissingFn();\n return Result.ok(missingValue);\n }\n catch (e) {\n const message = `Failed to get missing value for '--${config.long}': ${e.message}`;\n return Result.err({\n errors: [\n {\n nodes: [],\n message,\n },\n ],\n });\n }\n }\n for (const option of options) {\n visitedNodes.add(option);\n }\n const optionValues = [];\n const errors = [];\n const flagNodes = [];\n for (const option of options) {\n const providedValue = (_a = option.value) === null || _a === void 0 ? void 0 : _a.node.raw;\n if (providedValue === undefined) {\n flagNodes.push(option);\n continue;\n }\n optionValues.push(providedValue);\n }\n if (flagNodes.length > 0) {\n errors.push({\n nodes: flagNodes,\n message: \"Expected to get a value, found a flag\",\n });\n }\n if (errors.length > 0) {\n return Result.err({ errors });\n }\n const multiDecoded = await Result.safeAsync(config.type.from(optionValues));\n if (Result.isErr(multiDecoded)) {\n return Result.err({\n errors: [{ nodes: options, message: multiDecoded.error.message }],\n });\n }\n return multiDecoded;\n },\n };\n}\n//# sourceMappingURL=multioption.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.union = union;\nconst Result = __importStar(require(\"./Result\"));\nconst type_1 = require(\"./type\");\n/**\n * Take one of the types. Merge the metadata from left to right.\n * If nothing matches, prints all the errors.\n */\nfunction union(ts, { combineErrors = (errors) => errors.join(\"\\n\"), } = {}) {\n const merged = Object.assign({}, ...ts.map((x) => (0, type_1.typeDef)(x)));\n return {\n ...merged,\n async from(input) {\n const errors = [];\n for (const t of ts) {\n const decoded = await Result.safeAsync((0, type_1.fromFn)(t)(input));\n if (Result.isOk(decoded)) {\n return decoded.value;\n }\n errors.push(decoded.error.message);\n }\n throw new Error(combineErrors(errors));\n },\n };\n}\n//# sourceMappingURL=union.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oneOf = oneOf;\nconst node_util_1 = require(\"node:util\");\n/**\n * A union of literals. When you want to take an exact enum value.\n */\nfunction oneOf(literals) {\n const examples = literals.map((x) => (0, node_util_1.inspect)(x)).join(\", \");\n return {\n async from(str) {\n const value = literals.find((x) => x === str);\n if (!value) {\n throw new Error(`Invalid value '${str}'. Expected one of: ${examples}`);\n }\n return value;\n },\n description: `One of ${examples}`,\n };\n}\n//# sourceMappingURL=oneOf.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rest = rest;\nconst Result = __importStar(require(\"./Result\"));\nfunction rest(config) {\n return {\n helpTopics() {\n var _a, _b;\n const displayName = (_a = config === null || config === void 0 ? void 0 : config.displayName) !== null && _a !== void 0 ? _a : \"arg\";\n return [\n {\n usage: `[...${displayName}]`,\n category: \"arguments\",\n defaults: [],\n description: (_b = config === null || config === void 0 ? void 0 : config.description) !== null && _b !== void 0 ? _b : \"catches the rest of the values\",\n },\n ];\n },\n register() { },\n async parse(context) {\n const visitedNodeIndices = [...context.visitedNodes]\n .map((x) => context.nodes.indexOf(x))\n .filter((x) => x > -1);\n const strings = [];\n const maxIndex = Math.max(-1, ...visitedNodeIndices);\n const restItems = context.nodes.slice(maxIndex + 1);\n for (const node of restItems) {\n switch (node.type) {\n case \"positionalArgument\": {\n strings.push(node.raw);\n context.visitedNodes.add(node);\n break;\n }\n case \"longOption\": {\n strings.push(...getOriginal(node));\n context.visitedNodes.add(node);\n break;\n }\n case \"shortOption\": {\n strings.push(...getOriginal(node));\n context.visitedNodes.add(node);\n break;\n }\n case \"forcePositional\": {\n strings.push(node.raw);\n context.visitedNodes.add(node);\n break;\n }\n case \"shortOptions\": {\n const last = node.options.at(-1);\n context.visitedNodes.add(node);\n strings.push(...getOriginal({ ...node, value: last === null || last === void 0 ? void 0 : last.value }));\n break;\n }\n }\n }\n return Result.ok(strings);\n },\n };\n}\nfunction getOriginal(node) {\n if (!node.value) {\n return [node.raw];\n }\n if (node.value.delimiter.raw === \" \") {\n return [\n node.raw.slice(0, node.value.index - node.index),\n node.value.node.raw,\n ];\n }\n return [node.raw];\n}\n//# sourceMappingURL=rest.js.map","\"use strict\";\n/**\n * The index module: the entrance to the world of cmd-ts 😎\n *\n * @packageDocumentation\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rest = exports.oneOf = exports.union = exports.multioption = exports.multiflag = exports.restPositionals = exports.parse = exports.run = exports.runSafely = exports.dryRun = exports.positional = exports.option = exports.flag = exports.command = exports.binary = exports.extendType = exports.subcommands = void 0;\nvar subcommands_1 = require(\"./subcommands\");\nObject.defineProperty(exports, \"subcommands\", { enumerable: true, get: function () { return subcommands_1.subcommands; } });\nvar type_1 = require(\"./type\");\nObject.defineProperty(exports, \"extendType\", { enumerable: true, get: function () { return type_1.extendType; } });\n__exportStar(require(\"./types\"), exports);\nvar binary_1 = require(\"./binary\");\nObject.defineProperty(exports, \"binary\", { enumerable: true, get: function () { return binary_1.binary; } });\nvar command_1 = require(\"./command\");\nObject.defineProperty(exports, \"command\", { enumerable: true, get: function () { return command_1.command; } });\nvar flag_1 = require(\"./flag\");\nObject.defineProperty(exports, \"flag\", { enumerable: true, get: function () { return flag_1.flag; } });\nvar option_1 = require(\"./option\");\nObject.defineProperty(exports, \"option\", { enumerable: true, get: function () { return option_1.option; } });\nvar positional_1 = require(\"./positional\");\nObject.defineProperty(exports, \"positional\", { enumerable: true, get: function () { return positional_1.positional; } });\nvar runner_1 = require(\"./runner\");\nObject.defineProperty(exports, \"dryRun\", { enumerable: true, get: function () { return runner_1.dryRun; } });\nObject.defineProperty(exports, \"runSafely\", { enumerable: true, get: function () { return runner_1.runSafely; } });\nObject.defineProperty(exports, \"run\", { enumerable: true, get: function () { return runner_1.run; } });\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return runner_1.parse; } });\nvar restPositionals_1 = require(\"./restPositionals\");\nObject.defineProperty(exports, \"restPositionals\", { enumerable: true, get: function () { return restPositionals_1.restPositionals; } });\nvar multiflag_1 = require(\"./multiflag\");\nObject.defineProperty(exports, \"multiflag\", { enumerable: true, get: function () { return multiflag_1.multiflag; } });\nvar multioption_1 = require(\"./multioption\");\nObject.defineProperty(exports, \"multioption\", { enumerable: true, get: function () { return multioption_1.multioption; } });\nvar union_1 = require(\"./union\");\nObject.defineProperty(exports, \"union\", { enumerable: true, get: function () { return union_1.union; } });\nvar oneOf_1 = require(\"./oneOf\");\nObject.defineProperty(exports, \"oneOf\", { enumerable: true, get: function () { return oneOf_1.oneOf; } });\nvar rest_1 = require(\"./rest\");\nObject.defineProperty(exports, \"rest\", { enumerable: true, get: function () { return rest_1.rest; } });\n//# sourceMappingURL=index.js.map","import * as cmd from \"cmd-ts\";\n\nexport const runtime = cmd.option({\n long: \"runtime\",\n type: {\n ...cmd.oneOf([\"node22\", \"node24\", \"python3.13\"] as const),\n displayName: \"runtime\",\n },\n defaultValue: () => \"node24\" as const,\n defaultValueIsSerializable: true,\n});\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","import { extendType, string } from \"cmd-ts\";\nimport type { StringValue } from \"ms\";\nimport chalk from \"chalk\";\n\nexport const Duration = extendType(string, {\n displayName: \"num UNIT\",\n description: \"A duration, e.g. 5m, 10s, 1h\",\n async from(string): Promise<StringValue> {\n const match = string.match(\n /^(\\d+) ?(ms|milliseconds?|msecs?|s(?:econds?)?|m(?:inutes?)?|h(?:ours?)?|d(?:ays?)?)?$/,\n );\n\n if (!match) {\n throw new Error(\n [\n `Malformed duration: \"${string}\".`,\n `${chalk.bold(\"hint:\")} Use a number followed by a unit: s (seconds), m (minutes), h (hours), d (days).`,\n \"╰▶ Examples: 30s, 5m, 2h, 1d\",\n ].join(\"\\n\"),\n );\n }\n\n return match[0] as unknown as StringValue;\n },\n});\n","import { Duration } from \"../types/duration\";\nimport * as cmd from \"cmd-ts\";\n\nexport const timeout = cmd.option({\n long: \"timeout\",\n type: Duration,\n description: \"The maximum duration a sandbox can run for. Example: 5m, 1h\",\n defaultValue: () => \"5 minutes\" as const,\n defaultValueIsSerializable: true,\n});\n","export const output = {\n print: console.log,\n error: console.error,\n link(text: string, href: string) {\n return `\\u001B]8;;${href}\\u001B\\\\${text}\\u001B]8;;\\u001B\\\\`;\n },\n};\n","import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n","import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n","import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')\n\t\t\t? !isInsideContainer() : false;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n","import process from 'node:process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\n\nexport const wslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?<!#.*)root\\s*=\\s*(?<mountPoint>.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nexport const powerShellPathFromWsl = async () => {\n\tconst mountPoint = await wslDrivesMountPoint();\n\treturn `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`;\n};\n\nexport const powerShellPath = async () => {\n\tif (isWsl) {\n\t\treturn powerShellPathFromWsl();\n\t}\n\n\treturn `${process.env.SYSTEMROOT || process.env.windir || String.raw`C:\\Windows`}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe`;\n};\n\nexport {default as isWsl} from 'is-wsl';\n","export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?<id>[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\treturn match?.groups.id ?? 'com.apple.Safari';\n}\n","import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true, signal} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst execOptions = {};\n\tif (signal) {\n\t\texecOptions.signal = signal;\n\t}\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments], execOptions);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n","import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n","import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tMSEdgeDHTML: {name: 'Edge', id: 'com.microsoft.edge'}, // On macOS, it's \"com.microsoft.edgemac\"\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // Newer Edge/Win10 releases\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n};\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?<id>\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\tconst browser = windowsBrowserProgIds[id];\n\tif (!browser) {\n\t\tthrow new UnknownBrowserError(`Unknown browser ID: ${id}`);\n\t}\n\n\treturn browser;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n","import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport {promisify} from 'node:util';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport {isWsl, powerShellPath} from 'wsl-utils';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\n\nconst execFile = promisify(childProcess.execFile);\n\n// Path to included `xdg-open`.\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n/**\nGet the default browser name in Windows from WSL.\n\n@returns {Promise<string>} Browser name.\n*/\nasync function getWindowsDefaultBrowserFromWsl() {\n\tconst powershellPath = await powerShellPath();\n\tconst rawCommand = String.raw`(Get-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice\").ProgId`;\n\tconst encodedCommand = Buffer.from(rawCommand, 'utf16le').toString('base64');\n\n\tconst {stdout} = await execFile(\n\t\tpowershellPath,\n\t\t[\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t\tencodedCommand,\n\t\t],\n\t\t{encoding: 'utf8'},\n\t);\n\n\tconst progId = stdout.trim();\n\n\t// Map ProgId to browser IDs\n\tconst browserMap = {\n\t\tChromeHTML: 'com.google.chrome',\n\t\tBraveHTML: 'com.brave.Browser',\n\t\tMSEdgeHTM: 'com.microsoft.edge',\n\t\tFirefoxURL: 'org.mozilla.firefox',\n\t};\n\n\treturn browserMap[progId] ? {id: browserMap[progId]} : {};\n}\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\n// eslint-disable-next-line complexity\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'com.brave.Browser': 'brave',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'com.microsoft.edgemac': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tbrave: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t};\n\n\t\tconst browser = isWsl ? await getWindowsDefaultBrowserFromWsl() : await defaultBrowser();\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isInsideContainer() && !app)) {\n\t\tcommand = await powerShellPath();\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`);\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(`\"${options.target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => `\"\\`\"${argument}\\`\"\"`);\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// This has to come after `--args`.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string' && !Array.isArray(name)) {\n\t\tthrow new TypeError('Expected a valid `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'brave', () => detectPlatformBinary({\n\tdarwin: 'brave browser',\n\twin32: 'brave',\n\tlinux: ['brave-browser', 'brave'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe',\n\t\tx64: ['/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe', '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: String.raw`C:\\Program Files\\Mozilla Firefox\\firefox.exe`,\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'browser', () => 'browser');\n\ndefineLazyProperty(apps, 'browserPrivate', () => 'browserPrivate');\n\nexport default open;\n","{\n\t\"dots\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠹\",\n\t\t\t\"⠸\",\n\t\t\t\"⠼\",\n\t\t\t\"⠴\",\n\t\t\t\"⠦\",\n\t\t\t\"⠧\",\n\t\t\t\"⠇\",\n\t\t\t\"⠏\"\n\t\t]\n\t},\n\t\"dots2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⣾\",\n\t\t\t\"⣽\",\n\t\t\t\"⣻\",\n\t\t\t\"⢿\",\n\t\t\t\"⡿\",\n\t\t\t\"⣟\",\n\t\t\t\"⣯\",\n\t\t\t\"⣷\"\n\t\t]\n\t},\n\t\"dots3\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠞\",\n\t\t\t\"⠖\",\n\t\t\t\"⠦\",\n\t\t\t\"⠴\",\n\t\t\t\"⠲\",\n\t\t\t\"⠳\",\n\t\t\t\"⠓\"\n\t\t]\n\t},\n\t\"dots4\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠄\",\n\t\t\t\"⠆\",\n\t\t\t\"⠇\",\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠸\",\n\t\t\t\"⠰\",\n\t\t\t\"⠠\",\n\t\t\t\"⠰\",\n\t\t\t\"⠸\",\n\t\t\t\"⠙\",\n\t\t\t\"⠋\",\n\t\t\t\"⠇\",\n\t\t\t\"⠆\"\n\t\t]\n\t},\n\t\"dots5\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠲\",\n\t\t\t\"⠴\",\n\t\t\t\"⠦\",\n\t\t\t\"⠖\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠋\"\n\t\t]\n\t},\n\t\"dots6\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠉\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠲\",\n\t\t\t\"⠴\",\n\t\t\t\"⠤\",\n\t\t\t\"⠄\",\n\t\t\t\"⠄\",\n\t\t\t\"⠤\",\n\t\t\t\"⠴\",\n\t\t\t\"⠲\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠚\",\n\t\t\t\"⠙\",\n\t\t\t\"⠉\",\n\t\t\t\"⠁\"\n\t\t]\n\t},\n\t\"dots7\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠈\",\n\t\t\t\"⠉\",\n\t\t\t\"⠋\",\n\t\t\t\"⠓\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠖\",\n\t\t\t\"⠦\",\n\t\t\t\"⠤\",\n\t\t\t\"⠠\",\n\t\t\t\"⠠\",\n\t\t\t\"⠤\",\n\t\t\t\"⠦\",\n\t\t\t\"⠖\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠋\",\n\t\t\t\"⠉\",\n\t\t\t\"⠈\"\n\t\t]\n\t},\n\t\"dots8\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠁\",\n\t\t\t\"⠉\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠲\",\n\t\t\t\"⠴\",\n\t\t\t\"⠤\",\n\t\t\t\"⠄\",\n\t\t\t\"⠄\",\n\t\t\t\"⠤\",\n\t\t\t\"⠠\",\n\t\t\t\"⠠\",\n\t\t\t\"⠤\",\n\t\t\t\"⠦\",\n\t\t\t\"⠖\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠋\",\n\t\t\t\"⠉\",\n\t\t\t\"⠈\",\n\t\t\t\"⠈\"\n\t\t]\n\t},\n\t\"dots9\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⢹\",\n\t\t\t\"⢺\",\n\t\t\t\"⢼\",\n\t\t\t\"⣸\",\n\t\t\t\"⣇\",\n\t\t\t\"⡧\",\n\t\t\t\"⡗\",\n\t\t\t\"⡏\"\n\t\t]\n\t},\n\t\"dots10\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⢄\",\n\t\t\t\"⢂\",\n\t\t\t\"⢁\",\n\t\t\t\"⡁\",\n\t\t\t\"⡈\",\n\t\t\t\"⡐\",\n\t\t\t\"⡠\"\n\t\t]\n\t},\n\t\"dots11\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠄\",\n\t\t\t\"⡀\",\n\t\t\t\"⢀\",\n\t\t\t\"⠠\",\n\t\t\t\"⠐\",\n\t\t\t\"⠈\"\n\t\t]\n\t},\n\t\"dots12\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⢀⠀\",\n\t\t\t\"⡀⠀\",\n\t\t\t\"⠄⠀\",\n\t\t\t\"⢂⠀\",\n\t\t\t\"⡂⠀\",\n\t\t\t\"⠅⠀\",\n\t\t\t\"⢃⠀\",\n\t\t\t\"⡃⠀\",\n\t\t\t\"⠍⠀\",\n\t\t\t\"⢋⠀\",\n\t\t\t\"⡋⠀\",\n\t\t\t\"⠍⠁\",\n\t\t\t\"⢋⠁\",\n\t\t\t\"⡋⠁\",\n\t\t\t\"⠍⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠩\",\n\t\t\t\"⠈⢙\",\n\t\t\t\"⠈⡙\",\n\t\t\t\"⢈⠩\",\n\t\t\t\"⡀⢙\",\n\t\t\t\"⠄⡙\",\n\t\t\t\"⢂⠩\",\n\t\t\t\"⡂⢘\",\n\t\t\t\"⠅⡘\",\n\t\t\t\"⢃⠨\",\n\t\t\t\"⡃⢐\",\n\t\t\t\"⠍⡐\",\n\t\t\t\"⢋⠠\",\n\t\t\t\"⡋⢀\",\n\t\t\t\"⠍⡁\",\n\t\t\t\"⢋⠁\",\n\t\t\t\"⡋⠁\",\n\t\t\t\"⠍⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠩\",\n\t\t\t\"⠈⢙\",\n\t\t\t\"⠈⡙\",\n\t\t\t\"⠈⠩\",\n\t\t\t\"⠀⢙\",\n\t\t\t\"⠀⡙\",\n\t\t\t\"⠀⠩\",\n\t\t\t\"⠀⢘\",\n\t\t\t\"⠀⡘\",\n\t\t\t\"⠀⠨\",\n\t\t\t\"⠀⢐\",\n\t\t\t\"⠀⡐\",\n\t\t\t\"⠀⠠\",\n\t\t\t\"⠀⢀\",\n\t\t\t\"⠀⡀\"\n\t\t]\n\t},\n\t\"dots13\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⣼\",\n\t\t\t\"⣹\",\n\t\t\t\"⢻\",\n\t\t\t\"⠿\",\n\t\t\t\"⡟\",\n\t\t\t\"⣏\",\n\t\t\t\"⣧\",\n\t\t\t\"⣶\"\n\t\t]\n\t},\n\t\"dots8Bit\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠀\",\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠃\",\n\t\t\t\"⠄\",\n\t\t\t\"⠅\",\n\t\t\t\"⠆\",\n\t\t\t\"⠇\",\n\t\t\t\"⡀\",\n\t\t\t\"⡁\",\n\t\t\t\"⡂\",\n\t\t\t\"⡃\",\n\t\t\t\"⡄\",\n\t\t\t\"⡅\",\n\t\t\t\"⡆\",\n\t\t\t\"⡇\",\n\t\t\t\"⠈\",\n\t\t\t\"⠉\",\n\t\t\t\"⠊\",\n\t\t\t\"⠋\",\n\t\t\t\"⠌\",\n\t\t\t\"⠍\",\n\t\t\t\"⠎\",\n\t\t\t\"⠏\",\n\t\t\t\"⡈\",\n\t\t\t\"⡉\",\n\t\t\t\"⡊\",\n\t\t\t\"⡋\",\n\t\t\t\"⡌\",\n\t\t\t\"⡍\",\n\t\t\t\"⡎\",\n\t\t\t\"⡏\",\n\t\t\t\"⠐\",\n\t\t\t\"⠑\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠔\",\n\t\t\t\"⠕\",\n\t\t\t\"⠖\",\n\t\t\t\"⠗\",\n\t\t\t\"⡐\",\n\t\t\t\"⡑\",\n\t\t\t\"⡒\",\n\t\t\t\"⡓\",\n\t\t\t\"⡔\",\n\t\t\t\"⡕\",\n\t\t\t\"⡖\",\n\t\t\t\"⡗\",\n\t\t\t\"⠘\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠛\",\n\t\t\t\"⠜\",\n\t\t\t\"⠝\",\n\t\t\t\"⠞\",\n\t\t\t\"⠟\",\n\t\t\t\"⡘\",\n\t\t\t\"⡙\",\n\t\t\t\"⡚\",\n\t\t\t\"⡛\",\n\t\t\t\"⡜\",\n\t\t\t\"⡝\",\n\t\t\t\"⡞\",\n\t\t\t\"⡟\",\n\t\t\t\"⠠\",\n\t\t\t\"⠡\",\n\t\t\t\"⠢\",\n\t\t\t\"⠣\",\n\t\t\t\"⠤\",\n\t\t\t\"⠥\",\n\t\t\t\"⠦\",\n\t\t\t\"⠧\",\n\t\t\t\"⡠\",\n\t\t\t\"⡡\",\n\t\t\t\"⡢\",\n\t\t\t\"⡣\",\n\t\t\t\"⡤\",\n\t\t\t\"⡥\",\n\t\t\t\"⡦\",\n\t\t\t\"⡧\",\n\t\t\t\"⠨\",\n\t\t\t\"⠩\",\n\t\t\t\"⠪\",\n\t\t\t\"⠫\",\n\t\t\t\"⠬\",\n\t\t\t\"⠭\",\n\t\t\t\"⠮\",\n\t\t\t\"⠯\",\n\t\t\t\"⡨\",\n\t\t\t\"⡩\",\n\t\t\t\"⡪\",\n\t\t\t\"⡫\",\n\t\t\t\"⡬\",\n\t\t\t\"⡭\",\n\t\t\t\"⡮\",\n\t\t\t\"⡯\",\n\t\t\t\"⠰\",\n\t\t\t\"⠱\",\n\t\t\t\"⠲\",\n\t\t\t\"⠳\",\n\t\t\t\"⠴\",\n\t\t\t\"⠵\",\n\t\t\t\"⠶\",\n\t\t\t\"⠷\",\n\t\t\t\"⡰\",\n\t\t\t\"⡱\",\n\t\t\t\"⡲\",\n\t\t\t\"⡳\",\n\t\t\t\"⡴\",\n\t\t\t\"⡵\",\n\t\t\t\"⡶\",\n\t\t\t\"⡷\",\n\t\t\t\"⠸\",\n\t\t\t\"⠹\",\n\t\t\t\"⠺\",\n\t\t\t\"⠻\",\n\t\t\t\"⠼\",\n\t\t\t\"⠽\",\n\t\t\t\"⠾\",\n\t\t\t\"⠿\",\n\t\t\t\"⡸\",\n\t\t\t\"⡹\",\n\t\t\t\"⡺\",\n\t\t\t\"⡻\",\n\t\t\t\"⡼\",\n\t\t\t\"⡽\",\n\t\t\t\"⡾\",\n\t\t\t\"⡿\",\n\t\t\t\"⢀\",\n\t\t\t\"⢁\",\n\t\t\t\"⢂\",\n\t\t\t\"⢃\",\n\t\t\t\"⢄\",\n\t\t\t\"⢅\",\n\t\t\t\"⢆\",\n\t\t\t\"⢇\",\n\t\t\t\"⣀\",\n\t\t\t\"⣁\",\n\t\t\t\"⣂\",\n\t\t\t\"⣃\",\n\t\t\t\"⣄\",\n\t\t\t\"⣅\",\n\t\t\t\"⣆\",\n\t\t\t\"⣇\",\n\t\t\t\"⢈\",\n\t\t\t\"⢉\",\n\t\t\t\"⢊\",\n\t\t\t\"⢋\",\n\t\t\t\"⢌\",\n\t\t\t\"⢍\",\n\t\t\t\"⢎\",\n\t\t\t\"⢏\",\n\t\t\t\"⣈\",\n\t\t\t\"⣉\",\n\t\t\t\"⣊\",\n\t\t\t\"⣋\",\n\t\t\t\"⣌\",\n\t\t\t\"⣍\",\n\t\t\t\"⣎\",\n\t\t\t\"⣏\",\n\t\t\t\"⢐\",\n\t\t\t\"⢑\",\n\t\t\t\"⢒\",\n\t\t\t\"⢓\",\n\t\t\t\"⢔\",\n\t\t\t\"⢕\",\n\t\t\t\"⢖\",\n\t\t\t\"⢗\",\n\t\t\t\"⣐\",\n\t\t\t\"⣑\",\n\t\t\t\"⣒\",\n\t\t\t\"⣓\",\n\t\t\t\"⣔\",\n\t\t\t\"⣕\",\n\t\t\t\"⣖\",\n\t\t\t\"⣗\",\n\t\t\t\"⢘\",\n\t\t\t\"⢙\",\n\t\t\t\"⢚\",\n\t\t\t\"⢛\",\n\t\t\t\"⢜\",\n\t\t\t\"⢝\",\n\t\t\t\"⢞\",\n\t\t\t\"⢟\",\n\t\t\t\"⣘\",\n\t\t\t\"⣙\",\n\t\t\t\"⣚\",\n\t\t\t\"⣛\",\n\t\t\t\"⣜\",\n\t\t\t\"⣝\",\n\t\t\t\"⣞\",\n\t\t\t\"⣟\",\n\t\t\t\"⢠\",\n\t\t\t\"⢡\",\n\t\t\t\"⢢\",\n\t\t\t\"⢣\",\n\t\t\t\"⢤\",\n\t\t\t\"⢥\",\n\t\t\t\"⢦\",\n\t\t\t\"⢧\",\n\t\t\t\"⣠\",\n\t\t\t\"⣡\",\n\t\t\t\"⣢\",\n\t\t\t\"⣣\",\n\t\t\t\"⣤\",\n\t\t\t\"⣥\",\n\t\t\t\"⣦\",\n\t\t\t\"⣧\",\n\t\t\t\"⢨\",\n\t\t\t\"⢩\",\n\t\t\t\"⢪\",\n\t\t\t\"⢫\",\n\t\t\t\"⢬\",\n\t\t\t\"⢭\",\n\t\t\t\"⢮\",\n\t\t\t\"⢯\",\n\t\t\t\"⣨\",\n\t\t\t\"⣩\",\n\t\t\t\"⣪\",\n\t\t\t\"⣫\",\n\t\t\t\"⣬\",\n\t\t\t\"⣭\",\n\t\t\t\"⣮\",\n\t\t\t\"⣯\",\n\t\t\t\"⢰\",\n\t\t\t\"⢱\",\n\t\t\t\"⢲\",\n\t\t\t\"⢳\",\n\t\t\t\"⢴\",\n\t\t\t\"⢵\",\n\t\t\t\"⢶\",\n\t\t\t\"⢷\",\n\t\t\t\"⣰\",\n\t\t\t\"⣱\",\n\t\t\t\"⣲\",\n\t\t\t\"⣳\",\n\t\t\t\"⣴\",\n\t\t\t\"⣵\",\n\t\t\t\"⣶\",\n\t\t\t\"⣷\",\n\t\t\t\"⢸\",\n\t\t\t\"⢹\",\n\t\t\t\"⢺\",\n\t\t\t\"⢻\",\n\t\t\t\"⢼\",\n\t\t\t\"⢽\",\n\t\t\t\"⢾\",\n\t\t\t\"⢿\",\n\t\t\t\"⣸\",\n\t\t\t\"⣹\",\n\t\t\t\"⣺\",\n\t\t\t\"⣻\",\n\t\t\t\"⣼\",\n\t\t\t\"⣽\",\n\t\t\t\"⣾\",\n\t\t\t\"⣿\"\n\t\t]\n\t},\n\t\"sand\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠄\",\n\t\t\t\"⡀\",\n\t\t\t\"⡈\",\n\t\t\t\"⡐\",\n\t\t\t\"⡠\",\n\t\t\t\"⣀\",\n\t\t\t\"⣁\",\n\t\t\t\"⣂\",\n\t\t\t\"⣄\",\n\t\t\t\"⣌\",\n\t\t\t\"⣔\",\n\t\t\t\"⣤\",\n\t\t\t\"⣥\",\n\t\t\t\"⣦\",\n\t\t\t\"⣮\",\n\t\t\t\"⣶\",\n\t\t\t\"⣷\",\n\t\t\t\"⣿\",\n\t\t\t\"⡿\",\n\t\t\t\"⠿\",\n\t\t\t\"⢟\",\n\t\t\t\"⠟\",\n\t\t\t\"⡛\",\n\t\t\t\"⠛\",\n\t\t\t\"⠫\",\n\t\t\t\"⢋\",\n\t\t\t\"⠋\",\n\t\t\t\"⠍\",\n\t\t\t\"⡉\",\n\t\t\t\"⠉\",\n\t\t\t\"⠑\",\n\t\t\t\"⠡\",\n\t\t\t\"⢁\"\n\t\t]\n\t},\n\t\"line\": {\n\t\t\"interval\": 130,\n\t\t\"frames\": [\n\t\t\t\"-\",\n\t\t\t\"\\\\\",\n\t\t\t\"|\",\n\t\t\t\"/\"\n\t\t]\n\t},\n\t\"line2\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"⠂\",\n\t\t\t\"-\",\n\t\t\t\"–\",\n\t\t\t\"—\",\n\t\t\t\"–\",\n\t\t\t\"-\"\n\t\t]\n\t},\n\t\"pipe\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"┤\",\n\t\t\t\"┘\",\n\t\t\t\"┴\",\n\t\t\t\"└\",\n\t\t\t\"├\",\n\t\t\t\"┌\",\n\t\t\t\"┬\",\n\t\t\t\"┐\"\n\t\t]\n\t},\n\t\"simpleDots\": {\n\t\t\"interval\": 400,\n\t\t\"frames\": [\n\t\t\t\". \",\n\t\t\t\".. \",\n\t\t\t\"...\",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"simpleDotsScrolling\": {\n\t\t\"interval\": 200,\n\t\t\"frames\": [\n\t\t\t\". \",\n\t\t\t\".. \",\n\t\t\t\"...\",\n\t\t\t\" ..\",\n\t\t\t\" .\",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"star\": {\n\t\t\"interval\": 70,\n\t\t\"frames\": [\n\t\t\t\"✶\",\n\t\t\t\"✸\",\n\t\t\t\"✹\",\n\t\t\t\"✺\",\n\t\t\t\"✹\",\n\t\t\t\"✷\"\n\t\t]\n\t},\n\t\"star2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"+\",\n\t\t\t\"x\",\n\t\t\t\"*\"\n\t\t]\n\t},\n\t\"flip\": {\n\t\t\"interval\": 70,\n\t\t\"frames\": [\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"-\",\n\t\t\t\"`\",\n\t\t\t\"`\",\n\t\t\t\"'\",\n\t\t\t\"´\",\n\t\t\t\"-\",\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"_\"\n\t\t]\n\t},\n\t\"hamburger\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"☱\",\n\t\t\t\"☲\",\n\t\t\t\"☴\"\n\t\t]\n\t},\n\t\"growVertical\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▁\",\n\t\t\t\"▃\",\n\t\t\t\"▄\",\n\t\t\t\"▅\",\n\t\t\t\"▆\",\n\t\t\t\"▇\",\n\t\t\t\"▆\",\n\t\t\t\"▅\",\n\t\t\t\"▄\",\n\t\t\t\"▃\"\n\t\t]\n\t},\n\t\"growHorizontal\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▏\",\n\t\t\t\"▎\",\n\t\t\t\"▍\",\n\t\t\t\"▌\",\n\t\t\t\"▋\",\n\t\t\t\"▊\",\n\t\t\t\"▉\",\n\t\t\t\"▊\",\n\t\t\t\"▋\",\n\t\t\t\"▌\",\n\t\t\t\"▍\",\n\t\t\t\"▎\"\n\t\t]\n\t},\n\t\"balloon\": {\n\t\t\"interval\": 140,\n\t\t\"frames\": [\n\t\t\t\" \",\n\t\t\t\".\",\n\t\t\t\"o\",\n\t\t\t\"O\",\n\t\t\t\"@\",\n\t\t\t\"*\",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"balloon2\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\".\",\n\t\t\t\"o\",\n\t\t\t\"O\",\n\t\t\t\"°\",\n\t\t\t\"O\",\n\t\t\t\"o\",\n\t\t\t\".\"\n\t\t]\n\t},\n\t\"noise\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"▓\",\n\t\t\t\"▒\",\n\t\t\t\"░\"\n\t\t]\n\t},\n\t\"bounce\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠄\",\n\t\t\t\"⠂\"\n\t\t]\n\t},\n\t\"boxBounce\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▖\",\n\t\t\t\"▘\",\n\t\t\t\"▝\",\n\t\t\t\"▗\"\n\t\t]\n\t},\n\t\"boxBounce2\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"▌\",\n\t\t\t\"▀\",\n\t\t\t\"▐\",\n\t\t\t\"▄\"\n\t\t]\n\t},\n\t\"triangle\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"◢\",\n\t\t\t\"◣\",\n\t\t\t\"◤\",\n\t\t\t\"◥\"\n\t\t]\n\t},\n\t\"binary\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"010010\",\n \"001100\",\n \"100101\",\n \"111010\",\n \"111101\",\n \"010111\",\n\t\t\t\"101011\",\n\t\t\t\"111000\",\n\t\t\t\"110011\",\n\t\t\t\"110101\"\n\t\t]\n\t},\n\t\"arc\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"◜\",\n\t\t\t\"◠\",\n\t\t\t\"◝\",\n\t\t\t\"◞\",\n\t\t\t\"◡\",\n\t\t\t\"◟\"\n\t\t]\n\t},\n\t\"circle\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"◡\",\n\t\t\t\"⊙\",\n\t\t\t\"◠\"\n\t\t]\n\t},\n\t\"squareCorners\": {\n\t\t\"interval\": 180,\n\t\t\"frames\": [\n\t\t\t\"◰\",\n\t\t\t\"◳\",\n\t\t\t\"◲\",\n\t\t\t\"◱\"\n\t\t]\n\t},\n\t\"circleQuarters\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"◴\",\n\t\t\t\"◷\",\n\t\t\t\"◶\",\n\t\t\t\"◵\"\n\t\t]\n\t},\n\t\"circleHalves\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"◐\",\n\t\t\t\"◓\",\n\t\t\t\"◑\",\n\t\t\t\"◒\"\n\t\t]\n\t},\n\t\"squish\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"╫\",\n\t\t\t\"╪\"\n\t\t]\n\t},\n\t\"toggle\": {\n\t\t\"interval\": 250,\n\t\t\"frames\": [\n\t\t\t\"⊶\",\n\t\t\t\"⊷\"\n\t\t]\n\t},\n\t\"toggle2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"▫\",\n\t\t\t\"▪\"\n\t\t]\n\t},\n\t\"toggle3\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"□\",\n\t\t\t\"■\"\n\t\t]\n\t},\n\t\"toggle4\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"■\",\n\t\t\t\"□\",\n\t\t\t\"▪\",\n\t\t\t\"▫\"\n\t\t]\n\t},\n\t\"toggle5\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"▮\",\n\t\t\t\"▯\"\n\t\t]\n\t},\n\t\"toggle6\": {\n\t\t\"interval\": 300,\n\t\t\"frames\": [\n\t\t\t\"ဝ\",\n\t\t\t\"၀\"\n\t\t]\n\t},\n\t\"toggle7\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⦾\",\n\t\t\t\"⦿\"\n\t\t]\n\t},\n\t\"toggle8\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"◍\",\n\t\t\t\"◌\"\n\t\t]\n\t},\n\t\"toggle9\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"◉\",\n\t\t\t\"◎\"\n\t\t]\n\t},\n\t\"toggle10\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"㊂\",\n\t\t\t\"㊀\",\n\t\t\t\"㊁\"\n\t\t]\n\t},\n\t\"toggle11\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"⧇\",\n\t\t\t\"⧆\"\n\t\t]\n\t},\n\t\"toggle12\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"☗\",\n\t\t\t\"☖\"\n\t\t]\n\t},\n\t\"toggle13\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"=\",\n\t\t\t\"*\",\n\t\t\t\"-\"\n\t\t]\n\t},\n\t\"arrow\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"←\",\n\t\t\t\"↖\",\n\t\t\t\"↑\",\n\t\t\t\"↗\",\n\t\t\t\"→\",\n\t\t\t\"↘\",\n\t\t\t\"↓\",\n\t\t\t\"↙\"\n\t\t]\n\t},\n\t\"arrow2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⬆️ \",\n\t\t\t\"↗️ \",\n\t\t\t\"➡️ \",\n\t\t\t\"↘️ \",\n\t\t\t\"⬇️ \",\n\t\t\t\"↙️ \",\n\t\t\t\"⬅️ \",\n\t\t\t\"↖️ \"\n\t\t]\n\t},\n\t\"arrow3\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▹▹▹▹▹\",\n\t\t\t\"▸▹▹▹▹\",\n\t\t\t\"▹▸▹▹▹\",\n\t\t\t\"▹▹▸▹▹\",\n\t\t\t\"▹▹▹▸▹\",\n\t\t\t\"▹▹▹▹▸\"\n\t\t]\n\t},\n\t\"bouncingBar\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"[ ]\",\n\t\t\t\"[= ]\",\n\t\t\t\"[== ]\",\n\t\t\t\"[=== ]\",\n\t\t\t\"[====]\",\n\t\t\t\"[ ===]\",\n\t\t\t\"[ ==]\",\n\t\t\t\"[ =]\",\n\t\t\t\"[ ]\",\n\t\t\t\"[ =]\",\n\t\t\t\"[ ==]\",\n\t\t\t\"[ ===]\",\n\t\t\t\"[====]\",\n\t\t\t\"[=== ]\",\n\t\t\t\"[== ]\",\n\t\t\t\"[= ]\"\n\t\t]\n\t},\n\t\"bouncingBall\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ●)\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"(● )\"\n\t\t]\n\t},\n\t\"smiley\": {\n\t\t\"interval\": 200,\n\t\t\"frames\": [\n\t\t\t\"😄 \",\n\t\t\t\"😝 \"\n\t\t]\n\t},\n\t\"monkey\": {\n\t\t\"interval\": 300,\n\t\t\"frames\": [\n\t\t\t\"🙈 \",\n\t\t\t\"🙈 \",\n\t\t\t\"🙉 \",\n\t\t\t\"🙊 \"\n\t\t]\n\t},\n\t\"hearts\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"💛 \",\n\t\t\t\"💙 \",\n\t\t\t\"💜 \",\n\t\t\t\"💚 \",\n\t\t\t\"❤️ \"\n\t\t]\n\t},\n\t\"clock\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🕛 \",\n\t\t\t\"🕐 \",\n\t\t\t\"🕑 \",\n\t\t\t\"🕒 \",\n\t\t\t\"🕓 \",\n\t\t\t\"🕔 \",\n\t\t\t\"🕕 \",\n\t\t\t\"🕖 \",\n\t\t\t\"🕗 \",\n\t\t\t\"🕘 \",\n\t\t\t\"🕙 \",\n\t\t\t\"🕚 \"\n\t\t]\n\t},\n\t\"earth\": {\n\t\t\"interval\": 180,\n\t\t\"frames\": [\n\t\t\t\"🌍 \",\n\t\t\t\"🌎 \",\n\t\t\t\"🌏 \"\n\t\t]\n\t},\n\t\"material\": {\n\t\t\"interval\": 17,\n\t\t\"frames\": [\n\t\t\t\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███████▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████████▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███████████▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████████▁▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁▁██████████████▁▁▁▁\",\n\t\t\t\"▁▁▁██████████████▁▁▁\",\n\t\t\t\"▁▁▁▁█████████████▁▁▁\",\n\t\t\t\"▁▁▁▁██████████████▁▁\",\n\t\t\t\"▁▁▁▁██████████████▁▁\",\n\t\t\t\"▁▁▁▁▁██████████████▁\",\n\t\t\t\"▁▁▁▁▁██████████████▁\",\n\t\t\t\"▁▁▁▁▁██████████████▁\",\n\t\t\t\"▁▁▁▁▁▁██████████████\",\n\t\t\t\"▁▁▁▁▁▁██████████████\",\n\t\t\t\"▁▁▁▁▁▁▁█████████████\",\n\t\t\t\"▁▁▁▁▁▁▁█████████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁████████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁████████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁███████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁███████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁██████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁██████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n\t\t\t\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███████████▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"████████████▁▁▁▁▁▁▁▁\",\n\t\t\t\"████████████▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁▁▁█████████████▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁████████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁████████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁███████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁█████████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\"\n\t\t]\n\t},\n\t\"moon\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"🌑 \",\n\t\t\t\"🌒 \",\n\t\t\t\"🌓 \",\n\t\t\t\"🌔 \",\n\t\t\t\"🌕 \",\n\t\t\t\"🌖 \",\n\t\t\t\"🌗 \",\n\t\t\t\"🌘 \"\n\t\t]\n\t},\n\t\"runner\": {\n\t\t\"interval\": 140,\n\t\t\"frames\": [\n\t\t\t\"🚶 \",\n\t\t\t\"🏃 \"\n\t\t]\n\t},\n\t\"pong\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"▐⠂ ▌\",\n\t\t\t\"▐⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂▌\",\n\t\t\t\"▐ ⠠▌\",\n\t\t\t\"▐ ⡀▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐⠠ ▌\"\n\t\t]\n\t},\n\t\"shark\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▐|\\\\____________▌\",\n\t\t\t\"▐_|\\\\___________▌\",\n\t\t\t\"▐__|\\\\__________▌\",\n\t\t\t\"▐___|\\\\_________▌\",\n\t\t\t\"▐____|\\\\________▌\",\n\t\t\t\"▐_____|\\\\_______▌\",\n\t\t\t\"▐______|\\\\______▌\",\n\t\t\t\"▐_______|\\\\_____▌\",\n\t\t\t\"▐________|\\\\____▌\",\n\t\t\t\"▐_________|\\\\___▌\",\n\t\t\t\"▐__________|\\\\__▌\",\n\t\t\t\"▐___________|\\\\_▌\",\n\t\t\t\"▐____________|\\\\▌\",\n\t\t\t\"▐____________/|▌\",\n\t\t\t\"▐___________/|_▌\",\n\t\t\t\"▐__________/|__▌\",\n\t\t\t\"▐_________/|___▌\",\n\t\t\t\"▐________/|____▌\",\n\t\t\t\"▐_______/|_____▌\",\n\t\t\t\"▐______/|______▌\",\n\t\t\t\"▐_____/|_______▌\",\n\t\t\t\"▐____/|________▌\",\n\t\t\t\"▐___/|_________▌\",\n\t\t\t\"▐__/|__________▌\",\n\t\t\t\"▐_/|___________▌\",\n\t\t\t\"▐/|____________▌\"\n\t\t]\n\t},\n\t\"dqpb\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"d\",\n\t\t\t\"q\",\n\t\t\t\"p\",\n\t\t\t\"b\"\n\t\t]\n\t},\n\t\"weather\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"☀️ \",\n\t\t\t\"☀️ \",\n\t\t\t\"☀️ \",\n\t\t\t\"🌤 \",\n\t\t\t\"⛅️ \",\n\t\t\t\"🌥 \",\n\t\t\t\"☁️ \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"⛈ \",\n\t\t\t\"🌨 \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"☁️ \",\n\t\t\t\"🌥 \",\n\t\t\t\"⛅️ \",\n\t\t\t\"🌤 \",\n\t\t\t\"☀️ \",\n\t\t\t\"☀️ \"\n\t\t]\n\t},\n\t\"christmas\": {\n\t\t\"interval\": 400,\n\t\t\"frames\": [\n\t\t\t\"🌲\",\n\t\t\t\"🎄\"\n\t\t]\n\t},\n\t\"grenade\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"، \",\n\t\t\t\"′ \",\n\t\t\t\" ´ \",\n\t\t\t\" ‾ \",\n\t\t\t\" ⸌\",\n\t\t\t\" ⸊\",\n\t\t\t\" |\",\n\t\t\t\" ⁎\",\n\t\t\t\" ⁕\",\n\t\t\t\" ෴ \",\n\t\t\t\" ⁓\",\n\t\t\t\" \",\n\t\t\t\" \",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"point\": {\n\t\t\"interval\": 125,\n\t\t\"frames\": [\n\t\t\t\"∙∙∙\",\n\t\t\t\"●∙∙\",\n\t\t\t\"∙●∙\",\n\t\t\t\"∙∙●\",\n\t\t\t\"∙∙∙\"\n\t\t]\n\t},\n\t\"layer\": {\n\t\t\"interval\": 150,\n\t\t\"frames\": [\n\t\t\t\"-\",\n\t\t\t\"=\",\n\t\t\t\"≡\"\n\t\t]\n\t},\n\t\"betaWave\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"ρββββββ\",\n\t\t\t\"βρβββββ\",\n\t\t\t\"ββρββββ\",\n\t\t\t\"βββρβββ\",\n\t\t\t\"ββββρββ\",\n\t\t\t\"βββββρβ\",\n\t\t\t\"ββββββρ\"\n\t\t]\n\t},\n\t\"fingerDance\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"🤘 \",\n\t\t\t\"🤟 \",\n\t\t\t\"🖖 \",\n\t\t\t\"✋ \",\n\t\t\t\"🤚 \",\n\t\t\t\"👆 \"\n\t\t]\n\t},\n\t\"fistBump\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"🤜\\u3000\\u3000\\u3000\\u3000🤛 \",\n\t\t\t\"🤜\\u3000\\u3000\\u3000\\u3000🤛 \",\n\t\t\t\"🤜\\u3000\\u3000\\u3000\\u3000🤛 \",\n\t\t\t\"\\u3000🤜\\u3000\\u3000🤛\\u3000 \",\n\t\t\t\"\\u3000\\u3000🤜🤛\\u3000\\u3000 \",\n\t\t\t\"\\u3000🤜✨🤛\\u3000\\u3000 \",\n\t\t\t\"🤜\\u3000✨\\u3000🤛\\u3000 \"\n\t\t]\n\t},\n\t\"soccerHeader\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\" 🧑⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \"\n\t\t]\n\t},\n\t\"mindblown\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"😐 \",\n\t\t\t\"😐 \",\n\t\t\t\"😮 \",\n\t\t\t\"😮 \",\n\t\t\t\"😦 \",\n\t\t\t\"😦 \",\n\t\t\t\"😧 \",\n\t\t\t\"😧 \",\n\t\t\t\"🤯 \",\n\t\t\t\"💥 \",\n\t\t\t\"✨ \",\n\t\t\t\"\\u3000 \",\n\t\t\t\"\\u3000 \",\n\t\t\t\"\\u3000 \"\n\t\t]\n\t},\n\t\"speaker\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"🔈 \",\n\t\t\t\"🔉 \",\n\t\t\t\"🔊 \",\n\t\t\t\"🔉 \"\n\t\t]\n\t},\n\t\"orangePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🔸 \",\n\t\t\t\"🔶 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🔶 \"\n\t\t]\n\t},\n\t\"bluePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🔹 \",\n\t\t\t\"🔷 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔷 \"\n\t\t]\n\t},\n\t\"orangeBluePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🔸 \",\n\t\t\t\"🔶 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🔶 \",\n\t\t\t\"🔹 \",\n\t\t\t\"🔷 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔷 \"\n\t\t]\n\t},\n\t\"timeTravel\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🕛 \",\n\t\t\t\"🕚 \",\n\t\t\t\"🕙 \",\n\t\t\t\"🕘 \",\n\t\t\t\"🕗 \",\n\t\t\t\"🕖 \",\n\t\t\t\"🕕 \",\n\t\t\t\"🕔 \",\n\t\t\t\"🕓 \",\n\t\t\t\"🕒 \",\n\t\t\t\"🕑 \",\n\t\t\t\"🕐 \"\n\t\t]\n\t},\n\t\"aesthetic\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"▰▱▱▱▱▱▱\",\n\t\t\t\"▰▰▱▱▱▱▱\",\n\t\t\t\"▰▰▰▱▱▱▱\",\n\t\t\t\"▰▰▰▰▱▱▱\",\n\t\t\t\"▰▰▰▰▰▱▱\",\n\t\t\t\"▰▰▰▰▰▰▱\",\n\t\t\t\"▰▰▰▰▰▰▰\",\n\t\t\t\"▰▱▱▱▱▱▱\"\n\t\t]\n\t},\n\t\"dwarfFortress\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\" ██████£££ \",\n\t\t\t\"☺██████£££ \",\n\t\t\t\"☺██████£££ \",\n\t\t\t\"☺▓█████£££ \",\n\t\t\t\"☺▓█████£££ \",\n\t\t\t\"☺▒█████£££ \",\n\t\t\t\"☺▒█████£££ \",\n\t\t\t\"☺░█████£££ \",\n\t\t\t\"☺░█████£££ \",\n\t\t\t\"☺ █████£££ \",\n\t\t\t\" ☺█████£££ \",\n\t\t\t\" ☺█████£££ \",\n\t\t\t\" ☺▓████£££ \",\n\t\t\t\" ☺▓████£££ \",\n\t\t\t\" ☺▒████£££ \",\n\t\t\t\" ☺▒████£££ \",\n\t\t\t\" ☺░████£££ \",\n\t\t\t\" ☺░████£££ \",\n\t\t\t\" ☺ ████£££ \",\n\t\t\t\" ☺████£££ \",\n\t\t\t\" ☺████£££ \",\n\t\t\t\" ☺▓███£££ \",\n\t\t\t\" ☺▓███£££ \",\n\t\t\t\" ☺▒███£££ \",\n\t\t\t\" ☺▒███£££ \",\n\t\t\t\" ☺░███£££ \",\n\t\t\t\" ☺░███£££ \",\n\t\t\t\" ☺ ███£££ \",\n\t\t\t\" ☺███£££ \",\n\t\t\t\" ☺███£££ \",\n\t\t\t\" ☺▓██£££ \",\n\t\t\t\" ☺▓██£££ \",\n\t\t\t\" ☺▒██£££ \",\n\t\t\t\" ☺▒██£££ \",\n\t\t\t\" ☺░██£££ \",\n\t\t\t\" ☺░██£££ \",\n\t\t\t\" ☺ ██£££ \",\n\t\t\t\" ☺██£££ \",\n\t\t\t\" ☺██£££ \",\n\t\t\t\" ☺▓█£££ \",\n\t\t\t\" ☺▓█£££ \",\n\t\t\t\" ☺▒█£££ \",\n\t\t\t\" ☺▒█£££ \",\n\t\t\t\" ☺░█£££ \",\n\t\t\t\" ☺░█£££ \",\n\t\t\t\" ☺ █£££ \",\n\t\t\t\" ☺█£££ \",\n\t\t\t\" ☺█£££ \",\n\t\t\t\" ☺▓£££ \",\n\t\t\t\" ☺▓£££ \",\n\t\t\t\" ☺▒£££ \",\n\t\t\t\" ☺▒£££ \",\n\t\t\t\" ☺░£££ \",\n\t\t\t\" ☺░£££ \",\n\t\t\t\" ☺ £££ \",\n\t\t\t\" ☺£££ \",\n\t\t\t\" ☺£££ \",\n\t\t\t\" ☺▓££ \",\n\t\t\t\" ☺▓££ \",\n\t\t\t\" ☺▒££ \",\n\t\t\t\" ☺▒££ \",\n\t\t\t\" ☺░££ \",\n\t\t\t\" ☺░££ \",\n\t\t\t\" ☺ ££ \",\n\t\t\t\" ☺££ \",\n\t\t\t\" ☺££ \",\n\t\t\t\" ☺▓£ \",\n\t\t\t\" ☺▓£ \",\n\t\t\t\" ☺▒£ \",\n\t\t\t\" ☺▒£ \",\n\t\t\t\" ☺░£ \",\n\t\t\t\" ☺░£ \",\n\t\t\t\" ☺ £ \",\n\t\t\t\" ☺£ \",\n\t\t\t\" ☺£ \",\n\t\t\t\" ☺▓ \",\n\t\t\t\" ☺▓ \",\n\t\t\t\" ☺▒ \",\n\t\t\t\" ☺▒ \",\n\t\t\t\" ☺░ \",\n\t\t\t\" ☺░ \",\n\t\t\t\" ☺ \",\n\t\t\t\" ☺ &\",\n\t\t\t\" ☺ ☼&\",\n\t\t\t\" ☺ ☼ &\",\n\t\t\t\" ☺☼ &\",\n\t\t\t\" ☺☼ & \",\n\t\t\t\" ‼ & \",\n\t\t\t\" ☺ & \",\n\t\t\t\" ‼ & \",\n\t\t\t\" ☺ & \",\n\t\t\t\" ‼ & \",\n\t\t\t\" ☺ & \",\n\t\t\t\"‼ & \",\n\t\t\t\" & \",\n\t\t\t\" & \",\n\t\t\t\" & ░ \",\n\t\t\t\" & ▒ \",\n\t\t\t\" & ▓ \",\n\t\t\t\" & £ \",\n\t\t\t\" & ░£ \",\n\t\t\t\" & ▒£ \",\n\t\t\t\" & ▓£ \",\n\t\t\t\" & ££ \",\n\t\t\t\" & ░££ \",\n\t\t\t\" & ▒££ \",\n\t\t\t\"& ▓££ \",\n\t\t\t\"& £££ \",\n\t\t\t\" ░£££ \",\n\t\t\t\" ▒£££ \",\n\t\t\t\" ▓£££ \",\n\t\t\t\" █£££ \",\n\t\t\t\" ░█£££ \",\n\t\t\t\" ▒█£££ \",\n\t\t\t\" ▓█£££ \",\n\t\t\t\" ██£££ \",\n\t\t\t\" ░██£££ \",\n\t\t\t\" ▒██£££ \",\n\t\t\t\" ▓██£££ \",\n\t\t\t\" ███£££ \",\n\t\t\t\" ░███£££ \",\n\t\t\t\" ▒███£££ \",\n\t\t\t\" ▓███£££ \",\n\t\t\t\" ████£££ \",\n\t\t\t\" ░████£££ \",\n\t\t\t\" ▒████£££ \",\n\t\t\t\" ▓████£££ \",\n\t\t\t\" █████£££ \",\n\t\t\t\" ░█████£££ \",\n\t\t\t\" ▒█████£££ \",\n\t\t\t\" ▓█████£££ \",\n\t\t\t\" ██████£££ \",\n\t\t\t\" ██████£££ \"\n\t\t]\n\t}\n}\n","'use strict';\n\nconst spinners = Object.assign({}, require('./spinners.json')); // eslint-disable-line import/extensions\n\nconst spinnersList = Object.keys(spinners);\n\nObject.defineProperty(spinners, 'random', {\n\tget() {\n\t\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\t\tconst spinnerName = spinnersList[randomIndex];\n\t\treturn spinners[spinnerName];\n\t}\n});\n\nmodule.exports = spinners;\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import chalk from 'chalk';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nconst main = {\n\tinfo: chalk.blue('ℹ'),\n\tsuccess: chalk.green('✔'),\n\twarning: chalk.yellow('⚠'),\n\terror: chalk.red('✖'),\n};\n\nconst fallback = {\n\tinfo: chalk.blue('i'),\n\tsuccess: chalk.green('√'),\n\twarning: chalk.yellow('‼'),\n\terror: chalk.red('×'),\n};\n\nconst logSymbols = isUnicodeSupported() ? main : fallback;\n\nexport default logSymbols;\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n\tconst osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","export default function isInteractive({stream = process.stdout} = {}) {\n\treturn Boolean(\n\t\tstream && stream.isTTY &&\n\t\tprocess.env.TERM !== 'dumb' &&\n\t\t!('CI' in process.env)\n\t);\n}\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tconst {env} = process;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (process.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import process from 'node:process';\n\nconst ASCII_ETX_CODE = 0x03; // Ctrl+C emits this code\n\nclass StdinDiscarder {\n\t#activeCount = 0;\n\n\tstart() {\n\t\tthis.#activeCount++;\n\n\t\tif (this.#activeCount === 1) {\n\t\t\tthis.#realStart();\n\t\t}\n\t}\n\n\tstop() {\n\t\tif (this.#activeCount <= 0) {\n\t\t\tthrow new Error('`stop` called more times than `start`');\n\t\t}\n\n\t\tthis.#activeCount--;\n\n\t\tif (this.#activeCount === 0) {\n\t\t\tthis.#realStop();\n\t\t}\n\t}\n\n\t#realStart() {\n\t\t// No known way to make it work reliably on Windows.\n\t\tif (process.platform === 'win32' || !process.stdin.isTTY) {\n\t\t\treturn;\n\t\t}\n\n\t\tprocess.stdin.setRawMode(true);\n\t\tprocess.stdin.on('data', this.#handleInput);\n\t\tprocess.stdin.resume();\n\t}\n\n\t#realStop() {\n\t\tif (!process.stdin.isTTY) {\n\t\t\treturn;\n\t\t}\n\n\t\tprocess.stdin.off('data', this.#handleInput);\n\t\tprocess.stdin.pause();\n\t\tprocess.stdin.setRawMode(false);\n\t}\n\n\t#handleInput(chunk) {\n\t\t// Allow Ctrl+C to gracefully exit.\n\t\tif (chunk[0] === ASCII_ETX_CODE) {\n\t\t\tprocess.emit('SIGINT');\n\t\t}\n\t}\n}\n\nconst stdinDiscarder = new StdinDiscarder();\n\nexport default stdinDiscarder;\n","import process from 'node:process';\nimport chalk from 'chalk';\nimport cliCursor from 'cli-cursor';\nimport cliSpinners from 'cli-spinners';\nimport logSymbols from 'log-symbols';\nimport stripAnsi from 'strip-ansi';\nimport stringWidth from 'string-width';\nimport isInteractive from 'is-interactive';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport stdinDiscarder from 'stdin-discarder';\n\nclass Ora {\n\t#linesToClear = 0;\n\t#isDiscardingStdin = false;\n\t#lineCount = 0;\n\t#frameIndex = -1;\n\t#lastSpinnerFrameTime = 0;\n\t#options;\n\t#spinner;\n\t#stream;\n\t#id;\n\t#initialInterval;\n\t#isEnabled;\n\t#isSilent;\n\t#indent;\n\t#text;\n\t#prefixText;\n\t#suffixText;\n\tcolor;\n\n\tconstructor(options) {\n\t\tif (typeof options === 'string') {\n\t\t\toptions = {\n\t\t\t\ttext: options,\n\t\t\t};\n\t\t}\n\n\t\tthis.#options = {\n\t\t\tcolor: 'cyan',\n\t\t\tstream: process.stderr,\n\t\t\tdiscardStdin: true,\n\t\t\thideCursor: true,\n\t\t\t...options,\n\t\t};\n\n\t\t// Public\n\t\tthis.color = this.#options.color;\n\n\t\t// It's important that these use the public setters.\n\t\tthis.spinner = this.#options.spinner;\n\n\t\tthis.#initialInterval = this.#options.interval;\n\t\tthis.#stream = this.#options.stream;\n\t\tthis.#isEnabled = typeof this.#options.isEnabled === 'boolean' ? this.#options.isEnabled : isInteractive({stream: this.#stream});\n\t\tthis.#isSilent = typeof this.#options.isSilent === 'boolean' ? this.#options.isSilent : false;\n\n\t\t// Set *after* `this.#stream`.\n\t\t// It's important that these use the public setters.\n\t\tthis.text = this.#options.text;\n\t\tthis.prefixText = this.#options.prefixText;\n\t\tthis.suffixText = this.#options.suffixText;\n\t\tthis.indent = this.#options.indent;\n\n\t\tif (process.env.NODE_ENV === 'test') {\n\t\t\tthis._stream = this.#stream;\n\t\t\tthis._isEnabled = this.#isEnabled;\n\n\t\t\tObject.defineProperty(this, '_linesToClear', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#linesToClear;\n\t\t\t\t},\n\t\t\t\tset(newValue) {\n\t\t\t\t\tthis.#linesToClear = newValue;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_frameIndex', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#frameIndex;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_lineCount', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#lineCount;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tget indent() {\n\t\treturn this.#indent;\n\t}\n\n\tset indent(indent = 0) {\n\t\tif (!(indent >= 0 && Number.isInteger(indent))) {\n\t\t\tthrow new Error('The `indent` option must be an integer from 0 and up');\n\t\t}\n\n\t\tthis.#indent = indent;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget interval() {\n\t\treturn this.#initialInterval ?? this.#spinner.interval ?? 100;\n\t}\n\n\tget spinner() {\n\t\treturn this.#spinner;\n\t}\n\n\tset spinner(spinner) {\n\t\tthis.#frameIndex = -1;\n\t\tthis.#initialInterval = undefined;\n\n\t\tif (typeof spinner === 'object') {\n\t\t\tif (spinner.frames === undefined) {\n\t\t\t\tthrow new Error('The given spinner must have a `frames` property');\n\t\t\t}\n\n\t\t\tthis.#spinner = spinner;\n\t\t} else if (!isUnicodeSupported()) {\n\t\t\tthis.#spinner = cliSpinners.line;\n\t\t} else if (spinner === undefined) {\n\t\t\t// Set default spinner\n\t\t\tthis.#spinner = cliSpinners.dots;\n\t\t} else if (spinner !== 'default' && cliSpinners[spinner]) {\n\t\t\tthis.#spinner = cliSpinners[spinner];\n\t\t} else {\n\t\t\tthrow new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);\n\t\t}\n\t}\n\n\tget text() {\n\t\treturn this.#text;\n\t}\n\n\tset text(value = '') {\n\t\tthis.#text = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget prefixText() {\n\t\treturn this.#prefixText;\n\t}\n\n\tset prefixText(value = '') {\n\t\tthis.#prefixText = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget suffixText() {\n\t\treturn this.#suffixText;\n\t}\n\n\tset suffixText(value = '') {\n\t\tthis.#suffixText = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget isSpinning() {\n\t\treturn this.#id !== undefined;\n\t}\n\n\t#getFullPrefixText(prefixText = this.#prefixText, postfix = ' ') {\n\t\tif (typeof prefixText === 'string' && prefixText !== '') {\n\t\t\treturn prefixText + postfix;\n\t\t}\n\n\t\tif (typeof prefixText === 'function') {\n\t\t\treturn prefixText() + postfix;\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#getFullSuffixText(suffixText = this.#suffixText, prefix = ' ') {\n\t\tif (typeof suffixText === 'string' && suffixText !== '') {\n\t\t\treturn prefix + suffixText;\n\t\t}\n\n\t\tif (typeof suffixText === 'function') {\n\t\t\treturn prefix + suffixText();\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#updateLineCount() {\n\t\tconst columns = this.#stream.columns ?? 80;\n\t\tconst fullPrefixText = this.#getFullPrefixText(this.#prefixText, '-');\n\t\tconst fullSuffixText = this.#getFullSuffixText(this.#suffixText, '-');\n\t\tconst fullText = ' '.repeat(this.#indent) + fullPrefixText + '--' + this.#text + '--' + fullSuffixText;\n\n\t\tthis.#lineCount = 0;\n\t\tfor (const line of stripAnsi(fullText).split('\\n')) {\n\t\t\tthis.#lineCount += Math.max(1, Math.ceil(stringWidth(line, {countAnsiEscapeCodes: true}) / columns));\n\t\t}\n\t}\n\n\tget isEnabled() {\n\t\treturn this.#isEnabled && !this.#isSilent;\n\t}\n\n\tset isEnabled(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isEnabled` option must be a boolean');\n\t\t}\n\n\t\tthis.#isEnabled = value;\n\t}\n\n\tget isSilent() {\n\t\treturn this.#isSilent;\n\t}\n\n\tset isSilent(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isSilent` option must be a boolean');\n\t\t}\n\n\t\tthis.#isSilent = value;\n\t}\n\n\tframe() {\n\t\t// Ensure we only update the spinner frame at the wanted interval,\n\t\t// even if the render method is called more often.\n\t\tconst now = Date.now();\n\t\tif (this.#frameIndex === -1 || now - this.#lastSpinnerFrameTime >= this.interval) {\n\t\t\tthis.#frameIndex = ++this.#frameIndex % this.#spinner.frames.length;\n\t\t\tthis.#lastSpinnerFrameTime = now;\n\t\t}\n\n\t\tconst {frames} = this.#spinner;\n\t\tlet frame = frames[this.#frameIndex];\n\n\t\tif (this.color) {\n\t\t\tframe = chalk[this.color](frame);\n\t\t}\n\n\t\tconst fullPrefixText = (typeof this.#prefixText === 'string' && this.#prefixText !== '') ? this.#prefixText + ' ' : '';\n\t\tconst fullText = typeof this.text === 'string' ? ' ' + this.text : '';\n\t\tconst fullSuffixText = (typeof this.#suffixText === 'string' && this.#suffixText !== '') ? ' ' + this.#suffixText : '';\n\n\t\treturn fullPrefixText + frame + fullText + fullSuffixText;\n\t}\n\n\tclear() {\n\t\tif (!this.#isEnabled || !this.#stream.isTTY) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.#stream.cursorTo(0);\n\n\t\tfor (let index = 0; index < this.#linesToClear; index++) {\n\t\t\tif (index > 0) {\n\t\t\t\tthis.#stream.moveCursor(0, -1);\n\t\t\t}\n\n\t\t\tthis.#stream.clearLine(1);\n\t\t}\n\n\t\tif (this.#indent || this.lastIndent !== this.#indent) {\n\t\t\tthis.#stream.cursorTo(this.#indent);\n\t\t}\n\n\t\tthis.lastIndent = this.#indent;\n\t\tthis.#linesToClear = 0;\n\n\t\treturn this;\n\t}\n\n\trender() {\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.clear();\n\t\tthis.#stream.write(this.frame());\n\t\tthis.#linesToClear = this.#lineCount;\n\n\t\treturn this;\n\t}\n\n\tstart(text) {\n\t\tif (text) {\n\t\t\tthis.text = text;\n\t\t}\n\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this.#isEnabled) {\n\t\t\tif (this.text) {\n\t\t\t\tthis.#stream.write(`- ${this.text}\\n`);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.isSpinning) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.hide(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY) {\n\t\t\tthis.#isDiscardingStdin = true;\n\t\t\tstdinDiscarder.start();\n\t\t}\n\n\t\tthis.render();\n\t\tthis.#id = setInterval(this.render.bind(this), this.interval);\n\n\t\treturn this;\n\t}\n\n\tstop() {\n\t\tif (!this.#isEnabled) {\n\t\t\treturn this;\n\t\t}\n\n\t\tclearInterval(this.#id);\n\t\tthis.#id = undefined;\n\t\tthis.#frameIndex = 0;\n\t\tthis.clear();\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.show(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY && this.#isDiscardingStdin) {\n\t\t\tstdinDiscarder.stop();\n\t\t\tthis.#isDiscardingStdin = false;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsucceed(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.success, text});\n\t}\n\n\tfail(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.error, text});\n\t}\n\n\twarn(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.warning, text});\n\t}\n\n\tinfo(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.info, text});\n\t}\n\n\tstopAndPersist(options = {}) {\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst prefixText = options.prefixText ?? this.#prefixText;\n\t\tconst fullPrefixText = this.#getFullPrefixText(prefixText, ' ');\n\n\t\tconst symbolText = options.symbol ?? ' ';\n\n\t\tconst text = options.text ?? this.text;\n\t\tconst separatorText = symbolText ? ' ' : '';\n\t\tconst fullText = (typeof text === 'string') ? separatorText + text : '';\n\n\t\tconst suffixText = options.suffixText ?? this.#suffixText;\n\t\tconst fullSuffixText = this.#getFullSuffixText(suffixText, ' ');\n\n\t\tconst textToWrite = fullPrefixText + symbolText + fullText + fullSuffixText + '\\n';\n\n\t\tthis.stop();\n\t\tthis.#stream.write(textToWrite);\n\n\t\treturn this;\n\t}\n}\n\nexport default function ora(options) {\n\treturn new Ora(options);\n}\n\nexport async function oraPromise(action, options) {\n\tconst actionIsFunction = typeof action === 'function';\n\tconst actionIsPromise = typeof action.then === 'function';\n\n\tif (!actionIsFunction && !actionIsPromise) {\n\t\tthrow new TypeError('Parameter `action` must be a Function or a Promise');\n\t}\n\n\tconst {successText, failText} = typeof options === 'object'\n\t\t? options\n\t\t: {successText: undefined, failText: undefined};\n\n\tconst spinner = ora(options).start();\n\n\ttry {\n\t\tconst promise = actionIsFunction ? action(spinner) : action;\n\t\tconst result = await promise;\n\n\t\tspinner.succeed(\n\t\t\tsuccessText === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (typeof successText === 'string' ? successText : successText(result)),\n\t\t);\n\n\t\treturn result;\n\t} catch (error) {\n\t\tspinner.fail(\n\t\t\tfailText === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (typeof failText === 'string' ? failText : failText(error)),\n\t\t);\n\n\t\tthrow error;\n\t}\n}\n\nexport {default as spinners} from 'cli-spinners';\n","/**\n * When working with AbortSignals, it's common to encounter errors that are a result of the signal being aborted.\n * This utility function helps to ignore those specific errors, allowing the program to continue its execution without being interrupted by them.\n *\n * @example\n * const controller = new AbortController();\n * fetch(URL, { signal: controller.signal }).catch(\n * ignoreAbortErrors(controller.signal) // we don't care if it errored as it was aborted\n * )\n */\nexport function ignoreAbortErrors(signal: AbortSignal) {\n return (err: unknown) => {\n if (signal.aborted) {\n return;\n }\n throw err;\n };\n}\n","import { ignoreAbortErrors } from \"./abort-controller\";\n\n/**\n * Utility function that allows to acquire a resource\n * colocated with its release logic\n *\n * @example\n * using resource = acquireRelease(\n * () => new AbortController(),\n * (c) => c.abort(),\n * );\n */\nexport function acquireRelease<T extends object>(\n fn: () => T,\n release: (t: NoInfer<T>) => void,\n): T & Disposable {\n const value = fn();\n return Object.assign(value, {\n [Symbol.dispose]: () => release(value),\n });\n}\n\n/**\n * Utility function that allows to create a disposable\n * with a custom dispose logic like Golang's `defer`\n * which allows us to avoid `try/finally` blocks.\n */\nexport function defer(fn: () => void) {\n return { [Symbol.dispose]: fn };\n}\n\n/**\n * Creates an AbortController that is also disposable,\n * which aborts when disposed with a given reason.\n */\nexport function createAbortController(reason: string) {\n return acquireRelease(\n () => {\n const controller = new AbortController();\n return {\n abort: (newReason?: string) => controller.abort(newReason ?? reason),\n signal: controller.signal,\n /**\n * When working with AbortSignals, it's common to encounter errors that are a result of the signal being aborted.\n * This utility function helps to ignore those specific errors, allowing the program to continue its execution without being interrupted by them.\n *\n * @example\n * using controller = createAbortController(\"My reason\");\n * fetch(URL, { signal: controller.signal }).catch(\n * controller.ignoreInterruptions // we don't care if it errored as it was aborted\n * )\n */\n ignoreInterruptions: ignoreAbortErrors(controller.signal),\n };\n },\n (c) => c.abort(reason),\n );\n}\n","import * as cmd from \"cmd-ts\";\nimport chalk from \"chalk\";\nimport { output } from \"../util/output\";\nimport { default as open } from \"open\";\nimport ora from \"ora\";\nimport { acquireRelease } from \"../util/disposables\";\nimport { OAuth, pollForToken } from \"@vercel/sandbox/dist/auth/index.js\";\nimport createDebugger from \"debug\";\n\nconst debug = createDebugger(\"sandbox:login\");\n\nexport const login = cmd.command({\n name: \"login\",\n description: \"Log in to the Sandbox CLI\",\n args: {},\n async handler() {\n using spinner = acquireRelease(\n () => ora(\"Creating device authorization request...\").start(),\n (s) => s.stop(),\n );\n\n const oauth = await OAuth();\n const request = await oauth.deviceAuthorizationRequest();\n const { user_code, verification_uri, verification_uri_complete } = request;\n\n spinner.text = \"Waiting for you to authenticate...\";\n\n // If we're in a TTY, we can listen for ENTER keypresses to open the browser\n const subscribeToStdin = process.stdin.isTTY;\n\n using _returnListener = acquireRelease(\n () => {\n const callback = async (char: Buffer) => {\n if (char.toString() === \"\\r\") {\n await open(verification_uri_complete);\n }\n };\n const beforeExit = () => {\n if (spinner.isSpinning) {\n spinner.fail(\"Authentication cancelled.\");\n }\n process.off(\"SIGINT\", beforeExit);\n process.emit(\"SIGINT\");\n };\n if (subscribeToStdin) {\n process.stdin.on(\"data\", callback);\n process.on(\"SIGINT\", beforeExit);\n }\n return () => {\n process.stdin.off(\"data\", callback);\n process.off(\"SIGINT\", beforeExit);\n };\n },\n (unsubscribe) => unsubscribe(),\n );\n\n const verificationLink = output.link(\n verification_uri.replace(\"https://\", \"\"),\n verification_uri_complete,\n );\n\n let text = `Visit ${chalk.bold(verificationLink)} and enter ${chalk.bold(user_code)}`;\n if (subscribeToStdin) {\n text += chalk.grey(\"\\nℹ️ Press [ENTER] to open the browser\");\n }\n\n spinner.text = `Waiting for authentication...\\n${text}`;\n\n let error: Error | undefined;\n for await (const event of pollForToken({ request, oauth })) {\n switch (event._tag) {\n case \"Timeout\":\n debug(\n `Connection timeout. Slowing down, polling every ${event.newInterval / 1000}s...`,\n );\n break;\n case \"SlowDown\":\n debug(\n `Authorization server requests to slow down. Polling every ${event.newInterval / 1000}s...`,\n );\n break;\n case \"Response\":\n debug(\"Device Access Token response:\", await event.response.text());\n break;\n case \"Error\":\n error = event.error;\n break;\n default:\n output.error(\n chalk.yellow(\n [\n `${chalk.bold(\"warn:\")} unexpected polling event ignored.`,\n `├▶ event: ${JSON.stringify(event satisfies never)}`,\n `│ This indicates a version mismatch between CLI and SDK.`,\n `╰▶ ${chalk.bold(\"help:\")} update @vercel/sandbox with \\`npm update @vercel/sandbox\\`.`,\n ` If this persists, report at https://github.com/vercel/vercel/issues`,\n ` with the above event details.`,\n ].join(\"\\n\"),\n ),\n );\n }\n }\n\n if (error) {\n spinner.fail(`${chalk.red(\"error:\")} ${error.message}`);\n process.exitCode = 1;\n } else {\n spinner.succeed(\n `${chalk.cyan(\"Congratulations!\")} You are now signed in.`,\n );\n }\n },\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar get_context_exports = {};\n__export(get_context_exports, {\n SYMBOL_FOR_REQ_CONTEXT: () => SYMBOL_FOR_REQ_CONTEXT,\n getContext: () => getContext\n});\nmodule.exports = __toCommonJS(get_context_exports);\nconst SYMBOL_FOR_REQ_CONTEXT = Symbol.for(\"@vercel/request-context\");\nfunction getContext() {\n const fromSymbol = globalThis;\n return fromSymbol[SYMBOL_FOR_REQ_CONTEXT]?.get?.() ?? {};\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n SYMBOL_FOR_REQ_CONTEXT,\n getContext\n});\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar get_vercel_oidc_token_exports = {};\n__export(get_vercel_oidc_token_exports, {\n getVercelOidcToken: () => getVercelOidcToken,\n getVercelOidcTokenSync: () => getVercelOidcTokenSync\n});\nmodule.exports = __toCommonJS(get_vercel_oidc_token_exports);\nvar import_get_context = require(\"./get-context\");\nvar import_token_error = require(\"./token-error\");\nasync function getVercelOidcToken() {\n let token = \"\";\n let err;\n try {\n token = getVercelOidcTokenSync();\n } catch (error) {\n err = error;\n }\n try {\n const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([\n await import(\"./token-util.js\"),\n await import(\"./token.js\")\n ]);\n if (!token || isExpired(getTokenPayload(token))) {\n await refreshToken();\n token = getVercelOidcTokenSync();\n }\n } catch (error) {\n let message = err instanceof Error ? err.message : \"\";\n if (error instanceof Error) {\n message = `${message}\n${error.message}`;\n }\n if (message) {\n throw new import_token_error.VercelOidcTokenError(message);\n }\n throw error;\n }\n return token;\n}\nfunction getVercelOidcTokenSync() {\n const token = (0, import_get_context.getContext)().headers?.[\"x-vercel-oidc-token\"] ?? process.env.VERCEL_OIDC_TOKEN;\n if (!token) {\n throw new Error(\n `The 'x-vercel-oidc-token' header is missing from the request. Do you have the OIDC option enabled in the Vercel project settings?`\n );\n }\n return token;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n getVercelOidcToken,\n getVercelOidcTokenSync\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar src_exports = {};\n__export(src_exports, {\n getContext: () => import_get_context.getContext,\n getVercelOidcToken: () => import_get_vercel_oidc_token.getVercelOidcToken,\n getVercelOidcTokenSync: () => import_get_vercel_oidc_token.getVercelOidcTokenSync\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_get_vercel_oidc_token = require(\"./get-vercel-oidc-token\");\nvar import_get_context = require(\"./get-context\");\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n getContext,\n getVercelOidcToken,\n getVercelOidcTokenSync\n});\n","import * as cmd from \"cmd-ts\";\nimport { login } from \"../commands/login\";\nimport createDebugger from \"debug\";\nimport chalk from \"chalk\";\nimport {\n getAuth,\n updateAuthConfig,\n isOAuthError,\n OAuth,\n} from \"@vercel/sandbox/dist/auth/index.js\";\nimport { getVercelOidcToken } from \"@vercel/oidc\";\n\nconst debug = createDebugger(\"sandbox:args:auth\");\n\nexport const token = cmd.option({\n long: \"token\",\n description:\n \"A Vercel authentication token. If not provided, will use the token stored in your system from `VERCEL_AUTH_TOKEN` or will start a log in process.\",\n type: {\n ...cmd.string,\n displayName: \"pat_or_oidc\",\n defaultValueIsSerializable: false,\n onMissing: async () => {\n if (process.env.VERCEL_AUTH_TOKEN) {\n return process.env.VERCEL_AUTH_TOKEN;\n }\n\n if (process.env.VERCEL_OIDC_TOKEN) {\n try {\n return await getVercelOidcToken();\n } catch (cause) {\n debug(`Failed to get or refresh OIDC token: ${getMessage(cause)}`);\n console.warn(\n chalk.yellow(\n `${chalk.bold(\"warn:\")} failed to get or refresh OIDC token, using personal token authentication.`,\n ),\n );\n }\n }\n\n let auth = getAuth();\n\n // If there's no auth token, run the login command\n if (!auth) {\n await login.handler({});\n auth = getAuth();\n }\n\n if (auth) {\n const refreshed = await refreshToken(auth);\n if (typeof refreshed === \"object\") {\n auth = refreshed;\n } else if (\n refreshed === \"missing refresh token\" ||\n refreshed === \"invalid refresh token\"\n ) {\n console.warn(\n chalk.yellow(\n `${chalk.bold(\"notice:\")} Your session has expired. Please log in again.`,\n ),\n );\n await login.handler({});\n auth = getAuth();\n }\n }\n\n if (!auth || !auth.token) {\n throw new Error(\n [\n `Failed to retrieve authentication token.`,\n `${chalk.bold(\"hint:\")} Try logging in again with \\`sandbox login\\`.`,\n \"╰▶ Docs: https://vercel.com/docs/sandbox\",\n ].join(\"\\n\"),\n );\n }\n\n return auth.token;\n },\n },\n});\n\nasync function refreshToken(file: NonNullable<ReturnType<typeof getAuth>>) {\n if (!file.expiresAt) return;\n if (file.expiresAt.getTime() > Date.now()) {\n return \"not expired\" as const;\n }\n\n if (!file.refreshToken) {\n debug(`Token expired, yet refresh token unavailable.`);\n return \"missing refresh token\" as const;\n }\n\n debug(`Refreshing token (expired at ${file.expiresAt.toISOString()})`);\n const oauth = await OAuth();\n const newToken = await oauth.refreshToken(file.refreshToken).catch((err) => {\n if (isOAuthError(err)) {\n return null;\n }\n throw err;\n });\n if (!newToken) {\n return \"invalid refresh token\" as const;\n }\n updateAuthConfig({\n expiresAt: new Date(Date.now() + newToken.expires_in * 1000),\n token: newToken.access_token,\n refreshToken: newToken.refresh_token || file.refreshToken,\n });\n const updated = getAuth();\n debug(`Token stored. expires at ${updated?.expiresAt?.toISOString()})`);\n return updated;\n}\n\nfunction getMessage(error: unknown): string {\n if (!(error instanceof Error)) {\n return String(error);\n }\n\n let message = error.message;\n if (error.cause) {\n message += `\\nCaused by: ${getMessage(error.cause)}`;\n }\n\n return message;\n}\n","import { z } from \"zod\";\n\n/**\n * A Zod codec that serializes and deserializes JSON strings.\n */\nexport const jsonCodec = <T extends z.core.$ZodType>(schema: T) =>\n z.codec(z.string(), schema, {\n encode: (value) => JSON.stringify(value, null, 2),\n decode: (jsonString, ctx) => {\n try {\n return JSON.parse(jsonString);\n } catch (err: any) {\n ctx.issues.push({\n code: \"invalid_format\",\n format: \"json\",\n input: jsonString,\n message: err.message,\n });\n return z.NEVER;\n }\n },\n });\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { z } from \"zod/v4\";\nimport { jsonCodec } from \"./zod\";\n\nconst ProjectConfiguration = jsonCodec(\n z.object({\n orgId: z.string(),\n projectId: z.string(),\n }),\n);\n\nexport function readProjectConfiguration(cwd: string) {\n try {\n const pathname = path.join(cwd, \".vercel\", \"project.json\");\n const string = fs.readFileSync(pathname, \"utf8\");\n return ProjectConfiguration.decode(string);\n } catch {\n return null;\n }\n}\n","import { z } from \"zod/v4\";\nimport { readProjectConfiguration } from \"./project-configuration\";\nimport createDebugger from \"debug\";\nimport * as Auth from \"@vercel/sandbox/dist/auth/index.js\";\n\nconst debug = createDebugger(\"sandbox:scope\");\n\nexport async function inferScope({\n token,\n team,\n oidc,\n}: {\n token: string;\n team?: string;\n oidc?: string;\n}): Promise<{ projectId: string; ownerId: string }> {\n const jwt = z.jwt().safeParse(oidc);\n if (jwt.success) {\n debug(\"trying to infer scope from OIDC JWT\");\n const data = await inferFromJwt(jwt.data);\n debug(\"Using scope from OIDC JWT\", data);\n return data;\n }\n\n const projectJson = readProjectConfiguration(process.cwd());\n if (projectJson) {\n debug(\"Using scope from project configuration\", {\n ownerId: projectJson.orgId,\n projectId: projectJson.projectId,\n });\n return { ownerId: projectJson.orgId, projectId: projectJson.projectId };\n }\n\n debug(\"trying to infer scope from API token\", { token, team });\n const fromToken = await inferFromToken(token, team);\n debug(\"Using scope from API token\", fromToken);\n return fromToken;\n}\n\nconst JwtSchema = z\n .object({\n project_id: z.string(),\n owner_id: z.string(),\n })\n .transform((data) => {\n return { projectId: data.project_id, ownerId: data.owner_id };\n });\n\nasync function inferFromJwt(jwt: string) {\n const body = JSON.parse(Buffer.from(jwt.split(\".\")[1], \"base64\").toString());\n return { _tag: \"OIDC\" as const, ...JwtSchema.parse(body) };\n}\n\nasync function inferFromToken(token: string, requestedTeam?: string) {\n const { teamId, projectId } = await Auth.inferScope({\n token,\n teamId: requestedTeam,\n });\n return { ownerId: teamId, projectId };\n}\n","import { token } from \"./auth\";\nimport * as cmd from \"cmd-ts\";\nimport type { ArgParser } from \"cmd-ts/dist/esm/argparser\";\nimport { inferScope } from \"../util/infer-scope\";\nimport type { ProvidesHelp } from \"cmd-ts/dist/esm/helpdoc\";\nimport chalk from \"chalk\";\n\nconst project = cmd.option({\n long: \"project\",\n type: { ...cmd.optional(cmd.string), displayName: \"my-project\" },\n description:\n \"The project name or ID to associate with the command. Can be inferred from VERCEL_OIDC_TOKEN.\",\n});\n\n/** Parser for the `--team` option. */\nconst teamParser = cmd.option({\n long: \"team\",\n type: { ...cmd.optional(cmd.string), displayName: \"my-team\" },\n});\n/** Parser for the `--scope` option. */\nconst scopeParser = cmd.option({\n long: \"scope\",\n type: { ...cmd.optional(cmd.string), displayName: \"my-team\" },\n description:\n \"The scope/team to associate with the command. Can be inferred from VERCEL_OIDC_TOKEN. [alias: --team]\",\n});\n\n/** Parser for the `--scope` option that falls back to `--team` if not provided. */\nconst team: typeof scopeParser = {\n ...scopeParser,\n register(opts) {\n scopeParser.register?.(opts);\n teamParser.register?.(opts);\n },\n async parse(context) {\n const [scope, team] = await Promise.all([\n scopeParser.parse(context),\n teamParser.parse(context),\n ]);\n\n if (scope._tag !== \"error\" && typeof scope.value === \"undefined\") {\n if (team._tag !== \"error\" && team.value) {\n return team;\n } else if (team._tag === \"error\") {\n return team;\n }\n }\n\n return scope;\n },\n};\n\n/**\n * Combining multiple argument parsing into a single \"scope\" argument\n * that includes token, project, and team.\n * If project or team are not provided, they will be inferred.\n */\nexport const scope: ArgParser<{\n token: string;\n project: string;\n team: string;\n}> &\n ProvidesHelp = {\n register(ctx) {\n token.register?.(ctx);\n project.register?.(ctx);\n team.register?.(ctx);\n },\n async parse(context) {\n const t = await token.parse(context);\n if (t._tag === \"error\") {\n return t;\n }\n\n // We want to find all the arguments that `--project` or `--team` are\n // visiting, so the errors will be nicer.\n const visited = new Set(context.visitedNodes);\n let [projectId, teamId] = await Promise.all([\n project.parse(context),\n team.parse(context),\n ]);\n const nodes = Array.from(context.visitedNodes).filter(\n (x) => !visited.has(x),\n );\n\n if (projectId._tag === \"error\") {\n return projectId;\n }\n\n if (teamId._tag === \"error\") {\n return teamId;\n }\n\n if (\n typeof projectId.value === \"undefined\" ||\n typeof teamId.value === \"undefined\"\n ) {\n try {\n const scope = await inferScope({\n token: t.value,\n team: teamId.value,\n oidc: process.env.VERCEL_OIDC_TOKEN,\n });\n projectId.value ??= scope.projectId;\n teamId.value ??= scope.ownerId;\n } catch (err) {\n return {\n _tag: \"error\",\n error: {\n errors: [\n {\n nodes,\n message: [\n `Could not determine team/project scope: ${(err as Error).message}.`,\n `${chalk.bold(\"hint:\")} Specify explicitly with --scope TEAM_SLUG --project PROJECT_NAME, or set VERCEL_OIDC_TOKEN.`,\n \"╰▶ Docs: https://vercel.com/docs/sandbox\",\n ].join(\"\\n\"),\n },\n ],\n },\n };\n }\n }\n\n return {\n _tag: \"ok\",\n value: {\n token: t.value,\n project: projectId.value,\n team: teamId.value,\n },\n };\n },\n helpTopics() {\n return [\n ...token.helpTopics(),\n ...project.helpTopics(),\n ...team.helpTopics(),\n ];\n },\n};\n","{\n \"name\": \"sandbox\",\n \"description\": \"Command line interface for Vercel Sandbox\",\n \"version\": \"2.0.0\",\n \"scripts\": {\n \"clean\": \"rm -rf node_modules dist\",\n \"sandbox\": \"ts-node ./src/sandbox.ts\",\n \"build\": \"tsdown\",\n \"vercel-build\": \"ts-node ./scripts/create-preview-deployment-tgz.ts\",\n \"test\": \"vitest\",\n \"example-whoami\": \"ts-node ./src/example-whoami.ts\",\n \"example-next\": \"ts-node ./src/example-next.ts\",\n \"example-flask\": \"ts-node ./src/example-flask.ts\",\n \"typecheck\": \"tsc --noEmit\",\n \"generate-docs\": \"ts-node ./scripts/print-usage.ts > docs/index.md\",\n \"version:bump\": \"pnpm generate-docs\"\n },\n \"keywords\": [\n \"vercel\",\n \"sandbox\",\n \"cli\"\n ],\n \"main\": \"./dist/index.mjs\",\n \"bin\": {\n \"sandbox\": \"./bin/sandbox.mjs\",\n \"sbx\": \"./bin/sandbox.mjs\"\n },\n \"files\": [\n \"bin\",\n \"README.md\",\n \"dist\"\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vercel/sandbox\": \"workspace:*\",\n \"debug\": \"^4.4.1\",\n \"zod\": \"^4.1.1\"\n },\n \"devDependencies\": {\n \"@types/debug\": \"^4.1.12\",\n \"@types/ms\": \"^2.1.0\",\n \"@types/node\": \"^22.15.12\",\n \"@vercel/oidc\": \"^3.1.0\",\n \"@vercel/pty-tunnel\": \"workspace:*\",\n \"@vercel/pty-tunnel-server\": \"workspace:*\",\n \"@vercel/sandbox\": \"workspace:*\",\n \"chalk\": \"^5.6.0\",\n \"cmd-ts\": \"0.14.3\",\n \"date-fns\": \"^4.1.0\",\n \"dotenv-flow\": \"^4.1.0\",\n \"listr2\": \"^9.0.2\",\n \"ms\": \"^2.1.3\",\n \"open\": \"^10.2.0\",\n \"ora\": \"^8.2.0\",\n \"tsdown\": \"catalog:\",\n \"vitest\": \"catalog:\",\n \"xdg-app-paths\": \"5.1.0\"\n }\n}\n","import chalk from \"chalk\";\n\nexport class StyledError extends Error {\n name = \"StyledError\";\n constructor(message: string, cause?: unknown) {\n super(chalk.red(message), { cause });\n }\n}\n","import { Sandbox, APIError } from \"@vercel/sandbox\";\nimport { version } from \"./pkg\";\nimport chalk from \"chalk\";\nimport { tmpdir } from \"node:os\";\nimport Path from \"node:path\";\nimport { writeFile } from \"node:fs/promises\";\nimport { StyledError } from \"./error\";\n\n/**\n * A {@link Sandbox} wrapper that adds user-agent headers and error handling.\n */\nexport const sandboxClient: Pick<typeof Sandbox, \"get\" | \"list\" | \"create\"> = {\n get: (params) =>\n withErrorHandling(Sandbox.get({ fetch: fetchWithUserAgent, ...params })),\n create: (params) =>\n withErrorHandling(Sandbox.create({ fetch: fetchWithUserAgent, ...params })),\n list: (params) =>\n withErrorHandling(\n Sandbox.list({ fetch: fetchWithUserAgent, ...params } as typeof params),\n ),\n};\n\nconst fetchWithUserAgent: typeof globalThis.fetch = (input, init) => {\n const headers = new Headers(\n init?.headers ??\n (input && typeof input === \"object\" && \"headers\" in input\n ? input?.headers\n : {}),\n );\n let agent = `vercel/sandbox-cli/${version}`;\n\n const existingAgent = headers.get(\"user-agent\");\n if (existingAgent) {\n agent += ` ${existingAgent}`;\n }\n\n headers.set(\"user-agent\", agent);\n\n return fetch(input, { ...init, headers });\n};\n\nasync function withErrorHandling<T>(promise: Promise<T>) {\n try {\n return await promise;\n } catch (error) {\n if (error instanceof APIError) {\n return await handleApiError(error);\n }\n throw error;\n }\n}\n\nasync function handleApiError(error: APIError<unknown>): Promise<never> {\n const tmpPath = await writeResponseToTemp(error);\n const status = error.response.status;\n const message = getErrorMessage(status);\n throw new StyledError(\n [\n message,\n `├▶ requested url: ${error.response.url}`,\n `├▶ status code: ${status} ${error.response.statusText}`,\n `╰▶ ${chalk.bold(\"hint:\")} the full response buffer is stored in ${chalk.italic(tmpPath)}`,\n ].join(\"\\n\"),\n error,\n );\n}\n\nfunction getErrorMessage(status: number): string {\n if (status === 401 || status === 403) {\n return \"Sandbox API request failed due to authentication. Check your token or run `sandbox login`.\";\n }\n if (status === 404) {\n return \"Sandbox API request failed: resource not found.\";\n }\n if (status >= 500) {\n return \"Sandbox API responded with a server error. Please try again.\";\n }\n return \"Sandbox API request failed.\";\n}\n\nasync function writeResponseToTemp({\n response,\n text,\n}: APIError<unknown>): Promise<string> {\n const unique = [process.pid, process.hrtime.bigint()]\n .map((x) => x.toString(36))\n .join(\"\");\n const tmpPath = Path.join(tmpdir(), `sandbox-cli-response-${unique}.http`);\n const buffers = [] as Buffer[];\n buffers.push(Buffer.from(`${response.url}\\r\\n`));\n buffers.push(Buffer.from(`${response.status} ${response.statusText}\\r\\n`));\n for (const [key, value] of response.headers) {\n buffers.push(Buffer.from(`${key}: ${value}\\r\\n`));\n }\n buffers.push(Buffer.from(`\\r\\n`));\n if (text) {\n buffers.push(Buffer.from(text));\n }\n await writeFile(tmpPath, Buffer.concat(buffers));\n return tmpPath;\n}\n","import * as cmd from \"cmd-ts\";\nimport { runtime } from \"../args/runtime\";\nimport ms from \"ms\";\nimport { timeout } from \"../args/timeout\";\nimport chalk from \"chalk\";\nimport { scope } from \"../args/scope\";\nimport { sandboxClient } from \"../client\";\n\nexport const args = {\n scope,\n runtime,\n timeout,\n ports: cmd.multioption({\n long: \"publish-port\",\n short: \"p\",\n description: \"Publish sandbox port(s) to DOMAIN.vercel.run\",\n type: cmd.array(\n cmd.extendType(cmd.number, {\n displayName: \"PORT\",\n async from(number) {\n if (number < 1024 || number > 65535) {\n throw new Error(\n [\n `Invalid port: ${number}.`,\n `${chalk.bold(\"hint:\")} Ports must be between 1024-65535 (privileged ports 0-1023 are reserved).`,\n \"╰▶ Examples: 3000, 8080, 8443\",\n ].join(\"\\n\"),\n );\n }\n return number;\n },\n }),\n ),\n }),\n silent: cmd.flag({\n long: \"silent\",\n description: \"Don't write sandbox ID to stdout\",\n }),\n} as const;\n\nexport const create = cmd.command({\n name: \"create\",\n description: \"Create a sandbox in the specified account and project.\",\n args,\n async handler({ ports, scope, runtime, timeout, silent }) {\n const sandbox = await sandboxClient.create({\n teamId: scope.team,\n projectId: scope.project,\n token: scope.token,\n ports,\n runtime,\n timeout: ms(timeout),\n __interactive: true,\n });\n\n if (!silent) {\n process.stderr.write(\"✅ Sandbox \");\n process.stdout.write(chalk.cyan(sandbox.sandboxId));\n process.stderr.write(\" created.\\n\");\n }\n\n if (!sandbox.interactivePort) {\n throw new Error(\n [\n `Sandbox created but interactive port is missing.`,\n `${chalk.bold(\"hint:\")} This is an internal error. Please try again.`,\n \"╰▶ Report this issue: https://github.com/vercel/sandbox-sdk/issues\",\n ].join(\"\\n\"),\n );\n }\n\n const routes = sandbox.routes.filter(\n (x) => x.port !== sandbox.interactivePort,\n );\n\n if (routes.length) {\n console.log();\n console.log(chalk.bold(\"Mapped ports:\"));\n for (const route of routes) {\n console.log(` • ${route.port} -> ${route.url}`);\n }\n }\n\n return sandbox;\n },\n});\n","import * as cmd from \"cmd-ts\";\nimport chalk from \"chalk\";\n\nexport const sandboxId = cmd.extendType(cmd.string, {\n displayName: \"sandbox_id\",\n description: \"The ID of the sandbox to execute the command in\",\n async from(s) {\n if (!s.startsWith(\"sbx_\")) {\n throw new Error(\n [\n `Malformed sandbox ID: \"${s}\".`,\n `${chalk.bold(\"hint:\")} Sandbox IDs must start with 'sbx_' (e.g., sbx_abc123def456).`,\n \"╰▶ run `sandbox list` to see available sandboxes.\",\n ].join(\"\\n\"),\n );\n }\n\n return s;\n },\n});\n","'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n","'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n","import createWebSocketStream from './lib/stream.js';\nimport Receiver from './lib/receiver.js';\nimport Sender from './lib/sender.js';\nimport WebSocket from './lib/websocket.js';\nimport WebSocketServer from './lib/websocket-server.js';\n\nexport { createWebSocketStream, Receiver, Sender, WebSocket, WebSocketServer };\nexport default WebSocket;\n","import { createRequire } from \"node:module\";\nimport readline from \"node:readline\";\nimport { WebSocket } from \"ws\";\n\n//#region rolldown:runtime\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __commonJS = (cb, mod) => function() {\n\treturn mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __require = /* @__PURE__ */ createRequire(import.meta.url);\n\n//#endregion\n//#region src/capture-stdin.ts\nfunction captureStdin({ redirectTo }) {\n\treadline.emitKeypressEvents(process.stdin);\n\tprocess.stdin.setRawMode(true);\n\tprocess.stdin.resume();\n\tprocess.on(\"exit\", () => {\n\t\tprocess.stdin.setRawMode(false);\n\t});\n\tprocess.stdin.on(\"data\", (chunk) => {\n\t\ttry {\n\t\t\tredirectTo.sendMessage({\n\t\t\t\ttype: \"message\",\n\t\t\t\tmessage: String(chunk)\n\t\t\t});\n\t\t} catch {}\n\t});\n\treturn () => {\n\t\tprocess.stdin.setRawMode(false);\n\t\tprocess.stdin.pause();\n\t\tprocess.stdin.end();\n\t};\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/lib/parser.js\nvar require_parser = /* @__PURE__ */ __commonJS({ \"../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/lib/parser.js\": ((exports, module) => {\n\tvar Transform$1 = __require(\"stream\").Transform;\n\tfunction Parser$1(options) {\n\t\tif (!(this instanceof Parser$1)) throw new TypeError(\"Cannot call a class as a function\");\n\t\toptions = options || {};\n\t\tTransform$1.call(this, { objectMode: true });\n\t\tthis._memory = \"\";\n\t\tthis._emitInvalidLines = options.emitInvalidLines || false;\n\t}\n\tParser$1.prototype = Object.create(Transform$1.prototype);\n\tParser$1.prototype._handleLines = function(lines, cb) {\n\t\tfor (var i = 0; i < lines.length; i++) {\n\t\t\tif (lines[i] === \"\") continue;\n\t\t\tvar err = null;\n\t\t\tvar json = null;\n\t\t\ttry {\n\t\t\t\tjson = JSON.parse(lines[i]);\n\t\t\t} catch (_err) {\n\t\t\t\t_err.source = lines[i];\n\t\t\t\terr = _err;\n\t\t\t}\n\t\t\tif (err) if (this._emitInvalidLines) this.emit(\"invalid-line\", err);\n\t\t\telse return cb(err);\n\t\t\telse this.push(json);\n\t\t}\n\t\tcb(null);\n\t};\n\tParser$1.prototype._transform = function(chunk, encoding, cb) {\n\t\tvar lines = (this._memory + chunk.toString()).split(\"\\n\");\n\t\tthis._memory = lines.pop();\n\t\tthis._handleLines(lines, cb);\n\t};\n\tParser$1.prototype._flush = function(cb) {\n\t\tif (!this._memory) return cb(null);\n\t\tvar line = this._memory;\n\t\tthis._memory = \"\";\n\t\tthis._handleLines([line], cb);\n\t};\n\tmodule.exports = Parser$1;\n}) });\n\n//#endregion\n//#region ../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/lib/stringifier.js\nvar require_stringifier = /* @__PURE__ */ __commonJS({ \"../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/lib/stringifier.js\": ((exports, module) => {\n\tvar Transform = __require(\"stream\").Transform;\n\tfunction Stringifier$1() {\n\t\tif (!(this instanceof Stringifier$1)) throw new TypeError(\"Cannot call a class as a function\");\n\t\tTransform.call(this, { objectMode: true });\n\t}\n\tStringifier$1.prototype = Object.create(Transform.prototype);\n\tStringifier$1.prototype._transform = function(data, _, cb) {\n\t\tvar value;\n\t\ttry {\n\t\t\tvalue = JSON.stringify(data);\n\t\t} catch (err) {\n\t\t\terr.source = data;\n\t\t\treturn cb(err);\n\t\t}\n\t\tcb(null, value + \"\\n\");\n\t};\n\tmodule.exports = Stringifier$1;\n}) });\n\n//#endregion\n//#region ../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/index.js\nvar require_jsonlines = /* @__PURE__ */ __commonJS({ \"../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/index.js\": ((exports) => {\n\tvar Parser = require_parser();\n\tvar Stringifier = require_stringifier();\n\texports.parse = function parse$1(options) {\n\t\treturn new Parser(options);\n\t};\n}) });\n\n//#endregion\n//#region src/messages.ts\nvar import_jsonlines = require_jsonlines();\nfunction serialize(msg) {\n\tswitch (msg.type) {\n\t\tcase \"message\": {\n\t\t\tconst messageBuf = Buffer.from(msg.message, \"utf-8\");\n\t\t\tconst buf = Buffer.alloc(1 + messageBuf.length);\n\t\t\tbuf.writeUInt8(0, 0);\n\t\t\tmessageBuf.copy(buf, 1);\n\t\t\treturn buf;\n\t\t}\n\t\tcase \"resize\": {\n\t\t\tconst buf = Buffer.alloc(5);\n\t\t\tbuf.writeUInt8(1, 0);\n\t\t\tbuf.writeUInt16BE(msg.cols, 1);\n\t\t\tbuf.writeUInt16BE(msg.rows, 3);\n\t\t\treturn buf;\n\t\t}\n\t\tcase \"ready\": {\n\t\t\tconst buf = Buffer.alloc(1);\n\t\t\tbuf.writeUInt8(2, 0);\n\t\t\treturn buf;\n\t\t}\n\t}\n}\n\n//#endregion\n//#region src/websocket.ts\nasync function readConnectionInfo(stream) {\n\ttry {\n\t\tfor await (const msg of stream) if (msg && typeof msg.port === \"number\" && typeof msg.token === \"string\" && typeof msg.processId === \"number\" && typeof msg.serverProcessId === \"number\") return msg;\n\t\tthrow new Error(\"Did not receive port and token from server\");\n\t} finally {\n\t\tstream.end();\n\t\tstream.destroy();\n\t}\n}\nfunction createListener() {\n\tconst controlFd = (0, import_jsonlines.parse)();\n\treturn {\n\t\tstdoutStream: controlFd,\n\t\tconnection: (async () => {\n\t\t\tconst info = await readConnectionInfo(controlFd);\n\t\t\tconst qs = new URLSearchParams({\n\t\t\t\tprocessId: String(info.processId),\n\t\t\t\ttoken: info.token\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tport: info.port,\n\t\t\t\ttoken: info.token,\n\t\t\t\tprocessId: info.processId,\n\t\t\t\tserverProcessId: info.serverProcessId,\n\t\t\t\tcreateClient(origin) {\n\t\t\t\t\treturn new ListenerSocket(`${origin}/ws/client?${qs}`);\n\t\t\t\t}\n\t\t\t};\n\t\t})()\n\t};\n}\n/**\n* A typed WebSocket that can send and receive pty-tunnel messages.\n*/\nvar ListenerSocket = class extends WebSocket {\n\tasync waitForOpen() {\n\t\tawait waitForOpen(this);\n\t\treturn this;\n\t}\n\tsendMessage(message) {\n\t\treturn this.send(serialize(message));\n\t}\n};\nasync function waitForOpen(ws) {\n\tlet release;\n\tawait new Promise((resolve, reject) => {\n\t\tws.addEventListener(\"open\", resolve, { once: true });\n\t\tws.addEventListener(\"error\", reject, { once: true });\n\t\tws.addEventListener(\"close\", reject, { once: true });\n\t\trelease = () => {\n\t\t\tws.removeEventListener(\"open\", resolve);\n\t\t\tws.removeEventListener(\"error\", reject);\n\t\t\tws.removeEventListener(\"close\", reject);\n\t\t};\n\t});\n\trelease?.();\n}\n\n//#endregion\nexport { captureStdin, createListener };","import chalk from \"chalk\";\n\nexport function printCommand(sandbox: string, command: string, args: string[]) {\n return chalk.gray(chalk.dim(`${sandbox} $ `) + [command, ...args].join(\" \"));\n}\n","import type { Sandbox } from \"@vercel/sandbox\";\nimport ms from \"ms\";\nimport createDebugger from \"debug\";\nimport { setTimeout } from \"node:timers/promises\";\n\nconst debug = createDebugger(\"sandbox:timeout\");\n\nconst BUFFER = ms(\"10 seconds\");\n\nexport async function extendSandboxTimeoutPeriodically(\n sandbox: Sandbox,\n signal: AbortSignal,\n) {\n const nextTick = sandbox.createdAt.getTime() + sandbox.timeout;\n debug(`next tick: ${new Date(nextTick).toISOString()}`);\n\n while (!signal.aborted) {\n const timeout =\n sandbox.createdAt.getTime() + sandbox.timeout - Date.now() - BUFFER;\n if (timeout > 2000) {\n debug(`sleeping for ${timeout}ms until next timeout extension`);\n await setTimeout(timeout, null, { signal });\n }\n await sandbox.extendTimeout(ms(\"5 minutes\"));\n const nextTick = sandbox.createdAt.getTime() + sandbox.timeout;\n debug(\n `extended sandbox timeout by 5 minutes. next tick: ${new Date(nextTick).toISOString()}`,\n );\n }\n}\n","import { Command, Sandbox } from \"@vercel/sandbox\";\nimport {\n captureStdin,\n createListener,\n type Listener,\n} from \"@vercel/pty-tunnel\";\nimport createDebugger from \"debug\";\nimport { printCommand } from \"../util/print-command\";\nimport ora, { Ora, spinners } from \"ora\";\nimport { PassThrough } from \"node:stream\";\nimport fs from \"node:fs/promises\";\nimport { randomUUID } from \"node:crypto\";\nimport {\n acquireRelease,\n createAbortController,\n defer,\n} from \"../util/disposables\";\nimport { createWriteStream } from \"node:fs\";\nimport chalk from \"chalk\";\nimport assert from \"node:assert\";\nimport { extendSandboxTimeoutPeriodically } from \"./extend-sandbox-timeout\";\n\nconst debug = createDebugger(\"sandbox:interactive-shell\");\nconst debugPty = createDebugger(\"sandbox:interactive-shell:pty\");\n\n/**\n * A default TERM value to use if none is set in the environment.\n * That way, applications like `vim` and `nano` will work properly.\n */\nconst TERM = \"xterm-256color\";\n\nconst neverResolvedPromise = new Promise<void>(() => {});\n\n/**\n * Prepares the sandbox environment for interactive shell by installing required dependencies\n * and copying the TTY server script.\n *\n * @param sandbox - The sandbox instance to prepare\n * @returns Promise that resolves when environment is ready\n */\nasync function setupSandboxEnvironment(\n sandbox: Sandbox,\n ora: Ora,\n): Promise<void> {\n using installed = createAbortController(`Finished installation`);\n\n const waitUntilInstalled = checkIfServerInstalled(\n sandbox,\n installed.signal,\n ).then(\n (installed) => (installed ? void 0 : neverResolvedPromise),\n (err) => {\n debug(\"Error checking if server is installed:\", err);\n },\n );\n\n await Promise.race([\n installServerBinary(sandbox, ora, installed.signal),\n waitUntilInstalled.then(() => debug(\"Server binary already installed\")),\n ]).catch(installed.ignoreInterruptions);\n}\n\nasync function checkIfServerInstalled(sandbox: Sandbox, signal: AbortSignal) {\n const exists = await sandbox.runCommand({\n cmd: \"command\",\n args: [\"-v\", SERVER_BIN_NAME],\n signal,\n });\n return exists.exitCode === 0;\n}\n\nasync function installServerBinary(\n sandbox: Sandbox,\n ora: Ora,\n signal: AbortSignal,\n) {\n let firstSent = false;\n const createPassthrough = () => {\n const passthrough = new PassThrough();\n passthrough.on(\"data\", (chunk) => {\n if (!firstSent) {\n firstSent = true;\n ora.text += `\\n`;\n }\n ora.text += chunk.toString();\n });\n return passthrough;\n };\n\n const pathname = `/tmp/vc-pty-tunnel-server-${randomUUID()}`;\n\n // Upload the x86_64 binary to the sandbox\n const currentPath = import.meta.url;\n await sandbox.writeFiles(\n [\n {\n path: pathname,\n content: await fs.readFile(\n process.env.VERCEL_DEV !== \"0\"\n ? new URL(\"../../dist/pty-server-linux-x86_64\", currentPath)\n : new URL(\"./pty-server-linux-x86_64\", currentPath),\n ),\n },\n ],\n { signal },\n );\n\n // Move the binary to /usr/local/bin and make it executable\n await sandbox.runCommand({\n cmd: \"bash\",\n args: [\n \"-c\",\n `mv \"${pathname}\" /usr/local/bin/${SERVER_BIN_NAME}; chmod +x /usr/local/bin/${SERVER_BIN_NAME}`,\n ],\n sudo: true,\n signal,\n stdout: createPassthrough(),\n stderr: createPassthrough(),\n });\n}\n\nconst SERVER_BIN_NAME = \"vc-interactive-server\";\nconst INTERACTIVE_BIN_OUTPUT = process.env.VERCEL_CLI_INTERACTIVE_BIN_OUTPUT;\n\n/**\n * Starts the TTY server command inside the sandbox with proper WebRTC configuration.\n */\nasync function startServerCommand(\n sandbox: Sandbox,\n _listener: Listener,\n execution: [string, ...string[]],\n sudo: boolean,\n env: Record<string, string>,\n cwd?: string,\n): Promise<Command> {\n return sandbox.runCommand({\n cmd: SERVER_BIN_NAME,\n args: [\n `--port=${sandbox.interactivePort}`,\n `--mode=client`,\n ...(debugPty.enabled ? [`--debug`] : []),\n `--cols=${process.stdout.columns}`,\n `--rows=${process.stdout.rows}`,\n ...execution,\n ],\n sudo,\n cwd,\n env: {\n TERM,\n PS1: `▲ \\\\[\\\\e[2m\\\\]\\\\w/\\\\[\\\\e[0m\\\\] `,\n ...env,\n },\n detached: true,\n });\n}\n\n/**\n * Starts an interactive shell session with a sandbox using WebRTC for real-time communication.\n *\n * @param options - Configuration including sandbox, command to execute, and sudo flag\n * @returns Object with wait promise and cleanup function\n */\nexport async function startInteractiveShell(options: {\n sandbox: Sandbox;\n cwd?: string;\n execution: [string, ...string[]];\n envVars: Record<string, string>;\n sudo: boolean;\n skipExtendingTimeout: boolean;\n}) {\n const listener = createListener();\n\n let command: Command | null = null;\n\n let cleaned = false;\n const cleanup = () => {\n if (cleaned) return;\n process.stdin.removeAllListeners();\n listener.stdoutStream.end();\n try {\n process.stdin.destroy();\n } catch {\n // Ignore errors during stdin destruction\n }\n process.stdin.setRawMode(false);\n command?.kill().catch(() => {});\n cleaned = true;\n };\n\n process.once(\"beforeExit\", cleanup);\n using _cleanup = defer(cleanup);\n\n const spinner = { ...spinners.dots };\n spinner.frames = spinner.frames.map(\n (frame) => chalk.gray.dim(`${options.sandbox.sandboxId} `) + frame,\n );\n using progress = acquireRelease(\n () => ora({ discardStdin: false, spinner }).start(),\n (s) => s.clear(),\n );\n\n progress.text = \"Setting up sandbox environment\";\n await setupSandboxEnvironment(options.sandbox, progress);\n\n progress.text = \"Booting up interactive listener...\";\n command = await startServerCommand(\n options.sandbox,\n listener,\n options.execution,\n options.sudo,\n options.envVars,\n options.cwd,\n );\n\n using waitForProcess = createAbortController(\n \"Connection established successfully\",\n );\n listener.connection.then(() => {\n waitForProcess.abort();\n });\n connect(command, listener, waitForProcess.signal).catch(\n waitForProcess.ignoreInterruptions,\n );\n\n await Promise.all([\n throwIfCommandPrematurelyExited(command, waitForProcess.signal),\n attach({\n sandbox: options.sandbox,\n progress,\n listener,\n skipExtendingTimeout: options.skipExtendingTimeout,\n printCommand: () =>\n console.error(\n printCommand(\n options.sandbox.sandboxId,\n options.execution[0],\n options.execution.slice(1),\n ),\n ),\n }),\n ]).catch(waitForProcess.ignoreInterruptions);\n}\n\nasync function throwIfCommandPrematurelyExited(\n command: Command,\n signal: AbortSignal,\n) {\n try {\n const { exitCode } = await command.wait({ signal });\n throw new Error(\n [\n `Interactive shell failed to start (exit code: ${exitCode}).`,\n `${chalk.bold(\"hint:\")} The sandbox may have timed out or encountered an error.`,\n \"╰▶ Check sandbox status with `sandbox list` or view logs for details.\",\n ].join(\"\\n\"),\n );\n } catch (err) {\n if (signal.aborted) {\n return;\n }\n throw err;\n }\n}\n\nasync function attach({\n progress,\n listener,\n printCommand,\n sandbox,\n skipExtendingTimeout,\n}: {\n sandbox: Sandbox;\n progress: Ora;\n listener: Listener;\n printCommand: () => void;\n skipExtendingTimeout: boolean;\n}) {\n progress.text = \"Waiting for connection...\";\n const details = await listener.connection;\n\n assert(sandbox.interactivePort, \"Sandbox interactive port is not defined\");\n const url =\n `wss://${sandbox.domain(sandbox.interactivePort).replace(/^https?:\\/\\//, \"\")}` as const;\n debug(\"Connecting to WebSocket URL:\", url);\n\n const stdoutPipe = messageReader(process.stdout);\n const client = details.createClient(url);\n client.addEventListener(\"message\", async ({ data }) => {\n stdoutPipe.next(data);\n });\n\n await client.waitForOpen();\n progress.stop();\n\n using extensionController = createAbortController(\"stopped extensions\");\n if (!skipExtendingTimeout) {\n extendSandboxTimeoutPeriodically(sandbox, extensionController.signal).catch(\n extensionController.ignoreInterruptions,\n );\n }\n\n client.sendMessage({ type: \"ready\" });\n client.sendMessage({\n type: \"resize\",\n cols: process.stdout.columns,\n rows: process.stdout.rows,\n });\n\n process.on(\"SIGWINCH\", () => {\n client.sendMessage({\n type: \"resize\",\n cols: process.stdout.columns,\n rows: process.stdout.rows,\n });\n });\n process.stdin.removeAllListeners();\n captureStdin({ redirectTo: client });\n\n printCommand();\n\n await new Promise((resolve, reject) => {\n client.addEventListener(\"close\", (a) => resolve(a), { once: true });\n client.addEventListener(\"error\", (err) => reject(err), { once: true });\n });\n\n extensionController.abort(\"client disconnected\");\n client.close();\n\n console.error(\n chalk.dim(`\\n╰▶ connection to ▲ ${sandbox.sandboxId} closed.`),\n );\n}\n\n/**\n * Async generator to allow easy coordination of parsing the events from the {@link Listener}\n *\n * @example\n * const pipe = messageReader(process.stdout);\n * pipe.next(new Blob([\"Hello, World!\"]));\n */\nasync function* messageReader(\n stream: typeof process.stdout,\n): AsyncGenerator<\n void,\n never,\n Blob | ArrayBuffer | Buffer | string | Buffer[]\n> {\n while (true) {\n const value = yield;\n if (!value) continue;\n\n let output: string | Buffer;\n if (typeof value === \"string\" || Buffer.isBuffer(value)) {\n output = value;\n } else if (\n typeof value === \"object\" &&\n \"arrayBuffer\" in value &&\n typeof value.arrayBuffer === \"function\"\n ) {\n output = Buffer.from(await value.arrayBuffer());\n } else if (value instanceof Blob) {\n output = Buffer.from(await value.arrayBuffer());\n } else if (Array.isArray(value)) {\n output = Buffer.concat(value);\n } else {\n output = Buffer.from(value);\n }\n stream.write(output);\n }\n}\n\n/**\n * Connects the command's logs to the listener's stdout and stderr streams.\n */\nasync function connect(\n command: Command,\n listener: Listener,\n signal: AbortSignal,\n) {\n using logs = command.logs({ signal });\n using stderrStream = getStderrStream();\n for await (const chunk of logs) {\n if (chunk.stream === \"stdout\") {\n listener.stdoutStream.write(chunk.data);\n } else {\n stderrStream.write(chunk.data);\n }\n }\n}\n\nfunction getStderrStream() {\n return acquireRelease(\n () => {\n if (INTERACTIVE_BIN_OUTPUT) {\n const writeStream = createWriteStream(INTERACTIVE_BIN_OUTPUT);\n return {\n write(chunk: any) {\n writeStream.write(chunk);\n },\n close() {\n writeStream.close();\n },\n };\n }\n if (debugPty.enabled) {\n return {\n write(chunk: any) {\n process.stderr.write(chunk);\n },\n };\n }\n return { write() {} };\n },\n (s) => {\n s.close?.();\n },\n );\n}\n","import * as cmd from \"cmd-ts\";\nimport chalk from \"chalk\";\n\nexport const KeyValuePair = cmd.extendType(cmd.string, {\n displayName: \"key=value\",\n async from(input) {\n if (!input.includes(\"=\")) {\n // Punning: --env ABC is equivalent to --env ABC=$ABC\n return { key: input, value: process.env[input] };\n }\n\n const [key, ...rest] = input.split(\"=\");\n return { key, value: rest.join(\"=\") };\n },\n});\n\nexport const ObjectFromKeyValue = cmd.extendType(cmd.array(KeyValuePair), {\n async from(input): Promise<Record<string, string>> {\n const obj: Record<string, string> = Object.create(null);\n const missingVars: string[] = [];\n for (const { key, value } of input) {\n if (value === undefined) {\n missingVars.push(key);\n } else {\n obj[key] = value;\n }\n }\n if (missingVars.length > 0) {\n const plural = missingVars.length > 1;\n console.error(\n chalk.yellow(\n [\n `${chalk.bold(\"warn:\")} env var${plural ? \"s were\" : \" was\"} not defined and ${plural ? \"were\" : \"was\"} not passed: ${missingVars.join(\", \")}`,\n `╰▶ ${chalk.bold(\"hint:\")} --env VAR is equivalent to --env VAR=$VAR`,\n ].join(\"\\n\"),\n ),\n );\n }\n return obj;\n },\n});\n","import { Sandbox } from \"@vercel/sandbox\";\nimport * as cmd from \"cmd-ts\";\nimport { sandboxId } from \"../args/sandbox-id\";\nimport { isatty } from \"node:tty\";\nimport { startInteractiveShell } from \"../interactive-shell/interactive-shell\";\nimport { printCommand } from \"../util/print-command\";\nimport { ObjectFromKeyValue } from \"../args/key-value-pair\";\nimport { scope } from \"../args/scope\";\nimport { sandboxClient } from \"../client\";\nimport chalk from \"chalk\";\n\nexport const args = {\n scope,\n sandbox: cmd.positional({\n type: sandboxId as cmd.Type<string, string | Sandbox>,\n }),\n asSudo: cmd.flag({\n long: \"sudo\",\n description: \"Give extended privileges to the command.\",\n }),\n command: cmd.positional({\n displayName: \"command\",\n description: \"The executable to invoke\",\n }),\n args: cmd.rest({\n displayName: \"args\",\n description: \"arguments to pass to the command\",\n }),\n cwd: cmd.option({\n long: \"workdir\",\n short: \"w\",\n description: \"The working directory to run the command in\",\n type: cmd.optional(cmd.string),\n }),\n\n interactive: cmd.flag({\n long: \"interactive\",\n short: \"i\",\n description: \"Run the command in a secure interactive shell\",\n type: cmd.extendType(cmd.boolean, {\n defaultValue() {\n return false;\n },\n async from(input) {\n if (input && !isatty(1)) {\n throw new Error(\n [\n `The --interactive flag requires a terminal (TTY).`,\n `${chalk.bold(\"hint:\")} Run this command in an interactive terminal, or remove --interactive to run non-interactively.`,\n ].join(\"\\n\"),\n );\n }\n return input;\n },\n }),\n }),\n\n skipExtendingTimeout: cmd.flag({\n long: \"no-extend-timeout\",\n description:\n \"Do not extend the sandbox timeout while running an interactive command. Only affects interactive executions.\",\n }),\n\n envVars: cmd.multioption({\n long: \"env\",\n short: \"e\",\n type: ObjectFromKeyValue,\n description: \"Environment variables to set for the command\",\n }),\n tty: cmd.flag({\n long: \"tty\",\n short: \"t\",\n description: \"Allocate a tty for an interactive command. This is a no-op.\",\n }),\n} as const;\n\nexport const exec = cmd.command({\n name: \"exec\",\n description: \"Execute a command in an existing sandbox\",\n args,\n async handler({\n command,\n cwd,\n args,\n asSudo,\n sandbox: sandboxId,\n scope: { token, team, project },\n interactive,\n envVars,\n skipExtendingTimeout,\n }) {\n const sandbox =\n typeof sandboxId !== \"string\"\n ? sandboxId\n : await sandboxClient.get({\n sandboxId,\n projectId: project,\n teamId: team,\n token,\n __includeSystemRoutes: true,\n });\n\n if (![\"pending\", \"running\"].includes(sandbox.status)) {\n console.error(\n [\n `Sandbox ${sandbox.sandboxId} is not available (status: ${sandbox.status}).`,\n `${chalk.bold(\"hint:\")} Only 'pending' or 'running' sandboxes can execute commands.`,\n \"├▶ Use `sandbox list` to check sandbox status.\",\n \"╰▶ Use `sandbox create` to create a new sandbox.\",\n ].join(\"\\n\"),\n );\n process.exitCode = 1;\n return;\n }\n\n if (!interactive) {\n console.error(printCommand(sandbox.sandboxId, command, args));\n const result = await sandbox.runCommand({\n cmd: command,\n args,\n stderr: process.stderr,\n stdout: process.stdout,\n sudo: asSudo,\n cwd,\n env: envVars,\n });\n\n process.exitCode = result.exitCode;\n } else {\n await startInteractiveShell({\n sandbox,\n cwd,\n execution: [command, ...args],\n envVars,\n sudo: asSudo,\n skipExtendingTimeout,\n });\n }\n },\n});\n","export function omit<T extends object, K extends keyof T>(\n obj: T,\n ...keys: K[]\n): Omit<T, K> {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key];\n }\n return result;\n}\n","import * as cmd from \"cmd-ts\";\nimport * as Create from \"./create\";\nimport * as Exec from \"./exec\";\nimport { omit } from \"../util/omit\";\nimport ora from \"ora\";\n\nconst args = {\n ...omit(Create.args, \"silent\"),\n ...omit(Exec.args, \"sandbox\"),\n removeAfterUse: cmd.flag({\n long: \"rm\",\n description: \"Automatically remove the sandbox when the command exits.\",\n }),\n} as const;\n\nexport const run = cmd.command({\n name: \"run\",\n description: \"Create and run a command in a sandbox\",\n args,\n async handler({ removeAfterUse, ...rest }) {\n const spinner = ora(\"Creating sandbox...\").start();\n const sandbox = await Create.create.handler({ ...rest, silent: true });\n spinner.stop();\n try {\n await Exec.exec.handler({ ...rest, sandbox });\n } finally {\n if (removeAfterUse) {\n await sandbox.stop();\n }\n }\n },\n});\n\nexport const sh = cmd.command({\n name: \"sh\",\n description: \"Create a sandbox and run an interactive shell.\",\n aliases: [\"shell\"],\n args: omit(args, \"command\", \"interactive\", \"tty\"),\n async handler(args) {\n return run.handler({\n command: \"sh\",\n interactive: true,\n tty: true,\n ...args,\n });\n },\n});\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\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 ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { endOfDay } from \"./endOfDay.js\";\nimport { endOfMonth } from \"./endOfMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport function isLastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n return +endOfDay(_date, options) === +endOfMonth(_date, options);\n}\n\n// Fallback for modularized imports:\nexport default isLastDayOfMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.js\";\n\n/**\n * The {@link differenceInMonths} function options.\n */\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport function differenceInMonths(laterDate, earlierDate, options) {\n const [laterDate_, workingLaterDate, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n laterDate,\n earlierDate,\n );\n\n const sign = compareAsc(workingLaterDate, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarMonths(workingLaterDate, earlierDate_),\n );\n\n if (difference < 1) return 0;\n\n if (workingLaterDate.getMonth() === 1 && workingLaterDate.getDate() > 27)\n workingLaterDate.setDate(30);\n\n workingLaterDate.setMonth(workingLaterDate.getMonth() - sign * difference);\n\n let isLastMonthNotFull = compareAsc(workingLaterDate, earlierDate_) === -sign;\n\n if (\n isLastDayOfMonth(laterDate_) &&\n difference === 1 &&\n compareAsc(laterDate_, earlierDate_) === 1\n ) {\n isLastMonthNotFull = false;\n }\n\n const result = sign * (difference - +isLastMonthNotFull);\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInMonths;\n","export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { minutesInDay, minutesInMonth } from \"./constants.js\";\nimport { differenceInMonths } from \"./differenceInMonths.js\";\nimport { differenceInSeconds } from \"./differenceInSeconds.js\";\n\n/**\n * The {@link formatDistance} function options.\n */\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param laterDate - The date\n * @param earlierDate - The date to compare with\n * @param options - An object with options\n *\n * @returns The distance in words\n *\n * @throws `date` must not be Invalid Date\n * @throws `baseDate` must not be Invalid Date\n * @throws `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\nexport function formatDistance(laterDate, earlierDate, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n const minutesInAlmostTwoDays = 2520;\n\n const comparison = compareAsc(laterDate, earlierDate);\n\n if (isNaN(comparison)) throw new RangeError(\"Invalid time value\");\n\n const localizeOptions = Object.assign({}, options, {\n addSuffix: options?.addSuffix,\n comparison: comparison,\n });\n\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n ...(comparison > 0 ? [earlierDate, laterDate] : [laterDate, earlierDate]),\n );\n\n const seconds = differenceInSeconds(earlierDate_, laterDate_);\n const offsetInSeconds =\n (getTimezoneOffsetInMilliseconds(earlierDate_) -\n getTimezoneOffsetInMilliseconds(laterDate_)) /\n 1000;\n const minutes = Math.round((seconds - offsetInSeconds) / 60);\n let months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options?.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance(\"lessThanXSeconds\", 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance(\"lessThanXSeconds\", 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance(\"lessThanXSeconds\", 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance(\"halfAMinute\", 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance(\"lessThanXMinutes\", 1, localizeOptions);\n } else {\n return locale.formatDistance(\"xMinutes\", 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance(\"lessThanXMinutes\", 1, localizeOptions);\n } else {\n return locale.formatDistance(\"xMinutes\", minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance(\"xMinutes\", minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance(\"aboutXHours\", 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < minutesInDay) {\n const hours = Math.round(minutes / 60);\n return locale.formatDistance(\"aboutXHours\", hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < minutesInAlmostTwoDays) {\n return locale.formatDistance(\"xDays\", 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < minutesInMonth) {\n const days = Math.round(minutes / minutesInDay);\n return locale.formatDistance(\"xDays\", days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < minutesInMonth * 2) {\n months = Math.round(minutes / minutesInMonth);\n return locale.formatDistance(\"aboutXMonths\", months, localizeOptions);\n }\n\n months = differenceInMonths(earlierDate_, laterDate_);\n\n // 2 months up to 12 months\n if (months < 12) {\n const nearestMonth = Math.round(minutes / minutesInMonth);\n return locale.formatDistance(\"xMonths\", nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n const monthsSinceStartOfYear = months % 12;\n const years = Math.trunc(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance(\"aboutXYears\", years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance(\"overXYears\", years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance(\"almostXYears\", years + 1, localizeOptions);\n }\n }\n}\n\n// Fallback for modularized imports:\nexport default formatDistance;\n","import * as cmd from \"cmd-ts\";\nimport { Sandbox } from \"@vercel/sandbox\";\nimport { sandboxClient } from \"../client\";\nimport { scope } from \"../args/scope\";\nimport chalk, { ChalkInstance } from \"chalk\";\nimport { formatDistance } from \"date-fns/formatDistance\";\nimport ora from \"ora\";\nimport { acquireRelease } from \"../util/disposables\";\n\nexport const list = cmd.command({\n name: \"list\",\n aliases: [\"ls\"],\n description: \"List all sandboxes for the specified account and project.\",\n args: {\n scope,\n all: cmd.flag({\n long: \"all\",\n short: \"a\",\n description: \"Show all sandboxes (default shows just running)\",\n }),\n },\n async handler({ scope: { token, team, project }, all }) {\n const sandboxes = await (async () => {\n using _spinner = acquireRelease(\n () => ora(\"Fetching sandboxes...\").start(),\n (s) => s.stop(),\n );\n\n const { json } = await sandboxClient.list({\n token,\n teamId: team,\n projectId: project,\n limit: 100,\n });\n\n let sandboxes = json.sandboxes;\n\n if (!all) {\n sandboxes = sandboxes.filter((x) => x.status === \"running\");\n }\n\n return sandboxes;\n })();\n\n const memoryFormatter = new Intl.NumberFormat(undefined, {\n style: \"unit\",\n unit: \"megabyte\",\n });\n\n console.log(\n table({\n rows: sandboxes,\n columns: {\n ID: { value: (s) => s.id },\n STATUS: {\n value: (s) => s.status,\n color: (s) => StatusColor.get(s.status) ?? chalk.reset,\n },\n CREATED: {\n value: (s) => timeAgo(s.createdAt),\n },\n MEMORY: { value: (s) => memoryFormatter.format(s.memory) },\n VCPUS: { value: (s) => s.vcpus },\n RUNTIME: { value: (s) => s.runtime },\n TIMEOUT: {\n value: (s) => timeAgo(s.createdAt + s.timeout),\n },\n },\n }),\n );\n },\n});\n\nfunction timeAgo(date: string | number | Date) {\n return formatDistance(date, new Date(), {\n addSuffix: true,\n })\n .replace(\"about \", \"\")\n .replace(\"less than \", \"\");\n}\n\nfunction table<T extends object>(opts: {\n rows: T[];\n columns: Record<\n string,\n {\n value: (row: T) => string | number;\n color?: (row: T) => ChalkInstance;\n }\n >;\n}) {\n const titles = Object.keys(opts.columns);\n const maxWidths: number[] = titles.map((title) => title.length);\n const data = opts.rows.map((row) => {\n return titles.map((title, i) => {\n let value = String(opts.columns[title].value(row));\n if (value.length > maxWidths[i]) {\n maxWidths[i] = value.length;\n }\n if (opts.columns[title].color) {\n value = opts.columns[title].color(row)(value);\n }\n return value;\n });\n });\n\n const padded = (t: string, i: number) => t.padEnd(maxWidths[i], \" \");\n\n const space = \" \";\n\n return [\n chalk.bold(titles.map(padded).join(space)),\n ...data.map((row) => row.map(padded).join(space)),\n ].join(\"\\n\");\n}\n\nexport const StatusColor = new Map<Sandbox[\"status\"], ChalkInstance>([\n [\"running\", chalk.cyan],\n [\"failed\", chalk.red],\n [\"stopped\", chalk.gray.dim],\n [\"stopping\", chalk.gray],\n [\"pending\", chalk.magenta],\n]);\n","import * as cmd from \"cmd-ts\";\nimport * as Exec from \"./exec\";\nimport { omit } from \"../util/omit\";\n\nexport const ssh = cmd.command({\n name: \"ssh\",\n description: \"Start an interactive shell in an existing sandbox\",\n args: omit(Exec.args, \"command\", \"args\", \"interactive\", \"tty\"),\n async handler(args) {\n return Exec.exec.handler({\n command: \"sh\",\n args: [],\n interactive: true,\n tty: true,\n ...args,\n });\n },\n});\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","import * as tty from \"tty\"\n\nconst {\n env = {},\n argv = [],\n platform = \"\",\n} = typeof process === \"undefined\" ? {} : process\n\nconst isDisabled = \"NO_COLOR\" in env || argv.includes(\"--no-color\")\nconst isForced = \"FORCE_COLOR\" in env || argv.includes(\"--color\")\nconst isWindows = platform === \"win32\"\nconst isDumbTerminal = env.TERM === \"dumb\"\n\nconst isCompatibleTerminal =\n tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal\n\nconst isCI =\n \"CI\" in env &&\n (\"GITHUB_ACTIONS\" in env || \"GITLAB_CI\" in env || \"CIRCLECI\" in env)\n\nexport const isColorSupported =\n !isDisabled &&\n (isForced || (isWindows && !isDumbTerminal) || isCompatibleTerminal || isCI)\n\nconst replaceClose = (\n index,\n string,\n close,\n replace,\n head = string.substring(0, index) + replace,\n tail = string.substring(index + close.length),\n next = tail.indexOf(close)\n) => head + (next < 0 ? tail : replaceClose(next, tail, close, replace))\n\nconst clearBleed = (index, string, open, close, replace) =>\n index < 0\n ? open + string + close\n : open + replaceClose(index, string, close, replace) + close\n\nconst filterEmpty =\n (open, close, replace = open, at = open.length + 1) =>\n (string) =>\n string || !(string === \"\" || string === undefined)\n ? clearBleed(\n (\"\" + string).indexOf(close, at),\n string,\n open,\n close,\n replace\n )\n : \"\"\n\nconst init = (open, close, replace) =>\n filterEmpty(`\\x1b[${open}m`, `\\x1b[${close}m`, replace)\n\nconst colors = {\n reset: init(0, 0),\n bold: init(1, 22, \"\\x1b[22m\\x1b[1m\"),\n dim: init(2, 22, \"\\x1b[22m\\x1b[2m\"),\n italic: init(3, 23),\n underline: init(4, 24),\n inverse: init(7, 27),\n hidden: init(8, 28),\n strikethrough: init(9, 29),\n black: init(30, 39),\n red: init(31, 39),\n green: init(32, 39),\n yellow: init(33, 39),\n blue: init(34, 39),\n magenta: init(35, 39),\n cyan: init(36, 39),\n white: init(37, 39),\n gray: init(90, 39),\n bgBlack: init(40, 49),\n bgRed: init(41, 49),\n bgGreen: init(42, 49),\n bgYellow: init(43, 49),\n bgBlue: init(44, 49),\n bgMagenta: init(45, 49),\n bgCyan: init(46, 49),\n bgWhite: init(47, 49),\n blackBright: init(90, 39),\n redBright: init(91, 39),\n greenBright: init(92, 39),\n yellowBright: init(93, 39),\n blueBright: init(94, 39),\n magentaBright: init(95, 39),\n cyanBright: init(96, 39),\n whiteBright: init(97, 39),\n bgBlackBright: init(100, 49),\n bgRedBright: init(101, 49),\n bgGreenBright: init(102, 49),\n bgYellowBright: init(103, 49),\n bgBlueBright: init(104, 49),\n bgMagentaBright: init(105, 49),\n bgCyanBright: init(106, 49),\n bgWhiteBright: init(107, 49),\n}\n\nexport const createColors = ({ useColor = isColorSupported } = {}) =>\n useColor\n ? colors\n : Object.keys(colors).reduce(\n (colors, key) => ({ ...colors, [key]: String }),\n {}\n )\n\nexport const {\n reset,\n bold,\n dim,\n italic,\n underline,\n inverse,\n hidden,\n strikethrough,\n black,\n red,\n green,\n yellow,\n blue,\n magenta,\n cyan,\n white,\n gray,\n bgBlack,\n bgRed,\n bgGreen,\n bgYellow,\n bgBlue,\n bgMagenta,\n bgCyan,\n bgWhite,\n blackBright,\n redBright,\n greenBright,\n yellowBright,\n blueBright,\n magentaBright,\n cyanBright,\n whiteBright,\n bgBlackBright,\n bgRedBright,\n bgGreenBright,\n bgYellowBright,\n bgBlueBright,\n bgMagentaBright,\n bgCyanBright,\n bgWhiteBright,\n} = createColors()\n","'use strict'\nmodule.exports = rfdc\n\nfunction copyBuffer (cur) {\n if (cur instanceof Buffer) {\n return Buffer.from(cur)\n }\n\n return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length)\n}\n\nfunction rfdc (opts) {\n opts = opts || {}\n if (opts.circles) return rfdcCircles(opts)\n\n const constructorHandlers = new Map()\n constructorHandlers.set(Date, (o) => new Date(o))\n constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)))\n constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)))\n if (opts.constructorHandlers) {\n for (const handler of opts.constructorHandlers) {\n constructorHandlers.set(handler[0], handler[1])\n }\n }\n\n let handler = null\n\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n const keys = Object.keys(a)\n const a2 = new Array(keys.length)\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i]\n const cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n a2[k] = handler(cur, fn)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n a2[k] = fn(cur)\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, clone)\n }\n const o2 = {}\n for (const k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n const cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, clone)\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = clone(cur)\n }\n }\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, cloneProto)\n }\n const o2 = {}\n for (const k in o) {\n const cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, cloneProto)\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n return o2\n }\n}\n\nfunction rfdcCircles (opts) {\n const refs = []\n const refsNew = []\n\n const constructorHandlers = new Map()\n constructorHandlers.set(Date, (o) => new Date(o))\n constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)))\n constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)))\n if (opts.constructorHandlers) {\n for (const handler of opts.constructorHandlers) {\n constructorHandlers.set(handler[0], handler[1])\n }\n }\n\n let handler = null\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n const keys = Object.keys(a)\n const a2 = new Array(keys.length)\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i]\n const cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n a2[k] = handler(cur, fn)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n const index = refs.indexOf(cur)\n if (index !== -1) {\n a2[k] = refsNew[index]\n } else {\n a2[k] = fn(cur)\n }\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, clone)\n }\n const o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (const k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n const cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, clone)\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n const i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = clone(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, cloneProto)\n }\n const o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (const k in o) {\n const cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, cloneProto)\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n const i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n}\n","import EventEmitter from \"eventemitter3\";\nimport { createColors } from \"colorette\";\nimport { format } from \"util\";\nimport { EOL } from \"os\";\nimport { StringDecoder } from \"string_decoder\";\nimport { Writable } from \"stream\";\nimport rfdc from \"rfdc\";\nimport { randomUUID } from \"crypto\";\n\n//#region src/constants/ansi-escape-codes.constants.ts\n/**\n* Indicates an UNICODE characters is coming up.\n*/\nconst ANSI_ESCAPE = \"\\x1B[\";\n/**\n* Generic ANSI escape characters for terminal based operations.\n*/\nconst ANSI_ESCAPE_CODES = {\n\tCURSOR_HIDE: ANSI_ESCAPE + \"?25l\",\n\tCURSOR_SHOW: ANSI_ESCAPE + \"?25h\"\n};\n\n//#endregion\n//#region src/constants/environment-variables.constants.ts\n/**\n* Environment variables for Listr.\n*/\nlet ListrEnvironmentVariables = /* @__PURE__ */ function(ListrEnvironmentVariables$1) {\n\tListrEnvironmentVariables$1[\"FORCE_UNICODE\"] = \"LISTR_FORCE_UNICODE\";\n\tListrEnvironmentVariables$1[\"FORCE_TTY\"] = \"LISTR_FORCE_TTY\";\n\tListrEnvironmentVariables$1[\"DISABLE_COLOR\"] = \"NO_COLOR\";\n\tListrEnvironmentVariables$1[\"FORCE_COLOR\"] = \"FORCE_COLOR\";\n\treturn ListrEnvironmentVariables$1;\n}({});\n\n//#endregion\n//#region src/constants/listr-error.constants.ts\n/**\n* The actual error type that is collected and to help identify where the error is triggered from.\n*/\nlet ListrErrorTypes = /* @__PURE__ */ function(ListrErrorTypes$1) {\n\t/** Task has failed and will try to retry. */\n\tListrErrorTypes$1[\"WILL_RETRY\"] = \"WILL_RETRY\";\n\t/** Task has failed and will try to rollback. */\n\tListrErrorTypes$1[\"WILL_ROLLBACK\"] = \"WILL_ROLLBACK\";\n\t/** Task has failed, ran the rollback action but the rollback action itself has failed. */\n\tListrErrorTypes$1[\"HAS_FAILED_TO_ROLLBACK\"] = \"HAS_FAILED_TO_ROLLBACK\";\n\t/** Task has failed. */\n\tListrErrorTypes$1[\"HAS_FAILED\"] = \"HAS_FAILED\";\n\t/** Task has failed, but exitOnError is set to false, so will ignore this error. */\n\tListrErrorTypes$1[\"HAS_FAILED_WITHOUT_ERROR\"] = \"HAS_FAILED_WITHOUT_ERROR\";\n\treturn ListrErrorTypes$1;\n}({});\n\n//#endregion\n//#region src/constants/listr-events.constants.ts\n/**\n* Events that are triggered by Listr.\n*\n* These are stateful and singleton events by being attached to the main Listr class and propagating to the subtasks.\n*\n* @see {@link https://listr2.kilic.dev/listr/events.html}\n*/\nlet ListrEventType = /* @__PURE__ */ function(ListrEventType$1) {\n\t/** Indicates that underlying renderer should refresh the current render. */\n\tListrEventType$1[\"SHOULD_REFRESH_RENDER\"] = \"SHOUD_REFRESH_RENDER\";\n\treturn ListrEventType$1;\n}({});\n\n//#endregion\n//#region src/constants/listr-renderer.constants.ts\nlet ListrRendererSelection = /* @__PURE__ */ function(ListrRendererSelection$1) {\n\tListrRendererSelection$1[\"PRIMARY\"] = \"PRIMARY\";\n\tListrRendererSelection$1[\"SECONDARY\"] = \"SECONDARY\";\n\tListrRendererSelection$1[\"SILENT\"] = \"SILENT\";\n\treturn ListrRendererSelection$1;\n}({});\n\n//#endregion\n//#region src/constants/listr-task-events.constants.ts\n/**\n* Internal events that are fired from the Task.\n*\n* @see {@link https://listr2.kilic.dev/task/events.html}\n*/\nlet ListrTaskEventType = /* @__PURE__ */ function(ListrTaskEventType$1) {\n\t/** Title has changed for the current Task. */\n\tListrTaskEventType$1[\"TITLE\"] = \"TITLE\";\n\t/**\n\t* State has changed for the current Task.\n\t*\n\t* @see {@link module:listr2.ListrTaskState}\n\t*/\n\tListrTaskEventType$1[\"STATE\"] = \"STATE\";\n\t/** The current Task has been marked as enabled. */\n\tListrTaskEventType$1[\"ENABLED\"] = \"ENABLED\";\n\t/** The current Task is currently processing subtasks. */\n\tListrTaskEventType$1[\"SUBTASK\"] = \"SUBTASK\";\n\t/** The current Task is now processing a prompt. */\n\tListrTaskEventType$1[\"PROMPT\"] = \"PROMPT\";\n\t/** The current Task is now dumping output. */\n\tListrTaskEventType$1[\"OUTPUT\"] = \"OUTPUT\";\n\t/**\n\t* The current Task is now dumping a message.\n\t*\n\t* @see {module:Listr2.ListrTaskMessage}\n\t*/\n\tListrTaskEventType$1[\"MESSAGE\"] = \"MESSAGE\";\n\t/** The current Task is closed and no further action in expected. */\n\tListrTaskEventType$1[\"CLOSED\"] = \"CLOSED\";\n\treturn ListrTaskEventType$1;\n}({});\n\n//#endregion\n//#region src/constants/listr-task-state.constants.ts\n/**\n* Tasks can be in various states during the execution.\n*\n* Whenever a state change occurs, the task will emit a {@link module:listr2.ListrTaskEventType.STATE} with the appropriate state.\n*/\nlet ListrTaskState = /* @__PURE__ */ function(ListrTaskState$1) {\n\t/** Task has not started yet, waiting for pick-up. */\n\tListrTaskState$1[\"WAITING\"] = \"WAITING\";\n\t/** Task has started. */\n\tListrTaskState$1[\"STARTED\"] = \"STARTED\";\n\t/** Task has been completed. */\n\tListrTaskState$1[\"COMPLETED\"] = \"COMPLETED\";\n\t/** Task has failed. */\n\tListrTaskState$1[\"FAILED\"] = \"FAILED\";\n\t/** Task has been skipped. */\n\tListrTaskState$1[\"SKIPPED\"] = \"SKIPPED\";\n\t/** Task is currently trying to rollback. */\n\tListrTaskState$1[\"ROLLING_BACK\"] = \"ROLLING_BACK\";\n\t/** Task has rolledback successfully after failing. */\n\tListrTaskState$1[\"ROLLED_BACK\"] = \"ROLLED_BACK\";\n\t/** Task is currently retrying. */\n\tListrTaskState$1[\"RETRY\"] = \"RETRY\";\n\t/** Task is currently paused. */\n\tListrTaskState$1[\"PAUSED\"] = \"PAUSED\";\n\t/** Task is currently trying to process a prompt. */\n\tListrTaskState$1[\"PROMPT\"] = \"PROMPT\";\n\t/** Task has successfully processed the prompt. */\n\tListrTaskState$1[\"PROMPT_COMPLETED\"] = \"PROMPT_COMPLETED\";\n\t/** Task has failed to process the prompt. */\n\tListrTaskState$1[\"PROMPT_FAILED\"] = \"PROMPT_FAILED\";\n\treturn ListrTaskState$1;\n}({});\n\n//#endregion\n//#region src/lib/event-manager.ts\nvar EventManager = class {\n\temitter = new EventEmitter();\n\temit(dispatch, args) {\n\t\tthis.emitter.emit(dispatch, args);\n\t}\n\ton(dispatch, handler) {\n\t\tthis.emitter.addListener(dispatch, handler);\n\t}\n\tonce(dispatch, handler) {\n\t\tthis.emitter.once(dispatch, handler);\n\t}\n\toff(dispatch, handler) {\n\t\tthis.emitter.off(dispatch, handler);\n\t}\n\tcomplete() {\n\t\tthis.emitter.removeAllListeners();\n\t}\n};\n\n//#endregion\n//#region src/interfaces/event.interface.ts\n/**\n* Give event map a set of indexes to not make it go crazy when some events are missing from it.\n* They are optional after all.\n*/\nvar BaseEventMap = class {};\n\n//#endregion\n//#region src/utils/environment/is-observable.ts\n/**\n* Tests to see if the object is an RxJS {@link Observable}\n* @param obj the object to test\n*/\nfunction isObservable(obj) {\n\treturn !!obj && typeof obj === \"object\" && typeof obj.subscribe === \"function\";\n}\n\n//#endregion\n//#region src/utils/environment/is-readable.ts\n/**\n* Tests to see if the object is an Readable or NodeJS.ReadableStream {@link Readable, NodeJS.ReadableStream}\n* @param obj the object to test\n*/\nfunction isReadable(obj) {\n\treturn !!obj && typeof obj === \"object\" && obj.readable === true && typeof obj.read === \"function\" && typeof obj.on === \"function\";\n}\n\n//#endregion\n//#region src/utils/environment/is-unicode-supported.ts\nfunction isUnicodeSupported() {\n\t/* istanbul ignore next */\n\treturn !!process.env[ListrEnvironmentVariables.FORCE_UNICODE] || process.platform !== \"win32\" || !!process.env.CI || !!process.env.WT_SESSION || process.env.TERM_PROGRAM === \"vscode\" || process.env.TERM === \"xterm-256color\" || process.env.TERM === \"alacritty\";\n}\n\n//#endregion\n//#region src/utils/format/cleanse-ansi.constants.ts\nconst CLEAR_LINE_REGEX = \"(?:\\\\u001b|\\\\u009b)\\\\[[\\\\=><~/#&.:=?%@~_-]*[0-9]*[\\\\a-ln-tqyz=><~/#&.:=?%@~_-]+\";\nconst BELL_REGEX = /\\u0007/;\n\n//#endregion\n//#region src/utils/format/cleanse-ansi.ts\nfunction cleanseAnsi(chunk) {\n\treturn String(chunk).replace(new RegExp(CLEAR_LINE_REGEX, \"gmi\"), \"\").replace(new RegExp(BELL_REGEX, \"gmi\"), \"\").trim();\n}\n\n//#endregion\n//#region src/utils/format/color.ts\n/**\n* Creates color palette through underlying dependency of `colorette`.\n*\n* @see {@link https://www.npmjs.com/package/colorette}\n*/\nconst color = createColors();\n\n//#endregion\n//#region src/utils/format/indent.ts\nfunction indent(string, count) {\n\treturn string.replace(/^(?!\\s*$)/gm, \" \".repeat(count));\n}\n\n//#endregion\n//#region src/utils/format/figures.ts\nconst FIGURES_MAIN = {\n\twarning: \"⚠\",\n\tcross: \"✖\",\n\tarrowDown: \"↓\",\n\ttick: \"✔\",\n\tarrowRight: \"→\",\n\tpointer: \"❯\",\n\tcheckboxOn: \"☒\",\n\tarrowLeft: \"←\",\n\tsquareSmallFilled: \"◼\",\n\tpointerSmall: \"›\"\n};\nconst FIGURES_FALLBACK = {\n\t...FIGURES_MAIN,\n\twarning: \"‼\",\n\tcross: \"×\",\n\ttick: \"√\",\n\tpointer: \">\",\n\tcheckboxOn: \"[×]\",\n\tsquareSmallFilled: \"■\"\n};\nconst figures = isUnicodeSupported() ? FIGURES_MAIN : FIGURES_FALLBACK;\n\n//#endregion\n//#region src/utils/format/splat.ts\nfunction splat(message, ...splat$1) {\n\treturn format(String(message), ...splat$1);\n}\n\n//#endregion\n//#region src/utils/logger/logger.constants.ts\n/** Default ListrLogLevels for the logger */\nlet ListrLogLevels = /* @__PURE__ */ function(ListrLogLevels$1) {\n\tListrLogLevels$1[\"STARTED\"] = \"STARTED\";\n\tListrLogLevels$1[\"COMPLETED\"] = \"COMPLETED\";\n\tListrLogLevels$1[\"FAILED\"] = \"FAILED\";\n\tListrLogLevels$1[\"SKIPPED\"] = \"SKIPPED\";\n\tListrLogLevels$1[\"OUTPUT\"] = \"OUTPUT\";\n\tListrLogLevels$1[\"TITLE\"] = \"TITLE\";\n\tListrLogLevels$1[\"ROLLBACK\"] = \"ROLLBACK\";\n\tListrLogLevels$1[\"RETRY\"] = \"RETRY\";\n\tListrLogLevels$1[\"PROMPT\"] = \"PROMPT\";\n\tListrLogLevels$1[\"PAUSED\"] = \"PAUSED\";\n\treturn ListrLogLevels$1;\n}({});\nconst LISTR_LOGGER_STYLE = {\n\ticon: {\n\t\t[ListrLogLevels.STARTED]: figures.pointer,\n\t\t[ListrLogLevels.FAILED]: figures.cross,\n\t\t[ListrLogLevels.SKIPPED]: figures.arrowDown,\n\t\t[ListrLogLevels.COMPLETED]: figures.tick,\n\t\t[ListrLogLevels.OUTPUT]: figures.pointerSmall,\n\t\t[ListrLogLevels.TITLE]: figures.arrowRight,\n\t\t[ListrLogLevels.RETRY]: figures.warning,\n\t\t[ListrLogLevels.ROLLBACK]: figures.arrowLeft,\n\t\t[ListrLogLevels.PAUSED]: figures.squareSmallFilled\n\t},\n\tcolor: {\n\t\t[ListrLogLevels.STARTED]: color.yellow,\n\t\t[ListrLogLevels.FAILED]: color.red,\n\t\t[ListrLogLevels.SKIPPED]: color.yellow,\n\t\t[ListrLogLevels.COMPLETED]: color.green,\n\t\t[ListrLogLevels.RETRY]: color.yellowBright,\n\t\t[ListrLogLevels.ROLLBACK]: color.redBright,\n\t\t[ListrLogLevels.PAUSED]: color.yellowBright\n\t}\n};\nconst LISTR_LOGGER_STDERR_LEVELS = [\n\tListrLogLevels.RETRY,\n\tListrLogLevels.ROLLBACK,\n\tListrLogLevels.FAILED\n];\n\n//#endregion\n//#region src/utils/logger/logger.ts\n/**\n* Creates a new Listr2 logger.\n*\n* This logger is used throughout the renderers for consistency.\n*\n* @see {@link https://listr2.kilic.dev/renderer/logger.html}\n*/\nvar ListrLogger = class {\n\tprocess;\n\tconstructor(options) {\n\t\tthis.options = options;\n\t\tthis.options = {\n\t\t\tuseIcons: true,\n\t\t\ttoStderr: [],\n\t\t\t...options ?? {}\n\t\t};\n\t\tthis.options.fields ??= {};\n\t\tthis.options.fields.prefix ??= [];\n\t\tthis.options.fields.suffix ??= [];\n\t\tthis.process = this.options.processOutput ?? new ProcessOutput();\n\t}\n\tlog(level, message, options) {\n\t\tconst output = this.format(level, message, options);\n\t\tif (this.options.toStderr.includes(level)) {\n\t\t\tthis.process.toStderr(output);\n\t\t\treturn;\n\t\t}\n\t\tthis.process.toStdout(output);\n\t}\n\ttoStdout(message, options, eol = true) {\n\t\tthis.process.toStdout(this.format(null, message, options), eol);\n\t}\n\ttoStderr(message, options, eol = true) {\n\t\tthis.process.toStderr(this.format(null, message, options), eol);\n\t}\n\twrap(message, options) {\n\t\tif (!message) return message;\n\t\treturn this.applyFormat(`[${message}]`, options);\n\t}\n\tsplat(...args) {\n\t\tconst message = args.shift() ?? \"\";\n\t\treturn args.length === 0 ? message : splat(message, args);\n\t}\n\tsuffix(message, ...suffixes) {\n\t\tsuffixes.filter(Boolean).forEach((suffix) => {\n\t\t\tmessage += this.spacing(message);\n\t\t\tif (typeof suffix === \"string\") message += this.wrap(suffix);\n\t\t\telse if (typeof suffix === \"object\") {\n\t\t\t\tsuffix.args ??= [];\n\t\t\t\tif (typeof suffix.condition === \"function\" ? !suffix.condition(...suffix.args) : !(suffix.condition ?? true)) return message;\n\t\t\t\tmessage += this.wrap(typeof suffix.field === \"function\" ? suffix.field(...suffix.args) : suffix.field, { format: suffix?.format(...suffix.args) });\n\t\t\t}\n\t\t});\n\t\treturn message;\n\t}\n\tprefix(message, ...prefixes) {\n\t\tprefixes.filter(Boolean).forEach((prefix) => {\n\t\t\tmessage = this.spacing(message) + message;\n\t\t\tif (typeof prefix === \"string\") message = this.wrap(prefix) + message;\n\t\t\telse if (typeof prefix === \"object\") {\n\t\t\t\tprefix.args ??= [];\n\t\t\t\tif (typeof prefix.condition === \"function\" ? !prefix.condition(...prefix.args) : !(prefix.condition ?? true)) return message;\n\t\t\t\tmessage = this.wrap(typeof prefix.field === \"function\" ? prefix.field(...prefix.args) : prefix.field, { format: prefix?.format() }) + message;\n\t\t\t}\n\t\t});\n\t\treturn message;\n\t}\n\tfields(message, options) {\n\t\tif (this.options?.fields?.prefix) message = this.prefix(message, ...this.options.fields.prefix);\n\t\tif (options?.prefix) message = this.prefix(message, ...options.prefix);\n\t\tif (options?.suffix) message = this.suffix(message, ...options.suffix);\n\t\tif (this.options?.fields?.suffix) message = this.suffix(message, ...this.options.fields.suffix);\n\t\treturn message;\n\t}\n\ticon(level, icon) {\n\t\tif (!level) return null;\n\t\tif (!icon) {\n\t\t\tconst i = this.options.icon?.[level];\n\t\t\ticon = typeof i === \"function\" ? i() : i;\n\t\t}\n\t\tconst coloring = this.options.color?.[level];\n\t\tif (icon && coloring) icon = coloring(icon);\n\t\treturn icon;\n\t}\n\tformat(level, message, options) {\n\t\tif (!Array.isArray(message)) message = [message];\n\t\tmessage = this.splat(message.shift(), ...message).toString().split(EOL).filter((m) => !m || m.trim() !== \"\").map((m) => {\n\t\t\treturn this.style(level, this.fields(m, {\n\t\t\t\tprefix: Array.isArray(options?.prefix) ? options.prefix : [options?.prefix],\n\t\t\t\tsuffix: Array.isArray(options?.suffix) ? options.suffix : [options?.suffix]\n\t\t\t}));\n\t\t}).join(EOL);\n\t\treturn message;\n\t}\n\tstyle(level, message) {\n\t\tif (!level || !message) return message;\n\t\tconst icon = this.icon(level, !this.options.useIcons && this.wrap(level));\n\t\tif (icon) message = icon + \" \" + message;\n\t\treturn message;\n\t}\n\tapplyFormat(message, options) {\n\t\tif (options?.format) return options.format(message);\n\t\treturn message;\n\t}\n\tspacing(message) {\n\t\treturn typeof message === \"undefined\" || message.trim() === \"\" ? \"\" : \" \";\n\t}\n};\n\n//#endregion\n//#region src/utils/process-output/process-output-buffer.ts\nvar ProcessOutputBuffer = class {\n\tbuffer = [];\n\tdecoder = new StringDecoder();\n\tconstructor(options) {\n\t\tthis.options = options;\n\t}\n\tget all() {\n\t\treturn this.buffer;\n\t}\n\tget last() {\n\t\treturn this.buffer.at(-1);\n\t}\n\tget length() {\n\t\treturn this.buffer.length;\n\t}\n\twrite(data, ...args) {\n\t\tconst callback = args[args.length - 1];\n\t\tthis.buffer.push({\n\t\t\ttime: Date.now(),\n\t\t\tstream: this.options?.stream,\n\t\t\tentry: this.decoder.write(typeof data === \"string\" ? Buffer.from(data, typeof args[0] === \"string\" ? args[0] : void 0) : Buffer.from(data))\n\t\t});\n\t\tif (this.options?.limit) this.buffer = this.buffer.slice(-this.options.limit);\n\t\tif (typeof callback === \"function\") callback();\n\t\treturn true;\n\t}\n\treset() {\n\t\tthis.buffer = [];\n\t}\n};\n\n//#endregion\n//#region src/utils/process-output/process-output-stream.ts\nvar ProcessOutputStream = class {\n\tmethod;\n\tbuffer;\n\tconstructor(stream) {\n\t\tthis.stream = stream;\n\t\tthis.method = stream.write;\n\t\tthis.buffer = new ProcessOutputBuffer({ stream });\n\t}\n\tget out() {\n\t\treturn Object.assign({}, this.stream, { write: this.write.bind(this) });\n\t}\n\thijack() {\n\t\tthis.stream.write = this.buffer.write.bind(this.buffer);\n\t}\n\trelease() {\n\t\tthis.stream.write = this.method;\n\t\tconst buffer = [...this.buffer.all];\n\t\tthis.buffer.reset();\n\t\treturn buffer;\n\t}\n\twrite(...args) {\n\t\treturn this.method.apply(this.stream, args);\n\t}\n};\n\n//#endregion\n//#region src/utils/process-output/process-output.ts\n/**\n* Creates a new Listr2 process-output controller.\n*\n* This is used to control the flow to `process.stdout` and `process.stderr` for all renderers.\n*\n* @see {@link https://listr2.kilic.dev/renderer/process-output.html}\n*/\nvar ProcessOutput = class {\n\tstream;\n\tactive;\n\tconstructor(stdout, stderr, options) {\n\t\tthis.options = options;\n\t\tthis.stream = {\n\t\t\tstdout: new ProcessOutputStream(stdout ?? process.stdout),\n\t\t\tstderr: new ProcessOutputStream(stderr ?? process.stderr)\n\t\t};\n\t\tthis.options = {\n\t\t\tdump: [\"stdout\", \"stderr\"],\n\t\t\tleaveEmptyLine: true,\n\t\t\t...options\n\t\t};\n\t}\n\tget stdout() {\n\t\treturn this.stream.stdout.out;\n\t}\n\tget stderr() {\n\t\treturn this.stream.stderr.out;\n\t}\n\thijack() {\n\t\tif (this.active) throw new Error(\"ProcessOutput has been already hijacked!\");\n\t\tthis.stream.stdout.write(ANSI_ESCAPE_CODES.CURSOR_HIDE);\n\t\tObject.values(this.stream).forEach((stream) => stream.hijack());\n\t\tthis.active = true;\n\t}\n\trelease() {\n\t\tconst output = Object.entries(this.stream).map(([name, stream]) => ({\n\t\t\tname,\n\t\t\tbuffer: stream.release()\n\t\t})).filter((output$1) => this.options.dump.includes(output$1.name)).flatMap((output$1) => output$1.buffer).sort((a, b) => a.time - b.time).map((message) => {\n\t\t\treturn {\n\t\t\t\t...message,\n\t\t\t\tentry: cleanseAnsi(message.entry)\n\t\t\t};\n\t\t}).filter((message) => message.entry);\n\t\tif (output.length > 0) {\n\t\t\tif (this.options.leaveEmptyLine) this.stdout.write(EOL);\n\t\t\toutput.forEach((message) => {\n\t\t\t\tconst stream = message.stream ?? this.stdout;\n\t\t\t\tstream.write(message.entry + EOL);\n\t\t\t});\n\t\t}\n\t\tthis.stream.stdout.write(ANSI_ESCAPE_CODES.CURSOR_SHOW);\n\t\tthis.active = false;\n\t}\n\ttoStdout(buffer, eol = true) {\n\t\tif (eol) buffer = buffer + EOL;\n\t\treturn this.stream.stdout.write(buffer);\n\t}\n\ttoStderr(buffer, eol = true) {\n\t\tif (eol) buffer = buffer + EOL;\n\t\treturn this.stream.stderr.write(buffer);\n\t}\n};\n\n//#endregion\n//#region src/utils/process-output/writable.ts\n/* istanbul ignore next */\nfunction createWritable(cb) {\n\tconst writable = new Writable();\n\twritable.rows = Infinity;\n\twritable.columns = Infinity;\n\twritable.write = (chunk) => {\n\t\tcb(chunk.toString());\n\t\treturn true;\n\t};\n\treturn writable;\n}\n\n//#endregion\n//#region src/utils/prompts/adapter.ts\n/* istanbul ignore next */\nvar ListrPromptAdapter = class {\n\tstate;\n\tconstructor(task, wrapper) {\n\t\tthis.task = task;\n\t\tthis.wrapper = wrapper;\n\t}\n\treportStarted() {\n\t\tthis.state = this.task.state;\n\t\tif (this.task.prompt) throw new PromptError(\"There is already an active prompt attached to this task which may not be cleaned up properly.\");\n\t\tthis.task.prompt = this;\n\t\tthis.task.state$ = ListrTaskState.PROMPT;\n\t}\n\treportFailed() {\n\t\tthis.task.state$ = ListrTaskState.PROMPT_FAILED;\n\t\tthis.restoreState();\n\t}\n\treportCompleted() {\n\t\tthis.task.state$ = ListrTaskState.PROMPT_COMPLETED;\n\t\tthis.restoreState();\n\t}\n\trestoreState() {\n\t\tthis.task.prompt = void 0;\n\t\tif (this.state) this.task.state = this.state;\n\t}\n};\n\n//#endregion\n//#region src/utils/ui/spinner.ts\n/* istanbul ignore next */\nvar Spinner = class {\n\tspinner = !isUnicodeSupported() ? [\n\t\t\"-\",\n\t\t\"\\\\\",\n\t\t\"|\",\n\t\t\"/\"\n\t] : [\n\t\t\"⠋\",\n\t\t\"⠙\",\n\t\t\"⠹\",\n\t\t\"⠸\",\n\t\t\"⠼\",\n\t\t\"⠴\",\n\t\t\"⠦\",\n\t\t\"⠧\",\n\t\t\"⠇\",\n\t\t\"⠏\"\n\t];\n\tid;\n\tspinnerPosition = 0;\n\tspin() {\n\t\tthis.spinnerPosition = ++this.spinnerPosition % this.spinner.length;\n\t}\n\tfetch() {\n\t\treturn this.spinner[this.spinnerPosition];\n\t}\n\tisRunning() {\n\t\treturn !!this.id;\n\t}\n\tstart(cb, interval = 100) {\n\t\tthis.id = setInterval(() => {\n\t\t\tthis.spin();\n\t\t\tif (cb) cb();\n\t\t}, interval);\n\t}\n\tstop() {\n\t\tclearInterval(this.id);\n\t}\n};\n\n//#endregion\n//#region src/renderer/default/renderer.constants.ts\nlet ListrDefaultRendererLogLevels = /* @__PURE__ */ function(ListrDefaultRendererLogLevels$1) {\n\tListrDefaultRendererLogLevels$1[\"SKIPPED_WITH_COLLAPSE\"] = \"SKIPPED_WITH_COLLAPSE\";\n\tListrDefaultRendererLogLevels$1[\"SKIPPED_WITHOUT_COLLAPSE\"] = \"SKIPPED_WITHOUT_COLLAPSE\";\n\tListrDefaultRendererLogLevels$1[\"OUTPUT\"] = \"OUTPUT\";\n\tListrDefaultRendererLogLevels$1[\"OUTPUT_WITH_BOTTOMBAR\"] = \"OUTPUT_WITH_BOTTOMBAR\";\n\tListrDefaultRendererLogLevels$1[\"PENDING\"] = \"PENDING\";\n\tListrDefaultRendererLogLevels$1[\"COMPLETED\"] = \"COMPLETED\";\n\tListrDefaultRendererLogLevels$1[\"COMPLETED_WITH_FAILED_SUBTASKS\"] = \"COMPLETED_WITH_FAILED_SUBTASKS\";\n\tListrDefaultRendererLogLevels$1[\"COMPLETED_WITH_FAILED_SISTER_TASKS\"] = \"COMPLETED_WITH_SISTER_TASKS_FAILED\";\n\tListrDefaultRendererLogLevels$1[\"RETRY\"] = \"RETRY\";\n\tListrDefaultRendererLogLevels$1[\"ROLLING_BACK\"] = \"ROLLING_BACK\";\n\tListrDefaultRendererLogLevels$1[\"ROLLED_BACK\"] = \"ROLLED_BACK\";\n\tListrDefaultRendererLogLevels$1[\"FAILED\"] = \"FAILED\";\n\tListrDefaultRendererLogLevels$1[\"FAILED_WITH_FAILED_SUBTASKS\"] = \"FAILED_WITH_SUBTASKS\";\n\tListrDefaultRendererLogLevels$1[\"WAITING\"] = \"WAITING\";\n\tListrDefaultRendererLogLevels$1[\"PAUSED\"] = \"PAUSED\";\n\treturn ListrDefaultRendererLogLevels$1;\n}({});\nconst LISTR_DEFAULT_RENDERER_STYLE = {\n\ticon: {\n\t\t[ListrDefaultRendererLogLevels.SKIPPED_WITH_COLLAPSE]: figures.arrowDown,\n\t\t[ListrDefaultRendererLogLevels.SKIPPED_WITHOUT_COLLAPSE]: figures.warning,\n\t\t[ListrDefaultRendererLogLevels.OUTPUT]: figures.pointerSmall,\n\t\t[ListrDefaultRendererLogLevels.OUTPUT_WITH_BOTTOMBAR]: figures.pointerSmall,\n\t\t[ListrDefaultRendererLogLevels.PENDING]: figures.pointer,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED]: figures.tick,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SUBTASKS]: figures.warning,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SISTER_TASKS]: figures.squareSmallFilled,\n\t\t[ListrDefaultRendererLogLevels.RETRY]: figures.warning,\n\t\t[ListrDefaultRendererLogLevels.ROLLING_BACK]: figures.warning,\n\t\t[ListrDefaultRendererLogLevels.ROLLED_BACK]: figures.arrowLeft,\n\t\t[ListrDefaultRendererLogLevels.FAILED]: figures.cross,\n\t\t[ListrDefaultRendererLogLevels.FAILED_WITH_FAILED_SUBTASKS]: figures.pointer,\n\t\t[ListrDefaultRendererLogLevels.WAITING]: figures.squareSmallFilled,\n\t\t[ListrDefaultRendererLogLevels.PAUSED]: figures.squareSmallFilled\n\t},\n\tcolor: {\n\t\t[ListrDefaultRendererLogLevels.SKIPPED_WITH_COLLAPSE]: color.yellow,\n\t\t[ListrDefaultRendererLogLevels.SKIPPED_WITHOUT_COLLAPSE]: color.yellow,\n\t\t[ListrDefaultRendererLogLevels.PENDING]: color.yellow,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED]: color.green,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SUBTASKS]: color.yellow,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SISTER_TASKS]: color.red,\n\t\t[ListrDefaultRendererLogLevels.RETRY]: color.yellowBright,\n\t\t[ListrDefaultRendererLogLevels.ROLLING_BACK]: color.redBright,\n\t\t[ListrDefaultRendererLogLevels.ROLLED_BACK]: color.redBright,\n\t\t[ListrDefaultRendererLogLevels.FAILED]: color.red,\n\t\t[ListrDefaultRendererLogLevels.FAILED_WITH_FAILED_SUBTASKS]: color.red,\n\t\t[ListrDefaultRendererLogLevels.WAITING]: color.dim,\n\t\t[ListrDefaultRendererLogLevels.PAUSED]: color.yellowBright\n\t}\n};\n\n//#endregion\n//#region src/presets/timer/parser.ts\n/**\n* A basic function to parse minutes and tasks passed given a duration.\n* Useful for renderers to show the task time.\n*/\n/* istanbul ignore next */\nfunction parseTimer(duration) {\n\tconst seconds = Math.floor(duration / 1e3);\n\tconst minutes = Math.floor(seconds / 60);\n\tlet parsedTime;\n\tif (seconds === 0 && minutes === 0) parsedTime = `0.${Math.floor(duration / 100)}s`;\n\tif (seconds > 0) parsedTime = `${seconds % 60}s`;\n\tif (minutes > 0) parsedTime = `${minutes}m${parsedTime}`;\n\treturn parsedTime;\n}\n\n//#endregion\n//#region src/presets/timer/preset.ts\n/* istanbul ignore next */\nconst PRESET_TIMER = {\n\tcondition: true,\n\tfield: parseTimer,\n\tformat: () => color.dim\n};\n\n//#endregion\n//#region src/presets/timestamp/parser.ts\n/* istanbul ignore next */\nfunction parseTimestamp() {\n\tconst now = /* @__PURE__ */ new Date();\n\treturn String(now.getHours()).padStart(2, \"0\") + \":\" + String(now.getMinutes()).padStart(2, \"0\") + \":\" + String(now.getSeconds()).padStart(2, \"0\");\n}\n\n//#endregion\n//#region src/presets/timestamp/preset.ts\n/* istanbul ignore next */\nconst PRESET_TIMESTAMP = {\n\tcondition: true,\n\tfield: parseTimestamp,\n\tformat: () => color.dim\n};\n\n//#endregion\n//#region src/renderer/default/renderer.ts\nvar DefaultRenderer = class DefaultRenderer {\n\tstatic nonTTY = false;\n\tstatic rendererOptions = {\n\t\tindentation: 2,\n\t\tclearOutput: false,\n\t\tshowSubtasks: true,\n\t\tcollapseSubtasks: true,\n\t\tcollapseSkips: true,\n\t\tshowSkipMessage: true,\n\t\tsuffixSkips: false,\n\t\tcollapseErrors: true,\n\t\tshowErrorMessage: true,\n\t\tsuffixRetries: true,\n\t\tlazy: false,\n\t\tremoveEmptyLines: true,\n\t\tformatOutput: \"wrap\",\n\t\tpausedTimer: {\n\t\t\t...PRESET_TIMER,\n\t\t\tformat: () => color.yellowBright\n\t\t}\n\t};\n\tstatic rendererTaskOptions = { outputBar: true };\n\tprompt;\n\tactivePrompt;\n\tspinner;\n\tlogger;\n\tupdater;\n\ttruncate;\n\twrap;\n\tbuffer = {\n\t\toutput: /* @__PURE__ */ new Map(),\n\t\tbottom: /* @__PURE__ */ new Map()\n\t};\n\tcache = {\n\t\trender: /* @__PURE__ */ new Map(),\n\t\trendererOptions: /* @__PURE__ */ new Map(),\n\t\trendererTaskOptions: /* @__PURE__ */ new Map()\n\t};\n\tconstructor(tasks, options, events) {\n\t\tthis.tasks = tasks;\n\t\tthis.options = options;\n\t\tthis.events = events;\n\t\tthis.options = {\n\t\t\t...DefaultRenderer.rendererOptions,\n\t\t\t...this.options,\n\t\t\ticon: {\n\t\t\t\t...LISTR_DEFAULT_RENDERER_STYLE.icon,\n\t\t\t\t...options?.icon ?? {}\n\t\t\t},\n\t\t\tcolor: {\n\t\t\t\t...LISTR_DEFAULT_RENDERER_STYLE.color,\n\t\t\t\t...options?.color ?? {}\n\t\t\t}\n\t\t};\n\t\tthis.spinner = this.options.spinner ?? new Spinner();\n\t\tthis.logger = this.options.logger ?? new ListrLogger({\n\t\t\tuseIcons: true,\n\t\t\ttoStderr: []\n\t\t});\n\t\tthis.logger.options.icon = this.options.icon;\n\t\tthis.logger.options.color = this.options.color;\n\t}\n\tasync render() {\n\t\tconst { createLogUpdate } = await import(\"log-update\");\n\t\tconst { default: truncate } = await import(\"cli-truncate\");\n\t\tconst { default: wrap } = await import(\"wrap-ansi\");\n\t\tthis.updater = createLogUpdate(this.logger.process.stdout);\n\t\tthis.truncate = truncate;\n\t\tthis.wrap = wrap;\n\t\tthis.logger.process.hijack();\n\t\t/* istanbul ignore if */\n\t\tif (!this.options?.lazy) this.spinner.start(() => {\n\t\t\tthis.update();\n\t\t});\n\t\tthis.events.on(ListrEventType.SHOULD_REFRESH_RENDER, () => {\n\t\t\tthis.update();\n\t\t});\n\t}\n\tupdate() {\n\t\tthis.updater(this.create());\n\t}\n\tend() {\n\t\tthis.spinner.stop();\n\t\tthis.updater.clear();\n\t\tthis.updater.done();\n\t\tif (!this.options.clearOutput) this.logger.process.toStdout(this.create({ prompt: false }));\n\t\tthis.logger.process.release();\n\t}\n\tcreate(options) {\n\t\toptions = {\n\t\t\ttasks: true,\n\t\t\tbottomBar: true,\n\t\t\tprompt: true,\n\t\t\t...options\n\t\t};\n\t\tconst render = [];\n\t\tconst renderTasks = this.renderer(this.tasks);\n\t\tconst renderBottomBar = this.renderBottomBar();\n\t\tconst renderPrompt = this.renderPrompt();\n\t\tif (options.tasks && renderTasks.length > 0) render.push(...renderTasks);\n\t\tif (options.bottomBar && renderBottomBar.length > 0) {\n\t\t\tif (render.length > 0) render.push(\"\");\n\t\t\trender.push(...renderBottomBar);\n\t\t}\n\t\tif (options.prompt && renderPrompt.length > 0) {\n\t\t\tif (render.length > 0) render.push(\"\");\n\t\t\trender.push(...renderPrompt);\n\t\t}\n\t\treturn render.join(EOL);\n\t}\n\tstyle(task, output = false) {\n\t\tconst rendererOptions = this.cache.rendererOptions.get(task.id);\n\t\tif (task.isSkipped()) {\n\t\t\tif (output || rendererOptions.collapseSkips) return this.logger.icon(ListrDefaultRendererLogLevels.SKIPPED_WITH_COLLAPSE);\n\t\t\telse if (rendererOptions.collapseSkips === false) return this.logger.icon(ListrDefaultRendererLogLevels.SKIPPED_WITHOUT_COLLAPSE);\n\t\t}\n\t\tif (output) {\n\t\t\tif (this.shouldOutputToBottomBar(task)) return this.logger.icon(ListrDefaultRendererLogLevels.OUTPUT_WITH_BOTTOMBAR);\n\t\t\treturn this.logger.icon(ListrDefaultRendererLogLevels.OUTPUT);\n\t\t}\n\t\tif (task.hasSubtasks()) {\n\t\t\tif (task.isStarted() || task.isPrompt() && rendererOptions.showSubtasks !== false && !task.subtasks.every((subtask) => !subtask.hasTitle())) return this.logger.icon(ListrDefaultRendererLogLevels.PENDING);\n\t\t\telse if (task.isCompleted() && task.subtasks.some((subtask) => subtask.hasFailed())) return this.logger.icon(ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SUBTASKS);\n\t\t\telse if (task.hasFailed()) return this.logger.icon(ListrDefaultRendererLogLevels.FAILED_WITH_FAILED_SUBTASKS);\n\t\t}\n\t\tif (task.isStarted() || task.isPrompt()) return this.logger.icon(ListrDefaultRendererLogLevels.PENDING, !this.options?.lazy && this.spinner.fetch());\n\t\telse if (task.isCompleted()) return this.logger.icon(ListrDefaultRendererLogLevels.COMPLETED);\n\t\telse if (task.isRetrying()) return this.logger.icon(ListrDefaultRendererLogLevels.RETRY, !this.options?.lazy && this.spinner.fetch());\n\t\telse if (task.isRollingBack()) return this.logger.icon(ListrDefaultRendererLogLevels.ROLLING_BACK, !this.options?.lazy && this.spinner.fetch());\n\t\telse if (task.hasRolledBack()) return this.logger.icon(ListrDefaultRendererLogLevels.ROLLED_BACK);\n\t\telse if (task.hasFailed()) return this.logger.icon(ListrDefaultRendererLogLevels.FAILED);\n\t\telse if (task.isPaused()) return this.logger.icon(ListrDefaultRendererLogLevels.PAUSED);\n\t\treturn this.logger.icon(ListrDefaultRendererLogLevels.WAITING);\n\t}\n\tformat(message, icon, level) {\n\t\tif (message.trim() === \"\") return [];\n\t\tif (icon) message = icon + \" \" + message;\n\t\tlet parsed;\n\t\tconst columns = (process.stdout.columns ?? 80) - level * this.options.indentation - 2;\n\t\tswitch (this.options.formatOutput) {\n\t\t\tcase \"truncate\":\n\t\t\t\tparsed = message.split(EOL).map((s, i) => {\n\t\t\t\t\treturn this.truncate(this.indent(s, i), columns);\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"wrap\":\n\t\t\t\tparsed = this.wrap(message, columns, {\n\t\t\t\t\thard: true,\n\t\t\t\t\ttrim: false\n\t\t\t\t}).split(EOL).map((s, i) => this.indent(s, i));\n\t\t\t\tbreak;\n\t\t\tdefault: throw new ListrRendererError(\"Format option for the renderer is wrong.\");\n\t\t}\n\t\tif (this.options.removeEmptyLines) parsed = parsed.filter(Boolean);\n\t\treturn parsed.map((str) => indent(str, level * this.options.indentation));\n\t}\n\tshouldOutputToOutputBar(task) {\n\t\tconst outputBar = this.cache.rendererTaskOptions.get(task.id).outputBar;\n\t\treturn typeof outputBar === \"number\" && outputBar !== 0 || typeof outputBar === \"boolean\" && outputBar !== false;\n\t}\n\tshouldOutputToBottomBar(task) {\n\t\tconst bottomBar = this.cache.rendererTaskOptions.get(task.id).bottomBar;\n\t\treturn typeof bottomBar === \"number\" && bottomBar !== 0 || typeof bottomBar === \"boolean\" && bottomBar !== false || !task.hasTitle();\n\t}\n\trenderer(tasks, level = 0) {\n\t\treturn tasks.flatMap((task) => {\n\t\t\tif (!task.isEnabled()) return [];\n\t\t\tif (this.cache.render.has(task.id)) return this.cache.render.get(task.id);\n\t\t\tthis.calculate(task);\n\t\t\tthis.setupBuffer(task);\n\t\t\tconst rendererOptions = this.cache.rendererOptions.get(task.id);\n\t\t\tconst rendererTaskOptions = this.cache.rendererTaskOptions.get(task.id);\n\t\t\tconst output = [];\n\t\t\tif (task.isPrompt()) {\n\t\t\t\tif (this.activePrompt && this.activePrompt !== task.id) throw new ListrRendererError(\"Only one prompt can be active at the given time, please re-evaluate your task design.\");\n\t\t\t\telse if (!this.activePrompt) {\n\t\t\t\t\ttask.on(ListrTaskEventType.PROMPT, (prompt) => {\n\t\t\t\t\t\tconst cleansed = cleanseAnsi(prompt);\n\t\t\t\t\t\tif (cleansed) this.prompt = cleansed;\n\t\t\t\t\t});\n\t\t\t\t\ttask.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\t\t\tif (state === ListrTaskState.PROMPT_COMPLETED || task.hasFinalized() || task.hasReset()) {\n\t\t\t\t\t\t\tthis.prompt = null;\n\t\t\t\t\t\t\tthis.activePrompt = null;\n\t\t\t\t\t\t\ttask.off(ListrTaskEventType.PROMPT);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis.activePrompt = task.id;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (task.hasTitle()) if (!(tasks.some((task$1) => task$1.hasFailed()) && !task.hasFailed() && task.options.exitOnError !== false && !(task.isCompleted() || task.isSkipped()))) if (task.hasFailed() && rendererOptions.collapseErrors) output.push(...this.format(!task.hasSubtasks() && task.message.error && rendererOptions.showErrorMessage ? task.message.error : task.title, this.style(task), level));\n\t\t\telse if (task.isSkipped() && rendererOptions.collapseSkips) output.push(...this.format(this.logger.suffix(task.message.skip && rendererOptions.showSkipMessage ? task.message.skip : task.title, {\n\t\t\t\tfield: ListrLogLevels.SKIPPED,\n\t\t\t\tcondition: rendererOptions.suffixSkips,\n\t\t\t\tformat: () => color.dim\n\t\t\t}), this.style(task), level));\n\t\t\telse if (task.isRetrying()) output.push(...this.format(this.logger.suffix(task.title, {\n\t\t\t\tfield: `${ListrLogLevels.RETRY}:${task.message.retry.count}`,\n\t\t\t\tformat: () => color.yellow,\n\t\t\t\tcondition: rendererOptions.suffixRetries\n\t\t\t}), this.style(task), level));\n\t\t\telse if (task.isCompleted() && task.hasTitle() && assertFunctionOrSelf(rendererTaskOptions.timer?.condition, task.message.duration)) output.push(...this.format(this.logger.suffix(task?.title, {\n\t\t\t\t...rendererTaskOptions.timer,\n\t\t\t\targs: [task.message.duration]\n\t\t\t}), this.style(task), level));\n\t\t\telse if (task.isPaused()) output.push(...this.format(this.logger.suffix(task.title, {\n\t\t\t\t...rendererOptions.pausedTimer,\n\t\t\t\targs: [task.message.paused - Date.now()]\n\t\t\t}), this.style(task), level));\n\t\t\telse output.push(...this.format(task.title, this.style(task), level));\n\t\t\telse output.push(...this.format(task.title, this.logger.icon(ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SISTER_TASKS), level));\n\t\t\tif (!task.hasSubtasks() || !rendererOptions.showSubtasks) {\n\t\t\t\tif (task.hasFailed() && rendererOptions.collapseErrors === false && (rendererOptions.showErrorMessage || !rendererOptions.showSubtasks)) output.push(...this.dump(task, level, ListrLogLevels.FAILED));\n\t\t\t\telse if (task.isSkipped() && rendererOptions.collapseSkips === false && (rendererOptions.showSkipMessage || !rendererOptions.showSubtasks)) output.push(...this.dump(task, level, ListrLogLevels.SKIPPED));\n\t\t\t}\n\t\t\tif (task.isPending() || rendererTaskOptions.persistentOutput) output.push(...this.renderOutputBar(task, level));\n\t\t\tif (rendererOptions.showSubtasks !== false && task.hasSubtasks() && (task.isPending() || task.hasFinalized() && !task.hasTitle() || task.isCompleted() && rendererOptions.collapseSubtasks === false && !task.subtasks.some((subtask) => this.cache.rendererOptions.get(subtask.id)?.collapseSubtasks === true) || task.subtasks.some((subtask) => this.cache.rendererOptions.get(subtask.id)?.collapseSubtasks === false) || task.subtasks.some((subtask) => subtask.hasFailed()) || task.subtasks.some((subtask) => subtask.hasRolledBack()))) {\n\t\t\t\tconst subtaskLevel = !task.hasTitle() ? level : level + 1;\n\t\t\t\tconst subtaskRender = this.renderer(task.subtasks, subtaskLevel);\n\t\t\t\toutput.push(...subtaskRender);\n\t\t\t}\n\t\t\tif (task.hasFinalized()) {\n\t\t\t\tif (!rendererTaskOptions.persistentOutput) {\n\t\t\t\t\tthis.buffer.bottom.delete(task.id);\n\t\t\t\t\tthis.buffer.output.delete(task.id);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (task.isClosed()) {\n\t\t\t\tthis.cache.render.set(task.id, output);\n\t\t\t\tthis.reset(task);\n\t\t\t}\n\t\t\treturn output;\n\t\t});\n\t}\n\trenderOutputBar(task, level) {\n\t\tconst output = this.buffer.output.get(task.id);\n\t\tif (!output) return [];\n\t\treturn output.all.flatMap((o) => this.dump(task, level, ListrLogLevels.OUTPUT, o.entry));\n\t}\n\trenderBottomBar() {\n\t\tif (this.buffer.bottom.size === 0) return [];\n\t\treturn Array.from(this.buffer.bottom.values()).flatMap((output) => output.all).sort((a, b) => a.time - b.time).map((output) => output.entry);\n\t}\n\trenderPrompt() {\n\t\tif (!this.prompt) return [];\n\t\treturn [this.prompt];\n\t}\n\tcalculate(task) {\n\t\tif (this.cache.rendererOptions.has(task.id) && this.cache.rendererTaskOptions.has(task.id)) return;\n\t\tconst rendererOptions = {\n\t\t\t...this.options,\n\t\t\t...task.rendererOptions\n\t\t};\n\t\tthis.cache.rendererOptions.set(task.id, rendererOptions);\n\t\tthis.cache.rendererTaskOptions.set(task.id, {\n\t\t\t...DefaultRenderer.rendererTaskOptions,\n\t\t\ttimer: rendererOptions.timer,\n\t\t\t...task.rendererTaskOptions\n\t\t});\n\t}\n\tsetupBuffer(task) {\n\t\tif (this.buffer.bottom.has(task.id) || this.buffer.output.has(task.id)) return;\n\t\tconst rendererTaskOptions = this.cache.rendererTaskOptions.get(task.id);\n\t\tif (this.shouldOutputToBottomBar(task) && !this.buffer.bottom.has(task.id)) {\n\t\t\tthis.buffer.bottom.set(task.id, new ProcessOutputBuffer({ limit: typeof rendererTaskOptions.bottomBar === \"number\" ? rendererTaskOptions.bottomBar : 1 }));\n\t\t\ttask.on(ListrTaskEventType.OUTPUT, (output) => {\n\t\t\t\tconst data = this.dump(task, -1, ListrLogLevels.OUTPUT, output);\n\t\t\t\tthis.buffer.bottom.get(task.id).write(data.join(EOL));\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase ListrTaskState.RETRY || ListrTaskState.ROLLING_BACK:\n\t\t\t\t\t\tthis.buffer.bottom.delete(task.id);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (this.shouldOutputToOutputBar(task) && !this.buffer.output.has(task.id)) {\n\t\t\tthis.buffer.output.set(task.id, new ProcessOutputBuffer({ limit: typeof rendererTaskOptions.outputBar === \"number\" ? rendererTaskOptions.outputBar : 1 }));\n\t\t\ttask.on(ListrTaskEventType.OUTPUT, (output) => {\n\t\t\t\tthis.buffer.output.get(task.id).write(output);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase ListrTaskState.RETRY || ListrTaskState.ROLLING_BACK:\n\t\t\t\t\t\tthis.buffer.output.delete(task.id);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treset(task) {\n\t\tthis.cache.rendererOptions.delete(task.id);\n\t\tthis.cache.rendererTaskOptions.delete(task.id);\n\t\tthis.buffer.output.delete(task.id);\n\t}\n\tdump(task, level, source = ListrLogLevels.OUTPUT, data) {\n\t\tif (!data) switch (source) {\n\t\t\tcase ListrLogLevels.OUTPUT:\n\t\t\t\tdata = task.output;\n\t\t\t\tbreak;\n\t\t\tcase ListrLogLevels.SKIPPED:\n\t\t\t\tdata = task.message.skip;\n\t\t\t\tbreak;\n\t\t\tcase ListrLogLevels.FAILED:\n\t\t\t\tdata = task.message.error;\n\t\t\t\tbreak;\n\t\t}\n\t\tif (task.hasTitle() && source === ListrLogLevels.FAILED && data === task.title || typeof data !== \"string\") return [];\n\t\tif (source === ListrLogLevels.OUTPUT) data = cleanseAnsi(data);\n\t\treturn this.format(data, this.style(task, true), level + 1);\n\t}\n\tindent(str, i) {\n\t\treturn i > 0 ? indent(str.trimEnd(), this.options.indentation) : str.trimEnd();\n\t}\n};\n\n//#endregion\n//#region src/renderer/silent/renderer.ts\nvar SilentRenderer = class {\n\tstatic nonTTY = true;\n\tstatic rendererOptions;\n\tstatic rendererTaskOptions;\n\tconstructor(tasks, options) {\n\t\tthis.tasks = tasks;\n\t\tthis.options = options;\n\t}\n\trender() {}\n\tend() {}\n};\n\n//#endregion\n//#region src/renderer/simple/renderer.ts\nvar SimpleRenderer = class SimpleRenderer {\n\tstatic nonTTY = true;\n\tstatic rendererOptions = { pausedTimer: {\n\t\t...PRESET_TIMER,\n\t\tfield: (time) => `${ListrLogLevels.PAUSED}:${time}`,\n\t\tformat: () => color.yellowBright\n\t} };\n\tstatic rendererTaskOptions = {};\n\tlogger;\n\tcache = {\n\t\trendererOptions: /* @__PURE__ */ new Map(),\n\t\trendererTaskOptions: /* @__PURE__ */ new Map()\n\t};\n\tconstructor(tasks, options) {\n\t\tthis.tasks = tasks;\n\t\tthis.options = options;\n\t\tthis.options = {\n\t\t\t...SimpleRenderer.rendererOptions,\n\t\t\t...options,\n\t\t\ticon: {\n\t\t\t\t...LISTR_LOGGER_STYLE.icon,\n\t\t\t\t...options?.icon ?? {}\n\t\t\t},\n\t\t\tcolor: {\n\t\t\t\t...LISTR_LOGGER_STYLE.color,\n\t\t\t\t...options?.color ?? {}\n\t\t\t}\n\t\t};\n\t\tthis.logger = this.options.logger ?? new ListrLogger({\n\t\t\tuseIcons: true,\n\t\t\ttoStderr: LISTR_LOGGER_STDERR_LEVELS\n\t\t});\n\t\tthis.logger.options.icon = this.options.icon;\n\t\tthis.logger.options.color = this.options.color;\n\t\tif (this.options.timestamp) this.logger.options.fields.prefix.unshift(this.options.timestamp);\n\t}\n\tend() {}\n\trender() {\n\t\tthis.renderer(this.tasks);\n\t}\n\trenderer(tasks) {\n\t\ttasks.forEach((task) => {\n\t\t\tthis.calculate(task);\n\t\t\ttask.once(ListrTaskEventType.CLOSED, () => {\n\t\t\t\tthis.reset(task);\n\t\t\t});\n\t\t\tconst rendererOptions = this.cache.rendererOptions.get(task.id);\n\t\t\tconst rendererTaskOptions = this.cache.rendererTaskOptions.get(task.id);\n\t\t\ttask.on(ListrTaskEventType.SUBTASK, (subtasks) => {\n\t\t\t\tthis.renderer(subtasks);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\tif (!task.hasTitle()) return;\n\t\t\t\tif (state === ListrTaskState.STARTED) this.logger.log(ListrLogLevels.STARTED, task.title);\n\t\t\t\telse if (state === ListrTaskState.COMPLETED) {\n\t\t\t\t\tconst timer = rendererTaskOptions?.timer;\n\t\t\t\t\tthis.logger.log(ListrLogLevels.COMPLETED, task.title, timer && { suffix: {\n\t\t\t\t\t\t...timer,\n\t\t\t\t\t\tcondition: !!task.message?.duration && timer.condition,\n\t\t\t\t\t\targs: [task.message.duration]\n\t\t\t\t\t} });\n\t\t\t\t} else if (state === ListrTaskState.PROMPT) {\n\t\t\t\t\tthis.logger.process.hijack();\n\t\t\t\t\ttask.on(ListrTaskEventType.PROMPT, (prompt) => {\n\t\t\t\t\t\tthis.logger.process.toStderr(prompt, false);\n\t\t\t\t\t});\n\t\t\t\t} else if (state === ListrTaskState.PROMPT_COMPLETED) {\n\t\t\t\t\ttask.off(ListrTaskEventType.PROMPT);\n\t\t\t\t\tthis.logger.process.release();\n\t\t\t\t}\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.OUTPUT, (output) => {\n\t\t\t\tthis.logger.log(ListrLogLevels.OUTPUT, output);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.MESSAGE, (message) => {\n\t\t\t\tif (message.error) this.logger.log(ListrLogLevels.FAILED, task.title, { suffix: {\n\t\t\t\t\tfield: `${ListrLogLevels.FAILED}: ${message.error}`,\n\t\t\t\t\tformat: () => color.red\n\t\t\t\t} });\n\t\t\t\telse if (message.skip) this.logger.log(ListrLogLevels.SKIPPED, task.title, { suffix: {\n\t\t\t\t\tfield: `${ListrLogLevels.SKIPPED}: ${message.skip}`,\n\t\t\t\t\tformat: () => color.yellow\n\t\t\t\t} });\n\t\t\t\telse if (message.rollback) this.logger.log(ListrLogLevels.ROLLBACK, task.title, { suffix: {\n\t\t\t\t\tfield: `${ListrLogLevels.ROLLBACK}: ${message.rollback}`,\n\t\t\t\t\tformat: () => color.red\n\t\t\t\t} });\n\t\t\t\telse if (message.retry) this.logger.log(ListrLogLevels.RETRY, task.title, { suffix: {\n\t\t\t\t\tfield: `${ListrLogLevels.RETRY}:${message.retry.count}`,\n\t\t\t\t\tformat: () => color.red\n\t\t\t\t} });\n\t\t\t\telse if (message.paused) {\n\t\t\t\t\tconst timer = rendererOptions?.pausedTimer;\n\t\t\t\t\tthis.logger.log(ListrLogLevels.PAUSED, task.title, timer && { suffix: {\n\t\t\t\t\t\t...timer,\n\t\t\t\t\t\tcondition: !!message?.paused && timer.condition,\n\t\t\t\t\t\targs: [message.paused - Date.now()]\n\t\t\t\t\t} });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\tcalculate(task) {\n\t\tif (this.cache.rendererOptions.has(task.id) && this.cache.rendererTaskOptions.has(task.id)) return;\n\t\tconst rendererOptions = {\n\t\t\t...this.options,\n\t\t\t...task.rendererOptions\n\t\t};\n\t\tthis.cache.rendererOptions.set(task.id, rendererOptions);\n\t\tthis.cache.rendererTaskOptions.set(task.id, {\n\t\t\t...SimpleRenderer.rendererTaskOptions,\n\t\t\ttimer: rendererOptions.timer,\n\t\t\t...task.rendererTaskOptions\n\t\t});\n\t}\n\treset(task) {\n\t\tthis.cache.rendererOptions.delete(task.id);\n\t\tthis.cache.rendererTaskOptions.delete(task.id);\n\t}\n};\n\n//#endregion\n//#region src/renderer/test/serializer.ts\nvar TestRendererSerializer = class {\n\tconstructor(options) {\n\t\tthis.options = options;\n\t}\n\tserialize(event, data, task) {\n\t\treturn JSON.stringify(this.generate(event, data, task));\n\t}\n\tgenerate(event, data, task) {\n\t\tconst output = {\n\t\t\tevent,\n\t\t\tdata\n\t\t};\n\t\tif (typeof this.options?.task !== \"boolean\") {\n\t\t\tconst t = Object.fromEntries(this.options.task.map((entity) => {\n\t\t\t\tconst property = task[entity];\n\t\t\t\tif (typeof property === \"function\") return [entity, property.call(task)];\n\t\t\t\treturn [entity, property];\n\t\t\t}));\n\t\t\tif (Object.keys(task).length > 0) output.task = t;\n\t\t}\n\t\treturn output;\n\t}\n};\n\n//#endregion\n//#region src/renderer/test/renderer.ts\nvar TestRenderer = class TestRenderer {\n\tstatic nonTTY = true;\n\tstatic rendererOptions = {\n\t\tsubtasks: true,\n\t\tstate: Object.values(ListrTaskState),\n\t\toutput: true,\n\t\tprompt: true,\n\t\ttitle: true,\n\t\tmessages: [\n\t\t\t\"skip\",\n\t\t\t\"error\",\n\t\t\t\"retry\",\n\t\t\t\"rollback\",\n\t\t\t\"paused\"\n\t\t],\n\t\tmessagesToStderr: [\n\t\t\t\"error\",\n\t\t\t\"rollback\",\n\t\t\t\"retry\"\n\t\t],\n\t\ttask: [\n\t\t\t\"hasRolledBack\",\n\t\t\t\"isRollingBack\",\n\t\t\t\"isCompleted\",\n\t\t\t\"isSkipped\",\n\t\t\t\"hasFinalized\",\n\t\t\t\"hasSubtasks\",\n\t\t\t\"title\",\n\t\t\t\"hasReset\",\n\t\t\t\"hasTitle\",\n\t\t\t\"isPrompt\",\n\t\t\t\"isPaused\",\n\t\t\t\"isPending\",\n\t\t\t\"isSkipped\",\n\t\t\t\"isStarted\",\n\t\t\t\"hasFailed\",\n\t\t\t\"isEnabled\",\n\t\t\t\"isRetrying\",\n\t\t\t\"path\"\n\t\t]\n\t};\n\tstatic rendererTaskOptions;\n\tlogger;\n\tserializer;\n\tconstructor(tasks, options) {\n\t\tthis.tasks = tasks;\n\t\tthis.options = options;\n\t\tthis.options = {\n\t\t\t...TestRenderer.rendererOptions,\n\t\t\t...this.options\n\t\t};\n\t\tthis.logger = this.options.logger ?? new ListrLogger({ useIcons: false });\n\t\tthis.serializer = new TestRendererSerializer(this.options);\n\t}\n\trender() {\n\t\tthis.renderer(this.tasks);\n\t}\n\tend() {}\n\trenderer(tasks) {\n\t\ttasks.forEach((task) => {\n\t\t\tif (this.options.subtasks) task.on(ListrTaskEventType.SUBTASK, (subtasks) => {\n\t\t\t\tthis.renderer(subtasks);\n\t\t\t});\n\t\t\tif (this.options.state) task.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\tthis.logger.toStdout(this.serializer.serialize(ListrTaskEventType.STATE, state, task));\n\t\t\t});\n\t\t\tif (this.options.output) task.on(ListrTaskEventType.OUTPUT, (data) => {\n\t\t\t\tthis.logger.toStdout(this.serializer.serialize(ListrTaskEventType.OUTPUT, data, task));\n\t\t\t});\n\t\t\tif (this.options.prompt) task.on(ListrTaskEventType.PROMPT, (prompt) => {\n\t\t\t\tthis.logger.toStdout(this.serializer.serialize(ListrTaskEventType.PROMPT, prompt, task));\n\t\t\t});\n\t\t\tif (this.options.title) task.on(ListrTaskEventType.TITLE, (title) => {\n\t\t\t\tthis.logger.toStdout(this.serializer.serialize(ListrTaskEventType.TITLE, title, task));\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.MESSAGE, (message) => {\n\t\t\t\tconst parsed = Object.fromEntries(Object.entries(message).map(([key, value]) => {\n\t\t\t\t\tif (this.options.messages.includes(key)) return [key, value];\n\t\t\t\t}).filter(Boolean));\n\t\t\t\tif (Object.keys(parsed).length > 0) {\n\t\t\t\t\tconst output = this.serializer.serialize(ListrTaskEventType.MESSAGE, parsed, task);\n\t\t\t\t\tif (this.options.messagesToStderr.some((state) => Object.keys(parsed).includes(state))) this.logger.toStderr(output);\n\t\t\t\t\telse this.logger.toStdout(output);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n};\n\n//#endregion\n//#region src/renderer/verbose/renderer.ts\nvar VerboseRenderer = class VerboseRenderer {\n\tstatic nonTTY = true;\n\tstatic rendererOptions = {\n\t\tlogTitleChange: false,\n\t\tpausedTimer: {\n\t\t\t...PRESET_TIMER,\n\t\t\tformat: () => color.yellowBright\n\t\t}\n\t};\n\tstatic rendererTaskOptions;\n\tlogger;\n\tcache = {\n\t\trendererOptions: /* @__PURE__ */ new Map(),\n\t\trendererTaskOptions: /* @__PURE__ */ new Map()\n\t};\n\tconstructor(tasks, options) {\n\t\tthis.tasks = tasks;\n\t\tthis.options = options;\n\t\tthis.options = {\n\t\t\t...VerboseRenderer.rendererOptions,\n\t\t\t...this.options,\n\t\t\ticon: {\n\t\t\t\t...LISTR_LOGGER_STYLE.icon,\n\t\t\t\t...options?.icon ?? {}\n\t\t\t},\n\t\t\tcolor: {\n\t\t\t\t...LISTR_LOGGER_STYLE.color,\n\t\t\t\t...options?.color ?? {}\n\t\t\t}\n\t\t};\n\t\tthis.logger = this.options.logger ?? new ListrLogger({\n\t\t\tuseIcons: false,\n\t\t\ttoStderr: LISTR_LOGGER_STDERR_LEVELS\n\t\t});\n\t\tthis.logger.options.icon = this.options.icon;\n\t\tthis.logger.options.color = this.options.color;\n\t\tif (this.options.timestamp) this.logger.options.fields.prefix.unshift(this.options.timestamp);\n\t}\n\trender() {\n\t\tthis.renderer(this.tasks);\n\t}\n\tend() {}\n\trenderer(tasks) {\n\t\ttasks.forEach((task) => {\n\t\t\tthis.calculate(task);\n\t\t\ttask.once(ListrTaskEventType.CLOSED, () => {\n\t\t\t\tthis.reset(task);\n\t\t\t});\n\t\t\tconst rendererOptions = this.cache.rendererOptions.get(task.id);\n\t\t\tconst rendererTaskOptions = this.cache.rendererTaskOptions.get(task.id);\n\t\t\ttask.on(ListrTaskEventType.SUBTASK, (subtasks) => {\n\t\t\t\tthis.renderer(subtasks);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\tif (!task.hasTitle()) return;\n\t\t\t\tif (state === ListrTaskState.STARTED) this.logger.log(ListrLogLevels.STARTED, task.title);\n\t\t\t\telse if (state === ListrTaskState.COMPLETED) {\n\t\t\t\t\tconst timer = rendererTaskOptions.timer;\n\t\t\t\t\tthis.logger.log(ListrLogLevels.COMPLETED, task.title, timer && { suffix: {\n\t\t\t\t\t\t...timer,\n\t\t\t\t\t\tcondition: !!task.message?.duration && timer.condition,\n\t\t\t\t\t\targs: [task.message.duration]\n\t\t\t\t\t} });\n\t\t\t\t}\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.OUTPUT, (data) => {\n\t\t\t\tthis.logger.log(ListrLogLevels.OUTPUT, data);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.PROMPT, (prompt) => {\n\t\t\t\tconst cleansed = cleanseAnsi(prompt);\n\t\t\t\tif (cleansed) this.logger.log(ListrLogLevels.PROMPT, cleansed);\n\t\t\t});\n\t\t\tif (this.options?.logTitleChange !== false) task.on(ListrTaskEventType.TITLE, (title) => {\n\t\t\t\tthis.logger.log(ListrLogLevels.TITLE, title);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.MESSAGE, (message) => {\n\t\t\t\tif (message?.error) this.logger.log(ListrLogLevels.FAILED, message.error);\n\t\t\t\telse if (message?.skip) this.logger.log(ListrLogLevels.SKIPPED, message.skip);\n\t\t\t\telse if (message?.rollback) this.logger.log(ListrLogLevels.ROLLBACK, message.rollback);\n\t\t\t\telse if (message?.retry) this.logger.log(ListrLogLevels.RETRY, task.title, { suffix: message.retry.count.toString() });\n\t\t\t\telse if (message?.paused) {\n\t\t\t\t\tconst timer = rendererOptions?.pausedTimer;\n\t\t\t\t\tthis.logger.log(ListrLogLevels.PAUSED, task.title, timer && { suffix: {\n\t\t\t\t\t\t...timer,\n\t\t\t\t\t\tcondition: !!message?.paused && timer.condition,\n\t\t\t\t\t\targs: [message.paused - Date.now()]\n\t\t\t\t\t} });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\tcalculate(task) {\n\t\tif (this.cache.rendererOptions.has(task.id) && this.cache.rendererTaskOptions.has(task.id)) return;\n\t\tconst rendererOptions = {\n\t\t\t...this.options,\n\t\t\t...task.rendererOptions\n\t\t};\n\t\tthis.cache.rendererOptions.set(task.id, rendererOptions);\n\t\tthis.cache.rendererTaskOptions.set(task.id, {\n\t\t\t...VerboseRenderer.rendererTaskOptions,\n\t\t\ttimer: rendererOptions.timer,\n\t\t\t...task.rendererTaskOptions\n\t\t});\n\t}\n\treset(task) {\n\t\tthis.cache.rendererOptions.delete(task.id);\n\t\tthis.cache.rendererTaskOptions.delete(task.id);\n\t}\n};\n\n//#endregion\n//#region src/utils/ui/renderer.ts\nconst RENDERERS = {\n\tdefault: DefaultRenderer,\n\tsimple: SimpleRenderer,\n\tverbose: VerboseRenderer,\n\ttest: TestRenderer,\n\tsilent: SilentRenderer\n};\nfunction isRendererSupported(renderer) {\n\treturn process.stdout.isTTY === true || renderer.nonTTY === true;\n}\nfunction getRendererClass(renderer) {\n\tif (typeof renderer === \"string\") return RENDERERS[renderer] ?? RENDERERS.default;\n\treturn typeof renderer === \"function\" ? renderer : RENDERERS.default;\n}\nfunction getRenderer(options) {\n\tif (assertFunctionOrSelf(options?.silentRendererCondition)) return {\n\t\trenderer: getRendererClass(\"silent\"),\n\t\tselection: ListrRendererSelection.SILENT\n\t};\n\tconst r = {\n\t\trenderer: getRendererClass(options.renderer),\n\t\toptions: options.rendererOptions,\n\t\tselection: ListrRendererSelection.PRIMARY\n\t};\n\tif (!isRendererSupported(r.renderer) || assertFunctionOrSelf(options?.fallbackRendererCondition)) return {\n\t\trenderer: getRendererClass(options.fallbackRenderer),\n\t\toptions: options.fallbackRendererOptions,\n\t\tselection: ListrRendererSelection.SECONDARY\n\t};\n\treturn r;\n}\n\n//#endregion\n//#region src/utils/assert.ts\n/**\n* This function asserts the given value as a function or itself.\n* If the value itself is a function it will evaluate it with the passed in arguments,\n* elsewise it will directly return itself.\n*/\nfunction assertFunctionOrSelf(functionOrSelf, ...args) {\n\tif (typeof functionOrSelf === \"function\") return functionOrSelf(...args);\n\telse return functionOrSelf;\n}\n\n//#endregion\n//#region src/utils/clone.ts\nconst clone = rfdc({ circles: true });\n/**\n* Deep clones a object in the easiest manner.\n*/\nfunction cloneObject(obj) {\n\treturn clone(obj);\n}\n\n//#endregion\n//#region src/utils/concurrency.ts\nvar Concurrency = class {\n\tconcurrency;\n\tcount;\n\tqueue;\n\tconstructor(options) {\n\t\tthis.concurrency = options.concurrency;\n\t\tthis.count = 0;\n\t\tthis.queue = /* @__PURE__ */ new Set();\n\t}\n\tadd(fn) {\n\t\tif (this.count < this.concurrency) return this.run(fn);\n\t\treturn new Promise((resolve) => {\n\t\t\tconst callback = () => resolve(this.run(fn));\n\t\t\tthis.queue.add(callback);\n\t\t});\n\t}\n\tflush() {\n\t\tfor (const callback of this.queue) {\n\t\t\tif (this.count >= this.concurrency) break;\n\t\t\tthis.queue.delete(callback);\n\t\t\tcallback();\n\t\t}\n\t}\n\trun(fn) {\n\t\tthis.count++;\n\t\tconst promise = fn();\n\t\tconst cleanup = () => {\n\t\t\tthis.count--;\n\t\t\tthis.flush();\n\t\t};\n\t\tpromise.then(cleanup, () => {\n\t\t\tthis.queue.clear();\n\t\t});\n\t\treturn promise;\n\t}\n};\n\n//#endregion\n//#region src/utils/delay.ts\nfunction delay(time) {\n\treturn new Promise((resolve) => {\n\t\tsetTimeout(resolve, time);\n\t});\n}\n\n//#endregion\n//#region src/interfaces/listr-error.interface.ts\n/**\n* Internal error handling mechanism for Listr collects the errors and details for a failed task.\n*\n* @see {@link https://listr2.kilic.dev/task/error-handling.html}\n*/\nvar ListrError = class extends Error {\n\tpath;\n\tctx;\n\tconstructor(error, type, task) {\n\t\tsuper(error.message);\n\t\tthis.error = error;\n\t\tthis.type = type;\n\t\tthis.task = task;\n\t\tthis.name = \"ListrError\";\n\t\tthis.path = task.path;\n\t\tif (task?.options.collectErrors === \"full\") {\n\t\t\tthis.task = cloneObject(task);\n\t\t\tthis.ctx = cloneObject(task.listr.ctx);\n\t\t}\n\t\tthis.stack = error?.stack;\n\t}\n};\n\n//#endregion\n//#region src/interfaces/listr-renderer-error.interface.ts\n/**\n* Internal error coming from renderer.\n*/\nvar ListrRendererError = class extends Error {};\n\n//#endregion\n//#region src/interfaces/prompt-error.interface.ts\n/**\n* Internal error handling mechanism for Listr prompts to identify the failing cause is coming from a prompt.\n*\n* @see {@link https://listr2.kilic.dev/task/prompts.html}\n*/\nvar PromptError = class extends Error {};\n\n//#endregion\n//#region src/lib/task-wrapper.ts\n/**\n* The original Task that is defined by the user is wrapped with the TaskWrapper to provide additional functionality.\n*\n* @see {@link https://listr2.kilic.dev/task/task.html}\n*/\nvar TaskWrapper = class {\n\tconstructor(task) {\n\t\tthis.task = task;\n\t}\n\t/* istanbul ignore next */\n\tget title() {\n\t\treturn this.task.title;\n\t}\n\t/**\n\t* Title of the current task.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/title.html}\n\t*/\n\tset title(title) {\n\t\ttitle = Array.isArray(title) ? title : [title];\n\t\tthis.task.title$ = splat(title.shift(), ...title);\n\t}\n\t/* istanbul ignore next */\n\tget output() {\n\t\treturn this.task.output;\n\t}\n\t/* istanbul ignore next */\n\t/**\n\t* Send output from the current task to the renderer.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/output.html}\n\t*/\n\tset output(output) {\n\t\toutput = Array.isArray(output) ? output : [output];\n\t\tthis.task.output$ = splat(output.shift(), ...output);\n\t}\n\t/* istanbul ignore next */\n\t/** Send an output to the output channel as prompt. */\n\tset promptOutput(output) {\n\t\tthis.task.promptOutput$ = output;\n\t}\n\t/**\n\t* Creates a new set of Listr subtasks.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/subtasks.html}\n\t*/\n\tnewListr(task, options) {\n\t\tlet tasks;\n\t\tif (typeof task === \"function\") tasks = task(this);\n\t\telse tasks = task;\n\t\treturn new Listr(tasks, options, this.task);\n\t}\n\t/**\n\t* Report an error that has to be collected and handled.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/error-handling.html}\n\t*/\n\treport(error, type) {\n\t\tif (this.task.options.collectErrors !== false) this.task.listr.errors.push(new ListrError(error, type, this.task));\n\t\tthis.task.message$ = { error: error.message ?? this.task?.title };\n\t}\n\t/**\n\t* Skip the current task.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/skip.html}\n\t*/\n\tskip(message, ...metadata) {\n\t\tthis.task.state$ = ListrTaskState.SKIPPED;\n\t\tif (message) this.task.message$ = { skip: message ? splat(message, ...metadata) : this.task?.title };\n\t}\n\t/**\n\t* Check whether this task is currently in a retry state.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/retry.html}\n\t*/\n\tisRetrying() {\n\t\treturn this.task.isRetrying() ? this.task.retry : { count: 0 };\n\t}\n\t/* istanbul ignore next */\n\t/**\n\t* Create a new prompt for getting user input through the prompt adapter.\n\t* This will create a new prompt through the adapter if the task is not currently rendering a prompt or will return the active instance.\n\t*\n\t* This part of the application requires optional peer dependencies, please refer to documentation.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/prompt.html}\n\t*/\n\tprompt(adapter) {\n\t\tif (this.task.prompt) return this.task.prompt;\n\t\treturn new adapter(this.task, this);\n\t}\n\t/* istanbul ignore next */\n\t/**\n\t* Generates a fake stdout for your use case, where it will be tunnelled through Listr to handle the rendering process.\n\t*\n\t* @see {@link https://listr2.kilic.dev/renderer/process-output.html}\n\t*/\n\tstdout(type) {\n\t\treturn createWritable((chunk) => {\n\t\t\tswitch (type) {\n\t\t\t\tcase ListrTaskEventType.PROMPT:\n\t\t\t\t\tthis.promptOutput = chunk;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: this.output = chunk;\n\t\t\t}\n\t\t});\n\t}\n\t/** Run this task. */\n\trun(ctx) {\n\t\treturn this.task.run(ctx, this);\n\t}\n};\n\n//#endregion\n//#region src/lib/listr-task-event-manager.ts\nvar ListrTaskEventManager = class extends EventManager {};\n\n//#endregion\n//#region src/lib/task.ts\n/**\n* Creates and handles a runnable instance of the Task.\n*/\nvar Task = class extends ListrTaskEventManager {\n\t/** Unique id per task, can be used for identifying a Task. */\n\tid = randomUUID();\n\t/** The current state of the task. */\n\tstate = ListrTaskState.WAITING;\n\t/** Subtasks of the current task. */\n\tsubtasks;\n\t/** Title of the task. */\n\ttitle;\n\t/** Initial/Untouched version of the title for using whenever task has a reset. */\n\tinitialTitle;\n\t/** Output channel for the task. */\n\toutput;\n\t/** Current state of the retry process whenever the task is retrying. */\n\tretry;\n\t/**\n\t* A channel for messages.\n\t*\n\t* This requires a separate channel for messages like error, skip or runtime messages to further utilize in the renderers.\n\t*/\n\tmessage = {};\n\t/** Current prompt instance or prompt error whenever the task is prompting. */\n\tprompt;\n\t/** Parent task of the current task. */\n\tparent;\n\t/** Enable flag of this task. */\n\tenabled;\n\t/** User provided Task callback function to run. */\n\ttaskFn;\n\t/** Marks the task as closed. This is different from finalized since this is not really related to task itself. */\n\tclosed;\n\tconstructor(listr, task, options, rendererOptions, rendererTaskOptions) {\n\t\tsuper();\n\t\tthis.listr = listr;\n\t\tthis.task = task;\n\t\tthis.options = options;\n\t\tthis.rendererOptions = rendererOptions;\n\t\tthis.rendererTaskOptions = rendererTaskOptions;\n\t\tif (task.title) {\n\t\t\tconst title = Array.isArray(task?.title) ? task.title : [task.title];\n\t\t\tthis.title = splat(title.shift(), ...title);\n\t\t\tthis.initialTitle = this.title;\n\t\t}\n\t\tthis.taskFn = task.task;\n\t\tthis.parent = listr.parentTask;\n\t}\n\t/**\n\t* Update the current state of the Task and emit the neccassary events.\n\t*/\n\tset state$(state) {\n\t\tthis.state = state;\n\t\tthis.emit(ListrTaskEventType.STATE, state);\n\t\tif (this.hasSubtasks() && this.hasFailed()) {\n\t\t\tfor (const subtask of this.subtasks) if (subtask.state === ListrTaskState.STARTED) subtask.state$ = ListrTaskState.FAILED;\n\t\t}\n\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t}\n\t/**\n\t* Update the current output of the Task and emit the neccassary events.\n\t*/\n\tset output$(data) {\n\t\tthis.output = data;\n\t\tthis.emit(ListrTaskEventType.OUTPUT, data);\n\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t}\n\t/**\n\t* Update the current prompt output of the Task and emit the neccassary events.\n\t*/\n\tset promptOutput$(data) {\n\t\tthis.emit(ListrTaskEventType.PROMPT, data);\n\t\tif (cleanseAnsi(data)) this.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t}\n\t/**\n\t* Update or extend the current message of the Task and emit the neccassary events.\n\t*/\n\tset message$(data) {\n\t\tthis.message = {\n\t\t\t...this.message,\n\t\t\t...data\n\t\t};\n\t\tthis.emit(ListrTaskEventType.MESSAGE, data);\n\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t}\n\t/**\n\t* Update the current title of the Task and emit the neccassary events.\n\t*/\n\tset title$(title) {\n\t\tthis.title = title;\n\t\tthis.emit(ListrTaskEventType.TITLE, title);\n\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t}\n\t/**\n\t* Current task path in the hierarchy.\n\t*/\n\tget path() {\n\t\treturn [...this.listr.path, this.initialTitle];\n\t}\n\t/**\n\t* Checks whether the current task with the given context should be set as enabled.\n\t*/\n\tasync check(ctx) {\n\t\tif (this.state === ListrTaskState.WAITING) {\n\t\t\tthis.enabled = await assertFunctionOrSelf(this.task?.enabled ?? true, ctx);\n\t\t\tthis.emit(ListrTaskEventType.ENABLED, this.enabled);\n\t\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t\t}\n\t\treturn this.enabled;\n\t}\n\t/** Returns whether this task has subtasks. */\n\thasSubtasks() {\n\t\treturn this.subtasks?.length > 0;\n\t}\n\t/** Returns whether this task is finalized in someform. */\n\thasFinalized() {\n\t\treturn this.isCompleted() || this.hasFailed() || this.isSkipped() || this.hasRolledBack();\n\t}\n\t/** Returns whether this task is in progress. */\n\tisPending() {\n\t\treturn this.isStarted() || this.isPrompt() || this.hasReset();\n\t}\n\t/** Returns whether this task has started. */\n\tisStarted() {\n\t\treturn this.state === ListrTaskState.STARTED;\n\t}\n\t/** Returns whether this task is skipped. */\n\tisSkipped() {\n\t\treturn this.state === ListrTaskState.SKIPPED;\n\t}\n\t/** Returns whether this task has been completed. */\n\tisCompleted() {\n\t\treturn this.state === ListrTaskState.COMPLETED;\n\t}\n\t/** Returns whether this task has been failed. */\n\thasFailed() {\n\t\treturn this.state === ListrTaskState.FAILED;\n\t}\n\t/** Returns whether this task has an active rollback task going on. */\n\tisRollingBack() {\n\t\treturn this.state === ListrTaskState.ROLLING_BACK;\n\t}\n\t/** Returns whether the rollback action was successful. */\n\thasRolledBack() {\n\t\treturn this.state === ListrTaskState.ROLLED_BACK;\n\t}\n\t/** Returns whether this task has an actively retrying task going on. */\n\tisRetrying() {\n\t\treturn this.state === ListrTaskState.RETRY;\n\t}\n\t/** Returns whether this task has some kind of reset like retry and rollback going on. */\n\thasReset() {\n\t\treturn this.state === ListrTaskState.RETRY || this.state === ListrTaskState.ROLLING_BACK;\n\t}\n\t/** Returns whether enabled function resolves to true. */\n\tisEnabled() {\n\t\treturn this.enabled;\n\t}\n\t/** Returns whether this task actually has a title. */\n\thasTitle() {\n\t\treturn typeof this?.title === \"string\";\n\t}\n\t/** Returns whether this task has a prompt inside. */\n\tisPrompt() {\n\t\treturn this.state === ListrTaskState.PROMPT;\n\t}\n\t/** Returns whether this task is currently paused. */\n\tisPaused() {\n\t\treturn this.state === ListrTaskState.PAUSED;\n\t}\n\t/** Returns whether this task is closed. */\n\tisClosed() {\n\t\treturn this.closed;\n\t}\n\t/** Pause the given task for certain time. */\n\tasync pause(time) {\n\t\tconst state = this.state;\n\t\tthis.state$ = ListrTaskState.PAUSED;\n\t\tthis.message$ = { paused: Date.now() + time };\n\t\tawait delay(time);\n\t\tthis.state$ = state;\n\t\tthis.message$ = { paused: null };\n\t}\n\t/** Run the current task. */\n\tasync run(context, wrapper) {\n\t\tconst handleResult = (result) => {\n\t\t\tif (result instanceof Listr) {\n\t\t\t\tresult.options = {\n\t\t\t\t\t...this.options,\n\t\t\t\t\t...result.options\n\t\t\t\t};\n\t\t\t\tresult.rendererClass = getRendererClass(\"silent\");\n\t\t\t\tthis.subtasks = result.tasks;\n\t\t\t\tresult.errors = this.listr.errors;\n\t\t\t\tthis.emit(ListrTaskEventType.SUBTASK, this.subtasks);\n\t\t\t\tresult = result.run(context);\n\t\t\t} else if (result instanceof Promise) result = result.then(handleResult);\n\t\t\telse if (isReadable(result)) result = new Promise((resolve, reject) => {\n\t\t\t\tresult.on(\"data\", (data) => {\n\t\t\t\t\tthis.output$ = data.toString();\n\t\t\t\t});\n\t\t\t\tresult.on(\"error\", (error) => reject(error));\n\t\t\t\tresult.on(\"end\", () => resolve(null));\n\t\t\t});\n\t\t\telse if (isObservable(result)) result = new Promise((resolve, reject) => {\n\t\t\t\tresult.subscribe({\n\t\t\t\t\tnext: (data) => {\n\t\t\t\t\t\tthis.output$ = data;\n\t\t\t\t\t},\n\t\t\t\t\terror: reject,\n\t\t\t\t\tcomplete: resolve\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn result;\n\t\t};\n\t\tconst startTime = Date.now();\n\t\tthis.state$ = ListrTaskState.STARTED;\n\t\tconst skipped = await assertFunctionOrSelf(this.task?.skip ?? false, context);\n\t\tif (skipped) {\n\t\t\tif (typeof skipped === \"string\") this.message$ = { skip: skipped };\n\t\t\telse if (this.hasTitle()) this.message$ = { skip: this.title };\n\t\t\telse this.message$ = { skip: \"Skipped task without a title.\" };\n\t\t\tthis.state$ = ListrTaskState.SKIPPED;\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst retryCount = typeof this.task?.retry === \"number\" && this.task.retry > 0 ? this.task.retry + 1 : typeof this.task?.retry === \"object\" && this.task.retry.tries > 0 ? this.task.retry.tries + 1 : 1;\n\t\t\tconst retryDelay = typeof this.task.retry === \"object\" && this.task.retry.delay;\n\t\t\tfor (let retries = 1; retries <= retryCount; retries++) try {\n\t\t\t\tawait handleResult(this.taskFn(context, wrapper));\n\t\t\t\tbreak;\n\t\t\t} catch (err) {\n\t\t\t\tif (retries !== retryCount) {\n\t\t\t\t\tthis.retry = {\n\t\t\t\t\t\tcount: retries,\n\t\t\t\t\t\terror: err\n\t\t\t\t\t};\n\t\t\t\t\tthis.message$ = { retry: this.retry };\n\t\t\t\t\tthis.title$ = this.initialTitle;\n\t\t\t\t\tthis.output = void 0;\n\t\t\t\t\twrapper.report(err, ListrErrorTypes.WILL_RETRY);\n\t\t\t\t\tthis.state$ = ListrTaskState.RETRY;\n\t\t\t\t\tif (retryDelay) await this.pause(retryDelay);\n\t\t\t\t} else throw err;\n\t\t\t}\n\t\t\tif (this.isStarted() || this.isRetrying()) {\n\t\t\t\tthis.message$ = { duration: Date.now() - startTime };\n\t\t\t\tthis.state$ = ListrTaskState.COMPLETED;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (this.prompt instanceof PromptError) error = this.prompt;\n\t\t\tif (this.task?.rollback) {\n\t\t\t\twrapper.report(error, ListrErrorTypes.WILL_ROLLBACK);\n\t\t\t\ttry {\n\t\t\t\t\tthis.state$ = ListrTaskState.ROLLING_BACK;\n\t\t\t\t\tawait this.task.rollback(context, wrapper);\n\t\t\t\t\tthis.message$ = { rollback: this.title };\n\t\t\t\t\tthis.state$ = ListrTaskState.ROLLED_BACK;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tthis.state$ = ListrTaskState.FAILED;\n\t\t\t\t\twrapper.report(err, ListrErrorTypes.HAS_FAILED_TO_ROLLBACK);\n\t\t\t\t\tthis.close();\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tif (this.listr.options?.exitAfterRollback !== false) {\n\t\t\t\t\tthis.close();\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.state$ = ListrTaskState.FAILED;\n\t\t\t\tif (this.listr.options.exitOnError !== false && await assertFunctionOrSelf(this.task?.exitOnError, context) !== false) {\n\t\t\t\t\twrapper.report(error, ListrErrorTypes.HAS_FAILED);\n\t\t\t\t\tthis.close();\n\t\t\t\t\tthrow error;\n\t\t\t\t} else if (!this.hasSubtasks()) wrapper.report(error, ListrErrorTypes.HAS_FAILED_WITHOUT_ERROR);\n\t\t\t}\n\t\t} finally {\n\t\t\tthis.close();\n\t\t}\n\t}\n\tclose() {\n\t\tthis.emit(ListrTaskEventType.CLOSED);\n\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t\tthis.complete();\n\t}\n};\n\n//#endregion\n//#region src/lib/listr-event-manager.ts\nvar ListrEventManager = class extends EventManager {};\n\n//#endregion\n//#region src/listr.ts\n/**\n* Create a new task list with Listr.\n*\n* @see {@link https://listr2.kilic.dev/listr/listr.html}\n*/\nvar Listr = class {\n\ttasks = [];\n\terrors = [];\n\tctx;\n\tevents;\n\tpath = [];\n\trendererClass;\n\trendererClassOptions;\n\trendererSelection;\n\tboundSignalHandler;\n\tconcurrency;\n\trenderer;\n\tconstructor(task, options, parentTask) {\n\t\tthis.task = task;\n\t\tthis.options = options;\n\t\tthis.parentTask = parentTask;\n\t\tthis.options = {\n\t\t\tconcurrent: false,\n\t\t\trenderer: \"default\",\n\t\t\tfallbackRenderer: \"simple\",\n\t\t\texitOnError: true,\n\t\t\texitAfterRollback: true,\n\t\t\tcollectErrors: false,\n\t\t\tregisterSignalListeners: true,\n\t\t\t...this.parentTask?.options ?? {},\n\t\t\t...options\n\t\t};\n\t\tif (this.options.concurrent === true) this.options.concurrent = Infinity;\n\t\telse if (typeof this.options.concurrent !== \"number\") this.options.concurrent = 1;\n\t\tthis.concurrency = new Concurrency({ concurrency: this.options.concurrent });\n\t\tif (parentTask) {\n\t\t\tthis.path = [...parentTask.listr.path, parentTask.title];\n\t\t\tthis.errors = parentTask.listr.errors;\n\t\t}\n\t\tif (this.parentTask?.listr.events instanceof ListrEventManager) this.events = this.parentTask.listr.events;\n\t\telse this.events = new ListrEventManager();\n\t\t/* istanbul ignore if */\n\t\tif (this.options?.forceTTY || process.env[ListrEnvironmentVariables.FORCE_TTY]) {\n\t\t\tprocess.stdout.isTTY = true;\n\t\t\tprocess.stderr.isTTY = true;\n\t\t}\n\t\t/* istanbul ignore if */\n\t\tif (this.options?.forceUnicode) process.env[ListrEnvironmentVariables.FORCE_UNICODE] = \"1\";\n\t\tconst renderer = getRenderer({\n\t\t\trenderer: this.options.renderer,\n\t\t\trendererOptions: this.options.rendererOptions,\n\t\t\tfallbackRenderer: this.options.fallbackRenderer,\n\t\t\tfallbackRendererOptions: this.options.fallbackRendererOptions,\n\t\t\tfallbackRendererCondition: this.options?.fallbackRendererCondition,\n\t\t\tsilentRendererCondition: this.options?.silentRendererCondition\n\t\t});\n\t\tthis.rendererClass = renderer.renderer;\n\t\tthis.rendererClassOptions = renderer.options;\n\t\tthis.rendererSelection = renderer.selection;\n\t\t/* istanbul ignore next */\n\t\tthis.add(task ?? []);\n\t\t/* istanbul ignore if */\n\t\tif (this.options.registerSignalListeners) {\n\t\t\tthis.boundSignalHandler = this.signalHandler.bind(this);\n\t\t\tprocess.once(\"SIGINT\", this.boundSignalHandler).setMaxListeners(0);\n\t\t}\n\t}\n\t/**\n\t* Whether this is the root task.\n\t*/\n\tisRoot() {\n\t\treturn !this.parentTask;\n\t}\n\t/**\n\t* Whether this is a subtask of another task list.\n\t*/\n\tisSubtask() {\n\t\treturn !!this.parentTask;\n\t}\n\t/**\n\t* Add tasks to current task list.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/task.html}\n\t*/\n\tadd(tasks) {\n\t\tthis.tasks.push(...this.generate(tasks));\n\t}\n\t/**\n\t* Run the task list.\n\t*\n\t* @see {@link https://listr2.kilic.dev/listr/listr.html#run-the-generated-task-list}\n\t*/\n\tasync run(context) {\n\t\tif (!this.renderer) this.renderer = new this.rendererClass(this.tasks, this.rendererClassOptions, this.events);\n\t\tawait this.renderer.render();\n\t\tthis.ctx = this.options?.ctx ?? context ?? {};\n\t\tawait Promise.all(this.tasks.map((task) => task.check(this.ctx)));\n\t\ttry {\n\t\t\tawait Promise.all(this.tasks.map((task) => this.concurrency.add(() => this.runTask(task))));\n\t\t\tthis.renderer.end();\n\t\t\tthis.removeSignalHandler();\n\t\t} catch (err) {\n\t\t\tif (this.options.exitOnError !== false) {\n\t\t\t\tthis.renderer.end(err);\n\t\t\t\tthis.removeSignalHandler();\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\treturn this.ctx;\n\t}\n\tgenerate(tasks) {\n\t\ttasks = Array.isArray(tasks) ? tasks : [tasks];\n\t\treturn tasks.map((task) => {\n\t\t\tlet rendererTaskOptions;\n\t\t\tif (this.rendererSelection === ListrRendererSelection.PRIMARY) rendererTaskOptions = task.rendererOptions;\n\t\t\telse if (this.rendererSelection === ListrRendererSelection.SECONDARY) rendererTaskOptions = task.fallbackRendererOptions;\n\t\t\treturn new Task(this, task, this.options, this.rendererClassOptions, rendererTaskOptions);\n\t\t});\n\t}\n\tasync runTask(task) {\n\t\tif (!await task.check(this.ctx)) return;\n\t\treturn new TaskWrapper(task).run(this.ctx);\n\t}\n\tsignalHandler() {\n\t\tthis.tasks?.forEach(async (task) => {\n\t\t\tif (task.isPending()) task.state$ = ListrTaskState.FAILED;\n\t\t});\n\t\tif (this.isRoot()) {\n\t\t\tthis.renderer?.end(/* @__PURE__ */ new Error(\"Interrupted.\"));\n\t\t\tprocess.exit(127);\n\t\t}\n\t}\n\tremoveSignalHandler() {\n\t\tif (this.boundSignalHandler) process.removeListener(\"SIGINT\", this.boundSignalHandler);\n\t}\n};\n\n//#endregion\nexport { ANSI_ESCAPE, ANSI_ESCAPE_CODES, BaseEventMap, Concurrency, DefaultRenderer, EventManager, LISTR_DEFAULT_RENDERER_STYLE, LISTR_LOGGER_STDERR_LEVELS, LISTR_LOGGER_STYLE, Listr, ListrDefaultRendererLogLevels, ListrEnvironmentVariables, ListrError, ListrErrorTypes, ListrEventManager, ListrEventType, ListrLogLevels, ListrLogger, ListrPromptAdapter, ListrRendererError, ListrRendererSelection, ListrTaskEventManager, ListrTaskEventType, ListrTaskState, PRESET_TIMER, PRESET_TIMESTAMP, ProcessOutput, ProcessOutputBuffer, ProcessOutputStream, PromptError, SilentRenderer, SimpleRenderer, Spinner, TestRenderer, TestRendererSerializer, VerboseRenderer, assertFunctionOrSelf, cleanseAnsi, cloneObject, color, createWritable, delay, figures, getRenderer, getRendererClass, indent, isObservable, isReadable, isUnicodeSupported, parseTimer, parseTimestamp, splat };","import * as cmd from \"cmd-ts\";\nimport { Listr } from \"listr2\";\nimport { sandboxId } from \"../args/sandbox-id\";\nimport { scope } from \"../args/scope\";\nimport { sandboxClient } from \"../client\";\n\nexport const stop = cmd.command({\n name: \"stop\",\n aliases: [\"rm\", \"remove\"],\n description: \"Stop one or more running sandboxes\",\n args: {\n scope,\n sandboxId: cmd.positional({\n type: sandboxId,\n description: \"a sandbox ID to stop\",\n }),\n sandboxIds: cmd.restPositionals({\n type: sandboxId,\n description: \"more sandboxes to stop\",\n }),\n },\n async handler({ scope: { token, team, project }, sandboxId, sandboxIds }) {\n const tasks = Array.from(\n new Set([sandboxId, ...sandboxIds]),\n (sandboxId) => {\n return {\n title: `Stopping sandbox ${sandboxId}`,\n async task() {\n const sandbox = await sandboxClient.get({\n token,\n teamId: team,\n projectId: project,\n sandboxId,\n });\n await sandbox.stop();\n },\n };\n },\n );\n await new Listr(tasks, { concurrent: true }).run();\n },\n});\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.File = exports.Directory = exports.ExistingPath = void 0;\nconst node_fs_1 = __importDefault(require(\"node:fs\"));\nconst node_path_1 = __importDefault(require(\"node:path\"));\nconst __1 = require(\"..\");\n/**\n * Resolves an existing path. Produces an error when path does not exist.\n * When provided a relative path, extends it using the current working directory.\n */\nexports.ExistingPath = (0, __1.extendType)(__1.string, {\n displayName: \"path\",\n description: \"An existing path\",\n async from(str) {\n const resolved = node_path_1.default.resolve(str);\n if (!node_fs_1.default.existsSync(resolved)) {\n throw new Error(\"Path doesn't exist\");\n }\n return resolved;\n },\n});\n/**\n * Resolves to a directory if given one, and to a file's directory if file was given.\n * Fails when the directory or the given file does not exist.\n */\nexports.Directory = (0, __1.extendType)(exports.ExistingPath, {\n async from(resolved) {\n const stat = node_fs_1.default.statSync(resolved);\n if (stat.isDirectory()) {\n return resolved;\n }\n return node_path_1.default.dirname(resolved);\n },\n displayName: \"dir\",\n description: \"A path to a directory or a file within a directory\",\n});\n/**\n * Resolves to a path to an existing file\n */\nexports.File = (0, __1.extendType)(exports.ExistingPath, {\n async from(resolved) {\n const stat = node_fs_1.default.statSync(resolved);\n if (stat.isFile()) {\n return resolved;\n }\n throw new Error(\"Provided path is not a file\");\n },\n displayName: \"file\",\n description: \"A file in the file system\",\n});\n//# sourceMappingURL=fs.js.map","import { sandboxClient } from \"../client\";\nimport * as cmd from \"cmd-ts\";\nimport { sandboxId } from \"../args/sandbox-id\";\nimport * as Fs from \"cmd-ts/batteries/fs\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { scope } from \"../args/scope\";\nimport consume from \"node:stream/consumers\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\n\nexport const args = {} as const;\n\nconst localOrRemote = cmd.extendType(cmd.string, {\n async from(input) {\n const parts = input.split(\":\");\n if (parts.length === 2) {\n const [id, path] = parts;\n if (!id || !path) {\n throw new Error(\n [\n `Invalid copy path format: \"${input}\".`,\n `${chalk.bold(\"hint:\")} Expected format: SANDBOX_ID:PATH (e.g., sbx_abc123:/home/user/file.txt).`,\n \"╰▶ Local paths should not contain colons.\",\n ].join(\"\\n\"),\n );\n }\n return { type: \"remote\", id: await sandboxId.from(id), path } as const;\n }\n\n const file = await Fs.File.from(input);\n return { type: \"local\", file } as const;\n },\n});\n\nexport const cp = cmd.command({\n name: \"copy\",\n description: \"Copy files between your local filesystem and a remote sandbox\",\n aliases: [\"cp\"],\n args: {\n scope,\n source: cmd.positional({\n displayName: `SANDBOX_ID:PATH`,\n description: `The source file to copy from local file system, or or a sandbox_id:path from a remote sandbox`,\n type: localOrRemote,\n }),\n dest: cmd.positional({\n displayName: `SANDBOX_ID:PATH`,\n description: `The destination file to copy to local file system, or or a sandbox_id:path to a remote sandbox`,\n type: localOrRemote,\n }),\n },\n async handler({ scope, source, dest }) {\n const spinner = ora({ text: \"reading file...\" }).start();\n const sourceFile =\n source.type === \"local\"\n ? await fs.readFile(source.file)\n : await (async (src) => {\n const sandbox = await sandboxClient.get({\n sandboxId: src.id,\n teamId: scope.team,\n token: scope.token,\n projectId: scope.project,\n });\n const file = await sandbox.readFile({ path: src.path });\n if (!file) {\n return null;\n }\n return consume.buffer(file);\n })(source);\n\n if (!sourceFile) {\n if (source.type === \"remote\") {\n const dir = path.dirname(source.path);\n spinner.fail(\n [\n `File not found: ${source.path} in sandbox ${source.id}.`,\n `${chalk.bold(\"hint:\")} Verify the file path exists using \\`sandbox exec ${source.id} ls ${dir}\\`.`,\n ].join(\"\\n\"),\n );\n } else {\n spinner.fail(\"file not found\");\n }\n return;\n }\n\n spinner.text = \"writing file...\";\n\n if (dest.type === \"local\") {\n await fs.writeFile(dest.file, sourceFile);\n } else {\n const sandbox = await sandboxClient.get({\n sandboxId: dest.id,\n teamId: scope.team,\n projectId: scope.project,\n token: scope.token,\n });\n await sandbox.writeFiles([{ path: dest.path, content: sourceFile }]);\n }\n\n spinner.succeed(\"copied successfully!\");\n },\n});\n","import * as cmd from \"cmd-ts\";\nimport {\n getAuth,\n updateAuthConfig,\n OAuth,\n} from \"@vercel/sandbox/dist/auth/index.js\";\nimport { output } from \"../util/output\";\nimport chalk from \"chalk\";\nimport createDebugger from \"debug\";\n\nconst debug = createDebugger(\"sandbox:logout\");\n\nexport const logout = cmd.command({\n name: \"logout\",\n description: \"Log out of the Sandbox CLI\",\n args: {},\n async handler() {\n const auth = getAuth();\n\n if (!auth?.token) {\n output.print(\n [\n `No active session found. You are not currently logged in.`,\n `${chalk.bold(\"hint:\")} To log in, run: \\`sandbox login\\``,\n ].join(\"\\n\"),\n );\n return;\n }\n\n const oauth = await OAuth();\n await oauth.revokeToken(auth.token);\n updateAuthConfig({});\n debug(\"Configuration has been deleted\");\n output.print(\"Logged out!\");\n },\n});\n","import { subcommands } from \"cmd-ts\";\nimport { create } from \"./commands/create\";\nimport * as Run from \"./commands/run\";\nimport { list } from \"./commands/list\";\nimport { exec } from \"./commands/exec\";\nimport { ssh } from \"./commands/ssh\";\nimport { stop } from \"./commands/stop\";\nimport { cp } from \"./commands/cp\";\nimport { login } from \"./commands/login\";\nimport { logout } from \"./commands/logout\";\nimport { version } from \"./pkg\";\n\nexport const app = (opts?: { withoutAuth?: boolean; appName?: string }) =>\n subcommands({\n name: opts?.appName ?? \"sandbox\",\n description: \"Interfacing with Vercel Sandbox\",\n version,\n cmds: {\n list,\n create,\n copy: cp,\n exec,\n ssh,\n stop,\n run: Run.run,\n sh: Run.sh,\n ...(!opts?.withoutAuth && {\n login,\n logout,\n }),\n },\n });\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,59,60,61,72,73,74,75,76,77,78,79,80,81,82,83,84,85,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,122,123,124,125,126,128],"mappings":"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CZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,YAAY;GACX,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,QAAQ;GACP,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,QAAQ;GACP,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,QAAQ;GACP,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,cAAc;GACb,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,uBAAuB;GACtB,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,QAAQ;GACP,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;GACD;EACD,QAAQ;GACP,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,aAAa;GACZ,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;GACD;EACD,gBAAgB;GACf,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,kBAAkB;GACjB,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,YAAY;GACX,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,aAAa;GACZ,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,cAAc;GACb,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,YAAY;GACX,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU;IACT;IACS;IACA;IACA;IACA;IACA;IACT;IACA;IACA;IACA;IACA;GACD;EACD,OAAO;GACN,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;GACD;EACD,iBAAiB;GAChB,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,kBAAkB;GACjB,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,gBAAgB;GACf,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU,CACT,KACA,IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU,CACT,KACA,IACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU,CACT,KACA,IACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU,CACT,KACA,IACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU,CACT,KACA,IACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU,CACT,KACA,IACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU,CACT,KACA,IACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU,CACT,KACA,IACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU,CACT,KACA,IACA;GACD;EACD,YAAY;GACX,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;GACD;EACD,YAAY;GACX,YAAY;GACZ,UAAU,CACT,KACA,IACA;GACD;EACD,YAAY;GACX,YAAY;GACZ,UAAU,CACT,KACA,IACA;GACD;EACD,YAAY;GACX,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,eAAe;GACd,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,gBAAgB;GACf,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU,CACT,OACA,MACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;GACD;EACD,YAAY;GACX,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,QAAQ;GACP,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,UAAU;GACT,YAAY;GACZ,UAAU,CACT,OACA,MACA;GACD;EACD,QAAQ;GACP,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,QAAQ;GACP,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,aAAa;GACZ,YAAY;GACZ,UAAU,CACT,MACA,KACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;GACD;EACD,SAAS;GACR,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;GACD;EACD,YAAY;GACX,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,eAAe;GACd,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,YAAY;GACX,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,gBAAgB;GACf,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,aAAa;GACZ,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,WAAW;GACV,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;GACD;EACD,eAAe;GACd,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;GACD;EACD,aAAa;GACZ,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;GACD;EACD,mBAAmB;GAClB,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,cAAc;GACb,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,aAAa;GACZ,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD,iBAAiB;GAChB,YAAY;GACZ,UAAU;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD;;;;;;CCnlDD,MAAMG,aAAW,OAAO,OAAO,EAAE,qBAA6B;CAE9D,MAAM,eAAe,OAAO,KAAKA,WAAS;AAE1C,QAAO,eAAeA,YAAU,UAAU,EACzC,MAAM;AAGL,SAAOA,WADa,aADA,KAAK,MAAM,KAAK,QAAQ,GAAG,aAAa,OAAO;IAIpE,CAAC;AAEF,QAAO,UAAUA;;;;;ACZjB,SAAwBC,uBAAqB;AAC5C,KAAIC,UAAQ,aAAa,QACxB,QAAOA,UAAQ,IAAI,SAAS;AAG7B,QAAO,QAAQA,UAAQ,IAAI,GAAG,IAC1B,QAAQA,UAAQ,IAAI,WAAW,IAC/B,QAAQA,UAAQ,IAAI,iBAAiB,IACrCA,UAAQ,IAAI,eAAe,kBAC3BA,UAAQ,IAAI,iBAAiB,sBAC7BA,UAAQ,IAAI,iBAAiB,YAC7BA,UAAQ,IAAI,SAAS,oBACrBA,UAAQ,IAAI,SAAS,eACrBA,UAAQ,IAAI,sBAAsB;;;;;aCfb;AAG1B,MAAM,OAAO;CACZ,MAAMC,eAAM,KAAK,IAAI;CACrB,SAASA,eAAM,MAA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"}