maxsimcli 4.6.0 → 4.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/CHANGELOG.md +39 -0
- package/dist/cli.cjs +470 -961
- package/dist/cli.cjs.map +1 -1
- package/dist/{core-RRjCSt0G.cjs → core-D5zUr9cb.cjs} +4 -3
- package/dist/core-D5zUr9cb.cjs.map +1 -0
- package/dist/install.cjs +3 -195
- package/dist/install.cjs.map +1 -1
- package/dist/mcp-server.cjs +2853 -217
- package/dist/mcp-server.cjs.map +1 -1
- package/dist/{skills-MYlMkYNt.cjs → skills-CjFWZIGM.cjs} +6 -6
- package/dist/{skills-MYlMkYNt.cjs.map → skills-CjFWZIGM.cjs.map} +1 -1
- package/package.json +1 -7
- package/dist/.tsbuildinfo +0 -1
- package/dist/assets/dashboard/client/assets/index-C199D4Eb.css +0 -32
- package/dist/assets/dashboard/client/assets/index-nAXJLp0_.js +0 -233
- package/dist/assets/dashboard/client/index.html +0 -19
- package/dist/assets/dashboard/server.js +0 -78813
- package/dist/backend/index.d.ts +0 -4
- package/dist/backend/index.d.ts.map +0 -1
- package/dist/backend/index.js +0 -12
- package/dist/backend/index.js.map +0 -1
- package/dist/backend/lifecycle.d.ts +0 -13
- package/dist/backend/lifecycle.d.ts.map +0 -1
- package/dist/backend/lifecycle.js +0 -168
- package/dist/backend/lifecycle.js.map +0 -1
- package/dist/backend/server.d.ts +0 -13
- package/dist/backend/server.d.ts.map +0 -1
- package/dist/backend/server.js +0 -1013
- package/dist/backend/server.js.map +0 -1
- package/dist/backend/terminal.d.ts +0 -49
- package/dist/backend/terminal.d.ts.map +0 -1
- package/dist/backend/terminal.js +0 -209
- package/dist/backend/terminal.js.map +0 -1
- package/dist/backend/types.d.ts +0 -77
- package/dist/backend/types.d.ts.map +0 -1
- package/dist/backend/types.js +0 -6
- package/dist/backend/types.js.map +0 -1
- package/dist/backend-server.cjs +0 -80672
- package/dist/backend-server.cjs.map +0 -1
- package/dist/backend-server.d.cts +0 -2
- package/dist/backend-server.d.ts +0 -11
- package/dist/backend-server.d.ts.map +0 -1
- package/dist/backend-server.js +0 -43
- package/dist/backend-server.js.map +0 -1
- package/dist/cli.d.cts +0 -2
- package/dist/cli.d.ts +0 -7
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -510
- package/dist/cli.js.map +0 -1
- package/dist/core/artefakte.d.ts +0 -12
- package/dist/core/artefakte.d.ts.map +0 -1
- package/dist/core/artefakte.js +0 -152
- package/dist/core/artefakte.js.map +0 -1
- package/dist/core/commands.d.ts +0 -26
- package/dist/core/commands.d.ts.map +0 -1
- package/dist/core/commands.js +0 -550
- package/dist/core/commands.js.map +0 -1
- package/dist/core/config.d.ts +0 -10
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -143
- package/dist/core/config.js.map +0 -1
- package/dist/core/context-loader.d.ts +0 -21
- package/dist/core/context-loader.d.ts.map +0 -1
- package/dist/core/context-loader.js +0 -212
- package/dist/core/context-loader.js.map +0 -1
- package/dist/core/core.d.ts +0 -91
- package/dist/core/core.d.ts.map +0 -1
- package/dist/core/core.js +0 -823
- package/dist/core/core.js.map +0 -1
- package/dist/core/dashboard-launcher.d.ts +0 -56
- package/dist/core/dashboard-launcher.d.ts.map +0 -1
- package/dist/core/dashboard-launcher.js +0 -246
- package/dist/core/dashboard-launcher.js.map +0 -1
- package/dist/core/drift.d.ts +0 -37
- package/dist/core/drift.d.ts.map +0 -1
- package/dist/core/drift.js +0 -213
- package/dist/core/drift.js.map +0 -1
- package/dist/core/frontmatter.d.ts +0 -33
- package/dist/core/frontmatter.d.ts.map +0 -1
- package/dist/core/frontmatter.js +0 -193
- package/dist/core/frontmatter.js.map +0 -1
- package/dist/core/index.d.ts +0 -28
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -189
- package/dist/core/index.js.map +0 -1
- package/dist/core/init.d.ts +0 -287
- package/dist/core/init.d.ts.map +0 -1
- package/dist/core/init.js +0 -816
- package/dist/core/init.js.map +0 -1
- package/dist/core/milestone.d.ts +0 -9
- package/dist/core/milestone.d.ts.map +0 -1
- package/dist/core/milestone.js +0 -230
- package/dist/core/milestone.js.map +0 -1
- package/dist/core/phase.d.ts +0 -53
- package/dist/core/phase.d.ts.map +0 -1
- package/dist/core/phase.js +0 -891
- package/dist/core/phase.js.map +0 -1
- package/dist/core/roadmap.d.ts +0 -10
- package/dist/core/roadmap.d.ts.map +0 -1
- package/dist/core/roadmap.js +0 -165
- package/dist/core/roadmap.js.map +0 -1
- package/dist/core/skills.d.ts +0 -20
- package/dist/core/skills.d.ts.map +0 -1
- package/dist/core/skills.js +0 -144
- package/dist/core/skills.js.map +0 -1
- package/dist/core/start.d.ts +0 -15
- package/dist/core/start.d.ts.map +0 -1
- package/dist/core/start.js +0 -80
- package/dist/core/start.js.map +0 -1
- package/dist/core/state.d.ts +0 -32
- package/dist/core/state.d.ts.map +0 -1
- package/dist/core/state.js +0 -582
- package/dist/core/state.js.map +0 -1
- package/dist/core/template.d.ts +0 -30
- package/dist/core/template.d.ts.map +0 -1
- package/dist/core/template.js +0 -223
- package/dist/core/template.js.map +0 -1
- package/dist/core/types.d.ts +0 -519
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -60
- package/dist/core/types.js.map +0 -1
- package/dist/core/verify.d.ts +0 -128
- package/dist/core/verify.d.ts.map +0 -1
- package/dist/core/verify.js +0 -754
- package/dist/core/verify.js.map +0 -1
- package/dist/core-RRjCSt0G.cjs.map +0 -1
- package/dist/esm-iIOBzmdz.cjs +0 -1561
- package/dist/esm-iIOBzmdz.cjs.map +0 -1
- package/dist/hooks/index.d.ts +0 -11
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -18
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/maxsim-check-update.d.ts +0 -17
- package/dist/hooks/maxsim-check-update.d.ts.map +0 -1
- package/dist/hooks/maxsim-check-update.js +0 -101
- package/dist/hooks/maxsim-check-update.js.map +0 -1
- package/dist/hooks/maxsim-context-monitor.d.ts +0 -21
- package/dist/hooks/maxsim-context-monitor.d.ts.map +0 -1
- package/dist/hooks/maxsim-context-monitor.js +0 -131
- package/dist/hooks/maxsim-context-monitor.js.map +0 -1
- package/dist/hooks/maxsim-statusline.d.ts +0 -19
- package/dist/hooks/maxsim-statusline.d.ts.map +0 -1
- package/dist/hooks/maxsim-statusline.js +0 -146
- package/dist/hooks/maxsim-statusline.js.map +0 -1
- package/dist/hooks/shared.d.ts +0 -11
- package/dist/hooks/shared.d.ts.map +0 -1
- package/dist/hooks/shared.js +0 -29
- package/dist/hooks/shared.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
- package/dist/install/adapters.d.ts +0 -6
- package/dist/install/adapters.d.ts.map +0 -1
- package/dist/install/adapters.js +0 -65
- package/dist/install/adapters.js.map +0 -1
- package/dist/install/copy.d.ts +0 -6
- package/dist/install/copy.d.ts.map +0 -1
- package/dist/install/copy.js +0 -71
- package/dist/install/copy.js.map +0 -1
- package/dist/install/dashboard.d.ts +0 -16
- package/dist/install/dashboard.d.ts.map +0 -1
- package/dist/install/dashboard.js +0 -273
- package/dist/install/dashboard.js.map +0 -1
- package/dist/install/hooks.d.ts +0 -31
- package/dist/install/hooks.d.ts.map +0 -1
- package/dist/install/hooks.js +0 -260
- package/dist/install/hooks.js.map +0 -1
- package/dist/install/index.d.ts +0 -2
- package/dist/install/index.d.ts.map +0 -1
- package/dist/install/index.js +0 -534
- package/dist/install/index.js.map +0 -1
- package/dist/install/manifest.d.ts +0 -23
- package/dist/install/manifest.d.ts.map +0 -1
- package/dist/install/manifest.js +0 -133
- package/dist/install/manifest.js.map +0 -1
- package/dist/install/patches.d.ts +0 -10
- package/dist/install/patches.d.ts.map +0 -1
- package/dist/install/patches.js +0 -124
- package/dist/install/patches.js.map +0 -1
- package/dist/install/shared.d.ts +0 -56
- package/dist/install/shared.d.ts.map +0 -1
- package/dist/install/shared.js +0 -181
- package/dist/install/shared.js.map +0 -1
- package/dist/install/uninstall.d.ts +0 -5
- package/dist/install/uninstall.d.ts.map +0 -1
- package/dist/install/uninstall.js +0 -222
- package/dist/install/uninstall.js.map +0 -1
- package/dist/install/utils.d.ts +0 -27
- package/dist/install/utils.d.ts.map +0 -1
- package/dist/install/utils.js +0 -99
- package/dist/install/utils.js.map +0 -1
- package/dist/install.d.cts +0 -2
- package/dist/lifecycle-DxCru7rk.cjs +0 -136
- package/dist/lifecycle-DxCru7rk.cjs.map +0 -1
- package/dist/mcp/config-tools.d.ts +0 -13
- package/dist/mcp/config-tools.d.ts.map +0 -1
- package/dist/mcp/config-tools.js +0 -66
- package/dist/mcp/config-tools.js.map +0 -1
- package/dist/mcp/context-tools.d.ts +0 -13
- package/dist/mcp/context-tools.d.ts.map +0 -1
- package/dist/mcp/context-tools.js +0 -176
- package/dist/mcp/context-tools.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -11
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -26
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/phase-tools.d.ts +0 -13
- package/dist/mcp/phase-tools.d.ts.map +0 -1
- package/dist/mcp/phase-tools.js +0 -177
- package/dist/mcp/phase-tools.js.map +0 -1
- package/dist/mcp/roadmap-tools.d.ts +0 -13
- package/dist/mcp/roadmap-tools.d.ts.map +0 -1
- package/dist/mcp/roadmap-tools.js +0 -79
- package/dist/mcp/roadmap-tools.js.map +0 -1
- package/dist/mcp/state-tools.d.ts +0 -13
- package/dist/mcp/state-tools.d.ts.map +0 -1
- package/dist/mcp/state-tools.js +0 -185
- package/dist/mcp/state-tools.js.map +0 -1
- package/dist/mcp/todo-tools.d.ts +0 -13
- package/dist/mcp/todo-tools.d.ts.map +0 -1
- package/dist/mcp/todo-tools.js +0 -143
- package/dist/mcp/todo-tools.js.map +0 -1
- package/dist/mcp/utils.d.ts +0 -27
- package/dist/mcp/utils.d.ts.map +0 -1
- package/dist/mcp/utils.js +0 -82
- package/dist/mcp/utils.js.map +0 -1
- package/dist/mcp-server.d.cts +0 -2
- package/dist/mcp-server.d.ts +0 -12
- package/dist/mcp-server.d.ts.map +0 -1
- package/dist/mcp-server.js +0 -31
- package/dist/mcp-server.js.map +0 -1
- package/dist/server-By0TN-nC.cjs +0 -2995
- package/dist/server-By0TN-nC.cjs.map +0 -1
package/dist/install.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.cjs","names":["Stream","path","path","path","path","path","path","path","path","path","path","path","styles","process","os","tty","signals","processOk","kExitEmitter","global","ObjectDefineProperty","Emitter","SignalExitBase","signalExitWrap","SignalExitFallback","SignalExit","process","#process","#sigListeners","signals","#emitter","#hupSig","#originalProcessReallyExit","#originalProcessEmit","#loaded","#processEmit","#processReallyExit","process","process","spinners","tty","isUnicodeSupported","process","isUnicodeSupported","isFullWidth","isFullWidth","process","#activeCount","#realStart","#realStop","#stdin","#stdinWasPaused","#stdinWasRaw","#handleInputBound","#isInternalWrite","#deferRenderTimer","#tryRender","#getFullPrefixText","#getFullSuffixText","#options","process","#stream","#linesToClear","#frameIndex","#computeLineCountFrom","#spinner","isUnicodeSupported","cliSpinners","#id","#formatAffix","#lastFrameTime","#internalWrite","#hookedStreams","#hookedWrite","#hookStream","#stringifyChunk","#chunkTerminatesLine","#clearRenderDeferral","#scheduleRenderDeferral","#drainHandler","#buildOutputLine","#isDiscardingStdin","#installHook","#uninstallHook","logSymbols.success","logSymbols.error","logSymbols.warning","logSymbols.info","AsyncLocalStorage","AsyncResource","AsyncResource","process","NO_TRUNCATION","fastStringTruncatedWidth","ESC","stringWidth","#isTTY","#destSrc","#proxy","global","process","#process","#sigListeners","#emitter","#hupSig","#originalProcessReallyExit","#originalProcessEmit","#loaded","#processEmit","#processReallyExit","MuteStream","readline","onSignalExit","AsyncResource","path","os","fs","fs","path","os","path","path","fs","os","path","fs","confirm","fs","crypto","path","path","fs","fs","path","path","os","fs","path","os","fs","confirm","select"],"sources":["../../../node_modules/universalify/index.js","../../../node_modules/graceful-fs/polyfills.js","../../../node_modules/graceful-fs/legacy-streams.js","../../../node_modules/graceful-fs/clone.js","../../../node_modules/graceful-fs/graceful-fs.js","../../../node_modules/fs-extra/lib/fs/index.js","../../../node_modules/fs-extra/lib/mkdirs/utils.js","../../../node_modules/fs-extra/lib/mkdirs/make-dir.js","../../../node_modules/fs-extra/lib/mkdirs/index.js","../../../node_modules/fs-extra/lib/path-exists/index.js","../../../node_modules/fs-extra/lib/util/utimes.js","../../../node_modules/fs-extra/lib/util/stat.js","../../../node_modules/fs-extra/lib/util/async.js","../../../node_modules/fs-extra/lib/copy/copy.js","../../../node_modules/fs-extra/lib/copy/copy-sync.js","../../../node_modules/fs-extra/lib/copy/index.js","../../../node_modules/fs-extra/lib/remove/index.js","../../../node_modules/fs-extra/lib/empty/index.js","../../../node_modules/fs-extra/lib/ensure/file.js","../../../node_modules/fs-extra/lib/ensure/link.js","../../../node_modules/fs-extra/lib/ensure/symlink-paths.js","../../../node_modules/fs-extra/lib/ensure/symlink-type.js","../../../node_modules/fs-extra/lib/ensure/symlink.js","../../../node_modules/fs-extra/lib/ensure/index.js","../../../node_modules/jsonfile/utils.js","../../../node_modules/jsonfile/index.js","../../../node_modules/fs-extra/lib/json/jsonfile.js","../../../node_modules/fs-extra/lib/output-file/index.js","../../../node_modules/fs-extra/lib/json/output-json.js","../../../node_modules/fs-extra/lib/json/output-json-sync.js","../../../node_modules/fs-extra/lib/json/index.js","../../../node_modules/fs-extra/lib/move/move.js","../../../node_modules/fs-extra/lib/move/move-sync.js","../../../node_modules/fs-extra/lib/move/index.js","../../../node_modules/fs-extra/lib/index.js","../../../node_modules/chalk/source/vendor/ansi-styles/index.js","../../../node_modules/chalk/source/vendor/supports-color/index.js","../../../node_modules/chalk/source/utilities.js","../../../node_modules/chalk/source/index.js","../../../node_modules/mimic-function/index.js","../../../node_modules/restore-cursor/node_modules/onetime/index.js","../../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/signals.js","../../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/index.js","../../../node_modules/restore-cursor/index.js","../../../node_modules/cli-cursor/index.js","../../../node_modules/cli-spinners/spinners.json","../../../node_modules/cli-spinners/index.js","../../../node_modules/yoctocolors/base.js","../../../node_modules/is-unicode-supported/index.js","../../../node_modules/log-symbols/symbols.js","../../../node_modules/ansi-regex/index.js","../../../node_modules/ora/node_modules/strip-ansi/index.js","../../../node_modules/get-east-asian-width/lookup-data.js","../../../node_modules/get-east-asian-width/utilities.js","../../../node_modules/get-east-asian-width/lookup.js","../../../node_modules/get-east-asian-width/index.js","../../../node_modules/ora/node_modules/string-width/index.js","../../../node_modules/is-interactive/index.js","../../../node_modules/stdin-discarder/index.js","../../../node_modules/ora/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/cli-width/index.js","../../../node_modules/fast-string-truncated-width/dist/utils.js","../../../node_modules/fast-string-truncated-width/dist/index.js","../../../node_modules/fast-string-width/dist/index.js","../../../node_modules/fast-wrap-ansi/lib/main.js","../../../node_modules/@inquirer/core/dist/lib/utils.js","../../../node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js","../../../node_modules/mute-stream/lib/index.js","../../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/signals.js","../../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/index.js","../../../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/create-prompt.js","../../../node_modules/@inquirer/core/dist/lib/Separator.js","../../../node_modules/@inquirer/confirm/dist/index.js","../../../node_modules/@inquirer/select/dist/index.js","../../../node_modules/minimist/index.js","../src/install/utils.ts","../src/install/shared.ts","../src/install/adapters.ts","../src/install/dashboard.ts","../src/install/hooks.ts","../src/install/manifest.ts","../src/install/patches.ts","../src/install/copy.ts","../src/install/uninstall.ts","../src/install/index.ts"],"sourcesContent":["'use strict'\n\nexports.fromCallback = function (fn) {\n return Object.defineProperty(function (...args) {\n if (typeof args[args.length - 1] === 'function') fn.apply(this, args)\n else {\n return new Promise((resolve, reject) => {\n args.push((err, res) => (err != null) ? reject(err) : resolve(res))\n fn.apply(this, args)\n })\n }\n }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n return Object.defineProperty(function (...args) {\n const cb = args[args.length - 1]\n if (typeof cb !== 'function') return fn.apply(this, args)\n else {\n args.pop()\n fn.apply(this, args).then(r => cb(null, r), cb)\n }\n }, 'name', { value: fn.name })\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","'use strict'\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\n\nconst api = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'close',\n 'copyFile',\n 'cp',\n 'fchmod',\n 'fchown',\n 'fdatasync',\n 'fstat',\n 'fsync',\n 'ftruncate',\n 'futimes',\n 'glob',\n 'lchmod',\n 'lchown',\n 'lutimes',\n 'link',\n 'lstat',\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm',\n 'rmdir',\n 'stat',\n 'statfs',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile'\n].filter(key => {\n // Some commands are not available on some systems. Ex:\n // fs.cp was added in Node.js v16.7.0\n // fs.statfs was added in Node v19.6.0, v18.15.0\n // fs.glob was added in Node.js v22.0.0\n // fs.lchown is not available on at least some Linux\n return typeof fs[key] === 'function'\n})\n\n// Export cloned fs:\nObject.assign(exports, fs)\n\n// Universalify async methods:\napi.forEach(method => {\n exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n if (typeof callback === 'function') {\n return fs.exists(filename, callback)\n }\n return new Promise(resolve => {\n return fs.exists(filename, resolve)\n })\n}\n\n// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n if (typeof callback === 'function') {\n return fs.read(fd, buffer, offset, length, position, callback)\n }\n return new Promise((resolve, reject) => {\n fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffer })\n })\n })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.write(fd, buffer, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffer })\n })\n })\n}\n\n// Function signature is\n// s.readv(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.readv = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.readv(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffers })\n })\n })\n}\n\n// Function signature is\n// s.writev(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.writev = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.writev(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffers })\n })\n })\n}\n\n// fs.realpath.native sometimes not available if fs is monkey-patched\nif (typeof fs.realpath.native === 'function') {\n exports.realpath.native = u(fs.realpath.native)\n} else {\n process.emitWarning(\n 'fs.realpath.native is not a function. Is fs being monkey-patched?',\n 'Warning', 'fs-extra-WARN0003'\n )\n}\n","// Adapted from https://github.com/sindresorhus/make-dir\n// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'\nconst path = require('path')\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nmodule.exports.checkPath = function checkPath (pth) {\n if (process.platform === 'win32') {\n const pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''))\n\n if (pathHasInvalidWinCharacters) {\n const error = new Error(`Path contains invalid characters: ${pth}`)\n error.code = 'EINVAL'\n throw error\n }\n }\n}\n","'use strict'\nconst fs = require('../fs')\nconst { checkPath } = require('./utils')\n\nconst getMode = options => {\n const defaults = { mode: 0o777 }\n if (typeof options === 'number') return options\n return ({ ...defaults, ...options }).mode\n}\n\nmodule.exports.makeDir = async (dir, options) => {\n checkPath(dir)\n\n return fs.mkdir(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n\nmodule.exports.makeDirSync = (dir, options) => {\n checkPath(dir)\n\n return fs.mkdirSync(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst { makeDir: _makeDir, makeDirSync } = require('./make-dir')\nconst makeDir = u(_makeDir)\n\nmodule.exports = {\n mkdirs: makeDir,\n mkdirsSync: makeDirSync,\n // alias\n mkdirp: makeDir,\n mkdirpSync: makeDirSync,\n ensureDir: makeDir,\n ensureDirSync: makeDirSync\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\n\nfunction pathExists (path) {\n return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n pathExists: u(pathExists),\n pathExistsSync: fs.existsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function utimesMillis (path, atime, mtime) {\n // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)\n const fd = await fs.open(path, 'r+')\n\n let closeErr = null\n\n try {\n await fs.futimes(fd, atime, mtime)\n } finally {\n try {\n await fs.close(fd)\n } catch (e) {\n closeErr = e\n }\n }\n\n if (closeErr) {\n throw closeErr\n }\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n const fd = fs.openSync(path, 'r+')\n fs.futimesSync(fd, atime, mtime)\n return fs.closeSync(fd)\n}\n\nmodule.exports = {\n utimesMillis: u(utimesMillis),\n utimesMillisSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst u = require('universalify').fromPromise\n\nfunction getStats (src, dest, opts) {\n const statFunc = opts.dereference\n ? (file) => fs.stat(file, { bigint: true })\n : (file) => fs.lstat(file, { bigint: true })\n return Promise.all([\n statFunc(src),\n statFunc(dest).catch(err => {\n if (err.code === 'ENOENT') return null\n throw err\n })\n ]).then(([srcStat, destStat]) => ({ srcStat, destStat }))\n}\n\nfunction getStatsSync (src, dest, opts) {\n let destStat\n const statFunc = opts.dereference\n ? (file) => fs.statSync(file, { bigint: true })\n : (file) => fs.lstatSync(file, { bigint: true })\n const srcStat = statFunc(src)\n try {\n destStat = statFunc(dest)\n } catch (err) {\n if (err.code === 'ENOENT') return { srcStat, destStat: null }\n throw err\n }\n return { srcStat, destStat }\n}\n\nasync function checkPaths (src, dest, funcName, opts) {\n const { srcStat, destStat } = await getStats(src, dest, opts)\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return { srcStat, destStat }\n}\n\nfunction checkPathsSync (src, dest, funcName, opts) {\n const { srcStat, destStat } = getStatsSync(src, dest, opts)\n\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nasync function checkParentPaths (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n\n let destStat\n try {\n destStat = await fs.stat(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return checkParentPaths(src, srcStat, destParent, funcName)\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n let destStat\n try {\n destStat = fs.statSync(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\nfunction areIdentical (srcStat, destStat) {\n // stat.dev can be 0n on windows when node version >= 22.x.x\n return destStat.ino !== undefined && destStat.dev !== undefined && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n return srcArr.every((cur, i) => destArr[i] === cur)\n}\n\nfunction errMsg (src, dest, funcName) {\n return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n // checkPaths\n checkPaths: u(checkPaths),\n checkPathsSync,\n // checkParent\n checkParentPaths: u(checkParentPaths),\n checkParentPathsSync,\n // Misc\n isSrcSubdir,\n areIdentical\n}\n","'use strict'\n\n// https://github.com/jprichardson/node-fs-extra/issues/1056\n// Performing parallel operations on each item of an async iterator is\n// surprisingly hard; you need to have handlers in place to avoid getting an\n// UnhandledPromiseRejectionWarning.\n// NOTE: This function does not presently handle return values, only errors\nasync function asyncIteratorConcurrentProcess (iterator, fn) {\n const promises = []\n for await (const item of iterator) {\n promises.push(\n fn(item).then(\n () => null,\n (err) => err ?? new Error('unknown error')\n )\n )\n }\n await Promise.all(\n promises.map((promise) =>\n promise.then((possibleErr) => {\n if (possibleErr !== null) throw possibleErr\n })\n )\n )\n}\n\nmodule.exports = {\n asyncIteratorConcurrentProcess\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { mkdirs } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { utimesMillis } = require('../util/utimes')\nconst stat = require('../util/stat')\nconst { asyncIteratorConcurrentProcess } = require('../util/async')\n\nasync function copy (src, dest, opts = {}) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0001'\n )\n }\n\n const { srcStat, destStat } = await stat.checkPaths(src, dest, 'copy', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'copy')\n\n const include = await runFilter(src, dest, opts)\n\n if (!include) return\n\n // check if the parent of dest exists, and create it if it doesn't exist\n const destParent = path.dirname(dest)\n const dirExists = await pathExists(destParent)\n if (!dirExists) {\n await mkdirs(destParent)\n }\n\n await getStatsAndPerformCopy(destStat, src, dest, opts)\n}\n\nasync function runFilter (src, dest, opts) {\n if (!opts.filter) return true\n return opts.filter(src, dest)\n}\n\nasync function getStatsAndPerformCopy (destStat, src, dest, opts) {\n const statFn = opts.dereference ? fs.stat : fs.lstat\n const srcStat = await statFn(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n\n if (\n srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()\n ) return onFile(srcStat, destStat, src, dest, opts)\n\n if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nasync function onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n\n if (opts.overwrite) {\n await fs.unlink(dest)\n return copyFile(srcStat, src, dest, opts)\n }\n if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nasync function copyFile (srcStat, src, dest, opts) {\n await fs.copyFile(src, dest)\n if (opts.preserveTimestamps) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcStat.mode)) {\n await makeFileWritable(dest, srcStat.mode)\n }\n\n // Set timestamps and mode correspondingly\n\n // Note that The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = await fs.stat(src)\n await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n }\n\n return fs.chmod(dest, srcStat.mode)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return fs.chmod(dest, srcMode | 0o200)\n}\n\nasync function onDir (srcStat, destStat, src, dest, opts) {\n // the dest directory might not exist, create it\n if (!destStat) {\n await fs.mkdir(dest)\n }\n\n // iterate through the files in the current directory to copy everything\n await asyncIteratorConcurrentProcess(await fs.opendir(src), async (item) => {\n const srcItem = path.join(src, item.name)\n const destItem = path.join(dest, item.name)\n\n const include = await runFilter(srcItem, destItem, opts)\n // only copy the item if it matches the filter function\n if (include) {\n const { destStat } = await stat.checkPaths(srcItem, destItem, 'copy', opts)\n // If the item is a copyable file, `getStatsAndPerformCopy` will copy it\n // If the item is a directory, `getStatsAndPerformCopy` will call `onDir` recursively\n await getStatsAndPerformCopy(destStat, srcItem, destItem, opts)\n }\n })\n\n if (!destStat) {\n await fs.chmod(dest, srcStat.mode)\n }\n}\n\nasync function onLink (destStat, src, dest, opts) {\n let resolvedSrc = await fs.readlink(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n if (!destStat) {\n return fs.symlink(resolvedSrc, dest)\n }\n\n let resolvedDest = null\n try {\n resolvedDest = await fs.readlink(dest)\n } catch (e) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (e.code === 'EINVAL' || e.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest)\n throw e\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n // If both symlinks resolve to the same target, they are still distinct symlinks\n // that can be copied/overwritten. Only check subdirectory constraints when\n // the resolved paths are different.\n if (resolvedSrc !== resolvedDest) {\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // do not copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n }\n\n // copy the link\n await fs.unlink(dest)\n return fs.symlink(resolvedSrc, dest)\n}\n\nmodule.exports = copy\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirsSync = require('../mkdirs').mkdirsSync\nconst utimesMillisSync = require('../util/utimes').utimesMillisSync\nconst stat = require('../util/stat')\n\nfunction copySync (src, dest, opts) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts = opts || {}\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0002'\n )\n }\n\n const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n if (opts.filter && !opts.filter(src, dest)) return\n const destParent = path.dirname(dest)\n if (!fs.existsSync(destParent)) mkdirsSync(destParent)\n return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n const srcStat = statSync(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n else if (srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n if (opts.overwrite) {\n fs.unlinkSync(dest)\n return copyFile(srcStat, src, dest, opts)\n } else if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n fs.copyFileSync(src, dest)\n if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)\n return setDestMode(dest, srcStat.mode)\n}\n\nfunction handleTimestamps (srcMode, src, dest) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)\n return setDestTimestamps(src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return setDestMode(dest, srcMode | 0o200)\n}\n\nfunction setDestMode (dest, srcMode) {\n return fs.chmodSync(dest, srcMode)\n}\n\nfunction setDestTimestamps (src, dest) {\n // The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = fs.statSync(src)\n return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)\n return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts) {\n fs.mkdirSync(dest)\n copyDir(src, dest, opts)\n return setDestMode(dest, srcMode)\n}\n\nfunction copyDir (src, dest, opts) {\n const dir = fs.opendirSync(src)\n\n try {\n let dirent\n\n while ((dirent = dir.readSync()) !== null) {\n copyDirItem(dirent.name, src, dest, opts)\n }\n } finally {\n dir.closeSync()\n }\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n if (opts.filter && !opts.filter(srcItem, destItem)) return\n const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts)\n return getStats(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n let resolvedSrc = fs.readlinkSync(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n\n if (!destStat) {\n return fs.symlinkSync(resolvedSrc, dest)\n } else {\n let resolvedDest\n try {\n resolvedDest = fs.readlinkSync(dest)\n } catch (err) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n throw err\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n // If both symlinks resolve to the same target, they are still distinct symlinks\n // that can be copied/overwritten. Only check subdirectory constraints when\n // the resolved paths are different.\n if (resolvedSrc !== resolvedDest) {\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // prevent copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n }\n return copyLink(resolvedSrc, dest)\n }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n fs.unlinkSync(dest)\n return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n copy: u(require('./copy')),\n copySync: require('./copy-sync')\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst u = require('universalify').fromCallback\n\nfunction remove (path, callback) {\n fs.rm(path, { recursive: true, force: true }, callback)\n}\n\nfunction removeSync (path) {\n fs.rmSync(path, { recursive: true, force: true })\n}\n\nmodule.exports = {\n remove: u(remove),\n removeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst remove = require('../remove')\n\nconst emptyDir = u(async function emptyDir (dir) {\n let items\n try {\n items = await fs.readdir(dir)\n } catch {\n return mkdir.mkdirs(dir)\n }\n\n return Promise.all(items.map(item => remove.remove(path.join(dir, item))))\n})\n\nfunction emptyDirSync (dir) {\n let items\n try {\n items = fs.readdirSync(dir)\n } catch {\n return mkdir.mkdirsSync(dir)\n }\n\n items.forEach(item => {\n item = path.join(dir, item)\n remove.removeSync(item)\n })\n}\n\nmodule.exports = {\n emptyDirSync,\n emptydirSync: emptyDirSync,\n emptyDir,\n emptydir: emptyDir\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\n\nasync function createFile (file) {\n let stats\n try {\n stats = await fs.stat(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n\n let dirStats = null\n try {\n dirStats = await fs.stat(dir)\n } catch (err) {\n // if the directory doesn't exist, make it\n if (err.code === 'ENOENT') {\n await mkdir.mkdirs(dir)\n await fs.writeFile(file, '')\n return\n } else {\n throw err\n }\n }\n\n if (dirStats.isDirectory()) {\n await fs.writeFile(file, '')\n } else {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n await fs.readdir(dir)\n }\n}\n\nfunction createFileSync (file) {\n let stats\n try {\n stats = fs.statSync(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n try {\n if (!fs.statSync(dir).isDirectory()) {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n fs.readdirSync(dir)\n }\n } catch (err) {\n // If the stat call above failed because the directory doesn't exist, create it\n if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir)\n else throw err\n }\n\n fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n createFile: u(createFile),\n createFileSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { areIdentical } = require('../util/stat')\n\nasync function createLink (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = await fs.lstat(dstpath)\n } catch {\n // ignore error\n }\n\n let srcStat\n try {\n srcStat = await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n if (dstStat && areIdentical(srcStat, dstStat)) return\n\n const dir = path.dirname(dstpath)\n\n const dirExists = await pathExists(dir)\n\n if (!dirExists) {\n await mkdir.mkdirs(dir)\n }\n\n await fs.link(srcpath, dstpath)\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = fs.lstatSync(dstpath)\n } catch {}\n\n try {\n const srcStat = fs.lstatSync(srcpath)\n if (dstStat && areIdentical(srcStat, dstStat)) return\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n const dir = path.dirname(dstpath)\n const dirExists = fs.existsSync(dir)\n if (dirExists) return fs.linkSync(srcpath, dstpath)\n mkdir.mkdirsSync(dir)\n\n return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n createLink: u(createLink),\n createLinkSync\n}\n","'use strict'\n\nconst path = require('path')\nconst fs = require('../fs')\nconst { pathExists } = require('../path-exists')\n\nconst u = require('universalify').fromPromise\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nasync function symlinkPaths (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n\n const exists = await pathExists(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n const exists = fs.existsSync(srcpath)\n if (!exists) throw new Error('absolute srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n const exists = fs.existsSync(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n const srcExists = fs.existsSync(srcpath)\n if (!srcExists) throw new Error('relative srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nmodule.exports = {\n symlinkPaths: u(symlinkPaths),\n symlinkPathsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function symlinkType (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = await fs.lstat(srcpath)\n } catch {\n return 'file'\n }\n\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = fs.lstatSync(srcpath)\n } catch {\n return 'file'\n }\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n symlinkType: u(symlinkType),\n symlinkTypeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\n\nconst { mkdirs, mkdirsSync } = require('../mkdirs')\n\nconst { symlinkPaths, symlinkPathsSync } = require('./symlink-paths')\nconst { symlinkType, symlinkTypeSync } = require('./symlink-type')\n\nconst { pathExists } = require('../path-exists')\n\nconst { areIdentical } = require('../util/stat')\n\nasync function createSymlink (srcpath, dstpath, type) {\n let stats\n try {\n stats = await fs.lstat(dstpath)\n } catch { }\n\n if (stats && stats.isSymbolicLink()) {\n const [srcStat, dstStat] = await Promise.all([\n fs.stat(srcpath),\n fs.stat(dstpath)\n ])\n\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = await symlinkPaths(srcpath, dstpath)\n srcpath = relative.toDst\n const toType = await symlinkType(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n\n if (!(await pathExists(dir))) {\n await mkdirs(dir)\n }\n\n return fs.symlink(srcpath, dstpath, toType)\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n let stats\n try {\n stats = fs.lstatSync(dstpath)\n } catch { }\n if (stats && stats.isSymbolicLink()) {\n const srcStat = fs.statSync(srcpath)\n const dstStat = fs.statSync(dstpath)\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = symlinkPathsSync(srcpath, dstpath)\n srcpath = relative.toDst\n type = symlinkTypeSync(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n const exists = fs.existsSync(dir)\n if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n mkdirsSync(dir)\n return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n createSymlink: u(createSymlink),\n createSymlinkSync\n}\n","'use strict'\n\nconst { createFile, createFileSync } = require('./file')\nconst { createLink, createLinkSync } = require('./link')\nconst { createSymlink, createSymlinkSync } = require('./symlink')\n\nmodule.exports = {\n // file\n createFile,\n createFileSync,\n ensureFile: createFile,\n ensureFileSync: createFileSync,\n // link\n createLink,\n createLinkSync,\n ensureLink: createLink,\n ensureLinkSync: createLinkSync,\n // symlink\n createSymlink,\n createSymlinkSync,\n ensureSymlink: createSymlink,\n ensureSymlinkSync: createSymlinkSync\n}\n","function stringify (obj, { EOL = '\\n', finalEOL = true, replacer = null, spaces } = {}) {\n const EOF = finalEOL ? EOL : ''\n const str = JSON.stringify(obj, replacer, spaces)\n\n return str.replace(/\\n/g, EOL) + EOF\n}\n\nfunction stripBom (content) {\n // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n if (Buffer.isBuffer(content)) content = content.toString('utf8')\n return content.replace(/^\\uFEFF/, '')\n}\n\nmodule.exports = { stringify, stripBom }\n","let _fs\ntry {\n _fs = require('graceful-fs')\n} catch (_) {\n _fs = require('fs')\n}\nconst universalify = require('universalify')\nconst { stringify, stripBom } = require('./utils')\n\nasync function _readFile (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n let data = await universalify.fromCallback(fs.readFile)(file, options)\n\n data = stripBom(data)\n\n let obj\n try {\n obj = JSON.parse(data, options ? options.reviver : null)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n\n return obj\n}\n\nconst readFile = universalify.fromPromise(_readFile)\n\nfunction readFileSync (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n try {\n let content = fs.readFileSync(file, options)\n content = stripBom(content)\n return JSON.parse(content, options.reviver)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n}\n\nasync function _writeFile (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n\n await universalify.fromCallback(fs.writeFile)(file, str, options)\n}\n\nconst writeFile = universalify.fromPromise(_writeFile)\n\nfunction writeFileSync (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n // not sure if fs.writeFileSync returns anything, but just in case\n return fs.writeFileSync(file, str, options)\n}\n\n// NOTE: do not change this export format; required for ESM compat\n// see https://github.com/jprichardson/node-jsonfile/pull/162 for details\nmodule.exports = {\n readFile,\n readFileSync,\n writeFile,\n writeFileSync\n}\n","'use strict'\n\nconst jsonFile = require('jsonfile')\n\nmodule.exports = {\n // jsonfile exports\n readJson: jsonFile.readFile,\n readJsonSync: jsonFile.readFileSync,\n writeJson: jsonFile.writeFile,\n writeJsonSync: jsonFile.writeFileSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nasync function outputFile (file, data, encoding = 'utf-8') {\n const dir = path.dirname(file)\n\n if (!(await pathExists(dir))) {\n await mkdir.mkdirs(dir)\n }\n\n return fs.writeFile(file, data, encoding)\n}\n\nfunction outputFileSync (file, ...args) {\n const dir = path.dirname(file)\n if (!fs.existsSync(dir)) {\n mkdir.mkdirsSync(dir)\n }\n\n fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n outputFile: u(outputFile),\n outputFileSync\n}\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFile } = require('../output-file')\n\nasync function outputJson (file, data, options = {}) {\n const str = stringify(data, options)\n\n await outputFile(file, str, options)\n}\n\nmodule.exports = outputJson\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFileSync } = require('../output-file')\n\nfunction outputJsonSync (file, data, options) {\n const str = stringify(data, options)\n\n outputFileSync(file, str, options)\n}\n\nmodule.exports = outputJsonSync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst jsonFile = require('./jsonfile')\n\njsonFile.outputJson = u(require('./output-json'))\njsonFile.outputJsonSync = require('./output-json-sync')\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { copy } = require('../copy')\nconst { remove } = require('../remove')\nconst { mkdirp } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst stat = require('../util/stat')\n\nasync function move (src, dest, opts = {}) {\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, 'move', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'move')\n\n // If the parent of dest is not root, make sure it exists before proceeding\n const destParent = path.dirname(dest)\n const parsedParentPath = path.parse(destParent)\n if (parsedParentPath.root !== destParent) {\n await mkdirp(destParent)\n }\n\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nasync function doRename (src, dest, overwrite, isChangingCase) {\n if (!isChangingCase) {\n if (overwrite) {\n await remove(dest)\n } else if (await pathExists(dest)) {\n throw new Error('dest already exists.')\n }\n }\n\n try {\n // Try w/ rename first, and try copy + remove if EXDEV\n await fs.rename(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') {\n throw err\n }\n await moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nasync function moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n\n await copy(src, dest, opts)\n return remove(src)\n}\n\nmodule.exports = move\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copySync = require('../copy').copySync\nconst removeSync = require('../remove').removeSync\nconst mkdirpSync = require('../mkdirs').mkdirpSync\nconst stat = require('../util/stat')\n\nfunction moveSync (src, dest, opts) {\n opts = opts || {}\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'move')\n if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nfunction isParentRoot (dest) {\n const parent = path.dirname(dest)\n const parsedPath = path.parse(parent)\n return parsedPath.root === parent\n}\n\nfunction doRename (src, dest, overwrite, isChangingCase) {\n if (isChangingCase) return rename(src, dest, overwrite)\n if (overwrite) {\n removeSync(dest)\n return rename(src, dest, overwrite)\n }\n if (fs.existsSync(dest)) throw new Error('dest already exists.')\n return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n try {\n fs.renameSync(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') throw err\n return moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n copySync(src, dest, opts)\n return removeSync(src)\n}\n\nmodule.exports = moveSync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n move: u(require('./move')),\n moveSync: require('./move-sync')\n}\n","'use strict'\n\nmodule.exports = {\n // Export promiseified graceful-fs:\n ...require('./fs'),\n // Export extra methods:\n ...require('./copy'),\n ...require('./empty'),\n ...require('./ensure'),\n ...require('./json'),\n ...require('./mkdirs'),\n ...require('./move'),\n ...require('./output-file'),\n ...require('./path-exists'),\n ...require('./remove')\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 process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable\n\t\t&& toDescriptor.enumerable === fromDescriptor.enumerable\n\t\t&& toDescriptor.configurable === fromDescriptor.configurable\n\t\t&& (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tconst {writable, enumerable, configurable} = toStringDescriptor; // We destructue to avoid a potential `get` descriptor.\n\tObject.defineProperty(to, 'toString', {value: newToString, writable, enumerable, configurable});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFunction from 'mimic-function';\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = undefined;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFunction(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nonetime.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\nexport default onetime;\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 = [];\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM');\nif (process.platform !== 'win32') {\n signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n );\n}\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n//# sourceMappingURL=signals.js.map","// 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 };\nconst processOk = (process) => !!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';\nconst kExitEmitter = Symbol.for('signal-exit emitter');\nconst global = globalThis;\nconst ObjectDefineProperty = Object.defineProperty.bind(Object);\n// teeny special purpose ee\nclass Emitter {\n emitted = {\n afterExit: false,\n exit: false,\n };\n listeners = {\n afterExit: [],\n exit: [],\n };\n count = 0;\n id = Math.random();\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 on(ev, fn) {\n this.listeners[ev].push(fn);\n }\n removeListener(ev, fn) {\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 }\n else {\n list.splice(i, 1);\n }\n }\n emit(ev, code, signal) {\n if (this.emitted[ev]) {\n return false;\n }\n this.emitted[ev] = true;\n let ret = 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}\nclass SignalExitBase {\n}\nconst signalExitWrap = (handler) => {\n return {\n onExit(cb, opts) {\n return handler.onExit(cb, opts);\n },\n load() {\n return handler.load();\n },\n unload() {\n return handler.unload();\n },\n };\n};\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => { };\n }\n load() { }\n unload() { }\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;\n #originalProcessEmit;\n #originalProcessReallyExit;\n #sigListeners = {};\n #loaded = false;\n constructor(process) {\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;\n if (typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number') {\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)\n process.kill(process.pid, s);\n /* c8 ignore stop */\n }\n };\n }\n this.#originalProcessReallyExit = process.reallyExit;\n this.#originalProcessEmit = process.emit;\n }\n onExit(cb, opts) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => { };\n }\n /* c8 ignore stop */\n if (this.#loaded === false) {\n this.load();\n }\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit';\n this.#emitter.on(ev, cb);\n return () => {\n this.#emitter.removeListener(ev, cb);\n if (this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0) {\n this.unload();\n }\n };\n }\n load() {\n if (this.#loaded) {\n return;\n }\n this.#loaded = true;\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 for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig];\n if (fn)\n this.#process.on(sig, fn);\n }\n catch (_) { }\n }\n this.#process.emit = (ev, ...a) => {\n return this.#processEmit(ev, ...a);\n };\n this.#process.reallyExit = (code) => {\n return this.#processReallyExit(code);\n };\n }\n unload() {\n if (!this.#loaded) {\n return;\n }\n this.#loaded = false;\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 }\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 #processReallyExit(code) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0;\n }\n this.#process.exitCode = code || 0;\n /* c8 ignore stop */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);\n }\n #processEmit(ev, ...args) {\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 }\n else {\n return og.call(this.#process, ev, ...args);\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 */\nonExit, \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 */\nload, \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 */\nunload, } = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback());\n//# sourceMappingURL=index.js.map","import process from 'node:process';\nimport onetime from 'onetime';\nimport {onExit} from 'signal-exit';\n\nconst terminal = process.stderr.isTTY\n\t? process.stderr\n\t: (process.stdout.isTTY ? process.stdout : undefined);\n\nconst restoreCursor = terminal ? onetime(() => {\n\tonExit(() => {\n\t\tterminal.write('\\u001B[?25h');\n\t}, {alwaysLast: true});\n}) : () => {};\n\nexport default restoreCursor;\n","import process from 'node:process';\nimport restoreCursor from 'restore-cursor';\n\nlet isHidden = false;\n\nconst cliCursor = {};\n\ncliCursor.show = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\tisHidden = false;\n\twritableStream.write('\\u001B[?25h');\n};\n\ncliCursor.hide = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\trestoreCursor();\n\tisHidden = true;\n\twritableStream.write('\\u001B[?25l');\n};\n\ncliCursor.toggle = (force, writableStream) => {\n\tif (force !== undefined) {\n\t\tisHidden = force;\n\t}\n\n\tif (isHidden) {\n\t\tcliCursor.show(writableStream);\n\t} else {\n\t\tcliCursor.hide(writableStream);\n\t}\n};\n\nexport default cliCursor;\n","","import spinners from './spinners.json' with {type: 'json'};\n\nexport default spinners;\n\nconst spinnersList = Object.keys(spinners);\n\nexport function randomSpinner() {\n\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\tconst spinnerName = spinnersList[randomIndex];\n\treturn spinners[spinnerName];\n}\n","import tty from 'node:tty';\n\n// eslint-disable-next-line no-warning-comments\n// TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)\n// Lots of optionals here to support Deno.\nconst hasColors = tty?.WriteStream?.prototype?.hasColors?.() ?? false;\n\nconst format = (open, close) => {\n\tif (!hasColors) {\n\t\treturn input => input;\n\t}\n\n\tconst openCode = `\\u001B[${open}m`;\n\tconst closeCode = `\\u001B[${close}m`;\n\n\treturn input => {\n\t\tconst string = input + ''; // eslint-disable-line no-implicit-coercion -- This is faster.\n\t\tlet index = string.indexOf(closeCode);\n\n\t\tif (index === -1) {\n\t\t\t// Note: Intentionally not using string interpolation for performance reasons.\n\t\t\treturn openCode + string + closeCode;\n\t\t}\n\n\t\t// Handle nested colors.\n\n\t\t// We could have done this, but it's too slow (as of Node.js 22).\n\t\t// return openCode + string.replaceAll(closeCode, (close === 22 ? closeCode : '') + openCode) + closeCode;\n\n\t\tlet result = openCode;\n\t\tlet lastIndex = 0;\n\n\t\t// SGR 22 resets both bold (1) and dim (2). When we encounter a nested\n\t\t// close for styles that use 22, we need to re-open the outer style.\n\t\tconst reopenOnNestedClose = close === 22;\n\t\tconst replaceCode = (reopenOnNestedClose ? closeCode : '') + openCode;\n\n\t\twhile (index !== -1) {\n\t\t\tresult += string.slice(lastIndex, index) + replaceCode;\n\t\t\tlastIndex = index + closeCode.length;\n\t\t\tindex = string.indexOf(closeCode, lastIndex);\n\t\t}\n\n\t\tresult += string.slice(lastIndex) + closeCode;\n\n\t\treturn result;\n\t};\n};\n\nexport const reset = format(0, 0);\nexport const bold = format(1, 22);\nexport const dim = format(2, 22);\nexport const italic = format(3, 23);\nexport const underline = format(4, 24);\nexport const overline = format(53, 55);\nexport const inverse = format(7, 27);\nexport const hidden = format(8, 28);\nexport const strikethrough = format(9, 29);\n\nexport const black = format(30, 39);\nexport const red = format(31, 39);\nexport const green = format(32, 39);\nexport const yellow = format(33, 39);\nexport const blue = format(34, 39);\nexport const magenta = format(35, 39);\nexport const cyan = format(36, 39);\nexport const white = format(37, 39);\nexport const gray = format(90, 39);\n\nexport const bgBlack = format(40, 49);\nexport const bgRed = format(41, 49);\nexport const bgGreen = format(42, 49);\nexport const bgYellow = format(43, 49);\nexport const bgBlue = format(44, 49);\nexport const bgMagenta = format(45, 49);\nexport const bgCyan = format(46, 49);\nexport const bgWhite = format(47, 49);\nexport const bgGray = format(100, 49);\n\nexport const redBright = format(91, 39);\nexport const greenBright = format(92, 39);\nexport const yellowBright = format(93, 39);\nexport const blueBright = format(94, 39);\nexport const magentaBright = format(95, 39);\nexport const cyanBright = format(96, 39);\nexport const whiteBright = format(97, 39);\n\nexport const bgRedBright = format(101, 49);\nexport const bgGreenBright = format(102, 49);\nexport const bgYellowBright = format(103, 49);\nexport const bgBlueBright = format(104, 49);\nexport const bgMagentaBright = format(105, 49);\nexport const bgCyanBright = format(106, 49);\nexport const bgWhiteBright = format(107, 49);\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tconst {env} = process;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (process.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import {\n\tblue,\n\tgreen,\n\tyellow,\n\tred,\n} from 'yoctocolors';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nconst _isUnicodeSupported = isUnicodeSupported();\n\nexport const info = blue(_isUnicodeSupported ? 'ℹ' : 'i');\nexport const success = green(_isUnicodeSupported ? '✔' : '√');\nexport const warning = yellow(_isUnicodeSupported ? '⚠' : '‼');\nexport const error = red(_isUnicodeSupported ? '✖' : '×');\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 by scripts/build.js\n\n// prettier-ignore\nconst ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];\n\n// prettier-ignore\nconst fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];\n\n// prettier-ignore\nconst halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];\n\n// prettier-ignore\nconst narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];\n\n// prettier-ignore\nconst wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];\n\nexport {ambiguousRanges, fullwidthRanges, halfwidthRanges, narrowRanges, wideRanges};\n","/**\nBinary search on a sorted flat array of [start, end] pairs.\n\n@param {number[]} ranges - Flat array of inclusive [start, end] range pairs, e.g. [0, 5, 10, 20].\n@param {number} codePoint - The value to search for.\n@returns {boolean} Whether the value falls within any of the ranges.\n*/\nexport const isInRange = (ranges, codePoint) => {\n\tlet low = 0;\n\tlet high = Math.floor(ranges.length / 2) - 1;\n\twhile (low <= high) {\n\t\tconst mid = Math.floor((low + high) / 2);\n\t\tconst i = mid * 2;\n\t\tif (codePoint < ranges[i]) {\n\t\t\thigh = mid - 1;\n\t\t} else if (codePoint > ranges[i + 1]) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n","import {\n\tambiguousRanges,\n\tfullwidthRanges,\n\thalfwidthRanges,\n\tnarrowRanges,\n\twideRanges,\n} from './lookup-data.js';\nimport {isInRange} from './utilities.js';\n\nconst minimumAmbiguousCodePoint = ambiguousRanges[0];\nconst maximumAmbiguousCodePoint = ambiguousRanges.at(-1);\nconst minimumFullWidthCodePoint = fullwidthRanges[0];\nconst maximumFullWidthCodePoint = fullwidthRanges.at(-1);\nconst minimumHalfWidthCodePoint = halfwidthRanges[0];\nconst maximumHalfWidthCodePoint = halfwidthRanges.at(-1);\nconst minimumNarrowCodePoint = narrowRanges[0];\nconst maximumNarrowCodePoint = narrowRanges.at(-1);\nconst minimumWideCodePoint = wideRanges[0];\nconst maximumWideCodePoint = wideRanges.at(-1);\n\nconst commonCjkCodePoint = 0x4E_00;\nconst [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);\n\n// Use a hot-path range so common `isWide` calls can skip binary search.\n// The range containing U+4E00 covers common CJK ideographs;\n// fallback to the largest range for resilience to Unicode table changes.\nfunction findWideFastPathRange(ranges) {\n\tlet fastPathStart = ranges[0];\n\tlet fastPathEnd = ranges[1];\n\n\tfor (let index = 0; index < ranges.length; index += 2) {\n\t\tconst start = ranges[index];\n\t\tconst end = ranges[index + 1];\n\n\t\tif (\n\t\t\tcommonCjkCodePoint >= start\n\t\t\t&& commonCjkCodePoint <= end\n\t\t) {\n\t\t\treturn [start, end];\n\t\t}\n\n\t\tif ((end - start) > (fastPathEnd - fastPathStart)) {\n\t\t\tfastPathStart = start;\n\t\t\tfastPathEnd = end;\n\t\t}\n\t}\n\n\treturn [fastPathStart, fastPathEnd];\n}\n\nexport const isAmbiguous = codePoint => {\n\tif (\n\t\tcodePoint < minimumAmbiguousCodePoint\n\t\t|| codePoint > maximumAmbiguousCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(ambiguousRanges, codePoint);\n};\n\nexport const isFullWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumFullWidthCodePoint\n\t\t|| codePoint > maximumFullWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(fullwidthRanges, codePoint);\n};\n\nconst isHalfWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumHalfWidthCodePoint\n\t\t|| codePoint > maximumHalfWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(halfwidthRanges, codePoint);\n};\n\nconst isNarrow = codePoint => {\n\tif (\n\t\tcodePoint < minimumNarrowCodePoint\n\t\t|| codePoint > maximumNarrowCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(narrowRanges, codePoint);\n};\n\nexport const isWide = codePoint => {\n\tif (\n\t\tcodePoint >= wideFastPathStart\n\t\t&& codePoint <= wideFastPathEnd\n\t) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tcodePoint < minimumWideCodePoint\n\t\t|| codePoint > maximumWideCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(wideRanges, codePoint);\n};\n\nexport function getCategory(codePoint) {\n\tif (isAmbiguous(codePoint)) {\n\t\treturn 'ambiguous';\n\t}\n\n\tif (isFullWidth(codePoint)) {\n\t\treturn 'fullwidth';\n\t}\n\n\tif (isHalfWidth(codePoint)) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (isNarrow(codePoint)) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(codePoint)) {\n\t\treturn 'wide';\n\t}\n\n\treturn 'neutral';\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","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\n\n/**\nLogic:\n- Segment graphemes to match how terminals render clusters.\n- Width rules:\n\t1. Skip non-printing clusters (Default_Ignorable, Control, pure Mark, lone Surrogates). Tabs are ignored by design.\n\t2. RGI emoji clusters (\\p{RGI_Emoji}) are double-width.\n\t3. Minimally-qualified/unqualified emoji clusters (ZWJ sequences with 2+ Extended_Pictographic, or keycap sequences) are double-width.\n\t4. Otherwise use East Asian Width of the cluster's first visible code point, and add widths for trailing Halfwidth/Fullwidth Forms within the same cluster (e.g., dakuten/handakuten/prolonged sound mark).\n*/\n\nconst segmenter = new Intl.Segmenter();\n\n// Whole-cluster zero-width\nconst zeroWidthClusterRegex = /^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Mark}|\\p{Surrogate})+$/v;\n\n// Pick the base scalar if the cluster starts with Prepend/Format/Marks\nconst leadingNonPrintingRegex = /^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Mark}\\p{Surrogate}]+/v;\n\n// RGI emoji sequences\nconst rgiEmojiRegex = /^\\p{RGI_Emoji}$/v;\n\n// Detect minimally-qualified/unqualified emoji sequences (missing VS16 but still render as double-width)\nconst unqualifiedKeycapRegex = /^[\\d#*]\\u20E3$/;\nconst extendedPictographicRegex = /\\p{Extended_Pictographic}/gu;\n\nfunction isDoubleWidthNonRgiEmojiSequence(segment) {\n\t// Real emoji clusters are < 30 chars; guard against pathological input\n\tif (segment.length > 50) {\n\t\treturn false;\n\t}\n\n\tif (unqualifiedKeycapRegex.test(segment)) {\n\t\treturn true;\n\t}\n\n\t// ZWJ sequences with 2+ Extended_Pictographic\n\tif (segment.includes('\\u200D')) {\n\t\tconst pictographics = segment.match(extendedPictographicRegex);\n\t\treturn pictographics !== null && pictographics.length >= 2;\n\t}\n\n\treturn false;\n}\n\nfunction baseVisible(segment) {\n\treturn segment.replace(leadingNonPrintingRegex, '');\n}\n\nfunction isZeroWidthCluster(segment) {\n\treturn zeroWidthClusterRegex.test(segment);\n}\n\nfunction trailingHalfwidthWidth(segment, eastAsianWidthOptions) {\n\tlet extra = 0;\n\tif (segment.length > 1) {\n\t\tfor (const char of segment.slice(1)) {\n\t\t\tif (char >= '\\uFF00' && char <= '\\uFFEF') {\n\t\t\t\textra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn extra;\n}\n\nexport default function stringWidth(input, options = {}) {\n\tif (typeof input !== 'string' || input.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tlet string = input;\n\n\t// Avoid calling stripAnsi when there are no ANSI escape sequences (ESC = 0x1B, CSI = 0x9B)\n\tif (!countAnsiEscapeCodes && (string.includes('\\u001B') || string.includes('\\u009B'))) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\t// Fast path: printable ASCII (0x20–0x7E) needs no segmenter, regex, or EAW lookup — width equals length.\n\tif (/^[\\u0020-\\u007E]*$/.test(string)) {\n\t\treturn string.length;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment} of segmenter.segment(string)) {\n\t\t// Zero-width / non-printing clusters\n\t\tif (isZeroWidthCluster(segment)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Emoji width logic\n\t\tif (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Everything else: EAW of the cluster’s first visible scalar\n\t\tconst codePoint = baseVisible(segment).codePointAt(0);\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\n\t\t// Add width for trailing Halfwidth and Fullwidth Forms (e.g., ゙, ゚, ー)\n\t\twidth += trailingHalfwidthWidth(segment, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","export default function isInteractive({stream = process.stdout} = {}) {\n\treturn Boolean(\n\t\tstream && stream.isTTY &&\n\t\tprocess.env.TERM !== 'dumb' &&\n\t\t!('CI' in process.env)\n\t);\n}\n","import process from 'node:process';\n\nconst ASCII_ETX_CODE = 0x03; // Ctrl+C\n\nclass StdinDiscarder {\n\t#activeCount = 0;\n\t#stdin;\n\t#stdinWasPaused = false;\n\t#stdinWasRaw = false;\n\t#handleInputBound = chunk => {\n\t\tif (!chunk?.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst code = typeof chunk === 'string' ? chunk.codePointAt(0) : chunk[0];\n\t\tif (code === ASCII_ETX_CODE) {\n\t\t\tif (process.listenerCount('SIGINT') > 0) {\n\t\t\t\tprocess.emit('SIGINT');\n\t\t\t} else {\n\t\t\t\tprocess.kill(process.pid, 'SIGINT');\n\t\t\t}\n\t\t}\n\t};\n\n\tstart() {\n\t\tthis.#activeCount++;\n\t\tif (this.#activeCount === 1) {\n\t\t\tthis.#realStart();\n\t\t}\n\t}\n\n\tstop() {\n\t\tif (this.#activeCount === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (--this.#activeCount === 0) {\n\t\t\tthis.#realStop();\n\t\t}\n\t}\n\n\t#realStart() {\n\t\tconst {stdin} = process;\n\n\t\tif (process.platform === 'win32' || !stdin?.isTTY || typeof stdin.setRawMode !== 'function') {\n\t\t\tthis.#stdin = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#stdin = stdin;\n\t\tthis.#stdinWasPaused = stdin.isPaused();\n\t\tthis.#stdinWasRaw = Boolean(stdin.isRaw);\n\n\t\tstdin.setRawMode(true);\n\t\tstdin.prependListener('data', this.#handleInputBound);\n\n\t\tif (this.#stdinWasPaused) {\n\t\t\tstdin.resume();\n\t\t}\n\t}\n\n\t#realStop() {\n\t\tif (!this.#stdin) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst stdin = this.#stdin;\n\n\t\tstdin.off('data', this.#handleInputBound);\n\n\t\tif (stdin.isTTY) {\n\t\t\tstdin.setRawMode?.(this.#stdinWasRaw);\n\t\t}\n\n\t\tif (this.#stdinWasPaused) {\n\t\t\tstdin.pause();\n\t\t}\n\n\t\tthis.#stdin = undefined;\n\t\tthis.#stdinWasPaused = false;\n\t\tthis.#stdinWasRaw = false;\n\t}\n}\n\nconst stdinDiscarder = new StdinDiscarder();\n\nexport default Object.freeze(stdinDiscarder);\n","import process from 'node:process';\nimport {stripVTControlCharacters} from 'node:util';\nimport chalk from 'chalk';\nimport cliCursor from 'cli-cursor';\nimport cliSpinners from 'cli-spinners';\nimport logSymbols from 'log-symbols';\nimport stringWidth from 'string-width';\nimport isInteractive from 'is-interactive';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport stdinDiscarder from 'stdin-discarder';\n\n// Constants\nconst RENDER_DEFERRAL_TIMEOUT = 200; // Milliseconds to wait before re-rendering after partial chunk write\nconst SYNCHRONIZED_OUTPUT_ENABLE = '\\u001B[?2026h';\nconst SYNCHRONIZED_OUTPUT_DISABLE = '\\u001B[?2026l';\n\n// Global state for concurrent spinner detection\nconst activeHooksPerStream = new Map(); // Stream → ora instance\n\nclass Ora {\n\t#linesToClear = 0;\n\t#frameIndex = -1;\n\t#lastFrameTime = 0;\n\t#options;\n\t#spinner;\n\t#stream;\n\t#id;\n\t#hookedStreams = new Map();\n\t#isInternalWrite = false;\n\t#drainHandler;\n\t#deferRenderTimer;\n\t#isDiscardingStdin = false;\n\tcolor;\n\n\t// Helper to execute writes while preventing hook recursion\n\t#internalWrite(fn) {\n\t\tthis.#isInternalWrite = true;\n\t\ttry {\n\t\t\treturn fn();\n\t\t} finally {\n\t\t\tthis.#isInternalWrite = false;\n\t\t}\n\t}\n\n\t// Helper to render if still spinning\n\t#tryRender() {\n\t\tif (this.isSpinning) {\n\t\t\tthis.render();\n\t\t}\n\t}\n\n\t#stringifyChunk(chunk, encoding) {\n\t\tif (chunk === undefined || chunk === null) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (typeof chunk === 'string') {\n\t\t\treturn chunk;\n\t\t}\n\n\t\t/* eslint-disable n/prefer-global/buffer */\n\t\tif (Buffer.isBuffer(chunk) || ArrayBuffer.isView(chunk)) {\n\t\t\tconst normalizedEncoding = (typeof encoding === 'string' && encoding && encoding !== 'buffer') ? encoding : 'utf8';\n\t\t\treturn Buffer.from(chunk).toString(normalizedEncoding);\n\t\t}\n\t\t/* eslint-enable n/prefer-global/buffer */\n\n\t\treturn String(chunk);\n\t}\n\n\t#chunkTerminatesLine(chunkString) {\n\t\tif (!chunkString) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst lastCharacter = chunkString.at(-1);\n\t\treturn lastCharacter === '\\n' || lastCharacter === '\\r';\n\t}\n\n\t#scheduleRenderDeferral() {\n\t\t// If already deferred, don't reset timer - let it complete\n\t\tif (this.#deferRenderTimer) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#deferRenderTimer = setTimeout(() => {\n\t\t\tthis.#deferRenderTimer = undefined;\n\n\t\t\tif (this.isSpinning) {\n\t\t\t\tthis.#tryRender();\n\t\t\t}\n\t\t}, RENDER_DEFERRAL_TIMEOUT);\n\n\t\tif (typeof this.#deferRenderTimer?.unref === 'function') {\n\t\t\tthis.#deferRenderTimer.unref();\n\t\t}\n\t}\n\n\t#clearRenderDeferral() {\n\t\tif (this.#deferRenderTimer) {\n\t\t\tclearTimeout(this.#deferRenderTimer);\n\t\t\tthis.#deferRenderTimer = undefined;\n\t\t}\n\t}\n\n\t// Helper to build complete line with symbol, text, prefix, and suffix\n\t#buildOutputLine(symbol, text, prefixText, suffixText) {\n\t\tconst fullPrefixText = this.#getFullPrefixText(prefixText, ' ');\n\t\tconst separatorText = symbol ? ' ' : '';\n\t\tconst fullText = (typeof text === 'string') ? separatorText + text : '';\n\t\tconst fullSuffixText = this.#getFullSuffixText(suffixText, ' ');\n\t\treturn fullPrefixText + symbol + fullText + fullSuffixText;\n\t}\n\n\tconstructor(options) {\n\t\tif (typeof options === 'string') {\n\t\t\toptions = {\n\t\t\t\ttext: options,\n\t\t\t};\n\t\t}\n\n\t\tthis.#options = {\n\t\t\tcolor: 'cyan',\n\t\t\tstream: process.stderr,\n\t\t\tdiscardStdin: true,\n\t\t\thideCursor: true,\n\t\t\t...options,\n\t\t};\n\n\t\t// Public\n\t\tthis.color = this.#options.color;\n\n\t\tthis.#stream = this.#options.stream;\n\n\t\t// Normalize isEnabled and isSilent into options\n\t\tif (typeof this.#options.isEnabled !== 'boolean') {\n\t\t\tthis.#options.isEnabled = isInteractive({stream: this.#stream});\n\t\t}\n\n\t\tif (typeof this.#options.isSilent !== 'boolean') {\n\t\t\tthis.#options.isSilent = false;\n\t\t}\n\n\t\t// Set *after* `this.#stream`.\n\t\t// Store original interval before spinner setter clears it\n\t\tconst userInterval = this.#options.interval;\n\t\t// It's important that these use the public setters.\n\t\tthis.spinner = this.#options.spinner;\n\t\tthis.#options.interval = userInterval;\n\t\tthis.text = this.#options.text;\n\t\tthis.prefixText = this.#options.prefixText;\n\t\tthis.suffixText = this.#options.suffixText;\n\t\tthis.indent = this.#options.indent;\n\n\t\tif (process.env.NODE_ENV === 'test') {\n\t\t\tthis._stream = this.#stream;\n\t\t\tthis._isEnabled = this.#options.isEnabled;\n\n\t\t\tObject.defineProperty(this, '_linesToClear', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#linesToClear;\n\t\t\t\t},\n\t\t\t\tset(newValue) {\n\t\t\t\t\tthis.#linesToClear = newValue;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_frameIndex', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#frameIndex;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_lineCount', {\n\t\t\t\tget() {\n\t\t\t\t\tconst columns = this.#stream.columns ?? 80;\n\t\t\t\t\tconst prefixText = typeof this.#options.prefixText === 'function' ? '' : this.#options.prefixText;\n\t\t\t\t\tconst suffixText = typeof this.#options.suffixText === 'function' ? '' : this.#options.suffixText;\n\t\t\t\t\tconst fullPrefixText = (typeof prefixText === 'string' && prefixText !== '') ? prefixText + ' ' : '';\n\t\t\t\t\tconst fullSuffixText = (typeof suffixText === 'string' && suffixText !== '') ? ' ' + suffixText : '';\n\t\t\t\t\tconst spinnerChar = '-';\n\t\t\t\t\tconst fullText = ' '.repeat(this.#options.indent) + fullPrefixText + spinnerChar + (typeof this.#options.text === 'string' ? ' ' + this.#options.text : '') + fullSuffixText;\n\t\t\t\t\treturn this.#computeLineCountFrom(fullText, columns);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tget indent() {\n\t\treturn this.#options.indent;\n\t}\n\n\tset indent(indent = 0) {\n\t\tif (!(indent >= 0 && Number.isInteger(indent))) {\n\t\t\tthrow new Error('The `indent` option must be an integer from 0 and up');\n\t\t}\n\n\t\tthis.#options.indent = indent;\n\t}\n\n\tget interval() {\n\t\treturn this.#options.interval ?? this.#spinner.interval ?? 100;\n\t}\n\n\tget spinner() {\n\t\treturn this.#spinner;\n\t}\n\n\tset spinner(spinner) {\n\t\tthis.#frameIndex = -1;\n\t\tthis.#options.interval = undefined;\n\n\t\tif (typeof spinner === 'object') {\n\t\t\tif (!Array.isArray(spinner.frames) || spinner.frames.length === 0 || spinner.frames.some(frame => typeof frame !== 'string')) {\n\t\t\t\tthrow new Error('The given spinner must have a non-empty `frames` array of strings');\n\t\t\t}\n\n\t\t\tif (spinner.interval !== undefined && !(Number.isInteger(spinner.interval) && spinner.interval > 0)) {\n\t\t\t\tthrow new Error('`spinner.interval` must be a positive integer if provided');\n\t\t\t}\n\n\t\t\tthis.#spinner = spinner;\n\t\t} else if (!isUnicodeSupported()) {\n\t\t\tthis.#spinner = cliSpinners.line;\n\t\t} else if (spinner === undefined) {\n\t\t\t// Set default spinner\n\t\t\tthis.#spinner = cliSpinners.dots;\n\t\t} else if (spinner !== 'default' && cliSpinners[spinner]) {\n\t\t\tthis.#spinner = cliSpinners[spinner];\n\t\t} else {\n\t\t\tthrow new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);\n\t\t}\n\t}\n\n\tget text() {\n\t\treturn this.#options.text;\n\t}\n\n\tset text(value = '') {\n\t\tthis.#options.text = value;\n\t}\n\n\tget prefixText() {\n\t\treturn this.#options.prefixText;\n\t}\n\n\tset prefixText(value = '') {\n\t\tthis.#options.prefixText = value;\n\t}\n\n\tget suffixText() {\n\t\treturn this.#options.suffixText;\n\t}\n\n\tset suffixText(value = '') {\n\t\tthis.#options.suffixText = value;\n\t}\n\n\tget isSpinning() {\n\t\treturn this.#id !== undefined;\n\t}\n\n\t#formatAffix(value, separator, placeBefore = false) {\n\t\tconst resolved = typeof value === 'function' ? value() : value;\n\t\tif (typeof resolved === 'string' && resolved !== '') {\n\t\t\treturn placeBefore ? (separator + resolved) : (resolved + separator);\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#getFullPrefixText(prefixText = this.#options.prefixText, postfix = ' ') {\n\t\treturn this.#formatAffix(prefixText, postfix, false);\n\t}\n\n\t#getFullSuffixText(suffixText = this.#options.suffixText, prefix = ' ') {\n\t\treturn this.#formatAffix(suffixText, prefix, true);\n\t}\n\n\t#computeLineCountFrom(text, columns) {\n\t\tlet count = 0;\n\t\tfor (const line of stripVTControlCharacters(text).split('\\n')) {\n\t\t\tcount += Math.max(1, Math.ceil(stringWidth(line) / columns));\n\t\t}\n\n\t\treturn count;\n\t}\n\n\tget isEnabled() {\n\t\treturn this.#options.isEnabled && !this.#options.isSilent;\n\t}\n\n\tset isEnabled(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isEnabled` option must be a boolean');\n\t\t}\n\n\t\tthis.#options.isEnabled = value;\n\t}\n\n\tget isSilent() {\n\t\treturn this.#options.isSilent;\n\t}\n\n\tset isSilent(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isSilent` option must be a boolean');\n\t\t}\n\n\t\tthis.#options.isSilent = value;\n\t}\n\n\tframe() {\n\t\t// Only advance frame if enough time has passed (throttle to interval)\n\t\tconst now = Date.now();\n\t\tif (this.#frameIndex === -1 || now - this.#lastFrameTime >= this.interval) {\n\t\t\tthis.#frameIndex = (this.#frameIndex + 1) % this.#spinner.frames.length;\n\t\t\tthis.#lastFrameTime = now;\n\t\t}\n\n\t\tconst {frames} = this.#spinner;\n\t\tlet frame = frames[this.#frameIndex];\n\n\t\tif (this.color) {\n\t\t\tframe = chalk[this.color](frame);\n\t\t}\n\n\t\tconst fullPrefixText = this.#getFullPrefixText(this.#options.prefixText, ' ');\n\t\tconst fullText = typeof this.text === 'string' ? ' ' + this.text : '';\n\t\tconst fullSuffixText = this.#getFullSuffixText(this.#options.suffixText, ' ');\n\n\t\treturn fullPrefixText + frame + fullText + fullSuffixText;\n\t}\n\n\tclear() {\n\t\tif (!this.isEnabled || !this.#stream.isTTY) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Protect cursor control methods (cursorTo, moveCursor, clearLine) which internally call stream.write\n\t\tthis.#internalWrite(() => {\n\t\t\tthis.#stream.cursorTo(0);\n\n\t\t\tfor (let index = 0; index < this.#linesToClear; index++) {\n\t\t\t\tif (index > 0) {\n\t\t\t\t\tthis.#stream.moveCursor(0, -1);\n\t\t\t\t}\n\n\t\t\t\tthis.#stream.clearLine(1);\n\t\t\t}\n\n\t\t\tif (this.#options.indent) {\n\t\t\t\tthis.#stream.cursorTo(this.#options.indent);\n\t\t\t}\n\t\t});\n\n\t\tthis.#linesToClear = 0;\n\n\t\treturn this;\n\t}\n\n\t// Helper to hook a single stream\n\t#hookStream(stream) {\n\t\tif (!stream || this.#hookedStreams.has(stream) || !stream.isTTY || typeof stream.write !== 'function') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Detect concurrent spinners\n\t\tif (activeHooksPerStream.has(stream)) {\n\t\t\tconsole.warn('[ora] Multiple concurrent spinners detected. This may cause visual corruption. Use one spinner at a time.');\n\t\t}\n\n\t\tconst originalWrite = stream.write;\n\t\tthis.#hookedStreams.set(stream, originalWrite);\n\t\tactiveHooksPerStream.set(stream, this);\n\t\tstream.write = (chunk, encoding, callback) => this.#hookedWrite(stream, originalWrite, chunk, encoding, callback);\n\t}\n\n\t/**\n\tIntercept stream writes while spinner is active to handle external writes cleanly without visual corruption.\n\tHooks process stdio streams and the active spinner stream so console.log(), console.error(), and direct writes stay tidy.\n\t*/\n\t#installHook() {\n\t\tif (!this.isEnabled || this.#hookedStreams.size > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst streamsToHook = new Set([this.#stream, process.stdout, process.stderr]);\n\n\t\tfor (const stream of streamsToHook) {\n\t\t\tthis.#hookStream(stream);\n\t\t}\n\t}\n\n\t#uninstallHook() {\n\t\tfor (const [stream, originalWrite] of this.#hookedStreams) {\n\t\t\tstream.write = originalWrite;\n\t\t\tif (activeHooksPerStream.get(stream) === this) {\n\t\t\t\tactiveHooksPerStream.delete(stream);\n\t\t\t}\n\t\t}\n\n\t\tthis.#hookedStreams.clear();\n\t}\n\n\t// eslint-disable-next-line max-params -- Need stream and originalWrite for multi-stream support\n\t#hookedWrite(stream, originalWrite, chunk, encoding, callback) {\n\t\t// Handle both write(chunk, encoding, callback) and write(chunk, callback) signatures\n\t\tif (typeof encoding === 'function') {\n\t\t\tcallback = encoding;\n\t\t\tencoding = undefined;\n\t\t}\n\n\t\t// Pass through our own internal writes (spinner rendering, cursor control)\n\t\tif (this.#isInternalWrite) {\n\t\t\treturn originalWrite.call(stream, chunk, encoding, callback);\n\t\t}\n\n\t\t// External write detected - clear spinner, write content, re-render if appropriate\n\t\tthis.clear();\n\n\t\tconst chunkString = this.#stringifyChunk(chunk, encoding);\n\t\tconst chunkTerminatesLine = this.#chunkTerminatesLine(chunkString);\n\n\t\tconst writeResult = originalWrite.call(stream, chunk, encoding, callback);\n\n\t\t// Schedule or clear render deferral based on chunk content\n\t\tif (chunkTerminatesLine) {\n\t\t\tthis.#clearRenderDeferral();\n\t\t} else if (chunkString.length > 0) {\n\t\t\tthis.#scheduleRenderDeferral();\n\t\t}\n\n\t\t// Re-render spinner below the new output if still spinning and not deferred\n\t\tif (this.isSpinning && !this.#deferRenderTimer) {\n\t\t\tthis.render();\n\t\t}\n\n\t\treturn writeResult;\n\t}\n\n\trender() {\n\t\tif (!this.isEnabled || this.#drainHandler || this.#deferRenderTimer) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst useSynchronizedOutput = this.#stream.isTTY;\n\t\tlet shouldDisableSynchronizedOutput = false;\n\n\t\ttry {\n\t\t\tif (useSynchronizedOutput) {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_ENABLE));\n\t\t\t\tshouldDisableSynchronizedOutput = true;\n\t\t\t}\n\n\t\t\tthis.clear();\n\n\t\t\tlet frameContent = this.frame();\n\t\t\tconst columns = this.#stream.columns ?? 80;\n\t\t\tconst actualLineCount = this.#computeLineCountFrom(frameContent, columns);\n\n\t\t\t// If content would exceed viewport height, truncate it to prevent garbage\n\t\t\tconst consoleHeight = this.#stream.rows;\n\t\t\tif (consoleHeight && consoleHeight > 1 && actualLineCount > consoleHeight) {\n\t\t\t\tconst lines = frameContent.split('\\n');\n\t\t\t\tconst maxLines = consoleHeight - 1; // Reserve one line for truncation message\n\t\t\t\tframeContent = [...lines.slice(0, maxLines), '... (content truncated to fit terminal)'].join('\\n');\n\t\t\t}\n\n\t\t\tconst canContinue = this.#internalWrite(() => this.#stream.write(frameContent));\n\n\t\t\t// Handle backpressure - pause rendering if stream buffer is full\n\t\t\tif (canContinue === false && this.#stream.isTTY) {\n\t\t\t\tthis.#drainHandler = () => {\n\t\t\t\t\tthis.#drainHandler = undefined;\n\t\t\t\t\tthis.#tryRender();\n\t\t\t\t};\n\n\t\t\t\tthis.#stream.once('drain', this.#drainHandler);\n\t\t\t}\n\n\t\t\tthis.#linesToClear = this.#computeLineCountFrom(frameContent, columns);\n\t\t} finally {\n\t\t\tif (shouldDisableSynchronizedOutput) {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_DISABLE));\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tstart(text) {\n\t\tif (text) {\n\t\t\tthis.text = text;\n\t\t}\n\n\t\tif (this.isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this.isEnabled) {\n\t\t\tconst symbol = this.text ? '-' : '';\n\t\t\tconst line = ' '.repeat(this.#options.indent) + this.#buildOutputLine(symbol, this.text, this.#options.prefixText, this.#options.suffixText);\n\n\t\t\tif (line.trim() !== '') {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(line + '\\n'));\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.isSpinning) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.hide(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY) {\n\t\t\tstdinDiscarder.start();\n\t\t\tthis.#isDiscardingStdin = true;\n\t\t}\n\n\t\tthis.#installHook();\n\t\tthis.render();\n\t\tthis.#id = setInterval(this.render.bind(this), this.interval);\n\n\t\treturn this;\n\t}\n\n\tstop() {\n\t\tclearInterval(this.#id);\n\t\tthis.#id = undefined;\n\t\tthis.#frameIndex = -1;\n\t\tthis.#lastFrameTime = 0;\n\n\t\tthis.#clearRenderDeferral();\n\t\tthis.#uninstallHook();\n\n\t\t// Clean up drain handler if it exists\n\t\tif (this.#drainHandler) {\n\t\t\tthis.#stream.removeListener('drain', this.#drainHandler);\n\t\t\tthis.#drainHandler = undefined;\n\t\t}\n\n\t\tif (this.isEnabled) {\n\t\t\tthis.clear();\n\t\t\tif (this.#options.hideCursor) {\n\t\t\t\tcliCursor.show(this.#stream);\n\t\t\t}\n\t\t}\n\n\t\tif (this.#isDiscardingStdin) {\n\t\t\tthis.#isDiscardingStdin = false;\n\t\t\tstdinDiscarder.stop();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsucceed(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.success, text});\n\t}\n\n\tfail(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.error, text});\n\t}\n\n\twarn(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.warning, text});\n\t}\n\n\tinfo(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.info, text});\n\t}\n\n\tstopAndPersist(options = {}) {\n\t\tif (this.isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst symbol = options.symbol ?? ' ';\n\t\tconst text = options.text ?? this.text;\n\t\tconst prefixText = options.prefixText ?? this.#options.prefixText;\n\t\tconst suffixText = options.suffixText ?? this.#options.suffixText;\n\n\t\tconst textToWrite = this.#buildOutputLine(symbol, text, prefixText, suffixText) + '\\n';\n\n\t\tthis.stop();\n\t\tthis.#internalWrite(() => this.#stream.write(textToWrite));\n\n\t\treturn this;\n\t}\n}\n\nexport default function ora(options) {\n\treturn new Ora(options);\n}\n\nexport async function oraPromise(action, options) {\n\tconst actionIsFunction = typeof action === 'function';\n\tconst actionIsPromise = typeof action.then === 'function';\n\n\tif (!actionIsFunction && !actionIsPromise) {\n\t\tthrow new TypeError('Parameter `action` must be a Function or a Promise');\n\t}\n\n\tconst {successText, failText} = typeof options === 'object'\n\t\t? options\n\t\t: {successText: undefined, failText: undefined};\n\n\tconst spinner = ora(options).start();\n\n\ttry {\n\t\tconst promise = actionIsFunction ? action(spinner) : action;\n\t\tconst result = await promise;\n\n\t\tspinner.succeed(successText === undefined\n\t\t\t? undefined\n\t\t\t: (typeof successText === 'string' ? successText : successText(result)));\n\n\t\treturn result;\n\t} catch (error) {\n\t\tspinner.fail(failText === undefined\n\t\t\t? undefined\n\t\t\t: (typeof failText === 'string' ? failText : failText(error)));\n\n\t\tthrow error;\n\t}\n}\n\nexport {default as spinners} from 'cli-spinners';\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","'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","/* MAIN */\nconst getCodePointsLength = (() => {\n const SURROGATE_PAIR_RE = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n return (input) => {\n let surrogatePairsNr = 0;\n SURROGATE_PAIR_RE.lastIndex = 0;\n while (SURROGATE_PAIR_RE.test(input)) {\n surrogatePairsNr += 1;\n }\n return input.length - surrogatePairsNr;\n };\n})();\nconst isFullWidth = (x) => {\n return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6;\n};\nconst isWideNotCJKTNotEmoji = (x) => {\n return x === 0x231B || x === 0x2329 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD;\n};\n/* EXPORT */\nexport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji };\n","/* IMPORT */\nimport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji } from './utils.js';\n/* HELPERS */\nconst ANSI_RE = /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\\u001b\\]8;[^;]*;.*?(?:\\u0007|\\u001b\\u005c)/y;\nconst CONTROL_RE = /[\\x00-\\x08\\x0A-\\x1F\\x7F-\\x9F]{1,1000}/y;\nconst CJKT_WIDE_RE = /(?:(?![\\uFF61-\\uFF9F\\uFF00-\\uFFEF])[\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}\\p{Script=Hangul}\\p{Script=Tangut}]){1,1000}/yu;\nconst TAB_RE = /\\t{1,1000}/y;\nconst EMOJI_RE = /[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*/yu;\nconst LATIN_RE = /(?:[\\x20-\\x7E\\xA0-\\xFF](?!\\uFE0F)){1,1000}/y;\nconst MODIFIER_RE = /\\p{M}+/gu;\nconst NO_TRUNCATION = { limit: Infinity, ellipsis: '' };\n/* MAIN */\nconst getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => {\n /* CONSTANTS */\n const LIMIT = truncationOptions.limit ?? Infinity;\n const ELLIPSIS = truncationOptions.ellipsis ?? '';\n const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0);\n const ANSI_WIDTH = 0;\n const CONTROL_WIDTH = widthOptions.controlWidth ?? 0;\n const TAB_WIDTH = widthOptions.tabWidth ?? 8;\n const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2;\n const FULL_WIDTH_WIDTH = 2;\n const REGULAR_WIDTH = widthOptions.regularWidth ?? 1;\n const WIDE_WIDTH = widthOptions.wideWidth ?? FULL_WIDTH_WIDTH;\n const PARSE_BLOCKS = [\n [LATIN_RE, REGULAR_WIDTH],\n [ANSI_RE, ANSI_WIDTH],\n [CONTROL_RE, CONTROL_WIDTH],\n [TAB_RE, TAB_WIDTH],\n [EMOJI_RE, EMOJI_WIDTH],\n [CJKT_WIDE_RE, WIDE_WIDTH],\n ];\n /* STATE */\n let indexPrev = 0;\n let index = 0;\n let length = input.length;\n let lengthExtra = 0;\n let truncationEnabled = false;\n let truncationIndex = length;\n let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH);\n let unmatchedStart = 0;\n let unmatchedEnd = 0;\n let width = 0;\n let widthExtra = 0;\n /* PARSE LOOP */\n outer: while (true) {\n /* UNMATCHED */\n if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) {\n const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index);\n lengthExtra = 0;\n for (const char of unmatched.replaceAll(MODIFIER_RE, '')) {\n const codePoint = char.codePointAt(0) || 0;\n if (isFullWidth(codePoint)) {\n widthExtra = FULL_WIDTH_WIDTH;\n }\n else if (isWideNotCJKTNotEmoji(codePoint)) {\n widthExtra = WIDE_WIDTH;\n }\n else {\n widthExtra = REGULAR_WIDTH;\n }\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra);\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n lengthExtra += char.length;\n width += widthExtra;\n }\n unmatchedStart = unmatchedEnd = 0;\n }\n /* EXITING */\n if (index >= length) {\n break outer;\n }\n /* PARSE BLOCKS */\n for (let i = 0, l = PARSE_BLOCKS.length; i < l; i++) {\n const [BLOCK_RE, BLOCK_WIDTH] = PARSE_BLOCKS[i];\n BLOCK_RE.lastIndex = index;\n if (BLOCK_RE.test(input)) {\n lengthExtra = BLOCK_RE === CJKT_WIDE_RE ? getCodePointsLength(input.slice(index, BLOCK_RE.lastIndex)) : BLOCK_RE === EMOJI_RE ? 1 : BLOCK_RE.lastIndex - index;\n widthExtra = lengthExtra * BLOCK_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / BLOCK_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = BLOCK_RE.lastIndex;\n continue outer;\n }\n }\n /* UNMATCHED INDEX */\n index += 1;\n }\n /* RETURN */\n return {\n width: truncationEnabled ? truncationLimit : width,\n index: truncationEnabled ? truncationIndex : length,\n truncated: truncationEnabled,\n ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH\n };\n};\n/* EXPORT */\nexport default getStringTruncatedWidth;\n","/* IMPORT */\nimport fastStringTruncatedWidth from 'fast-string-truncated-width';\n/* HELPERS */\nconst NO_TRUNCATION = {\n limit: Infinity,\n ellipsis: '',\n ellipsisWidth: 0,\n};\n/* MAIN */\nconst fastStringWidth = (input, options = {}) => {\n return fastStringTruncatedWidth(input, NO_TRUNCATION, options).width;\n};\n/* EXPORT */\nexport default fastStringWidth;\n","import stringWidth from 'fast-string-width';\nconst ESC = '\\x1B';\nconst CSI = '\\x9B';\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\nconst GROUP_REGEX = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`, 'y');\nconst getClosingCode = (openingCode) => {\n if (openingCode >= 30 && openingCode <= 37)\n return 39;\n if (openingCode >= 90 && openingCode <= 97)\n return 39;\n if (openingCode >= 40 && openingCode <= 47)\n return 49;\n if (openingCode >= 100 && openingCode <= 107)\n return 49;\n if (openingCode === 1 || openingCode === 2)\n return 22;\n if (openingCode === 3)\n return 23;\n if (openingCode === 4)\n return 24;\n if (openingCode === 7)\n return 27;\n if (openingCode === 8)\n return 28;\n if (openingCode === 9)\n return 29;\n if (openingCode === 0)\n return 0;\n return undefined;\n};\nconst wrapAnsiCode = (code) => `${ESC}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = (url) => `${ESC}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\nconst wrapWord = (rows, word, columns) => {\n const characters = word[Symbol.iterator]();\n let isInsideEscape = false;\n let isInsideLinkEscape = false;\n let lastRow = rows.at(-1);\n let visible = lastRow === undefined ? 0 : stringWidth(lastRow);\n let currentCharacter = characters.next();\n let nextCharacter = characters.next();\n let rawCharacterIndex = 0;\n while (!currentCharacter.done) {\n const character = currentCharacter.value;\n const characterLength = stringWidth(character);\n if (visible + characterLength <= columns) {\n rows[rows.length - 1] += character;\n }\n else {\n rows.push(character);\n visible = 0;\n }\n if (character === ESC || character === CSI) {\n isInsideEscape = true;\n isInsideLinkEscape = word.startsWith(ANSI_ESCAPE_LINK, rawCharacterIndex + 1);\n }\n if (isInsideEscape) {\n if (isInsideLinkEscape) {\n if (character === ANSI_ESCAPE_BELL) {\n isInsideEscape = false;\n isInsideLinkEscape = false;\n }\n }\n else if (character === ANSI_SGR_TERMINATOR) {\n isInsideEscape = false;\n }\n }\n else {\n visible += characterLength;\n if (visible === columns && !nextCharacter.done) {\n rows.push('');\n visible = 0;\n }\n }\n currentCharacter = nextCharacter;\n nextCharacter = characters.next();\n rawCharacterIndex += character.length;\n }\n lastRow = rows.at(-1);\n if (!visible && lastRow !== undefined && lastRow.length && rows.length > 1) {\n rows[rows.length - 2] += rows.pop();\n }\n};\nconst stringVisibleTrimSpacesRight = (string) => {\n const words = string.split(' ');\n let last = words.length;\n while (last) {\n if (stringWidth(words[last - 1])) {\n break;\n }\n last--;\n }\n if (last === words.length) {\n return string;\n }\n return words.slice(0, last).join(' ') + words.slice(last).join('');\n};\nconst exec = (string, columns, options = {}) => {\n if (options.trim !== false && string.trim() === '') {\n return '';\n }\n let returnValue = '';\n let escapeCode;\n let escapeUrl;\n const words = string.split(' ');\n let rows = [''];\n let rowLength = 0;\n for (let index = 0; index < words.length; index++) {\n const word = words[index];\n if (options.trim !== false) {\n const row = rows.at(-1) ?? '';\n const trimmed = row.trimStart();\n if (row.length !== trimmed.length) {\n rows[rows.length - 1] = trimmed;\n rowLength = stringWidth(trimmed);\n }\n }\n if (index !== 0) {\n if (rowLength >= columns &&\n (options.wordWrap === false || options.trim === false)) {\n rows.push('');\n rowLength = 0;\n }\n if (rowLength || options.trim === false) {\n rows[rows.length - 1] += ' ';\n rowLength++;\n }\n }\n const wordLength = stringWidth(word);\n if (options.hard && wordLength > columns) {\n const remainingColumns = columns - rowLength;\n const breaksStartingThisLine = 1 + Math.floor((wordLength - remainingColumns - 1) / columns);\n const breaksStartingNextLine = Math.floor((wordLength - 1) / columns);\n if (breaksStartingNextLine < breaksStartingThisLine) {\n rows.push('');\n }\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n if (rowLength + wordLength > columns && rowLength && wordLength) {\n if (options.wordWrap === false && rowLength < columns) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows.push('');\n rowLength = 0;\n }\n if (rowLength + wordLength > columns && options.wordWrap === false) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows[rows.length - 1] += word;\n rowLength += wordLength;\n }\n if (options.trim !== false) {\n rows = rows.map((row) => stringVisibleTrimSpacesRight(row));\n }\n const preString = rows.join('\\n');\n let inSurrogate = false;\n for (let i = 0; i < preString.length; i++) {\n const character = preString[i];\n returnValue += character;\n if (!inSurrogate) {\n inSurrogate = character >= '\\ud800' && character <= '\\udbff';\n if (inSurrogate) {\n continue;\n }\n }\n else {\n inSurrogate = false;\n }\n if (character === ESC || character === CSI) {\n GROUP_REGEX.lastIndex = i + 1;\n const groupsResult = GROUP_REGEX.exec(preString);\n const groups = groupsResult?.groups;\n if (groups?.code !== undefined) {\n const code = Number.parseFloat(groups.code);\n escapeCode = code === END_CODE ? undefined : code;\n }\n else if (groups?.uri !== undefined) {\n escapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n }\n }\n if (preString[i + 1] === '\\n') {\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink('');\n }\n const closingCode = escapeCode ? getClosingCode(escapeCode) : undefined;\n if (escapeCode && closingCode) {\n returnValue += wrapAnsiCode(closingCode);\n }\n }\n else if (character === '\\n') {\n if (escapeCode && getClosingCode(escapeCode)) {\n returnValue += wrapAnsiCode(escapeCode);\n }\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink(escapeUrl);\n }\n }\n }\n return returnValue;\n};\nconst CRLF_OR_LF = /\\r?\\n/;\nexport function wrapAnsi(string, columns, options) {\n return String(string)\n .normalize()\n .split(CRLF_OR_LF)\n .map((line) => exec(line, columns, options))\n .join('\\n');\n}\n//# sourceMappingURL=main.js.map","import cliWidth from 'cli-width';\nimport { wrapAnsi } from 'fast-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 { 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","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","/**\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 = [];\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM');\nif (process.platform !== 'win32') {\n signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n );\n}\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n//# sourceMappingURL=signals.js.map","// 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 };\nconst processOk = (process) => !!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';\nconst kExitEmitter = Symbol.for('signal-exit emitter');\nconst global = globalThis;\nconst ObjectDefineProperty = Object.defineProperty.bind(Object);\n// teeny special purpose ee\nclass Emitter {\n emitted = {\n afterExit: false,\n exit: false,\n };\n listeners = {\n afterExit: [],\n exit: [],\n };\n count = 0;\n id = Math.random();\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 on(ev, fn) {\n this.listeners[ev].push(fn);\n }\n removeListener(ev, fn) {\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 }\n else {\n list.splice(i, 1);\n }\n }\n emit(ev, code, signal) {\n if (this.emitted[ev]) {\n return false;\n }\n this.emitted[ev] = true;\n let ret = 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}\nclass SignalExitBase {\n}\nconst signalExitWrap = (handler) => {\n return {\n onExit(cb, opts) {\n return handler.onExit(cb, opts);\n },\n load() {\n return handler.load();\n },\n unload() {\n return handler.unload();\n },\n };\n};\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => { };\n }\n load() { }\n unload() { }\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;\n #originalProcessEmit;\n #originalProcessReallyExit;\n #sigListeners = {};\n #loaded = false;\n constructor(process) {\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;\n if (typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number') {\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)\n process.kill(process.pid, s);\n /* c8 ignore stop */\n }\n };\n }\n this.#originalProcessReallyExit = process.reallyExit;\n this.#originalProcessEmit = process.emit;\n }\n onExit(cb, opts) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => { };\n }\n /* c8 ignore stop */\n if (this.#loaded === false) {\n this.load();\n }\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit';\n this.#emitter.on(ev, cb);\n return () => {\n this.#emitter.removeListener(ev, cb);\n if (this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0) {\n this.unload();\n }\n };\n }\n load() {\n if (this.#loaded) {\n return;\n }\n this.#loaded = true;\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 for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig];\n if (fn)\n this.#process.on(sig, fn);\n }\n catch (_) { }\n }\n this.#process.emit = (ev, ...a) => {\n return this.#processEmit(ev, ...a);\n };\n this.#process.reallyExit = (code) => {\n return this.#processReallyExit(code);\n };\n }\n unload() {\n if (!this.#loaded) {\n return;\n }\n this.#loaded = false;\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 }\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 #processReallyExit(code) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0;\n }\n this.#process.exitCode = code || 0;\n /* c8 ignore stop */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);\n }\n #processEmit(ev, ...args) {\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 }\n else {\n return og.call(this.#process, ev, ...args);\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 */\nonExit, \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 */\nload, \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 */\nunload, } = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback());\n//# sourceMappingURL=index.js.map","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 * 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\";\n// Capture the real setImmediate at module load time so it works even when test\n// frameworks mock timers with vi.useFakeTimers() or similar.\nconst nativeSetImmediate = globalThis.setImmediate;\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 // Pre-mute the output so that readline doesn't echo stale keystrokes\n // to the terminal before the first render. ScreenManager will unmute/mute\n // the output around each render call as needed.\n output.mute();\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 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 const startCycle = () => {\n // Re-renders only happen when the state change; but the readline cursor could\n // change position and that also requires a re-render (and a manual one because\n // we mute the streams). We set the listener after the initial workLoop to avoid\n // a double render if render triggered by a state change sets the cursor to the\n // right position.\n const checkCursorPos = () => screen.checkCursorPos();\n rl.input.on('keypress', checkCursorPos);\n cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));\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 };\n // Proper Readable streams (like process.stdin) may have OS-level buffered\n // data that arrives in the poll phase when readline resumes the stream.\n // Deferring the first render by one setImmediate tick (check phase, after\n // poll) lets that stale data flow through readline harmlessly—no keypress\n // handlers are registered yet and the output is muted, so the stale\n // keystrokes are silently discarded.\n // Old-style streams (like MuteStream) have no such buffering, so the\n // render cycle starts immediately.\n //\n // @see https://github.com/SBoudrias/Inquirer.js/issues/1303\n if ('readableFlowing' in input) {\n nativeSetImmediate(startCycle);\n }\n else {\n startCycle();\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","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, isEnterKey, isTabKey, usePrefix, makeTheme, } from '@inquirer/core';\nfunction getBooleanValue(value, defaultValue) {\n let answer = defaultValue !== false;\n if (/^(y|yes)/i.test(value))\n answer = true;\n else if (/^(n|no)/i.test(value))\n answer = false;\n return answer;\n}\nfunction boolToString(value) {\n return value ? 'Yes' : 'No';\n}\nexport default createPrompt((config, done) => {\n const { transformer = boolToString } = config;\n const [status, setStatus] = useState('idle');\n const [value, setValue] = useState('');\n const theme = makeTheme(config.theme);\n const prefix = usePrefix({ status, theme });\n useKeypress((key, rl) => {\n if (status !== 'idle')\n return;\n if (isEnterKey(key)) {\n const answer = getBooleanValue(value, config.default);\n setValue(transformer(answer));\n setStatus('done');\n done(answer);\n }\n else if (isTabKey(key)) {\n const answer = boolToString(!getBooleanValue(value, config.default));\n rl.clearLine(0); // Remove the tab character.\n rl.write(answer);\n setValue(answer);\n }\n else {\n setValue(rl.line);\n }\n });\n let formattedValue = value;\n let defaultValue = '';\n if (status === 'done') {\n formattedValue = theme.style.answer(value);\n }\n else {\n defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? 'y/N' : 'Y/n')}`;\n }\n const message = theme.style.message(config.message, status);\n return `${prefix} ${message}${defaultValue} ${formattedValue}`;\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 i18n: { disabledError: 'This option is disabled and cannot be selected.' },\n indexMode: 'hidden',\n keybindings: [],\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction isNavigable(item) {\n return !Separator.isSeparator(item);\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(isNavigable);\n const last = items.findLastIndex(isNavigable);\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 const [errorMsg, setError] = useState();\n useKeypress((key, rl) => {\n clearTimeout(searchTimeoutRef.current);\n if (errorMsg) {\n setError(undefined);\n }\n if (isEnterKey(key)) {\n if (selectedChoice.disabled) {\n setError(theme.i18n.disabledError);\n }\n else {\n setStatus('done');\n done(selectedChoice.value);\n }\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 (!isNavigable(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 cursor = isActive ? theme.icon.cursor : ' ';\n const indexLabel = theme.indexMode === 'number' ? `${index + 1 - separatorCount}. ` : '';\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n const disabledCursor = isActive ? theme.icon.cursor : '-';\n return theme.style.disabled(`${disabledCursor} ${indexLabel}${item.name} ${disabledLabel}`);\n }\n const color = isActive ? theme.style.highlight : (x) => x;\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 errorMsg ? theme.style.error(errorMsg) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return `${lines}${cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n","'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n","/**\n * Install utilities — shared helper functions for the install pipeline.\n * (Inlined from the former adapters/base.ts after multi-runtime removal.)\n */\n\nimport * as path from 'node:path';\nimport * as os from 'node:os';\nimport * as fs from 'node:fs';\n\n/**\n * Expand ~ to home directory (shell doesn't expand in env vars passed to node)\n */\nexport function expandTilde(filePath: string): string {\n if (filePath && filePath.startsWith('~/')) {\n return path.join(os.homedir(), filePath.slice(2));\n }\n return filePath;\n}\n\n/**\n * Process Co-Authored-By lines based on attribution setting.\n * @param content - File content to process\n * @param attribution - null=remove, undefined=keep default, string=replace\n */\nexport function processAttribution(\n content: string,\n attribution: null | undefined | string,\n): string {\n if (attribution === null) {\n return content.replace(/(\\r?\\n){2}Co-Authored-By:.*$/gim, '');\n }\n if (attribution === undefined) {\n return content;\n }\n const safeAttribution = attribution.replace(/\\$/g, '$$$$');\n return content.replace(\n /Co-Authored-By:.*$/gim,\n `Co-Authored-By: ${safeAttribution}`,\n );\n}\n\n/**\n * Build a hook command path using forward slashes for cross-platform compatibility.\n */\nexport function buildHookCommand(configDir: string, hookName: string): string {\n const hooksPath = configDir.replace(/\\\\/g, '/') + '/hooks/' + hookName;\n return `node \"${hooksPath}\"`;\n}\n\n/**\n * Read and parse settings.json, returning empty object if it doesn't exist.\n */\nexport function readSettings(\n settingsPath: string,\n): Record<string, unknown> {\n if (fs.existsSync(settingsPath)) {\n try {\n return JSON.parse(fs.readFileSync(settingsPath, 'utf8'));\n } catch {\n return {};\n }\n }\n return {};\n}\n\n/**\n * Write settings.json with proper formatting.\n */\nexport function writeSettings(\n settingsPath: string,\n settings: Record<string, unknown>,\n): void {\n fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\\n');\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport fsExtra from 'fs-extra';\n\nimport * as os from 'node:os';\n\nimport { expandTilde } from './utils.js';\nimport type { Manifest } from './manifest.js';\n\n// Get version from package.json — read at runtime so semantic-release's version bump\n// is reflected without needing to rebuild dist/install.cjs after the version bump.\nexport const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '..', 'package.json'), 'utf-8')) as { version: string };\n\n// Resolve template asset root — bundled into dist/assets/templates at publish time\nexport const templatesRoot = path.resolve(__dirname, 'assets', 'templates');\n\n// Built-in skill names shipped with MAXSIM — used for cleanup during install/uninstall\nexport const builtInSkills = ['tdd', 'systematic-debugging', 'verification-before-completion', 'maxsim-simplify', 'code-review', 'memory-management', 'using-maxsim', 'brainstorming', 'roadmap-writing', 'sdd', 'maxsim-batch'] as const;\n\n/**\n * Get the global config directory for Claude Code.\n * Priority: explicitDir > CLAUDE_CONFIG_DIR env > ~/.claude\n */\nexport function getGlobalDir(explicitDir: string | null = null): string {\n if (explicitDir) {\n return expandTilde(explicitDir);\n }\n if (process.env.CLAUDE_CONFIG_DIR) {\n return expandTilde(process.env.CLAUDE_CONFIG_DIR);\n }\n return path.join(os.homedir(), '.claude');\n}\n\n/**\n * Get the config directory path relative to home for hook templating.\n * Used for path.join(homeDir, '<configDir>', ...) replacement in hooks.\n */\nexport function getConfigDirFromHome(_isGlobal: boolean): string {\n return \"'.claude'\";\n}\n\n/**\n * Get the local directory name\n */\nexport function getDirName(): string {\n return '.claude';\n}\n\n/**\n * Recursively remove a directory, handling Windows read-only file attributes.\n * fs-extra handles cross-platform edge cases (EPERM on Windows, symlinks, etc.)\n */\nexport function safeRmDir(dirPath: string): void {\n fsExtra.removeSync(dirPath);\n}\n\n/**\n * Recursively copy a directory (dereferences symlinks)\n */\nexport function copyDirRecursive(src: string, dest: string): void {\n fsExtra.copySync(src, dest, { dereference: true });\n}\n\n/**\n * Verify a directory exists and contains files.\n * If expectedFiles is provided, also checks that those specific files exist inside the directory.\n */\nexport function verifyInstalled(dirPath: string, description: string, expectedFiles?: string[]): boolean {\n if (!fs.existsSync(dirPath)) {\n console.error(\n ` \\u2717 Failed to install ${description}: directory not created`,\n );\n return false;\n }\n try {\n const entries = fs.readdirSync(dirPath);\n if (entries.length === 0) {\n console.error(\n ` \\u2717 Failed to install ${description}: directory is empty`,\n );\n return false;\n }\n } catch (e: unknown) {\n console.error(\n ` \\u2717 Failed to install ${description}: ${(e as Error).message}`,\n );\n return false;\n }\n if (expectedFiles && expectedFiles.length > 0) {\n const missing = expectedFiles.filter(f => !fs.existsSync(path.join(dirPath, f)));\n if (missing.length > 0) {\n console.error(\n ` \\u2717 Failed to install ${description}: missing files: ${missing.join(', ')}`,\n );\n return false;\n }\n }\n return true;\n}\n\n/**\n * Verify a file exists\n */\nexport function verifyFileInstalled(filePath: string, description: string): boolean {\n if (!fs.existsSync(filePath)) {\n console.error(\n ` \\u2717 Failed to install ${description}: file not created`,\n );\n return false;\n }\n return true;\n}\n\nexport interface InstallResult {\n settingsPath: string | null;\n settings: Record<string, unknown> | null;\n statuslineCommand: string | null;\n}\n\n/**\n * Verify that all major install components are present. Uses the manifest\n * (if available) to check individual files; otherwise falls back to\n * directory-level checks.\n *\n * Returns an object with `complete` (boolean) and `missing` (list of\n * component names that are absent or incomplete).\n */\nexport function verifyInstallComplete(\n configDir: string,\n manifest: Manifest | null = null,\n): { complete: boolean; missing: string[] } {\n const missing: string[] = [];\n\n // If a manifest exists, verify every file in it is still present\n if (manifest && manifest.files) {\n for (const relPath of Object.keys(manifest.files)) {\n if (!fs.existsSync(path.join(configDir, relPath))) {\n missing.push(relPath);\n }\n }\n return { complete: missing.length === 0, missing };\n }\n\n // Fallback: directory-level checks for major components\n const components: Array<{ dir: string; label: string }> = [\n { dir: path.join(configDir, 'maxsim'), label: 'maxsim (workflows/templates)' },\n { dir: path.join(configDir, 'agents'), label: 'agents' },\n { dir: path.join(configDir, 'commands', 'maxsim'), label: 'commands' },\n { dir: path.join(configDir, 'hooks'), label: 'hooks' },\n ];\n\n for (const { dir, label } of components) {\n if (!fs.existsSync(dir)) {\n missing.push(label);\n } else {\n try {\n const entries = fs.readdirSync(dir);\n if (entries.length === 0) missing.push(label);\n } catch {\n missing.push(label);\n }\n }\n }\n\n return { complete: missing.length === 0, missing };\n}\n","import * as path from 'node:path';\n\nimport {\n readSettings,\n} from './utils.js';\nimport { getGlobalDir } from './shared.js';\n\n// Cache for attribution settings (populated once during install)\nlet attributionCached = false;\nlet attributionValue: null | undefined | string;\n\n/**\n * Get commit attribution setting for Claude Code\n * @returns null = remove, undefined = keep default, string = custom\n */\nexport function getCommitAttribution(explicitConfigDir: string | null): null | undefined | string {\n if (attributionCached) {\n return attributionValue;\n }\n\n const settings = readSettings(\n path.join(getGlobalDir(explicitConfigDir), 'settings.json'),\n ) as Record<string, unknown>;\n const attr = settings.attribution as { commit?: string } | undefined;\n if (!attr || attr.commit === undefined) {\n attributionValue = undefined;\n } else if (attr.commit === '') {\n attributionValue = null;\n } else {\n attributionValue = attr.commit;\n }\n\n attributionCached = true;\n return attributionValue;\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as os from 'node:os';\nimport { execSync as execSyncBase } from 'node:child_process';\n\nimport chalk from 'chalk';\n\nimport { safeRmDir, copyDirRecursive } from './shared.js';\n\n/** Check whether the current process is running with admin/root privileges. */\nexport function isElevated(): boolean {\n if (process.platform === 'win32') {\n try {\n execSyncBase('net session', { stdio: 'pipe' });\n return true;\n } catch {\n return false;\n }\n }\n // Linux / macOS: check if uid is 0\n return process.getuid?.() === 0;\n}\n\n/**\n * Add a firewall rule to allow inbound traffic on the given port.\n * Handles Windows (netsh), Linux (ufw / iptables), and macOS (no rule needed).\n */\nexport function applyFirewallRule(port: number): void {\n const platform = process.platform;\n try {\n if (platform === 'win32') {\n const cmd = `netsh advfirewall firewall add rule name=\"MAXSIM Dashboard\" dir=in action=allow protocol=TCP localport=${port}`;\n if (isElevated()) {\n execSyncBase(cmd, { stdio: 'pipe' });\n console.log(chalk.green(' \\u2713 Windows Firewall rule added for port ' + port));\n } else {\n // Trigger UAC elevation via PowerShell — this opens the Windows UAC dialog\n console.log(chalk.gray(' Requesting administrator privileges for firewall rule...'));\n const psCmd = `Start-Process cmd -ArgumentList '/c ${cmd}' -Verb RunAs -Wait`;\n execSyncBase(`powershell -NoProfile -Command \"${psCmd}\"`, { stdio: 'pipe' });\n console.log(chalk.green(' \\u2713 Windows Firewall rule added for port ' + port));\n }\n } else if (platform === 'linux') {\n const sudoPrefix = isElevated() ? '' : 'sudo ';\n try {\n execSyncBase(`${sudoPrefix}ufw allow ${port}/tcp`, { stdio: 'pipe' });\n console.log(chalk.green(' \\u2713 UFW rule added for port ' + port));\n } catch {\n try {\n execSyncBase(`${sudoPrefix}iptables -A INPUT -p tcp --dport ${port} -j ACCEPT`, { stdio: 'pipe' });\n console.log(chalk.green(' \\u2713 iptables rule added for port ' + port));\n } catch {\n console.log(chalk.yellow(` \\u26a0 Could not add firewall rule automatically. Run: sudo ufw allow ${port}/tcp`));\n }\n }\n } else if (platform === 'darwin') {\n // macOS does not block inbound connections by default — no rule needed\n console.log(chalk.gray(' macOS: No firewall rule needed (inbound connections are allowed by default)'));\n }\n } catch (err) {\n console.warn(chalk.yellow(` \\u26a0 Firewall rule failed: ${(err as Error).message}`));\n console.warn(chalk.gray(` You may need to manually allow port ${port} through your firewall.`));\n }\n}\n\n/**\n * Walk up from cwd to find the MAXSIM monorepo root (has packages/dashboard/src/server.ts)\n */\nexport function findMonorepoRoot(startDir: string): string | null {\n let dir = startDir;\n for (let i = 0; i < 10; i++) {\n if (fs.existsSync(path.join(dir, 'packages', 'dashboard', 'src', 'server.ts'))) {\n return dir;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\n/**\n * Handle the `dashboard` subcommand — refresh assets, install node-pty, launch server\n */\nexport async function runDashboardSubcommand(argv: Record<string, unknown>): Promise<void> {\n const { spawn: spawnDash, execSync: execSyncDash } = await import('node:child_process');\n\n // Always refresh dashboard from bundled assets before launching.\n const dashboardAssetSrc = path.resolve(__dirname, 'assets', 'dashboard');\n const installDir = path.join(process.cwd(), '.claude');\n const installDashDir = path.join(installDir, 'dashboard');\n\n if (fs.existsSync(dashboardAssetSrc)) {\n // Preserve node_modules (contains native addons like node-pty) across refreshes\n const nodeModulesDir = path.join(installDashDir, 'node_modules');\n const nodeModulesTmp = path.join(installDir, '_dashboard_node_modules_tmp');\n const hadNodeModules = fs.existsSync(nodeModulesDir);\n if (hadNodeModules) {\n fs.renameSync(nodeModulesDir, nodeModulesTmp);\n }\n\n // Clean existing dashboard dir to prevent stale files from old installs\n safeRmDir(installDashDir);\n fs.mkdirSync(installDashDir, { recursive: true });\n // Dashboard is now Vite+Express: server.js (self-contained) + client/ (static)\n copyDirRecursive(dashboardAssetSrc, installDashDir);\n\n // Restore node_modules if it was preserved\n if (hadNodeModules && fs.existsSync(nodeModulesTmp)) {\n fs.renameSync(nodeModulesTmp, nodeModulesDir);\n }\n\n // Write/update dashboard.json\n const dashConfigPath = path.join(installDir, 'dashboard.json');\n if (!fs.existsSync(dashConfigPath)) {\n fs.writeFileSync(dashConfigPath, JSON.stringify({ projectCwd: process.cwd() }, null, 2) + '\\n');\n }\n }\n\n // Resolve server path: local project first, then global\n const localDashboard = path.join(process.cwd(), '.claude', 'dashboard', 'server.js');\n const globalDashboard = path.join(os.homedir(), '.claude', 'dashboard', 'server.js');\n\n let serverPath: string | null = null;\n if (fs.existsSync(localDashboard)) {\n serverPath = localDashboard;\n } else if (fs.existsSync(globalDashboard)) {\n serverPath = globalDashboard;\n }\n\n if (!serverPath) {\n console.log(chalk.yellow('\\n Dashboard not available.\\n'));\n console.log(' Install MAXSIM first: ' + chalk.cyan('npx maxsimcli@latest') + '\\n');\n process.exit(0);\n }\n\n // --network flag overrides stored config (lets users enable network mode ad-hoc)\n const forceNetwork = !!argv['network'];\n\n // Read projectCwd from dashboard.json (one level up from dashboard/ dir)\n const dashboardDir = path.dirname(serverPath);\n const dashboardConfigPath = path.join(path.dirname(dashboardDir), 'dashboard.json');\n let projectCwd = process.cwd();\n let networkMode = forceNetwork;\n if (fs.existsSync(dashboardConfigPath)) {\n try {\n const config = JSON.parse(fs.readFileSync(dashboardConfigPath, 'utf8')) as { projectCwd?: string; networkMode?: boolean };\n if (config.projectCwd) {\n projectCwd = config.projectCwd;\n }\n if (!forceNetwork) {\n networkMode = config.networkMode ?? false;\n }\n } catch {\n // Use default cwd\n }\n }\n\n // node-pty is a native addon that cannot be bundled — auto-install if missing\n const dashDirForPty = path.dirname(serverPath);\n const ptyModulePath = path.join(dashDirForPty, 'node_modules', 'node-pty');\n if (!fs.existsSync(ptyModulePath)) {\n console.log(chalk.gray(' Installing node-pty for terminal support...'));\n try {\n // Ensure a package.json exists so npm install works in the dashboard dir\n const dashPkgPath = path.join(dashDirForPty, 'package.json');\n if (!fs.existsSync(dashPkgPath)) {\n fs.writeFileSync(dashPkgPath, '{\"private\":true}\\n');\n }\n execSyncDash('npm install node-pty --save-optional --no-audit --no-fund --loglevel=error', {\n cwd: dashDirForPty,\n stdio: 'inherit',\n timeout: 120_000,\n });\n } catch {\n console.warn(chalk.yellow(' node-pty installation failed — terminal will be unavailable.'));\n }\n }\n\n console.log(chalk.blue('Starting dashboard...'));\n console.log(chalk.gray(` Project: ${projectCwd}`));\n console.log(chalk.gray(` Server: ${serverPath}`));\n if (networkMode) {\n console.log(chalk.gray(' Network: enabled (local network access + QR code)'));\n }\n console.log('');\n\n // Use stdio: 'ignore' (fully detached) — a piped stderr causes the server to crash on\n // Windows when the read-end is closed after the parent reads the ready message (EPIPE).\n const child = spawnDash(process.execPath, [serverPath], {\n cwd: dashboardDir,\n detached: true,\n stdio: 'ignore',\n env: {\n ...process.env,\n MAXSIM_PROJECT_CWD: projectCwd,\n MAXSIM_NETWORK_MODE: networkMode ? '1' : '0',\n NODE_ENV: 'production',\n },\n });\n child.unref();\n\n // Poll /api/health until the server is ready (or 20s timeout).\n const POLL_INTERVAL_MS = 500;\n const POLL_TIMEOUT_MS = 20000;\n const HEALTH_TIMEOUT_MS = 1000;\n const DEFAULT_PORT = 3333;\n const PORT_RANGE_END = 3343;\n let foundUrl: string | null = null;\n const deadline = Date.now() + POLL_TIMEOUT_MS;\n\n while (Date.now() < deadline) {\n await new Promise<void>(r => setTimeout(r, POLL_INTERVAL_MS));\n for (let p = DEFAULT_PORT; p <= PORT_RANGE_END; p++) {\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), HEALTH_TIMEOUT_MS);\n const res = await fetch(`http://localhost:${p}/api/health`, { signal: controller.signal });\n clearTimeout(timer);\n if (res.ok) {\n const data = await res.json() as { status?: string };\n if (data.status === 'ok') {\n foundUrl = `http://localhost:${p}`;\n break;\n }\n }\n } catch { /* not ready yet */ }\n }\n if (foundUrl) break;\n }\n\n if (foundUrl) {\n console.log(chalk.green(` Dashboard ready at ${foundUrl}`));\n } else {\n console.log(chalk.yellow('\\n Dashboard did not respond after 20s. The server may still be starting — check http://localhost:3333'));\n }\n process.exit(0);\n}\n","import * as fs from 'node:fs';\n\nimport chalk from 'chalk';\nimport { confirm } from '@inquirer/prompts';\n\nimport {\n readSettings,\n writeSettings,\n buildHookCommand,\n} from './utils.js';\nimport { getDirName, getConfigDirFromHome, verifyInstalled } from './shared.js';\nimport * as path from 'node:path';\nimport ora from 'ora';\n\n/**\n * Clean up orphaned files from previous MAXSIM versions\n */\nexport function cleanupOrphanedFiles(configDir: string): void {\n const orphanedFiles = [\n 'hooks/maxsim-notify.sh',\n 'hooks/statusline.js',\n ];\n\n for (const relPath of orphanedFiles) {\n const fullPath = path.join(configDir, relPath);\n if (fs.existsSync(fullPath)) {\n fs.unlinkSync(fullPath);\n console.log(` ${chalk.green('\\u2713')} Removed orphaned ${relPath}`);\n }\n }\n}\n\n/**\n * Clean up orphaned hook registrations from settings.json\n */\nexport function cleanupOrphanedHooks(\n settings: Record<string, unknown>,\n): Record<string, unknown> {\n const orphanedHookPatterns = [\n 'maxsim-notify.sh',\n 'hooks/statusline.js',\n 'maxsim-intel-index.js',\n 'maxsim-intel-session.js',\n 'maxsim-intel-prune.js',\n ];\n\n let cleanedHooks = false;\n\n interface HookEntry {\n hooks?: Array<{ command?: string }>;\n }\n\n const hooks = settings.hooks as Record<string, HookEntry[]> | undefined;\n if (hooks) {\n for (const eventType of Object.keys(hooks)) {\n const hookEntries = hooks[eventType];\n if (Array.isArray(hookEntries)) {\n const filtered = hookEntries.filter((entry: HookEntry) => {\n if (entry.hooks && Array.isArray(entry.hooks)) {\n const hasOrphaned = entry.hooks.some(\n (h) =>\n h.command &&\n orphanedHookPatterns.some((pattern) =>\n h.command!.includes(pattern),\n ),\n );\n if (hasOrphaned) {\n cleanedHooks = true;\n return false;\n }\n }\n return true;\n });\n hooks[eventType] = filtered;\n }\n }\n }\n\n if (cleanedHooks) {\n console.log(\n ` ${chalk.green('\\u2713')} Removed orphaned hook registrations`,\n );\n }\n\n const statusLine = settings.statusLine as { command?: string } | undefined;\n if (\n statusLine &&\n statusLine.command &&\n statusLine.command.includes('statusline.js') &&\n !statusLine.command.includes('maxsim-statusline.js')\n ) {\n statusLine.command = statusLine.command.replace(\n /statusline\\.js/,\n 'maxsim-statusline.js',\n );\n console.log(\n ` ${chalk.green('\\u2713')} Updated statusline path (statusline.js \\u2192 maxsim-statusline.js)`,\n );\n }\n\n return settings;\n}\n\n/**\n * Install hook files and configure settings.json\n */\nexport function installHookFiles(\n targetDir: string,\n isGlobal: boolean,\n failures: string[],\n): void {\n // Copy hooks from bundled assets directory\n let hooksSrc: string | null = null;\n const bundledHooksDir = path.resolve(__dirname, 'assets', 'hooks');\n if (fs.existsSync(bundledHooksDir)) {\n hooksSrc = bundledHooksDir;\n } else {\n console.warn(` ${chalk.yellow('!')} bundled hooks not found - hooks will not be installed`);\n }\n\n if (hooksSrc) {\n const spinner = ora({ text: 'Installing hooks...', color: 'cyan' }).start();\n const hooksDest = path.join(targetDir, 'hooks');\n fs.mkdirSync(hooksDest, { recursive: true });\n const hookEntries = fs.readdirSync(hooksSrc);\n const configDirReplacement = getConfigDirFromHome(isGlobal);\n for (const entry of hookEntries) {\n const srcFile = path.join(hooksSrc, entry);\n if (fs.statSync(srcFile).isFile() && entry.endsWith('.cjs') && !entry.includes('.d.')) {\n const destName = entry.replace(/\\.cjs$/, '.js');\n const destFile = path.join(hooksDest, destName);\n let content = fs.readFileSync(srcFile, 'utf8');\n content = content.replace(/'\\.claude'/g, configDirReplacement);\n fs.writeFileSync(destFile, content);\n }\n }\n if (verifyInstalled(hooksDest, 'hooks')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed hooks (bundled)');\n } else {\n spinner.fail('Failed to install hooks');\n failures.push('hooks');\n }\n }\n}\n\n/**\n * Configure hooks and statusline in settings.json\n */\nexport function configureSettingsHooks(\n targetDir: string,\n isGlobal: boolean,\n): { settingsPath: string; settings: Record<string, unknown>; statuslineCommand: string; updateCheckCommand: string; contextMonitorCommand: string } {\n const dirName = getDirName();\n\n const settingsPath = path.join(targetDir, 'settings.json');\n const settings = cleanupOrphanedHooks(readSettings(settingsPath));\n const statuslineCommand = isGlobal\n ? buildHookCommand(targetDir, 'maxsim-statusline.js')\n : 'node ' + dirName + '/hooks/maxsim-statusline.js';\n const updateCheckCommand = isGlobal\n ? buildHookCommand(targetDir, 'maxsim-check-update.js')\n : 'node ' + dirName + '/hooks/maxsim-check-update.js';\n const contextMonitorCommand = isGlobal\n ? buildHookCommand(targetDir, 'maxsim-context-monitor.js')\n : 'node ' + dirName + '/hooks/maxsim-context-monitor.js';\n\n interface InstallHookEntry {\n hooks?: Array<{ type: string; command: string }>;\n }\n\n // Configure SessionStart hook for update checking\n if (!settings.hooks) {\n settings.hooks = {};\n }\n const installHooks = settings.hooks as Record<string, InstallHookEntry[]>;\n if (!installHooks.SessionStart) {\n installHooks.SessionStart = [];\n }\n\n const hasMaxsimUpdateHook = installHooks.SessionStart.some(\n (entry: InstallHookEntry) =>\n entry.hooks &&\n entry.hooks.some(\n (h) => h.command && h.command.includes('maxsim-check-update'),\n ),\n );\n\n if (!hasMaxsimUpdateHook) {\n installHooks.SessionStart.push({\n hooks: [\n {\n type: 'command',\n command: updateCheckCommand,\n },\n ],\n });\n console.log(\n ` ${chalk.green('\\u2713')} Configured update check hook`,\n );\n }\n\n // Configure PostToolUse hook for context window monitoring\n if (!installHooks.PostToolUse) {\n installHooks.PostToolUse = [];\n }\n\n const hasContextMonitorHook = installHooks.PostToolUse.some(\n (entry: InstallHookEntry) =>\n entry.hooks &&\n entry.hooks.some(\n (h) => h.command && h.command.includes('maxsim-context-monitor'),\n ),\n );\n\n if (!hasContextMonitorHook) {\n installHooks.PostToolUse.push({\n hooks: [\n {\n type: 'command',\n command: contextMonitorCommand,\n },\n ],\n });\n console.log(\n ` ${chalk.green('\\u2713')} Configured context window monitor hook`,\n );\n }\n\n return { settingsPath, settings, statuslineCommand, updateCheckCommand, contextMonitorCommand };\n}\n\n/**\n * Handle statusline configuration — returns true if MAXSIM statusline should be installed\n */\nexport async function handleStatusline(\n settings: Record<string, unknown>,\n isInteractive: boolean,\n forceStatusline: boolean,\n): Promise<boolean> {\n const hasExisting = settings.statusLine != null;\n\n if (!hasExisting) return true;\n if (forceStatusline) return true;\n\n if (!isInteractive) {\n console.log(\n chalk.yellow('\\u26a0') + ' Skipping statusline (already configured)',\n );\n console.log(\n ' Use ' + chalk.cyan('--force-statusline') + ' to replace\\n',\n );\n return false;\n }\n\n const statusLine = settings.statusLine as { command?: string; url?: string };\n const existingCmd = statusLine.command || statusLine.url || '(custom)';\n\n console.log();\n console.log(chalk.yellow('\\u26a0 Existing statusline detected'));\n console.log();\n console.log(' Your current statusline:');\n console.log(' ' + chalk.dim(`command: ${existingCmd}`));\n console.log();\n console.log(' MAXSIM includes a statusline showing:');\n console.log(' \\u2022 Model name');\n console.log(' \\u2022 Current task (from todo list)');\n console.log(' \\u2022 Context window usage (color-coded)');\n console.log();\n\n const shouldReplace = await confirm({\n message: 'Replace with MAXSIM statusline?',\n default: false,\n });\n\n return shouldReplace;\n}\n\n/**\n * Apply statusline config, then print completion message\n */\nexport function finishInstall(\n settingsPath: string | null,\n settings: Record<string, unknown> | null,\n statuslineCommand: string | null,\n shouldInstallStatusline: boolean,\n isGlobal: boolean = true,\n): void {\n if (shouldInstallStatusline) {\n settings!.statusLine = {\n type: 'command',\n command: statuslineCommand,\n };\n console.log(` ${chalk.green('\\u2713')} Configured statusline`);\n }\n\n if (settingsPath && settings) {\n writeSettings(settingsPath, settings);\n }\n\n console.log(`\n ${chalk.green('Done!')} Launch Claude Code and run ${chalk.cyan('/maxsim:help')}.\n\n ${chalk.cyan('Join the community:')} https://discord.gg/5JJgD5svVS\n`);\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as crypto from 'node:crypto';\n\nimport { pkg } from './shared.js';\n\nexport const MANIFEST_NAME = 'maxsim-file-manifest.json';\n\n/**\n * Compute SHA256 hash of file contents\n */\nexport function fileHash(filePath: string): string {\n const content = fs.readFileSync(filePath);\n return crypto.createHash('sha256').update(content).digest('hex');\n}\n\n/**\n * Recursively collect all files in dir with their hashes\n */\nexport function generateManifest(\n dir: string,\n baseDir?: string,\n): Record<string, string> {\n if (!baseDir) baseDir = dir;\n const manifest: Record<string, string> = {};\n if (!fs.existsSync(dir)) return manifest;\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n const relPath = path.relative(baseDir, fullPath).replace(/\\\\/g, '/');\n if (entry.isSymbolicLink()) {\n // Skip symlinks — they point to user-managed external directories\n continue;\n } else if (entry.isDirectory()) {\n Object.assign(manifest, generateManifest(fullPath, baseDir));\n } else {\n manifest[relPath] = fileHash(fullPath);\n }\n }\n return manifest;\n}\n\nexport interface Manifest {\n version: string;\n timestamp: string;\n files: Record<string, string>;\n}\n\n/**\n * Write file manifest after installation for future modification detection\n */\nexport function writeManifest(\n configDir: string,\n): Manifest {\n const maxsimDir = path.join(configDir, 'maxsim');\n const commandsDir = path.join(configDir, 'commands', 'maxsim');\n const agentsDir = path.join(configDir, 'agents');\n const manifest: Manifest = {\n version: pkg.version,\n timestamp: new Date().toISOString(),\n files: {},\n };\n\n const maxsimHashes = generateManifest(maxsimDir);\n for (const [rel, hash] of Object.entries(maxsimHashes)) {\n manifest.files['maxsim/' + rel] = hash;\n }\n if (fs.existsSync(commandsDir)) {\n const cmdHashes = generateManifest(commandsDir);\n for (const [rel, hash] of Object.entries(cmdHashes)) {\n manifest.files['commands/maxsim/' + rel] = hash;\n }\n }\n if (fs.existsSync(agentsDir)) {\n for (const file of fs.readdirSync(agentsDir)) {\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\n manifest.files['agents/' + file] = fileHash(\n path.join(agentsDir, file),\n );\n }\n }\n }\n // Include skills in manifest (skills/<skill-name>/*)\n const skillsManifestDir = path.join(configDir, 'skills');\n if (fs.existsSync(skillsManifestDir)) {\n const skillHashes = generateManifest(skillsManifestDir);\n for (const [rel, hash] of Object.entries(skillHashes)) {\n manifest.files['skills/' + rel] = hash;\n }\n }\n\n fs.writeFileSync(\n path.join(configDir, MANIFEST_NAME),\n JSON.stringify(manifest, null, 2),\n );\n return manifest;\n}\n\n/**\n * Read an existing manifest from the config directory, or return null if none exists / is invalid\n */\nexport function readManifest(configDir: string): Manifest | null {\n const manifestPath = path.join(configDir, MANIFEST_NAME);\n if (!fs.existsSync(manifestPath)) return null;\n try {\n return JSON.parse(fs.readFileSync(manifestPath, 'utf8')) as Manifest;\n } catch {\n return null;\n }\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport chalk from 'chalk';\n\nimport { readManifest, fileHash } from './manifest.js';\nimport type { Manifest } from './manifest.js';\n\nexport const PATCHES_DIR_NAME = 'maxsim-local-patches';\n\ninterface BackupMeta {\n backed_up_at: string;\n from_version: string;\n files: string[];\n}\n\n/**\n * Detect user-modified MAXSIM files by comparing against install manifest.\n */\nexport function saveLocalPatches(configDir: string): string[] {\n const manifest = readManifest(configDir);\n if (!manifest) return [];\n\n const patchesDir = path.join(configDir, PATCHES_DIR_NAME);\n const modified: string[] = [];\n\n for (const [relPath, originalHash] of Object.entries(manifest.files || {})) {\n const fullPath = path.join(configDir, relPath);\n if (!fs.existsSync(fullPath)) continue;\n const currentHash = fileHash(fullPath);\n if (currentHash !== originalHash) {\n const backupPath = path.join(patchesDir, relPath);\n fs.mkdirSync(path.dirname(backupPath), { recursive: true });\n fs.copyFileSync(fullPath, backupPath);\n modified.push(relPath);\n }\n }\n\n if (modified.length > 0) {\n const meta: BackupMeta = {\n backed_up_at: new Date().toISOString(),\n from_version: manifest.version,\n files: modified,\n };\n fs.writeFileSync(\n path.join(patchesDir, 'backup-meta.json'),\n JSON.stringify(meta, null, 2),\n );\n console.log(\n ' ' +\n chalk.yellow('i') +\n ' Found ' +\n modified.length +\n ' locally modified MAXSIM file(s) \\u2014 backed up to ' +\n PATCHES_DIR_NAME +\n '/',\n );\n for (const f of modified) {\n console.log(' ' + chalk.dim(f));\n }\n }\n return modified;\n}\n\n/**\n * After install, report backed-up patches for user to reapply.\n */\nexport function reportLocalPatches(\n configDir: string,\n): string[] {\n const patchesDir = path.join(configDir, PATCHES_DIR_NAME);\n const metaPath = path.join(patchesDir, 'backup-meta.json');\n if (!fs.existsSync(metaPath)) return [];\n\n let meta: BackupMeta;\n try {\n meta = JSON.parse(\n fs.readFileSync(metaPath, 'utf8'),\n ) as BackupMeta;\n } catch {\n return [];\n }\n\n if (meta.files && meta.files.length > 0) {\n console.log('');\n console.log(\n ' ' +\n chalk.yellow('Local patches detected') +\n ' (from v' +\n meta.from_version +\n '):',\n );\n for (const f of meta.files) {\n console.log(' ' + chalk.cyan(f));\n }\n console.log('');\n console.log(\n ' Your modifications are saved in ' +\n chalk.cyan(PATCHES_DIR_NAME + '/'),\n );\n console.log(\n ' Run ' +\n chalk.cyan('/maxsim:reapply-patches') +\n ' to merge them into the new version.',\n );\n console.log(' Or manually compare and merge the files.');\n console.log('');\n }\n return meta.files || [];\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport {\n processAttribution,\n} from './utils.js';\nimport { getCommitAttribution } from './adapters.js';\n\n/**\n * Recursively copy directory, replacing paths in .md files\n * Deletes existing destDir first to remove orphaned files from previous versions\n */\nexport function copyWithPathReplacement(\n srcDir: string,\n destDir: string,\n pathPrefix: string,\n explicitConfigDir: string | null,\n isCommand: boolean = false,\n): void {\n if (fs.existsSync(destDir)) {\n fs.rmSync(destDir, { recursive: true });\n }\n fs.mkdirSync(destDir, { recursive: true });\n\n const entries = fs.readdirSync(srcDir, { withFileTypes: true });\n\n for (const entry of entries) {\n const srcPath = path.join(srcDir, entry.name);\n const destPath = path.join(destDir, entry.name);\n\n if (entry.isDirectory()) {\n copyWithPathReplacement(srcPath, destPath, pathPrefix, explicitConfigDir, isCommand);\n } else if (entry.name.endsWith('.md')) {\n let content = fs.readFileSync(srcPath, 'utf8');\n const globalClaudeRegex = /~\\/\\.claude\\//g;\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\n content = content.replace(globalClaudeRegex, pathPrefix);\n content = content.replace(localClaudeRegex, './.claude/');\n content = processAttribution(content, getCommitAttribution(explicitConfigDir));\n fs.writeFileSync(destPath, content);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as os from 'node:os';\n\nimport chalk from 'chalk';\n\nimport { readSettings, writeSettings } from './utils.js';\nimport { getDirName, getGlobalDir, builtInSkills } from './shared.js';\n\n/**\n * Uninstall MAXSIM from the specified directory\n */\nexport function uninstall(isGlobal: boolean, explicitConfigDir: string | null = null): void {\n const dirName = getDirName();\n\n const targetDir = isGlobal\n ? getGlobalDir(explicitConfigDir)\n : path.join(process.cwd(), dirName);\n\n const locationLabel = isGlobal\n ? targetDir.replace(os.homedir(), '~')\n : targetDir.replace(process.cwd(), '.');\n\n console.log(\n ` Uninstalling MAXSIM from ${chalk.cyan('Claude Code')} at ${chalk.cyan(locationLabel)}\\n`,\n );\n\n if (!fs.existsSync(targetDir)) {\n console.log(\n ` ${chalk.yellow('\\u26a0')} Directory does not exist: ${locationLabel}`,\n );\n console.log(` Nothing to uninstall.\\n`);\n return;\n }\n\n let removedCount = 0;\n\n // 1. Remove MAXSIM commands (nested: commands/maxsim/)\n const maxsimCommandsDir = path.join(targetDir, 'commands', 'maxsim');\n if (fs.existsSync(maxsimCommandsDir)) {\n fs.rmSync(maxsimCommandsDir, { recursive: true });\n removedCount++;\n console.log(` ${chalk.green('\\u2713')} Removed commands/maxsim/`);\n }\n\n // 1b. Remove MAXSIM skills\n {\n const skillsDir = path.join(targetDir, 'skills');\n if (fs.existsSync(skillsDir)) {\n let skillCount = 0;\n for (const skill of builtInSkills) {\n const skillDir = path.join(skillsDir, skill);\n if (fs.existsSync(skillDir)) {\n fs.rmSync(skillDir, { recursive: true });\n skillCount++;\n }\n }\n if (skillCount > 0) {\n removedCount++;\n console.log(\n ` ${chalk.green('\\u2713')} Removed ${skillCount} MAXSIM skills`,\n );\n }\n }\n\n // Also clean up legacy agents/skills/ location\n const legacySkillsDir = path.join(targetDir, 'agents', 'skills');\n if (fs.existsSync(legacySkillsDir)) {\n fs.rmSync(legacySkillsDir, { recursive: true });\n console.log(\n ` ${chalk.green('\\u2713')} Removed legacy agents/skills/ directory`,\n );\n }\n }\n\n // 2. Remove maxsim directory\n const maxsimDir = path.join(targetDir, 'maxsim');\n if (fs.existsSync(maxsimDir)) {\n fs.rmSync(maxsimDir, { recursive: true });\n removedCount++;\n console.log(` ${chalk.green('\\u2713')} Removed maxsim/`);\n }\n\n // 3. Remove MAXSIM agents\n const agentsDir = path.join(targetDir, 'agents');\n if (fs.existsSync(agentsDir)) {\n const files = fs.readdirSync(agentsDir);\n let agentCount = 0;\n for (const file of files) {\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\n fs.unlinkSync(path.join(agentsDir, file));\n agentCount++;\n }\n }\n if (agentCount > 0) {\n removedCount++;\n console.log(\n ` ${chalk.green('\\u2713')} Removed ${agentCount} MAXSIM agents`,\n );\n }\n }\n\n // 4. Remove MAXSIM hooks\n const hooksDir = path.join(targetDir, 'hooks');\n if (fs.existsSync(hooksDir)) {\n const maxsimHooks = [\n 'maxsim-statusline.js',\n 'maxsim-check-update.js',\n 'maxsim-check-update.sh',\n 'maxsim-context-monitor.js',\n ];\n let hookCount = 0;\n for (const hook of maxsimHooks) {\n const hookPath = path.join(hooksDir, hook);\n if (fs.existsSync(hookPath)) {\n fs.unlinkSync(hookPath);\n hookCount++;\n }\n }\n if (hookCount > 0) {\n removedCount++;\n console.log(\n ` ${chalk.green('\\u2713')} Removed ${hookCount} MAXSIM hooks`,\n );\n }\n }\n\n // 5. Remove MAXSIM package.json (CommonJS mode marker)\n const pkgJsonPath = path.join(targetDir, 'package.json');\n if (fs.existsSync(pkgJsonPath)) {\n try {\n const content = fs.readFileSync(pkgJsonPath, 'utf8').trim();\n if (content === '{\"type\":\"commonjs\"}') {\n fs.unlinkSync(pkgJsonPath);\n removedCount++;\n console.log(\n ` ${chalk.green('\\u2713')} Removed MAXSIM package.json`,\n );\n }\n } catch {\n // Ignore read errors\n }\n }\n\n // 6. Clean up settings.json\n const settingsPath = path.join(targetDir, 'settings.json');\n if (fs.existsSync(settingsPath)) {\n const settings = readSettings(settingsPath);\n let settingsModified = false;\n\n interface StatusLine {\n command?: string;\n url?: string;\n }\n\n interface SettingsHookEntry {\n hooks?: Array<{ command?: string }>;\n }\n\n const statusLine = settings.statusLine as StatusLine | undefined;\n if (\n statusLine &&\n statusLine.command &&\n statusLine.command.includes('maxsim-statusline')\n ) {\n delete settings.statusLine;\n settingsModified = true;\n console.log(\n ` ${chalk.green('\\u2713')} Removed MAXSIM statusline from settings`,\n );\n }\n\n const settingsHooks = settings.hooks as\n | Record<string, SettingsHookEntry[]>\n | undefined;\n if (settingsHooks && settingsHooks.SessionStart) {\n const before = settingsHooks.SessionStart.length;\n settingsHooks.SessionStart = settingsHooks.SessionStart.filter(\n (entry: SettingsHookEntry) => {\n if (entry.hooks && Array.isArray(entry.hooks)) {\n const hasMaxsimHook = entry.hooks.some(\n (h) =>\n h.command &&\n (h.command.includes('maxsim-check-update') ||\n h.command.includes('maxsim-statusline')),\n );\n return !hasMaxsimHook;\n }\n return true;\n },\n );\n if (settingsHooks.SessionStart.length < before) {\n settingsModified = true;\n console.log(\n ` ${chalk.green('\\u2713')} Removed MAXSIM hooks from settings`,\n );\n }\n if (settingsHooks.SessionStart.length === 0) {\n delete settingsHooks.SessionStart;\n }\n }\n\n if (settingsHooks && settingsHooks.PostToolUse) {\n const before = settingsHooks.PostToolUse.length;\n settingsHooks.PostToolUse = settingsHooks.PostToolUse.filter(\n (entry: SettingsHookEntry) => {\n if (entry.hooks && Array.isArray(entry.hooks)) {\n const hasMaxsimHook = entry.hooks.some(\n (h) =>\n h.command &&\n h.command.includes('maxsim-context-monitor'),\n );\n return !hasMaxsimHook;\n }\n return true;\n },\n );\n if (settingsHooks.PostToolUse.length < before) {\n settingsModified = true;\n console.log(\n ` ${chalk.green('\\u2713')} Removed context monitor hook from settings`,\n );\n }\n if (settingsHooks.PostToolUse.length === 0) {\n delete settingsHooks.PostToolUse;\n }\n }\n\n if (settingsHooks && Object.keys(settingsHooks).length === 0) {\n delete settings.hooks;\n }\n\n if (settingsModified) {\n writeSettings(settingsPath, settings);\n removedCount++;\n }\n }\n\n if (removedCount === 0) {\n console.log(\n ` ${chalk.yellow('\\u26a0')} No MAXSIM files found to remove.`,\n );\n }\n\n console.log(`\n ${chalk.green('Done!')} MAXSIM has been uninstalled from Claude Code.\n Your other files and settings have been preserved.\n`);\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as os from 'node:os';\nimport fsExtra from 'fs-extra';\n\nimport chalk from 'chalk';\nimport figlet from 'figlet';\nimport ora from 'ora';\nimport { select, confirm } from '@inquirer/prompts';\nimport minimist from 'minimist';\n\nimport {\n processAttribution,\n} from './utils.js';\nimport {\n pkg,\n templatesRoot,\n getGlobalDir,\n getDirName,\n safeRmDir,\n copyDirRecursive,\n verifyInstalled,\n verifyFileInstalled,\n builtInSkills,\n verifyInstallComplete,\n} from './shared.js';\nimport type { InstallResult } from './shared.js';\nimport { getCommitAttribution } from './adapters.js';\nimport { runDashboardSubcommand, applyFirewallRule } from './dashboard.js';\nimport {\n cleanupOrphanedFiles,\n installHookFiles,\n configureSettingsHooks,\n handleStatusline,\n finishInstall,\n} from './hooks.js';\nimport { writeManifest, readManifest, MANIFEST_NAME } from './manifest.js';\nimport { saveLocalPatches, reportLocalPatches } from './patches.js';\nimport {\n copyWithPathReplacement,\n} from './copy.js';\nimport { uninstall } from './uninstall.js';\n\n// Parse args\nconst args = process.argv.slice(2);\nconst argv = minimist(args, {\n boolean: ['global', 'local', 'claude', 'uninstall', 'help', 'version', 'force-statusline', 'network'],\n string: ['config-dir'],\n alias: { g: 'global', l: 'local', u: 'uninstall', h: 'help', c: 'config-dir' },\n});\nconst hasGlobal = !!argv['global'];\nconst hasLocal = !!argv['local'];\nconst hasUninstall = !!argv['uninstall'];\n\nconst banner =\n '\\n' +\n chalk.cyan(\n figlet.textSync('MAXSIM', { font: 'ANSI Shadow' })\n .split('\\n')\n .map((line) => ' ' + line)\n .join('\\n'),\n ) +\n '\\n' +\n '\\n' +\n ' MAXSIM ' +\n chalk.dim('v' + pkg.version) +\n '\\n' +\n ' A meta-prompting, context engineering and spec-driven\\n' +\n ' development system for Claude Code.\\n';\n\n// Parse --config-dir argument\nconst explicitConfigDir: string | null = argv['config-dir'] || null;\nconst hasHelp = !!argv['help'];\nconst hasVersion = !!argv['version'];\nconst forceStatusline = !!argv['force-statusline'];\n\n// Reject deprecated multi-runtime flags\nconst deprecatedFlags = ['opencode', 'gemini', 'codex', 'both', 'all'] as const;\nfor (const flag of deprecatedFlags) {\n if (argv[flag]) {\n console.error(`Error: The --${flag} flag is no longer supported. MAXSIM v2.0 is Claude Code only.`);\n process.exit(1);\n }\n}\n\n// Show version if requested (before banner for clean output)\nif (hasVersion) {\n console.log(pkg.version);\n process.exit(0);\n}\n\nconsole.log(banner);\n\n// Show help if requested\nif (hasHelp) {\n console.log(\n ` ${chalk.yellow('Usage:')} npx maxsimcli [options]\\n\\n ${chalk.yellow('Options:')}\\n ${chalk.cyan('-g, --global')} Install globally (to config directory)\\n ${chalk.cyan('-l, --local')} Install locally (to current directory)\\n ${chalk.cyan('-u, --uninstall')} Uninstall MAXSIM (remove all MAXSIM files)\\n ${chalk.cyan('-c, --config-dir <path>')} Specify custom config directory\\n ${chalk.cyan('-h, --help')} Show this help message\\n ${chalk.cyan('--force-statusline')} Replace existing statusline config\\n\\n ${chalk.yellow('Examples:')}\\n ${chalk.dim('# Interactive install (prompts for location)')}\\n npx maxsimcli\\n\\n ${chalk.dim('# Install globally')}\\n npx maxsimcli --global\\n\\n ${chalk.dim('# Install to current project only')}\\n npx maxsimcli --local\\n\\n ${chalk.dim('# Install to custom config directory')}\\n npx maxsimcli --global --config-dir ~/.claude-work\\n\\n ${chalk.dim('# Uninstall MAXSIM globally')}\\n npx maxsimcli --global --uninstall\\n\\n ${chalk.yellow('Notes:')}\\n The --config-dir option is useful when you have multiple configurations.\\n It takes priority over the CLAUDE_CONFIG_DIR environment variable.\\n`,\n );\n process.exit(0);\n}\n\nasync function install(\n isGlobal: boolean,\n): Promise<InstallResult> {\n const dirName = getDirName();\n const src = templatesRoot;\n\n const targetDir = isGlobal\n ? getGlobalDir(explicitConfigDir)\n : path.join(process.cwd(), dirName);\n\n const locationLabel = isGlobal\n ? targetDir.replace(os.homedir(), '~')\n : targetDir.replace(process.cwd(), '.');\n\n const pathPrefix = isGlobal\n ? `${targetDir.replace(/\\\\/g, '/')}/`\n : `./${dirName}/`;\n\n console.log(\n ` Installing for ${chalk.cyan('Claude Code')} to ${chalk.cyan(locationLabel)}\\n`,\n );\n\n const failures: string[] = [];\n\n // Detect prior install via manifest — used for re-run safety\n const existingManifest = readManifest(targetDir);\n const isAlreadyCurrent = existingManifest !== null && existingManifest.version === pkg.version;\n\n if (existingManifest !== null) {\n const { complete, missing } = verifyInstallComplete(targetDir, existingManifest);\n if (!complete) {\n console.log(` ${chalk.yellow('!')} Previous install (v${existingManifest.version}) is incomplete — ${missing.length} missing file(s). Re-installing.`);\n } else if (isAlreadyCurrent) {\n console.log(` ${chalk.dim(`Version ${pkg.version} already installed — upgrading in place`)}`);\n }\n }\n\n // Save any locally modified MAXSIM files before they get wiped\n saveLocalPatches(targetDir);\n\n // Clean up orphaned files from previous versions\n cleanupOrphanedFiles(targetDir);\n\n // Claude uses commands/maxsim/\n let spinner = ora({ text: 'Installing commands...', color: 'cyan' }).start();\n const commandsDir = path.join(targetDir, 'commands');\n fs.mkdirSync(commandsDir, { recursive: true });\n\n const maxsimSrc = path.join(src, 'commands', 'maxsim');\n const maxsimDest = path.join(commandsDir, 'maxsim');\n copyWithPathReplacement(maxsimSrc, maxsimDest, pathPrefix, explicitConfigDir, true);\n if (verifyInstalled(maxsimDest, 'commands/maxsim')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed commands/maxsim');\n } else {\n spinner.fail('Failed to install commands/maxsim');\n failures.push('commands/maxsim');\n }\n\n // Copy maxsim directory content (workflows, templates, references) with path replacement\n spinner = ora({ text: 'Installing workflows and templates...', color: 'cyan' }).start();\n const skillDest = path.join(targetDir, 'maxsim');\n const maxsimSubdirs = ['workflows', 'templates', 'references'];\n if (fs.existsSync(skillDest)) {\n fs.rmSync(skillDest, { recursive: true });\n }\n fs.mkdirSync(skillDest, { recursive: true });\n for (const subdir of maxsimSubdirs) {\n const subdirSrc = path.join(src, subdir);\n if (fs.existsSync(subdirSrc)) {\n const subdirDest = path.join(skillDest, subdir);\n copyWithPathReplacement(subdirSrc, subdirDest, pathPrefix, explicitConfigDir);\n }\n }\n if (verifyInstalled(skillDest, 'maxsim')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed maxsim');\n } else {\n spinner.fail('Failed to install maxsim');\n failures.push('maxsim');\n }\n\n // Copy agents to agents directory\n const agentsSrc = path.join(src, 'agents');\n if (fs.existsSync(agentsSrc)) {\n spinner = ora({ text: 'Installing agents...', color: 'cyan' }).start();\n const agentsDest = path.join(targetDir, 'agents');\n fs.mkdirSync(agentsDest, { recursive: true });\n\n // Remove old MAXSIM agents before copying new ones\n if (fs.existsSync(agentsDest)) {\n for (const file of fs.readdirSync(agentsDest)) {\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\n fs.unlinkSync(path.join(agentsDest, file));\n }\n }\n }\n\n const agentEntries = fs.readdirSync(agentsSrc, { withFileTypes: true });\n for (const entry of agentEntries) {\n if (entry.isFile() && entry.name.endsWith('.md')) {\n let content = fs.readFileSync(\n path.join(agentsSrc, entry.name),\n 'utf8',\n );\n const dirRegex = /~\\/\\.claude\\//g;\n content = content.replace(dirRegex, pathPrefix);\n content = processAttribution(content, getCommitAttribution(explicitConfigDir));\n fs.writeFileSync(path.join(agentsDest, entry.name), content);\n }\n }\n if (verifyInstalled(agentsDest, 'agents')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed agents');\n } else {\n spinner.fail('Failed to install agents');\n failures.push('agents');\n }\n }\n\n // Remove legacy agents/skills/ directory (skills moved to skills/ in v1.x)\n const legacySkillsDir = path.join(targetDir, 'agents', 'skills');\n if (fs.existsSync(legacySkillsDir)) {\n fs.rmSync(legacySkillsDir, { recursive: true });\n console.log(` ${chalk.green('\\u2713')} Removed legacy agents/skills/ directory`);\n }\n\n // Copy skills to skills/ directory\n const skillsSrc = path.join(src, 'skills');\n if (fs.existsSync(skillsSrc)) {\n spinner = ora({ text: 'Installing skills...', color: 'cyan' }).start();\n const skillsDest = path.join(targetDir, 'skills');\n\n // Remove old MAXSIM built-in skills before copying new ones (preserve user custom skills)\n if (fs.existsSync(skillsDest)) {\n for (const skill of builtInSkills) {\n const skillDir = path.join(skillsDest, skill);\n if (fs.existsSync(skillDir)) {\n fs.rmSync(skillDir, { recursive: true });\n }\n }\n }\n\n // Copy skills directory recursively\n fsExtra.copySync(skillsSrc, skillsDest, { overwrite: true });\n\n // Process path prefixes in skill files\n const skillEntries = fs.readdirSync(skillsDest, { withFileTypes: true });\n for (const entry of skillEntries) {\n if (entry.isDirectory()) {\n const skillMd = path.join(skillsDest, entry.name, 'SKILL.md');\n if (fs.existsSync(skillMd)) {\n let content = fs.readFileSync(skillMd, 'utf8');\n const dirRegex = /~\\/\\.claude\\//g;\n content = content.replace(dirRegex, pathPrefix);\n content = processAttribution(content, getCommitAttribution(explicitConfigDir));\n fs.writeFileSync(skillMd, content);\n }\n }\n }\n\n const installedSkillDirs = fs.readdirSync(skillsDest, { withFileTypes: true })\n .filter(e => e.isDirectory()).length;\n if (installedSkillDirs > 0) {\n spinner.succeed(chalk.green('\\u2713') + ` Installed ${installedSkillDirs} skills to skills/`);\n } else {\n spinner.fail('Failed to install skills');\n failures.push('skills');\n }\n }\n\n // Copy CHANGELOG.md\n const changelogSrc = path.join(src, '..', 'CHANGELOG.md');\n const changelogDest = path.join(targetDir, 'maxsim', 'CHANGELOG.md');\n if (fs.existsSync(changelogSrc)) {\n spinner = ora({ text: 'Installing CHANGELOG.md...', color: 'cyan' }).start();\n fs.copyFileSync(changelogSrc, changelogDest);\n if (verifyFileInstalled(changelogDest, 'CHANGELOG.md')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed CHANGELOG.md');\n } else {\n spinner.fail('Failed to install CHANGELOG.md');\n failures.push('CHANGELOG.md');\n }\n }\n\n // Copy CLAUDE.md\n const claudeMdSrc = path.join(src, 'CLAUDE.md');\n const claudeMdDest = path.join(targetDir, 'CLAUDE.md');\n if (fs.existsSync(claudeMdSrc)) {\n spinner = ora({ text: 'Installing CLAUDE.md...', color: 'cyan' }).start();\n fs.copyFileSync(claudeMdSrc, claudeMdDest);\n if (verifyFileInstalled(claudeMdDest, 'CLAUDE.md')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed CLAUDE.md');\n } else {\n spinner.fail('Failed to install CLAUDE.md');\n failures.push('CLAUDE.md');\n }\n }\n\n // Write VERSION file\n const versionDest = path.join(targetDir, 'maxsim', 'VERSION');\n fs.writeFileSync(versionDest, pkg.version);\n if (verifyFileInstalled(versionDest, 'VERSION')) {\n console.log(\n ` ${chalk.green('\\u2713')} Wrote VERSION (${pkg.version})`,\n );\n } else {\n failures.push('VERSION');\n }\n\n // Write package.json to force CommonJS mode for MAXSIM scripts\n const pkgJsonDest = path.join(targetDir, 'package.json');\n fs.writeFileSync(pkgJsonDest, '{\"type\":\"commonjs\"}\\n');\n console.log(\n ` ${chalk.green('\\u2713')} Wrote package.json (CommonJS mode)`,\n );\n\n // Install maxsim-tools.cjs binary\n const toolSrc = path.resolve(__dirname, 'cli.cjs');\n const binDir = path.join(targetDir, 'maxsim', 'bin');\n const toolDest = path.join(binDir, 'maxsim-tools.cjs');\n if (fs.existsSync(toolSrc)) {\n fs.mkdirSync(binDir, { recursive: true });\n fs.copyFileSync(toolSrc, toolDest);\n console.log(` ${chalk.green('\\u2713')} Installed maxsim-tools.cjs`);\n } else {\n console.warn(` ${chalk.yellow('!')} cli.cjs not found at ${toolSrc} — maxsim-tools.cjs not installed`);\n failures.push('maxsim-tools.cjs');\n }\n\n // Install mcp-server.cjs\n const mcpSrc = path.resolve(__dirname, 'mcp-server.cjs');\n const mcpDest = path.join(binDir, 'mcp-server.cjs');\n if (fs.existsSync(mcpSrc)) {\n fs.mkdirSync(binDir, { recursive: true });\n fs.copyFileSync(mcpSrc, mcpDest);\n console.log(` ${chalk.green('\\u2713')} Installed mcp-server.cjs`);\n } else {\n console.warn(` ${chalk.yellow('!')} mcp-server.cjs not found — MCP server not installed`);\n }\n\n // Install hooks\n installHookFiles(targetDir, isGlobal, failures);\n\n // Copy dashboard\n const dashboardSrc = path.resolve(__dirname, 'assets', 'dashboard');\n if (fs.existsSync(dashboardSrc)) {\n let networkMode = false;\n try {\n networkMode = await confirm({\n message: 'Allow dashboard to be accessible on your local network? (adds firewall rule, enables QR code)',\n default: false,\n });\n } catch {\n // Non-interactive terminal — default to false\n }\n\n spinner = ora({ text: 'Installing dashboard...', color: 'cyan' }).start();\n const dashboardDest = path.join(targetDir, 'dashboard');\n safeRmDir(dashboardDest);\n copyDirRecursive(dashboardSrc, dashboardDest);\n\n const dashboardConfigDest = path.join(targetDir, 'dashboard.json');\n const projectCwd = isGlobal ? targetDir : process.cwd();\n fs.writeFileSync(dashboardConfigDest, JSON.stringify({ projectCwd, networkMode }, null, 2) + '\\n');\n\n if (fs.existsSync(path.join(dashboardDest, 'server.js'))) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed dashboard');\n } else {\n spinner.succeed(chalk.green('\\u2713') + ' Installed dashboard (server.js not found in bundle)');\n }\n\n if (networkMode) {\n applyFirewallRule(3333);\n }\n }\n\n // Write .mcp.json for Claude Code MCP server auto-discovery\n const mcpJsonPath = isGlobal\n ? path.join(targetDir, '..', '.mcp.json')\n : path.join(process.cwd(), '.mcp.json');\n let mcpConfig: Record<string, unknown> = {};\n let skipMcpConfig = false;\n\n if (fs.existsSync(mcpJsonPath)) {\n // Back up existing .mcp.json before modification\n fs.copyFileSync(mcpJsonPath, mcpJsonPath + '.bak');\n\n try {\n mcpConfig = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));\n } catch {\n // Corrupted .mcp.json — warn user\n console.warn(` ${chalk.yellow('!')} .mcp.json is corrupted (invalid JSON). Backup saved to .mcp.json.bak`);\n let startFresh = true;\n try {\n startFresh = await confirm({\n message: '.mcp.json is corrupted. Start with a fresh config? (No = abort MCP setup)',\n default: true,\n });\n } catch {\n // Non-interactive — default to starting fresh\n }\n if (!startFresh) {\n console.log(` ${chalk.yellow('!')} Skipping .mcp.json configuration`);\n skipMcpConfig = true;\n }\n }\n }\n\n if (!skipMcpConfig) {\n const mcpServers = (mcpConfig.mcpServers as Record<string, unknown>) ?? {};\n mcpServers['maxsim'] = {\n command: 'node',\n args: ['.claude/maxsim/bin/mcp-server.cjs'],\n env: {},\n };\n mcpConfig.mcpServers = mcpServers;\n\n fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + '\\n', 'utf-8');\n console.log(` ${chalk.green('\\u2713')} Configured .mcp.json for MCP server auto-discovery`);\n }\n\n if (failures.length > 0) {\n console.error(\n `\\n ${chalk.yellow('Installation incomplete!')} Failed: ${failures.join(', ')}`,\n );\n process.exit(1);\n }\n\n // Write file manifest for future modification detection\n writeManifest(targetDir);\n console.log(\n ` ${chalk.green('\\u2713')} Wrote file manifest (${MANIFEST_NAME})`,\n );\n\n // Report any backed-up local patches\n reportLocalPatches(targetDir);\n\n // Configure statusline and hooks in settings.json\n const { settingsPath, settings, statuslineCommand } = configureSettingsHooks(targetDir, isGlobal);\n\n return { settingsPath, settings, statuslineCommand };\n}\n\n/**\n * Prompt for install location\n */\nasync function promptLocation(): Promise<boolean> {\n if (!process.stdin.isTTY) {\n console.log(\n chalk.yellow('Non-interactive terminal detected, defaulting to global install') + '\\n',\n );\n return true; // isGlobal\n }\n\n const globalPath = getGlobalDir(explicitConfigDir).replace(os.homedir(), '~');\n\n const choice = await select<'global' | 'local'>({\n message: 'Where would you like to install?',\n choices: [\n {\n name: 'Global ' + chalk.dim(`(${globalPath})`) + ' — available in all projects',\n value: 'global',\n },\n {\n name: 'Local ' + chalk.dim('(./.claude)') + ' — this project only',\n value: 'local',\n },\n ],\n });\n\n return choice === 'global';\n}\n\n/**\n * Prompt whether to enable Agent Teams (experimental feature)\n */\nasync function promptAgentTeams(): Promise<boolean> {\n console.log();\n console.log(chalk.cyan(' Agent Teams') + chalk.dim(' (experimental)'));\n console.log(chalk.dim(' Coordinate multiple Claude Code instances working in parallel.'));\n console.log(chalk.dim(' Enables CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS in settings.json.'));\n console.log();\n\n return confirm({\n message: 'Enable Agent Teams?',\n default: false,\n });\n}\n\n/**\n * Install MAXSIM for Claude Code\n */\nasync function installForClaude(\n isGlobal: boolean,\n isInteractive: boolean,\n): Promise<void> {\n const result = await install(isGlobal);\n\n let shouldInstallStatusline = false;\n if (result.settings) {\n shouldInstallStatusline = await handleStatusline(\n result.settings,\n isInteractive,\n forceStatusline,\n );\n }\n\n // Prompt for Agent Teams\n let enableAgentTeams = false;\n if (isInteractive) {\n enableAgentTeams = await promptAgentTeams();\n }\n\n // Apply Agent Teams setting\n if (enableAgentTeams && result.settings) {\n const env = (result.settings.env as Record<string, unknown>) ?? {};\n env['CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS'] = '1';\n result.settings.env = env;\n }\n\n finishInstall(\n result.settingsPath,\n result.settings,\n result.statuslineCommand,\n shouldInstallStatusline,\n isGlobal,\n );\n}\n\n// Main logic\n// Subcommand routing — intercept before install flow\nconst subcommand = argv._[0];\n\n(async () => {\n // Dashboard subcommand\n if (subcommand === 'dashboard') {\n await runDashboardSubcommand(argv);\n return;\n }\n\n // Skill management subcommands\n if (subcommand === 'skill-list' || subcommand === 'skill-install' || subcommand === 'skill-update') {\n const { cmdSkillList, cmdSkillInstall, cmdSkillUpdate } = await import('../core/skills.js');\n const { CliOutput, writeOutput, CliError } = await import('../core/core.js');\n const cwd = process.cwd();\n try {\n if (subcommand === 'skill-list') {\n cmdSkillList(cwd, false);\n } else if (subcommand === 'skill-install') {\n cmdSkillInstall(cwd, argv._[1] as string | undefined, false);\n } else if (subcommand === 'skill-update') {\n cmdSkillUpdate(cwd, argv._[1] as string | undefined, false);\n }\n } catch (thrown: unknown) {\n if (thrown instanceof CliOutput) {\n writeOutput(thrown);\n process.exit(0);\n }\n if (thrown instanceof CliError) {\n console.error('Error: ' + thrown.message);\n process.exit(1);\n }\n throw thrown;\n }\n return;\n }\n\n if (hasGlobal && hasLocal) {\n console.error(chalk.yellow('Cannot specify both --global and --local'));\n process.exit(1);\n } else if (explicitConfigDir && hasLocal) {\n console.error(chalk.yellow('Cannot use --config-dir with --local'));\n process.exit(1);\n } else if (hasUninstall) {\n if (!hasGlobal && !hasLocal) {\n console.error(chalk.yellow('--uninstall requires --global or --local'));\n process.exit(1);\n }\n uninstall(hasGlobal, explicitConfigDir);\n } else if (hasGlobal || hasLocal) {\n await installForClaude(hasGlobal, false);\n } else {\n if (!process.stdin.isTTY) {\n console.log(\n chalk.yellow('Non-interactive terminal detected, defaulting to global install') + '\\n',\n );\n await installForClaude(true, false);\n } else {\n const isGlobal = await promptLocation();\n await installForClaude(isGlobal, true);\n }\n }\n})().catch((err: unknown) => {\n if (err instanceof Error && err.message.includes('User force closed')) {\n // User pressed Ctrl+C during an @inquirer/prompts prompt — exit cleanly\n console.log('\\n' + chalk.yellow('Installation cancelled') + '\\n');\n process.exit(0);\n }\n console.error(chalk.red('Unexpected error:'), err);\n process.exit(1);\n});\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"install.cjs","names":["Stream","path","path","path","path","path","path","path","path","path","path","path","styles","process","os","tty","signals","processOk","kExitEmitter","global","ObjectDefineProperty","Emitter","SignalExitBase","signalExitWrap","SignalExitFallback","SignalExit","process","#process","#sigListeners","signals","#emitter","#hupSig","#originalProcessReallyExit","#originalProcessEmit","#loaded","#processEmit","#processReallyExit","process","process","spinners","tty","isUnicodeSupported","process","isUnicodeSupported","isFullWidth","isFullWidth","process","#activeCount","#realStart","#realStop","#stdin","#stdinWasPaused","#stdinWasRaw","#handleInputBound","#isInternalWrite","#deferRenderTimer","#tryRender","#getFullPrefixText","#getFullSuffixText","#options","process","#stream","#linesToClear","#frameIndex","#computeLineCountFrom","#spinner","isUnicodeSupported","cliSpinners","#id","#formatAffix","#lastFrameTime","#internalWrite","#hookedStreams","#hookedWrite","#hookStream","#stringifyChunk","#chunkTerminatesLine","#clearRenderDeferral","#scheduleRenderDeferral","#drainHandler","#buildOutputLine","#isDiscardingStdin","#installHook","#uninstallHook","logSymbols.success","logSymbols.error","logSymbols.warning","logSymbols.info","AsyncLocalStorage","AsyncResource","AsyncResource","process","NO_TRUNCATION","fastStringTruncatedWidth","ESC","stringWidth","#isTTY","#destSrc","#proxy","global","process","#process","#sigListeners","#emitter","#hupSig","#originalProcessReallyExit","#originalProcessEmit","#loaded","#processEmit","#processReallyExit","MuteStream","readline","onSignalExit","AsyncResource","path","os","fs","fs","path","os","path","path","fs","confirm","fs","crypto","path","path","fs","fs","path","path","os","fs","path","os","fs","confirm","select"],"sources":["../../../node_modules/universalify/index.js","../../../node_modules/graceful-fs/polyfills.js","../../../node_modules/graceful-fs/legacy-streams.js","../../../node_modules/graceful-fs/clone.js","../../../node_modules/graceful-fs/graceful-fs.js","../../../node_modules/fs-extra/lib/fs/index.js","../../../node_modules/fs-extra/lib/mkdirs/utils.js","../../../node_modules/fs-extra/lib/mkdirs/make-dir.js","../../../node_modules/fs-extra/lib/mkdirs/index.js","../../../node_modules/fs-extra/lib/path-exists/index.js","../../../node_modules/fs-extra/lib/util/utimes.js","../../../node_modules/fs-extra/lib/util/stat.js","../../../node_modules/fs-extra/lib/util/async.js","../../../node_modules/fs-extra/lib/copy/copy.js","../../../node_modules/fs-extra/lib/copy/copy-sync.js","../../../node_modules/fs-extra/lib/copy/index.js","../../../node_modules/fs-extra/lib/remove/index.js","../../../node_modules/fs-extra/lib/empty/index.js","../../../node_modules/fs-extra/lib/ensure/file.js","../../../node_modules/fs-extra/lib/ensure/link.js","../../../node_modules/fs-extra/lib/ensure/symlink-paths.js","../../../node_modules/fs-extra/lib/ensure/symlink-type.js","../../../node_modules/fs-extra/lib/ensure/symlink.js","../../../node_modules/fs-extra/lib/ensure/index.js","../../../node_modules/jsonfile/utils.js","../../../node_modules/jsonfile/index.js","../../../node_modules/fs-extra/lib/json/jsonfile.js","../../../node_modules/fs-extra/lib/output-file/index.js","../../../node_modules/fs-extra/lib/json/output-json.js","../../../node_modules/fs-extra/lib/json/output-json-sync.js","../../../node_modules/fs-extra/lib/json/index.js","../../../node_modules/fs-extra/lib/move/move.js","../../../node_modules/fs-extra/lib/move/move-sync.js","../../../node_modules/fs-extra/lib/move/index.js","../../../node_modules/fs-extra/lib/index.js","../../../node_modules/chalk/source/vendor/ansi-styles/index.js","../../../node_modules/chalk/source/vendor/supports-color/index.js","../../../node_modules/chalk/source/utilities.js","../../../node_modules/chalk/source/index.js","../../../node_modules/mimic-function/index.js","../../../node_modules/restore-cursor/node_modules/onetime/index.js","../../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/signals.js","../../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/index.js","../../../node_modules/restore-cursor/index.js","../../../node_modules/cli-cursor/index.js","../../../node_modules/cli-spinners/spinners.json","../../../node_modules/cli-spinners/index.js","../../../node_modules/yoctocolors/base.js","../../../node_modules/is-unicode-supported/index.js","../../../node_modules/log-symbols/symbols.js","../../../node_modules/ansi-regex/index.js","../../../node_modules/ora/node_modules/strip-ansi/index.js","../../../node_modules/get-east-asian-width/lookup-data.js","../../../node_modules/get-east-asian-width/utilities.js","../../../node_modules/get-east-asian-width/lookup.js","../../../node_modules/get-east-asian-width/index.js","../../../node_modules/ora/node_modules/string-width/index.js","../../../node_modules/is-interactive/index.js","../../../node_modules/stdin-discarder/index.js","../../../node_modules/ora/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/cli-width/index.js","../../../node_modules/fast-string-truncated-width/dist/utils.js","../../../node_modules/fast-string-truncated-width/dist/index.js","../../../node_modules/fast-string-width/dist/index.js","../../../node_modules/fast-wrap-ansi/lib/main.js","../../../node_modules/@inquirer/core/dist/lib/utils.js","../../../node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js","../../../node_modules/mute-stream/lib/index.js","../../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/signals.js","../../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/index.js","../../../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/create-prompt.js","../../../node_modules/@inquirer/core/dist/lib/Separator.js","../../../node_modules/@inquirer/confirm/dist/index.js","../../../node_modules/@inquirer/select/dist/index.js","../../../node_modules/minimist/index.js","../src/install/utils.ts","../src/install/shared.ts","../src/install/adapters.ts","../src/install/hooks.ts","../src/install/manifest.ts","../src/install/patches.ts","../src/install/copy.ts","../src/install/uninstall.ts","../src/install/index.ts"],"sourcesContent":["'use strict'\n\nexports.fromCallback = function (fn) {\n return Object.defineProperty(function (...args) {\n if (typeof args[args.length - 1] === 'function') fn.apply(this, args)\n else {\n return new Promise((resolve, reject) => {\n args.push((err, res) => (err != null) ? reject(err) : resolve(res))\n fn.apply(this, args)\n })\n }\n }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n return Object.defineProperty(function (...args) {\n const cb = args[args.length - 1]\n if (typeof cb !== 'function') return fn.apply(this, args)\n else {\n args.pop()\n fn.apply(this, args).then(r => cb(null, r), cb)\n }\n }, 'name', { value: fn.name })\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","'use strict'\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\n\nconst api = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'close',\n 'copyFile',\n 'cp',\n 'fchmod',\n 'fchown',\n 'fdatasync',\n 'fstat',\n 'fsync',\n 'ftruncate',\n 'futimes',\n 'glob',\n 'lchmod',\n 'lchown',\n 'lutimes',\n 'link',\n 'lstat',\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm',\n 'rmdir',\n 'stat',\n 'statfs',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile'\n].filter(key => {\n // Some commands are not available on some systems. Ex:\n // fs.cp was added in Node.js v16.7.0\n // fs.statfs was added in Node v19.6.0, v18.15.0\n // fs.glob was added in Node.js v22.0.0\n // fs.lchown is not available on at least some Linux\n return typeof fs[key] === 'function'\n})\n\n// Export cloned fs:\nObject.assign(exports, fs)\n\n// Universalify async methods:\napi.forEach(method => {\n exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n if (typeof callback === 'function') {\n return fs.exists(filename, callback)\n }\n return new Promise(resolve => {\n return fs.exists(filename, resolve)\n })\n}\n\n// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n if (typeof callback === 'function') {\n return fs.read(fd, buffer, offset, length, position, callback)\n }\n return new Promise((resolve, reject) => {\n fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffer })\n })\n })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.write(fd, buffer, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffer })\n })\n })\n}\n\n// Function signature is\n// s.readv(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.readv = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.readv(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffers })\n })\n })\n}\n\n// Function signature is\n// s.writev(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.writev = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.writev(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffers })\n })\n })\n}\n\n// fs.realpath.native sometimes not available if fs is monkey-patched\nif (typeof fs.realpath.native === 'function') {\n exports.realpath.native = u(fs.realpath.native)\n} else {\n process.emitWarning(\n 'fs.realpath.native is not a function. Is fs being monkey-patched?',\n 'Warning', 'fs-extra-WARN0003'\n )\n}\n","// Adapted from https://github.com/sindresorhus/make-dir\n// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'\nconst path = require('path')\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nmodule.exports.checkPath = function checkPath (pth) {\n if (process.platform === 'win32') {\n const pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''))\n\n if (pathHasInvalidWinCharacters) {\n const error = new Error(`Path contains invalid characters: ${pth}`)\n error.code = 'EINVAL'\n throw error\n }\n }\n}\n","'use strict'\nconst fs = require('../fs')\nconst { checkPath } = require('./utils')\n\nconst getMode = options => {\n const defaults = { mode: 0o777 }\n if (typeof options === 'number') return options\n return ({ ...defaults, ...options }).mode\n}\n\nmodule.exports.makeDir = async (dir, options) => {\n checkPath(dir)\n\n return fs.mkdir(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n\nmodule.exports.makeDirSync = (dir, options) => {\n checkPath(dir)\n\n return fs.mkdirSync(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst { makeDir: _makeDir, makeDirSync } = require('./make-dir')\nconst makeDir = u(_makeDir)\n\nmodule.exports = {\n mkdirs: makeDir,\n mkdirsSync: makeDirSync,\n // alias\n mkdirp: makeDir,\n mkdirpSync: makeDirSync,\n ensureDir: makeDir,\n ensureDirSync: makeDirSync\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\n\nfunction pathExists (path) {\n return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n pathExists: u(pathExists),\n pathExistsSync: fs.existsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function utimesMillis (path, atime, mtime) {\n // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)\n const fd = await fs.open(path, 'r+')\n\n let closeErr = null\n\n try {\n await fs.futimes(fd, atime, mtime)\n } finally {\n try {\n await fs.close(fd)\n } catch (e) {\n closeErr = e\n }\n }\n\n if (closeErr) {\n throw closeErr\n }\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n const fd = fs.openSync(path, 'r+')\n fs.futimesSync(fd, atime, mtime)\n return fs.closeSync(fd)\n}\n\nmodule.exports = {\n utimesMillis: u(utimesMillis),\n utimesMillisSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst u = require('universalify').fromPromise\n\nfunction getStats (src, dest, opts) {\n const statFunc = opts.dereference\n ? (file) => fs.stat(file, { bigint: true })\n : (file) => fs.lstat(file, { bigint: true })\n return Promise.all([\n statFunc(src),\n statFunc(dest).catch(err => {\n if (err.code === 'ENOENT') return null\n throw err\n })\n ]).then(([srcStat, destStat]) => ({ srcStat, destStat }))\n}\n\nfunction getStatsSync (src, dest, opts) {\n let destStat\n const statFunc = opts.dereference\n ? (file) => fs.statSync(file, { bigint: true })\n : (file) => fs.lstatSync(file, { bigint: true })\n const srcStat = statFunc(src)\n try {\n destStat = statFunc(dest)\n } catch (err) {\n if (err.code === 'ENOENT') return { srcStat, destStat: null }\n throw err\n }\n return { srcStat, destStat }\n}\n\nasync function checkPaths (src, dest, funcName, opts) {\n const { srcStat, destStat } = await getStats(src, dest, opts)\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return { srcStat, destStat }\n}\n\nfunction checkPathsSync (src, dest, funcName, opts) {\n const { srcStat, destStat } = getStatsSync(src, dest, opts)\n\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nasync function checkParentPaths (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n\n let destStat\n try {\n destStat = await fs.stat(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return checkParentPaths(src, srcStat, destParent, funcName)\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n let destStat\n try {\n destStat = fs.statSync(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\nfunction areIdentical (srcStat, destStat) {\n // stat.dev can be 0n on windows when node version >= 22.x.x\n return destStat.ino !== undefined && destStat.dev !== undefined && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n return srcArr.every((cur, i) => destArr[i] === cur)\n}\n\nfunction errMsg (src, dest, funcName) {\n return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n // checkPaths\n checkPaths: u(checkPaths),\n checkPathsSync,\n // checkParent\n checkParentPaths: u(checkParentPaths),\n checkParentPathsSync,\n // Misc\n isSrcSubdir,\n areIdentical\n}\n","'use strict'\n\n// https://github.com/jprichardson/node-fs-extra/issues/1056\n// Performing parallel operations on each item of an async iterator is\n// surprisingly hard; you need to have handlers in place to avoid getting an\n// UnhandledPromiseRejectionWarning.\n// NOTE: This function does not presently handle return values, only errors\nasync function asyncIteratorConcurrentProcess (iterator, fn) {\n const promises = []\n for await (const item of iterator) {\n promises.push(\n fn(item).then(\n () => null,\n (err) => err ?? new Error('unknown error')\n )\n )\n }\n await Promise.all(\n promises.map((promise) =>\n promise.then((possibleErr) => {\n if (possibleErr !== null) throw possibleErr\n })\n )\n )\n}\n\nmodule.exports = {\n asyncIteratorConcurrentProcess\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { mkdirs } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { utimesMillis } = require('../util/utimes')\nconst stat = require('../util/stat')\nconst { asyncIteratorConcurrentProcess } = require('../util/async')\n\nasync function copy (src, dest, opts = {}) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0001'\n )\n }\n\n const { srcStat, destStat } = await stat.checkPaths(src, dest, 'copy', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'copy')\n\n const include = await runFilter(src, dest, opts)\n\n if (!include) return\n\n // check if the parent of dest exists, and create it if it doesn't exist\n const destParent = path.dirname(dest)\n const dirExists = await pathExists(destParent)\n if (!dirExists) {\n await mkdirs(destParent)\n }\n\n await getStatsAndPerformCopy(destStat, src, dest, opts)\n}\n\nasync function runFilter (src, dest, opts) {\n if (!opts.filter) return true\n return opts.filter(src, dest)\n}\n\nasync function getStatsAndPerformCopy (destStat, src, dest, opts) {\n const statFn = opts.dereference ? fs.stat : fs.lstat\n const srcStat = await statFn(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n\n if (\n srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()\n ) return onFile(srcStat, destStat, src, dest, opts)\n\n if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nasync function onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n\n if (opts.overwrite) {\n await fs.unlink(dest)\n return copyFile(srcStat, src, dest, opts)\n }\n if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nasync function copyFile (srcStat, src, dest, opts) {\n await fs.copyFile(src, dest)\n if (opts.preserveTimestamps) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcStat.mode)) {\n await makeFileWritable(dest, srcStat.mode)\n }\n\n // Set timestamps and mode correspondingly\n\n // Note that The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = await fs.stat(src)\n await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n }\n\n return fs.chmod(dest, srcStat.mode)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return fs.chmod(dest, srcMode | 0o200)\n}\n\nasync function onDir (srcStat, destStat, src, dest, opts) {\n // the dest directory might not exist, create it\n if (!destStat) {\n await fs.mkdir(dest)\n }\n\n // iterate through the files in the current directory to copy everything\n await asyncIteratorConcurrentProcess(await fs.opendir(src), async (item) => {\n const srcItem = path.join(src, item.name)\n const destItem = path.join(dest, item.name)\n\n const include = await runFilter(srcItem, destItem, opts)\n // only copy the item if it matches the filter function\n if (include) {\n const { destStat } = await stat.checkPaths(srcItem, destItem, 'copy', opts)\n // If the item is a copyable file, `getStatsAndPerformCopy` will copy it\n // If the item is a directory, `getStatsAndPerformCopy` will call `onDir` recursively\n await getStatsAndPerformCopy(destStat, srcItem, destItem, opts)\n }\n })\n\n if (!destStat) {\n await fs.chmod(dest, srcStat.mode)\n }\n}\n\nasync function onLink (destStat, src, dest, opts) {\n let resolvedSrc = await fs.readlink(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n if (!destStat) {\n return fs.symlink(resolvedSrc, dest)\n }\n\n let resolvedDest = null\n try {\n resolvedDest = await fs.readlink(dest)\n } catch (e) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (e.code === 'EINVAL' || e.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest)\n throw e\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n // If both symlinks resolve to the same target, they are still distinct symlinks\n // that can be copied/overwritten. Only check subdirectory constraints when\n // the resolved paths are different.\n if (resolvedSrc !== resolvedDest) {\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // do not copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n }\n\n // copy the link\n await fs.unlink(dest)\n return fs.symlink(resolvedSrc, dest)\n}\n\nmodule.exports = copy\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirsSync = require('../mkdirs').mkdirsSync\nconst utimesMillisSync = require('../util/utimes').utimesMillisSync\nconst stat = require('../util/stat')\n\nfunction copySync (src, dest, opts) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts = opts || {}\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0002'\n )\n }\n\n const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n if (opts.filter && !opts.filter(src, dest)) return\n const destParent = path.dirname(dest)\n if (!fs.existsSync(destParent)) mkdirsSync(destParent)\n return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n const srcStat = statSync(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n else if (srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n if (opts.overwrite) {\n fs.unlinkSync(dest)\n return copyFile(srcStat, src, dest, opts)\n } else if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n fs.copyFileSync(src, dest)\n if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)\n return setDestMode(dest, srcStat.mode)\n}\n\nfunction handleTimestamps (srcMode, src, dest) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)\n return setDestTimestamps(src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return setDestMode(dest, srcMode | 0o200)\n}\n\nfunction setDestMode (dest, srcMode) {\n return fs.chmodSync(dest, srcMode)\n}\n\nfunction setDestTimestamps (src, dest) {\n // The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = fs.statSync(src)\n return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)\n return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts) {\n fs.mkdirSync(dest)\n copyDir(src, dest, opts)\n return setDestMode(dest, srcMode)\n}\n\nfunction copyDir (src, dest, opts) {\n const dir = fs.opendirSync(src)\n\n try {\n let dirent\n\n while ((dirent = dir.readSync()) !== null) {\n copyDirItem(dirent.name, src, dest, opts)\n }\n } finally {\n dir.closeSync()\n }\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n if (opts.filter && !opts.filter(srcItem, destItem)) return\n const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts)\n return getStats(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n let resolvedSrc = fs.readlinkSync(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n\n if (!destStat) {\n return fs.symlinkSync(resolvedSrc, dest)\n } else {\n let resolvedDest\n try {\n resolvedDest = fs.readlinkSync(dest)\n } catch (err) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n throw err\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n // If both symlinks resolve to the same target, they are still distinct symlinks\n // that can be copied/overwritten. Only check subdirectory constraints when\n // the resolved paths are different.\n if (resolvedSrc !== resolvedDest) {\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // prevent copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n }\n return copyLink(resolvedSrc, dest)\n }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n fs.unlinkSync(dest)\n return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n copy: u(require('./copy')),\n copySync: require('./copy-sync')\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst u = require('universalify').fromCallback\n\nfunction remove (path, callback) {\n fs.rm(path, { recursive: true, force: true }, callback)\n}\n\nfunction removeSync (path) {\n fs.rmSync(path, { recursive: true, force: true })\n}\n\nmodule.exports = {\n remove: u(remove),\n removeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst remove = require('../remove')\n\nconst emptyDir = u(async function emptyDir (dir) {\n let items\n try {\n items = await fs.readdir(dir)\n } catch {\n return mkdir.mkdirs(dir)\n }\n\n return Promise.all(items.map(item => remove.remove(path.join(dir, item))))\n})\n\nfunction emptyDirSync (dir) {\n let items\n try {\n items = fs.readdirSync(dir)\n } catch {\n return mkdir.mkdirsSync(dir)\n }\n\n items.forEach(item => {\n item = path.join(dir, item)\n remove.removeSync(item)\n })\n}\n\nmodule.exports = {\n emptyDirSync,\n emptydirSync: emptyDirSync,\n emptyDir,\n emptydir: emptyDir\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\n\nasync function createFile (file) {\n let stats\n try {\n stats = await fs.stat(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n\n let dirStats = null\n try {\n dirStats = await fs.stat(dir)\n } catch (err) {\n // if the directory doesn't exist, make it\n if (err.code === 'ENOENT') {\n await mkdir.mkdirs(dir)\n await fs.writeFile(file, '')\n return\n } else {\n throw err\n }\n }\n\n if (dirStats.isDirectory()) {\n await fs.writeFile(file, '')\n } else {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n await fs.readdir(dir)\n }\n}\n\nfunction createFileSync (file) {\n let stats\n try {\n stats = fs.statSync(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n try {\n if (!fs.statSync(dir).isDirectory()) {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n fs.readdirSync(dir)\n }\n } catch (err) {\n // If the stat call above failed because the directory doesn't exist, create it\n if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir)\n else throw err\n }\n\n fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n createFile: u(createFile),\n createFileSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { areIdentical } = require('../util/stat')\n\nasync function createLink (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = await fs.lstat(dstpath)\n } catch {\n // ignore error\n }\n\n let srcStat\n try {\n srcStat = await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n if (dstStat && areIdentical(srcStat, dstStat)) return\n\n const dir = path.dirname(dstpath)\n\n const dirExists = await pathExists(dir)\n\n if (!dirExists) {\n await mkdir.mkdirs(dir)\n }\n\n await fs.link(srcpath, dstpath)\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = fs.lstatSync(dstpath)\n } catch {}\n\n try {\n const srcStat = fs.lstatSync(srcpath)\n if (dstStat && areIdentical(srcStat, dstStat)) return\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n const dir = path.dirname(dstpath)\n const dirExists = fs.existsSync(dir)\n if (dirExists) return fs.linkSync(srcpath, dstpath)\n mkdir.mkdirsSync(dir)\n\n return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n createLink: u(createLink),\n createLinkSync\n}\n","'use strict'\n\nconst path = require('path')\nconst fs = require('../fs')\nconst { pathExists } = require('../path-exists')\n\nconst u = require('universalify').fromPromise\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nasync function symlinkPaths (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n\n const exists = await pathExists(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n const exists = fs.existsSync(srcpath)\n if (!exists) throw new Error('absolute srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n const exists = fs.existsSync(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n const srcExists = fs.existsSync(srcpath)\n if (!srcExists) throw new Error('relative srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nmodule.exports = {\n symlinkPaths: u(symlinkPaths),\n symlinkPathsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function symlinkType (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = await fs.lstat(srcpath)\n } catch {\n return 'file'\n }\n\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = fs.lstatSync(srcpath)\n } catch {\n return 'file'\n }\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n symlinkType: u(symlinkType),\n symlinkTypeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\n\nconst { mkdirs, mkdirsSync } = require('../mkdirs')\n\nconst { symlinkPaths, symlinkPathsSync } = require('./symlink-paths')\nconst { symlinkType, symlinkTypeSync } = require('./symlink-type')\n\nconst { pathExists } = require('../path-exists')\n\nconst { areIdentical } = require('../util/stat')\n\nasync function createSymlink (srcpath, dstpath, type) {\n let stats\n try {\n stats = await fs.lstat(dstpath)\n } catch { }\n\n if (stats && stats.isSymbolicLink()) {\n const [srcStat, dstStat] = await Promise.all([\n fs.stat(srcpath),\n fs.stat(dstpath)\n ])\n\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = await symlinkPaths(srcpath, dstpath)\n srcpath = relative.toDst\n const toType = await symlinkType(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n\n if (!(await pathExists(dir))) {\n await mkdirs(dir)\n }\n\n return fs.symlink(srcpath, dstpath, toType)\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n let stats\n try {\n stats = fs.lstatSync(dstpath)\n } catch { }\n if (stats && stats.isSymbolicLink()) {\n const srcStat = fs.statSync(srcpath)\n const dstStat = fs.statSync(dstpath)\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = symlinkPathsSync(srcpath, dstpath)\n srcpath = relative.toDst\n type = symlinkTypeSync(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n const exists = fs.existsSync(dir)\n if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n mkdirsSync(dir)\n return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n createSymlink: u(createSymlink),\n createSymlinkSync\n}\n","'use strict'\n\nconst { createFile, createFileSync } = require('./file')\nconst { createLink, createLinkSync } = require('./link')\nconst { createSymlink, createSymlinkSync } = require('./symlink')\n\nmodule.exports = {\n // file\n createFile,\n createFileSync,\n ensureFile: createFile,\n ensureFileSync: createFileSync,\n // link\n createLink,\n createLinkSync,\n ensureLink: createLink,\n ensureLinkSync: createLinkSync,\n // symlink\n createSymlink,\n createSymlinkSync,\n ensureSymlink: createSymlink,\n ensureSymlinkSync: createSymlinkSync\n}\n","function stringify (obj, { EOL = '\\n', finalEOL = true, replacer = null, spaces } = {}) {\n const EOF = finalEOL ? EOL : ''\n const str = JSON.stringify(obj, replacer, spaces)\n\n return str.replace(/\\n/g, EOL) + EOF\n}\n\nfunction stripBom (content) {\n // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n if (Buffer.isBuffer(content)) content = content.toString('utf8')\n return content.replace(/^\\uFEFF/, '')\n}\n\nmodule.exports = { stringify, stripBom }\n","let _fs\ntry {\n _fs = require('graceful-fs')\n} catch (_) {\n _fs = require('fs')\n}\nconst universalify = require('universalify')\nconst { stringify, stripBom } = require('./utils')\n\nasync function _readFile (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n let data = await universalify.fromCallback(fs.readFile)(file, options)\n\n data = stripBom(data)\n\n let obj\n try {\n obj = JSON.parse(data, options ? options.reviver : null)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n\n return obj\n}\n\nconst readFile = universalify.fromPromise(_readFile)\n\nfunction readFileSync (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n try {\n let content = fs.readFileSync(file, options)\n content = stripBom(content)\n return JSON.parse(content, options.reviver)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n}\n\nasync function _writeFile (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n\n await universalify.fromCallback(fs.writeFile)(file, str, options)\n}\n\nconst writeFile = universalify.fromPromise(_writeFile)\n\nfunction writeFileSync (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n // not sure if fs.writeFileSync returns anything, but just in case\n return fs.writeFileSync(file, str, options)\n}\n\n// NOTE: do not change this export format; required for ESM compat\n// see https://github.com/jprichardson/node-jsonfile/pull/162 for details\nmodule.exports = {\n readFile,\n readFileSync,\n writeFile,\n writeFileSync\n}\n","'use strict'\n\nconst jsonFile = require('jsonfile')\n\nmodule.exports = {\n // jsonfile exports\n readJson: jsonFile.readFile,\n readJsonSync: jsonFile.readFileSync,\n writeJson: jsonFile.writeFile,\n writeJsonSync: jsonFile.writeFileSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nasync function outputFile (file, data, encoding = 'utf-8') {\n const dir = path.dirname(file)\n\n if (!(await pathExists(dir))) {\n await mkdir.mkdirs(dir)\n }\n\n return fs.writeFile(file, data, encoding)\n}\n\nfunction outputFileSync (file, ...args) {\n const dir = path.dirname(file)\n if (!fs.existsSync(dir)) {\n mkdir.mkdirsSync(dir)\n }\n\n fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n outputFile: u(outputFile),\n outputFileSync\n}\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFile } = require('../output-file')\n\nasync function outputJson (file, data, options = {}) {\n const str = stringify(data, options)\n\n await outputFile(file, str, options)\n}\n\nmodule.exports = outputJson\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFileSync } = require('../output-file')\n\nfunction outputJsonSync (file, data, options) {\n const str = stringify(data, options)\n\n outputFileSync(file, str, options)\n}\n\nmodule.exports = outputJsonSync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst jsonFile = require('./jsonfile')\n\njsonFile.outputJson = u(require('./output-json'))\njsonFile.outputJsonSync = require('./output-json-sync')\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { copy } = require('../copy')\nconst { remove } = require('../remove')\nconst { mkdirp } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst stat = require('../util/stat')\n\nasync function move (src, dest, opts = {}) {\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, 'move', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'move')\n\n // If the parent of dest is not root, make sure it exists before proceeding\n const destParent = path.dirname(dest)\n const parsedParentPath = path.parse(destParent)\n if (parsedParentPath.root !== destParent) {\n await mkdirp(destParent)\n }\n\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nasync function doRename (src, dest, overwrite, isChangingCase) {\n if (!isChangingCase) {\n if (overwrite) {\n await remove(dest)\n } else if (await pathExists(dest)) {\n throw new Error('dest already exists.')\n }\n }\n\n try {\n // Try w/ rename first, and try copy + remove if EXDEV\n await fs.rename(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') {\n throw err\n }\n await moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nasync function moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n\n await copy(src, dest, opts)\n return remove(src)\n}\n\nmodule.exports = move\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copySync = require('../copy').copySync\nconst removeSync = require('../remove').removeSync\nconst mkdirpSync = require('../mkdirs').mkdirpSync\nconst stat = require('../util/stat')\n\nfunction moveSync (src, dest, opts) {\n opts = opts || {}\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'move')\n if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nfunction isParentRoot (dest) {\n const parent = path.dirname(dest)\n const parsedPath = path.parse(parent)\n return parsedPath.root === parent\n}\n\nfunction doRename (src, dest, overwrite, isChangingCase) {\n if (isChangingCase) return rename(src, dest, overwrite)\n if (overwrite) {\n removeSync(dest)\n return rename(src, dest, overwrite)\n }\n if (fs.existsSync(dest)) throw new Error('dest already exists.')\n return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n try {\n fs.renameSync(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') throw err\n return moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n copySync(src, dest, opts)\n return removeSync(src)\n}\n\nmodule.exports = moveSync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n move: u(require('./move')),\n moveSync: require('./move-sync')\n}\n","'use strict'\n\nmodule.exports = {\n // Export promiseified graceful-fs:\n ...require('./fs'),\n // Export extra methods:\n ...require('./copy'),\n ...require('./empty'),\n ...require('./ensure'),\n ...require('./json'),\n ...require('./mkdirs'),\n ...require('./move'),\n ...require('./output-file'),\n ...require('./path-exists'),\n ...require('./remove')\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 process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable\n\t\t&& toDescriptor.enumerable === fromDescriptor.enumerable\n\t\t&& toDescriptor.configurable === fromDescriptor.configurable\n\t\t&& (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tconst {writable, enumerable, configurable} = toStringDescriptor; // We destructue to avoid a potential `get` descriptor.\n\tObject.defineProperty(to, 'toString', {value: newToString, writable, enumerable, configurable});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFunction from 'mimic-function';\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = undefined;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFunction(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nonetime.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\nexport default onetime;\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 = [];\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM');\nif (process.platform !== 'win32') {\n signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n );\n}\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n//# sourceMappingURL=signals.js.map","// 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 };\nconst processOk = (process) => !!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';\nconst kExitEmitter = Symbol.for('signal-exit emitter');\nconst global = globalThis;\nconst ObjectDefineProperty = Object.defineProperty.bind(Object);\n// teeny special purpose ee\nclass Emitter {\n emitted = {\n afterExit: false,\n exit: false,\n };\n listeners = {\n afterExit: [],\n exit: [],\n };\n count = 0;\n id = Math.random();\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 on(ev, fn) {\n this.listeners[ev].push(fn);\n }\n removeListener(ev, fn) {\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 }\n else {\n list.splice(i, 1);\n }\n }\n emit(ev, code, signal) {\n if (this.emitted[ev]) {\n return false;\n }\n this.emitted[ev] = true;\n let ret = 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}\nclass SignalExitBase {\n}\nconst signalExitWrap = (handler) => {\n return {\n onExit(cb, opts) {\n return handler.onExit(cb, opts);\n },\n load() {\n return handler.load();\n },\n unload() {\n return handler.unload();\n },\n };\n};\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => { };\n }\n load() { }\n unload() { }\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;\n #originalProcessEmit;\n #originalProcessReallyExit;\n #sigListeners = {};\n #loaded = false;\n constructor(process) {\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;\n if (typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number') {\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)\n process.kill(process.pid, s);\n /* c8 ignore stop */\n }\n };\n }\n this.#originalProcessReallyExit = process.reallyExit;\n this.#originalProcessEmit = process.emit;\n }\n onExit(cb, opts) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => { };\n }\n /* c8 ignore stop */\n if (this.#loaded === false) {\n this.load();\n }\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit';\n this.#emitter.on(ev, cb);\n return () => {\n this.#emitter.removeListener(ev, cb);\n if (this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0) {\n this.unload();\n }\n };\n }\n load() {\n if (this.#loaded) {\n return;\n }\n this.#loaded = true;\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 for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig];\n if (fn)\n this.#process.on(sig, fn);\n }\n catch (_) { }\n }\n this.#process.emit = (ev, ...a) => {\n return this.#processEmit(ev, ...a);\n };\n this.#process.reallyExit = (code) => {\n return this.#processReallyExit(code);\n };\n }\n unload() {\n if (!this.#loaded) {\n return;\n }\n this.#loaded = false;\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 }\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 #processReallyExit(code) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0;\n }\n this.#process.exitCode = code || 0;\n /* c8 ignore stop */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);\n }\n #processEmit(ev, ...args) {\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 }\n else {\n return og.call(this.#process, ev, ...args);\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 */\nonExit, \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 */\nload, \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 */\nunload, } = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback());\n//# sourceMappingURL=index.js.map","import process from 'node:process';\nimport onetime from 'onetime';\nimport {onExit} from 'signal-exit';\n\nconst terminal = process.stderr.isTTY\n\t? process.stderr\n\t: (process.stdout.isTTY ? process.stdout : undefined);\n\nconst restoreCursor = terminal ? onetime(() => {\n\tonExit(() => {\n\t\tterminal.write('\\u001B[?25h');\n\t}, {alwaysLast: true});\n}) : () => {};\n\nexport default restoreCursor;\n","import process from 'node:process';\nimport restoreCursor from 'restore-cursor';\n\nlet isHidden = false;\n\nconst cliCursor = {};\n\ncliCursor.show = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\tisHidden = false;\n\twritableStream.write('\\u001B[?25h');\n};\n\ncliCursor.hide = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\trestoreCursor();\n\tisHidden = true;\n\twritableStream.write('\\u001B[?25l');\n};\n\ncliCursor.toggle = (force, writableStream) => {\n\tif (force !== undefined) {\n\t\tisHidden = force;\n\t}\n\n\tif (isHidden) {\n\t\tcliCursor.show(writableStream);\n\t} else {\n\t\tcliCursor.hide(writableStream);\n\t}\n};\n\nexport default cliCursor;\n","","import spinners from './spinners.json' with {type: 'json'};\n\nexport default spinners;\n\nconst spinnersList = Object.keys(spinners);\n\nexport function randomSpinner() {\n\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\tconst spinnerName = spinnersList[randomIndex];\n\treturn spinners[spinnerName];\n}\n","import tty from 'node:tty';\n\n// eslint-disable-next-line no-warning-comments\n// TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)\n// Lots of optionals here to support Deno.\nconst hasColors = tty?.WriteStream?.prototype?.hasColors?.() ?? false;\n\nconst format = (open, close) => {\n\tif (!hasColors) {\n\t\treturn input => input;\n\t}\n\n\tconst openCode = `\\u001B[${open}m`;\n\tconst closeCode = `\\u001B[${close}m`;\n\n\treturn input => {\n\t\tconst string = input + ''; // eslint-disable-line no-implicit-coercion -- This is faster.\n\t\tlet index = string.indexOf(closeCode);\n\n\t\tif (index === -1) {\n\t\t\t// Note: Intentionally not using string interpolation for performance reasons.\n\t\t\treturn openCode + string + closeCode;\n\t\t}\n\n\t\t// Handle nested colors.\n\n\t\t// We could have done this, but it's too slow (as of Node.js 22).\n\t\t// return openCode + string.replaceAll(closeCode, (close === 22 ? closeCode : '') + openCode) + closeCode;\n\n\t\tlet result = openCode;\n\t\tlet lastIndex = 0;\n\n\t\t// SGR 22 resets both bold (1) and dim (2). When we encounter a nested\n\t\t// close for styles that use 22, we need to re-open the outer style.\n\t\tconst reopenOnNestedClose = close === 22;\n\t\tconst replaceCode = (reopenOnNestedClose ? closeCode : '') + openCode;\n\n\t\twhile (index !== -1) {\n\t\t\tresult += string.slice(lastIndex, index) + replaceCode;\n\t\t\tlastIndex = index + closeCode.length;\n\t\t\tindex = string.indexOf(closeCode, lastIndex);\n\t\t}\n\n\t\tresult += string.slice(lastIndex) + closeCode;\n\n\t\treturn result;\n\t};\n};\n\nexport const reset = format(0, 0);\nexport const bold = format(1, 22);\nexport const dim = format(2, 22);\nexport const italic = format(3, 23);\nexport const underline = format(4, 24);\nexport const overline = format(53, 55);\nexport const inverse = format(7, 27);\nexport const hidden = format(8, 28);\nexport const strikethrough = format(9, 29);\n\nexport const black = format(30, 39);\nexport const red = format(31, 39);\nexport const green = format(32, 39);\nexport const yellow = format(33, 39);\nexport const blue = format(34, 39);\nexport const magenta = format(35, 39);\nexport const cyan = format(36, 39);\nexport const white = format(37, 39);\nexport const gray = format(90, 39);\n\nexport const bgBlack = format(40, 49);\nexport const bgRed = format(41, 49);\nexport const bgGreen = format(42, 49);\nexport const bgYellow = format(43, 49);\nexport const bgBlue = format(44, 49);\nexport const bgMagenta = format(45, 49);\nexport const bgCyan = format(46, 49);\nexport const bgWhite = format(47, 49);\nexport const bgGray = format(100, 49);\n\nexport const redBright = format(91, 39);\nexport const greenBright = format(92, 39);\nexport const yellowBright = format(93, 39);\nexport const blueBright = format(94, 39);\nexport const magentaBright = format(95, 39);\nexport const cyanBright = format(96, 39);\nexport const whiteBright = format(97, 39);\n\nexport const bgRedBright = format(101, 49);\nexport const bgGreenBright = format(102, 49);\nexport const bgYellowBright = format(103, 49);\nexport const bgBlueBright = format(104, 49);\nexport const bgMagentaBright = format(105, 49);\nexport const bgCyanBright = format(106, 49);\nexport const bgWhiteBright = format(107, 49);\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tconst {env} = process;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (process.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import {\n\tblue,\n\tgreen,\n\tyellow,\n\tred,\n} from 'yoctocolors';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nconst _isUnicodeSupported = isUnicodeSupported();\n\nexport const info = blue(_isUnicodeSupported ? 'ℹ' : 'i');\nexport const success = green(_isUnicodeSupported ? '✔' : '√');\nexport const warning = yellow(_isUnicodeSupported ? '⚠' : '‼');\nexport const error = red(_isUnicodeSupported ? '✖' : '×');\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 by scripts/build.js\n\n// prettier-ignore\nconst ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];\n\n// prettier-ignore\nconst fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];\n\n// prettier-ignore\nconst halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];\n\n// prettier-ignore\nconst narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];\n\n// prettier-ignore\nconst wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];\n\nexport {ambiguousRanges, fullwidthRanges, halfwidthRanges, narrowRanges, wideRanges};\n","/**\nBinary search on a sorted flat array of [start, end] pairs.\n\n@param {number[]} ranges - Flat array of inclusive [start, end] range pairs, e.g. [0, 5, 10, 20].\n@param {number} codePoint - The value to search for.\n@returns {boolean} Whether the value falls within any of the ranges.\n*/\nexport const isInRange = (ranges, codePoint) => {\n\tlet low = 0;\n\tlet high = Math.floor(ranges.length / 2) - 1;\n\twhile (low <= high) {\n\t\tconst mid = Math.floor((low + high) / 2);\n\t\tconst i = mid * 2;\n\t\tif (codePoint < ranges[i]) {\n\t\t\thigh = mid - 1;\n\t\t} else if (codePoint > ranges[i + 1]) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n","import {\n\tambiguousRanges,\n\tfullwidthRanges,\n\thalfwidthRanges,\n\tnarrowRanges,\n\twideRanges,\n} from './lookup-data.js';\nimport {isInRange} from './utilities.js';\n\nconst minimumAmbiguousCodePoint = ambiguousRanges[0];\nconst maximumAmbiguousCodePoint = ambiguousRanges.at(-1);\nconst minimumFullWidthCodePoint = fullwidthRanges[0];\nconst maximumFullWidthCodePoint = fullwidthRanges.at(-1);\nconst minimumHalfWidthCodePoint = halfwidthRanges[0];\nconst maximumHalfWidthCodePoint = halfwidthRanges.at(-1);\nconst minimumNarrowCodePoint = narrowRanges[0];\nconst maximumNarrowCodePoint = narrowRanges.at(-1);\nconst minimumWideCodePoint = wideRanges[0];\nconst maximumWideCodePoint = wideRanges.at(-1);\n\nconst commonCjkCodePoint = 0x4E_00;\nconst [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);\n\n// Use a hot-path range so common `isWide` calls can skip binary search.\n// The range containing U+4E00 covers common CJK ideographs;\n// fallback to the largest range for resilience to Unicode table changes.\nfunction findWideFastPathRange(ranges) {\n\tlet fastPathStart = ranges[0];\n\tlet fastPathEnd = ranges[1];\n\n\tfor (let index = 0; index < ranges.length; index += 2) {\n\t\tconst start = ranges[index];\n\t\tconst end = ranges[index + 1];\n\n\t\tif (\n\t\t\tcommonCjkCodePoint >= start\n\t\t\t&& commonCjkCodePoint <= end\n\t\t) {\n\t\t\treturn [start, end];\n\t\t}\n\n\t\tif ((end - start) > (fastPathEnd - fastPathStart)) {\n\t\t\tfastPathStart = start;\n\t\t\tfastPathEnd = end;\n\t\t}\n\t}\n\n\treturn [fastPathStart, fastPathEnd];\n}\n\nexport const isAmbiguous = codePoint => {\n\tif (\n\t\tcodePoint < minimumAmbiguousCodePoint\n\t\t|| codePoint > maximumAmbiguousCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(ambiguousRanges, codePoint);\n};\n\nexport const isFullWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumFullWidthCodePoint\n\t\t|| codePoint > maximumFullWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(fullwidthRanges, codePoint);\n};\n\nconst isHalfWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumHalfWidthCodePoint\n\t\t|| codePoint > maximumHalfWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(halfwidthRanges, codePoint);\n};\n\nconst isNarrow = codePoint => {\n\tif (\n\t\tcodePoint < minimumNarrowCodePoint\n\t\t|| codePoint > maximumNarrowCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(narrowRanges, codePoint);\n};\n\nexport const isWide = codePoint => {\n\tif (\n\t\tcodePoint >= wideFastPathStart\n\t\t&& codePoint <= wideFastPathEnd\n\t) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tcodePoint < minimumWideCodePoint\n\t\t|| codePoint > maximumWideCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(wideRanges, codePoint);\n};\n\nexport function getCategory(codePoint) {\n\tif (isAmbiguous(codePoint)) {\n\t\treturn 'ambiguous';\n\t}\n\n\tif (isFullWidth(codePoint)) {\n\t\treturn 'fullwidth';\n\t}\n\n\tif (isHalfWidth(codePoint)) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (isNarrow(codePoint)) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(codePoint)) {\n\t\treturn 'wide';\n\t}\n\n\treturn 'neutral';\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","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\n\n/**\nLogic:\n- Segment graphemes to match how terminals render clusters.\n- Width rules:\n\t1. Skip non-printing clusters (Default_Ignorable, Control, pure Mark, lone Surrogates). Tabs are ignored by design.\n\t2. RGI emoji clusters (\\p{RGI_Emoji}) are double-width.\n\t3. Minimally-qualified/unqualified emoji clusters (ZWJ sequences with 2+ Extended_Pictographic, or keycap sequences) are double-width.\n\t4. Otherwise use East Asian Width of the cluster's first visible code point, and add widths for trailing Halfwidth/Fullwidth Forms within the same cluster (e.g., dakuten/handakuten/prolonged sound mark).\n*/\n\nconst segmenter = new Intl.Segmenter();\n\n// Whole-cluster zero-width\nconst zeroWidthClusterRegex = /^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Mark}|\\p{Surrogate})+$/v;\n\n// Pick the base scalar if the cluster starts with Prepend/Format/Marks\nconst leadingNonPrintingRegex = /^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Mark}\\p{Surrogate}]+/v;\n\n// RGI emoji sequences\nconst rgiEmojiRegex = /^\\p{RGI_Emoji}$/v;\n\n// Detect minimally-qualified/unqualified emoji sequences (missing VS16 but still render as double-width)\nconst unqualifiedKeycapRegex = /^[\\d#*]\\u20E3$/;\nconst extendedPictographicRegex = /\\p{Extended_Pictographic}/gu;\n\nfunction isDoubleWidthNonRgiEmojiSequence(segment) {\n\t// Real emoji clusters are < 30 chars; guard against pathological input\n\tif (segment.length > 50) {\n\t\treturn false;\n\t}\n\n\tif (unqualifiedKeycapRegex.test(segment)) {\n\t\treturn true;\n\t}\n\n\t// ZWJ sequences with 2+ Extended_Pictographic\n\tif (segment.includes('\\u200D')) {\n\t\tconst pictographics = segment.match(extendedPictographicRegex);\n\t\treturn pictographics !== null && pictographics.length >= 2;\n\t}\n\n\treturn false;\n}\n\nfunction baseVisible(segment) {\n\treturn segment.replace(leadingNonPrintingRegex, '');\n}\n\nfunction isZeroWidthCluster(segment) {\n\treturn zeroWidthClusterRegex.test(segment);\n}\n\nfunction trailingHalfwidthWidth(segment, eastAsianWidthOptions) {\n\tlet extra = 0;\n\tif (segment.length > 1) {\n\t\tfor (const char of segment.slice(1)) {\n\t\t\tif (char >= '\\uFF00' && char <= '\\uFFEF') {\n\t\t\t\textra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn extra;\n}\n\nexport default function stringWidth(input, options = {}) {\n\tif (typeof input !== 'string' || input.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tlet string = input;\n\n\t// Avoid calling stripAnsi when there are no ANSI escape sequences (ESC = 0x1B, CSI = 0x9B)\n\tif (!countAnsiEscapeCodes && (string.includes('\\u001B') || string.includes('\\u009B'))) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\t// Fast path: printable ASCII (0x20–0x7E) needs no segmenter, regex, or EAW lookup — width equals length.\n\tif (/^[\\u0020-\\u007E]*$/.test(string)) {\n\t\treturn string.length;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment} of segmenter.segment(string)) {\n\t\t// Zero-width / non-printing clusters\n\t\tif (isZeroWidthCluster(segment)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Emoji width logic\n\t\tif (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Everything else: EAW of the cluster’s first visible scalar\n\t\tconst codePoint = baseVisible(segment).codePointAt(0);\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\n\t\t// Add width for trailing Halfwidth and Fullwidth Forms (e.g., ゙, ゚, ー)\n\t\twidth += trailingHalfwidthWidth(segment, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","export default function isInteractive({stream = process.stdout} = {}) {\n\treturn Boolean(\n\t\tstream && stream.isTTY &&\n\t\tprocess.env.TERM !== 'dumb' &&\n\t\t!('CI' in process.env)\n\t);\n}\n","import process from 'node:process';\n\nconst ASCII_ETX_CODE = 0x03; // Ctrl+C\n\nclass StdinDiscarder {\n\t#activeCount = 0;\n\t#stdin;\n\t#stdinWasPaused = false;\n\t#stdinWasRaw = false;\n\t#handleInputBound = chunk => {\n\t\tif (!chunk?.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst code = typeof chunk === 'string' ? chunk.codePointAt(0) : chunk[0];\n\t\tif (code === ASCII_ETX_CODE) {\n\t\t\tif (process.listenerCount('SIGINT') > 0) {\n\t\t\t\tprocess.emit('SIGINT');\n\t\t\t} else {\n\t\t\t\tprocess.kill(process.pid, 'SIGINT');\n\t\t\t}\n\t\t}\n\t};\n\n\tstart() {\n\t\tthis.#activeCount++;\n\t\tif (this.#activeCount === 1) {\n\t\t\tthis.#realStart();\n\t\t}\n\t}\n\n\tstop() {\n\t\tif (this.#activeCount === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (--this.#activeCount === 0) {\n\t\t\tthis.#realStop();\n\t\t}\n\t}\n\n\t#realStart() {\n\t\tconst {stdin} = process;\n\n\t\tif (process.platform === 'win32' || !stdin?.isTTY || typeof stdin.setRawMode !== 'function') {\n\t\t\tthis.#stdin = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#stdin = stdin;\n\t\tthis.#stdinWasPaused = stdin.isPaused();\n\t\tthis.#stdinWasRaw = Boolean(stdin.isRaw);\n\n\t\tstdin.setRawMode(true);\n\t\tstdin.prependListener('data', this.#handleInputBound);\n\n\t\tif (this.#stdinWasPaused) {\n\t\t\tstdin.resume();\n\t\t}\n\t}\n\n\t#realStop() {\n\t\tif (!this.#stdin) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst stdin = this.#stdin;\n\n\t\tstdin.off('data', this.#handleInputBound);\n\n\t\tif (stdin.isTTY) {\n\t\t\tstdin.setRawMode?.(this.#stdinWasRaw);\n\t\t}\n\n\t\tif (this.#stdinWasPaused) {\n\t\t\tstdin.pause();\n\t\t}\n\n\t\tthis.#stdin = undefined;\n\t\tthis.#stdinWasPaused = false;\n\t\tthis.#stdinWasRaw = false;\n\t}\n}\n\nconst stdinDiscarder = new StdinDiscarder();\n\nexport default Object.freeze(stdinDiscarder);\n","import process from 'node:process';\nimport {stripVTControlCharacters} from 'node:util';\nimport chalk from 'chalk';\nimport cliCursor from 'cli-cursor';\nimport cliSpinners from 'cli-spinners';\nimport logSymbols from 'log-symbols';\nimport stringWidth from 'string-width';\nimport isInteractive from 'is-interactive';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport stdinDiscarder from 'stdin-discarder';\n\n// Constants\nconst RENDER_DEFERRAL_TIMEOUT = 200; // Milliseconds to wait before re-rendering after partial chunk write\nconst SYNCHRONIZED_OUTPUT_ENABLE = '\\u001B[?2026h';\nconst SYNCHRONIZED_OUTPUT_DISABLE = '\\u001B[?2026l';\n\n// Global state for concurrent spinner detection\nconst activeHooksPerStream = new Map(); // Stream → ora instance\n\nclass Ora {\n\t#linesToClear = 0;\n\t#frameIndex = -1;\n\t#lastFrameTime = 0;\n\t#options;\n\t#spinner;\n\t#stream;\n\t#id;\n\t#hookedStreams = new Map();\n\t#isInternalWrite = false;\n\t#drainHandler;\n\t#deferRenderTimer;\n\t#isDiscardingStdin = false;\n\tcolor;\n\n\t// Helper to execute writes while preventing hook recursion\n\t#internalWrite(fn) {\n\t\tthis.#isInternalWrite = true;\n\t\ttry {\n\t\t\treturn fn();\n\t\t} finally {\n\t\t\tthis.#isInternalWrite = false;\n\t\t}\n\t}\n\n\t// Helper to render if still spinning\n\t#tryRender() {\n\t\tif (this.isSpinning) {\n\t\t\tthis.render();\n\t\t}\n\t}\n\n\t#stringifyChunk(chunk, encoding) {\n\t\tif (chunk === undefined || chunk === null) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (typeof chunk === 'string') {\n\t\t\treturn chunk;\n\t\t}\n\n\t\t/* eslint-disable n/prefer-global/buffer */\n\t\tif (Buffer.isBuffer(chunk) || ArrayBuffer.isView(chunk)) {\n\t\t\tconst normalizedEncoding = (typeof encoding === 'string' && encoding && encoding !== 'buffer') ? encoding : 'utf8';\n\t\t\treturn Buffer.from(chunk).toString(normalizedEncoding);\n\t\t}\n\t\t/* eslint-enable n/prefer-global/buffer */\n\n\t\treturn String(chunk);\n\t}\n\n\t#chunkTerminatesLine(chunkString) {\n\t\tif (!chunkString) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst lastCharacter = chunkString.at(-1);\n\t\treturn lastCharacter === '\\n' || lastCharacter === '\\r';\n\t}\n\n\t#scheduleRenderDeferral() {\n\t\t// If already deferred, don't reset timer - let it complete\n\t\tif (this.#deferRenderTimer) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#deferRenderTimer = setTimeout(() => {\n\t\t\tthis.#deferRenderTimer = undefined;\n\n\t\t\tif (this.isSpinning) {\n\t\t\t\tthis.#tryRender();\n\t\t\t}\n\t\t}, RENDER_DEFERRAL_TIMEOUT);\n\n\t\tif (typeof this.#deferRenderTimer?.unref === 'function') {\n\t\t\tthis.#deferRenderTimer.unref();\n\t\t}\n\t}\n\n\t#clearRenderDeferral() {\n\t\tif (this.#deferRenderTimer) {\n\t\t\tclearTimeout(this.#deferRenderTimer);\n\t\t\tthis.#deferRenderTimer = undefined;\n\t\t}\n\t}\n\n\t// Helper to build complete line with symbol, text, prefix, and suffix\n\t#buildOutputLine(symbol, text, prefixText, suffixText) {\n\t\tconst fullPrefixText = this.#getFullPrefixText(prefixText, ' ');\n\t\tconst separatorText = symbol ? ' ' : '';\n\t\tconst fullText = (typeof text === 'string') ? separatorText + text : '';\n\t\tconst fullSuffixText = this.#getFullSuffixText(suffixText, ' ');\n\t\treturn fullPrefixText + symbol + fullText + fullSuffixText;\n\t}\n\n\tconstructor(options) {\n\t\tif (typeof options === 'string') {\n\t\t\toptions = {\n\t\t\t\ttext: options,\n\t\t\t};\n\t\t}\n\n\t\tthis.#options = {\n\t\t\tcolor: 'cyan',\n\t\t\tstream: process.stderr,\n\t\t\tdiscardStdin: true,\n\t\t\thideCursor: true,\n\t\t\t...options,\n\t\t};\n\n\t\t// Public\n\t\tthis.color = this.#options.color;\n\n\t\tthis.#stream = this.#options.stream;\n\n\t\t// Normalize isEnabled and isSilent into options\n\t\tif (typeof this.#options.isEnabled !== 'boolean') {\n\t\t\tthis.#options.isEnabled = isInteractive({stream: this.#stream});\n\t\t}\n\n\t\tif (typeof this.#options.isSilent !== 'boolean') {\n\t\t\tthis.#options.isSilent = false;\n\t\t}\n\n\t\t// Set *after* `this.#stream`.\n\t\t// Store original interval before spinner setter clears it\n\t\tconst userInterval = this.#options.interval;\n\t\t// It's important that these use the public setters.\n\t\tthis.spinner = this.#options.spinner;\n\t\tthis.#options.interval = userInterval;\n\t\tthis.text = this.#options.text;\n\t\tthis.prefixText = this.#options.prefixText;\n\t\tthis.suffixText = this.#options.suffixText;\n\t\tthis.indent = this.#options.indent;\n\n\t\tif (process.env.NODE_ENV === 'test') {\n\t\t\tthis._stream = this.#stream;\n\t\t\tthis._isEnabled = this.#options.isEnabled;\n\n\t\t\tObject.defineProperty(this, '_linesToClear', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#linesToClear;\n\t\t\t\t},\n\t\t\t\tset(newValue) {\n\t\t\t\t\tthis.#linesToClear = newValue;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_frameIndex', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#frameIndex;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_lineCount', {\n\t\t\t\tget() {\n\t\t\t\t\tconst columns = this.#stream.columns ?? 80;\n\t\t\t\t\tconst prefixText = typeof this.#options.prefixText === 'function' ? '' : this.#options.prefixText;\n\t\t\t\t\tconst suffixText = typeof this.#options.suffixText === 'function' ? '' : this.#options.suffixText;\n\t\t\t\t\tconst fullPrefixText = (typeof prefixText === 'string' && prefixText !== '') ? prefixText + ' ' : '';\n\t\t\t\t\tconst fullSuffixText = (typeof suffixText === 'string' && suffixText !== '') ? ' ' + suffixText : '';\n\t\t\t\t\tconst spinnerChar = '-';\n\t\t\t\t\tconst fullText = ' '.repeat(this.#options.indent) + fullPrefixText + spinnerChar + (typeof this.#options.text === 'string' ? ' ' + this.#options.text : '') + fullSuffixText;\n\t\t\t\t\treturn this.#computeLineCountFrom(fullText, columns);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tget indent() {\n\t\treturn this.#options.indent;\n\t}\n\n\tset indent(indent = 0) {\n\t\tif (!(indent >= 0 && Number.isInteger(indent))) {\n\t\t\tthrow new Error('The `indent` option must be an integer from 0 and up');\n\t\t}\n\n\t\tthis.#options.indent = indent;\n\t}\n\n\tget interval() {\n\t\treturn this.#options.interval ?? this.#spinner.interval ?? 100;\n\t}\n\n\tget spinner() {\n\t\treturn this.#spinner;\n\t}\n\n\tset spinner(spinner) {\n\t\tthis.#frameIndex = -1;\n\t\tthis.#options.interval = undefined;\n\n\t\tif (typeof spinner === 'object') {\n\t\t\tif (!Array.isArray(spinner.frames) || spinner.frames.length === 0 || spinner.frames.some(frame => typeof frame !== 'string')) {\n\t\t\t\tthrow new Error('The given spinner must have a non-empty `frames` array of strings');\n\t\t\t}\n\n\t\t\tif (spinner.interval !== undefined && !(Number.isInteger(spinner.interval) && spinner.interval > 0)) {\n\t\t\t\tthrow new Error('`spinner.interval` must be a positive integer if provided');\n\t\t\t}\n\n\t\t\tthis.#spinner = spinner;\n\t\t} else if (!isUnicodeSupported()) {\n\t\t\tthis.#spinner = cliSpinners.line;\n\t\t} else if (spinner === undefined) {\n\t\t\t// Set default spinner\n\t\t\tthis.#spinner = cliSpinners.dots;\n\t\t} else if (spinner !== 'default' && cliSpinners[spinner]) {\n\t\t\tthis.#spinner = cliSpinners[spinner];\n\t\t} else {\n\t\t\tthrow new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);\n\t\t}\n\t}\n\n\tget text() {\n\t\treturn this.#options.text;\n\t}\n\n\tset text(value = '') {\n\t\tthis.#options.text = value;\n\t}\n\n\tget prefixText() {\n\t\treturn this.#options.prefixText;\n\t}\n\n\tset prefixText(value = '') {\n\t\tthis.#options.prefixText = value;\n\t}\n\n\tget suffixText() {\n\t\treturn this.#options.suffixText;\n\t}\n\n\tset suffixText(value = '') {\n\t\tthis.#options.suffixText = value;\n\t}\n\n\tget isSpinning() {\n\t\treturn this.#id !== undefined;\n\t}\n\n\t#formatAffix(value, separator, placeBefore = false) {\n\t\tconst resolved = typeof value === 'function' ? value() : value;\n\t\tif (typeof resolved === 'string' && resolved !== '') {\n\t\t\treturn placeBefore ? (separator + resolved) : (resolved + separator);\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#getFullPrefixText(prefixText = this.#options.prefixText, postfix = ' ') {\n\t\treturn this.#formatAffix(prefixText, postfix, false);\n\t}\n\n\t#getFullSuffixText(suffixText = this.#options.suffixText, prefix = ' ') {\n\t\treturn this.#formatAffix(suffixText, prefix, true);\n\t}\n\n\t#computeLineCountFrom(text, columns) {\n\t\tlet count = 0;\n\t\tfor (const line of stripVTControlCharacters(text).split('\\n')) {\n\t\t\tcount += Math.max(1, Math.ceil(stringWidth(line) / columns));\n\t\t}\n\n\t\treturn count;\n\t}\n\n\tget isEnabled() {\n\t\treturn this.#options.isEnabled && !this.#options.isSilent;\n\t}\n\n\tset isEnabled(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isEnabled` option must be a boolean');\n\t\t}\n\n\t\tthis.#options.isEnabled = value;\n\t}\n\n\tget isSilent() {\n\t\treturn this.#options.isSilent;\n\t}\n\n\tset isSilent(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isSilent` option must be a boolean');\n\t\t}\n\n\t\tthis.#options.isSilent = value;\n\t}\n\n\tframe() {\n\t\t// Only advance frame if enough time has passed (throttle to interval)\n\t\tconst now = Date.now();\n\t\tif (this.#frameIndex === -1 || now - this.#lastFrameTime >= this.interval) {\n\t\t\tthis.#frameIndex = (this.#frameIndex + 1) % this.#spinner.frames.length;\n\t\t\tthis.#lastFrameTime = now;\n\t\t}\n\n\t\tconst {frames} = this.#spinner;\n\t\tlet frame = frames[this.#frameIndex];\n\n\t\tif (this.color) {\n\t\t\tframe = chalk[this.color](frame);\n\t\t}\n\n\t\tconst fullPrefixText = this.#getFullPrefixText(this.#options.prefixText, ' ');\n\t\tconst fullText = typeof this.text === 'string' ? ' ' + this.text : '';\n\t\tconst fullSuffixText = this.#getFullSuffixText(this.#options.suffixText, ' ');\n\n\t\treturn fullPrefixText + frame + fullText + fullSuffixText;\n\t}\n\n\tclear() {\n\t\tif (!this.isEnabled || !this.#stream.isTTY) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Protect cursor control methods (cursorTo, moveCursor, clearLine) which internally call stream.write\n\t\tthis.#internalWrite(() => {\n\t\t\tthis.#stream.cursorTo(0);\n\n\t\t\tfor (let index = 0; index < this.#linesToClear; index++) {\n\t\t\t\tif (index > 0) {\n\t\t\t\t\tthis.#stream.moveCursor(0, -1);\n\t\t\t\t}\n\n\t\t\t\tthis.#stream.clearLine(1);\n\t\t\t}\n\n\t\t\tif (this.#options.indent) {\n\t\t\t\tthis.#stream.cursorTo(this.#options.indent);\n\t\t\t}\n\t\t});\n\n\t\tthis.#linesToClear = 0;\n\n\t\treturn this;\n\t}\n\n\t// Helper to hook a single stream\n\t#hookStream(stream) {\n\t\tif (!stream || this.#hookedStreams.has(stream) || !stream.isTTY || typeof stream.write !== 'function') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Detect concurrent spinners\n\t\tif (activeHooksPerStream.has(stream)) {\n\t\t\tconsole.warn('[ora] Multiple concurrent spinners detected. This may cause visual corruption. Use one spinner at a time.');\n\t\t}\n\n\t\tconst originalWrite = stream.write;\n\t\tthis.#hookedStreams.set(stream, originalWrite);\n\t\tactiveHooksPerStream.set(stream, this);\n\t\tstream.write = (chunk, encoding, callback) => this.#hookedWrite(stream, originalWrite, chunk, encoding, callback);\n\t}\n\n\t/**\n\tIntercept stream writes while spinner is active to handle external writes cleanly without visual corruption.\n\tHooks process stdio streams and the active spinner stream so console.log(), console.error(), and direct writes stay tidy.\n\t*/\n\t#installHook() {\n\t\tif (!this.isEnabled || this.#hookedStreams.size > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst streamsToHook = new Set([this.#stream, process.stdout, process.stderr]);\n\n\t\tfor (const stream of streamsToHook) {\n\t\t\tthis.#hookStream(stream);\n\t\t}\n\t}\n\n\t#uninstallHook() {\n\t\tfor (const [stream, originalWrite] of this.#hookedStreams) {\n\t\t\tstream.write = originalWrite;\n\t\t\tif (activeHooksPerStream.get(stream) === this) {\n\t\t\t\tactiveHooksPerStream.delete(stream);\n\t\t\t}\n\t\t}\n\n\t\tthis.#hookedStreams.clear();\n\t}\n\n\t// eslint-disable-next-line max-params -- Need stream and originalWrite for multi-stream support\n\t#hookedWrite(stream, originalWrite, chunk, encoding, callback) {\n\t\t// Handle both write(chunk, encoding, callback) and write(chunk, callback) signatures\n\t\tif (typeof encoding === 'function') {\n\t\t\tcallback = encoding;\n\t\t\tencoding = undefined;\n\t\t}\n\n\t\t// Pass through our own internal writes (spinner rendering, cursor control)\n\t\tif (this.#isInternalWrite) {\n\t\t\treturn originalWrite.call(stream, chunk, encoding, callback);\n\t\t}\n\n\t\t// External write detected - clear spinner, write content, re-render if appropriate\n\t\tthis.clear();\n\n\t\tconst chunkString = this.#stringifyChunk(chunk, encoding);\n\t\tconst chunkTerminatesLine = this.#chunkTerminatesLine(chunkString);\n\n\t\tconst writeResult = originalWrite.call(stream, chunk, encoding, callback);\n\n\t\t// Schedule or clear render deferral based on chunk content\n\t\tif (chunkTerminatesLine) {\n\t\t\tthis.#clearRenderDeferral();\n\t\t} else if (chunkString.length > 0) {\n\t\t\tthis.#scheduleRenderDeferral();\n\t\t}\n\n\t\t// Re-render spinner below the new output if still spinning and not deferred\n\t\tif (this.isSpinning && !this.#deferRenderTimer) {\n\t\t\tthis.render();\n\t\t}\n\n\t\treturn writeResult;\n\t}\n\n\trender() {\n\t\tif (!this.isEnabled || this.#drainHandler || this.#deferRenderTimer) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst useSynchronizedOutput = this.#stream.isTTY;\n\t\tlet shouldDisableSynchronizedOutput = false;\n\n\t\ttry {\n\t\t\tif (useSynchronizedOutput) {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_ENABLE));\n\t\t\t\tshouldDisableSynchronizedOutput = true;\n\t\t\t}\n\n\t\t\tthis.clear();\n\n\t\t\tlet frameContent = this.frame();\n\t\t\tconst columns = this.#stream.columns ?? 80;\n\t\t\tconst actualLineCount = this.#computeLineCountFrom(frameContent, columns);\n\n\t\t\t// If content would exceed viewport height, truncate it to prevent garbage\n\t\t\tconst consoleHeight = this.#stream.rows;\n\t\t\tif (consoleHeight && consoleHeight > 1 && actualLineCount > consoleHeight) {\n\t\t\t\tconst lines = frameContent.split('\\n');\n\t\t\t\tconst maxLines = consoleHeight - 1; // Reserve one line for truncation message\n\t\t\t\tframeContent = [...lines.slice(0, maxLines), '... (content truncated to fit terminal)'].join('\\n');\n\t\t\t}\n\n\t\t\tconst canContinue = this.#internalWrite(() => this.#stream.write(frameContent));\n\n\t\t\t// Handle backpressure - pause rendering if stream buffer is full\n\t\t\tif (canContinue === false && this.#stream.isTTY) {\n\t\t\t\tthis.#drainHandler = () => {\n\t\t\t\t\tthis.#drainHandler = undefined;\n\t\t\t\t\tthis.#tryRender();\n\t\t\t\t};\n\n\t\t\t\tthis.#stream.once('drain', this.#drainHandler);\n\t\t\t}\n\n\t\t\tthis.#linesToClear = this.#computeLineCountFrom(frameContent, columns);\n\t\t} finally {\n\t\t\tif (shouldDisableSynchronizedOutput) {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_DISABLE));\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tstart(text) {\n\t\tif (text) {\n\t\t\tthis.text = text;\n\t\t}\n\n\t\tif (this.isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this.isEnabled) {\n\t\t\tconst symbol = this.text ? '-' : '';\n\t\t\tconst line = ' '.repeat(this.#options.indent) + this.#buildOutputLine(symbol, this.text, this.#options.prefixText, this.#options.suffixText);\n\n\t\t\tif (line.trim() !== '') {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(line + '\\n'));\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.isSpinning) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.hide(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY) {\n\t\t\tstdinDiscarder.start();\n\t\t\tthis.#isDiscardingStdin = true;\n\t\t}\n\n\t\tthis.#installHook();\n\t\tthis.render();\n\t\tthis.#id = setInterval(this.render.bind(this), this.interval);\n\n\t\treturn this;\n\t}\n\n\tstop() {\n\t\tclearInterval(this.#id);\n\t\tthis.#id = undefined;\n\t\tthis.#frameIndex = -1;\n\t\tthis.#lastFrameTime = 0;\n\n\t\tthis.#clearRenderDeferral();\n\t\tthis.#uninstallHook();\n\n\t\t// Clean up drain handler if it exists\n\t\tif (this.#drainHandler) {\n\t\t\tthis.#stream.removeListener('drain', this.#drainHandler);\n\t\t\tthis.#drainHandler = undefined;\n\t\t}\n\n\t\tif (this.isEnabled) {\n\t\t\tthis.clear();\n\t\t\tif (this.#options.hideCursor) {\n\t\t\t\tcliCursor.show(this.#stream);\n\t\t\t}\n\t\t}\n\n\t\tif (this.#isDiscardingStdin) {\n\t\t\tthis.#isDiscardingStdin = false;\n\t\t\tstdinDiscarder.stop();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsucceed(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.success, text});\n\t}\n\n\tfail(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.error, text});\n\t}\n\n\twarn(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.warning, text});\n\t}\n\n\tinfo(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.info, text});\n\t}\n\n\tstopAndPersist(options = {}) {\n\t\tif (this.isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst symbol = options.symbol ?? ' ';\n\t\tconst text = options.text ?? this.text;\n\t\tconst prefixText = options.prefixText ?? this.#options.prefixText;\n\t\tconst suffixText = options.suffixText ?? this.#options.suffixText;\n\n\t\tconst textToWrite = this.#buildOutputLine(symbol, text, prefixText, suffixText) + '\\n';\n\n\t\tthis.stop();\n\t\tthis.#internalWrite(() => this.#stream.write(textToWrite));\n\n\t\treturn this;\n\t}\n}\n\nexport default function ora(options) {\n\treturn new Ora(options);\n}\n\nexport async function oraPromise(action, options) {\n\tconst actionIsFunction = typeof action === 'function';\n\tconst actionIsPromise = typeof action.then === 'function';\n\n\tif (!actionIsFunction && !actionIsPromise) {\n\t\tthrow new TypeError('Parameter `action` must be a Function or a Promise');\n\t}\n\n\tconst {successText, failText} = typeof options === 'object'\n\t\t? options\n\t\t: {successText: undefined, failText: undefined};\n\n\tconst spinner = ora(options).start();\n\n\ttry {\n\t\tconst promise = actionIsFunction ? action(spinner) : action;\n\t\tconst result = await promise;\n\n\t\tspinner.succeed(successText === undefined\n\t\t\t? undefined\n\t\t\t: (typeof successText === 'string' ? successText : successText(result)));\n\n\t\treturn result;\n\t} catch (error) {\n\t\tspinner.fail(failText === undefined\n\t\t\t? undefined\n\t\t\t: (typeof failText === 'string' ? failText : failText(error)));\n\n\t\tthrow error;\n\t}\n}\n\nexport {default as spinners} from 'cli-spinners';\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","'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","/* MAIN */\nconst getCodePointsLength = (() => {\n const SURROGATE_PAIR_RE = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n return (input) => {\n let surrogatePairsNr = 0;\n SURROGATE_PAIR_RE.lastIndex = 0;\n while (SURROGATE_PAIR_RE.test(input)) {\n surrogatePairsNr += 1;\n }\n return input.length - surrogatePairsNr;\n };\n})();\nconst isFullWidth = (x) => {\n return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6;\n};\nconst isWideNotCJKTNotEmoji = (x) => {\n return x === 0x231B || x === 0x2329 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD;\n};\n/* EXPORT */\nexport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji };\n","/* IMPORT */\nimport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji } from './utils.js';\n/* HELPERS */\nconst ANSI_RE = /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\\u001b\\]8;[^;]*;.*?(?:\\u0007|\\u001b\\u005c)/y;\nconst CONTROL_RE = /[\\x00-\\x08\\x0A-\\x1F\\x7F-\\x9F]{1,1000}/y;\nconst CJKT_WIDE_RE = /(?:(?![\\uFF61-\\uFF9F\\uFF00-\\uFFEF])[\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}\\p{Script=Hangul}\\p{Script=Tangut}]){1,1000}/yu;\nconst TAB_RE = /\\t{1,1000}/y;\nconst EMOJI_RE = /[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*/yu;\nconst LATIN_RE = /(?:[\\x20-\\x7E\\xA0-\\xFF](?!\\uFE0F)){1,1000}/y;\nconst MODIFIER_RE = /\\p{M}+/gu;\nconst NO_TRUNCATION = { limit: Infinity, ellipsis: '' };\n/* MAIN */\nconst getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => {\n /* CONSTANTS */\n const LIMIT = truncationOptions.limit ?? Infinity;\n const ELLIPSIS = truncationOptions.ellipsis ?? '';\n const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0);\n const ANSI_WIDTH = 0;\n const CONTROL_WIDTH = widthOptions.controlWidth ?? 0;\n const TAB_WIDTH = widthOptions.tabWidth ?? 8;\n const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2;\n const FULL_WIDTH_WIDTH = 2;\n const REGULAR_WIDTH = widthOptions.regularWidth ?? 1;\n const WIDE_WIDTH = widthOptions.wideWidth ?? FULL_WIDTH_WIDTH;\n const PARSE_BLOCKS = [\n [LATIN_RE, REGULAR_WIDTH],\n [ANSI_RE, ANSI_WIDTH],\n [CONTROL_RE, CONTROL_WIDTH],\n [TAB_RE, TAB_WIDTH],\n [EMOJI_RE, EMOJI_WIDTH],\n [CJKT_WIDE_RE, WIDE_WIDTH],\n ];\n /* STATE */\n let indexPrev = 0;\n let index = 0;\n let length = input.length;\n let lengthExtra = 0;\n let truncationEnabled = false;\n let truncationIndex = length;\n let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH);\n let unmatchedStart = 0;\n let unmatchedEnd = 0;\n let width = 0;\n let widthExtra = 0;\n /* PARSE LOOP */\n outer: while (true) {\n /* UNMATCHED */\n if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) {\n const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index);\n lengthExtra = 0;\n for (const char of unmatched.replaceAll(MODIFIER_RE, '')) {\n const codePoint = char.codePointAt(0) || 0;\n if (isFullWidth(codePoint)) {\n widthExtra = FULL_WIDTH_WIDTH;\n }\n else if (isWideNotCJKTNotEmoji(codePoint)) {\n widthExtra = WIDE_WIDTH;\n }\n else {\n widthExtra = REGULAR_WIDTH;\n }\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra);\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n lengthExtra += char.length;\n width += widthExtra;\n }\n unmatchedStart = unmatchedEnd = 0;\n }\n /* EXITING */\n if (index >= length) {\n break outer;\n }\n /* PARSE BLOCKS */\n for (let i = 0, l = PARSE_BLOCKS.length; i < l; i++) {\n const [BLOCK_RE, BLOCK_WIDTH] = PARSE_BLOCKS[i];\n BLOCK_RE.lastIndex = index;\n if (BLOCK_RE.test(input)) {\n lengthExtra = BLOCK_RE === CJKT_WIDE_RE ? getCodePointsLength(input.slice(index, BLOCK_RE.lastIndex)) : BLOCK_RE === EMOJI_RE ? 1 : BLOCK_RE.lastIndex - index;\n widthExtra = lengthExtra * BLOCK_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / BLOCK_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = BLOCK_RE.lastIndex;\n continue outer;\n }\n }\n /* UNMATCHED INDEX */\n index += 1;\n }\n /* RETURN */\n return {\n width: truncationEnabled ? truncationLimit : width,\n index: truncationEnabled ? truncationIndex : length,\n truncated: truncationEnabled,\n ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH\n };\n};\n/* EXPORT */\nexport default getStringTruncatedWidth;\n","/* IMPORT */\nimport fastStringTruncatedWidth from 'fast-string-truncated-width';\n/* HELPERS */\nconst NO_TRUNCATION = {\n limit: Infinity,\n ellipsis: '',\n ellipsisWidth: 0,\n};\n/* MAIN */\nconst fastStringWidth = (input, options = {}) => {\n return fastStringTruncatedWidth(input, NO_TRUNCATION, options).width;\n};\n/* EXPORT */\nexport default fastStringWidth;\n","import stringWidth from 'fast-string-width';\nconst ESC = '\\x1B';\nconst CSI = '\\x9B';\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\nconst GROUP_REGEX = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`, 'y');\nconst getClosingCode = (openingCode) => {\n if (openingCode >= 30 && openingCode <= 37)\n return 39;\n if (openingCode >= 90 && openingCode <= 97)\n return 39;\n if (openingCode >= 40 && openingCode <= 47)\n return 49;\n if (openingCode >= 100 && openingCode <= 107)\n return 49;\n if (openingCode === 1 || openingCode === 2)\n return 22;\n if (openingCode === 3)\n return 23;\n if (openingCode === 4)\n return 24;\n if (openingCode === 7)\n return 27;\n if (openingCode === 8)\n return 28;\n if (openingCode === 9)\n return 29;\n if (openingCode === 0)\n return 0;\n return undefined;\n};\nconst wrapAnsiCode = (code) => `${ESC}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = (url) => `${ESC}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\nconst wrapWord = (rows, word, columns) => {\n const characters = word[Symbol.iterator]();\n let isInsideEscape = false;\n let isInsideLinkEscape = false;\n let lastRow = rows.at(-1);\n let visible = lastRow === undefined ? 0 : stringWidth(lastRow);\n let currentCharacter = characters.next();\n let nextCharacter = characters.next();\n let rawCharacterIndex = 0;\n while (!currentCharacter.done) {\n const character = currentCharacter.value;\n const characterLength = stringWidth(character);\n if (visible + characterLength <= columns) {\n rows[rows.length - 1] += character;\n }\n else {\n rows.push(character);\n visible = 0;\n }\n if (character === ESC || character === CSI) {\n isInsideEscape = true;\n isInsideLinkEscape = word.startsWith(ANSI_ESCAPE_LINK, rawCharacterIndex + 1);\n }\n if (isInsideEscape) {\n if (isInsideLinkEscape) {\n if (character === ANSI_ESCAPE_BELL) {\n isInsideEscape = false;\n isInsideLinkEscape = false;\n }\n }\n else if (character === ANSI_SGR_TERMINATOR) {\n isInsideEscape = false;\n }\n }\n else {\n visible += characterLength;\n if (visible === columns && !nextCharacter.done) {\n rows.push('');\n visible = 0;\n }\n }\n currentCharacter = nextCharacter;\n nextCharacter = characters.next();\n rawCharacterIndex += character.length;\n }\n lastRow = rows.at(-1);\n if (!visible && lastRow !== undefined && lastRow.length && rows.length > 1) {\n rows[rows.length - 2] += rows.pop();\n }\n};\nconst stringVisibleTrimSpacesRight = (string) => {\n const words = string.split(' ');\n let last = words.length;\n while (last) {\n if (stringWidth(words[last - 1])) {\n break;\n }\n last--;\n }\n if (last === words.length) {\n return string;\n }\n return words.slice(0, last).join(' ') + words.slice(last).join('');\n};\nconst exec = (string, columns, options = {}) => {\n if (options.trim !== false && string.trim() === '') {\n return '';\n }\n let returnValue = '';\n let escapeCode;\n let escapeUrl;\n const words = string.split(' ');\n let rows = [''];\n let rowLength = 0;\n for (let index = 0; index < words.length; index++) {\n const word = words[index];\n if (options.trim !== false) {\n const row = rows.at(-1) ?? '';\n const trimmed = row.trimStart();\n if (row.length !== trimmed.length) {\n rows[rows.length - 1] = trimmed;\n rowLength = stringWidth(trimmed);\n }\n }\n if (index !== 0) {\n if (rowLength >= columns &&\n (options.wordWrap === false || options.trim === false)) {\n rows.push('');\n rowLength = 0;\n }\n if (rowLength || options.trim === false) {\n rows[rows.length - 1] += ' ';\n rowLength++;\n }\n }\n const wordLength = stringWidth(word);\n if (options.hard && wordLength > columns) {\n const remainingColumns = columns - rowLength;\n const breaksStartingThisLine = 1 + Math.floor((wordLength - remainingColumns - 1) / columns);\n const breaksStartingNextLine = Math.floor((wordLength - 1) / columns);\n if (breaksStartingNextLine < breaksStartingThisLine) {\n rows.push('');\n }\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n if (rowLength + wordLength > columns && rowLength && wordLength) {\n if (options.wordWrap === false && rowLength < columns) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows.push('');\n rowLength = 0;\n }\n if (rowLength + wordLength > columns && options.wordWrap === false) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows[rows.length - 1] += word;\n rowLength += wordLength;\n }\n if (options.trim !== false) {\n rows = rows.map((row) => stringVisibleTrimSpacesRight(row));\n }\n const preString = rows.join('\\n');\n let inSurrogate = false;\n for (let i = 0; i < preString.length; i++) {\n const character = preString[i];\n returnValue += character;\n if (!inSurrogate) {\n inSurrogate = character >= '\\ud800' && character <= '\\udbff';\n if (inSurrogate) {\n continue;\n }\n }\n else {\n inSurrogate = false;\n }\n if (character === ESC || character === CSI) {\n GROUP_REGEX.lastIndex = i + 1;\n const groupsResult = GROUP_REGEX.exec(preString);\n const groups = groupsResult?.groups;\n if (groups?.code !== undefined) {\n const code = Number.parseFloat(groups.code);\n escapeCode = code === END_CODE ? undefined : code;\n }\n else if (groups?.uri !== undefined) {\n escapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n }\n }\n if (preString[i + 1] === '\\n') {\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink('');\n }\n const closingCode = escapeCode ? getClosingCode(escapeCode) : undefined;\n if (escapeCode && closingCode) {\n returnValue += wrapAnsiCode(closingCode);\n }\n }\n else if (character === '\\n') {\n if (escapeCode && getClosingCode(escapeCode)) {\n returnValue += wrapAnsiCode(escapeCode);\n }\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink(escapeUrl);\n }\n }\n }\n return returnValue;\n};\nconst CRLF_OR_LF = /\\r?\\n/;\nexport function wrapAnsi(string, columns, options) {\n return String(string)\n .normalize()\n .split(CRLF_OR_LF)\n .map((line) => exec(line, columns, options))\n .join('\\n');\n}\n//# sourceMappingURL=main.js.map","import cliWidth from 'cli-width';\nimport { wrapAnsi } from 'fast-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 { 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","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","/**\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 = [];\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM');\nif (process.platform !== 'win32') {\n signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n );\n}\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n//# sourceMappingURL=signals.js.map","// 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 };\nconst processOk = (process) => !!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';\nconst kExitEmitter = Symbol.for('signal-exit emitter');\nconst global = globalThis;\nconst ObjectDefineProperty = Object.defineProperty.bind(Object);\n// teeny special purpose ee\nclass Emitter {\n emitted = {\n afterExit: false,\n exit: false,\n };\n listeners = {\n afterExit: [],\n exit: [],\n };\n count = 0;\n id = Math.random();\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 on(ev, fn) {\n this.listeners[ev].push(fn);\n }\n removeListener(ev, fn) {\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 }\n else {\n list.splice(i, 1);\n }\n }\n emit(ev, code, signal) {\n if (this.emitted[ev]) {\n return false;\n }\n this.emitted[ev] = true;\n let ret = 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}\nclass SignalExitBase {\n}\nconst signalExitWrap = (handler) => {\n return {\n onExit(cb, opts) {\n return handler.onExit(cb, opts);\n },\n load() {\n return handler.load();\n },\n unload() {\n return handler.unload();\n },\n };\n};\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => { };\n }\n load() { }\n unload() { }\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;\n #originalProcessEmit;\n #originalProcessReallyExit;\n #sigListeners = {};\n #loaded = false;\n constructor(process) {\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;\n if (typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number') {\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)\n process.kill(process.pid, s);\n /* c8 ignore stop */\n }\n };\n }\n this.#originalProcessReallyExit = process.reallyExit;\n this.#originalProcessEmit = process.emit;\n }\n onExit(cb, opts) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => { };\n }\n /* c8 ignore stop */\n if (this.#loaded === false) {\n this.load();\n }\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit';\n this.#emitter.on(ev, cb);\n return () => {\n this.#emitter.removeListener(ev, cb);\n if (this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0) {\n this.unload();\n }\n };\n }\n load() {\n if (this.#loaded) {\n return;\n }\n this.#loaded = true;\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 for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig];\n if (fn)\n this.#process.on(sig, fn);\n }\n catch (_) { }\n }\n this.#process.emit = (ev, ...a) => {\n return this.#processEmit(ev, ...a);\n };\n this.#process.reallyExit = (code) => {\n return this.#processReallyExit(code);\n };\n }\n unload() {\n if (!this.#loaded) {\n return;\n }\n this.#loaded = false;\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 }\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 #processReallyExit(code) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0;\n }\n this.#process.exitCode = code || 0;\n /* c8 ignore stop */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);\n }\n #processEmit(ev, ...args) {\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 }\n else {\n return og.call(this.#process, ev, ...args);\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 */\nonExit, \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 */\nload, \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 */\nunload, } = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback());\n//# sourceMappingURL=index.js.map","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 * 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\";\n// Capture the real setImmediate at module load time so it works even when test\n// frameworks mock timers with vi.useFakeTimers() or similar.\nconst nativeSetImmediate = globalThis.setImmediate;\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 // Pre-mute the output so that readline doesn't echo stale keystrokes\n // to the terminal before the first render. ScreenManager will unmute/mute\n // the output around each render call as needed.\n output.mute();\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 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 const startCycle = () => {\n // Re-renders only happen when the state change; but the readline cursor could\n // change position and that also requires a re-render (and a manual one because\n // we mute the streams). We set the listener after the initial workLoop to avoid\n // a double render if render triggered by a state change sets the cursor to the\n // right position.\n const checkCursorPos = () => screen.checkCursorPos();\n rl.input.on('keypress', checkCursorPos);\n cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));\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 };\n // Proper Readable streams (like process.stdin) may have OS-level buffered\n // data that arrives in the poll phase when readline resumes the stream.\n // Deferring the first render by one setImmediate tick (check phase, after\n // poll) lets that stale data flow through readline harmlessly—no keypress\n // handlers are registered yet and the output is muted, so the stale\n // keystrokes are silently discarded.\n // Old-style streams (like MuteStream) have no such buffering, so the\n // render cycle starts immediately.\n //\n // @see https://github.com/SBoudrias/Inquirer.js/issues/1303\n if ('readableFlowing' in input) {\n nativeSetImmediate(startCycle);\n }\n else {\n startCycle();\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","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, isEnterKey, isTabKey, usePrefix, makeTheme, } from '@inquirer/core';\nfunction getBooleanValue(value, defaultValue) {\n let answer = defaultValue !== false;\n if (/^(y|yes)/i.test(value))\n answer = true;\n else if (/^(n|no)/i.test(value))\n answer = false;\n return answer;\n}\nfunction boolToString(value) {\n return value ? 'Yes' : 'No';\n}\nexport default createPrompt((config, done) => {\n const { transformer = boolToString } = config;\n const [status, setStatus] = useState('idle');\n const [value, setValue] = useState('');\n const theme = makeTheme(config.theme);\n const prefix = usePrefix({ status, theme });\n useKeypress((key, rl) => {\n if (status !== 'idle')\n return;\n if (isEnterKey(key)) {\n const answer = getBooleanValue(value, config.default);\n setValue(transformer(answer));\n setStatus('done');\n done(answer);\n }\n else if (isTabKey(key)) {\n const answer = boolToString(!getBooleanValue(value, config.default));\n rl.clearLine(0); // Remove the tab character.\n rl.write(answer);\n setValue(answer);\n }\n else {\n setValue(rl.line);\n }\n });\n let formattedValue = value;\n let defaultValue = '';\n if (status === 'done') {\n formattedValue = theme.style.answer(value);\n }\n else {\n defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? 'y/N' : 'Y/n')}`;\n }\n const message = theme.style.message(config.message, status);\n return `${prefix} ${message}${defaultValue} ${formattedValue}`;\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 i18n: { disabledError: 'This option is disabled and cannot be selected.' },\n indexMode: 'hidden',\n keybindings: [],\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction isNavigable(item) {\n return !Separator.isSeparator(item);\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(isNavigable);\n const last = items.findLastIndex(isNavigable);\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 const [errorMsg, setError] = useState();\n useKeypress((key, rl) => {\n clearTimeout(searchTimeoutRef.current);\n if (errorMsg) {\n setError(undefined);\n }\n if (isEnterKey(key)) {\n if (selectedChoice.disabled) {\n setError(theme.i18n.disabledError);\n }\n else {\n setStatus('done');\n done(selectedChoice.value);\n }\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 (!isNavigable(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 cursor = isActive ? theme.icon.cursor : ' ';\n const indexLabel = theme.indexMode === 'number' ? `${index + 1 - separatorCount}. ` : '';\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n const disabledCursor = isActive ? theme.icon.cursor : '-';\n return theme.style.disabled(`${disabledCursor} ${indexLabel}${item.name} ${disabledLabel}`);\n }\n const color = isActive ? theme.style.highlight : (x) => x;\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 errorMsg ? theme.style.error(errorMsg) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return `${lines}${cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n","'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n","/**\n * Install utilities — shared helper functions for the install pipeline.\n * (Inlined from the former adapters/base.ts after multi-runtime removal.)\n */\n\nimport * as path from 'node:path';\nimport * as os from 'node:os';\nimport * as fs from 'node:fs';\n\n/**\n * Expand ~ to home directory (shell doesn't expand in env vars passed to node)\n */\nexport function expandTilde(filePath: string): string {\n if (filePath && filePath.startsWith('~/')) {\n return path.join(os.homedir(), filePath.slice(2));\n }\n return filePath;\n}\n\n/**\n * Process Co-Authored-By lines based on attribution setting.\n * @param content - File content to process\n * @param attribution - null=remove, undefined=keep default, string=replace\n */\nexport function processAttribution(\n content: string,\n attribution: null | undefined | string,\n): string {\n if (attribution === null) {\n return content.replace(/(\\r?\\n){2}Co-Authored-By:.*$/gim, '');\n }\n if (attribution === undefined) {\n return content;\n }\n const safeAttribution = attribution.replace(/\\$/g, '$$$$');\n return content.replace(\n /Co-Authored-By:.*$/gim,\n `Co-Authored-By: ${safeAttribution}`,\n );\n}\n\n/**\n * Build a hook command path using forward slashes for cross-platform compatibility.\n */\nexport function buildHookCommand(configDir: string, hookName: string): string {\n const hooksPath = configDir.replace(/\\\\/g, '/') + '/hooks/' + hookName;\n return `node \"${hooksPath}\"`;\n}\n\n/**\n * Read and parse settings.json, returning empty object if it doesn't exist.\n */\nexport function readSettings(\n settingsPath: string,\n): Record<string, unknown> {\n if (fs.existsSync(settingsPath)) {\n try {\n return JSON.parse(fs.readFileSync(settingsPath, 'utf8'));\n } catch {\n return {};\n }\n }\n return {};\n}\n\n/**\n * Write settings.json with proper formatting.\n */\nexport function writeSettings(\n settingsPath: string,\n settings: Record<string, unknown>,\n): void {\n fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\\n');\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport fsExtra from 'fs-extra';\n\nimport * as os from 'node:os';\n\nimport { expandTilde } from './utils.js';\nimport type { Manifest } from './manifest.js';\n\n// Get version from package.json — read at runtime so semantic-release's version bump\n// is reflected without needing to rebuild dist/install.cjs after the version bump.\nexport const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '..', 'package.json'), 'utf-8')) as { version: string };\n\n// Resolve template asset root — bundled into dist/assets/templates at publish time\nexport const templatesRoot = path.resolve(__dirname, 'assets', 'templates');\n\n// Built-in skill names shipped with MAXSIM — used for cleanup during install/uninstall\nexport const builtInSkills = ['tdd', 'systematic-debugging', 'verification-before-completion', 'maxsim-simplify', 'code-review', 'memory-management', 'using-maxsim', 'brainstorming', 'roadmap-writing', 'sdd', 'maxsim-batch'] as const;\n\n/**\n * Get the global config directory for Claude Code.\n * Priority: explicitDir > CLAUDE_CONFIG_DIR env > ~/.claude\n */\nexport function getGlobalDir(explicitDir: string | null = null): string {\n if (explicitDir) {\n return expandTilde(explicitDir);\n }\n if (process.env.CLAUDE_CONFIG_DIR) {\n return expandTilde(process.env.CLAUDE_CONFIG_DIR);\n }\n return path.join(os.homedir(), '.claude');\n}\n\n/**\n * Get the config directory path relative to home for hook templating.\n * Used for path.join(homeDir, '<configDir>', ...) replacement in hooks.\n */\nexport function getConfigDirFromHome(_isGlobal: boolean): string {\n return \"'.claude'\";\n}\n\n/**\n * Get the local directory name\n */\nexport function getDirName(): string {\n return '.claude';\n}\n\n/**\n * Recursively remove a directory, handling Windows read-only file attributes.\n * fs-extra handles cross-platform edge cases (EPERM on Windows, symlinks, etc.)\n */\nexport function safeRmDir(dirPath: string): void {\n fsExtra.removeSync(dirPath);\n}\n\n/**\n * Recursively copy a directory (dereferences symlinks)\n */\nexport function copyDirRecursive(src: string, dest: string): void {\n fsExtra.copySync(src, dest, { dereference: true });\n}\n\n/**\n * Verify a directory exists and contains files.\n * If expectedFiles is provided, also checks that those specific files exist inside the directory.\n */\nexport function verifyInstalled(dirPath: string, description: string, expectedFiles?: string[]): boolean {\n if (!fs.existsSync(dirPath)) {\n console.error(\n ` \\u2717 Failed to install ${description}: directory not created`,\n );\n return false;\n }\n try {\n const entries = fs.readdirSync(dirPath);\n if (entries.length === 0) {\n console.error(\n ` \\u2717 Failed to install ${description}: directory is empty`,\n );\n return false;\n }\n } catch (e: unknown) {\n console.error(\n ` \\u2717 Failed to install ${description}: ${(e as Error).message}`,\n );\n return false;\n }\n if (expectedFiles && expectedFiles.length > 0) {\n const missing = expectedFiles.filter(f => !fs.existsSync(path.join(dirPath, f)));\n if (missing.length > 0) {\n console.error(\n ` \\u2717 Failed to install ${description}: missing files: ${missing.join(', ')}`,\n );\n return false;\n }\n }\n return true;\n}\n\n/**\n * Verify a file exists\n */\nexport function verifyFileInstalled(filePath: string, description: string): boolean {\n if (!fs.existsSync(filePath)) {\n console.error(\n ` \\u2717 Failed to install ${description}: file not created`,\n );\n return false;\n }\n return true;\n}\n\nexport interface InstallResult {\n settingsPath: string | null;\n settings: Record<string, unknown> | null;\n statuslineCommand: string | null;\n}\n\n/**\n * Verify that all major install components are present. Uses the manifest\n * (if available) to check individual files; otherwise falls back to\n * directory-level checks.\n *\n * Returns an object with `complete` (boolean) and `missing` (list of\n * component names that are absent or incomplete).\n */\nexport function verifyInstallComplete(\n configDir: string,\n manifest: Manifest | null = null,\n): { complete: boolean; missing: string[] } {\n const missing: string[] = [];\n\n // If a manifest exists, verify every file in it is still present\n if (manifest && manifest.files) {\n for (const relPath of Object.keys(manifest.files)) {\n if (!fs.existsSync(path.join(configDir, relPath))) {\n missing.push(relPath);\n }\n }\n return { complete: missing.length === 0, missing };\n }\n\n // Fallback: directory-level checks for major components\n const components: Array<{ dir: string; label: string }> = [\n { dir: path.join(configDir, 'maxsim'), label: 'maxsim (workflows/templates)' },\n { dir: path.join(configDir, 'agents'), label: 'agents' },\n { dir: path.join(configDir, 'commands', 'maxsim'), label: 'commands' },\n { dir: path.join(configDir, 'hooks'), label: 'hooks' },\n ];\n\n for (const { dir, label } of components) {\n if (!fs.existsSync(dir)) {\n missing.push(label);\n } else {\n try {\n const entries = fs.readdirSync(dir);\n if (entries.length === 0) missing.push(label);\n } catch {\n missing.push(label);\n }\n }\n }\n\n return { complete: missing.length === 0, missing };\n}\n","import * as path from 'node:path';\n\nimport {\n readSettings,\n} from './utils.js';\nimport { getGlobalDir } from './shared.js';\n\n// Cache for attribution settings (populated once during install)\nlet attributionCached = false;\nlet attributionValue: null | undefined | string;\n\n/**\n * Get commit attribution setting for Claude Code\n * @returns null = remove, undefined = keep default, string = custom\n */\nexport function getCommitAttribution(explicitConfigDir: string | null): null | undefined | string {\n if (attributionCached) {\n return attributionValue;\n }\n\n const settings = readSettings(\n path.join(getGlobalDir(explicitConfigDir), 'settings.json'),\n ) as Record<string, unknown>;\n const attr = settings.attribution as { commit?: string } | undefined;\n if (!attr || attr.commit === undefined) {\n attributionValue = undefined;\n } else if (attr.commit === '') {\n attributionValue = null;\n } else {\n attributionValue = attr.commit;\n }\n\n attributionCached = true;\n return attributionValue;\n}\n","import * as fs from 'node:fs';\n\nimport chalk from 'chalk';\nimport { confirm } from '@inquirer/prompts';\n\nimport {\n readSettings,\n writeSettings,\n buildHookCommand,\n} from './utils.js';\nimport { getDirName, getConfigDirFromHome, verifyInstalled } from './shared.js';\nimport * as path from 'node:path';\nimport ora from 'ora';\n\n/**\n * Clean up orphaned files from previous MAXSIM versions\n */\nexport function cleanupOrphanedFiles(configDir: string): void {\n const orphanedFiles = [\n 'hooks/maxsim-notify.sh',\n 'hooks/statusline.js',\n ];\n\n for (const relPath of orphanedFiles) {\n const fullPath = path.join(configDir, relPath);\n if (fs.existsSync(fullPath)) {\n fs.unlinkSync(fullPath);\n console.log(` ${chalk.green('\\u2713')} Removed orphaned ${relPath}`);\n }\n }\n}\n\n/**\n * Clean up orphaned hook registrations from settings.json\n */\nexport function cleanupOrphanedHooks(\n settings: Record<string, unknown>,\n): Record<string, unknown> {\n const orphanedHookPatterns = [\n 'maxsim-notify.sh',\n 'hooks/statusline.js',\n 'maxsim-intel-index.js',\n 'maxsim-intel-session.js',\n 'maxsim-intel-prune.js',\n ];\n\n let cleanedHooks = false;\n\n interface HookEntry {\n hooks?: Array<{ command?: string }>;\n }\n\n const hooks = settings.hooks as Record<string, HookEntry[]> | undefined;\n if (hooks) {\n for (const eventType of Object.keys(hooks)) {\n const hookEntries = hooks[eventType];\n if (Array.isArray(hookEntries)) {\n const filtered = hookEntries.filter((entry: HookEntry) => {\n if (entry.hooks && Array.isArray(entry.hooks)) {\n const hasOrphaned = entry.hooks.some(\n (h) =>\n h.command &&\n orphanedHookPatterns.some((pattern) =>\n h.command!.includes(pattern),\n ),\n );\n if (hasOrphaned) {\n cleanedHooks = true;\n return false;\n }\n }\n return true;\n });\n hooks[eventType] = filtered;\n }\n }\n }\n\n if (cleanedHooks) {\n console.log(\n ` ${chalk.green('\\u2713')} Removed orphaned hook registrations`,\n );\n }\n\n const statusLine = settings.statusLine as { command?: string } | undefined;\n if (\n statusLine &&\n statusLine.command &&\n statusLine.command.includes('statusline.js') &&\n !statusLine.command.includes('maxsim-statusline.js')\n ) {\n statusLine.command = statusLine.command.replace(\n /statusline\\.js/,\n 'maxsim-statusline.js',\n );\n console.log(\n ` ${chalk.green('\\u2713')} Updated statusline path (statusline.js \\u2192 maxsim-statusline.js)`,\n );\n }\n\n return settings;\n}\n\n/**\n * Install hook files and configure settings.json\n */\nexport function installHookFiles(\n targetDir: string,\n isGlobal: boolean,\n failures: string[],\n): void {\n // Copy hooks from bundled assets directory\n let hooksSrc: string | null = null;\n const bundledHooksDir = path.resolve(__dirname, 'assets', 'hooks');\n if (fs.existsSync(bundledHooksDir)) {\n hooksSrc = bundledHooksDir;\n } else {\n console.warn(` ${chalk.yellow('!')} bundled hooks not found - hooks will not be installed`);\n }\n\n if (hooksSrc) {\n const spinner = ora({ text: 'Installing hooks...', color: 'cyan' }).start();\n const hooksDest = path.join(targetDir, 'hooks');\n fs.mkdirSync(hooksDest, { recursive: true });\n const hookEntries = fs.readdirSync(hooksSrc);\n const configDirReplacement = getConfigDirFromHome(isGlobal);\n for (const entry of hookEntries) {\n const srcFile = path.join(hooksSrc, entry);\n if (fs.statSync(srcFile).isFile() && entry.endsWith('.cjs') && !entry.includes('.d.')) {\n const destName = entry.replace(/\\.cjs$/, '.js');\n const destFile = path.join(hooksDest, destName);\n let content = fs.readFileSync(srcFile, 'utf8');\n content = content.replace(/'\\.claude'/g, configDirReplacement);\n fs.writeFileSync(destFile, content);\n }\n }\n if (verifyInstalled(hooksDest, 'hooks')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed hooks (bundled)');\n } else {\n spinner.fail('Failed to install hooks');\n failures.push('hooks');\n }\n }\n}\n\n/**\n * Configure hooks and statusline in settings.json\n */\nexport function configureSettingsHooks(\n targetDir: string,\n isGlobal: boolean,\n): { settingsPath: string; settings: Record<string, unknown>; statuslineCommand: string; updateCheckCommand: string; contextMonitorCommand: string } {\n const dirName = getDirName();\n\n const settingsPath = path.join(targetDir, 'settings.json');\n const settings = cleanupOrphanedHooks(readSettings(settingsPath));\n const statuslineCommand = isGlobal\n ? buildHookCommand(targetDir, 'maxsim-statusline.js')\n : 'node ' + dirName + '/hooks/maxsim-statusline.js';\n const updateCheckCommand = isGlobal\n ? buildHookCommand(targetDir, 'maxsim-check-update.js')\n : 'node ' + dirName + '/hooks/maxsim-check-update.js';\n const contextMonitorCommand = isGlobal\n ? buildHookCommand(targetDir, 'maxsim-context-monitor.js')\n : 'node ' + dirName + '/hooks/maxsim-context-monitor.js';\n\n interface InstallHookEntry {\n hooks?: Array<{ type: string; command: string }>;\n }\n\n // Configure SessionStart hook for update checking\n if (!settings.hooks) {\n settings.hooks = {};\n }\n const installHooks = settings.hooks as Record<string, InstallHookEntry[]>;\n if (!installHooks.SessionStart) {\n installHooks.SessionStart = [];\n }\n\n const hasMaxsimUpdateHook = installHooks.SessionStart.some(\n (entry: InstallHookEntry) =>\n entry.hooks &&\n entry.hooks.some(\n (h) => h.command && h.command.includes('maxsim-check-update'),\n ),\n );\n\n if (!hasMaxsimUpdateHook) {\n installHooks.SessionStart.push({\n hooks: [\n {\n type: 'command',\n command: updateCheckCommand,\n },\n ],\n });\n console.log(\n ` ${chalk.green('\\u2713')} Configured update check hook`,\n );\n }\n\n // Configure PostToolUse hook for context window monitoring\n if (!installHooks.PostToolUse) {\n installHooks.PostToolUse = [];\n }\n\n const hasContextMonitorHook = installHooks.PostToolUse.some(\n (entry: InstallHookEntry) =>\n entry.hooks &&\n entry.hooks.some(\n (h) => h.command && h.command.includes('maxsim-context-monitor'),\n ),\n );\n\n if (!hasContextMonitorHook) {\n installHooks.PostToolUse.push({\n hooks: [\n {\n type: 'command',\n command: contextMonitorCommand,\n },\n ],\n });\n console.log(\n ` ${chalk.green('\\u2713')} Configured context window monitor hook`,\n );\n }\n\n return { settingsPath, settings, statuslineCommand, updateCheckCommand, contextMonitorCommand };\n}\n\n/**\n * Handle statusline configuration — returns true if MAXSIM statusline should be installed\n */\nexport async function handleStatusline(\n settings: Record<string, unknown>,\n isInteractive: boolean,\n forceStatusline: boolean,\n): Promise<boolean> {\n const hasExisting = settings.statusLine != null;\n\n if (!hasExisting) return true;\n if (forceStatusline) return true;\n\n if (!isInteractive) {\n console.log(\n chalk.yellow('\\u26a0') + ' Skipping statusline (already configured)',\n );\n console.log(\n ' Use ' + chalk.cyan('--force-statusline') + ' to replace\\n',\n );\n return false;\n }\n\n const statusLine = settings.statusLine as { command?: string; url?: string };\n const existingCmd = statusLine.command || statusLine.url || '(custom)';\n\n console.log();\n console.log(chalk.yellow('\\u26a0 Existing statusline detected'));\n console.log();\n console.log(' Your current statusline:');\n console.log(' ' + chalk.dim(`command: ${existingCmd}`));\n console.log();\n console.log(' MAXSIM includes a statusline showing:');\n console.log(' \\u2022 Model name');\n console.log(' \\u2022 Current task (from todo list)');\n console.log(' \\u2022 Context window usage (color-coded)');\n console.log();\n\n const shouldReplace = await confirm({\n message: 'Replace with MAXSIM statusline?',\n default: false,\n });\n\n return shouldReplace;\n}\n\n/**\n * Apply statusline config, then print completion message\n */\nexport function finishInstall(\n settingsPath: string | null,\n settings: Record<string, unknown> | null,\n statuslineCommand: string | null,\n shouldInstallStatusline: boolean,\n isGlobal: boolean = true,\n): void {\n if (shouldInstallStatusline) {\n settings!.statusLine = {\n type: 'command',\n command: statuslineCommand,\n };\n console.log(` ${chalk.green('\\u2713')} Configured statusline`);\n }\n\n if (settingsPath && settings) {\n writeSettings(settingsPath, settings);\n }\n\n console.log(`\n ${chalk.green('Done!')} Launch Claude Code and run ${chalk.cyan('/maxsim:help')}.\n\n ${chalk.cyan('Join the community:')} https://discord.gg/5JJgD5svVS\n`);\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as crypto from 'node:crypto';\n\nimport { pkg } from './shared.js';\n\nexport const MANIFEST_NAME = 'maxsim-file-manifest.json';\n\n/**\n * Compute SHA256 hash of file contents\n */\nexport function fileHash(filePath: string): string {\n const content = fs.readFileSync(filePath);\n return crypto.createHash('sha256').update(content).digest('hex');\n}\n\n/**\n * Recursively collect all files in dir with their hashes\n */\nexport function generateManifest(\n dir: string,\n baseDir?: string,\n): Record<string, string> {\n if (!baseDir) baseDir = dir;\n const manifest: Record<string, string> = {};\n if (!fs.existsSync(dir)) return manifest;\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n const relPath = path.relative(baseDir, fullPath).replace(/\\\\/g, '/');\n if (entry.isSymbolicLink()) {\n // Skip symlinks — they point to user-managed external directories\n continue;\n } else if (entry.isDirectory()) {\n Object.assign(manifest, generateManifest(fullPath, baseDir));\n } else {\n manifest[relPath] = fileHash(fullPath);\n }\n }\n return manifest;\n}\n\nexport interface Manifest {\n version: string;\n timestamp: string;\n files: Record<string, string>;\n}\n\n/**\n * Write file manifest after installation for future modification detection\n */\nexport function writeManifest(\n configDir: string,\n): Manifest {\n const maxsimDir = path.join(configDir, 'maxsim');\n const commandsDir = path.join(configDir, 'commands', 'maxsim');\n const agentsDir = path.join(configDir, 'agents');\n const manifest: Manifest = {\n version: pkg.version,\n timestamp: new Date().toISOString(),\n files: {},\n };\n\n const maxsimHashes = generateManifest(maxsimDir);\n for (const [rel, hash] of Object.entries(maxsimHashes)) {\n manifest.files['maxsim/' + rel] = hash;\n }\n if (fs.existsSync(commandsDir)) {\n const cmdHashes = generateManifest(commandsDir);\n for (const [rel, hash] of Object.entries(cmdHashes)) {\n manifest.files['commands/maxsim/' + rel] = hash;\n }\n }\n if (fs.existsSync(agentsDir)) {\n for (const file of fs.readdirSync(agentsDir)) {\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\n manifest.files['agents/' + file] = fileHash(\n path.join(agentsDir, file),\n );\n }\n }\n }\n // Include skills in manifest (skills/<skill-name>/*)\n const skillsManifestDir = path.join(configDir, 'skills');\n if (fs.existsSync(skillsManifestDir)) {\n const skillHashes = generateManifest(skillsManifestDir);\n for (const [rel, hash] of Object.entries(skillHashes)) {\n manifest.files['skills/' + rel] = hash;\n }\n }\n\n fs.writeFileSync(\n path.join(configDir, MANIFEST_NAME),\n JSON.stringify(manifest, null, 2),\n );\n return manifest;\n}\n\n/**\n * Read an existing manifest from the config directory, or return null if none exists / is invalid\n */\nexport function readManifest(configDir: string): Manifest | null {\n const manifestPath = path.join(configDir, MANIFEST_NAME);\n if (!fs.existsSync(manifestPath)) return null;\n try {\n return JSON.parse(fs.readFileSync(manifestPath, 'utf8')) as Manifest;\n } catch {\n return null;\n }\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport chalk from 'chalk';\n\nimport { readManifest, fileHash } from './manifest.js';\nimport type { Manifest } from './manifest.js';\n\nexport const PATCHES_DIR_NAME = 'maxsim-local-patches';\n\ninterface BackupMeta {\n backed_up_at: string;\n from_version: string;\n files: string[];\n}\n\n/**\n * Detect user-modified MAXSIM files by comparing against install manifest.\n */\nexport function saveLocalPatches(configDir: string): string[] {\n const manifest = readManifest(configDir);\n if (!manifest) return [];\n\n const patchesDir = path.join(configDir, PATCHES_DIR_NAME);\n const modified: string[] = [];\n\n for (const [relPath, originalHash] of Object.entries(manifest.files || {})) {\n const fullPath = path.join(configDir, relPath);\n if (!fs.existsSync(fullPath)) continue;\n const currentHash = fileHash(fullPath);\n if (currentHash !== originalHash) {\n const backupPath = path.join(patchesDir, relPath);\n fs.mkdirSync(path.dirname(backupPath), { recursive: true });\n fs.copyFileSync(fullPath, backupPath);\n modified.push(relPath);\n }\n }\n\n if (modified.length > 0) {\n const meta: BackupMeta = {\n backed_up_at: new Date().toISOString(),\n from_version: manifest.version,\n files: modified,\n };\n fs.writeFileSync(\n path.join(patchesDir, 'backup-meta.json'),\n JSON.stringify(meta, null, 2),\n );\n console.log(\n ' ' +\n chalk.yellow('i') +\n ' Found ' +\n modified.length +\n ' locally modified MAXSIM file(s) \\u2014 backed up to ' +\n PATCHES_DIR_NAME +\n '/',\n );\n for (const f of modified) {\n console.log(' ' + chalk.dim(f));\n }\n }\n return modified;\n}\n\n/**\n * After install, report backed-up patches for user to reapply.\n */\nexport function reportLocalPatches(\n configDir: string,\n): string[] {\n const patchesDir = path.join(configDir, PATCHES_DIR_NAME);\n const metaPath = path.join(patchesDir, 'backup-meta.json');\n if (!fs.existsSync(metaPath)) return [];\n\n let meta: BackupMeta;\n try {\n meta = JSON.parse(\n fs.readFileSync(metaPath, 'utf8'),\n ) as BackupMeta;\n } catch {\n return [];\n }\n\n if (meta.files && meta.files.length > 0) {\n console.log('');\n console.log(\n ' ' +\n chalk.yellow('Local patches detected') +\n ' (from v' +\n meta.from_version +\n '):',\n );\n for (const f of meta.files) {\n console.log(' ' + chalk.cyan(f));\n }\n console.log('');\n console.log(\n ' Your modifications are saved in ' +\n chalk.cyan(PATCHES_DIR_NAME + '/'),\n );\n console.log(\n ' Run ' +\n chalk.cyan('/maxsim:reapply-patches') +\n ' to merge them into the new version.',\n );\n console.log(' Or manually compare and merge the files.');\n console.log('');\n }\n return meta.files || [];\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport {\n processAttribution,\n} from './utils.js';\nimport { getCommitAttribution } from './adapters.js';\n\n/**\n * Recursively copy directory, replacing paths in .md files\n * Deletes existing destDir first to remove orphaned files from previous versions\n */\nexport function copyWithPathReplacement(\n srcDir: string,\n destDir: string,\n pathPrefix: string,\n explicitConfigDir: string | null,\n isCommand: boolean = false,\n): void {\n if (fs.existsSync(destDir)) {\n fs.rmSync(destDir, { recursive: true });\n }\n fs.mkdirSync(destDir, { recursive: true });\n\n const entries = fs.readdirSync(srcDir, { withFileTypes: true });\n\n for (const entry of entries) {\n const srcPath = path.join(srcDir, entry.name);\n const destPath = path.join(destDir, entry.name);\n\n if (entry.isDirectory()) {\n copyWithPathReplacement(srcPath, destPath, pathPrefix, explicitConfigDir, isCommand);\n } else if (entry.name.endsWith('.md')) {\n let content = fs.readFileSync(srcPath, 'utf8');\n const globalClaudeRegex = /~\\/\\.claude\\//g;\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\n content = content.replace(globalClaudeRegex, pathPrefix);\n content = content.replace(localClaudeRegex, './.claude/');\n content = processAttribution(content, getCommitAttribution(explicitConfigDir));\n fs.writeFileSync(destPath, content);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as os from 'node:os';\n\nimport chalk from 'chalk';\n\nimport { readSettings, writeSettings } from './utils.js';\nimport { getDirName, getGlobalDir, builtInSkills } from './shared.js';\n\n/**\n * Uninstall MAXSIM from the specified directory\n */\nexport function uninstall(isGlobal: boolean, explicitConfigDir: string | null = null): void {\n const dirName = getDirName();\n\n const targetDir = isGlobal\n ? getGlobalDir(explicitConfigDir)\n : path.join(process.cwd(), dirName);\n\n const locationLabel = isGlobal\n ? targetDir.replace(os.homedir(), '~')\n : targetDir.replace(process.cwd(), '.');\n\n console.log(\n ` Uninstalling MAXSIM from ${chalk.cyan('Claude Code')} at ${chalk.cyan(locationLabel)}\\n`,\n );\n\n if (!fs.existsSync(targetDir)) {\n console.log(\n ` ${chalk.yellow('\\u26a0')} Directory does not exist: ${locationLabel}`,\n );\n console.log(` Nothing to uninstall.\\n`);\n return;\n }\n\n let removedCount = 0;\n\n // 1. Remove MAXSIM commands (nested: commands/maxsim/)\n const maxsimCommandsDir = path.join(targetDir, 'commands', 'maxsim');\n if (fs.existsSync(maxsimCommandsDir)) {\n fs.rmSync(maxsimCommandsDir, { recursive: true });\n removedCount++;\n console.log(` ${chalk.green('\\u2713')} Removed commands/maxsim/`);\n }\n\n // 1b. Remove MAXSIM skills\n {\n const skillsDir = path.join(targetDir, 'skills');\n if (fs.existsSync(skillsDir)) {\n let skillCount = 0;\n for (const skill of builtInSkills) {\n const skillDir = path.join(skillsDir, skill);\n if (fs.existsSync(skillDir)) {\n fs.rmSync(skillDir, { recursive: true });\n skillCount++;\n }\n }\n if (skillCount > 0) {\n removedCount++;\n console.log(\n ` ${chalk.green('\\u2713')} Removed ${skillCount} MAXSIM skills`,\n );\n }\n }\n\n // Also clean up legacy agents/skills/ location\n const legacySkillsDir = path.join(targetDir, 'agents', 'skills');\n if (fs.existsSync(legacySkillsDir)) {\n fs.rmSync(legacySkillsDir, { recursive: true });\n console.log(\n ` ${chalk.green('\\u2713')} Removed legacy agents/skills/ directory`,\n );\n }\n }\n\n // 2. Remove maxsim directory\n const maxsimDir = path.join(targetDir, 'maxsim');\n if (fs.existsSync(maxsimDir)) {\n fs.rmSync(maxsimDir, { recursive: true });\n removedCount++;\n console.log(` ${chalk.green('\\u2713')} Removed maxsim/`);\n }\n\n // 3. Remove MAXSIM agents\n const agentsDir = path.join(targetDir, 'agents');\n if (fs.existsSync(agentsDir)) {\n const files = fs.readdirSync(agentsDir);\n let agentCount = 0;\n for (const file of files) {\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\n fs.unlinkSync(path.join(agentsDir, file));\n agentCount++;\n }\n }\n if (agentCount > 0) {\n removedCount++;\n console.log(\n ` ${chalk.green('\\u2713')} Removed ${agentCount} MAXSIM agents`,\n );\n }\n }\n\n // 4. Remove MAXSIM hooks\n const hooksDir = path.join(targetDir, 'hooks');\n if (fs.existsSync(hooksDir)) {\n const maxsimHooks = [\n 'maxsim-statusline.js',\n 'maxsim-check-update.js',\n 'maxsim-check-update.sh',\n 'maxsim-context-monitor.js',\n ];\n let hookCount = 0;\n for (const hook of maxsimHooks) {\n const hookPath = path.join(hooksDir, hook);\n if (fs.existsSync(hookPath)) {\n fs.unlinkSync(hookPath);\n hookCount++;\n }\n }\n if (hookCount > 0) {\n removedCount++;\n console.log(\n ` ${chalk.green('\\u2713')} Removed ${hookCount} MAXSIM hooks`,\n );\n }\n }\n\n // 5. Remove MAXSIM package.json (CommonJS mode marker)\n const pkgJsonPath = path.join(targetDir, 'package.json');\n if (fs.existsSync(pkgJsonPath)) {\n try {\n const content = fs.readFileSync(pkgJsonPath, 'utf8').trim();\n if (content === '{\"type\":\"commonjs\"}') {\n fs.unlinkSync(pkgJsonPath);\n removedCount++;\n console.log(\n ` ${chalk.green('\\u2713')} Removed MAXSIM package.json`,\n );\n }\n } catch {\n // Ignore read errors\n }\n }\n\n // 6. Clean up settings.json\n const settingsPath = path.join(targetDir, 'settings.json');\n if (fs.existsSync(settingsPath)) {\n const settings = readSettings(settingsPath);\n let settingsModified = false;\n\n interface StatusLine {\n command?: string;\n url?: string;\n }\n\n interface SettingsHookEntry {\n hooks?: Array<{ command?: string }>;\n }\n\n const statusLine = settings.statusLine as StatusLine | undefined;\n if (\n statusLine &&\n statusLine.command &&\n statusLine.command.includes('maxsim-statusline')\n ) {\n delete settings.statusLine;\n settingsModified = true;\n console.log(\n ` ${chalk.green('\\u2713')} Removed MAXSIM statusline from settings`,\n );\n }\n\n const settingsHooks = settings.hooks as\n | Record<string, SettingsHookEntry[]>\n | undefined;\n if (settingsHooks && settingsHooks.SessionStart) {\n const before = settingsHooks.SessionStart.length;\n settingsHooks.SessionStart = settingsHooks.SessionStart.filter(\n (entry: SettingsHookEntry) => {\n if (entry.hooks && Array.isArray(entry.hooks)) {\n const hasMaxsimHook = entry.hooks.some(\n (h) =>\n h.command &&\n (h.command.includes('maxsim-check-update') ||\n h.command.includes('maxsim-statusline')),\n );\n return !hasMaxsimHook;\n }\n return true;\n },\n );\n if (settingsHooks.SessionStart.length < before) {\n settingsModified = true;\n console.log(\n ` ${chalk.green('\\u2713')} Removed MAXSIM hooks from settings`,\n );\n }\n if (settingsHooks.SessionStart.length === 0) {\n delete settingsHooks.SessionStart;\n }\n }\n\n if (settingsHooks && settingsHooks.PostToolUse) {\n const before = settingsHooks.PostToolUse.length;\n settingsHooks.PostToolUse = settingsHooks.PostToolUse.filter(\n (entry: SettingsHookEntry) => {\n if (entry.hooks && Array.isArray(entry.hooks)) {\n const hasMaxsimHook = entry.hooks.some(\n (h) =>\n h.command &&\n h.command.includes('maxsim-context-monitor'),\n );\n return !hasMaxsimHook;\n }\n return true;\n },\n );\n if (settingsHooks.PostToolUse.length < before) {\n settingsModified = true;\n console.log(\n ` ${chalk.green('\\u2713')} Removed context monitor hook from settings`,\n );\n }\n if (settingsHooks.PostToolUse.length === 0) {\n delete settingsHooks.PostToolUse;\n }\n }\n\n if (settingsHooks && Object.keys(settingsHooks).length === 0) {\n delete settings.hooks;\n }\n\n if (settingsModified) {\n writeSettings(settingsPath, settings);\n removedCount++;\n }\n }\n\n if (removedCount === 0) {\n console.log(\n ` ${chalk.yellow('\\u26a0')} No MAXSIM files found to remove.`,\n );\n }\n\n console.log(`\n ${chalk.green('Done!')} MAXSIM has been uninstalled from Claude Code.\n Your other files and settings have been preserved.\n`);\n}\n","import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as os from 'node:os';\nimport fsExtra from 'fs-extra';\n\nimport chalk from 'chalk';\nimport figlet from 'figlet';\nimport ora from 'ora';\nimport { select, confirm } from '@inquirer/prompts';\nimport minimist from 'minimist';\n\nimport {\n processAttribution,\n} from './utils.js';\nimport {\n pkg,\n templatesRoot,\n getGlobalDir,\n getDirName,\n verifyInstalled,\n verifyFileInstalled,\n builtInSkills,\n verifyInstallComplete,\n} from './shared.js';\nimport type { InstallResult } from './shared.js';\nimport { getCommitAttribution } from './adapters.js';\nimport {\n cleanupOrphanedFiles,\n installHookFiles,\n configureSettingsHooks,\n handleStatusline,\n finishInstall,\n} from './hooks.js';\nimport { writeManifest, readManifest, MANIFEST_NAME } from './manifest.js';\nimport { saveLocalPatches, reportLocalPatches } from './patches.js';\nimport {\n copyWithPathReplacement,\n} from './copy.js';\nimport { uninstall } from './uninstall.js';\n\n// Parse args\nconst args = process.argv.slice(2);\nconst argv = minimist(args, {\n boolean: ['global', 'local', 'claude', 'uninstall', 'help', 'version', 'force-statusline', 'network'],\n string: ['config-dir'],\n alias: { g: 'global', l: 'local', u: 'uninstall', h: 'help', c: 'config-dir' },\n});\nconst hasGlobal = !!argv['global'];\nconst hasLocal = !!argv['local'];\nconst hasUninstall = !!argv['uninstall'];\n\nconst banner =\n '\\n' +\n chalk.cyan(\n figlet.textSync('MAXSIM', { font: 'ANSI Shadow' })\n .split('\\n')\n .map((line) => ' ' + line)\n .join('\\n'),\n ) +\n '\\n' +\n '\\n' +\n ' MAXSIM ' +\n chalk.dim('v' + pkg.version) +\n '\\n' +\n ' A meta-prompting, context engineering and spec-driven\\n' +\n ' development system for Claude Code.\\n';\n\n// Parse --config-dir argument\nconst explicitConfigDir: string | null = argv['config-dir'] || null;\nconst hasHelp = !!argv['help'];\nconst hasVersion = !!argv['version'];\nconst forceStatusline = !!argv['force-statusline'];\n\n// Reject deprecated multi-runtime flags\nconst deprecatedFlags = ['opencode', 'gemini', 'codex', 'both', 'all'] as const;\nfor (const flag of deprecatedFlags) {\n if (argv[flag]) {\n console.error(`Error: The --${flag} flag is no longer supported. MAXSIM v2.0 is Claude Code only.`);\n process.exit(1);\n }\n}\n\n// Show version if requested (before banner for clean output)\nif (hasVersion) {\n console.log(pkg.version);\n process.exit(0);\n}\n\nconsole.log(banner);\n\n// Show help if requested\nif (hasHelp) {\n console.log(\n ` ${chalk.yellow('Usage:')} npx maxsimcli [options]\\n\\n ${chalk.yellow('Options:')}\\n ${chalk.cyan('-g, --global')} Install globally (to config directory)\\n ${chalk.cyan('-l, --local')} Install locally (to current directory)\\n ${chalk.cyan('-u, --uninstall')} Uninstall MAXSIM (remove all MAXSIM files)\\n ${chalk.cyan('-c, --config-dir <path>')} Specify custom config directory\\n ${chalk.cyan('-h, --help')} Show this help message\\n ${chalk.cyan('--force-statusline')} Replace existing statusline config\\n\\n ${chalk.yellow('Examples:')}\\n ${chalk.dim('# Interactive install (prompts for location)')}\\n npx maxsimcli\\n\\n ${chalk.dim('# Install globally')}\\n npx maxsimcli --global\\n\\n ${chalk.dim('# Install to current project only')}\\n npx maxsimcli --local\\n\\n ${chalk.dim('# Install to custom config directory')}\\n npx maxsimcli --global --config-dir ~/.claude-work\\n\\n ${chalk.dim('# Uninstall MAXSIM globally')}\\n npx maxsimcli --global --uninstall\\n\\n ${chalk.yellow('Notes:')}\\n The --config-dir option is useful when you have multiple configurations.\\n It takes priority over the CLAUDE_CONFIG_DIR environment variable.\\n`,\n );\n process.exit(0);\n}\n\nasync function install(\n isGlobal: boolean,\n): Promise<InstallResult> {\n const dirName = getDirName();\n const src = templatesRoot;\n\n const targetDir = isGlobal\n ? getGlobalDir(explicitConfigDir)\n : path.join(process.cwd(), dirName);\n\n const locationLabel = isGlobal\n ? targetDir.replace(os.homedir(), '~')\n : targetDir.replace(process.cwd(), '.');\n\n const pathPrefix = isGlobal\n ? `${targetDir.replace(/\\\\/g, '/')}/`\n : `./${dirName}/`;\n\n console.log(\n ` Installing for ${chalk.cyan('Claude Code')} to ${chalk.cyan(locationLabel)}\\n`,\n );\n\n const failures: string[] = [];\n\n // Detect prior install via manifest — used for re-run safety\n const existingManifest = readManifest(targetDir);\n const isAlreadyCurrent = existingManifest !== null && existingManifest.version === pkg.version;\n\n if (existingManifest !== null) {\n const { complete, missing } = verifyInstallComplete(targetDir, existingManifest);\n if (!complete) {\n console.log(` ${chalk.yellow('!')} Previous install (v${existingManifest.version}) is incomplete — ${missing.length} missing file(s). Re-installing.`);\n } else if (isAlreadyCurrent) {\n console.log(` ${chalk.dim(`Version ${pkg.version} already installed — upgrading in place`)}`);\n }\n }\n\n // Save any locally modified MAXSIM files before they get wiped\n saveLocalPatches(targetDir);\n\n // Clean up orphaned files from previous versions\n cleanupOrphanedFiles(targetDir);\n\n // Claude uses commands/maxsim/\n let spinner = ora({ text: 'Installing commands...', color: 'cyan' }).start();\n const commandsDir = path.join(targetDir, 'commands');\n fs.mkdirSync(commandsDir, { recursive: true });\n\n const maxsimSrc = path.join(src, 'commands', 'maxsim');\n const maxsimDest = path.join(commandsDir, 'maxsim');\n copyWithPathReplacement(maxsimSrc, maxsimDest, pathPrefix, explicitConfigDir, true);\n if (verifyInstalled(maxsimDest, 'commands/maxsim')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed commands/maxsim');\n } else {\n spinner.fail('Failed to install commands/maxsim');\n failures.push('commands/maxsim');\n }\n\n // Copy maxsim directory content (workflows, templates, references) with path replacement\n spinner = ora({ text: 'Installing workflows and templates...', color: 'cyan' }).start();\n const skillDest = path.join(targetDir, 'maxsim');\n const maxsimSubdirs = ['workflows', 'templates', 'references'];\n if (fs.existsSync(skillDest)) {\n fs.rmSync(skillDest, { recursive: true });\n }\n fs.mkdirSync(skillDest, { recursive: true });\n for (const subdir of maxsimSubdirs) {\n const subdirSrc = path.join(src, subdir);\n if (fs.existsSync(subdirSrc)) {\n const subdirDest = path.join(skillDest, subdir);\n copyWithPathReplacement(subdirSrc, subdirDest, pathPrefix, explicitConfigDir);\n }\n }\n if (verifyInstalled(skillDest, 'maxsim')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed maxsim');\n } else {\n spinner.fail('Failed to install maxsim');\n failures.push('maxsim');\n }\n\n // Copy agents to agents directory\n const agentsSrc = path.join(src, 'agents');\n if (fs.existsSync(agentsSrc)) {\n spinner = ora({ text: 'Installing agents...', color: 'cyan' }).start();\n const agentsDest = path.join(targetDir, 'agents');\n fs.mkdirSync(agentsDest, { recursive: true });\n\n // Remove old MAXSIM agents before copying new ones\n if (fs.existsSync(agentsDest)) {\n for (const file of fs.readdirSync(agentsDest)) {\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\n fs.unlinkSync(path.join(agentsDest, file));\n }\n }\n }\n\n const agentEntries = fs.readdirSync(agentsSrc, { withFileTypes: true });\n for (const entry of agentEntries) {\n if (entry.isFile() && entry.name.endsWith('.md')) {\n let content = fs.readFileSync(\n path.join(agentsSrc, entry.name),\n 'utf8',\n );\n const dirRegex = /~\\/\\.claude\\//g;\n content = content.replace(dirRegex, pathPrefix);\n content = processAttribution(content, getCommitAttribution(explicitConfigDir));\n fs.writeFileSync(path.join(agentsDest, entry.name), content);\n }\n }\n if (verifyInstalled(agentsDest, 'agents')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed agents');\n } else {\n spinner.fail('Failed to install agents');\n failures.push('agents');\n }\n }\n\n // Remove legacy agents/skills/ directory (skills moved to skills/ in v1.x)\n const legacySkillsDir = path.join(targetDir, 'agents', 'skills');\n if (fs.existsSync(legacySkillsDir)) {\n fs.rmSync(legacySkillsDir, { recursive: true });\n console.log(` ${chalk.green('\\u2713')} Removed legacy agents/skills/ directory`);\n }\n\n // Copy skills to skills/ directory\n const skillsSrc = path.join(src, 'skills');\n if (fs.existsSync(skillsSrc)) {\n spinner = ora({ text: 'Installing skills...', color: 'cyan' }).start();\n const skillsDest = path.join(targetDir, 'skills');\n\n // Remove old MAXSIM built-in skills before copying new ones (preserve user custom skills)\n if (fs.existsSync(skillsDest)) {\n for (const skill of builtInSkills) {\n const skillDir = path.join(skillsDest, skill);\n if (fs.existsSync(skillDir)) {\n fs.rmSync(skillDir, { recursive: true });\n }\n }\n }\n\n // Copy skills directory recursively\n fsExtra.copySync(skillsSrc, skillsDest, { overwrite: true });\n\n // Process path prefixes in skill files\n const skillEntries = fs.readdirSync(skillsDest, { withFileTypes: true });\n for (const entry of skillEntries) {\n if (entry.isDirectory()) {\n const skillMd = path.join(skillsDest, entry.name, 'SKILL.md');\n if (fs.existsSync(skillMd)) {\n let content = fs.readFileSync(skillMd, 'utf8');\n const dirRegex = /~\\/\\.claude\\//g;\n content = content.replace(dirRegex, pathPrefix);\n content = processAttribution(content, getCommitAttribution(explicitConfigDir));\n fs.writeFileSync(skillMd, content);\n }\n }\n }\n\n const installedSkillDirs = fs.readdirSync(skillsDest, { withFileTypes: true })\n .filter(e => e.isDirectory()).length;\n if (installedSkillDirs > 0) {\n spinner.succeed(chalk.green('\\u2713') + ` Installed ${installedSkillDirs} skills to skills/`);\n } else {\n spinner.fail('Failed to install skills');\n failures.push('skills');\n }\n }\n\n // Copy CHANGELOG.md\n const changelogSrc = path.join(src, '..', 'CHANGELOG.md');\n const changelogDest = path.join(targetDir, 'maxsim', 'CHANGELOG.md');\n if (fs.existsSync(changelogSrc)) {\n spinner = ora({ text: 'Installing CHANGELOG.md...', color: 'cyan' }).start();\n fs.copyFileSync(changelogSrc, changelogDest);\n if (verifyFileInstalled(changelogDest, 'CHANGELOG.md')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed CHANGELOG.md');\n } else {\n spinner.fail('Failed to install CHANGELOG.md');\n failures.push('CHANGELOG.md');\n }\n }\n\n // Copy CLAUDE.md\n const claudeMdSrc = path.join(src, 'CLAUDE.md');\n const claudeMdDest = path.join(targetDir, 'CLAUDE.md');\n if (fs.existsSync(claudeMdSrc)) {\n spinner = ora({ text: 'Installing CLAUDE.md...', color: 'cyan' }).start();\n fs.copyFileSync(claudeMdSrc, claudeMdDest);\n if (verifyFileInstalled(claudeMdDest, 'CLAUDE.md')) {\n spinner.succeed(chalk.green('\\u2713') + ' Installed CLAUDE.md');\n } else {\n spinner.fail('Failed to install CLAUDE.md');\n failures.push('CLAUDE.md');\n }\n }\n\n // Write VERSION file\n const versionDest = path.join(targetDir, 'maxsim', 'VERSION');\n fs.writeFileSync(versionDest, pkg.version);\n if (verifyFileInstalled(versionDest, 'VERSION')) {\n console.log(\n ` ${chalk.green('\\u2713')} Wrote VERSION (${pkg.version})`,\n );\n } else {\n failures.push('VERSION');\n }\n\n // Write package.json to force CommonJS mode for MAXSIM scripts\n const pkgJsonDest = path.join(targetDir, 'package.json');\n fs.writeFileSync(pkgJsonDest, '{\"type\":\"commonjs\"}\\n');\n console.log(\n ` ${chalk.green('\\u2713')} Wrote package.json (CommonJS mode)`,\n );\n\n // Install maxsim-tools.cjs binary\n const toolSrc = path.resolve(__dirname, 'cli.cjs');\n const binDir = path.join(targetDir, 'maxsim', 'bin');\n const toolDest = path.join(binDir, 'maxsim-tools.cjs');\n if (fs.existsSync(toolSrc)) {\n fs.mkdirSync(binDir, { recursive: true });\n fs.copyFileSync(toolSrc, toolDest);\n console.log(` ${chalk.green('\\u2713')} Installed maxsim-tools.cjs`);\n } else {\n console.warn(` ${chalk.yellow('!')} cli.cjs not found at ${toolSrc} — maxsim-tools.cjs not installed`);\n failures.push('maxsim-tools.cjs');\n }\n\n // Install mcp-server.cjs\n const mcpSrc = path.resolve(__dirname, 'mcp-server.cjs');\n const mcpDest = path.join(binDir, 'mcp-server.cjs');\n if (fs.existsSync(mcpSrc)) {\n fs.mkdirSync(binDir, { recursive: true });\n fs.copyFileSync(mcpSrc, mcpDest);\n console.log(` ${chalk.green('\\u2713')} Installed mcp-server.cjs`);\n } else {\n console.warn(` ${chalk.yellow('!')} mcp-server.cjs not found — MCP server not installed`);\n }\n\n // Install hooks\n installHookFiles(targetDir, isGlobal, failures);\n\n // Write .mcp.json for Claude Code MCP server auto-discovery\n const mcpJsonPath = isGlobal\n ? path.join(targetDir, '..', '.mcp.json')\n : path.join(process.cwd(), '.mcp.json');\n let mcpConfig: Record<string, unknown> = {};\n let skipMcpConfig = false;\n\n if (fs.existsSync(mcpJsonPath)) {\n // Back up existing .mcp.json before modification\n fs.copyFileSync(mcpJsonPath, mcpJsonPath + '.bak');\n\n try {\n mcpConfig = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));\n } catch {\n // Corrupted .mcp.json — warn user\n console.warn(` ${chalk.yellow('!')} .mcp.json is corrupted (invalid JSON). Backup saved to .mcp.json.bak`);\n let startFresh = true;\n try {\n startFresh = await confirm({\n message: '.mcp.json is corrupted. Start with a fresh config? (No = abort MCP setup)',\n default: true,\n });\n } catch {\n // Non-interactive — default to starting fresh\n }\n if (!startFresh) {\n console.log(` ${chalk.yellow('!')} Skipping .mcp.json configuration`);\n skipMcpConfig = true;\n }\n }\n }\n\n if (!skipMcpConfig) {\n const mcpServers = (mcpConfig.mcpServers as Record<string, unknown>) ?? {};\n mcpServers['maxsim'] = {\n command: 'node',\n args: ['.claude/maxsim/bin/mcp-server.cjs'],\n env: {},\n };\n mcpConfig.mcpServers = mcpServers;\n\n fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + '\\n', 'utf-8');\n console.log(` ${chalk.green('\\u2713')} Configured .mcp.json for MCP server auto-discovery`);\n }\n\n if (failures.length > 0) {\n console.error(\n `\\n ${chalk.yellow('Installation incomplete!')} Failed: ${failures.join(', ')}`,\n );\n process.exit(1);\n }\n\n // Write file manifest for future modification detection\n writeManifest(targetDir);\n console.log(\n ` ${chalk.green('\\u2713')} Wrote file manifest (${MANIFEST_NAME})`,\n );\n\n // Report any backed-up local patches\n reportLocalPatches(targetDir);\n\n // Configure statusline and hooks in settings.json\n const { settingsPath, settings, statuslineCommand } = configureSettingsHooks(targetDir, isGlobal);\n\n return { settingsPath, settings, statuslineCommand };\n}\n\n/**\n * Prompt for install location\n */\nasync function promptLocation(): Promise<boolean> {\n if (!process.stdin.isTTY) {\n console.log(\n chalk.yellow('Non-interactive terminal detected, defaulting to global install') + '\\n',\n );\n return true; // isGlobal\n }\n\n const globalPath = getGlobalDir(explicitConfigDir).replace(os.homedir(), '~');\n\n const choice = await select<'global' | 'local'>({\n message: 'Where would you like to install?',\n choices: [\n {\n name: 'Global ' + chalk.dim(`(${globalPath})`) + ' — available in all projects',\n value: 'global',\n },\n {\n name: 'Local ' + chalk.dim('(./.claude)') + ' — this project only',\n value: 'local',\n },\n ],\n });\n\n return choice === 'global';\n}\n\n/**\n * Prompt whether to enable Agent Teams (experimental feature)\n */\nasync function promptAgentTeams(): Promise<boolean> {\n console.log();\n console.log(chalk.cyan(' Agent Teams') + chalk.dim(' (experimental)'));\n console.log(chalk.dim(' Coordinate multiple Claude Code instances working in parallel.'));\n console.log(chalk.dim(' Enables CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS in settings.json.'));\n console.log();\n\n return confirm({\n message: 'Enable Agent Teams?',\n default: false,\n });\n}\n\n/**\n * Install MAXSIM for Claude Code\n */\nasync function installForClaude(\n isGlobal: boolean,\n isInteractive: boolean,\n): Promise<void> {\n const result = await install(isGlobal);\n\n let shouldInstallStatusline = false;\n if (result.settings) {\n shouldInstallStatusline = await handleStatusline(\n result.settings,\n isInteractive,\n forceStatusline,\n );\n }\n\n // Prompt for Agent Teams\n let enableAgentTeams = false;\n if (isInteractive) {\n enableAgentTeams = await promptAgentTeams();\n }\n\n // Apply Agent Teams setting\n if (enableAgentTeams && result.settings) {\n const env = (result.settings.env as Record<string, unknown>) ?? {};\n env['CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS'] = '1';\n result.settings.env = env;\n }\n\n finishInstall(\n result.settingsPath,\n result.settings,\n result.statuslineCommand,\n shouldInstallStatusline,\n isGlobal,\n );\n}\n\n// Main logic\n// Subcommand routing — intercept before install flow\nconst subcommand = argv._[0];\n\n(async () => {\n // Skill management subcommands\n if (subcommand === 'skill-list' || subcommand === 'skill-install' || subcommand === 'skill-update') {\n const { cmdSkillList, cmdSkillInstall, cmdSkillUpdate } = await import('../core/skills.js');\n const { CliOutput, writeOutput, CliError } = await import('../core/core.js');\n const cwd = process.cwd();\n try {\n if (subcommand === 'skill-list') {\n cmdSkillList(cwd, false);\n } else if (subcommand === 'skill-install') {\n cmdSkillInstall(cwd, argv._[1] as string | undefined, false);\n } else if (subcommand === 'skill-update') {\n cmdSkillUpdate(cwd, argv._[1] as string | undefined, false);\n }\n } catch (thrown: unknown) {\n if (thrown instanceof CliOutput) {\n writeOutput(thrown);\n process.exit(0);\n }\n if (thrown instanceof CliError) {\n console.error('Error: ' + thrown.message);\n process.exit(1);\n }\n throw thrown;\n }\n return;\n }\n\n if (hasGlobal && hasLocal) {\n console.error(chalk.yellow('Cannot specify both --global and --local'));\n process.exit(1);\n } else if (explicitConfigDir && hasLocal) {\n console.error(chalk.yellow('Cannot use --config-dir with --local'));\n process.exit(1);\n } else if (hasUninstall) {\n if (!hasGlobal && !hasLocal) {\n console.error(chalk.yellow('--uninstall requires --global or --local'));\n process.exit(1);\n }\n uninstall(hasGlobal, explicitConfigDir);\n } else if (hasGlobal || hasLocal) {\n await installForClaude(hasGlobal, false);\n } else {\n if (!process.stdin.isTTY) {\n console.log(\n chalk.yellow('Non-interactive terminal detected, defaulting to global install') + '\\n',\n );\n await installForClaude(true, false);\n } else {\n const isGlobal = await promptLocation();\n await installForClaude(isGlobal, true);\n }\n }\n})().catch((err: unknown) => {\n if (err instanceof Error && err.message.includes('User force closed')) {\n // User pressed Ctrl+C during an @inquirer/prompts prompt — exit cleanly\n console.log('\\n' + chalk.yellow('Installation cancelled') + '\\n');\n process.exit(0);\n }\n console.error(chalk.red('Unexpected error:'), err);\n process.exit(1);\n});\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|