nural 0.3.5 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.cjs +79 -2
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.d.cts +2 -1
- package/dist/cli/index.d.ts +2 -1
- package/dist/cli/index.js +95 -19
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +1 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/cli-width/index.js","../../node_modules/mute-stream/lib/index.js","../../node_modules/@inquirer/core/dist/lib/key.js","../../node_modules/@inquirer/core/dist/lib/errors.js","../../node_modules/@inquirer/core/dist/lib/hook-engine.js","../../node_modules/@inquirer/core/dist/lib/use-state.js","../../node_modules/@inquirer/core/dist/lib/use-effect.js","../../node_modules/@inquirer/figures/dist/index.js","../../node_modules/@inquirer/core/dist/lib/theme.js","../../node_modules/@inquirer/core/dist/lib/make-theme.js","../../node_modules/@inquirer/core/dist/lib/use-prefix.js","../../node_modules/@inquirer/core/dist/lib/use-memo.js","../../node_modules/@inquirer/core/dist/lib/use-ref.js","../../node_modules/@inquirer/core/dist/lib/use-keypress.js","../../node_modules/@inquirer/core/dist/lib/utils.js","../../node_modules/ansi-regex/index.js","../../node_modules/strip-ansi/index.js","../../node_modules/get-east-asian-width/lookup.js","../../node_modules/get-east-asian-width/index.js","../../node_modules/emoji-regex/index.mjs","../../node_modules/string-width/index.js","../../node_modules/ansi-styles/index.js","../../node_modules/wrap-ansi/index.js","../../node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js","../../node_modules/@inquirer/core/dist/lib/create-prompt.js","../../node_modules/signal-exit/src/signals.ts","../../node_modules/signal-exit/src/index.ts","../../node_modules/@inquirer/ansi/dist/index.js","../../node_modules/@inquirer/core/dist/lib/screen-manager.js","../../node_modules/@inquirer/core/dist/lib/promise-polyfill.js","../../node_modules/@inquirer/core/dist/lib/Separator.js","../../node_modules/@inquirer/select/dist/index.js","../../src/cli/index.ts"],"names":["exports","cliWidth","MuteStream","AsyncResource","setState","process","code","signal","styleText","name","dist_default","item"],"mappings":"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","file":"index.js","sourcesContent":["'use strict';\n\nmodule.exports = cliWidth;\n\nfunction normalizeOpts(options) {\n const defaultOpts = {\n defaultWidth: 0,\n output: process.stdout,\n tty: require('tty'),\n };\n\n if (!options) {\n return defaultOpts;\n }\n\n Object.keys(defaultOpts).forEach(function (key) {\n if (!options[key]) {\n options[key] = defaultOpts[key];\n }\n });\n\n return options;\n}\n\nfunction cliWidth(options) {\n const opts = normalizeOpts(options);\n\n if (opts.output.getWindowSize) {\n return opts.output.getWindowSize()[0] || opts.defaultWidth;\n }\n\n if (opts.tty.getWindowSize) {\n return opts.tty.getWindowSize()[1] || opts.defaultWidth;\n }\n\n if (opts.output.columns) {\n return opts.output.columns;\n }\n\n if (process.env.CLI_WIDTH) {\n const width = parseInt(process.env.CLI_WIDTH, 10);\n\n if (!isNaN(width) && width !== 0) {\n return width;\n }\n }\n\n return opts.defaultWidth;\n}\n","const Stream = require('stream')\n\nclass MuteStream extends Stream {\n #isTTY = null\n\n constructor (opts = {}) {\n super(opts)\n this.writable = this.readable = true\n this.muted = false\n this.on('pipe', this._onpipe)\n this.replace = opts.replace\n\n // For readline-type situations\n // This much at the start of a line being redrawn after a ctrl char\n // is seen (such as backspace) won't be redrawn as the replacement\n this._prompt = opts.prompt || null\n this._hadControl = false\n }\n\n #destSrc (key, def) {\n if (this._dest) {\n return this._dest[key]\n }\n if (this._src) {\n return this._src[key]\n }\n return def\n }\n\n #proxy (method, ...args) {\n if (typeof this._dest?.[method] === 'function') {\n this._dest[method](...args)\n }\n if (typeof this._src?.[method] === 'function') {\n this._src[method](...args)\n }\n }\n\n get isTTY () {\n if (this.#isTTY !== null) {\n return this.#isTTY\n }\n return this.#destSrc('isTTY', false)\n }\n\n // basically just get replace the getter/setter with a regular value\n set isTTY (val) {\n this.#isTTY = val\n }\n\n get rows () {\n return this.#destSrc('rows')\n }\n\n get columns () {\n return this.#destSrc('columns')\n }\n\n mute () {\n this.muted = true\n }\n\n unmute () {\n this.muted = false\n }\n\n _onpipe (src) {\n this._src = src\n }\n\n pipe (dest, options) {\n this._dest = dest\n return super.pipe(dest, options)\n }\n\n pause () {\n if (this._src) {\n return this._src.pause()\n }\n }\n\n resume () {\n if (this._src) {\n return this._src.resume()\n }\n }\n\n write (c) {\n if (this.muted) {\n if (!this.replace) {\n return true\n }\n // eslint-disable-next-line no-control-regex\n if (c.match(/^\\u001b/)) {\n if (c.indexOf(this._prompt) === 0) {\n c = c.slice(this._prompt.length)\n c = c.replace(/./g, this.replace)\n c = this._prompt + c\n }\n this._hadControl = true\n return this.emit('data', c)\n } else {\n if (this._prompt && this._hadControl &&\n c.indexOf(this._prompt) === 0) {\n this._hadControl = false\n this.emit('data', this._prompt)\n c = c.slice(this._prompt.length)\n }\n c = c.toString().replace(/./g, this.replace)\n }\n }\n this.emit('data', c)\n }\n\n end (c) {\n if (this.muted) {\n if (c && this.replace) {\n c = c.toString().replace(/./g, this.replace)\n } else {\n c = null\n }\n }\n if (c) {\n this.emit('data', c)\n }\n this.emit('end')\n }\n\n destroy (...args) {\n return this.#proxy('destroy', ...args)\n }\n\n destroySoon (...args) {\n return this.#proxy('destroySoon', ...args)\n }\n\n close (...args) {\n return this.#proxy('close', ...args)\n }\n}\n\nmodule.exports = MuteStream\n","export const isUpKey = (key, keybindings = []) => \n// The up key\nkey.name === 'up' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'k') ||\n // Emacs keybinding: Ctrl+P means \"previous\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'p');\nexport const isDownKey = (key, keybindings = []) => \n// The down key\nkey.name === 'down' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'j') ||\n // Emacs keybinding: Ctrl+N means \"next\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'n');\nexport const isSpaceKey = (key) => key.name === 'space';\nexport const isBackspaceKey = (key) => key.name === 'backspace';\nexport const isTabKey = (key) => key.name === 'tab';\nexport const isNumberKey = (key) => '1234567890'.includes(key.name);\nexport const isEnterKey = (key) => key.name === 'enter' || key.name === 'return';\nexport const isShiftKey = (key) => key.shift;\n","export class AbortPromptError extends Error {\n name = 'AbortPromptError';\n message = 'Prompt was aborted';\n constructor(options) {\n super();\n this.cause = options?.cause;\n }\n}\nexport class CancelPromptError extends Error {\n name = 'CancelPromptError';\n message = 'Prompt was canceled';\n}\nexport class ExitPromptError extends Error {\n name = 'ExitPromptError';\n}\nexport class HookError extends Error {\n name = 'HookError';\n}\nexport class ValidationError extends Error {\n name = 'ValidationError';\n}\n","/* eslint @typescript-eslint/no-explicit-any: [\"off\"] */\nimport { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';\nimport { HookError, ValidationError } from \"./errors.js\";\nconst hookStorage = new AsyncLocalStorage();\nfunction createStore(rl) {\n const store = {\n rl,\n hooks: [],\n hooksCleanup: [],\n hooksEffect: [],\n index: 0,\n handleChange() { },\n };\n return store;\n}\n// Run callback in with the hook engine setup.\nexport function withHooks(rl, cb) {\n const store = createStore(rl);\n return hookStorage.run(store, () => {\n function cycle(render) {\n store.handleChange = () => {\n store.index = 0;\n render();\n };\n store.handleChange();\n }\n return cb(cycle);\n });\n}\n// Safe getStore utility that'll return the store or throw if undefined.\nfunction getStore() {\n const store = hookStorage.getStore();\n if (!store) {\n throw new HookError('[Inquirer] Hook functions can only be called from within a prompt');\n }\n return store;\n}\nexport function readline() {\n return getStore().rl;\n}\n// Merge state updates happening within the callback function to avoid multiple renders.\nexport function withUpdates(fn) {\n const wrapped = (...args) => {\n const store = getStore();\n let shouldUpdate = false;\n const oldHandleChange = store.handleChange;\n store.handleChange = () => {\n shouldUpdate = true;\n };\n const returnValue = fn(...args);\n if (shouldUpdate) {\n oldHandleChange();\n }\n store.handleChange = oldHandleChange;\n return returnValue;\n };\n return AsyncResource.bind(wrapped);\n}\nexport function withPointer(cb) {\n const store = getStore();\n const { index } = store;\n const pointer = {\n get() {\n return store.hooks[index];\n },\n set(value) {\n store.hooks[index] = value;\n },\n initialized: index in store.hooks,\n };\n const returnValue = cb(pointer);\n store.index++;\n return returnValue;\n}\nexport function handleChange() {\n getStore().handleChange();\n}\nexport const effectScheduler = {\n queue(cb) {\n const store = getStore();\n const { index } = store;\n store.hooksEffect.push(() => {\n store.hooksCleanup[index]?.();\n const cleanFn = cb(readline());\n if (cleanFn != null && typeof cleanFn !== 'function') {\n throw new ValidationError('useEffect return value must be a cleanup function or nothing.');\n }\n store.hooksCleanup[index] = cleanFn;\n });\n },\n run() {\n const store = getStore();\n withUpdates(() => {\n store.hooksEffect.forEach((effect) => {\n effect();\n });\n // Warning: Clean the hooks before exiting the `withUpdates` block.\n // Failure to do so means an updates would hit the same effects again.\n store.hooksEffect.length = 0;\n })();\n },\n clearAll() {\n const store = getStore();\n store.hooksCleanup.forEach((cleanFn) => {\n cleanFn?.();\n });\n store.hooksEffect.length = 0;\n store.hooksCleanup.length = 0;\n },\n};\n","import { AsyncResource } from 'node:async_hooks';\nimport { withPointer, handleChange } from \"./hook-engine.js\";\nexport function useState(defaultValue) {\n return withPointer((pointer) => {\n const setState = AsyncResource.bind(function setState(newValue) {\n // Noop if the value is still the same.\n if (pointer.get() !== newValue) {\n pointer.set(newValue);\n // Trigger re-render\n handleChange();\n }\n });\n if (pointer.initialized) {\n return [pointer.get(), setState];\n }\n const value = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n pointer.set(value);\n return [value, setState];\n });\n}\n","import { withPointer, effectScheduler } from \"./hook-engine.js\";\nexport function useEffect(cb, depArray) {\n withPointer((pointer) => {\n const oldDeps = pointer.get();\n const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i]));\n if (hasChanged) {\n effectScheduler.queue(cb);\n }\n pointer.set(depArray);\n });\n}\n","// process.env dot-notation access prints:\n// Property 'TERM' comes from an index signature, so it must be accessed with ['TERM'].ts(4111)\n/* eslint dot-notation: [\"off\"] */\nimport process from 'node:process';\n// Ported from is-unicode-supported\nfunction isUnicodeSupported() {\n if (process.platform !== 'win32') {\n return process.env['TERM'] !== 'linux'; // Linux console (kernel)\n }\n return (Boolean(process.env['WT_SESSION']) || // Windows Terminal\n Boolean(process.env['TERMINUS_SUBLIME']) || // Terminus (<0.2.27)\n process.env['ConEmuTask'] === '{cmd::Cmder}' || // ConEmu and cmder\n process.env['TERM_PROGRAM'] === 'Terminus-Sublime' ||\n process.env['TERM_PROGRAM'] === 'vscode' ||\n process.env['TERM'] === 'xterm-256color' ||\n process.env['TERM'] === 'alacritty' ||\n process.env['TERMINAL_EMULATOR'] === 'JetBrains-JediTerm');\n}\n// Ported from figures\nconst common = {\n circleQuestionMark: '(?)',\n questionMarkPrefix: '(?)',\n square: '█',\n squareDarkShade: '▓',\n squareMediumShade: '▒',\n squareLightShade: '░',\n squareTop: '▀',\n squareBottom: '▄',\n squareLeft: '▌',\n squareRight: '▐',\n squareCenter: '■',\n bullet: '●',\n dot: '․',\n ellipsis: '…',\n pointerSmall: '›',\n triangleUp: '▲',\n triangleUpSmall: '▴',\n triangleDown: '▼',\n triangleDownSmall: '▾',\n triangleLeftSmall: '◂',\n triangleRightSmall: '▸',\n home: '⌂',\n heart: '♥',\n musicNote: '♪',\n musicNoteBeamed: '♫',\n arrowUp: '↑',\n arrowDown: '↓',\n arrowLeft: '←',\n arrowRight: '→',\n arrowLeftRight: '↔',\n arrowUpDown: '↕',\n almostEqual: '≈',\n notEqual: '≠',\n lessOrEqual: '≤',\n greaterOrEqual: '≥',\n identical: '≡',\n infinity: '∞',\n subscriptZero: '₀',\n subscriptOne: '₁',\n subscriptTwo: '₂',\n subscriptThree: '₃',\n subscriptFour: '₄',\n subscriptFive: '₅',\n subscriptSix: '₆',\n subscriptSeven: '₇',\n subscriptEight: '₈',\n subscriptNine: '₉',\n oneHalf: '½',\n oneThird: '⅓',\n oneQuarter: '¼',\n oneFifth: '⅕',\n oneSixth: '⅙',\n oneEighth: '⅛',\n twoThirds: '⅔',\n twoFifths: '⅖',\n threeQuarters: '¾',\n threeFifths: '⅗',\n threeEighths: '⅜',\n fourFifths: '⅘',\n fiveSixths: '⅚',\n fiveEighths: '⅝',\n sevenEighths: '⅞',\n line: '─',\n lineBold: '━',\n lineDouble: '═',\n lineDashed0: '┄',\n lineDashed1: '┅',\n lineDashed2: '┈',\n lineDashed3: '┉',\n lineDashed4: '╌',\n lineDashed5: '╍',\n lineDashed6: '╴',\n lineDashed7: '╶',\n lineDashed8: '╸',\n lineDashed9: '╺',\n lineDashed10: '╼',\n lineDashed11: '╾',\n lineDashed12: '−',\n lineDashed13: '–',\n lineDashed14: '‐',\n lineDashed15: '⁃',\n lineVertical: '│',\n lineVerticalBold: '┃',\n lineVerticalDouble: '║',\n lineVerticalDashed0: '┆',\n lineVerticalDashed1: '┇',\n lineVerticalDashed2: '┊',\n lineVerticalDashed3: '┋',\n lineVerticalDashed4: '╎',\n lineVerticalDashed5: '╏',\n lineVerticalDashed6: '╵',\n lineVerticalDashed7: '╷',\n lineVerticalDashed8: '╹',\n lineVerticalDashed9: '╻',\n lineVerticalDashed10: '╽',\n lineVerticalDashed11: '╿',\n lineDownLeft: '┐',\n lineDownLeftArc: '╮',\n lineDownBoldLeftBold: '┓',\n lineDownBoldLeft: '┒',\n lineDownLeftBold: '┑',\n lineDownDoubleLeftDouble: '╗',\n lineDownDoubleLeft: '╖',\n lineDownLeftDouble: '╕',\n lineDownRight: '┌',\n lineDownRightArc: '╭',\n lineDownBoldRightBold: '┏',\n lineDownBoldRight: '┎',\n lineDownRightBold: '┍',\n lineDownDoubleRightDouble: '╔',\n lineDownDoubleRight: '╓',\n lineDownRightDouble: '╒',\n lineUpLeft: '┘',\n lineUpLeftArc: '╯',\n lineUpBoldLeftBold: '┛',\n lineUpBoldLeft: '┚',\n lineUpLeftBold: '┙',\n lineUpDoubleLeftDouble: '╝',\n lineUpDoubleLeft: '╜',\n lineUpLeftDouble: '╛',\n lineUpRight: '└',\n lineUpRightArc: '╰',\n lineUpBoldRightBold: '┗',\n lineUpBoldRight: '┖',\n lineUpRightBold: '┕',\n lineUpDoubleRightDouble: '╚',\n lineUpDoubleRight: '╙',\n lineUpRightDouble: '╘',\n lineUpDownLeft: '┤',\n lineUpBoldDownBoldLeftBold: '┫',\n lineUpBoldDownBoldLeft: '┨',\n lineUpDownLeftBold: '┥',\n lineUpBoldDownLeftBold: '┩',\n lineUpDownBoldLeftBold: '┪',\n lineUpDownBoldLeft: '┧',\n lineUpBoldDownLeft: '┦',\n lineUpDoubleDownDoubleLeftDouble: '╣',\n lineUpDoubleDownDoubleLeft: '╢',\n lineUpDownLeftDouble: '╡',\n lineUpDownRight: '├',\n lineUpBoldDownBoldRightBold: '┣',\n lineUpBoldDownBoldRight: '┠',\n lineUpDownRightBold: '┝',\n lineUpBoldDownRightBold: '┡',\n lineUpDownBoldRightBold: '┢',\n lineUpDownBoldRight: '┟',\n lineUpBoldDownRight: '┞',\n lineUpDoubleDownDoubleRightDouble: '╠',\n lineUpDoubleDownDoubleRight: '╟',\n lineUpDownRightDouble: '╞',\n lineDownLeftRight: '┬',\n lineDownBoldLeftBoldRightBold: '┳',\n lineDownLeftBoldRightBold: '┯',\n lineDownBoldLeftRight: '┰',\n lineDownBoldLeftBoldRight: '┱',\n lineDownBoldLeftRightBold: '┲',\n lineDownLeftRightBold: '┮',\n lineDownLeftBoldRight: '┭',\n lineDownDoubleLeftDoubleRightDouble: '╦',\n lineDownDoubleLeftRight: '╥',\n lineDownLeftDoubleRightDouble: '╤',\n lineUpLeftRight: '┴',\n lineUpBoldLeftBoldRightBold: '┻',\n lineUpLeftBoldRightBold: '┷',\n lineUpBoldLeftRight: '┸',\n lineUpBoldLeftBoldRight: '┹',\n lineUpBoldLeftRightBold: '┺',\n lineUpLeftRightBold: '┶',\n lineUpLeftBoldRight: '┵',\n lineUpDoubleLeftDoubleRightDouble: '╩',\n lineUpDoubleLeftRight: '╨',\n lineUpLeftDoubleRightDouble: '╧',\n lineUpDownLeftRight: '┼',\n lineUpBoldDownBoldLeftBoldRightBold: '╋',\n lineUpDownBoldLeftBoldRightBold: '╈',\n lineUpBoldDownLeftBoldRightBold: '╇',\n lineUpBoldDownBoldLeftRightBold: '╊',\n lineUpBoldDownBoldLeftBoldRight: '╉',\n lineUpBoldDownLeftRight: '╀',\n lineUpDownBoldLeftRight: '╁',\n lineUpDownLeftBoldRight: '┽',\n lineUpDownLeftRightBold: '┾',\n lineUpBoldDownBoldLeftRight: '╂',\n lineUpDownLeftBoldRightBold: '┿',\n lineUpBoldDownLeftBoldRight: '╃',\n lineUpBoldDownLeftRightBold: '╄',\n lineUpDownBoldLeftBoldRight: '╅',\n lineUpDownBoldLeftRightBold: '╆',\n lineUpDoubleDownDoubleLeftDoubleRightDouble: '╬',\n lineUpDoubleDownDoubleLeftRight: '╫',\n lineUpDownLeftDoubleRightDouble: '╪',\n lineCross: '╳',\n lineBackslash: '╲',\n lineSlash: '╱',\n};\nconst specialMainSymbols = {\n tick: '✔',\n info: 'ℹ',\n warning: '⚠',\n cross: '✘',\n squareSmall: '◻',\n squareSmallFilled: '◼',\n circle: '◯',\n circleFilled: '◉',\n circleDotted: '◌',\n circleDouble: '◎',\n circleCircle: 'ⓞ',\n circleCross: 'ⓧ',\n circlePipe: 'Ⓘ',\n radioOn: '◉',\n radioOff: '◯',\n checkboxOn: '☒',\n checkboxOff: '☐',\n checkboxCircleOn: 'ⓧ',\n checkboxCircleOff: 'Ⓘ',\n pointer: '❯',\n triangleUpOutline: '△',\n triangleLeft: '◀',\n triangleRight: '▶',\n lozenge: '◆',\n lozengeOutline: '◇',\n hamburger: '☰',\n smiley: '㋡',\n mustache: '෴',\n star: '★',\n play: '▶',\n nodejs: '⬢',\n oneSeventh: '⅐',\n oneNinth: '⅑',\n oneTenth: '⅒',\n};\nconst specialFallbackSymbols = {\n tick: '√',\n info: 'i',\n warning: '‼',\n cross: '×',\n squareSmall: '□',\n squareSmallFilled: '■',\n circle: '( )',\n circleFilled: '(*)',\n circleDotted: '( )',\n circleDouble: '( )',\n circleCircle: '(○)',\n circleCross: '(×)',\n circlePipe: '(│)',\n radioOn: '(*)',\n radioOff: '( )',\n checkboxOn: '[×]',\n checkboxOff: '[ ]',\n checkboxCircleOn: '(×)',\n checkboxCircleOff: '( )',\n pointer: '>',\n triangleUpOutline: '∆',\n triangleLeft: '◄',\n triangleRight: '►',\n lozenge: '♦',\n lozengeOutline: '◊',\n hamburger: '≡',\n smiley: '☺',\n mustache: '┌─┐',\n star: '✶',\n play: '►',\n nodejs: '♦',\n oneSeventh: '1/7',\n oneNinth: '1/9',\n oneTenth: '1/10',\n};\nexport const mainSymbols = {\n ...common,\n ...specialMainSymbols,\n};\nexport const fallbackSymbols = {\n ...common,\n ...specialFallbackSymbols,\n};\nconst shouldUseMain = isUnicodeSupported();\nconst figures = shouldUseMain\n ? mainSymbols\n : fallbackSymbols;\nexport default figures;\nconst replacements = Object.entries(specialMainSymbols);\n// On terminals which do not support Unicode symbols, substitute them to other symbols\nexport const replaceSymbols = (string, { useFallback = !shouldUseMain } = {}) => {\n if (useFallback) {\n for (const [key, mainSymbol] of replacements) {\n const fallbackSymbol = fallbackSymbols[key];\n if (!fallbackSymbol) {\n throw new Error(`Unable to find fallback for ${key}`);\n }\n string = string.replaceAll(mainSymbol, fallbackSymbol);\n }\n }\n return string;\n};\n","import { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nexport const defaultTheme = {\n prefix: {\n idle: styleText('blue', '?'),\n done: styleText('green', figures.tick),\n },\n spinner: {\n interval: 80,\n frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'].map((frame) => styleText('yellow', frame)),\n },\n style: {\n answer: (text) => styleText('cyan', text),\n message: (text) => styleText('bold', text),\n error: (text) => styleText('red', `> ${text}`),\n defaultAnswer: (text) => styleText('dim', `(${text})`),\n help: (text) => styleText('dim', text),\n highlight: (text) => styleText('cyan', text),\n key: (text) => styleText('cyan', styleText('bold', `<${text}>`)),\n },\n};\n","import { defaultTheme } from \"./theme.js\";\nfunction isPlainObject(value) {\n if (typeof value !== 'object' || value === null)\n return false;\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\nfunction deepMerge(...objects) {\n const output = {};\n for (const obj of objects) {\n for (const [key, value] of Object.entries(obj)) {\n const prevValue = output[key];\n output[key] =\n isPlainObject(prevValue) && isPlainObject(value)\n ? deepMerge(prevValue, value)\n : value;\n }\n }\n return output;\n}\nexport function makeTheme(...themes) {\n const themesToMerge = [\n defaultTheme,\n ...themes.filter((theme) => theme != null),\n ];\n return deepMerge(...themesToMerge);\n}\n","import { useState } from \"./use-state.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { makeTheme } from \"./make-theme.js\";\nexport function usePrefix({ status = 'idle', theme, }) {\n const [showLoader, setShowLoader] = useState(false);\n const [tick, setTick] = useState(0);\n const { prefix, spinner } = makeTheme(theme);\n useEffect(() => {\n if (status === 'loading') {\n let tickInterval;\n let inc = -1;\n // Delay displaying spinner by 300ms, to avoid flickering\n const delayTimeout = setTimeout(() => {\n setShowLoader(true);\n tickInterval = setInterval(() => {\n inc = inc + 1;\n setTick(inc % spinner.frames.length);\n }, spinner.interval);\n }, 300);\n return () => {\n clearTimeout(delayTimeout);\n clearInterval(tickInterval);\n };\n }\n else {\n setShowLoader(false);\n }\n }, [status]);\n if (showLoader) {\n return spinner.frames[tick];\n }\n // There's a delay before we show the loader. So we want to ignore `loading` here, and pass idle instead.\n const iconName = status === 'loading' ? 'idle' : status;\n return typeof prefix === 'string' ? prefix : (prefix[iconName] ?? prefix['idle']);\n}\n","import { withPointer } from \"./hook-engine.js\";\nexport function useMemo(fn, dependencies) {\n return withPointer((pointer) => {\n const prev = pointer.get();\n if (!prev ||\n prev.dependencies.length !== dependencies.length ||\n prev.dependencies.some((dep, i) => dep !== dependencies[i])) {\n const value = fn();\n pointer.set({ value, dependencies });\n return value;\n }\n return prev.value;\n });\n}\n","import { useState } from \"./use-state.js\";\nexport function useRef(val) {\n return useState({ current: val })[0];\n}\n","import { useRef } from \"./use-ref.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { withUpdates } from \"./hook-engine.js\";\nexport function useKeypress(userHandler) {\n const signal = useRef(userHandler);\n signal.current = userHandler;\n useEffect((rl) => {\n let ignore = false;\n const handler = withUpdates((_input, event) => {\n if (ignore)\n return;\n void signal.current(event, rl);\n });\n rl.input.on('keypress', handler);\n return () => {\n ignore = true;\n rl.input.removeListener('keypress', handler);\n };\n }, []);\n}\n","import cliWidth from 'cli-width';\nimport wrapAnsi from 'wrap-ansi';\nimport { readline } from \"./hook-engine.js\";\n/**\n * Force line returns at specific width. This function is ANSI code friendly and it'll\n * ignore invisible codes during width calculation.\n * @param {string} content\n * @param {number} width\n * @return {string}\n */\nexport function breakLines(content, width) {\n return content\n .split('\\n')\n .flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true })\n .split('\\n')\n .map((str) => str.trimEnd()))\n .join('\\n');\n}\n/**\n * Returns the width of the active readline, or 80 as default value.\n * @returns {number}\n */\nexport function readlineWidth() {\n return cliWidth({ defaultWidth: 80, output: readline().output });\n}\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","// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2630 && x <= 0x2637\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x >= 0x268A && x <= 0x268F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E5\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x >= 0x16FF0 && x <= 0x16FF6\n\t\t|| x >= 0x17000 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D1E\n\t\t|| x >= 0x18D80 && x <= 0x18DF2\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x >= 0x1D300 && x <= 0x1D356\n\t\t|| x >= 0x1D360 && x <= 0x1D376\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D8\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA8A\n\t\t|| x >= 0x1FA8E && x <= 0x1FAC6\n\t\t|| x === 0x1FAC8\n\t\t|| x >= 0x1FACD && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAEA\n\t\t|| x >= 0x1FAEF && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction getCategory(x) {\n\tif (isAmbiguous(x)) return 'ambiguous';\n\n\tif (isFullWidth(x)) return 'fullwidth';\n\n\tif (\n\t\tx === 0x20A9\n\t\t|| x >= 0xFF61 && x <= 0xFFBE\n\t\t|| x >= 0xFFC2 && x <= 0xFFC7\n\t\t|| x >= 0xFFCA && x <= 0xFFCF\n\t\t|| x >= 0xFFD2 && x <= 0xFFD7\n\t\t|| x >= 0xFFDA && x <= 0xFFDC\n\t\t|| x >= 0xFFE8 && x <= 0xFFEE\n\t) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (\n\t\tx >= 0x20 && x <= 0x7E\n\t\t|| x === 0xA2\n\t\t|| x === 0xA3\n\t\t|| x === 0xA5\n\t\t|| x === 0xA6\n\t\t|| x === 0xAC\n\t\t|| x === 0xAF\n\t\t|| x >= 0x27E6 && x <= 0x27ED\n\t\t|| x === 0x2985\n\t\t|| x === 0x2986\n\t) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(x)) return 'wide';\n\n\treturn 'neutral';\n}\n\nexport {isAmbiguous, isFullWidth, isWide, getCategory};\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point\nexport {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';\n","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E-\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED8\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC2\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF]|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = url => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows.at(-1)));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\n\t\t\tconst ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');\n\t\t\tisInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows.at(-1).length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode.\n//\n// 'hard' will never allow a string to take up more than columns characters.\n//\n// 'soft' allows long words to expand past the column length.\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows.at(-1).trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows.at(-1));\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst preString = rows.join('\\n');\n\tconst pre = [...preString];\n\n\t// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of codepoints.\n\tlet preStringIndex = 0;\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\n\t\tpreStringIndex += character.length;\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replaceAll('\\r\\n', '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","import { useRef } from \"../use-ref.js\";\nimport { readlineWidth, breakLines } from \"../utils.js\";\nfunction usePointerPosition({ active, renderedItems, pageSize, loop, }) {\n const state = useRef({\n lastPointer: active,\n lastActive: undefined,\n });\n const { lastPointer, lastActive } = state.current;\n const middle = Math.floor(pageSize / 2);\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const defaultPointerPosition = renderedItems\n .slice(0, active)\n .reduce((acc, item) => acc + item.length, 0);\n let pointer = defaultPointerPosition;\n if (renderedLength > pageSize) {\n if (loop) {\n /**\n * Creates the next position for the pointer considering an infinitely\n * looping list of items to be rendered on the page.\n *\n * The goal is to progressively move the cursor to the middle position as the user move down, and then keep\n * the cursor there. When the user move up, maintain the cursor position.\n */\n // By default, keep the cursor position as-is.\n pointer = lastPointer;\n if (\n // First render, skip this logic.\n lastActive != null &&\n // Only move the pointer down when the user moves down.\n lastActive < active &&\n // Check user didn't move up across page boundary.\n active - lastActive < pageSize) {\n pointer = Math.min(\n // Furthest allowed position for the pointer is the middle of the list\n middle, Math.abs(active - lastActive) === 1\n ? Math.min(\n // Move the pointer at most the height of the last active item.\n lastPointer + (renderedItems[lastActive]?.length ?? 0), \n // If the user moved by one item, move the pointer to the natural position of the active item as\n // long as it doesn't move the cursor up.\n Math.max(defaultPointerPosition, lastPointer))\n : // Otherwise, move the pointer down by the difference between the active and last active item.\n lastPointer + active - lastActive);\n }\n }\n else {\n /**\n * Creates the next position for the pointer considering a finite list of\n * items to be rendered on a page.\n *\n * The goal is to keep the pointer in the middle of the page whenever possible, until\n * we reach the bounds of the list (top or bottom). In which case, the cursor moves progressively\n * to the bottom or top of the list.\n */\n const spaceUnderActive = renderedItems\n .slice(active)\n .reduce((acc, item) => acc + item.length, 0);\n pointer =\n spaceUnderActive < pageSize - middle\n ? // If the active item is near the end of the list, progressively move the cursor towards the end.\n pageSize - spaceUnderActive\n : // Otherwise, progressively move the pointer to the middle of the list.\n Math.min(defaultPointerPosition, middle);\n }\n }\n // Save state for the next render\n state.current.lastPointer = pointer;\n state.current.lastActive = active;\n return pointer;\n}\nexport function usePagination({ items, active, renderItem, pageSize, loop = true, }) {\n const width = readlineWidth();\n const bound = (num) => ((num % items.length) + items.length) % items.length;\n const renderedItems = items.map((item, index) => {\n if (item == null)\n return [];\n return breakLines(renderItem({ item, index, isActive: index === active }), width).split('\\n');\n });\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const renderItemAtIndex = (index) => renderedItems[index] ?? [];\n const pointer = usePointerPosition({ active, renderedItems, pageSize, loop });\n // Render the active item to decide the position.\n // If the active item fits under the pointer, we render it there.\n // Otherwise, we need to render it to fit at the bottom of the page; moving the pointer up.\n const activeItem = renderItemAtIndex(active).slice(0, pageSize);\n const activeItemPosition = pointer + activeItem.length <= pageSize ? pointer : pageSize - activeItem.length;\n // Create an array of lines for the page, and add the lines of the active item into the page\n const pageBuffer = Array.from({ length: pageSize });\n pageBuffer.splice(activeItemPosition, activeItem.length, ...activeItem);\n // Store to prevent rendering the same item twice\n const itemVisited = new Set([active]);\n // Fill the page under the active item\n let bufferPointer = activeItemPosition + activeItem.length;\n let itemPointer = bound(active + 1);\n while (bufferPointer < pageSize &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer > active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(0, pageSize - bufferPointer);\n pageBuffer.splice(bufferPointer, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer += linesToAdd.length;\n itemPointer = bound(itemPointer + 1);\n }\n // Fill the page over the active item\n bufferPointer = activeItemPosition - 1;\n itemPointer = bound(active - 1);\n while (bufferPointer >= 0 &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer < active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(Math.max(0, lines.length - bufferPointer - 1));\n pageBuffer.splice(bufferPointer - linesToAdd.length + 1, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer -= linesToAdd.length;\n itemPointer = bound(itemPointer - 1);\n }\n return pageBuffer.filter((line) => typeof line === 'string').join('\\n');\n}\n","import * as readline from 'node:readline';\nimport { AsyncResource } from 'node:async_hooks';\nimport MuteStream from 'mute-stream';\nimport { onExit as onSignalExit } from 'signal-exit';\nimport ScreenManager from \"./screen-manager.js\";\nimport { PromisePolyfill } from \"./promise-polyfill.js\";\nimport { withHooks, effectScheduler } from \"./hook-engine.js\";\nimport { AbortPromptError, CancelPromptError, ExitPromptError } from \"./errors.js\";\nfunction getCallSites() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _prepareStackTrace = Error.prepareStackTrace;\n let result = [];\n try {\n Error.prepareStackTrace = (_, callSites) => {\n const callSitesWithoutCurrent = callSites.slice(1);\n result = callSitesWithoutCurrent;\n return callSitesWithoutCurrent;\n };\n // oxlint-disable-next-line no-unused-expressions\n new Error().stack;\n }\n catch {\n // An error will occur if the Node flag --frozen-intrinsics is used.\n // https://nodejs.org/api/cli.html#--frozen-intrinsics\n return result;\n }\n Error.prepareStackTrace = _prepareStackTrace;\n return result;\n}\nexport function createPrompt(view) {\n const callSites = getCallSites();\n const prompt = (config, context = {}) => {\n // Default `input` to stdin\n const { input = process.stdin, signal } = context;\n const cleanups = new Set();\n // Add mute capabilities to the output\n const output = new MuteStream();\n output.pipe(context.output ?? process.stdout);\n const rl = readline.createInterface({\n terminal: true,\n input,\n output,\n });\n const screen = new ScreenManager(rl);\n const { promise, resolve, reject } = PromisePolyfill.withResolver();\n const cancel = () => reject(new CancelPromptError());\n if (signal) {\n const abort = () => reject(new AbortPromptError({ cause: signal.reason }));\n if (signal.aborted) {\n abort();\n return Object.assign(promise, { cancel });\n }\n signal.addEventListener('abort', abort);\n cleanups.add(() => signal.removeEventListener('abort', abort));\n }\n cleanups.add(onSignalExit((code, signal) => {\n reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal}`));\n }));\n // SIGINT must be explicitly handled by the prompt so the ExitPromptError can be handled.\n // Otherwise, the prompt will stop and in some scenarios never resolve.\n // Ref issue #1741\n const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`));\n rl.on('SIGINT', sigint);\n cleanups.add(() => rl.removeListener('SIGINT', sigint));\n // Re-renders only happen when the state change; but the readline cursor could change position\n // and that also requires a re-render (and a manual one because we mute the streams).\n // We set the listener after the initial workLoop to avoid a double render if render triggered\n // by a state change sets the cursor to the right position.\n const checkCursorPos = () => screen.checkCursorPos();\n rl.input.on('keypress', checkCursorPos);\n cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));\n return withHooks(rl, (cycle) => {\n // The close event triggers immediately when the user press ctrl+c. SignalExit on the other hand\n // triggers after the process is done (which happens after timeouts are done triggering.)\n // We triggers the hooks cleanup phase on rl `close` so active timeouts can be cleared.\n const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll());\n rl.on('close', hooksCleanup);\n cleanups.add(() => rl.removeListener('close', hooksCleanup));\n cycle(() => {\n try {\n const nextView = view(config, (value) => {\n setImmediate(() => resolve(value));\n });\n // Typescript won't allow this, but not all users rely on typescript.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (nextView === undefined) {\n const callerFilename = callSites[1]?.getFileName();\n throw new Error(`Prompt functions must return a string.\\n at ${callerFilename}`);\n }\n const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView;\n screen.render(content, bottomContent);\n effectScheduler.run();\n }\n catch (error) {\n reject(error);\n }\n });\n return Object.assign(promise\n .then((answer) => {\n effectScheduler.clearAll();\n return answer;\n }, (error) => {\n effectScheduler.clearAll();\n throw error;\n })\n // Wait for the promise to settle, then cleanup.\n .finally(() => {\n cleanups.forEach((cleanup) => cleanup());\n screen.done({ clearContent: Boolean(context.clearPromptOnDone) });\n output.end();\n })\n // Once cleanup is done, let the expose promise resolve/reject to the internal one.\n .then(() => promise), { cancel });\n });\n };\n return prompt;\n}\n","/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n","const ESC = '\\u001B[';\n/** Move cursor to first column */\nexport const cursorLeft = ESC + 'G';\n/** Hide the cursor */\nexport const cursorHide = ESC + '?25l';\n/** Show the cursor */\nexport const cursorShow = ESC + '?25h';\n/** Move cursor up by count rows */\nexport const cursorUp = (rows = 1) => (rows > 0 ? `${ESC}${rows}A` : '');\n/** Move cursor down by count rows */\nexport const cursorDown = (rows = 1) => rows > 0 ? `${ESC}${rows}B` : '';\n/** Move cursor to position (x, y) */\nexport const cursorTo = (x, y) => {\n if (typeof y === 'number' && !Number.isNaN(y)) {\n return `${ESC}${y + 1};${x + 1}H`;\n }\n return `${ESC}${x + 1}G`;\n};\nconst eraseLine = ESC + '2K';\n/** Erase the specified number of lines above the cursor */\nexport const eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : '';\n","import { stripVTControlCharacters } from 'node:util';\nimport { breakLines, readlineWidth } from \"./utils.js\";\nimport { cursorDown, cursorUp, cursorTo, cursorShow, eraseLines } from '@inquirer/ansi';\nconst height = (content) => content.split('\\n').length;\nconst lastLine = (content) => content.split('\\n').pop() ?? '';\nexport default class ScreenManager {\n // These variables are keeping information to allow correct prompt re-rendering\n height = 0;\n extraLinesUnderPrompt = 0;\n cursorPos;\n rl;\n constructor(rl) {\n this.rl = rl;\n this.cursorPos = rl.getCursorPos();\n }\n write(content) {\n this.rl.output.unmute();\n this.rl.output.write(content);\n this.rl.output.mute();\n }\n render(content, bottomContent = '') {\n // Write message to screen and setPrompt to control backspace\n const promptLine = lastLine(content);\n const rawPromptLine = stripVTControlCharacters(promptLine);\n // Remove the rl.line from our prompt. We can't rely on the content of\n // rl.line (mainly because of the password prompt), so just rely on it's\n // length.\n let prompt = rawPromptLine;\n if (this.rl.line.length > 0) {\n prompt = prompt.slice(0, -this.rl.line.length);\n }\n this.rl.setPrompt(prompt);\n // SetPrompt will change cursor position, now we can get correct value\n this.cursorPos = this.rl.getCursorPos();\n const width = readlineWidth();\n content = breakLines(content, width);\n bottomContent = breakLines(bottomContent, width);\n // Manually insert an extra line if we're at the end of the line.\n // This prevent the cursor from appearing at the beginning of the\n // current line.\n if (rawPromptLine.length % width === 0) {\n content += '\\n';\n }\n let output = content + (bottomContent ? '\\n' + bottomContent : '');\n /**\n * Re-adjust the cursor at the correct position.\n */\n // We need to consider parts of the prompt under the cursor as part of the bottom\n // content in order to correctly cleanup and re-render.\n const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows;\n const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);\n // Return cursor to the input position (on top of the bottomContent)\n if (bottomContentHeight > 0)\n output += cursorUp(bottomContentHeight);\n // Return cursor to the initial left offset.\n output += cursorTo(this.cursorPos.cols);\n /**\n * Render and store state for future re-rendering\n */\n this.write(cursorDown(this.extraLinesUnderPrompt) + eraseLines(this.height) + output);\n this.extraLinesUnderPrompt = bottomContentHeight;\n this.height = height(output);\n }\n checkCursorPos() {\n const cursorPos = this.rl.getCursorPos();\n if (cursorPos.cols !== this.cursorPos.cols) {\n this.write(cursorTo(cursorPos.cols));\n this.cursorPos = cursorPos;\n }\n }\n done({ clearContent }) {\n this.rl.setPrompt('');\n let output = cursorDown(this.extraLinesUnderPrompt);\n output += clearContent ? eraseLines(this.height) : '\\n';\n output += cursorShow;\n this.write(output);\n this.rl.close();\n }\n}\n","// TODO: Remove this class once Node 22 becomes the minimum supported version.\nexport class PromisePolyfill extends Promise {\n // Available starting from Node 22\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n static withResolver() {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve: resolve, reject: reject };\n }\n}\n","import { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\n/**\n * Separator object\n * Used to space/separate choices group\n */\nexport class Separator {\n separator = styleText('dim', Array.from({ length: 15 }).join(figures.line));\n type = 'separator';\n constructor(separator) {\n if (separator) {\n this.separator = separator;\n }\n }\n static isSeparator(choice) {\n return Boolean(choice &&\n typeof choice === 'object' &&\n 'type' in choice &&\n choice.type === 'separator');\n }\n}\n","import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, useEffect, isBackspaceKey, isEnterKey, isUpKey, isDownKey, isNumberKey, Separator, ValidationError, makeTheme, } from '@inquirer/core';\nimport { cursorHide } from '@inquirer/ansi';\nimport { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nconst selectTheme = {\n icon: { cursor: figures.pointer },\n style: {\n disabled: (text) => styleText('dim', `- ${text}`),\n description: (text) => styleText('cyan', text),\n keysHelpTip: (keys) => keys\n .map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`)\n .join(styleText('dim', ' • ')),\n },\n indexMode: 'hidden',\n keybindings: [],\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n if (typeof choice !== 'object' || choice === null || !('value' in choice)) {\n // It's a raw value (string, number, etc.)\n const name = String(choice);\n return {\n value: choice,\n name,\n short: name,\n disabled: false,\n };\n }\n const name = choice.name ?? String(choice.value);\n const normalizedChoice = {\n value: choice.value,\n name,\n short: choice.short ?? name,\n disabled: choice.disabled ?? false,\n };\n if (choice.description) {\n normalizedChoice.description = choice.description;\n }\n return normalizedChoice;\n });\n}\nexport default createPrompt((config, done) => {\n const { loop = true, pageSize = 7 } = config;\n const theme = makeTheme(selectTheme, config.theme);\n const { keybindings } = theme;\n const [status, setStatus] = useState('idle');\n const prefix = usePrefix({ status, theme });\n const searchTimeoutRef = useRef();\n // Vim keybindings (j/k) conflict with typing those letters in search,\n // so search must be disabled when vim bindings are enabled\n const searchEnabled = !keybindings.includes('vim');\n const items = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n const bounds = useMemo(() => {\n const first = items.findIndex(isSelectable);\n const last = items.findLastIndex(isSelectable);\n if (first === -1) {\n throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.');\n }\n return { first, last };\n }, [items]);\n const defaultItemIndex = useMemo(() => {\n if (!('default' in config))\n return -1;\n return items.findIndex((item) => isSelectable(item) && item.value === config.default);\n }, [config.default, items]);\n const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex);\n // Safe to assume the cursor position always point to a Choice.\n const selectedChoice = items[active];\n useKeypress((key, rl) => {\n clearTimeout(searchTimeoutRef.current);\n if (isEnterKey(key)) {\n setStatus('done');\n done(selectedChoice.value);\n }\n else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {\n rl.clearLine(0);\n if (loop ||\n (isUpKey(key, keybindings) && active !== bounds.first) ||\n (isDownKey(key, keybindings) && active !== bounds.last)) {\n const offset = isUpKey(key, keybindings) ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + items.length) % items.length;\n } while (!isSelectable(items[next]));\n setActive(next);\n }\n }\n else if (isNumberKey(key) && !Number.isNaN(Number(rl.line))) {\n const selectedIndex = Number(rl.line) - 1;\n // Find the nth item (ignoring separators)\n let selectableIndex = -1;\n const position = items.findIndex((item) => {\n if (Separator.isSeparator(item))\n return false;\n selectableIndex++;\n return selectableIndex === selectedIndex;\n });\n const item = items[position];\n if (item != null && isSelectable(item)) {\n setActive(position);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n else if (isBackspaceKey(key)) {\n rl.clearLine(0);\n }\n else if (searchEnabled) {\n const searchTerm = rl.line.toLowerCase();\n const matchIndex = items.findIndex((item) => {\n if (Separator.isSeparator(item) || !isSelectable(item))\n return false;\n return item.name.toLowerCase().startsWith(searchTerm);\n });\n if (matchIndex !== -1) {\n setActive(matchIndex);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n });\n useEffect(() => () => {\n clearTimeout(searchTimeoutRef.current);\n }, []);\n const message = theme.style.message(config.message, status);\n const helpLine = theme.style.keysHelpTip([\n ['↑↓', 'navigate'],\n ['⏎', 'select'],\n ]);\n let separatorCount = 0;\n const page = usePagination({\n items,\n active,\n renderItem({ item, isActive, index }) {\n if (Separator.isSeparator(item)) {\n separatorCount++;\n return ` ${item.separator}`;\n }\n const indexLabel = theme.indexMode === 'number' ? `${index + 1 - separatorCount}. ` : '';\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n return theme.style.disabled(`${indexLabel}${item.name} ${disabledLabel}`);\n }\n const color = isActive ? theme.style.highlight : (x) => x;\n const cursor = isActive ? theme.icon.cursor : ` `;\n return color(`${cursor} ${indexLabel}${item.name}`);\n },\n pageSize,\n loop,\n });\n if (status === 'done') {\n return [prefix, message, theme.style.answer(selectedChoice.short)]\n .filter(Boolean)\n .join(' ');\n }\n const { description } = selectedChoice;\n const lines = [\n [prefix, message].filter(Boolean).join(' '),\n page,\n ' ',\n description ? theme.style.description(description) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return `${lines}${cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n","#!/usr/bin/env node\n\nimport { Command } from \"commander\";\nimport select from \"@inquirer/select\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport path from \"path\";\n\nconst program = new Command();\n\nprogram.name(\"nural\").description(\"Nural Framework CLI\").version(\"0.3.5\");\n\nprogram\n .command(\"new <project-name>\")\n .description(\"Create a new Nural project\")\n .action(async (projectName) => {\n const projectPath = path.join(process.cwd(), projectName);\n\n if (fs.existsSync(projectPath)) {\n console.error(\n chalk.red(`Error: Directory ${projectName} already exists.`),\n );\n process.exit(1);\n }\n\n const framework = await select({\n message: \"Select a framework:\",\n choices: [\n {\n name: \"express\",\n value: \"express\",\n description: \"Fast, unopinionated, minimalist web framework\",\n },\n {\n name: \"fastify\",\n value: \"fastify\",\n description: \"Fast and low overhead web framework\",\n },\n ],\n default: \"express\",\n });\n\n console.log(\n chalk.blue(`\\nInitializing new Nural project in ${projectName}...`),\n );\n\n // Create directories\n fs.ensureDirSync(path.join(projectPath, \"src/config\"));\n fs.ensureDirSync(path.join(projectPath, \"src/routes\"));\n fs.ensureDirSync(path.join(projectPath, \"src/middleware\"));\n fs.ensureDirSync(path.join(projectPath, \"src/services\"));\n\n // Create package.json\n const packageJson = {\n name: projectName,\n version: \"1.0.0\",\n main: \"dist/index.js\",\n scripts: {\n dev: \"nodemon --exec tsx src/index.ts\",\n build: \"tsup src/index.ts --format cjs,esm --dts\",\n start: \"node dist/index.js\",\n },\n dependencies: {\n nural: \"^0.3.5\",\n [framework]: framework === \"express\" ? \"^5.0.0\" : \"^5.0.0\", // Using explicit versions for peer deps\n zod: \"^3.22.4\",\n },\n devDependencies: {\n tsx: \"^4.7.1\",\n tsup: \"^8.0.2\",\n typescript: \"^5.3.3\",\n nodemon: \"^3.1.11\",\n \"@types/node\": \"^20.11.24\",\n ...(framework === \"express\" ? { \"@types/express\": \"^5.0.0\" } : {}),\n },\n };\n\n fs.writeJsonSync(path.join(projectPath, \"package.json\"), packageJson, {\n spaces: 2,\n });\n\n // Create tsconfig.json\n const tsconfig = {\n compilerOptions: {\n target: \"ES2020\",\n module: \"CommonJS\",\n moduleResolution: \"node\",\n strict: true,\n esModuleInterop: true,\n skipLibCheck: true,\n forceConsistentCasingInFileNames: true,\n outDir: \"./dist\",\n },\n include: [\"src/**/*\"],\n exclude: [\"node_modules\"],\n };\n\n fs.writeJsonSync(path.join(projectPath, \"tsconfig.json\"), tsconfig, {\n spaces: 2,\n });\n\n // Create src/index.ts\n const indexContent = `import { Nural } from \"nural\";\nimport { appConfig } from \"./config/app.config\";\n\nconst app = new Nural(appConfig);\n\napp.start(3000)\n`;\n fs.writeFileSync(path.join(projectPath, \"src/index.ts\"), indexContent);\n\n // Create src/config/app.config.ts\n const configContent = `import { NuralConfig } from \"nural\";\n\nexport const appConfig: NuralConfig = {\n framework: \"${framework}\",\n docs: true,\n logger: {\n enabled: true,\n },\n};\n`;\n fs.writeFileSync(\n path.join(projectPath, \"src/config/app.config.ts\"),\n configContent,\n );\n\n console.log(\n chalk.green(`\\n✔ Project ${projectName} created successfully!`),\n );\n console.log(chalk.white(`\\nNext steps:`));\n console.log(chalk.cyan(` cd ${projectName}`));\n console.log(chalk.cyan(` npm install`));\n console.log(chalk.cyan(` npm run dev`));\n });\n\nprogram\n .command(\"generate <type> <name>\")\n .alias(\"g\")\n .description(\"Generate a resource (route, middleware, service)\")\n .action((typeArg, nameArg) => {\n const type = typeArg.toLowerCase();\n const name = nameArg.toLowerCase();\n const srcDir = path.join(process.cwd(), \"src\");\n\n if (!fs.existsSync(srcDir)) {\n console.error(\n chalk.red(\n \"Error: src directory not found. Are you in a Nural project root?\",\n ),\n );\n process.exit(1);\n }\n\n const capitalize = (s: string) => s.charAt(0).toUpperCase() + s.slice(1);\n\n switch (type) {\n case \"route\": {\n const routeContent = `import { createRoute, z } from \"nural\";\n\nexport const ${name}Route = createRoute({\n method: \"GET\",\n path: \"/${name}\",\n summary: \"${capitalize(name)} route\",\n responses: {\n 200: z.object({ message: z.string() }),\n },\n handler: async () => {\n return { message: \"Hello from ${name}\" };\n },\n\n export const ${name}Routes = [${name}Route]\n});\n`;\n const routesDir = path.join(srcDir, \"routes\");\n fs.ensureDirSync(routesDir);\n fs.writeFileSync(\n path.join(routesDir, `${name}.routes.ts`),\n routeContent,\n );\n console.log(chalk.green(`Created src/routes/${name}.routes.ts`));\n break;\n }\n case \"middleware\": {\n const middlewareContent = `import { defineMiddleware } from \"nural\";\n\nexport const ${name}Middleware = defineMiddleware(async (req, res) => {\n // TODO: Implement middleware logic\n return { ${name}: true };\n});\n`;\n const middlewareDir = path.join(srcDir, \"middleware\");\n fs.ensureDirSync(middlewareDir);\n fs.writeFileSync(\n path.join(middlewareDir, `${name}.middleware.ts`),\n middlewareContent,\n );\n console.log(\n chalk.green(`Created src/middleware/${name}.middleware.ts`),\n );\n break;\n }\n case \"service\": {\n const serviceContent = `export class ${capitalize(name)}Service {\n constructor() {}\n\n async findAll() {\n return [];\n }\n}\n\nexport const ${name}Service = new ${capitalize(name)}Service();\n`;\n const servicesDir = path.join(srcDir, \"services\");\n fs.ensureDirSync(servicesDir);\n fs.writeFileSync(\n path.join(servicesDir, `${name}.service.ts`),\n serviceContent,\n );\n console.log(chalk.green(`Created src/services/${name}.service.ts`));\n break;\n }\n default:\n console.error(\n chalk.red(\n `Unknown type: ${type}. Supported: route, middleware, service`,\n ),\n );\n process.exit(1);\n }\n });\n\nprogram.parse(process.argv);\n"]}
|
|
1
|
+
{"version":3,"sources":["../../node_modules/tsup/assets/esm_shims.js","../../node_modules/cli-width/index.js","../../node_modules/mute-stream/lib/index.js","../../src/cli/index.ts","../../node_modules/@inquirer/select/dist/index.js","../../node_modules/@inquirer/core/dist/index.js","../../node_modules/@inquirer/core/dist/lib/key.js","../../node_modules/@inquirer/core/dist/lib/errors.js","../../node_modules/@inquirer/core/dist/lib/use-prefix.js","../../node_modules/@inquirer/core/dist/lib/use-state.js","../../node_modules/@inquirer/core/dist/lib/hook-engine.js","../../node_modules/@inquirer/core/dist/lib/use-effect.js","../../node_modules/@inquirer/core/dist/lib/make-theme.js","../../node_modules/@inquirer/core/dist/lib/theme.js","../../node_modules/@inquirer/figures/dist/index.js","../../node_modules/@inquirer/core/dist/lib/use-memo.js","../../node_modules/@inquirer/core/dist/lib/use-ref.js","../../node_modules/@inquirer/core/dist/lib/use-keypress.js","../../node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js","../../node_modules/@inquirer/core/dist/lib/utils.js","../../node_modules/wrap-ansi/index.js","../../node_modules/string-width/index.js","../../node_modules/strip-ansi/index.js","../../node_modules/ansi-regex/index.js","../../node_modules/get-east-asian-width/index.js","../../node_modules/get-east-asian-width/lookup.js","../../node_modules/emoji-regex/index.mjs","../../node_modules/ansi-styles/index.js","../../node_modules/@inquirer/core/dist/lib/create-prompt.js","../../node_modules/signal-exit/src/index.ts","../../node_modules/signal-exit/src/signals.ts","../../node_modules/@inquirer/core/dist/lib/screen-manager.js","../../node_modules/@inquirer/ansi/dist/index.js","../../node_modules/@inquirer/core/dist/lib/promise-polyfill.js","../../node_modules/@inquirer/core/dist/lib/Separator.js"],"names":["exports","cliWidth","MuteStream","AsyncResource","setState","process","code","signal","styleText","name","dist_default","item","path"],"mappings":"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","file":"index.js","sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","'use strict';\n\nmodule.exports = cliWidth;\n\nfunction normalizeOpts(options) {\n const defaultOpts = {\n defaultWidth: 0,\n output: process.stdout,\n tty: require('tty'),\n };\n\n if (!options) {\n return defaultOpts;\n }\n\n Object.keys(defaultOpts).forEach(function (key) {\n if (!options[key]) {\n options[key] = defaultOpts[key];\n }\n });\n\n return options;\n}\n\nfunction cliWidth(options) {\n const opts = normalizeOpts(options);\n\n if (opts.output.getWindowSize) {\n return opts.output.getWindowSize()[0] || opts.defaultWidth;\n }\n\n if (opts.tty.getWindowSize) {\n return opts.tty.getWindowSize()[1] || opts.defaultWidth;\n }\n\n if (opts.output.columns) {\n return opts.output.columns;\n }\n\n if (process.env.CLI_WIDTH) {\n const width = parseInt(process.env.CLI_WIDTH, 10);\n\n if (!isNaN(width) && width !== 0) {\n return width;\n }\n }\n\n return opts.defaultWidth;\n}\n","const Stream = require('stream')\n\nclass MuteStream extends Stream {\n #isTTY = null\n\n constructor (opts = {}) {\n super(opts)\n this.writable = this.readable = true\n this.muted = false\n this.on('pipe', this._onpipe)\n this.replace = opts.replace\n\n // For readline-type situations\n // This much at the start of a line being redrawn after a ctrl char\n // is seen (such as backspace) won't be redrawn as the replacement\n this._prompt = opts.prompt || null\n this._hadControl = false\n }\n\n #destSrc (key, def) {\n if (this._dest) {\n return this._dest[key]\n }\n if (this._src) {\n return this._src[key]\n }\n return def\n }\n\n #proxy (method, ...args) {\n if (typeof this._dest?.[method] === 'function') {\n this._dest[method](...args)\n }\n if (typeof this._src?.[method] === 'function') {\n this._src[method](...args)\n }\n }\n\n get isTTY () {\n if (this.#isTTY !== null) {\n return this.#isTTY\n }\n return this.#destSrc('isTTY', false)\n }\n\n // basically just get replace the getter/setter with a regular value\n set isTTY (val) {\n this.#isTTY = val\n }\n\n get rows () {\n return this.#destSrc('rows')\n }\n\n get columns () {\n return this.#destSrc('columns')\n }\n\n mute () {\n this.muted = true\n }\n\n unmute () {\n this.muted = false\n }\n\n _onpipe (src) {\n this._src = src\n }\n\n pipe (dest, options) {\n this._dest = dest\n return super.pipe(dest, options)\n }\n\n pause () {\n if (this._src) {\n return this._src.pause()\n }\n }\n\n resume () {\n if (this._src) {\n return this._src.resume()\n }\n }\n\n write (c) {\n if (this.muted) {\n if (!this.replace) {\n return true\n }\n // eslint-disable-next-line no-control-regex\n if (c.match(/^\\u001b/)) {\n if (c.indexOf(this._prompt) === 0) {\n c = c.slice(this._prompt.length)\n c = c.replace(/./g, this.replace)\n c = this._prompt + c\n }\n this._hadControl = true\n return this.emit('data', c)\n } else {\n if (this._prompt && this._hadControl &&\n c.indexOf(this._prompt) === 0) {\n this._hadControl = false\n this.emit('data', this._prompt)\n c = c.slice(this._prompt.length)\n }\n c = c.toString().replace(/./g, this.replace)\n }\n }\n this.emit('data', c)\n }\n\n end (c) {\n if (this.muted) {\n if (c && this.replace) {\n c = c.toString().replace(/./g, this.replace)\n } else {\n c = null\n }\n }\n if (c) {\n this.emit('data', c)\n }\n this.emit('end')\n }\n\n destroy (...args) {\n return this.#proxy('destroy', ...args)\n }\n\n destroySoon (...args) {\n return this.#proxy('destroySoon', ...args)\n }\n\n close (...args) {\n return this.#proxy('close', ...args)\n }\n}\n\nmodule.exports = MuteStream\n","import { Command } from \"commander\";\nimport select from \"@inquirer/select\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport path from \"path\";\n\nconst program = new Command();\n\nprogram.name(\"nural\").description(\"Nural Framework CLI\").version(\"0.3.7\");\n\nprogram\n .command(\"new <project-name>\")\n .description(\"Create a new Nural project\")\n .action(async (projectName) => {\n const projectPath = path.join(process.cwd(), projectName);\n\n if (fs.existsSync(projectPath)) {\n console.error(\n chalk.red(`Error: Directory ${projectName} already exists.`),\n );\n process.exit(1);\n }\n\n const framework = await select({\n message: \"Select a framework:\",\n choices: [\n {\n name: \"express\",\n value: \"express\",\n description: \"Fast, unopinionated, minimalist web framework\",\n },\n {\n name: \"fastify\",\n value: \"fastify\",\n description: \"Fast and low overhead web framework\",\n },\n ],\n default: \"express\",\n });\n\n console.log(\n chalk.blue(`\\nInitializing new Nural project in ${projectName}...`),\n );\n\n // Create directories\n fs.ensureDirSync(path.join(projectPath, \"src/config\"));\n fs.ensureDirSync(path.join(projectPath, \"src/routes\"));\n fs.ensureDirSync(path.join(projectPath, \"src/middleware\"));\n fs.ensureDirSync(path.join(projectPath, \"src/services\"));\n\n // Create package.json\n const packageJson = {\n name: projectName,\n version: \"1.0.0\",\n main: \"dist/index.js\",\n scripts: {\n dev: \"nodemon --exec tsx src/index.ts\",\n build: \"tsup src/index.ts --format cjs,esm --dts\",\n start: \"node dist/index.js\",\n },\n dependencies: {\n nural: \"^0.3.7\",\n [framework]: framework === \"express\" ? \"^5.0.0\" : \"^5.0.0\", // Using explicit versions for peer deps\n zod: \"^3.22.4\",\n },\n devDependencies: {\n tsx: \"^4.7.1\",\n tsup: \"^8.0.2\",\n typescript: \"^5.3.3\",\n nodemon: \"^3.1.11\",\n \"@types/node\": \"^20.11.24\",\n ...(framework === \"express\" ? { \"@types/express\": \"^5.0.0\" } : {}),\n },\n };\n\n fs.writeJsonSync(path.join(projectPath, \"package.json\"), packageJson, {\n spaces: 2,\n });\n\n // Create tsconfig.json\n const tsconfig = {\n compilerOptions: {\n target: \"ES2020\",\n module: \"CommonJS\",\n moduleResolution: \"node\",\n strict: true,\n esModuleInterop: true,\n skipLibCheck: true,\n forceConsistentCasingInFileNames: true,\n outDir: \"./dist\",\n },\n include: [\"src/**/*\"],\n exclude: [\"node_modules\"],\n };\n\n fs.writeJsonSync(path.join(projectPath, \"tsconfig.json\"), tsconfig, {\n spaces: 2,\n });\n\n // Create src/index.ts\n const indexContent = `import { Nural } from \"nural\";\nimport { appConfig } from \"./config/app.config\";\n\nconst app = new Nural(appConfig);\n\napp.start(3000)\n`;\n fs.writeFileSync(path.join(projectPath, \"src/index.ts\"), indexContent);\n\n // Create src/config/app.config.ts\n const configContent = `import { NuralConfig } from \"nural\";\n\nexport const appConfig: NuralConfig = {\n framework: \"${framework}\",\n docs: true,\n logger: {\n enabled: true,\n },\n};\n`;\n fs.writeFileSync(\n path.join(projectPath, \"src/config/app.config.ts\"),\n configContent,\n );\n\n console.log(\n chalk.green(`\\n✔ Project ${projectName} created successfully!`),\n );\n console.log(chalk.white(`\\nNext steps:`));\n console.log(chalk.cyan(` cd ${projectName}`));\n console.log(chalk.cyan(` npm install`));\n console.log(chalk.cyan(` npm run dev`));\n });\n\nprogram\n .command(\"generate <type> <name>\")\n .alias(\"g\")\n .description(\"Generate a resource (route, middleware, service)\")\n .action((typeArg, nameArg) => {\n const type = typeArg.toLowerCase();\n const name = nameArg.toLowerCase();\n const srcDir = path.join(process.cwd(), \"src\");\n\n if (!fs.existsSync(srcDir)) {\n console.error(\n chalk.red(\n \"Error: src directory not found. Are you in a Nural project root?\",\n ),\n );\n process.exit(1);\n }\n\n const capitalize = (s: string) => s.charAt(0).toUpperCase() + s.slice(1);\n\n switch (type) {\n case \"route\": {\n const routeContent = `import { createRoute, z } from \"nural\";\n\nexport const ${name}Route = createRoute({\n method: \"GET\",\n path: \"/${name}\",\n summary: \"${capitalize(name)} route\",\n responses: {\n 200: z.object({ message: z.string() }),\n },\n handler: async () => {\n return { message: \"Hello from ${name}\" };\n },\n\n export const ${name}Routes = [${name}Route]\n});\n`;\n const routesDir = path.join(srcDir, \"routes\");\n fs.ensureDirSync(routesDir);\n fs.writeFileSync(\n path.join(routesDir, `${name}.routes.ts`),\n routeContent,\n );\n console.log(chalk.green(`Created src/routes/${name}.routes.ts`));\n break;\n }\n case \"middleware\": {\n const middlewareContent = `import { defineMiddleware } from \"nural\";\n\nexport const ${name}Middleware = defineMiddleware(async (req, res) => {\n // TODO: Implement middleware logic\n return { ${name}: true };\n});\n`;\n const middlewareDir = path.join(srcDir, \"middleware\");\n fs.ensureDirSync(middlewareDir);\n fs.writeFileSync(\n path.join(middlewareDir, `${name}.middleware.ts`),\n middlewareContent,\n );\n console.log(\n chalk.green(`Created src/middleware/${name}.middleware.ts`),\n );\n break;\n }\n case \"service\": {\n const serviceContent = `export class ${capitalize(name)}Service {\n constructor() {}\n\n async findAll() {\n return [];\n }\n}\n\nexport const ${name}Service = new ${capitalize(name)}Service();\n`;\n const servicesDir = path.join(srcDir, \"services\");\n fs.ensureDirSync(servicesDir);\n fs.writeFileSync(\n path.join(servicesDir, `${name}.service.ts`),\n serviceContent,\n );\n console.log(chalk.green(`Created src/services/${name}.service.ts`));\n break;\n }\n default:\n console.error(\n chalk.red(\n `Unknown type: ${type}. Supported: route, middleware, service`,\n ),\n );\n process.exit(1);\n }\n });\n\nprogram.parse(process.argv);\n","import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, useEffect, isBackspaceKey, isEnterKey, isUpKey, isDownKey, isNumberKey, Separator, ValidationError, makeTheme, } from '@inquirer/core';\nimport { cursorHide } from '@inquirer/ansi';\nimport { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nconst selectTheme = {\n icon: { cursor: figures.pointer },\n style: {\n disabled: (text) => styleText('dim', `- ${text}`),\n description: (text) => styleText('cyan', text),\n keysHelpTip: (keys) => keys\n .map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`)\n .join(styleText('dim', ' • ')),\n },\n indexMode: 'hidden',\n keybindings: [],\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n if (typeof choice !== 'object' || choice === null || !('value' in choice)) {\n // It's a raw value (string, number, etc.)\n const name = String(choice);\n return {\n value: choice,\n name,\n short: name,\n disabled: false,\n };\n }\n const name = choice.name ?? String(choice.value);\n const normalizedChoice = {\n value: choice.value,\n name,\n short: choice.short ?? name,\n disabled: choice.disabled ?? false,\n };\n if (choice.description) {\n normalizedChoice.description = choice.description;\n }\n return normalizedChoice;\n });\n}\nexport default createPrompt((config, done) => {\n const { loop = true, pageSize = 7 } = config;\n const theme = makeTheme(selectTheme, config.theme);\n const { keybindings } = theme;\n const [status, setStatus] = useState('idle');\n const prefix = usePrefix({ status, theme });\n const searchTimeoutRef = useRef();\n // Vim keybindings (j/k) conflict with typing those letters in search,\n // so search must be disabled when vim bindings are enabled\n const searchEnabled = !keybindings.includes('vim');\n const items = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n const bounds = useMemo(() => {\n const first = items.findIndex(isSelectable);\n const last = items.findLastIndex(isSelectable);\n if (first === -1) {\n throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.');\n }\n return { first, last };\n }, [items]);\n const defaultItemIndex = useMemo(() => {\n if (!('default' in config))\n return -1;\n return items.findIndex((item) => isSelectable(item) && item.value === config.default);\n }, [config.default, items]);\n const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex);\n // Safe to assume the cursor position always point to a Choice.\n const selectedChoice = items[active];\n useKeypress((key, rl) => {\n clearTimeout(searchTimeoutRef.current);\n if (isEnterKey(key)) {\n setStatus('done');\n done(selectedChoice.value);\n }\n else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {\n rl.clearLine(0);\n if (loop ||\n (isUpKey(key, keybindings) && active !== bounds.first) ||\n (isDownKey(key, keybindings) && active !== bounds.last)) {\n const offset = isUpKey(key, keybindings) ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + items.length) % items.length;\n } while (!isSelectable(items[next]));\n setActive(next);\n }\n }\n else if (isNumberKey(key) && !Number.isNaN(Number(rl.line))) {\n const selectedIndex = Number(rl.line) - 1;\n // Find the nth item (ignoring separators)\n let selectableIndex = -1;\n const position = items.findIndex((item) => {\n if (Separator.isSeparator(item))\n return false;\n selectableIndex++;\n return selectableIndex === selectedIndex;\n });\n const item = items[position];\n if (item != null && isSelectable(item)) {\n setActive(position);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n else if (isBackspaceKey(key)) {\n rl.clearLine(0);\n }\n else if (searchEnabled) {\n const searchTerm = rl.line.toLowerCase();\n const matchIndex = items.findIndex((item) => {\n if (Separator.isSeparator(item) || !isSelectable(item))\n return false;\n return item.name.toLowerCase().startsWith(searchTerm);\n });\n if (matchIndex !== -1) {\n setActive(matchIndex);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n });\n useEffect(() => () => {\n clearTimeout(searchTimeoutRef.current);\n }, []);\n const message = theme.style.message(config.message, status);\n const helpLine = theme.style.keysHelpTip([\n ['↑↓', 'navigate'],\n ['⏎', 'select'],\n ]);\n let separatorCount = 0;\n const page = usePagination({\n items,\n active,\n renderItem({ item, isActive, index }) {\n if (Separator.isSeparator(item)) {\n separatorCount++;\n return ` ${item.separator}`;\n }\n const indexLabel = theme.indexMode === 'number' ? `${index + 1 - separatorCount}. ` : '';\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n return theme.style.disabled(`${indexLabel}${item.name} ${disabledLabel}`);\n }\n const color = isActive ? theme.style.highlight : (x) => x;\n const cursor = isActive ? theme.icon.cursor : ` `;\n return color(`${cursor} ${indexLabel}${item.name}`);\n },\n pageSize,\n loop,\n });\n if (status === 'done') {\n return [prefix, message, theme.style.answer(selectedChoice.short)]\n .filter(Boolean)\n .join(' ');\n }\n const { description } = selectedChoice;\n const lines = [\n [prefix, message].filter(Boolean).join(' '),\n page,\n ' ',\n description ? theme.style.description(description) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return `${lines}${cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n","export { isUpKey, isDownKey, isSpaceKey, isBackspaceKey, isTabKey, isNumberKey, isEnterKey, isShiftKey, } from \"./lib/key.js\";\nexport * from \"./lib/errors.js\";\nexport { usePrefix } from \"./lib/use-prefix.js\";\nexport { useState } from \"./lib/use-state.js\";\nexport { useEffect } from \"./lib/use-effect.js\";\nexport { useMemo } from \"./lib/use-memo.js\";\nexport { useRef } from \"./lib/use-ref.js\";\nexport { useKeypress } from \"./lib/use-keypress.js\";\nexport { makeTheme } from \"./lib/make-theme.js\";\nexport { usePagination } from \"./lib/pagination/use-pagination.js\";\nexport { createPrompt } from \"./lib/create-prompt.js\";\nexport { Separator } from \"./lib/Separator.js\";\n","export const isUpKey = (key, keybindings = []) => \n// The up key\nkey.name === 'up' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'k') ||\n // Emacs keybinding: Ctrl+P means \"previous\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'p');\nexport const isDownKey = (key, keybindings = []) => \n// The down key\nkey.name === 'down' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'j') ||\n // Emacs keybinding: Ctrl+N means \"next\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'n');\nexport const isSpaceKey = (key) => key.name === 'space';\nexport const isBackspaceKey = (key) => key.name === 'backspace';\nexport const isTabKey = (key) => key.name === 'tab';\nexport const isNumberKey = (key) => '1234567890'.includes(key.name);\nexport const isEnterKey = (key) => key.name === 'enter' || key.name === 'return';\nexport const isShiftKey = (key) => key.shift;\n","export class AbortPromptError extends Error {\n name = 'AbortPromptError';\n message = 'Prompt was aborted';\n constructor(options) {\n super();\n this.cause = options?.cause;\n }\n}\nexport class CancelPromptError extends Error {\n name = 'CancelPromptError';\n message = 'Prompt was canceled';\n}\nexport class ExitPromptError extends Error {\n name = 'ExitPromptError';\n}\nexport class HookError extends Error {\n name = 'HookError';\n}\nexport class ValidationError extends Error {\n name = 'ValidationError';\n}\n","import { useState } from \"./use-state.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { makeTheme } from \"./make-theme.js\";\nexport function usePrefix({ status = 'idle', theme, }) {\n const [showLoader, setShowLoader] = useState(false);\n const [tick, setTick] = useState(0);\n const { prefix, spinner } = makeTheme(theme);\n useEffect(() => {\n if (status === 'loading') {\n let tickInterval;\n let inc = -1;\n // Delay displaying spinner by 300ms, to avoid flickering\n const delayTimeout = setTimeout(() => {\n setShowLoader(true);\n tickInterval = setInterval(() => {\n inc = inc + 1;\n setTick(inc % spinner.frames.length);\n }, spinner.interval);\n }, 300);\n return () => {\n clearTimeout(delayTimeout);\n clearInterval(tickInterval);\n };\n }\n else {\n setShowLoader(false);\n }\n }, [status]);\n if (showLoader) {\n return spinner.frames[tick];\n }\n // There's a delay before we show the loader. So we want to ignore `loading` here, and pass idle instead.\n const iconName = status === 'loading' ? 'idle' : status;\n return typeof prefix === 'string' ? prefix : (prefix[iconName] ?? prefix['idle']);\n}\n","import { AsyncResource } from 'node:async_hooks';\nimport { withPointer, handleChange } from \"./hook-engine.js\";\nexport function useState(defaultValue) {\n return withPointer((pointer) => {\n const setState = AsyncResource.bind(function setState(newValue) {\n // Noop if the value is still the same.\n if (pointer.get() !== newValue) {\n pointer.set(newValue);\n // Trigger re-render\n handleChange();\n }\n });\n if (pointer.initialized) {\n return [pointer.get(), setState];\n }\n const value = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n pointer.set(value);\n return [value, setState];\n });\n}\n","/* eslint @typescript-eslint/no-explicit-any: [\"off\"] */\nimport { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';\nimport { HookError, ValidationError } from \"./errors.js\";\nconst hookStorage = new AsyncLocalStorage();\nfunction createStore(rl) {\n const store = {\n rl,\n hooks: [],\n hooksCleanup: [],\n hooksEffect: [],\n index: 0,\n handleChange() { },\n };\n return store;\n}\n// Run callback in with the hook engine setup.\nexport function withHooks(rl, cb) {\n const store = createStore(rl);\n return hookStorage.run(store, () => {\n function cycle(render) {\n store.handleChange = () => {\n store.index = 0;\n render();\n };\n store.handleChange();\n }\n return cb(cycle);\n });\n}\n// Safe getStore utility that'll return the store or throw if undefined.\nfunction getStore() {\n const store = hookStorage.getStore();\n if (!store) {\n throw new HookError('[Inquirer] Hook functions can only be called from within a prompt');\n }\n return store;\n}\nexport function readline() {\n return getStore().rl;\n}\n// Merge state updates happening within the callback function to avoid multiple renders.\nexport function withUpdates(fn) {\n const wrapped = (...args) => {\n const store = getStore();\n let shouldUpdate = false;\n const oldHandleChange = store.handleChange;\n store.handleChange = () => {\n shouldUpdate = true;\n };\n const returnValue = fn(...args);\n if (shouldUpdate) {\n oldHandleChange();\n }\n store.handleChange = oldHandleChange;\n return returnValue;\n };\n return AsyncResource.bind(wrapped);\n}\nexport function withPointer(cb) {\n const store = getStore();\n const { index } = store;\n const pointer = {\n get() {\n return store.hooks[index];\n },\n set(value) {\n store.hooks[index] = value;\n },\n initialized: index in store.hooks,\n };\n const returnValue = cb(pointer);\n store.index++;\n return returnValue;\n}\nexport function handleChange() {\n getStore().handleChange();\n}\nexport const effectScheduler = {\n queue(cb) {\n const store = getStore();\n const { index } = store;\n store.hooksEffect.push(() => {\n store.hooksCleanup[index]?.();\n const cleanFn = cb(readline());\n if (cleanFn != null && typeof cleanFn !== 'function') {\n throw new ValidationError('useEffect return value must be a cleanup function or nothing.');\n }\n store.hooksCleanup[index] = cleanFn;\n });\n },\n run() {\n const store = getStore();\n withUpdates(() => {\n store.hooksEffect.forEach((effect) => {\n effect();\n });\n // Warning: Clean the hooks before exiting the `withUpdates` block.\n // Failure to do so means an updates would hit the same effects again.\n store.hooksEffect.length = 0;\n })();\n },\n clearAll() {\n const store = getStore();\n store.hooksCleanup.forEach((cleanFn) => {\n cleanFn?.();\n });\n store.hooksEffect.length = 0;\n store.hooksCleanup.length = 0;\n },\n};\n","import { withPointer, effectScheduler } from \"./hook-engine.js\";\nexport function useEffect(cb, depArray) {\n withPointer((pointer) => {\n const oldDeps = pointer.get();\n const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i]));\n if (hasChanged) {\n effectScheduler.queue(cb);\n }\n pointer.set(depArray);\n });\n}\n","import { defaultTheme } from \"./theme.js\";\nfunction isPlainObject(value) {\n if (typeof value !== 'object' || value === null)\n return false;\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\nfunction deepMerge(...objects) {\n const output = {};\n for (const obj of objects) {\n for (const [key, value] of Object.entries(obj)) {\n const prevValue = output[key];\n output[key] =\n isPlainObject(prevValue) && isPlainObject(value)\n ? deepMerge(prevValue, value)\n : value;\n }\n }\n return output;\n}\nexport function makeTheme(...themes) {\n const themesToMerge = [\n defaultTheme,\n ...themes.filter((theme) => theme != null),\n ];\n return deepMerge(...themesToMerge);\n}\n","import { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nexport const defaultTheme = {\n prefix: {\n idle: styleText('blue', '?'),\n done: styleText('green', figures.tick),\n },\n spinner: {\n interval: 80,\n frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'].map((frame) => styleText('yellow', frame)),\n },\n style: {\n answer: (text) => styleText('cyan', text),\n message: (text) => styleText('bold', text),\n error: (text) => styleText('red', `> ${text}`),\n defaultAnswer: (text) => styleText('dim', `(${text})`),\n help: (text) => styleText('dim', text),\n highlight: (text) => styleText('cyan', text),\n key: (text) => styleText('cyan', styleText('bold', `<${text}>`)),\n },\n};\n","// process.env dot-notation access prints:\n// Property 'TERM' comes from an index signature, so it must be accessed with ['TERM'].ts(4111)\n/* eslint dot-notation: [\"off\"] */\nimport process from 'node:process';\n// Ported from is-unicode-supported\nfunction isUnicodeSupported() {\n if (process.platform !== 'win32') {\n return process.env['TERM'] !== 'linux'; // Linux console (kernel)\n }\n return (Boolean(process.env['WT_SESSION']) || // Windows Terminal\n Boolean(process.env['TERMINUS_SUBLIME']) || // Terminus (<0.2.27)\n process.env['ConEmuTask'] === '{cmd::Cmder}' || // ConEmu and cmder\n process.env['TERM_PROGRAM'] === 'Terminus-Sublime' ||\n process.env['TERM_PROGRAM'] === 'vscode' ||\n process.env['TERM'] === 'xterm-256color' ||\n process.env['TERM'] === 'alacritty' ||\n process.env['TERMINAL_EMULATOR'] === 'JetBrains-JediTerm');\n}\n// Ported from figures\nconst common = {\n circleQuestionMark: '(?)',\n questionMarkPrefix: '(?)',\n square: '█',\n squareDarkShade: '▓',\n squareMediumShade: '▒',\n squareLightShade: '░',\n squareTop: '▀',\n squareBottom: '▄',\n squareLeft: '▌',\n squareRight: '▐',\n squareCenter: '■',\n bullet: '●',\n dot: '․',\n ellipsis: '…',\n pointerSmall: '›',\n triangleUp: '▲',\n triangleUpSmall: '▴',\n triangleDown: '▼',\n triangleDownSmall: '▾',\n triangleLeftSmall: '◂',\n triangleRightSmall: '▸',\n home: '⌂',\n heart: '♥',\n musicNote: '♪',\n musicNoteBeamed: '♫',\n arrowUp: '↑',\n arrowDown: '↓',\n arrowLeft: '←',\n arrowRight: '→',\n arrowLeftRight: '↔',\n arrowUpDown: '↕',\n almostEqual: '≈',\n notEqual: '≠',\n lessOrEqual: '≤',\n greaterOrEqual: '≥',\n identical: '≡',\n infinity: '∞',\n subscriptZero: '₀',\n subscriptOne: '₁',\n subscriptTwo: '₂',\n subscriptThree: '₃',\n subscriptFour: '₄',\n subscriptFive: '₅',\n subscriptSix: '₆',\n subscriptSeven: '₇',\n subscriptEight: '₈',\n subscriptNine: '₉',\n oneHalf: '½',\n oneThird: '⅓',\n oneQuarter: '¼',\n oneFifth: '⅕',\n oneSixth: '⅙',\n oneEighth: '⅛',\n twoThirds: '⅔',\n twoFifths: '⅖',\n threeQuarters: '¾',\n threeFifths: '⅗',\n threeEighths: '⅜',\n fourFifths: '⅘',\n fiveSixths: '⅚',\n fiveEighths: '⅝',\n sevenEighths: '⅞',\n line: '─',\n lineBold: '━',\n lineDouble: '═',\n lineDashed0: '┄',\n lineDashed1: '┅',\n lineDashed2: '┈',\n lineDashed3: '┉',\n lineDashed4: '╌',\n lineDashed5: '╍',\n lineDashed6: '╴',\n lineDashed7: '╶',\n lineDashed8: '╸',\n lineDashed9: '╺',\n lineDashed10: '╼',\n lineDashed11: '╾',\n lineDashed12: '−',\n lineDashed13: '–',\n lineDashed14: '‐',\n lineDashed15: '⁃',\n lineVertical: '│',\n lineVerticalBold: '┃',\n lineVerticalDouble: '║',\n lineVerticalDashed0: '┆',\n lineVerticalDashed1: '┇',\n lineVerticalDashed2: '┊',\n lineVerticalDashed3: '┋',\n lineVerticalDashed4: '╎',\n lineVerticalDashed5: '╏',\n lineVerticalDashed6: '╵',\n lineVerticalDashed7: '╷',\n lineVerticalDashed8: '╹',\n lineVerticalDashed9: '╻',\n lineVerticalDashed10: '╽',\n lineVerticalDashed11: '╿',\n lineDownLeft: '┐',\n lineDownLeftArc: '╮',\n lineDownBoldLeftBold: '┓',\n lineDownBoldLeft: '┒',\n lineDownLeftBold: '┑',\n lineDownDoubleLeftDouble: '╗',\n lineDownDoubleLeft: '╖',\n lineDownLeftDouble: '╕',\n lineDownRight: '┌',\n lineDownRightArc: '╭',\n lineDownBoldRightBold: '┏',\n lineDownBoldRight: '┎',\n lineDownRightBold: '┍',\n lineDownDoubleRightDouble: '╔',\n lineDownDoubleRight: '╓',\n lineDownRightDouble: '╒',\n lineUpLeft: '┘',\n lineUpLeftArc: '╯',\n lineUpBoldLeftBold: '┛',\n lineUpBoldLeft: '┚',\n lineUpLeftBold: '┙',\n lineUpDoubleLeftDouble: '╝',\n lineUpDoubleLeft: '╜',\n lineUpLeftDouble: '╛',\n lineUpRight: '└',\n lineUpRightArc: '╰',\n lineUpBoldRightBold: '┗',\n lineUpBoldRight: '┖',\n lineUpRightBold: '┕',\n lineUpDoubleRightDouble: '╚',\n lineUpDoubleRight: '╙',\n lineUpRightDouble: '╘',\n lineUpDownLeft: '┤',\n lineUpBoldDownBoldLeftBold: '┫',\n lineUpBoldDownBoldLeft: '┨',\n lineUpDownLeftBold: '┥',\n lineUpBoldDownLeftBold: '┩',\n lineUpDownBoldLeftBold: '┪',\n lineUpDownBoldLeft: '┧',\n lineUpBoldDownLeft: '┦',\n lineUpDoubleDownDoubleLeftDouble: '╣',\n lineUpDoubleDownDoubleLeft: '╢',\n lineUpDownLeftDouble: '╡',\n lineUpDownRight: '├',\n lineUpBoldDownBoldRightBold: '┣',\n lineUpBoldDownBoldRight: '┠',\n lineUpDownRightBold: '┝',\n lineUpBoldDownRightBold: '┡',\n lineUpDownBoldRightBold: '┢',\n lineUpDownBoldRight: '┟',\n lineUpBoldDownRight: '┞',\n lineUpDoubleDownDoubleRightDouble: '╠',\n lineUpDoubleDownDoubleRight: '╟',\n lineUpDownRightDouble: '╞',\n lineDownLeftRight: '┬',\n lineDownBoldLeftBoldRightBold: '┳',\n lineDownLeftBoldRightBold: '┯',\n lineDownBoldLeftRight: '┰',\n lineDownBoldLeftBoldRight: '┱',\n lineDownBoldLeftRightBold: '┲',\n lineDownLeftRightBold: '┮',\n lineDownLeftBoldRight: '┭',\n lineDownDoubleLeftDoubleRightDouble: '╦',\n lineDownDoubleLeftRight: '╥',\n lineDownLeftDoubleRightDouble: '╤',\n lineUpLeftRight: '┴',\n lineUpBoldLeftBoldRightBold: '┻',\n lineUpLeftBoldRightBold: '┷',\n lineUpBoldLeftRight: '┸',\n lineUpBoldLeftBoldRight: '┹',\n lineUpBoldLeftRightBold: '┺',\n lineUpLeftRightBold: '┶',\n lineUpLeftBoldRight: '┵',\n lineUpDoubleLeftDoubleRightDouble: '╩',\n lineUpDoubleLeftRight: '╨',\n lineUpLeftDoubleRightDouble: '╧',\n lineUpDownLeftRight: '┼',\n lineUpBoldDownBoldLeftBoldRightBold: '╋',\n lineUpDownBoldLeftBoldRightBold: '╈',\n lineUpBoldDownLeftBoldRightBold: '╇',\n lineUpBoldDownBoldLeftRightBold: '╊',\n lineUpBoldDownBoldLeftBoldRight: '╉',\n lineUpBoldDownLeftRight: '╀',\n lineUpDownBoldLeftRight: '╁',\n lineUpDownLeftBoldRight: '┽',\n lineUpDownLeftRightBold: '┾',\n lineUpBoldDownBoldLeftRight: '╂',\n lineUpDownLeftBoldRightBold: '┿',\n lineUpBoldDownLeftBoldRight: '╃',\n lineUpBoldDownLeftRightBold: '╄',\n lineUpDownBoldLeftBoldRight: '╅',\n lineUpDownBoldLeftRightBold: '╆',\n lineUpDoubleDownDoubleLeftDoubleRightDouble: '╬',\n lineUpDoubleDownDoubleLeftRight: '╫',\n lineUpDownLeftDoubleRightDouble: '╪',\n lineCross: '╳',\n lineBackslash: '╲',\n lineSlash: '╱',\n};\nconst specialMainSymbols = {\n tick: '✔',\n info: 'ℹ',\n warning: '⚠',\n cross: '✘',\n squareSmall: '◻',\n squareSmallFilled: '◼',\n circle: '◯',\n circleFilled: '◉',\n circleDotted: '◌',\n circleDouble: '◎',\n circleCircle: 'ⓞ',\n circleCross: 'ⓧ',\n circlePipe: 'Ⓘ',\n radioOn: '◉',\n radioOff: '◯',\n checkboxOn: '☒',\n checkboxOff: '☐',\n checkboxCircleOn: 'ⓧ',\n checkboxCircleOff: 'Ⓘ',\n pointer: '❯',\n triangleUpOutline: '△',\n triangleLeft: '◀',\n triangleRight: '▶',\n lozenge: '◆',\n lozengeOutline: '◇',\n hamburger: '☰',\n smiley: '㋡',\n mustache: '෴',\n star: '★',\n play: '▶',\n nodejs: '⬢',\n oneSeventh: '⅐',\n oneNinth: '⅑',\n oneTenth: '⅒',\n};\nconst specialFallbackSymbols = {\n tick: '√',\n info: 'i',\n warning: '‼',\n cross: '×',\n squareSmall: '□',\n squareSmallFilled: '■',\n circle: '( )',\n circleFilled: '(*)',\n circleDotted: '( )',\n circleDouble: '( )',\n circleCircle: '(○)',\n circleCross: '(×)',\n circlePipe: '(│)',\n radioOn: '(*)',\n radioOff: '( )',\n checkboxOn: '[×]',\n checkboxOff: '[ ]',\n checkboxCircleOn: '(×)',\n checkboxCircleOff: '( )',\n pointer: '>',\n triangleUpOutline: '∆',\n triangleLeft: '◄',\n triangleRight: '►',\n lozenge: '♦',\n lozengeOutline: '◊',\n hamburger: '≡',\n smiley: '☺',\n mustache: '┌─┐',\n star: '✶',\n play: '►',\n nodejs: '♦',\n oneSeventh: '1/7',\n oneNinth: '1/9',\n oneTenth: '1/10',\n};\nexport const mainSymbols = {\n ...common,\n ...specialMainSymbols,\n};\nexport const fallbackSymbols = {\n ...common,\n ...specialFallbackSymbols,\n};\nconst shouldUseMain = isUnicodeSupported();\nconst figures = shouldUseMain\n ? mainSymbols\n : fallbackSymbols;\nexport default figures;\nconst replacements = Object.entries(specialMainSymbols);\n// On terminals which do not support Unicode symbols, substitute them to other symbols\nexport const replaceSymbols = (string, { useFallback = !shouldUseMain } = {}) => {\n if (useFallback) {\n for (const [key, mainSymbol] of replacements) {\n const fallbackSymbol = fallbackSymbols[key];\n if (!fallbackSymbol) {\n throw new Error(`Unable to find fallback for ${key}`);\n }\n string = string.replaceAll(mainSymbol, fallbackSymbol);\n }\n }\n return string;\n};\n","import { withPointer } from \"./hook-engine.js\";\nexport function useMemo(fn, dependencies) {\n return withPointer((pointer) => {\n const prev = pointer.get();\n if (!prev ||\n prev.dependencies.length !== dependencies.length ||\n prev.dependencies.some((dep, i) => dep !== dependencies[i])) {\n const value = fn();\n pointer.set({ value, dependencies });\n return value;\n }\n return prev.value;\n });\n}\n","import { useState } from \"./use-state.js\";\nexport function useRef(val) {\n return useState({ current: val })[0];\n}\n","import { useRef } from \"./use-ref.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { withUpdates } from \"./hook-engine.js\";\nexport function useKeypress(userHandler) {\n const signal = useRef(userHandler);\n signal.current = userHandler;\n useEffect((rl) => {\n let ignore = false;\n const handler = withUpdates((_input, event) => {\n if (ignore)\n return;\n void signal.current(event, rl);\n });\n rl.input.on('keypress', handler);\n return () => {\n ignore = true;\n rl.input.removeListener('keypress', handler);\n };\n }, []);\n}\n","import { useRef } from \"../use-ref.js\";\nimport { readlineWidth, breakLines } from \"../utils.js\";\nfunction usePointerPosition({ active, renderedItems, pageSize, loop, }) {\n const state = useRef({\n lastPointer: active,\n lastActive: undefined,\n });\n const { lastPointer, lastActive } = state.current;\n const middle = Math.floor(pageSize / 2);\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const defaultPointerPosition = renderedItems\n .slice(0, active)\n .reduce((acc, item) => acc + item.length, 0);\n let pointer = defaultPointerPosition;\n if (renderedLength > pageSize) {\n if (loop) {\n /**\n * Creates the next position for the pointer considering an infinitely\n * looping list of items to be rendered on the page.\n *\n * The goal is to progressively move the cursor to the middle position as the user move down, and then keep\n * the cursor there. When the user move up, maintain the cursor position.\n */\n // By default, keep the cursor position as-is.\n pointer = lastPointer;\n if (\n // First render, skip this logic.\n lastActive != null &&\n // Only move the pointer down when the user moves down.\n lastActive < active &&\n // Check user didn't move up across page boundary.\n active - lastActive < pageSize) {\n pointer = Math.min(\n // Furthest allowed position for the pointer is the middle of the list\n middle, Math.abs(active - lastActive) === 1\n ? Math.min(\n // Move the pointer at most the height of the last active item.\n lastPointer + (renderedItems[lastActive]?.length ?? 0), \n // If the user moved by one item, move the pointer to the natural position of the active item as\n // long as it doesn't move the cursor up.\n Math.max(defaultPointerPosition, lastPointer))\n : // Otherwise, move the pointer down by the difference between the active and last active item.\n lastPointer + active - lastActive);\n }\n }\n else {\n /**\n * Creates the next position for the pointer considering a finite list of\n * items to be rendered on a page.\n *\n * The goal is to keep the pointer in the middle of the page whenever possible, until\n * we reach the bounds of the list (top or bottom). In which case, the cursor moves progressively\n * to the bottom or top of the list.\n */\n const spaceUnderActive = renderedItems\n .slice(active)\n .reduce((acc, item) => acc + item.length, 0);\n pointer =\n spaceUnderActive < pageSize - middle\n ? // If the active item is near the end of the list, progressively move the cursor towards the end.\n pageSize - spaceUnderActive\n : // Otherwise, progressively move the pointer to the middle of the list.\n Math.min(defaultPointerPosition, middle);\n }\n }\n // Save state for the next render\n state.current.lastPointer = pointer;\n state.current.lastActive = active;\n return pointer;\n}\nexport function usePagination({ items, active, renderItem, pageSize, loop = true, }) {\n const width = readlineWidth();\n const bound = (num) => ((num % items.length) + items.length) % items.length;\n const renderedItems = items.map((item, index) => {\n if (item == null)\n return [];\n return breakLines(renderItem({ item, index, isActive: index === active }), width).split('\\n');\n });\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const renderItemAtIndex = (index) => renderedItems[index] ?? [];\n const pointer = usePointerPosition({ active, renderedItems, pageSize, loop });\n // Render the active item to decide the position.\n // If the active item fits under the pointer, we render it there.\n // Otherwise, we need to render it to fit at the bottom of the page; moving the pointer up.\n const activeItem = renderItemAtIndex(active).slice(0, pageSize);\n const activeItemPosition = pointer + activeItem.length <= pageSize ? pointer : pageSize - activeItem.length;\n // Create an array of lines for the page, and add the lines of the active item into the page\n const pageBuffer = Array.from({ length: pageSize });\n pageBuffer.splice(activeItemPosition, activeItem.length, ...activeItem);\n // Store to prevent rendering the same item twice\n const itemVisited = new Set([active]);\n // Fill the page under the active item\n let bufferPointer = activeItemPosition + activeItem.length;\n let itemPointer = bound(active + 1);\n while (bufferPointer < pageSize &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer > active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(0, pageSize - bufferPointer);\n pageBuffer.splice(bufferPointer, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer += linesToAdd.length;\n itemPointer = bound(itemPointer + 1);\n }\n // Fill the page over the active item\n bufferPointer = activeItemPosition - 1;\n itemPointer = bound(active - 1);\n while (bufferPointer >= 0 &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer < active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(Math.max(0, lines.length - bufferPointer - 1));\n pageBuffer.splice(bufferPointer - linesToAdd.length + 1, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer -= linesToAdd.length;\n itemPointer = bound(itemPointer - 1);\n }\n return pageBuffer.filter((line) => typeof line === 'string').join('\\n');\n}\n","import cliWidth from 'cli-width';\nimport wrapAnsi from 'wrap-ansi';\nimport { readline } from \"./hook-engine.js\";\n/**\n * Force line returns at specific width. This function is ANSI code friendly and it'll\n * ignore invisible codes during width calculation.\n * @param {string} content\n * @param {number} width\n * @return {string}\n */\nexport function breakLines(content, width) {\n return content\n .split('\\n')\n .flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true })\n .split('\\n')\n .map((str) => str.trimEnd()))\n .join('\\n');\n}\n/**\n * Returns the width of the active readline, or 80 as default value.\n * @returns {number}\n */\nexport function readlineWidth() {\n return cliWidth({ defaultWidth: 80, output: readline().output });\n}\n","import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = url => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows.at(-1)));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\n\t\t\tconst ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');\n\t\t\tisInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows.at(-1).length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode.\n//\n// 'hard' will never allow a string to take up more than columns characters.\n//\n// 'soft' allows long words to expand past the column length.\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows.at(-1).trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows.at(-1));\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst preString = rows.join('\\n');\n\tconst pre = [...preString];\n\n\t// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of codepoints.\n\tlet preStringIndex = 0;\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\n\t\tpreStringIndex += character.length;\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replaceAll('\\r\\n', '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","import 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 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 {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point\nexport {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';\n","// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2630 && x <= 0x2637\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x >= 0x268A && x <= 0x268F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E5\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x >= 0x16FF0 && x <= 0x16FF6\n\t\t|| x >= 0x17000 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D1E\n\t\t|| x >= 0x18D80 && x <= 0x18DF2\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x >= 0x1D300 && x <= 0x1D356\n\t\t|| x >= 0x1D360 && x <= 0x1D376\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D8\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA8A\n\t\t|| x >= 0x1FA8E && x <= 0x1FAC6\n\t\t|| x === 0x1FAC8\n\t\t|| x >= 0x1FACD && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAEA\n\t\t|| x >= 0x1FAEF && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction getCategory(x) {\n\tif (isAmbiguous(x)) return 'ambiguous';\n\n\tif (isFullWidth(x)) return 'fullwidth';\n\n\tif (\n\t\tx === 0x20A9\n\t\t|| x >= 0xFF61 && x <= 0xFFBE\n\t\t|| x >= 0xFFC2 && x <= 0xFFC7\n\t\t|| x >= 0xFFCA && x <= 0xFFCF\n\t\t|| x >= 0xFFD2 && x <= 0xFFD7\n\t\t|| x >= 0xFFDA && x <= 0xFFDC\n\t\t|| x >= 0xFFE8 && x <= 0xFFEE\n\t) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (\n\t\tx >= 0x20 && x <= 0x7E\n\t\t|| x === 0xA2\n\t\t|| x === 0xA3\n\t\t|| x === 0xA5\n\t\t|| x === 0xA6\n\t\t|| x === 0xAC\n\t\t|| x === 0xAF\n\t\t|| x >= 0x27E6 && x <= 0x27ED\n\t\t|| x === 0x2985\n\t\t|| x === 0x2986\n\t) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(x)) return 'wide';\n\n\treturn 'neutral';\n}\n\nexport {isAmbiguous, isFullWidth, isWide, getCategory};\n","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E-\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED8\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC2\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF]|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","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 * as readline from 'node:readline';\nimport { AsyncResource } from 'node:async_hooks';\nimport MuteStream from 'mute-stream';\nimport { onExit as onSignalExit } from 'signal-exit';\nimport ScreenManager from \"./screen-manager.js\";\nimport { PromisePolyfill } from \"./promise-polyfill.js\";\nimport { withHooks, effectScheduler } from \"./hook-engine.js\";\nimport { AbortPromptError, CancelPromptError, ExitPromptError } from \"./errors.js\";\nfunction getCallSites() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _prepareStackTrace = Error.prepareStackTrace;\n let result = [];\n try {\n Error.prepareStackTrace = (_, callSites) => {\n const callSitesWithoutCurrent = callSites.slice(1);\n result = callSitesWithoutCurrent;\n return callSitesWithoutCurrent;\n };\n // oxlint-disable-next-line no-unused-expressions\n new Error().stack;\n }\n catch {\n // An error will occur if the Node flag --frozen-intrinsics is used.\n // https://nodejs.org/api/cli.html#--frozen-intrinsics\n return result;\n }\n Error.prepareStackTrace = _prepareStackTrace;\n return result;\n}\nexport function createPrompt(view) {\n const callSites = getCallSites();\n const prompt = (config, context = {}) => {\n // Default `input` to stdin\n const { input = process.stdin, signal } = context;\n const cleanups = new Set();\n // Add mute capabilities to the output\n const output = new MuteStream();\n output.pipe(context.output ?? process.stdout);\n const rl = readline.createInterface({\n terminal: true,\n input,\n output,\n });\n const screen = new ScreenManager(rl);\n const { promise, resolve, reject } = PromisePolyfill.withResolver();\n const cancel = () => reject(new CancelPromptError());\n if (signal) {\n const abort = () => reject(new AbortPromptError({ cause: signal.reason }));\n if (signal.aborted) {\n abort();\n return Object.assign(promise, { cancel });\n }\n signal.addEventListener('abort', abort);\n cleanups.add(() => signal.removeEventListener('abort', abort));\n }\n cleanups.add(onSignalExit((code, signal) => {\n reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal}`));\n }));\n // SIGINT must be explicitly handled by the prompt so the ExitPromptError can be handled.\n // Otherwise, the prompt will stop and in some scenarios never resolve.\n // Ref issue #1741\n const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`));\n rl.on('SIGINT', sigint);\n cleanups.add(() => rl.removeListener('SIGINT', sigint));\n // Re-renders only happen when the state change; but the readline cursor could change position\n // and that also requires a re-render (and a manual one because we mute the streams).\n // We set the listener after the initial workLoop to avoid a double render if render triggered\n // by a state change sets the cursor to the right position.\n const checkCursorPos = () => screen.checkCursorPos();\n rl.input.on('keypress', checkCursorPos);\n cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));\n return withHooks(rl, (cycle) => {\n // The close event triggers immediately when the user press ctrl+c. SignalExit on the other hand\n // triggers after the process is done (which happens after timeouts are done triggering.)\n // We triggers the hooks cleanup phase on rl `close` so active timeouts can be cleared.\n const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll());\n rl.on('close', hooksCleanup);\n cleanups.add(() => rl.removeListener('close', hooksCleanup));\n cycle(() => {\n try {\n const nextView = view(config, (value) => {\n setImmediate(() => resolve(value));\n });\n // Typescript won't allow this, but not all users rely on typescript.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (nextView === undefined) {\n const callerFilename = callSites[1]?.getFileName();\n throw new Error(`Prompt functions must return a string.\\n at ${callerFilename}`);\n }\n const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView;\n screen.render(content, bottomContent);\n effectScheduler.run();\n }\n catch (error) {\n reject(error);\n }\n });\n return Object.assign(promise\n .then((answer) => {\n effectScheduler.clearAll();\n return answer;\n }, (error) => {\n effectScheduler.clearAll();\n throw error;\n })\n // Wait for the promise to settle, then cleanup.\n .finally(() => {\n cleanups.forEach((cleanup) => cleanup());\n screen.done({ clearContent: Boolean(context.clearPromptOnDone) });\n output.end();\n })\n // Once cleanup is done, let the expose promise resolve/reject to the internal one.\n .then(() => promise), { cancel });\n });\n };\n return prompt;\n}\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n","/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n","import { stripVTControlCharacters } from 'node:util';\nimport { breakLines, readlineWidth } from \"./utils.js\";\nimport { cursorDown, cursorUp, cursorTo, cursorShow, eraseLines } from '@inquirer/ansi';\nconst height = (content) => content.split('\\n').length;\nconst lastLine = (content) => content.split('\\n').pop() ?? '';\nexport default class ScreenManager {\n // These variables are keeping information to allow correct prompt re-rendering\n height = 0;\n extraLinesUnderPrompt = 0;\n cursorPos;\n rl;\n constructor(rl) {\n this.rl = rl;\n this.cursorPos = rl.getCursorPos();\n }\n write(content) {\n this.rl.output.unmute();\n this.rl.output.write(content);\n this.rl.output.mute();\n }\n render(content, bottomContent = '') {\n // Write message to screen and setPrompt to control backspace\n const promptLine = lastLine(content);\n const rawPromptLine = stripVTControlCharacters(promptLine);\n // Remove the rl.line from our prompt. We can't rely on the content of\n // rl.line (mainly because of the password prompt), so just rely on it's\n // length.\n let prompt = rawPromptLine;\n if (this.rl.line.length > 0) {\n prompt = prompt.slice(0, -this.rl.line.length);\n }\n this.rl.setPrompt(prompt);\n // SetPrompt will change cursor position, now we can get correct value\n this.cursorPos = this.rl.getCursorPos();\n const width = readlineWidth();\n content = breakLines(content, width);\n bottomContent = breakLines(bottomContent, width);\n // Manually insert an extra line if we're at the end of the line.\n // This prevent the cursor from appearing at the beginning of the\n // current line.\n if (rawPromptLine.length % width === 0) {\n content += '\\n';\n }\n let output = content + (bottomContent ? '\\n' + bottomContent : '');\n /**\n * Re-adjust the cursor at the correct position.\n */\n // We need to consider parts of the prompt under the cursor as part of the bottom\n // content in order to correctly cleanup and re-render.\n const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows;\n const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);\n // Return cursor to the input position (on top of the bottomContent)\n if (bottomContentHeight > 0)\n output += cursorUp(bottomContentHeight);\n // Return cursor to the initial left offset.\n output += cursorTo(this.cursorPos.cols);\n /**\n * Render and store state for future re-rendering\n */\n this.write(cursorDown(this.extraLinesUnderPrompt) + eraseLines(this.height) + output);\n this.extraLinesUnderPrompt = bottomContentHeight;\n this.height = height(output);\n }\n checkCursorPos() {\n const cursorPos = this.rl.getCursorPos();\n if (cursorPos.cols !== this.cursorPos.cols) {\n this.write(cursorTo(cursorPos.cols));\n this.cursorPos = cursorPos;\n }\n }\n done({ clearContent }) {\n this.rl.setPrompt('');\n let output = cursorDown(this.extraLinesUnderPrompt);\n output += clearContent ? eraseLines(this.height) : '\\n';\n output += cursorShow;\n this.write(output);\n this.rl.close();\n }\n}\n","const ESC = '\\u001B[';\n/** Move cursor to first column */\nexport const cursorLeft = ESC + 'G';\n/** Hide the cursor */\nexport const cursorHide = ESC + '?25l';\n/** Show the cursor */\nexport const cursorShow = ESC + '?25h';\n/** Move cursor up by count rows */\nexport const cursorUp = (rows = 1) => (rows > 0 ? `${ESC}${rows}A` : '');\n/** Move cursor down by count rows */\nexport const cursorDown = (rows = 1) => rows > 0 ? `${ESC}${rows}B` : '';\n/** Move cursor to position (x, y) */\nexport const cursorTo = (x, y) => {\n if (typeof y === 'number' && !Number.isNaN(y)) {\n return `${ESC}${y + 1};${x + 1}H`;\n }\n return `${ESC}${x + 1}G`;\n};\nconst eraseLine = ESC + '2K';\n/** Erase the specified number of lines above the cursor */\nexport const eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : '';\n","// TODO: Remove this class once Node 22 becomes the minimum supported version.\nexport class PromisePolyfill extends Promise {\n // Available starting from Node 22\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n static withResolver() {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve: resolve, reject: reject };\n }\n}\n","import { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\n/**\n * Separator object\n * Used to space/separate choices group\n */\nexport class Separator {\n separator = styleText('dim', Array.from({ length: 15 }).join(figures.line));\n type = 'separator';\n constructor(separator) {\n if (separator) {\n this.separator = separator;\n }\n }\n static isSeparator(choice) {\n return Boolean(choice &&\n typeof choice === 'object' &&\n 'type' in choice &&\n choice.type === 'separator');\n }\n}\n"]}
|