react-doctor 0.9.7 → 0.9.8-dev.7f028ea
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/build-section-divider-DKzi1sn2.js +312 -0
- package/dist/ci-BKAwxTDf.js +7501 -0
- package/dist/cli.js +96 -10780
- package/dist/design-ROS4n3k3.js +14 -0
- package/dist/{devtools-BQATi33M.js → devtools-DPRVRu3S.js} +3 -3
- package/dist/exit-gracefully-De1Nzy3z.js +47 -0
- package/dist/index.d.ts +4703 -4081
- package/dist/index.js +6070 -4387
- package/dist/inspect-Z_e5RkQs.js +1443 -0
- package/dist/install-BDS2ISd_.js +32 -0
- package/dist/install-doctor-script-J-zvzVqR.js +3251 -0
- package/dist/install-github-workflow-CAo3dNh1.js +267 -0
- package/dist/install-react-doctor-C_5DWtTC.js +1154 -0
- package/dist/lsp.js +6183 -4512
- package/dist/print-branded-header-UfYgFqhb.js +22 -0
- package/dist/read-object-file-BDLV3R4X.js +24 -0
- package/dist/{exit-gracefully-BJRsqdaK.js → record-metric-BGxpNcR0.js} +6252 -11955
- package/dist/report-error-Wat6_MDs.js +158 -0
- package/dist/report-workflow-result-CULZXneJ.js +279 -0
- package/dist/resolve-scope-BbndLz4E.js +339 -0
- package/dist/rules-BSF6erEQ.js +581 -0
- package/dist/{run-scan-app-DawD5rhU.js → run-scan-app-D1yyCXe2.js} +36 -29
- package/dist/scan-BTYPKfS9.js +53 -0
- package/dist/should-fail-scan-gate-CgCFA8pU.js +3075 -0
- package/dist/should-skip-prompts-CZbr6sjQ.js +10 -0
- package/dist/unref-stdin-noiOzC5n.js +120 -0
- package/dist/version-BAsYYPLc.js +21 -0
- package/dist/why-DZ9AgG5O.js +21 -0
- package/package.json +6 -7
|
@@ -0,0 +1,3251 @@
|
|
|
1
|
+
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8e8a8984-9999-5109-b2bd-6383c2a28c71")}catch(e){}}();
|
|
3
|
+
import { C as RUN_GIT_MAX_BUFFER_BYTES, In as error$1, Ln as info$1, P as isNonInteractiveEnvironment, Rn as log, Yn as runSync, en as highlighter, zn as warn } from "./record-metric-BGxpNcR0.js";
|
|
4
|
+
import { execFileSync } from "node:child_process";
|
|
5
|
+
import * as path$1 from "node:path";
|
|
6
|
+
import * as fs$1 from "node:fs";
|
|
7
|
+
import process$1 from "node:process";
|
|
8
|
+
import os from "node:os";
|
|
9
|
+
import { stripVTControlCharacters } from "node:util";
|
|
10
|
+
import tty from "node:tty";
|
|
11
|
+
//#region src/cli/utils/cli-logger.ts
|
|
12
|
+
/**
|
|
13
|
+
* Thin synchronous façade over Effect's `Console` module. Used by
|
|
14
|
+
* the imperative CLI helper files (`select-projects`, `run-explain`,
|
|
15
|
+
* `install-react-doctor`, the legacy paths in `cli/commands/inspect.ts`)
|
|
16
|
+
* that aren't yet Effect-typed. Every call drains into a single
|
|
17
|
+
* `Console.*` Effect via `Effect.runSync`, so the underlying logging
|
|
18
|
+
* pipeline is identical to the canonical `yield* Console.log(...)`
|
|
19
|
+
* call sites in the renderers. Convert callers to `Effect.gen` to
|
|
20
|
+
* drop the bridge.
|
|
21
|
+
*/
|
|
22
|
+
const cliLogger = {
|
|
23
|
+
log: (message) => {
|
|
24
|
+
runSync(log(message));
|
|
25
|
+
},
|
|
26
|
+
warn: (message) => {
|
|
27
|
+
runSync(warn(highlighter.warn(message)));
|
|
28
|
+
},
|
|
29
|
+
error: (message) => {
|
|
30
|
+
runSync(error$1(highlighter.error(message)));
|
|
31
|
+
},
|
|
32
|
+
info: (message) => {
|
|
33
|
+
runSync(info$1(highlighter.info(message)));
|
|
34
|
+
},
|
|
35
|
+
dim: (message) => {
|
|
36
|
+
runSync(log(highlighter.gray(message)));
|
|
37
|
+
},
|
|
38
|
+
success: (message) => {
|
|
39
|
+
runSync(log(highlighter.success(message)));
|
|
40
|
+
},
|
|
41
|
+
break: () => {
|
|
42
|
+
runSync(log(""));
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region src/cli/utils/git-hook-shared.ts
|
|
47
|
+
const HOOK_FILE_NAME = "pre-commit";
|
|
48
|
+
const HOOK_RELATIVE_PATH = "hooks/pre-commit";
|
|
49
|
+
const LEGACY_HOOK_RUNNER_RELATIVE_PATH = ".react-doctor/hooks/pre-commit";
|
|
50
|
+
const HUSKY_HOOKS_PATH = ".husky";
|
|
51
|
+
const VITE_PLUS_HOOKS_PATH = ".vite-hooks";
|
|
52
|
+
const SIMPLE_GIT_HOOKS_PACKAGE_JSON_KEY = "simple-git-hooks";
|
|
53
|
+
const SIMPLE_GIT_HOOKS_CONFIG_FILE = ".simple-git-hooks.cjs";
|
|
54
|
+
const LEFTHOOK_CONFIG_FILES = ["lefthook.yml", "lefthook.yaml"];
|
|
55
|
+
const PRE_COMMIT_CONFIG_FILE = ".pre-commit-config.yaml";
|
|
56
|
+
const OVERCOMMIT_CONFIG_FILE = ".overcommit.yml";
|
|
57
|
+
const REACT_DOCTOR_COMMAND = "react-doctor --staged --blocking warning";
|
|
58
|
+
const NON_BLOCKING_REACT_DOCTOR_COMMAND = [
|
|
59
|
+
"react_doctor_output=$(mktemp \"${TMPDIR:-/tmp}/react-doctor-hook.XXXXXX\");",
|
|
60
|
+
`if ${REACT_DOCTOR_COMMAND} > "$react_doctor_output" 2>&1; then`,
|
|
61
|
+
"rm -f \"$react_doctor_output\";",
|
|
62
|
+
"else",
|
|
63
|
+
"cat \"$react_doctor_output\" >&2;",
|
|
64
|
+
"rm -f \"$react_doctor_output\";",
|
|
65
|
+
`printf "%s\\n" "React Doctor found staged regressions." "Run ${REACT_DOCTOR_COMMAND} to inspect." "Want them fixed? Ask your agent to run that command and resolve the findings." >&2;`,
|
|
66
|
+
"fi"
|
|
67
|
+
].join(" ");
|
|
68
|
+
const PACKAGE_JSON_FILE_NAME = "package.json";
|
|
69
|
+
const runGitRaw = (projectRoot, args) => {
|
|
70
|
+
try {
|
|
71
|
+
return execFileSync("git", [...args], {
|
|
72
|
+
cwd: projectRoot,
|
|
73
|
+
encoding: "utf8",
|
|
74
|
+
stdio: [
|
|
75
|
+
"ignore",
|
|
76
|
+
"pipe",
|
|
77
|
+
"ignore"
|
|
78
|
+
],
|
|
79
|
+
maxBuffer: RUN_GIT_MAX_BUFFER_BYTES
|
|
80
|
+
});
|
|
81
|
+
} catch {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const runGit = (projectRoot, args) => runGitRaw(projectRoot, args)?.trim() ?? null;
|
|
86
|
+
const resolveGitPath = (baseDirectory, value) => path$1.isAbsolute(value) ? value : path$1.resolve(baseDirectory, value);
|
|
87
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
88
|
+
const getPackageJsonPath = (projectRoot) => path$1.join(projectRoot, PACKAGE_JSON_FILE_NAME);
|
|
89
|
+
const readPackageJson = (projectRoot) => {
|
|
90
|
+
try {
|
|
91
|
+
return JSON.parse(fs$1.readFileSync(getPackageJsonPath(projectRoot), "utf8"));
|
|
92
|
+
} catch {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
const writeJsonFile = (filePath, value) => {
|
|
97
|
+
fs$1.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`);
|
|
98
|
+
};
|
|
99
|
+
const packageHasDependency = (projectRoot, dependencyName) => {
|
|
100
|
+
const packageJson = readPackageJson(projectRoot);
|
|
101
|
+
if (!isRecord(packageJson)) return false;
|
|
102
|
+
return [
|
|
103
|
+
"dependencies",
|
|
104
|
+
"devDependencies",
|
|
105
|
+
"optionalDependencies"
|
|
106
|
+
].some((fieldName) => {
|
|
107
|
+
const dependencies = packageJson[fieldName];
|
|
108
|
+
return isRecord(dependencies) && typeof dependencies[dependencyName] === "string";
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
const packageHasRecordKey = (projectRoot, key) => {
|
|
112
|
+
const packageJson = readPackageJson(projectRoot);
|
|
113
|
+
return isRecord(packageJson) && isRecord(packageJson[key]);
|
|
114
|
+
};
|
|
115
|
+
const packageHasNestedRecordKey = (projectRoot, key, nestedKey) => {
|
|
116
|
+
const packageJson = readPackageJson(projectRoot);
|
|
117
|
+
if (!isRecord(packageJson)) return false;
|
|
118
|
+
const value = packageJson[key];
|
|
119
|
+
return isRecord(value) && isRecord(value[nestedKey]);
|
|
120
|
+
};
|
|
121
|
+
const ensureTrailingNewline = (content) => content.endsWith("\n") ? content : `${content}\n`;
|
|
122
|
+
//#endregion
|
|
123
|
+
//#region ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js
|
|
124
|
+
const ANSI_BACKGROUND_OFFSET = 10;
|
|
125
|
+
const wrapAnsi16 = (offset = 0) => (code) => `\u001B[${code + offset}m`;
|
|
126
|
+
const wrapAnsi256 = (offset = 0) => (code) => `\u001B[${38 + offset};5;${code}m`;
|
|
127
|
+
const wrapAnsi16m = (offset = 0) => (red, green, blue) => `\u001B[${38 + offset};2;${red};${green};${blue}m`;
|
|
128
|
+
const styles$1 = {
|
|
129
|
+
modifier: {
|
|
130
|
+
reset: [0, 0],
|
|
131
|
+
bold: [1, 22],
|
|
132
|
+
dim: [2, 22],
|
|
133
|
+
italic: [3, 23],
|
|
134
|
+
underline: [4, 24],
|
|
135
|
+
overline: [53, 55],
|
|
136
|
+
inverse: [7, 27],
|
|
137
|
+
hidden: [8, 28],
|
|
138
|
+
strikethrough: [9, 29]
|
|
139
|
+
},
|
|
140
|
+
color: {
|
|
141
|
+
black: [30, 39],
|
|
142
|
+
red: [31, 39],
|
|
143
|
+
green: [32, 39],
|
|
144
|
+
yellow: [33, 39],
|
|
145
|
+
blue: [34, 39],
|
|
146
|
+
magenta: [35, 39],
|
|
147
|
+
cyan: [36, 39],
|
|
148
|
+
white: [37, 39],
|
|
149
|
+
blackBright: [90, 39],
|
|
150
|
+
gray: [90, 39],
|
|
151
|
+
grey: [90, 39],
|
|
152
|
+
redBright: [91, 39],
|
|
153
|
+
greenBright: [92, 39],
|
|
154
|
+
yellowBright: [93, 39],
|
|
155
|
+
blueBright: [94, 39],
|
|
156
|
+
magentaBright: [95, 39],
|
|
157
|
+
cyanBright: [96, 39],
|
|
158
|
+
whiteBright: [97, 39]
|
|
159
|
+
},
|
|
160
|
+
bgColor: {
|
|
161
|
+
bgBlack: [40, 49],
|
|
162
|
+
bgRed: [41, 49],
|
|
163
|
+
bgGreen: [42, 49],
|
|
164
|
+
bgYellow: [43, 49],
|
|
165
|
+
bgBlue: [44, 49],
|
|
166
|
+
bgMagenta: [45, 49],
|
|
167
|
+
bgCyan: [46, 49],
|
|
168
|
+
bgWhite: [47, 49],
|
|
169
|
+
bgBlackBright: [100, 49],
|
|
170
|
+
bgGray: [100, 49],
|
|
171
|
+
bgGrey: [100, 49],
|
|
172
|
+
bgRedBright: [101, 49],
|
|
173
|
+
bgGreenBright: [102, 49],
|
|
174
|
+
bgYellowBright: [103, 49],
|
|
175
|
+
bgBlueBright: [104, 49],
|
|
176
|
+
bgMagentaBright: [105, 49],
|
|
177
|
+
bgCyanBright: [106, 49],
|
|
178
|
+
bgWhiteBright: [107, 49]
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
Object.keys(styles$1.modifier);
|
|
182
|
+
const foregroundColorNames = Object.keys(styles$1.color);
|
|
183
|
+
const backgroundColorNames = Object.keys(styles$1.bgColor);
|
|
184
|
+
[...foregroundColorNames, ...backgroundColorNames];
|
|
185
|
+
function assembleStyles() {
|
|
186
|
+
const codes = /* @__PURE__ */ new Map();
|
|
187
|
+
for (const [groupName, group] of Object.entries(styles$1)) {
|
|
188
|
+
for (const [styleName, style] of Object.entries(group)) {
|
|
189
|
+
styles$1[styleName] = {
|
|
190
|
+
open: `\u001B[${style[0]}m`,
|
|
191
|
+
close: `\u001B[${style[1]}m`
|
|
192
|
+
};
|
|
193
|
+
group[styleName] = styles$1[styleName];
|
|
194
|
+
codes.set(style[0], style[1]);
|
|
195
|
+
}
|
|
196
|
+
Object.defineProperty(styles$1, groupName, {
|
|
197
|
+
value: group,
|
|
198
|
+
enumerable: false
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
Object.defineProperty(styles$1, "codes", {
|
|
202
|
+
value: codes,
|
|
203
|
+
enumerable: false
|
|
204
|
+
});
|
|
205
|
+
styles$1.color.close = "\x1B[39m";
|
|
206
|
+
styles$1.bgColor.close = "\x1B[49m";
|
|
207
|
+
styles$1.color.ansi = wrapAnsi16();
|
|
208
|
+
styles$1.color.ansi256 = wrapAnsi256();
|
|
209
|
+
styles$1.color.ansi16m = wrapAnsi16m();
|
|
210
|
+
styles$1.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
|
|
211
|
+
styles$1.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
|
|
212
|
+
styles$1.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
|
|
213
|
+
Object.defineProperties(styles$1, {
|
|
214
|
+
rgbToAnsi256: {
|
|
215
|
+
value(red, green, blue) {
|
|
216
|
+
if (red === green && green === blue) {
|
|
217
|
+
if (red < 8) return 16;
|
|
218
|
+
if (red > 248) return 231;
|
|
219
|
+
return Math.round((red - 8) / 247 * 24) + 232;
|
|
220
|
+
}
|
|
221
|
+
return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
|
|
222
|
+
},
|
|
223
|
+
enumerable: false
|
|
224
|
+
},
|
|
225
|
+
hexToRgb: {
|
|
226
|
+
value(hex) {
|
|
227
|
+
const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
|
|
228
|
+
if (!matches) return [
|
|
229
|
+
0,
|
|
230
|
+
0,
|
|
231
|
+
0
|
|
232
|
+
];
|
|
233
|
+
let [colorString] = matches;
|
|
234
|
+
if (colorString.length === 3) colorString = [...colorString].map((character) => character + character).join("");
|
|
235
|
+
const integer = Number.parseInt(colorString, 16);
|
|
236
|
+
return [
|
|
237
|
+
integer >> 16 & 255,
|
|
238
|
+
integer >> 8 & 255,
|
|
239
|
+
integer & 255
|
|
240
|
+
];
|
|
241
|
+
},
|
|
242
|
+
enumerable: false
|
|
243
|
+
},
|
|
244
|
+
hexToAnsi256: {
|
|
245
|
+
value: (hex) => styles$1.rgbToAnsi256(...styles$1.hexToRgb(hex)),
|
|
246
|
+
enumerable: false
|
|
247
|
+
},
|
|
248
|
+
ansi256ToAnsi: {
|
|
249
|
+
value(code) {
|
|
250
|
+
if (code < 8) return 30 + code;
|
|
251
|
+
if (code < 16) return 90 + (code - 8);
|
|
252
|
+
let red;
|
|
253
|
+
let green;
|
|
254
|
+
let blue;
|
|
255
|
+
if (code >= 232) {
|
|
256
|
+
red = ((code - 232) * 10 + 8) / 255;
|
|
257
|
+
green = red;
|
|
258
|
+
blue = red;
|
|
259
|
+
} else {
|
|
260
|
+
code -= 16;
|
|
261
|
+
const remainder = code % 36;
|
|
262
|
+
red = Math.floor(code / 36) / 5;
|
|
263
|
+
green = Math.floor(remainder / 6) / 5;
|
|
264
|
+
blue = remainder % 6 / 5;
|
|
265
|
+
}
|
|
266
|
+
const value = Math.max(red, green, blue) * 2;
|
|
267
|
+
if (value === 0) return 30;
|
|
268
|
+
let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
|
|
269
|
+
if (value === 2) result += 60;
|
|
270
|
+
return result;
|
|
271
|
+
},
|
|
272
|
+
enumerable: false
|
|
273
|
+
},
|
|
274
|
+
rgbToAnsi: {
|
|
275
|
+
value: (red, green, blue) => styles$1.ansi256ToAnsi(styles$1.rgbToAnsi256(red, green, blue)),
|
|
276
|
+
enumerable: false
|
|
277
|
+
},
|
|
278
|
+
hexToAnsi: {
|
|
279
|
+
value: (hex) => styles$1.ansi256ToAnsi(styles$1.hexToAnsi256(hex)),
|
|
280
|
+
enumerable: false
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
return styles$1;
|
|
284
|
+
}
|
|
285
|
+
const ansiStyles = assembleStyles();
|
|
286
|
+
//#endregion
|
|
287
|
+
//#region ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js
|
|
288
|
+
function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process$1.argv) {
|
|
289
|
+
const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
|
|
290
|
+
const position = argv.indexOf(prefix + flag);
|
|
291
|
+
const terminatorPosition = argv.indexOf("--");
|
|
292
|
+
return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
|
|
293
|
+
}
|
|
294
|
+
const { env: env$1 } = process$1;
|
|
295
|
+
let flagForceColor;
|
|
296
|
+
if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) flagForceColor = 0;
|
|
297
|
+
else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) flagForceColor = 1;
|
|
298
|
+
function envForceColor() {
|
|
299
|
+
if ("FORCE_COLOR" in env$1) {
|
|
300
|
+
if (env$1.FORCE_COLOR === "true") return 1;
|
|
301
|
+
if (env$1.FORCE_COLOR === "false") return 0;
|
|
302
|
+
return env$1.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env$1.FORCE_COLOR, 10), 3);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
function translateLevel(level) {
|
|
306
|
+
if (level === 0) return false;
|
|
307
|
+
return {
|
|
308
|
+
level,
|
|
309
|
+
hasBasic: true,
|
|
310
|
+
has256: level >= 2,
|
|
311
|
+
has16m: level >= 3
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
|
|
315
|
+
const noFlagForceColor = envForceColor();
|
|
316
|
+
if (noFlagForceColor !== void 0) flagForceColor = noFlagForceColor;
|
|
317
|
+
const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
|
|
318
|
+
if (forceColor === 0) return 0;
|
|
319
|
+
if (sniffFlags) {
|
|
320
|
+
if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) return 3;
|
|
321
|
+
if (hasFlag("color=256")) return 2;
|
|
322
|
+
}
|
|
323
|
+
if ("TF_BUILD" in env$1 && "AGENT_NAME" in env$1) return 1;
|
|
324
|
+
if (haveStream && !streamIsTTY && forceColor === void 0) return 0;
|
|
325
|
+
const min = forceColor || 0;
|
|
326
|
+
if (env$1.TERM === "dumb") return min;
|
|
327
|
+
if (process$1.platform === "win32") {
|
|
328
|
+
const osRelease = os.release().split(".");
|
|
329
|
+
if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
|
330
|
+
return 1;
|
|
331
|
+
}
|
|
332
|
+
if ("CI" in env$1) {
|
|
333
|
+
if ([
|
|
334
|
+
"GITHUB_ACTIONS",
|
|
335
|
+
"GITEA_ACTIONS",
|
|
336
|
+
"CIRCLECI"
|
|
337
|
+
].some((key) => key in env$1)) return 3;
|
|
338
|
+
if ([
|
|
339
|
+
"TRAVIS",
|
|
340
|
+
"APPVEYOR",
|
|
341
|
+
"GITLAB_CI",
|
|
342
|
+
"BUILDKITE",
|
|
343
|
+
"DRONE"
|
|
344
|
+
].some((sign) => sign in env$1) || env$1.CI_NAME === "codeship") return 1;
|
|
345
|
+
return min;
|
|
346
|
+
}
|
|
347
|
+
if ("TEAMCITY_VERSION" in env$1) return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env$1.TEAMCITY_VERSION) ? 1 : 0;
|
|
348
|
+
if (env$1.COLORTERM === "truecolor") return 3;
|
|
349
|
+
if (env$1.TERM === "xterm-kitty") return 3;
|
|
350
|
+
if (env$1.TERM === "xterm-ghostty") return 3;
|
|
351
|
+
if (env$1.TERM === "wezterm") return 3;
|
|
352
|
+
if ("TERM_PROGRAM" in env$1) {
|
|
353
|
+
const version = Number.parseInt((env$1.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
|
|
354
|
+
switch (env$1.TERM_PROGRAM) {
|
|
355
|
+
case "iTerm.app": return version >= 3 ? 3 : 2;
|
|
356
|
+
case "Apple_Terminal": return 2;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
if (/-256(color)?$/i.test(env$1.TERM)) return 2;
|
|
360
|
+
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env$1.TERM)) return 1;
|
|
361
|
+
if ("COLORTERM" in env$1) return 1;
|
|
362
|
+
return min;
|
|
363
|
+
}
|
|
364
|
+
function createSupportsColor(stream, options = {}) {
|
|
365
|
+
return translateLevel(_supportsColor(stream, {
|
|
366
|
+
streamIsTTY: stream && stream.isTTY,
|
|
367
|
+
...options
|
|
368
|
+
}));
|
|
369
|
+
}
|
|
370
|
+
const supportsColor = {
|
|
371
|
+
stdout: createSupportsColor({ isTTY: tty.isatty(1) }),
|
|
372
|
+
stderr: createSupportsColor({ isTTY: tty.isatty(2) })
|
|
373
|
+
};
|
|
374
|
+
//#endregion
|
|
375
|
+
//#region ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/utilities.js
|
|
376
|
+
function stringReplaceAll(string, substring, replacer) {
|
|
377
|
+
let index = string.indexOf(substring);
|
|
378
|
+
if (index === -1) return string;
|
|
379
|
+
const substringLength = substring.length;
|
|
380
|
+
let endIndex = 0;
|
|
381
|
+
let returnValue = "";
|
|
382
|
+
do {
|
|
383
|
+
returnValue += string.slice(endIndex, index) + substring + replacer;
|
|
384
|
+
endIndex = index + substringLength;
|
|
385
|
+
index = string.indexOf(substring, endIndex);
|
|
386
|
+
} while (index !== -1);
|
|
387
|
+
returnValue += string.slice(endIndex);
|
|
388
|
+
return returnValue;
|
|
389
|
+
}
|
|
390
|
+
function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
|
|
391
|
+
let endIndex = 0;
|
|
392
|
+
let returnValue = "";
|
|
393
|
+
do {
|
|
394
|
+
const gotCR = string[index - 1] === "\r";
|
|
395
|
+
returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? "\r\n" : "\n") + postfix;
|
|
396
|
+
endIndex = index + 1;
|
|
397
|
+
index = string.indexOf("\n", endIndex);
|
|
398
|
+
} while (index !== -1);
|
|
399
|
+
returnValue += string.slice(endIndex);
|
|
400
|
+
return returnValue;
|
|
401
|
+
}
|
|
402
|
+
//#endregion
|
|
403
|
+
//#region ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js
|
|
404
|
+
const { stdout: stdoutColor, stderr: stderrColor } = supportsColor;
|
|
405
|
+
const GENERATOR = Symbol("GENERATOR");
|
|
406
|
+
const STYLER = Symbol("STYLER");
|
|
407
|
+
const IS_EMPTY = Symbol("IS_EMPTY");
|
|
408
|
+
const levelMapping = [
|
|
409
|
+
"ansi",
|
|
410
|
+
"ansi",
|
|
411
|
+
"ansi256",
|
|
412
|
+
"ansi16m"
|
|
413
|
+
];
|
|
414
|
+
const styles = Object.create(null);
|
|
415
|
+
const applyOptions = (object, options = {}) => {
|
|
416
|
+
if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) throw new Error("The `level` option should be an integer from 0 to 3");
|
|
417
|
+
const colorLevel = stdoutColor ? stdoutColor.level : 0;
|
|
418
|
+
object.level = options.level === void 0 ? colorLevel : options.level;
|
|
419
|
+
};
|
|
420
|
+
const chalkFactory = (options) => {
|
|
421
|
+
const chalk = (...strings) => strings.join(" ");
|
|
422
|
+
applyOptions(chalk, options);
|
|
423
|
+
Object.setPrototypeOf(chalk, createChalk.prototype);
|
|
424
|
+
return chalk;
|
|
425
|
+
};
|
|
426
|
+
function createChalk(options) {
|
|
427
|
+
return chalkFactory(options);
|
|
428
|
+
}
|
|
429
|
+
Object.setPrototypeOf(createChalk.prototype, Function.prototype);
|
|
430
|
+
for (const [styleName, style] of Object.entries(ansiStyles)) styles[styleName] = { get() {
|
|
431
|
+
const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
|
|
432
|
+
Object.defineProperty(this, styleName, { value: builder });
|
|
433
|
+
return builder;
|
|
434
|
+
} };
|
|
435
|
+
styles.visible = { get() {
|
|
436
|
+
const builder = createBuilder(this, this[STYLER], true);
|
|
437
|
+
Object.defineProperty(this, "visible", { value: builder });
|
|
438
|
+
return builder;
|
|
439
|
+
} };
|
|
440
|
+
const getModelAnsi = (model, level, type, ...arguments_) => {
|
|
441
|
+
if (model === "rgb") {
|
|
442
|
+
if (level === "ansi16m") return ansiStyles[type].ansi16m(...arguments_);
|
|
443
|
+
if (level === "ansi256") return ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));
|
|
444
|
+
return ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));
|
|
445
|
+
}
|
|
446
|
+
if (model === "hex") return getModelAnsi("rgb", level, type, ...ansiStyles.hexToRgb(...arguments_));
|
|
447
|
+
return ansiStyles[type][model](...arguments_);
|
|
448
|
+
};
|
|
449
|
+
for (const model of [
|
|
450
|
+
"rgb",
|
|
451
|
+
"hex",
|
|
452
|
+
"ansi256"
|
|
453
|
+
]) {
|
|
454
|
+
styles[model] = { get() {
|
|
455
|
+
const { level } = this;
|
|
456
|
+
return function(...arguments_) {
|
|
457
|
+
const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansiStyles.color.close, this[STYLER]);
|
|
458
|
+
return createBuilder(this, styler, this[IS_EMPTY]);
|
|
459
|
+
};
|
|
460
|
+
} };
|
|
461
|
+
const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
|
|
462
|
+
styles[bgModel] = { get() {
|
|
463
|
+
const { level } = this;
|
|
464
|
+
return function(...arguments_) {
|
|
465
|
+
const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansiStyles.bgColor.close, this[STYLER]);
|
|
466
|
+
return createBuilder(this, styler, this[IS_EMPTY]);
|
|
467
|
+
};
|
|
468
|
+
} };
|
|
469
|
+
}
|
|
470
|
+
const proto = Object.defineProperties(() => {}, {
|
|
471
|
+
...styles,
|
|
472
|
+
level: {
|
|
473
|
+
enumerable: true,
|
|
474
|
+
get() {
|
|
475
|
+
return this[GENERATOR].level;
|
|
476
|
+
},
|
|
477
|
+
set(level) {
|
|
478
|
+
this[GENERATOR].level = level;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
});
|
|
482
|
+
const createStyler = (open, close, parent) => {
|
|
483
|
+
let openAll;
|
|
484
|
+
let closeAll;
|
|
485
|
+
if (parent === void 0) {
|
|
486
|
+
openAll = open;
|
|
487
|
+
closeAll = close;
|
|
488
|
+
} else {
|
|
489
|
+
openAll = parent.openAll + open;
|
|
490
|
+
closeAll = close + parent.closeAll;
|
|
491
|
+
}
|
|
492
|
+
return {
|
|
493
|
+
open,
|
|
494
|
+
close,
|
|
495
|
+
openAll,
|
|
496
|
+
closeAll,
|
|
497
|
+
parent
|
|
498
|
+
};
|
|
499
|
+
};
|
|
500
|
+
const createBuilder = (self, _styler, _isEmpty) => {
|
|
501
|
+
const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
|
|
502
|
+
Object.setPrototypeOf(builder, proto);
|
|
503
|
+
builder[GENERATOR] = self;
|
|
504
|
+
builder[STYLER] = _styler;
|
|
505
|
+
builder[IS_EMPTY] = _isEmpty;
|
|
506
|
+
return builder;
|
|
507
|
+
};
|
|
508
|
+
const applyStyle = (self, string) => {
|
|
509
|
+
if (self.level <= 0 || !string) return self[IS_EMPTY] ? "" : string;
|
|
510
|
+
let styler = self[STYLER];
|
|
511
|
+
if (styler === void 0) return string;
|
|
512
|
+
const { openAll, closeAll } = styler;
|
|
513
|
+
if (string.includes("\x1B")) while (styler !== void 0) {
|
|
514
|
+
string = stringReplaceAll(string, styler.close, styler.open);
|
|
515
|
+
styler = styler.parent;
|
|
516
|
+
}
|
|
517
|
+
const lfIndex = string.indexOf("\n");
|
|
518
|
+
if (lfIndex !== -1) string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
|
|
519
|
+
return openAll + string + closeAll;
|
|
520
|
+
};
|
|
521
|
+
Object.defineProperties(createChalk.prototype, styles);
|
|
522
|
+
const chalk = createChalk();
|
|
523
|
+
createChalk({ level: stderrColor ? stderrColor.level : 0 });
|
|
524
|
+
//#endregion
|
|
525
|
+
//#region ../../node_modules/.pnpm/mimic-function@5.0.1/node_modules/mimic-function/index.js
|
|
526
|
+
const copyProperty = (to, from, property, ignoreNonConfigurable) => {
|
|
527
|
+
if (property === "length" || property === "prototype") return;
|
|
528
|
+
if (property === "arguments" || property === "caller") return;
|
|
529
|
+
const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
|
|
530
|
+
const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
|
|
531
|
+
if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) return;
|
|
532
|
+
Object.defineProperty(to, property, fromDescriptor);
|
|
533
|
+
};
|
|
534
|
+
const canCopyProperty = function(toDescriptor, fromDescriptor) {
|
|
535
|
+
return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);
|
|
536
|
+
};
|
|
537
|
+
const changePrototype = (to, from) => {
|
|
538
|
+
const fromPrototype = Object.getPrototypeOf(from);
|
|
539
|
+
if (fromPrototype === Object.getPrototypeOf(to)) return;
|
|
540
|
+
Object.setPrototypeOf(to, fromPrototype);
|
|
541
|
+
};
|
|
542
|
+
const wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\n${fromBody}`;
|
|
543
|
+
const toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString");
|
|
544
|
+
const toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name");
|
|
545
|
+
const changeToString = (to, from, name) => {
|
|
546
|
+
const withName = name === "" ? "" : `with ${name.trim()}() `;
|
|
547
|
+
const newToString = wrappedToString.bind(null, withName, from.toString());
|
|
548
|
+
Object.defineProperty(newToString, "name", toStringName);
|
|
549
|
+
const { writable, enumerable, configurable } = toStringDescriptor;
|
|
550
|
+
Object.defineProperty(to, "toString", {
|
|
551
|
+
value: newToString,
|
|
552
|
+
writable,
|
|
553
|
+
enumerable,
|
|
554
|
+
configurable
|
|
555
|
+
});
|
|
556
|
+
};
|
|
557
|
+
function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {
|
|
558
|
+
const { name } = to;
|
|
559
|
+
for (const property of Reflect.ownKeys(from)) copyProperty(to, from, property, ignoreNonConfigurable);
|
|
560
|
+
changePrototype(to, from);
|
|
561
|
+
changeToString(to, from, name);
|
|
562
|
+
return to;
|
|
563
|
+
}
|
|
564
|
+
//#endregion
|
|
565
|
+
//#region ../../node_modules/.pnpm/onetime@7.0.0/node_modules/onetime/index.js
|
|
566
|
+
const calledFunctions = /* @__PURE__ */ new WeakMap();
|
|
567
|
+
const onetime = (function_, options = {}) => {
|
|
568
|
+
if (typeof function_ !== "function") throw new TypeError("Expected a function");
|
|
569
|
+
let returnValue;
|
|
570
|
+
let callCount = 0;
|
|
571
|
+
const functionName = function_.displayName || function_.name || "<anonymous>";
|
|
572
|
+
const onetime = function(...arguments_) {
|
|
573
|
+
calledFunctions.set(onetime, ++callCount);
|
|
574
|
+
if (callCount === 1) {
|
|
575
|
+
returnValue = function_.apply(this, arguments_);
|
|
576
|
+
function_ = void 0;
|
|
577
|
+
} else if (options.throw === true) throw new Error(`Function \`${functionName}\` can only be called once`);
|
|
578
|
+
return returnValue;
|
|
579
|
+
};
|
|
580
|
+
mimicFunction(onetime, function_);
|
|
581
|
+
calledFunctions.set(onetime, callCount);
|
|
582
|
+
return onetime;
|
|
583
|
+
};
|
|
584
|
+
onetime.callCount = (function_) => {
|
|
585
|
+
if (!calledFunctions.has(function_)) throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
|
|
586
|
+
return calledFunctions.get(function_);
|
|
587
|
+
};
|
|
588
|
+
//#endregion
|
|
589
|
+
//#region ../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js
|
|
590
|
+
/**
|
|
591
|
+
* This is not the set of all possible signals.
|
|
592
|
+
*
|
|
593
|
+
* It IS, however, the set of all signals that trigger
|
|
594
|
+
* an exit on either Linux or BSD systems. Linux is a
|
|
595
|
+
* superset of the signal names supported on BSD, and
|
|
596
|
+
* the unknown signals just fail to register, so we can
|
|
597
|
+
* catch that easily enough.
|
|
598
|
+
*
|
|
599
|
+
* Windows signals are a different set, since there are
|
|
600
|
+
* signals that terminate Windows processes, but don't
|
|
601
|
+
* terminate (or don't even exist) on Posix systems.
|
|
602
|
+
*
|
|
603
|
+
* Don't bother with SIGKILL. It's uncatchable, which
|
|
604
|
+
* means that we can't fire any callbacks anyway.
|
|
605
|
+
*
|
|
606
|
+
* If a user does happen to register a handler on a non-
|
|
607
|
+
* fatal signal like SIGWINCH or something, and then
|
|
608
|
+
* exit, it'll end up firing `process.emit('exit')`, so
|
|
609
|
+
* the handler will be fired anyway.
|
|
610
|
+
*
|
|
611
|
+
* SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised
|
|
612
|
+
* artificially, inherently leave the process in a
|
|
613
|
+
* state from which it is not safe to try and enter JS
|
|
614
|
+
* listeners.
|
|
615
|
+
*/
|
|
616
|
+
const signals = [];
|
|
617
|
+
signals.push("SIGHUP", "SIGINT", "SIGTERM");
|
|
618
|
+
if (process.platform !== "win32") signals.push("SIGALRM", "SIGABRT", "SIGVTALRM", "SIGXCPU", "SIGXFSZ", "SIGUSR2", "SIGTRAP", "SIGSYS", "SIGQUIT", "SIGIOT");
|
|
619
|
+
if (process.platform === "linux") signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
|
|
620
|
+
//#endregion
|
|
621
|
+
//#region ../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js
|
|
622
|
+
const processOk = (process) => !!process && typeof process === "object" && typeof process.removeListener === "function" && typeof process.emit === "function" && typeof process.reallyExit === "function" && typeof process.listeners === "function" && typeof process.kill === "function" && typeof process.pid === "number" && typeof process.on === "function";
|
|
623
|
+
const kExitEmitter = Symbol.for("signal-exit emitter");
|
|
624
|
+
const global = globalThis;
|
|
625
|
+
const ObjectDefineProperty = Object.defineProperty.bind(Object);
|
|
626
|
+
var Emitter = class {
|
|
627
|
+
emitted = {
|
|
628
|
+
afterExit: false,
|
|
629
|
+
exit: false
|
|
630
|
+
};
|
|
631
|
+
listeners = {
|
|
632
|
+
afterExit: [],
|
|
633
|
+
exit: []
|
|
634
|
+
};
|
|
635
|
+
count = 0;
|
|
636
|
+
id = Math.random();
|
|
637
|
+
constructor() {
|
|
638
|
+
if (global[kExitEmitter]) return global[kExitEmitter];
|
|
639
|
+
ObjectDefineProperty(global, kExitEmitter, {
|
|
640
|
+
value: this,
|
|
641
|
+
writable: false,
|
|
642
|
+
enumerable: false,
|
|
643
|
+
configurable: false
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
on(ev, fn) {
|
|
647
|
+
this.listeners[ev].push(fn);
|
|
648
|
+
}
|
|
649
|
+
removeListener(ev, fn) {
|
|
650
|
+
const list = this.listeners[ev];
|
|
651
|
+
const i = list.indexOf(fn);
|
|
652
|
+
/* c8 ignore start */
|
|
653
|
+
if (i === -1) return;
|
|
654
|
+
/* c8 ignore stop */
|
|
655
|
+
if (i === 0 && list.length === 1) list.length = 0;
|
|
656
|
+
else list.splice(i, 1);
|
|
657
|
+
}
|
|
658
|
+
emit(ev, code, signal) {
|
|
659
|
+
if (this.emitted[ev]) return false;
|
|
660
|
+
this.emitted[ev] = true;
|
|
661
|
+
let ret = false;
|
|
662
|
+
for (const fn of this.listeners[ev]) ret = fn(code, signal) === true || ret;
|
|
663
|
+
if (ev === "exit") ret = this.emit("afterExit", code, signal) || ret;
|
|
664
|
+
return ret;
|
|
665
|
+
}
|
|
666
|
+
};
|
|
667
|
+
var SignalExitBase = class {};
|
|
668
|
+
const signalExitWrap = (handler) => {
|
|
669
|
+
return {
|
|
670
|
+
onExit(cb, opts) {
|
|
671
|
+
return handler.onExit(cb, opts);
|
|
672
|
+
},
|
|
673
|
+
load() {
|
|
674
|
+
return handler.load();
|
|
675
|
+
},
|
|
676
|
+
unload() {
|
|
677
|
+
return handler.unload();
|
|
678
|
+
}
|
|
679
|
+
};
|
|
680
|
+
};
|
|
681
|
+
var SignalExitFallback = class extends SignalExitBase {
|
|
682
|
+
onExit() {
|
|
683
|
+
return () => {};
|
|
684
|
+
}
|
|
685
|
+
load() {}
|
|
686
|
+
unload() {}
|
|
687
|
+
};
|
|
688
|
+
var SignalExit = class extends SignalExitBase {
|
|
689
|
+
/* c8 ignore start */
|
|
690
|
+
#hupSig = process$2.platform === "win32" ? "SIGINT" : "SIGHUP";
|
|
691
|
+
/* c8 ignore stop */
|
|
692
|
+
#emitter = new Emitter();
|
|
693
|
+
#process;
|
|
694
|
+
#originalProcessEmit;
|
|
695
|
+
#originalProcessReallyExit;
|
|
696
|
+
#sigListeners = {};
|
|
697
|
+
#loaded = false;
|
|
698
|
+
constructor(process) {
|
|
699
|
+
super();
|
|
700
|
+
this.#process = process;
|
|
701
|
+
this.#sigListeners = {};
|
|
702
|
+
for (const sig of signals) this.#sigListeners[sig] = () => {
|
|
703
|
+
const listeners = this.#process.listeners(sig);
|
|
704
|
+
let { count } = this.#emitter;
|
|
705
|
+
/* c8 ignore start */
|
|
706
|
+
const p = process;
|
|
707
|
+
if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") count += p.__signal_exit_emitter__.count;
|
|
708
|
+
/* c8 ignore stop */
|
|
709
|
+
if (listeners.length === count) {
|
|
710
|
+
this.unload();
|
|
711
|
+
const ret = this.#emitter.emit("exit", null, sig);
|
|
712
|
+
/* c8 ignore start */
|
|
713
|
+
const s = sig === "SIGHUP" ? this.#hupSig : sig;
|
|
714
|
+
if (!ret) process.kill(process.pid, s);
|
|
715
|
+
}
|
|
716
|
+
};
|
|
717
|
+
this.#originalProcessReallyExit = process.reallyExit;
|
|
718
|
+
this.#originalProcessEmit = process.emit;
|
|
719
|
+
}
|
|
720
|
+
onExit(cb, opts) {
|
|
721
|
+
/* c8 ignore start */
|
|
722
|
+
if (!processOk(this.#process)) return () => {};
|
|
723
|
+
/* c8 ignore stop */
|
|
724
|
+
if (this.#loaded === false) this.load();
|
|
725
|
+
const ev = opts?.alwaysLast ? "afterExit" : "exit";
|
|
726
|
+
this.#emitter.on(ev, cb);
|
|
727
|
+
return () => {
|
|
728
|
+
this.#emitter.removeListener(ev, cb);
|
|
729
|
+
if (this.#emitter.listeners["exit"].length === 0 && this.#emitter.listeners["afterExit"].length === 0) this.unload();
|
|
730
|
+
};
|
|
731
|
+
}
|
|
732
|
+
load() {
|
|
733
|
+
if (this.#loaded) return;
|
|
734
|
+
this.#loaded = true;
|
|
735
|
+
this.#emitter.count += 1;
|
|
736
|
+
for (const sig of signals) try {
|
|
737
|
+
const fn = this.#sigListeners[sig];
|
|
738
|
+
if (fn) this.#process.on(sig, fn);
|
|
739
|
+
} catch (_) {}
|
|
740
|
+
this.#process.emit = (ev, ...a) => {
|
|
741
|
+
return this.#processEmit(ev, ...a);
|
|
742
|
+
};
|
|
743
|
+
this.#process.reallyExit = (code) => {
|
|
744
|
+
return this.#processReallyExit(code);
|
|
745
|
+
};
|
|
746
|
+
}
|
|
747
|
+
unload() {
|
|
748
|
+
if (!this.#loaded) return;
|
|
749
|
+
this.#loaded = false;
|
|
750
|
+
signals.forEach((sig) => {
|
|
751
|
+
const listener = this.#sigListeners[sig];
|
|
752
|
+
/* c8 ignore start */
|
|
753
|
+
if (!listener) throw new Error("Listener not defined for signal: " + sig);
|
|
754
|
+
/* c8 ignore stop */
|
|
755
|
+
try {
|
|
756
|
+
this.#process.removeListener(sig, listener);
|
|
757
|
+
} catch (_) {}
|
|
758
|
+
/* c8 ignore stop */
|
|
759
|
+
});
|
|
760
|
+
this.#process.emit = this.#originalProcessEmit;
|
|
761
|
+
this.#process.reallyExit = this.#originalProcessReallyExit;
|
|
762
|
+
this.#emitter.count -= 1;
|
|
763
|
+
}
|
|
764
|
+
#processReallyExit(code) {
|
|
765
|
+
/* c8 ignore start */
|
|
766
|
+
if (!processOk(this.#process)) return 0;
|
|
767
|
+
this.#process.exitCode = code || 0;
|
|
768
|
+
/* c8 ignore stop */
|
|
769
|
+
this.#emitter.emit("exit", this.#process.exitCode, null);
|
|
770
|
+
return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);
|
|
771
|
+
}
|
|
772
|
+
#processEmit(ev, ...args) {
|
|
773
|
+
const og = this.#originalProcessEmit;
|
|
774
|
+
if (ev === "exit" && processOk(this.#process)) {
|
|
775
|
+
if (typeof args[0] === "number") this.#process.exitCode = args[0];
|
|
776
|
+
/* c8 ignore start */
|
|
777
|
+
const ret = og.call(this.#process, ev, ...args);
|
|
778
|
+
/* c8 ignore start */
|
|
779
|
+
this.#emitter.emit("exit", this.#process.exitCode, null);
|
|
780
|
+
/* c8 ignore stop */
|
|
781
|
+
return ret;
|
|
782
|
+
} else return og.call(this.#process, ev, ...args);
|
|
783
|
+
}
|
|
784
|
+
};
|
|
785
|
+
const process$2 = globalThis.process;
|
|
786
|
+
const { onExit, load, unload } = signalExitWrap(processOk(process$2) ? new SignalExit(process$2) : new SignalExitFallback());
|
|
787
|
+
//#endregion
|
|
788
|
+
//#region ../../node_modules/.pnpm/restore-cursor@5.1.0/node_modules/restore-cursor/index.js
|
|
789
|
+
const terminal = process$1.stderr.isTTY ? process$1.stderr : process$1.stdout.isTTY ? process$1.stdout : void 0;
|
|
790
|
+
const restoreCursor = terminal ? onetime(() => {
|
|
791
|
+
onExit(() => {
|
|
792
|
+
terminal.write("\x1B[?25h");
|
|
793
|
+
}, { alwaysLast: true });
|
|
794
|
+
}) : () => {};
|
|
795
|
+
//#endregion
|
|
796
|
+
//#region ../../node_modules/.pnpm/cli-cursor@5.0.0/node_modules/cli-cursor/index.js
|
|
797
|
+
let isHidden = false;
|
|
798
|
+
const cliCursor = {};
|
|
799
|
+
cliCursor.show = (writableStream = process$1.stderr) => {
|
|
800
|
+
if (!writableStream.isTTY) return;
|
|
801
|
+
isHidden = false;
|
|
802
|
+
writableStream.write("\x1B[?25h");
|
|
803
|
+
};
|
|
804
|
+
cliCursor.hide = (writableStream = process$1.stderr) => {
|
|
805
|
+
if (!writableStream.isTTY) return;
|
|
806
|
+
restoreCursor();
|
|
807
|
+
isHidden = true;
|
|
808
|
+
writableStream.write("\x1B[?25l");
|
|
809
|
+
};
|
|
810
|
+
cliCursor.toggle = (force, writableStream) => {
|
|
811
|
+
if (force !== void 0) isHidden = force;
|
|
812
|
+
if (isHidden) cliCursor.show(writableStream);
|
|
813
|
+
else cliCursor.hide(writableStream);
|
|
814
|
+
};
|
|
815
|
+
//#endregion
|
|
816
|
+
//#region ../../node_modules/.pnpm/cli-spinners@3.4.0/node_modules/cli-spinners/index.js
|
|
817
|
+
var cli_spinners_default = {
|
|
818
|
+
dots: {
|
|
819
|
+
"interval": 80,
|
|
820
|
+
"frames": [
|
|
821
|
+
"⠋",
|
|
822
|
+
"⠙",
|
|
823
|
+
"⠹",
|
|
824
|
+
"⠸",
|
|
825
|
+
"⠼",
|
|
826
|
+
"⠴",
|
|
827
|
+
"⠦",
|
|
828
|
+
"⠧",
|
|
829
|
+
"⠇",
|
|
830
|
+
"⠏"
|
|
831
|
+
]
|
|
832
|
+
},
|
|
833
|
+
dots2: {
|
|
834
|
+
"interval": 80,
|
|
835
|
+
"frames": [
|
|
836
|
+
"⣾",
|
|
837
|
+
"⣽",
|
|
838
|
+
"⣻",
|
|
839
|
+
"⢿",
|
|
840
|
+
"⡿",
|
|
841
|
+
"⣟",
|
|
842
|
+
"⣯",
|
|
843
|
+
"⣷"
|
|
844
|
+
]
|
|
845
|
+
},
|
|
846
|
+
dots3: {
|
|
847
|
+
"interval": 80,
|
|
848
|
+
"frames": [
|
|
849
|
+
"⠋",
|
|
850
|
+
"⠙",
|
|
851
|
+
"⠚",
|
|
852
|
+
"⠞",
|
|
853
|
+
"⠖",
|
|
854
|
+
"⠦",
|
|
855
|
+
"⠴",
|
|
856
|
+
"⠲",
|
|
857
|
+
"⠳",
|
|
858
|
+
"⠓"
|
|
859
|
+
]
|
|
860
|
+
},
|
|
861
|
+
dots4: {
|
|
862
|
+
"interval": 80,
|
|
863
|
+
"frames": [
|
|
864
|
+
"⠄",
|
|
865
|
+
"⠆",
|
|
866
|
+
"⠇",
|
|
867
|
+
"⠋",
|
|
868
|
+
"⠙",
|
|
869
|
+
"⠸",
|
|
870
|
+
"⠰",
|
|
871
|
+
"⠠",
|
|
872
|
+
"⠰",
|
|
873
|
+
"⠸",
|
|
874
|
+
"⠙",
|
|
875
|
+
"⠋",
|
|
876
|
+
"⠇",
|
|
877
|
+
"⠆"
|
|
878
|
+
]
|
|
879
|
+
},
|
|
880
|
+
dots5: {
|
|
881
|
+
"interval": 80,
|
|
882
|
+
"frames": [
|
|
883
|
+
"⠋",
|
|
884
|
+
"⠙",
|
|
885
|
+
"⠚",
|
|
886
|
+
"⠒",
|
|
887
|
+
"⠂",
|
|
888
|
+
"⠂",
|
|
889
|
+
"⠒",
|
|
890
|
+
"⠲",
|
|
891
|
+
"⠴",
|
|
892
|
+
"⠦",
|
|
893
|
+
"⠖",
|
|
894
|
+
"⠒",
|
|
895
|
+
"⠐",
|
|
896
|
+
"⠐",
|
|
897
|
+
"⠒",
|
|
898
|
+
"⠓",
|
|
899
|
+
"⠋"
|
|
900
|
+
]
|
|
901
|
+
},
|
|
902
|
+
dots6: {
|
|
903
|
+
"interval": 80,
|
|
904
|
+
"frames": [
|
|
905
|
+
"⠁",
|
|
906
|
+
"⠉",
|
|
907
|
+
"⠙",
|
|
908
|
+
"⠚",
|
|
909
|
+
"⠒",
|
|
910
|
+
"⠂",
|
|
911
|
+
"⠂",
|
|
912
|
+
"⠒",
|
|
913
|
+
"⠲",
|
|
914
|
+
"⠴",
|
|
915
|
+
"⠤",
|
|
916
|
+
"⠄",
|
|
917
|
+
"⠄",
|
|
918
|
+
"⠤",
|
|
919
|
+
"⠴",
|
|
920
|
+
"⠲",
|
|
921
|
+
"⠒",
|
|
922
|
+
"⠂",
|
|
923
|
+
"⠂",
|
|
924
|
+
"⠒",
|
|
925
|
+
"⠚",
|
|
926
|
+
"⠙",
|
|
927
|
+
"⠉",
|
|
928
|
+
"⠁"
|
|
929
|
+
]
|
|
930
|
+
},
|
|
931
|
+
dots7: {
|
|
932
|
+
"interval": 80,
|
|
933
|
+
"frames": [
|
|
934
|
+
"⠈",
|
|
935
|
+
"⠉",
|
|
936
|
+
"⠋",
|
|
937
|
+
"⠓",
|
|
938
|
+
"⠒",
|
|
939
|
+
"⠐",
|
|
940
|
+
"⠐",
|
|
941
|
+
"⠒",
|
|
942
|
+
"⠖",
|
|
943
|
+
"⠦",
|
|
944
|
+
"⠤",
|
|
945
|
+
"⠠",
|
|
946
|
+
"⠠",
|
|
947
|
+
"⠤",
|
|
948
|
+
"⠦",
|
|
949
|
+
"⠖",
|
|
950
|
+
"⠒",
|
|
951
|
+
"⠐",
|
|
952
|
+
"⠐",
|
|
953
|
+
"⠒",
|
|
954
|
+
"⠓",
|
|
955
|
+
"⠋",
|
|
956
|
+
"⠉",
|
|
957
|
+
"⠈"
|
|
958
|
+
]
|
|
959
|
+
},
|
|
960
|
+
dots8: {
|
|
961
|
+
"interval": 80,
|
|
962
|
+
"frames": [
|
|
963
|
+
"⠁",
|
|
964
|
+
"⠁",
|
|
965
|
+
"⠉",
|
|
966
|
+
"⠙",
|
|
967
|
+
"⠚",
|
|
968
|
+
"⠒",
|
|
969
|
+
"⠂",
|
|
970
|
+
"⠂",
|
|
971
|
+
"⠒",
|
|
972
|
+
"⠲",
|
|
973
|
+
"⠴",
|
|
974
|
+
"⠤",
|
|
975
|
+
"⠄",
|
|
976
|
+
"⠄",
|
|
977
|
+
"⠤",
|
|
978
|
+
"⠠",
|
|
979
|
+
"⠠",
|
|
980
|
+
"⠤",
|
|
981
|
+
"⠦",
|
|
982
|
+
"⠖",
|
|
983
|
+
"⠒",
|
|
984
|
+
"⠐",
|
|
985
|
+
"⠐",
|
|
986
|
+
"⠒",
|
|
987
|
+
"⠓",
|
|
988
|
+
"⠋",
|
|
989
|
+
"⠉",
|
|
990
|
+
"⠈",
|
|
991
|
+
"⠈"
|
|
992
|
+
]
|
|
993
|
+
},
|
|
994
|
+
dots9: {
|
|
995
|
+
"interval": 80,
|
|
996
|
+
"frames": [
|
|
997
|
+
"⢹",
|
|
998
|
+
"⢺",
|
|
999
|
+
"⢼",
|
|
1000
|
+
"⣸",
|
|
1001
|
+
"⣇",
|
|
1002
|
+
"⡧",
|
|
1003
|
+
"⡗",
|
|
1004
|
+
"⡏"
|
|
1005
|
+
]
|
|
1006
|
+
},
|
|
1007
|
+
dots10: {
|
|
1008
|
+
"interval": 80,
|
|
1009
|
+
"frames": [
|
|
1010
|
+
"⢄",
|
|
1011
|
+
"⢂",
|
|
1012
|
+
"⢁",
|
|
1013
|
+
"⡁",
|
|
1014
|
+
"⡈",
|
|
1015
|
+
"⡐",
|
|
1016
|
+
"⡠"
|
|
1017
|
+
]
|
|
1018
|
+
},
|
|
1019
|
+
dots11: {
|
|
1020
|
+
"interval": 100,
|
|
1021
|
+
"frames": [
|
|
1022
|
+
"⠁",
|
|
1023
|
+
"⠂",
|
|
1024
|
+
"⠄",
|
|
1025
|
+
"⡀",
|
|
1026
|
+
"⢀",
|
|
1027
|
+
"⠠",
|
|
1028
|
+
"⠐",
|
|
1029
|
+
"⠈"
|
|
1030
|
+
]
|
|
1031
|
+
},
|
|
1032
|
+
dots12: {
|
|
1033
|
+
"interval": 80,
|
|
1034
|
+
"frames": [
|
|
1035
|
+
"⢀⠀",
|
|
1036
|
+
"⡀⠀",
|
|
1037
|
+
"⠄⠀",
|
|
1038
|
+
"⢂⠀",
|
|
1039
|
+
"⡂⠀",
|
|
1040
|
+
"⠅⠀",
|
|
1041
|
+
"⢃⠀",
|
|
1042
|
+
"⡃⠀",
|
|
1043
|
+
"⠍⠀",
|
|
1044
|
+
"⢋⠀",
|
|
1045
|
+
"⡋⠀",
|
|
1046
|
+
"⠍⠁",
|
|
1047
|
+
"⢋⠁",
|
|
1048
|
+
"⡋⠁",
|
|
1049
|
+
"⠍⠉",
|
|
1050
|
+
"⠋⠉",
|
|
1051
|
+
"⠋⠉",
|
|
1052
|
+
"⠉⠙",
|
|
1053
|
+
"⠉⠙",
|
|
1054
|
+
"⠉⠩",
|
|
1055
|
+
"⠈⢙",
|
|
1056
|
+
"⠈⡙",
|
|
1057
|
+
"⢈⠩",
|
|
1058
|
+
"⡀⢙",
|
|
1059
|
+
"⠄⡙",
|
|
1060
|
+
"⢂⠩",
|
|
1061
|
+
"⡂⢘",
|
|
1062
|
+
"⠅⡘",
|
|
1063
|
+
"⢃⠨",
|
|
1064
|
+
"⡃⢐",
|
|
1065
|
+
"⠍⡐",
|
|
1066
|
+
"⢋⠠",
|
|
1067
|
+
"⡋⢀",
|
|
1068
|
+
"⠍⡁",
|
|
1069
|
+
"⢋⠁",
|
|
1070
|
+
"⡋⠁",
|
|
1071
|
+
"⠍⠉",
|
|
1072
|
+
"⠋⠉",
|
|
1073
|
+
"⠋⠉",
|
|
1074
|
+
"⠉⠙",
|
|
1075
|
+
"⠉⠙",
|
|
1076
|
+
"⠉⠩",
|
|
1077
|
+
"⠈⢙",
|
|
1078
|
+
"⠈⡙",
|
|
1079
|
+
"⠈⠩",
|
|
1080
|
+
"⠀⢙",
|
|
1081
|
+
"⠀⡙",
|
|
1082
|
+
"⠀⠩",
|
|
1083
|
+
"⠀⢘",
|
|
1084
|
+
"⠀⡘",
|
|
1085
|
+
"⠀⠨",
|
|
1086
|
+
"⠀⢐",
|
|
1087
|
+
"⠀⡐",
|
|
1088
|
+
"⠀⠠",
|
|
1089
|
+
"⠀⢀",
|
|
1090
|
+
"⠀⡀"
|
|
1091
|
+
]
|
|
1092
|
+
},
|
|
1093
|
+
dots13: {
|
|
1094
|
+
"interval": 80,
|
|
1095
|
+
"frames": [
|
|
1096
|
+
"⣼",
|
|
1097
|
+
"⣹",
|
|
1098
|
+
"⢻",
|
|
1099
|
+
"⠿",
|
|
1100
|
+
"⡟",
|
|
1101
|
+
"⣏",
|
|
1102
|
+
"⣧",
|
|
1103
|
+
"⣶"
|
|
1104
|
+
]
|
|
1105
|
+
},
|
|
1106
|
+
dots14: {
|
|
1107
|
+
"interval": 80,
|
|
1108
|
+
"frames": [
|
|
1109
|
+
"⠉⠉",
|
|
1110
|
+
"⠈⠙",
|
|
1111
|
+
"⠀⠹",
|
|
1112
|
+
"⠀⢸",
|
|
1113
|
+
"⠀⣰",
|
|
1114
|
+
"⢀⣠",
|
|
1115
|
+
"⣀⣀",
|
|
1116
|
+
"⣄⡀",
|
|
1117
|
+
"⣆⠀",
|
|
1118
|
+
"⡇⠀",
|
|
1119
|
+
"⠏⠀",
|
|
1120
|
+
"⠋⠁"
|
|
1121
|
+
]
|
|
1122
|
+
},
|
|
1123
|
+
dots8Bit: {
|
|
1124
|
+
"interval": 80,
|
|
1125
|
+
"frames": [
|
|
1126
|
+
"⠀",
|
|
1127
|
+
"⠁",
|
|
1128
|
+
"⠂",
|
|
1129
|
+
"⠃",
|
|
1130
|
+
"⠄",
|
|
1131
|
+
"⠅",
|
|
1132
|
+
"⠆",
|
|
1133
|
+
"⠇",
|
|
1134
|
+
"⡀",
|
|
1135
|
+
"⡁",
|
|
1136
|
+
"⡂",
|
|
1137
|
+
"⡃",
|
|
1138
|
+
"⡄",
|
|
1139
|
+
"⡅",
|
|
1140
|
+
"⡆",
|
|
1141
|
+
"⡇",
|
|
1142
|
+
"⠈",
|
|
1143
|
+
"⠉",
|
|
1144
|
+
"⠊",
|
|
1145
|
+
"⠋",
|
|
1146
|
+
"⠌",
|
|
1147
|
+
"⠍",
|
|
1148
|
+
"⠎",
|
|
1149
|
+
"⠏",
|
|
1150
|
+
"⡈",
|
|
1151
|
+
"⡉",
|
|
1152
|
+
"⡊",
|
|
1153
|
+
"⡋",
|
|
1154
|
+
"⡌",
|
|
1155
|
+
"⡍",
|
|
1156
|
+
"⡎",
|
|
1157
|
+
"⡏",
|
|
1158
|
+
"⠐",
|
|
1159
|
+
"⠑",
|
|
1160
|
+
"⠒",
|
|
1161
|
+
"⠓",
|
|
1162
|
+
"⠔",
|
|
1163
|
+
"⠕",
|
|
1164
|
+
"⠖",
|
|
1165
|
+
"⠗",
|
|
1166
|
+
"⡐",
|
|
1167
|
+
"⡑",
|
|
1168
|
+
"⡒",
|
|
1169
|
+
"⡓",
|
|
1170
|
+
"⡔",
|
|
1171
|
+
"⡕",
|
|
1172
|
+
"⡖",
|
|
1173
|
+
"⡗",
|
|
1174
|
+
"⠘",
|
|
1175
|
+
"⠙",
|
|
1176
|
+
"⠚",
|
|
1177
|
+
"⠛",
|
|
1178
|
+
"⠜",
|
|
1179
|
+
"⠝",
|
|
1180
|
+
"⠞",
|
|
1181
|
+
"⠟",
|
|
1182
|
+
"⡘",
|
|
1183
|
+
"⡙",
|
|
1184
|
+
"⡚",
|
|
1185
|
+
"⡛",
|
|
1186
|
+
"⡜",
|
|
1187
|
+
"⡝",
|
|
1188
|
+
"⡞",
|
|
1189
|
+
"⡟",
|
|
1190
|
+
"⠠",
|
|
1191
|
+
"⠡",
|
|
1192
|
+
"⠢",
|
|
1193
|
+
"⠣",
|
|
1194
|
+
"⠤",
|
|
1195
|
+
"⠥",
|
|
1196
|
+
"⠦",
|
|
1197
|
+
"⠧",
|
|
1198
|
+
"⡠",
|
|
1199
|
+
"⡡",
|
|
1200
|
+
"⡢",
|
|
1201
|
+
"⡣",
|
|
1202
|
+
"⡤",
|
|
1203
|
+
"⡥",
|
|
1204
|
+
"⡦",
|
|
1205
|
+
"⡧",
|
|
1206
|
+
"⠨",
|
|
1207
|
+
"⠩",
|
|
1208
|
+
"⠪",
|
|
1209
|
+
"⠫",
|
|
1210
|
+
"⠬",
|
|
1211
|
+
"⠭",
|
|
1212
|
+
"⠮",
|
|
1213
|
+
"⠯",
|
|
1214
|
+
"⡨",
|
|
1215
|
+
"⡩",
|
|
1216
|
+
"⡪",
|
|
1217
|
+
"⡫",
|
|
1218
|
+
"⡬",
|
|
1219
|
+
"⡭",
|
|
1220
|
+
"⡮",
|
|
1221
|
+
"⡯",
|
|
1222
|
+
"⠰",
|
|
1223
|
+
"⠱",
|
|
1224
|
+
"⠲",
|
|
1225
|
+
"⠳",
|
|
1226
|
+
"⠴",
|
|
1227
|
+
"⠵",
|
|
1228
|
+
"⠶",
|
|
1229
|
+
"⠷",
|
|
1230
|
+
"⡰",
|
|
1231
|
+
"⡱",
|
|
1232
|
+
"⡲",
|
|
1233
|
+
"⡳",
|
|
1234
|
+
"⡴",
|
|
1235
|
+
"⡵",
|
|
1236
|
+
"⡶",
|
|
1237
|
+
"⡷",
|
|
1238
|
+
"⠸",
|
|
1239
|
+
"⠹",
|
|
1240
|
+
"⠺",
|
|
1241
|
+
"⠻",
|
|
1242
|
+
"⠼",
|
|
1243
|
+
"⠽",
|
|
1244
|
+
"⠾",
|
|
1245
|
+
"⠿",
|
|
1246
|
+
"⡸",
|
|
1247
|
+
"⡹",
|
|
1248
|
+
"⡺",
|
|
1249
|
+
"⡻",
|
|
1250
|
+
"⡼",
|
|
1251
|
+
"⡽",
|
|
1252
|
+
"⡾",
|
|
1253
|
+
"⡿",
|
|
1254
|
+
"⢀",
|
|
1255
|
+
"⢁",
|
|
1256
|
+
"⢂",
|
|
1257
|
+
"⢃",
|
|
1258
|
+
"⢄",
|
|
1259
|
+
"⢅",
|
|
1260
|
+
"⢆",
|
|
1261
|
+
"⢇",
|
|
1262
|
+
"⣀",
|
|
1263
|
+
"⣁",
|
|
1264
|
+
"⣂",
|
|
1265
|
+
"⣃",
|
|
1266
|
+
"⣄",
|
|
1267
|
+
"⣅",
|
|
1268
|
+
"⣆",
|
|
1269
|
+
"⣇",
|
|
1270
|
+
"⢈",
|
|
1271
|
+
"⢉",
|
|
1272
|
+
"⢊",
|
|
1273
|
+
"⢋",
|
|
1274
|
+
"⢌",
|
|
1275
|
+
"⢍",
|
|
1276
|
+
"⢎",
|
|
1277
|
+
"⢏",
|
|
1278
|
+
"⣈",
|
|
1279
|
+
"⣉",
|
|
1280
|
+
"⣊",
|
|
1281
|
+
"⣋",
|
|
1282
|
+
"⣌",
|
|
1283
|
+
"⣍",
|
|
1284
|
+
"⣎",
|
|
1285
|
+
"⣏",
|
|
1286
|
+
"⢐",
|
|
1287
|
+
"⢑",
|
|
1288
|
+
"⢒",
|
|
1289
|
+
"⢓",
|
|
1290
|
+
"⢔",
|
|
1291
|
+
"⢕",
|
|
1292
|
+
"⢖",
|
|
1293
|
+
"⢗",
|
|
1294
|
+
"⣐",
|
|
1295
|
+
"⣑",
|
|
1296
|
+
"⣒",
|
|
1297
|
+
"⣓",
|
|
1298
|
+
"⣔",
|
|
1299
|
+
"⣕",
|
|
1300
|
+
"⣖",
|
|
1301
|
+
"⣗",
|
|
1302
|
+
"⢘",
|
|
1303
|
+
"⢙",
|
|
1304
|
+
"⢚",
|
|
1305
|
+
"⢛",
|
|
1306
|
+
"⢜",
|
|
1307
|
+
"⢝",
|
|
1308
|
+
"⢞",
|
|
1309
|
+
"⢟",
|
|
1310
|
+
"⣘",
|
|
1311
|
+
"⣙",
|
|
1312
|
+
"⣚",
|
|
1313
|
+
"⣛",
|
|
1314
|
+
"⣜",
|
|
1315
|
+
"⣝",
|
|
1316
|
+
"⣞",
|
|
1317
|
+
"⣟",
|
|
1318
|
+
"⢠",
|
|
1319
|
+
"⢡",
|
|
1320
|
+
"⢢",
|
|
1321
|
+
"⢣",
|
|
1322
|
+
"⢤",
|
|
1323
|
+
"⢥",
|
|
1324
|
+
"⢦",
|
|
1325
|
+
"⢧",
|
|
1326
|
+
"⣠",
|
|
1327
|
+
"⣡",
|
|
1328
|
+
"⣢",
|
|
1329
|
+
"⣣",
|
|
1330
|
+
"⣤",
|
|
1331
|
+
"⣥",
|
|
1332
|
+
"⣦",
|
|
1333
|
+
"⣧",
|
|
1334
|
+
"⢨",
|
|
1335
|
+
"⢩",
|
|
1336
|
+
"⢪",
|
|
1337
|
+
"⢫",
|
|
1338
|
+
"⢬",
|
|
1339
|
+
"⢭",
|
|
1340
|
+
"⢮",
|
|
1341
|
+
"⢯",
|
|
1342
|
+
"⣨",
|
|
1343
|
+
"⣩",
|
|
1344
|
+
"⣪",
|
|
1345
|
+
"⣫",
|
|
1346
|
+
"⣬",
|
|
1347
|
+
"⣭",
|
|
1348
|
+
"⣮",
|
|
1349
|
+
"⣯",
|
|
1350
|
+
"⢰",
|
|
1351
|
+
"⢱",
|
|
1352
|
+
"⢲",
|
|
1353
|
+
"⢳",
|
|
1354
|
+
"⢴",
|
|
1355
|
+
"⢵",
|
|
1356
|
+
"⢶",
|
|
1357
|
+
"⢷",
|
|
1358
|
+
"⣰",
|
|
1359
|
+
"⣱",
|
|
1360
|
+
"⣲",
|
|
1361
|
+
"⣳",
|
|
1362
|
+
"⣴",
|
|
1363
|
+
"⣵",
|
|
1364
|
+
"⣶",
|
|
1365
|
+
"⣷",
|
|
1366
|
+
"⢸",
|
|
1367
|
+
"⢹",
|
|
1368
|
+
"⢺",
|
|
1369
|
+
"⢻",
|
|
1370
|
+
"⢼",
|
|
1371
|
+
"⢽",
|
|
1372
|
+
"⢾",
|
|
1373
|
+
"⢿",
|
|
1374
|
+
"⣸",
|
|
1375
|
+
"⣹",
|
|
1376
|
+
"⣺",
|
|
1377
|
+
"⣻",
|
|
1378
|
+
"⣼",
|
|
1379
|
+
"⣽",
|
|
1380
|
+
"⣾",
|
|
1381
|
+
"⣿"
|
|
1382
|
+
]
|
|
1383
|
+
},
|
|
1384
|
+
dotsCircle: {
|
|
1385
|
+
"interval": 80,
|
|
1386
|
+
"frames": [
|
|
1387
|
+
"⢎ ",
|
|
1388
|
+
"⠎⠁",
|
|
1389
|
+
"⠊⠑",
|
|
1390
|
+
"⠈⠱",
|
|
1391
|
+
" ⡱",
|
|
1392
|
+
"⢀⡰",
|
|
1393
|
+
"⢄⡠",
|
|
1394
|
+
"⢆⡀"
|
|
1395
|
+
]
|
|
1396
|
+
},
|
|
1397
|
+
sand: {
|
|
1398
|
+
"interval": 80,
|
|
1399
|
+
"frames": [
|
|
1400
|
+
"⠁",
|
|
1401
|
+
"⠂",
|
|
1402
|
+
"⠄",
|
|
1403
|
+
"⡀",
|
|
1404
|
+
"⡈",
|
|
1405
|
+
"⡐",
|
|
1406
|
+
"⡠",
|
|
1407
|
+
"⣀",
|
|
1408
|
+
"⣁",
|
|
1409
|
+
"⣂",
|
|
1410
|
+
"⣄",
|
|
1411
|
+
"⣌",
|
|
1412
|
+
"⣔",
|
|
1413
|
+
"⣤",
|
|
1414
|
+
"⣥",
|
|
1415
|
+
"⣦",
|
|
1416
|
+
"⣮",
|
|
1417
|
+
"⣶",
|
|
1418
|
+
"⣷",
|
|
1419
|
+
"⣿",
|
|
1420
|
+
"⡿",
|
|
1421
|
+
"⠿",
|
|
1422
|
+
"⢟",
|
|
1423
|
+
"⠟",
|
|
1424
|
+
"⡛",
|
|
1425
|
+
"⠛",
|
|
1426
|
+
"⠫",
|
|
1427
|
+
"⢋",
|
|
1428
|
+
"⠋",
|
|
1429
|
+
"⠍",
|
|
1430
|
+
"⡉",
|
|
1431
|
+
"⠉",
|
|
1432
|
+
"⠑",
|
|
1433
|
+
"⠡",
|
|
1434
|
+
"⢁"
|
|
1435
|
+
]
|
|
1436
|
+
},
|
|
1437
|
+
line: {
|
|
1438
|
+
"interval": 130,
|
|
1439
|
+
"frames": [
|
|
1440
|
+
"-",
|
|
1441
|
+
"\\",
|
|
1442
|
+
"|",
|
|
1443
|
+
"/"
|
|
1444
|
+
]
|
|
1445
|
+
},
|
|
1446
|
+
line2: {
|
|
1447
|
+
"interval": 100,
|
|
1448
|
+
"frames": [
|
|
1449
|
+
"⠂",
|
|
1450
|
+
"-",
|
|
1451
|
+
"–",
|
|
1452
|
+
"—",
|
|
1453
|
+
"–",
|
|
1454
|
+
"-"
|
|
1455
|
+
]
|
|
1456
|
+
},
|
|
1457
|
+
rollingLine: {
|
|
1458
|
+
"interval": 80,
|
|
1459
|
+
"frames": [
|
|
1460
|
+
"/ ",
|
|
1461
|
+
" - ",
|
|
1462
|
+
" \\ ",
|
|
1463
|
+
" |",
|
|
1464
|
+
" |",
|
|
1465
|
+
" \\ ",
|
|
1466
|
+
" - ",
|
|
1467
|
+
"/ "
|
|
1468
|
+
]
|
|
1469
|
+
},
|
|
1470
|
+
pipe: {
|
|
1471
|
+
"interval": 100,
|
|
1472
|
+
"frames": [
|
|
1473
|
+
"┤",
|
|
1474
|
+
"┘",
|
|
1475
|
+
"┴",
|
|
1476
|
+
"└",
|
|
1477
|
+
"├",
|
|
1478
|
+
"┌",
|
|
1479
|
+
"┬",
|
|
1480
|
+
"┐"
|
|
1481
|
+
]
|
|
1482
|
+
},
|
|
1483
|
+
simpleDots: {
|
|
1484
|
+
"interval": 400,
|
|
1485
|
+
"frames": [
|
|
1486
|
+
". ",
|
|
1487
|
+
".. ",
|
|
1488
|
+
"...",
|
|
1489
|
+
" "
|
|
1490
|
+
]
|
|
1491
|
+
},
|
|
1492
|
+
simpleDotsScrolling: {
|
|
1493
|
+
"interval": 200,
|
|
1494
|
+
"frames": [
|
|
1495
|
+
". ",
|
|
1496
|
+
".. ",
|
|
1497
|
+
"...",
|
|
1498
|
+
" ..",
|
|
1499
|
+
" .",
|
|
1500
|
+
" "
|
|
1501
|
+
]
|
|
1502
|
+
},
|
|
1503
|
+
star: {
|
|
1504
|
+
"interval": 70,
|
|
1505
|
+
"frames": [
|
|
1506
|
+
"✶",
|
|
1507
|
+
"✸",
|
|
1508
|
+
"✹",
|
|
1509
|
+
"✺",
|
|
1510
|
+
"✹",
|
|
1511
|
+
"✷"
|
|
1512
|
+
]
|
|
1513
|
+
},
|
|
1514
|
+
star2: {
|
|
1515
|
+
"interval": 80,
|
|
1516
|
+
"frames": [
|
|
1517
|
+
"+",
|
|
1518
|
+
"x",
|
|
1519
|
+
"*"
|
|
1520
|
+
]
|
|
1521
|
+
},
|
|
1522
|
+
flip: {
|
|
1523
|
+
"interval": 70,
|
|
1524
|
+
"frames": [
|
|
1525
|
+
"_",
|
|
1526
|
+
"_",
|
|
1527
|
+
"_",
|
|
1528
|
+
"-",
|
|
1529
|
+
"`",
|
|
1530
|
+
"`",
|
|
1531
|
+
"'",
|
|
1532
|
+
"´",
|
|
1533
|
+
"-",
|
|
1534
|
+
"_",
|
|
1535
|
+
"_",
|
|
1536
|
+
"_"
|
|
1537
|
+
]
|
|
1538
|
+
},
|
|
1539
|
+
hamburger: {
|
|
1540
|
+
"interval": 100,
|
|
1541
|
+
"frames": [
|
|
1542
|
+
"☱",
|
|
1543
|
+
"☲",
|
|
1544
|
+
"☴"
|
|
1545
|
+
]
|
|
1546
|
+
},
|
|
1547
|
+
growVertical: {
|
|
1548
|
+
"interval": 120,
|
|
1549
|
+
"frames": [
|
|
1550
|
+
"▁",
|
|
1551
|
+
"▃",
|
|
1552
|
+
"▄",
|
|
1553
|
+
"▅",
|
|
1554
|
+
"▆",
|
|
1555
|
+
"▇",
|
|
1556
|
+
"▆",
|
|
1557
|
+
"▅",
|
|
1558
|
+
"▄",
|
|
1559
|
+
"▃"
|
|
1560
|
+
]
|
|
1561
|
+
},
|
|
1562
|
+
growHorizontal: {
|
|
1563
|
+
"interval": 120,
|
|
1564
|
+
"frames": [
|
|
1565
|
+
"▏",
|
|
1566
|
+
"▎",
|
|
1567
|
+
"▍",
|
|
1568
|
+
"▌",
|
|
1569
|
+
"▋",
|
|
1570
|
+
"▊",
|
|
1571
|
+
"▉",
|
|
1572
|
+
"▊",
|
|
1573
|
+
"▋",
|
|
1574
|
+
"▌",
|
|
1575
|
+
"▍",
|
|
1576
|
+
"▎"
|
|
1577
|
+
]
|
|
1578
|
+
},
|
|
1579
|
+
balloon: {
|
|
1580
|
+
"interval": 140,
|
|
1581
|
+
"frames": [
|
|
1582
|
+
" ",
|
|
1583
|
+
".",
|
|
1584
|
+
"o",
|
|
1585
|
+
"O",
|
|
1586
|
+
"@",
|
|
1587
|
+
"*",
|
|
1588
|
+
" "
|
|
1589
|
+
]
|
|
1590
|
+
},
|
|
1591
|
+
balloon2: {
|
|
1592
|
+
"interval": 120,
|
|
1593
|
+
"frames": [
|
|
1594
|
+
".",
|
|
1595
|
+
"o",
|
|
1596
|
+
"O",
|
|
1597
|
+
"°",
|
|
1598
|
+
"O",
|
|
1599
|
+
"o",
|
|
1600
|
+
"."
|
|
1601
|
+
]
|
|
1602
|
+
},
|
|
1603
|
+
noise: {
|
|
1604
|
+
"interval": 100,
|
|
1605
|
+
"frames": [
|
|
1606
|
+
"▓",
|
|
1607
|
+
"▒",
|
|
1608
|
+
"░"
|
|
1609
|
+
]
|
|
1610
|
+
},
|
|
1611
|
+
bounce: {
|
|
1612
|
+
"interval": 120,
|
|
1613
|
+
"frames": [
|
|
1614
|
+
"⠁",
|
|
1615
|
+
"⠂",
|
|
1616
|
+
"⠄",
|
|
1617
|
+
"⠂"
|
|
1618
|
+
]
|
|
1619
|
+
},
|
|
1620
|
+
boxBounce: {
|
|
1621
|
+
"interval": 120,
|
|
1622
|
+
"frames": [
|
|
1623
|
+
"▖",
|
|
1624
|
+
"▘",
|
|
1625
|
+
"▝",
|
|
1626
|
+
"▗"
|
|
1627
|
+
]
|
|
1628
|
+
},
|
|
1629
|
+
boxBounce2: {
|
|
1630
|
+
"interval": 100,
|
|
1631
|
+
"frames": [
|
|
1632
|
+
"▌",
|
|
1633
|
+
"▀",
|
|
1634
|
+
"▐",
|
|
1635
|
+
"▄"
|
|
1636
|
+
]
|
|
1637
|
+
},
|
|
1638
|
+
triangle: {
|
|
1639
|
+
"interval": 50,
|
|
1640
|
+
"frames": [
|
|
1641
|
+
"◢",
|
|
1642
|
+
"◣",
|
|
1643
|
+
"◤",
|
|
1644
|
+
"◥"
|
|
1645
|
+
]
|
|
1646
|
+
},
|
|
1647
|
+
binary: {
|
|
1648
|
+
"interval": 80,
|
|
1649
|
+
"frames": [
|
|
1650
|
+
"010010",
|
|
1651
|
+
"001100",
|
|
1652
|
+
"100101",
|
|
1653
|
+
"111010",
|
|
1654
|
+
"111101",
|
|
1655
|
+
"010111",
|
|
1656
|
+
"101011",
|
|
1657
|
+
"111000",
|
|
1658
|
+
"110011",
|
|
1659
|
+
"110101"
|
|
1660
|
+
]
|
|
1661
|
+
},
|
|
1662
|
+
arc: {
|
|
1663
|
+
"interval": 100,
|
|
1664
|
+
"frames": [
|
|
1665
|
+
"◜",
|
|
1666
|
+
"◠",
|
|
1667
|
+
"◝",
|
|
1668
|
+
"◞",
|
|
1669
|
+
"◡",
|
|
1670
|
+
"◟"
|
|
1671
|
+
]
|
|
1672
|
+
},
|
|
1673
|
+
circle: {
|
|
1674
|
+
"interval": 120,
|
|
1675
|
+
"frames": [
|
|
1676
|
+
"◡",
|
|
1677
|
+
"⊙",
|
|
1678
|
+
"◠"
|
|
1679
|
+
]
|
|
1680
|
+
},
|
|
1681
|
+
squareCorners: {
|
|
1682
|
+
"interval": 180,
|
|
1683
|
+
"frames": [
|
|
1684
|
+
"◰",
|
|
1685
|
+
"◳",
|
|
1686
|
+
"◲",
|
|
1687
|
+
"◱"
|
|
1688
|
+
]
|
|
1689
|
+
},
|
|
1690
|
+
circleQuarters: {
|
|
1691
|
+
"interval": 120,
|
|
1692
|
+
"frames": [
|
|
1693
|
+
"◴",
|
|
1694
|
+
"◷",
|
|
1695
|
+
"◶",
|
|
1696
|
+
"◵"
|
|
1697
|
+
]
|
|
1698
|
+
},
|
|
1699
|
+
circleHalves: {
|
|
1700
|
+
"interval": 50,
|
|
1701
|
+
"frames": [
|
|
1702
|
+
"◐",
|
|
1703
|
+
"◓",
|
|
1704
|
+
"◑",
|
|
1705
|
+
"◒"
|
|
1706
|
+
]
|
|
1707
|
+
},
|
|
1708
|
+
squish: {
|
|
1709
|
+
"interval": 100,
|
|
1710
|
+
"frames": ["╫", "╪"]
|
|
1711
|
+
},
|
|
1712
|
+
toggle: {
|
|
1713
|
+
"interval": 250,
|
|
1714
|
+
"frames": ["⊶", "⊷"]
|
|
1715
|
+
},
|
|
1716
|
+
toggle2: {
|
|
1717
|
+
"interval": 80,
|
|
1718
|
+
"frames": ["▫", "▪"]
|
|
1719
|
+
},
|
|
1720
|
+
toggle3: {
|
|
1721
|
+
"interval": 120,
|
|
1722
|
+
"frames": ["□", "■"]
|
|
1723
|
+
},
|
|
1724
|
+
toggle4: {
|
|
1725
|
+
"interval": 100,
|
|
1726
|
+
"frames": [
|
|
1727
|
+
"■",
|
|
1728
|
+
"□",
|
|
1729
|
+
"▪",
|
|
1730
|
+
"▫"
|
|
1731
|
+
]
|
|
1732
|
+
},
|
|
1733
|
+
toggle5: {
|
|
1734
|
+
"interval": 100,
|
|
1735
|
+
"frames": ["▮", "▯"]
|
|
1736
|
+
},
|
|
1737
|
+
toggle6: {
|
|
1738
|
+
"interval": 300,
|
|
1739
|
+
"frames": ["ဝ", "၀"]
|
|
1740
|
+
},
|
|
1741
|
+
toggle7: {
|
|
1742
|
+
"interval": 80,
|
|
1743
|
+
"frames": ["⦾", "⦿"]
|
|
1744
|
+
},
|
|
1745
|
+
toggle8: {
|
|
1746
|
+
"interval": 100,
|
|
1747
|
+
"frames": ["◍", "◌"]
|
|
1748
|
+
},
|
|
1749
|
+
toggle9: {
|
|
1750
|
+
"interval": 100,
|
|
1751
|
+
"frames": ["◉", "◎"]
|
|
1752
|
+
},
|
|
1753
|
+
toggle10: {
|
|
1754
|
+
"interval": 100,
|
|
1755
|
+
"frames": [
|
|
1756
|
+
"㊂",
|
|
1757
|
+
"㊀",
|
|
1758
|
+
"㊁"
|
|
1759
|
+
]
|
|
1760
|
+
},
|
|
1761
|
+
toggle11: {
|
|
1762
|
+
"interval": 50,
|
|
1763
|
+
"frames": ["⧇", "⧆"]
|
|
1764
|
+
},
|
|
1765
|
+
toggle12: {
|
|
1766
|
+
"interval": 120,
|
|
1767
|
+
"frames": ["☗", "☖"]
|
|
1768
|
+
},
|
|
1769
|
+
toggle13: {
|
|
1770
|
+
"interval": 80,
|
|
1771
|
+
"frames": [
|
|
1772
|
+
"=",
|
|
1773
|
+
"*",
|
|
1774
|
+
"-"
|
|
1775
|
+
]
|
|
1776
|
+
},
|
|
1777
|
+
arrow: {
|
|
1778
|
+
"interval": 100,
|
|
1779
|
+
"frames": [
|
|
1780
|
+
"←",
|
|
1781
|
+
"↖",
|
|
1782
|
+
"↑",
|
|
1783
|
+
"↗",
|
|
1784
|
+
"→",
|
|
1785
|
+
"↘",
|
|
1786
|
+
"↓",
|
|
1787
|
+
"↙"
|
|
1788
|
+
]
|
|
1789
|
+
},
|
|
1790
|
+
arrow2: {
|
|
1791
|
+
"interval": 80,
|
|
1792
|
+
"frames": [
|
|
1793
|
+
"⬆️ ",
|
|
1794
|
+
"↗️ ",
|
|
1795
|
+
"➡️ ",
|
|
1796
|
+
"↘️ ",
|
|
1797
|
+
"⬇️ ",
|
|
1798
|
+
"↙️ ",
|
|
1799
|
+
"⬅️ ",
|
|
1800
|
+
"↖️ "
|
|
1801
|
+
]
|
|
1802
|
+
},
|
|
1803
|
+
arrow3: {
|
|
1804
|
+
"interval": 120,
|
|
1805
|
+
"frames": [
|
|
1806
|
+
"▹▹▹▹▹",
|
|
1807
|
+
"▸▹▹▹▹",
|
|
1808
|
+
"▹▸▹▹▹",
|
|
1809
|
+
"▹▹▸▹▹",
|
|
1810
|
+
"▹▹▹▸▹",
|
|
1811
|
+
"▹▹▹▹▸"
|
|
1812
|
+
]
|
|
1813
|
+
},
|
|
1814
|
+
bouncingBar: {
|
|
1815
|
+
"interval": 80,
|
|
1816
|
+
"frames": [
|
|
1817
|
+
"[ ]",
|
|
1818
|
+
"[= ]",
|
|
1819
|
+
"[== ]",
|
|
1820
|
+
"[=== ]",
|
|
1821
|
+
"[====]",
|
|
1822
|
+
"[ ===]",
|
|
1823
|
+
"[ ==]",
|
|
1824
|
+
"[ =]",
|
|
1825
|
+
"[ ]",
|
|
1826
|
+
"[ =]",
|
|
1827
|
+
"[ ==]",
|
|
1828
|
+
"[ ===]",
|
|
1829
|
+
"[====]",
|
|
1830
|
+
"[=== ]",
|
|
1831
|
+
"[== ]",
|
|
1832
|
+
"[= ]"
|
|
1833
|
+
]
|
|
1834
|
+
},
|
|
1835
|
+
bouncingBall: {
|
|
1836
|
+
"interval": 80,
|
|
1837
|
+
"frames": [
|
|
1838
|
+
"( ● )",
|
|
1839
|
+
"( ● )",
|
|
1840
|
+
"( ● )",
|
|
1841
|
+
"( ● )",
|
|
1842
|
+
"( ●)",
|
|
1843
|
+
"( ● )",
|
|
1844
|
+
"( ● )",
|
|
1845
|
+
"( ● )",
|
|
1846
|
+
"( ● )",
|
|
1847
|
+
"(● )"
|
|
1848
|
+
]
|
|
1849
|
+
},
|
|
1850
|
+
smiley: {
|
|
1851
|
+
"interval": 200,
|
|
1852
|
+
"frames": ["😄 ", "😝 "]
|
|
1853
|
+
},
|
|
1854
|
+
monkey: {
|
|
1855
|
+
"interval": 300,
|
|
1856
|
+
"frames": [
|
|
1857
|
+
"🙈 ",
|
|
1858
|
+
"🙈 ",
|
|
1859
|
+
"🙉 ",
|
|
1860
|
+
"🙊 "
|
|
1861
|
+
]
|
|
1862
|
+
},
|
|
1863
|
+
hearts: {
|
|
1864
|
+
"interval": 100,
|
|
1865
|
+
"frames": [
|
|
1866
|
+
"💛 ",
|
|
1867
|
+
"💙 ",
|
|
1868
|
+
"💜 ",
|
|
1869
|
+
"💚 ",
|
|
1870
|
+
"💗 "
|
|
1871
|
+
]
|
|
1872
|
+
},
|
|
1873
|
+
clock: {
|
|
1874
|
+
"interval": 100,
|
|
1875
|
+
"frames": [
|
|
1876
|
+
"🕛 ",
|
|
1877
|
+
"🕐 ",
|
|
1878
|
+
"🕑 ",
|
|
1879
|
+
"🕒 ",
|
|
1880
|
+
"🕓 ",
|
|
1881
|
+
"🕔 ",
|
|
1882
|
+
"🕕 ",
|
|
1883
|
+
"🕖 ",
|
|
1884
|
+
"🕗 ",
|
|
1885
|
+
"🕘 ",
|
|
1886
|
+
"🕙 ",
|
|
1887
|
+
"🕚 "
|
|
1888
|
+
]
|
|
1889
|
+
},
|
|
1890
|
+
earth: {
|
|
1891
|
+
"interval": 180,
|
|
1892
|
+
"frames": [
|
|
1893
|
+
"🌍 ",
|
|
1894
|
+
"🌎 ",
|
|
1895
|
+
"🌏 "
|
|
1896
|
+
]
|
|
1897
|
+
},
|
|
1898
|
+
material: {
|
|
1899
|
+
"interval": 17,
|
|
1900
|
+
"frames": [
|
|
1901
|
+
"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1902
|
+
"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1903
|
+
"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1904
|
+
"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1905
|
+
"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1906
|
+
"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1907
|
+
"███████▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1908
|
+
"████████▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1909
|
+
"█████████▁▁▁▁▁▁▁▁▁▁▁",
|
|
1910
|
+
"█████████▁▁▁▁▁▁▁▁▁▁▁",
|
|
1911
|
+
"██████████▁▁▁▁▁▁▁▁▁▁",
|
|
1912
|
+
"███████████▁▁▁▁▁▁▁▁▁",
|
|
1913
|
+
"█████████████▁▁▁▁▁▁▁",
|
|
1914
|
+
"██████████████▁▁▁▁▁▁",
|
|
1915
|
+
"██████████████▁▁▁▁▁▁",
|
|
1916
|
+
"▁██████████████▁▁▁▁▁",
|
|
1917
|
+
"▁██████████████▁▁▁▁▁",
|
|
1918
|
+
"▁██████████████▁▁▁▁▁",
|
|
1919
|
+
"▁▁██████████████▁▁▁▁",
|
|
1920
|
+
"▁▁▁██████████████▁▁▁",
|
|
1921
|
+
"▁▁▁▁█████████████▁▁▁",
|
|
1922
|
+
"▁▁▁▁██████████████▁▁",
|
|
1923
|
+
"▁▁▁▁██████████████▁▁",
|
|
1924
|
+
"▁▁▁▁▁██████████████▁",
|
|
1925
|
+
"▁▁▁▁▁██████████████▁",
|
|
1926
|
+
"▁▁▁▁▁██████████████▁",
|
|
1927
|
+
"▁▁▁▁▁▁██████████████",
|
|
1928
|
+
"▁▁▁▁▁▁██████████████",
|
|
1929
|
+
"▁▁▁▁▁▁▁█████████████",
|
|
1930
|
+
"▁▁▁▁▁▁▁█████████████",
|
|
1931
|
+
"▁▁▁▁▁▁▁▁████████████",
|
|
1932
|
+
"▁▁▁▁▁▁▁▁████████████",
|
|
1933
|
+
"▁▁▁▁▁▁▁▁▁███████████",
|
|
1934
|
+
"▁▁▁▁▁▁▁▁▁███████████",
|
|
1935
|
+
"▁▁▁▁▁▁▁▁▁▁██████████",
|
|
1936
|
+
"▁▁▁▁▁▁▁▁▁▁██████████",
|
|
1937
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁████████",
|
|
1938
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
|
|
1939
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████",
|
|
1940
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
|
|
1941
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
|
|
1942
|
+
"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
|
|
1943
|
+
"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
|
|
1944
|
+
"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
|
|
1945
|
+
"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
|
|
1946
|
+
"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
|
|
1947
|
+
"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
|
|
1948
|
+
"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
|
|
1949
|
+
"██████▁▁▁▁▁▁▁▁▁▁▁▁▁█",
|
|
1950
|
+
"████████▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1951
|
+
"█████████▁▁▁▁▁▁▁▁▁▁▁",
|
|
1952
|
+
"█████████▁▁▁▁▁▁▁▁▁▁▁",
|
|
1953
|
+
"█████████▁▁▁▁▁▁▁▁▁▁▁",
|
|
1954
|
+
"█████████▁▁▁▁▁▁▁▁▁▁▁",
|
|
1955
|
+
"███████████▁▁▁▁▁▁▁▁▁",
|
|
1956
|
+
"████████████▁▁▁▁▁▁▁▁",
|
|
1957
|
+
"████████████▁▁▁▁▁▁▁▁",
|
|
1958
|
+
"██████████████▁▁▁▁▁▁",
|
|
1959
|
+
"██████████████▁▁▁▁▁▁",
|
|
1960
|
+
"▁██████████████▁▁▁▁▁",
|
|
1961
|
+
"▁██████████████▁▁▁▁▁",
|
|
1962
|
+
"▁▁▁█████████████▁▁▁▁",
|
|
1963
|
+
"▁▁▁▁▁████████████▁▁▁",
|
|
1964
|
+
"▁▁▁▁▁████████████▁▁▁",
|
|
1965
|
+
"▁▁▁▁▁▁███████████▁▁▁",
|
|
1966
|
+
"▁▁▁▁▁▁▁▁█████████▁▁▁",
|
|
1967
|
+
"▁▁▁▁▁▁▁▁█████████▁▁▁",
|
|
1968
|
+
"▁▁▁▁▁▁▁▁▁█████████▁▁",
|
|
1969
|
+
"▁▁▁▁▁▁▁▁▁█████████▁▁",
|
|
1970
|
+
"▁▁▁▁▁▁▁▁▁▁█████████▁",
|
|
1971
|
+
"▁▁▁▁▁▁▁▁▁▁▁████████▁",
|
|
1972
|
+
"▁▁▁▁▁▁▁▁▁▁▁████████▁",
|
|
1973
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁███████▁",
|
|
1974
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁███████▁",
|
|
1975
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
|
|
1976
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
|
|
1977
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
|
|
1978
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
|
|
1979
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
|
|
1980
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
|
|
1981
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
|
|
1982
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
|
|
1983
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
|
|
1984
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
|
|
1985
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
|
|
1986
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
|
|
1987
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
|
|
1988
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
|
|
1989
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1990
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1991
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
1992
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁"
|
|
1993
|
+
]
|
|
1994
|
+
},
|
|
1995
|
+
moon: {
|
|
1996
|
+
"interval": 80,
|
|
1997
|
+
"frames": [
|
|
1998
|
+
"🌑 ",
|
|
1999
|
+
"🌒 ",
|
|
2000
|
+
"🌓 ",
|
|
2001
|
+
"🌔 ",
|
|
2002
|
+
"🌕 ",
|
|
2003
|
+
"🌖 ",
|
|
2004
|
+
"🌗 ",
|
|
2005
|
+
"🌘 "
|
|
2006
|
+
]
|
|
2007
|
+
},
|
|
2008
|
+
runner: {
|
|
2009
|
+
"interval": 140,
|
|
2010
|
+
"frames": ["🚶 ", "🏃 "]
|
|
2011
|
+
},
|
|
2012
|
+
pong: {
|
|
2013
|
+
"interval": 80,
|
|
2014
|
+
"frames": [
|
|
2015
|
+
"▐⠂ ▌",
|
|
2016
|
+
"▐⠈ ▌",
|
|
2017
|
+
"▐ ⠂ ▌",
|
|
2018
|
+
"▐ ⠠ ▌",
|
|
2019
|
+
"▐ ⡀ ▌",
|
|
2020
|
+
"▐ ⠠ ▌",
|
|
2021
|
+
"▐ ⠂ ▌",
|
|
2022
|
+
"▐ ⠈ ▌",
|
|
2023
|
+
"▐ ⠂ ▌",
|
|
2024
|
+
"▐ ⠠ ▌",
|
|
2025
|
+
"▐ ⡀ ▌",
|
|
2026
|
+
"▐ ⠠ ▌",
|
|
2027
|
+
"▐ ⠂ ▌",
|
|
2028
|
+
"▐ ⠈ ▌",
|
|
2029
|
+
"▐ ⠂▌",
|
|
2030
|
+
"▐ ⠠▌",
|
|
2031
|
+
"▐ ⡀▌",
|
|
2032
|
+
"▐ ⠠ ▌",
|
|
2033
|
+
"▐ ⠂ ▌",
|
|
2034
|
+
"▐ ⠈ ▌",
|
|
2035
|
+
"▐ ⠂ ▌",
|
|
2036
|
+
"▐ ⠠ ▌",
|
|
2037
|
+
"▐ ⡀ ▌",
|
|
2038
|
+
"▐ ⠠ ▌",
|
|
2039
|
+
"▐ ⠂ ▌",
|
|
2040
|
+
"▐ ⠈ ▌",
|
|
2041
|
+
"▐ ⠂ ▌",
|
|
2042
|
+
"▐ ⠠ ▌",
|
|
2043
|
+
"▐ ⡀ ▌",
|
|
2044
|
+
"▐⠠ ▌"
|
|
2045
|
+
]
|
|
2046
|
+
},
|
|
2047
|
+
shark: {
|
|
2048
|
+
"interval": 120,
|
|
2049
|
+
"frames": [
|
|
2050
|
+
"▐|\\____________▌",
|
|
2051
|
+
"▐_|\\___________▌",
|
|
2052
|
+
"▐__|\\__________▌",
|
|
2053
|
+
"▐___|\\_________▌",
|
|
2054
|
+
"▐____|\\________▌",
|
|
2055
|
+
"▐_____|\\_______▌",
|
|
2056
|
+
"▐______|\\______▌",
|
|
2057
|
+
"▐_______|\\_____▌",
|
|
2058
|
+
"▐________|\\____▌",
|
|
2059
|
+
"▐_________|\\___▌",
|
|
2060
|
+
"▐__________|\\__▌",
|
|
2061
|
+
"▐___________|\\_▌",
|
|
2062
|
+
"▐____________|\\▌",
|
|
2063
|
+
"▐____________/|▌",
|
|
2064
|
+
"▐___________/|_▌",
|
|
2065
|
+
"▐__________/|__▌",
|
|
2066
|
+
"▐_________/|___▌",
|
|
2067
|
+
"▐________/|____▌",
|
|
2068
|
+
"▐_______/|_____▌",
|
|
2069
|
+
"▐______/|______▌",
|
|
2070
|
+
"▐_____/|_______▌",
|
|
2071
|
+
"▐____/|________▌",
|
|
2072
|
+
"▐___/|_________▌",
|
|
2073
|
+
"▐__/|__________▌",
|
|
2074
|
+
"▐_/|___________▌",
|
|
2075
|
+
"▐/|____________▌"
|
|
2076
|
+
]
|
|
2077
|
+
},
|
|
2078
|
+
dqpb: {
|
|
2079
|
+
"interval": 100,
|
|
2080
|
+
"frames": [
|
|
2081
|
+
"d",
|
|
2082
|
+
"q",
|
|
2083
|
+
"p",
|
|
2084
|
+
"b"
|
|
2085
|
+
]
|
|
2086
|
+
},
|
|
2087
|
+
weather: {
|
|
2088
|
+
"interval": 100,
|
|
2089
|
+
"frames": [
|
|
2090
|
+
"☀️ ",
|
|
2091
|
+
"☀️ ",
|
|
2092
|
+
"☀️ ",
|
|
2093
|
+
"🌤 ",
|
|
2094
|
+
"⛅️ ",
|
|
2095
|
+
"🌥 ",
|
|
2096
|
+
"☁️ ",
|
|
2097
|
+
"🌧 ",
|
|
2098
|
+
"🌨 ",
|
|
2099
|
+
"🌧 ",
|
|
2100
|
+
"🌨 ",
|
|
2101
|
+
"🌧 ",
|
|
2102
|
+
"🌨 ",
|
|
2103
|
+
"⛈ ",
|
|
2104
|
+
"🌨 ",
|
|
2105
|
+
"🌧 ",
|
|
2106
|
+
"🌨 ",
|
|
2107
|
+
"☁️ ",
|
|
2108
|
+
"🌥 ",
|
|
2109
|
+
"⛅️ ",
|
|
2110
|
+
"🌤 ",
|
|
2111
|
+
"☀️ ",
|
|
2112
|
+
"☀️ "
|
|
2113
|
+
]
|
|
2114
|
+
},
|
|
2115
|
+
christmas: {
|
|
2116
|
+
"interval": 400,
|
|
2117
|
+
"frames": ["🌲", "🎄"]
|
|
2118
|
+
},
|
|
2119
|
+
grenade: {
|
|
2120
|
+
"interval": 80,
|
|
2121
|
+
"frames": [
|
|
2122
|
+
"، ",
|
|
2123
|
+
"′ ",
|
|
2124
|
+
" ´ ",
|
|
2125
|
+
" ‾ ",
|
|
2126
|
+
" ⸌",
|
|
2127
|
+
" ⸊",
|
|
2128
|
+
" |",
|
|
2129
|
+
" ⁎",
|
|
2130
|
+
" ⁕",
|
|
2131
|
+
" ෴ ",
|
|
2132
|
+
" ⁓",
|
|
2133
|
+
" ",
|
|
2134
|
+
" ",
|
|
2135
|
+
" "
|
|
2136
|
+
]
|
|
2137
|
+
},
|
|
2138
|
+
point: {
|
|
2139
|
+
"interval": 125,
|
|
2140
|
+
"frames": [
|
|
2141
|
+
"∙∙∙",
|
|
2142
|
+
"●∙∙",
|
|
2143
|
+
"∙●∙",
|
|
2144
|
+
"∙∙●",
|
|
2145
|
+
"∙∙∙"
|
|
2146
|
+
]
|
|
2147
|
+
},
|
|
2148
|
+
layer: {
|
|
2149
|
+
"interval": 150,
|
|
2150
|
+
"frames": [
|
|
2151
|
+
"-",
|
|
2152
|
+
"=",
|
|
2153
|
+
"≡"
|
|
2154
|
+
]
|
|
2155
|
+
},
|
|
2156
|
+
betaWave: {
|
|
2157
|
+
"interval": 80,
|
|
2158
|
+
"frames": [
|
|
2159
|
+
"ρββββββ",
|
|
2160
|
+
"βρβββββ",
|
|
2161
|
+
"ββρββββ",
|
|
2162
|
+
"βββρβββ",
|
|
2163
|
+
"ββββρββ",
|
|
2164
|
+
"βββββρβ",
|
|
2165
|
+
"ββββββρ"
|
|
2166
|
+
]
|
|
2167
|
+
},
|
|
2168
|
+
fingerDance: {
|
|
2169
|
+
"interval": 160,
|
|
2170
|
+
"frames": [
|
|
2171
|
+
"🤘 ",
|
|
2172
|
+
"🤟 ",
|
|
2173
|
+
"🖖 ",
|
|
2174
|
+
"✋ ",
|
|
2175
|
+
"🤚 ",
|
|
2176
|
+
"👆 "
|
|
2177
|
+
]
|
|
2178
|
+
},
|
|
2179
|
+
fistBump: {
|
|
2180
|
+
"interval": 80,
|
|
2181
|
+
"frames": [
|
|
2182
|
+
"🤜 🤛 ",
|
|
2183
|
+
"🤜 🤛 ",
|
|
2184
|
+
"🤜 🤛 ",
|
|
2185
|
+
" 🤜 🤛 ",
|
|
2186
|
+
" 🤜🤛 ",
|
|
2187
|
+
" 🤜✨🤛 ",
|
|
2188
|
+
"🤜 ✨ 🤛 "
|
|
2189
|
+
]
|
|
2190
|
+
},
|
|
2191
|
+
soccerHeader: {
|
|
2192
|
+
"interval": 80,
|
|
2193
|
+
"frames": [
|
|
2194
|
+
" 🧑⚽️ 🧑 ",
|
|
2195
|
+
"🧑 ⚽️ 🧑 ",
|
|
2196
|
+
"🧑 ⚽️ 🧑 ",
|
|
2197
|
+
"🧑 ⚽️ 🧑 ",
|
|
2198
|
+
"🧑 ⚽️ 🧑 ",
|
|
2199
|
+
"🧑 ⚽️ 🧑 ",
|
|
2200
|
+
"🧑 ⚽️🧑 ",
|
|
2201
|
+
"🧑 ⚽️ 🧑 ",
|
|
2202
|
+
"🧑 ⚽️ 🧑 ",
|
|
2203
|
+
"🧑 ⚽️ 🧑 ",
|
|
2204
|
+
"🧑 ⚽️ 🧑 ",
|
|
2205
|
+
"🧑 ⚽️ 🧑 "
|
|
2206
|
+
]
|
|
2207
|
+
},
|
|
2208
|
+
mindblown: {
|
|
2209
|
+
"interval": 160,
|
|
2210
|
+
"frames": [
|
|
2211
|
+
"😐 ",
|
|
2212
|
+
"😐 ",
|
|
2213
|
+
"😮 ",
|
|
2214
|
+
"😮 ",
|
|
2215
|
+
"😦 ",
|
|
2216
|
+
"😦 ",
|
|
2217
|
+
"😧 ",
|
|
2218
|
+
"😧 ",
|
|
2219
|
+
"🤯 ",
|
|
2220
|
+
"💥 ",
|
|
2221
|
+
"✨ ",
|
|
2222
|
+
" ",
|
|
2223
|
+
" ",
|
|
2224
|
+
" "
|
|
2225
|
+
]
|
|
2226
|
+
},
|
|
2227
|
+
speaker: {
|
|
2228
|
+
"interval": 160,
|
|
2229
|
+
"frames": [
|
|
2230
|
+
"🔈 ",
|
|
2231
|
+
"🔉 ",
|
|
2232
|
+
"🔊 ",
|
|
2233
|
+
"🔉 "
|
|
2234
|
+
]
|
|
2235
|
+
},
|
|
2236
|
+
orangePulse: {
|
|
2237
|
+
"interval": 100,
|
|
2238
|
+
"frames": [
|
|
2239
|
+
"🔸 ",
|
|
2240
|
+
"🔶 ",
|
|
2241
|
+
"🟠 ",
|
|
2242
|
+
"🟠 ",
|
|
2243
|
+
"🔶 "
|
|
2244
|
+
]
|
|
2245
|
+
},
|
|
2246
|
+
bluePulse: {
|
|
2247
|
+
"interval": 100,
|
|
2248
|
+
"frames": [
|
|
2249
|
+
"🔹 ",
|
|
2250
|
+
"🔷 ",
|
|
2251
|
+
"🔵 ",
|
|
2252
|
+
"🔵 ",
|
|
2253
|
+
"🔷 "
|
|
2254
|
+
]
|
|
2255
|
+
},
|
|
2256
|
+
orangeBluePulse: {
|
|
2257
|
+
"interval": 100,
|
|
2258
|
+
"frames": [
|
|
2259
|
+
"🔸 ",
|
|
2260
|
+
"🔶 ",
|
|
2261
|
+
"🟠 ",
|
|
2262
|
+
"🟠 ",
|
|
2263
|
+
"🔶 ",
|
|
2264
|
+
"🔹 ",
|
|
2265
|
+
"🔷 ",
|
|
2266
|
+
"🔵 ",
|
|
2267
|
+
"🔵 ",
|
|
2268
|
+
"🔷 "
|
|
2269
|
+
]
|
|
2270
|
+
},
|
|
2271
|
+
timeTravel: {
|
|
2272
|
+
"interval": 100,
|
|
2273
|
+
"frames": [
|
|
2274
|
+
"🕛 ",
|
|
2275
|
+
"🕚 ",
|
|
2276
|
+
"🕙 ",
|
|
2277
|
+
"🕘 ",
|
|
2278
|
+
"🕗 ",
|
|
2279
|
+
"🕖 ",
|
|
2280
|
+
"🕕 ",
|
|
2281
|
+
"🕔 ",
|
|
2282
|
+
"🕓 ",
|
|
2283
|
+
"🕒 ",
|
|
2284
|
+
"🕑 ",
|
|
2285
|
+
"🕐 "
|
|
2286
|
+
]
|
|
2287
|
+
},
|
|
2288
|
+
aesthetic: {
|
|
2289
|
+
"interval": 80,
|
|
2290
|
+
"frames": [
|
|
2291
|
+
"▰▱▱▱▱▱▱",
|
|
2292
|
+
"▰▰▱▱▱▱▱",
|
|
2293
|
+
"▰▰▰▱▱▱▱",
|
|
2294
|
+
"▰▰▰▰▱▱▱",
|
|
2295
|
+
"▰▰▰▰▰▱▱",
|
|
2296
|
+
"▰▰▰▰▰▰▱",
|
|
2297
|
+
"▰▰▰▰▰▰▰",
|
|
2298
|
+
"▰▱▱▱▱▱▱"
|
|
2299
|
+
]
|
|
2300
|
+
},
|
|
2301
|
+
dwarfFortress: {
|
|
2302
|
+
"interval": 80,
|
|
2303
|
+
"frames": [
|
|
2304
|
+
" ██████£££ ",
|
|
2305
|
+
"☺██████£££ ",
|
|
2306
|
+
"☺██████£££ ",
|
|
2307
|
+
"☺▓█████£££ ",
|
|
2308
|
+
"☺▓█████£££ ",
|
|
2309
|
+
"☺▒█████£££ ",
|
|
2310
|
+
"☺▒█████£££ ",
|
|
2311
|
+
"☺░█████£££ ",
|
|
2312
|
+
"☺░█████£££ ",
|
|
2313
|
+
"☺ █████£££ ",
|
|
2314
|
+
" ☺█████£££ ",
|
|
2315
|
+
" ☺█████£££ ",
|
|
2316
|
+
" ☺▓████£££ ",
|
|
2317
|
+
" ☺▓████£££ ",
|
|
2318
|
+
" ☺▒████£££ ",
|
|
2319
|
+
" ☺▒████£££ ",
|
|
2320
|
+
" ☺░████£££ ",
|
|
2321
|
+
" ☺░████£££ ",
|
|
2322
|
+
" ☺ ████£££ ",
|
|
2323
|
+
" ☺████£££ ",
|
|
2324
|
+
" ☺████£££ ",
|
|
2325
|
+
" ☺▓███£££ ",
|
|
2326
|
+
" ☺▓███£££ ",
|
|
2327
|
+
" ☺▒███£££ ",
|
|
2328
|
+
" ☺▒███£££ ",
|
|
2329
|
+
" ☺░███£££ ",
|
|
2330
|
+
" ☺░███£££ ",
|
|
2331
|
+
" ☺ ███£££ ",
|
|
2332
|
+
" ☺███£££ ",
|
|
2333
|
+
" ☺███£££ ",
|
|
2334
|
+
" ☺▓██£££ ",
|
|
2335
|
+
" ☺▓██£££ ",
|
|
2336
|
+
" ☺▒██£££ ",
|
|
2337
|
+
" ☺▒██£££ ",
|
|
2338
|
+
" ☺░██£££ ",
|
|
2339
|
+
" ☺░██£££ ",
|
|
2340
|
+
" ☺ ██£££ ",
|
|
2341
|
+
" ☺██£££ ",
|
|
2342
|
+
" ☺██£££ ",
|
|
2343
|
+
" ☺▓█£££ ",
|
|
2344
|
+
" ☺▓█£££ ",
|
|
2345
|
+
" ☺▒█£££ ",
|
|
2346
|
+
" ☺▒█£££ ",
|
|
2347
|
+
" ☺░█£££ ",
|
|
2348
|
+
" ☺░█£££ ",
|
|
2349
|
+
" ☺ █£££ ",
|
|
2350
|
+
" ☺█£££ ",
|
|
2351
|
+
" ☺█£££ ",
|
|
2352
|
+
" ☺▓£££ ",
|
|
2353
|
+
" ☺▓£££ ",
|
|
2354
|
+
" ☺▒£££ ",
|
|
2355
|
+
" ☺▒£££ ",
|
|
2356
|
+
" ☺░£££ ",
|
|
2357
|
+
" ☺░£££ ",
|
|
2358
|
+
" ☺ £££ ",
|
|
2359
|
+
" ☺£££ ",
|
|
2360
|
+
" ☺£££ ",
|
|
2361
|
+
" ☺▓££ ",
|
|
2362
|
+
" ☺▓££ ",
|
|
2363
|
+
" ☺▒££ ",
|
|
2364
|
+
" ☺▒££ ",
|
|
2365
|
+
" ☺░££ ",
|
|
2366
|
+
" ☺░££ ",
|
|
2367
|
+
" ☺ ££ ",
|
|
2368
|
+
" ☺££ ",
|
|
2369
|
+
" ☺££ ",
|
|
2370
|
+
" ☺▓£ ",
|
|
2371
|
+
" ☺▓£ ",
|
|
2372
|
+
" ☺▒£ ",
|
|
2373
|
+
" ☺▒£ ",
|
|
2374
|
+
" ☺░£ ",
|
|
2375
|
+
" ☺░£ ",
|
|
2376
|
+
" ☺ £ ",
|
|
2377
|
+
" ☺£ ",
|
|
2378
|
+
" ☺£ ",
|
|
2379
|
+
" ☺▓ ",
|
|
2380
|
+
" ☺▓ ",
|
|
2381
|
+
" ☺▒ ",
|
|
2382
|
+
" ☺▒ ",
|
|
2383
|
+
" ☺░ ",
|
|
2384
|
+
" ☺░ ",
|
|
2385
|
+
" ☺ ",
|
|
2386
|
+
" ☺ &",
|
|
2387
|
+
" ☺ ☼&",
|
|
2388
|
+
" ☺ ☼ &",
|
|
2389
|
+
" ☺☼ &",
|
|
2390
|
+
" ☺☼ & ",
|
|
2391
|
+
" ‼ & ",
|
|
2392
|
+
" ☺ & ",
|
|
2393
|
+
" ‼ & ",
|
|
2394
|
+
" ☺ & ",
|
|
2395
|
+
" ‼ & ",
|
|
2396
|
+
" ☺ & ",
|
|
2397
|
+
"‼ & ",
|
|
2398
|
+
" & ",
|
|
2399
|
+
" & ",
|
|
2400
|
+
" & ░ ",
|
|
2401
|
+
" & ▒ ",
|
|
2402
|
+
" & ▓ ",
|
|
2403
|
+
" & £ ",
|
|
2404
|
+
" & ░£ ",
|
|
2405
|
+
" & ▒£ ",
|
|
2406
|
+
" & ▓£ ",
|
|
2407
|
+
" & ££ ",
|
|
2408
|
+
" & ░££ ",
|
|
2409
|
+
" & ▒££ ",
|
|
2410
|
+
"& ▓££ ",
|
|
2411
|
+
"& £££ ",
|
|
2412
|
+
" ░£££ ",
|
|
2413
|
+
" ▒£££ ",
|
|
2414
|
+
" ▓£££ ",
|
|
2415
|
+
" █£££ ",
|
|
2416
|
+
" ░█£££ ",
|
|
2417
|
+
" ▒█£££ ",
|
|
2418
|
+
" ▓█£££ ",
|
|
2419
|
+
" ██£££ ",
|
|
2420
|
+
" ░██£££ ",
|
|
2421
|
+
" ▒██£££ ",
|
|
2422
|
+
" ▓██£££ ",
|
|
2423
|
+
" ███£££ ",
|
|
2424
|
+
" ░███£££ ",
|
|
2425
|
+
" ▒███£££ ",
|
|
2426
|
+
" ▓███£££ ",
|
|
2427
|
+
" ████£££ ",
|
|
2428
|
+
" ░████£££ ",
|
|
2429
|
+
" ▒████£££ ",
|
|
2430
|
+
" ▓████£££ ",
|
|
2431
|
+
" █████£££ ",
|
|
2432
|
+
" ░█████£££ ",
|
|
2433
|
+
" ▒█████£££ ",
|
|
2434
|
+
" ▓█████£££ ",
|
|
2435
|
+
" ██████£££ ",
|
|
2436
|
+
" ██████£££ "
|
|
2437
|
+
]
|
|
2438
|
+
},
|
|
2439
|
+
fish: {
|
|
2440
|
+
"interval": 80,
|
|
2441
|
+
"frames": [
|
|
2442
|
+
"~~~~~~~~~~~~~~~~~~~~",
|
|
2443
|
+
"> ~~~~~~~~~~~~~~~~~~",
|
|
2444
|
+
"º> ~~~~~~~~~~~~~~~~~",
|
|
2445
|
+
"(º> ~~~~~~~~~~~~~~~~",
|
|
2446
|
+
"((º> ~~~~~~~~~~~~~~~",
|
|
2447
|
+
"<((º> ~~~~~~~~~~~~~~",
|
|
2448
|
+
"><((º> ~~~~~~~~~~~~~",
|
|
2449
|
+
" ><((º> ~~~~~~~~~~~~",
|
|
2450
|
+
"~ ><((º> ~~~~~~~~~~~",
|
|
2451
|
+
"~~ <>((º> ~~~~~~~~~~",
|
|
2452
|
+
"~~~ ><((º> ~~~~~~~~~",
|
|
2453
|
+
"~~~~ <>((º> ~~~~~~~~",
|
|
2454
|
+
"~~~~~ ><((º> ~~~~~~~",
|
|
2455
|
+
"~~~~~~ <>((º> ~~~~~~",
|
|
2456
|
+
"~~~~~~~ ><((º> ~~~~~",
|
|
2457
|
+
"~~~~~~~~ <>((º> ~~~~",
|
|
2458
|
+
"~~~~~~~~~ ><((º> ~~~",
|
|
2459
|
+
"~~~~~~~~~~ <>((º> ~~",
|
|
2460
|
+
"~~~~~~~~~~~ ><((º> ~",
|
|
2461
|
+
"~~~~~~~~~~~~ <>((º> ",
|
|
2462
|
+
"~~~~~~~~~~~~~ ><((º>",
|
|
2463
|
+
"~~~~~~~~~~~~~~ <>((º",
|
|
2464
|
+
"~~~~~~~~~~~~~~~ ><((",
|
|
2465
|
+
"~~~~~~~~~~~~~~~~ <>(",
|
|
2466
|
+
"~~~~~~~~~~~~~~~~~ ><",
|
|
2467
|
+
"~~~~~~~~~~~~~~~~~~ <",
|
|
2468
|
+
"~~~~~~~~~~~~~~~~~~~~"
|
|
2469
|
+
]
|
|
2470
|
+
}
|
|
2471
|
+
};
|
|
2472
|
+
//#endregion
|
|
2473
|
+
//#region ../../node_modules/.pnpm/yoctocolors@2.1.2/node_modules/yoctocolors/base.js
|
|
2474
|
+
const hasColors = tty?.WriteStream?.prototype?.hasColors?.() ?? false;
|
|
2475
|
+
const format = (open, close) => {
|
|
2476
|
+
if (!hasColors) return (input) => input;
|
|
2477
|
+
const openCode = `\u001B[${open}m`;
|
|
2478
|
+
const closeCode = `\u001B[${close}m`;
|
|
2479
|
+
return (input) => {
|
|
2480
|
+
const string = input + "";
|
|
2481
|
+
let index = string.indexOf(closeCode);
|
|
2482
|
+
if (index === -1) return openCode + string + closeCode;
|
|
2483
|
+
let result = openCode;
|
|
2484
|
+
let lastIndex = 0;
|
|
2485
|
+
const replaceCode = (close === 22 ? closeCode : "") + openCode;
|
|
2486
|
+
while (index !== -1) {
|
|
2487
|
+
result += string.slice(lastIndex, index) + replaceCode;
|
|
2488
|
+
lastIndex = index + closeCode.length;
|
|
2489
|
+
index = string.indexOf(closeCode, lastIndex);
|
|
2490
|
+
}
|
|
2491
|
+
result += string.slice(lastIndex) + closeCode;
|
|
2492
|
+
return result;
|
|
2493
|
+
};
|
|
2494
|
+
};
|
|
2495
|
+
format(0, 0);
|
|
2496
|
+
format(1, 22);
|
|
2497
|
+
format(2, 22);
|
|
2498
|
+
format(3, 23);
|
|
2499
|
+
format(4, 24);
|
|
2500
|
+
format(53, 55);
|
|
2501
|
+
format(7, 27);
|
|
2502
|
+
format(8, 28);
|
|
2503
|
+
format(9, 29);
|
|
2504
|
+
format(30, 39);
|
|
2505
|
+
const red = format(31, 39);
|
|
2506
|
+
const green = format(32, 39);
|
|
2507
|
+
const yellow = format(33, 39);
|
|
2508
|
+
const blue = format(34, 39);
|
|
2509
|
+
format(35, 39);
|
|
2510
|
+
format(36, 39);
|
|
2511
|
+
format(37, 39);
|
|
2512
|
+
format(90, 39);
|
|
2513
|
+
format(40, 49);
|
|
2514
|
+
format(41, 49);
|
|
2515
|
+
format(42, 49);
|
|
2516
|
+
format(43, 49);
|
|
2517
|
+
format(44, 49);
|
|
2518
|
+
format(45, 49);
|
|
2519
|
+
format(46, 49);
|
|
2520
|
+
format(47, 49);
|
|
2521
|
+
format(100, 49);
|
|
2522
|
+
format(91, 39);
|
|
2523
|
+
format(92, 39);
|
|
2524
|
+
format(93, 39);
|
|
2525
|
+
format(94, 39);
|
|
2526
|
+
format(95, 39);
|
|
2527
|
+
format(96, 39);
|
|
2528
|
+
format(97, 39);
|
|
2529
|
+
format(101, 49);
|
|
2530
|
+
format(102, 49);
|
|
2531
|
+
format(103, 49);
|
|
2532
|
+
format(104, 49);
|
|
2533
|
+
format(105, 49);
|
|
2534
|
+
format(106, 49);
|
|
2535
|
+
format(107, 49);
|
|
2536
|
+
//#endregion
|
|
2537
|
+
//#region ../../node_modules/.pnpm/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js
|
|
2538
|
+
function isUnicodeSupported() {
|
|
2539
|
+
const { env } = process$1;
|
|
2540
|
+
const { TERM, TERM_PROGRAM } = env;
|
|
2541
|
+
if (process$1.platform !== "win32") return TERM !== "linux";
|
|
2542
|
+
return Boolean(env.WT_SESSION) || Boolean(env.TERMINUS_SUBLIME) || env.ConEmuTask === "{cmd::Cmder}" || TERM_PROGRAM === "Terminus-Sublime" || TERM_PROGRAM === "vscode" || TERM === "xterm-256color" || TERM === "alacritty" || TERM === "rxvt-unicode" || TERM === "rxvt-unicode-256color" || env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
|
|
2543
|
+
}
|
|
2544
|
+
//#endregion
|
|
2545
|
+
//#region ../../node_modules/.pnpm/log-symbols@7.0.1/node_modules/log-symbols/symbols.js
|
|
2546
|
+
const _isUnicodeSupported = isUnicodeSupported();
|
|
2547
|
+
const info = blue(_isUnicodeSupported ? "ℹ" : "i");
|
|
2548
|
+
const success = green(_isUnicodeSupported ? "✔" : "√");
|
|
2549
|
+
const warning = yellow(_isUnicodeSupported ? "⚠" : "‼");
|
|
2550
|
+
const error = red(_isUnicodeSupported ? "✖" : "×");
|
|
2551
|
+
//#endregion
|
|
2552
|
+
//#region ../../node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
|
|
2553
|
+
function ansiRegex({ onlyFirst = false } = {}) {
|
|
2554
|
+
return new RegExp(`(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]`, onlyFirst ? void 0 : "g");
|
|
2555
|
+
}
|
|
2556
|
+
//#endregion
|
|
2557
|
+
//#region ../../node_modules/.pnpm/strip-ansi@7.1.2/node_modules/strip-ansi/index.js
|
|
2558
|
+
const regex = ansiRegex();
|
|
2559
|
+
function stripAnsi(string) {
|
|
2560
|
+
if (typeof string !== "string") throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
|
|
2561
|
+
return string.replace(regex, "");
|
|
2562
|
+
}
|
|
2563
|
+
//#endregion
|
|
2564
|
+
//#region ../../node_modules/.pnpm/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js
|
|
2565
|
+
function isAmbiguous(x) {
|
|
2566
|
+
return x === 161 || x === 164 || x === 167 || x === 168 || x === 170 || x === 173 || x === 174 || x >= 176 && x <= 180 || x >= 182 && x <= 186 || x >= 188 && x <= 191 || x === 198 || x === 208 || x === 215 || x === 216 || x >= 222 && x <= 225 || x === 230 || x >= 232 && x <= 234 || x === 236 || x === 237 || x === 240 || x === 242 || x === 243 || x >= 247 && x <= 250 || x === 252 || x === 254 || x === 257 || x === 273 || x === 275 || x === 283 || x === 294 || x === 295 || x === 299 || x >= 305 && x <= 307 || x === 312 || x >= 319 && x <= 322 || x === 324 || x >= 328 && x <= 331 || x === 333 || x === 338 || x === 339 || x === 358 || x === 359 || x === 363 || x === 462 || x === 464 || x === 466 || x === 468 || x === 470 || x === 472 || x === 474 || x === 476 || x === 593 || x === 609 || x === 708 || x === 711 || x >= 713 && x <= 715 || x === 717 || x === 720 || x >= 728 && x <= 731 || x === 733 || x === 735 || x >= 768 && x <= 879 || x >= 913 && x <= 929 || x >= 931 && x <= 937 || x >= 945 && x <= 961 || x >= 963 && x <= 969 || x === 1025 || x >= 1040 && x <= 1103 || x === 1105 || x === 8208 || x >= 8211 && x <= 8214 || x === 8216 || x === 8217 || x === 8220 || x === 8221 || x >= 8224 && x <= 8226 || x >= 8228 && x <= 8231 || x === 8240 || x === 8242 || x === 8243 || x === 8245 || x === 8251 || x === 8254 || x === 8308 || x === 8319 || x >= 8321 && x <= 8324 || x === 8364 || x === 8451 || x === 8453 || x === 8457 || x === 8467 || x === 8470 || x === 8481 || x === 8482 || x === 8486 || x === 8491 || x === 8531 || x === 8532 || x >= 8539 && x <= 8542 || x >= 8544 && x <= 8555 || x >= 8560 && x <= 8569 || x === 8585 || x >= 8592 && x <= 8601 || x === 8632 || x === 8633 || x === 8658 || x === 8660 || x === 8679 || x === 8704 || x === 8706 || x === 8707 || x === 8711 || x === 8712 || x === 8715 || x === 8719 || x === 8721 || x === 8725 || x === 8730 || x >= 8733 && x <= 8736 || x === 8739 || x === 8741 || x >= 8743 && x <= 8748 || x === 8750 || x >= 8756 && x <= 8759 || x === 8764 || x === 8765 || x === 8776 || x === 8780 || x === 8786 || x === 8800 || x === 8801 || x >= 8804 && x <= 8807 || x === 8810 || x === 8811 || x === 8814 || x === 8815 || x === 8834 || x === 8835 || x === 8838 || x === 8839 || x === 8853 || x === 8857 || x === 8869 || x === 8895 || x === 8978 || x >= 9312 && x <= 9449 || x >= 9451 && x <= 9547 || x >= 9552 && x <= 9587 || x >= 9600 && x <= 9615 || x >= 9618 && x <= 9621 || x === 9632 || x === 9633 || x >= 9635 && x <= 9641 || x === 9650 || x === 9651 || x === 9654 || x === 9655 || x === 9660 || x === 9661 || x === 9664 || x === 9665 || x >= 9670 && x <= 9672 || x === 9675 || x >= 9678 && x <= 9681 || x >= 9698 && x <= 9701 || x === 9711 || x === 9733 || x === 9734 || x === 9737 || x === 9742 || x === 9743 || x === 9756 || x === 9758 || x === 9792 || x === 9794 || x === 9824 || x === 9825 || x >= 9827 && x <= 9829 || x >= 9831 && x <= 9834 || x === 9836 || x === 9837 || x === 9839 || x === 9886 || x === 9887 || x === 9919 || x >= 9926 && x <= 9933 || x >= 9935 && x <= 9939 || x >= 9941 && x <= 9953 || x === 9955 || x === 9960 || x === 9961 || x >= 9963 && x <= 9969 || x === 9972 || x >= 9974 && x <= 9977 || x === 9979 || x === 9980 || x === 9982 || x === 9983 || x === 10045 || x >= 10102 && x <= 10111 || x >= 11094 && x <= 11097 || x >= 12872 && x <= 12879 || x >= 57344 && x <= 63743 || x >= 65024 && x <= 65039 || x === 65533 || x >= 127232 && x <= 127242 || x >= 127248 && x <= 127277 || x >= 127280 && x <= 127337 || x >= 127344 && x <= 127373 || x === 127375 || x === 127376 || x >= 127387 && x <= 127404 || x >= 917760 && x <= 917999 || x >= 983040 && x <= 1048573 || x >= 1048576 && x <= 1114109;
|
|
2567
|
+
}
|
|
2568
|
+
function isFullWidth(x) {
|
|
2569
|
+
return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
|
|
2570
|
+
}
|
|
2571
|
+
function isWide(x) {
|
|
2572
|
+
return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x >= 94192 && x <= 94198 || x >= 94208 && x <= 101589 || x >= 101631 && x <= 101662 || x >= 101760 && x <= 101874 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128728 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129674 || x >= 129678 && x <= 129734 || x === 129736 || x >= 129741 && x <= 129756 || x >= 129759 && x <= 129770 || x >= 129775 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
|
|
2573
|
+
}
|
|
2574
|
+
//#endregion
|
|
2575
|
+
//#region ../../node_modules/.pnpm/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js
|
|
2576
|
+
function validate(codePoint) {
|
|
2577
|
+
if (!Number.isSafeInteger(codePoint)) throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
|
|
2578
|
+
}
|
|
2579
|
+
function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
|
|
2580
|
+
validate(codePoint);
|
|
2581
|
+
if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) return 2;
|
|
2582
|
+
return 1;
|
|
2583
|
+
}
|
|
2584
|
+
//#endregion
|
|
2585
|
+
//#region ../../node_modules/.pnpm/string-width@8.1.1/node_modules/string-width/index.js
|
|
2586
|
+
/**
|
|
2587
|
+
Logic:
|
|
2588
|
+
- Segment graphemes to match how terminals render clusters.
|
|
2589
|
+
- Width rules:
|
|
2590
|
+
1. Skip non-printing clusters (Default_Ignorable, Control, pure Mark, lone Surrogates). Tabs are ignored by design.
|
|
2591
|
+
2. RGI emoji clusters (\p{RGI_Emoji}) are double-width.
|
|
2592
|
+
3. 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).
|
|
2593
|
+
*/
|
|
2594
|
+
const segmenter = new Intl.Segmenter();
|
|
2595
|
+
const zeroWidthClusterRegex = /^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Format}|\p{Mark}|\p{Surrogate})+$/v;
|
|
2596
|
+
const leadingNonPrintingRegex = /^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Mark}\p{Surrogate}]+/v;
|
|
2597
|
+
const rgiEmojiRegex = /^\p{RGI_Emoji}$/v;
|
|
2598
|
+
function baseVisible(segment) {
|
|
2599
|
+
return segment.replace(leadingNonPrintingRegex, "");
|
|
2600
|
+
}
|
|
2601
|
+
function isZeroWidthCluster(segment) {
|
|
2602
|
+
return zeroWidthClusterRegex.test(segment);
|
|
2603
|
+
}
|
|
2604
|
+
function trailingHalfwidthWidth(segment, eastAsianWidthOptions) {
|
|
2605
|
+
let extra = 0;
|
|
2606
|
+
if (segment.length > 1) {
|
|
2607
|
+
for (const char of segment.slice(1)) if (char >= "" && char <= "") extra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);
|
|
2608
|
+
}
|
|
2609
|
+
return extra;
|
|
2610
|
+
}
|
|
2611
|
+
function stringWidth(input, options = {}) {
|
|
2612
|
+
if (typeof input !== "string" || input.length === 0) return 0;
|
|
2613
|
+
const { ambiguousIsNarrow = true, countAnsiEscapeCodes = false } = options;
|
|
2614
|
+
let string = input;
|
|
2615
|
+
if (!countAnsiEscapeCodes) string = stripAnsi(string);
|
|
2616
|
+
if (string.length === 0) return 0;
|
|
2617
|
+
let width = 0;
|
|
2618
|
+
const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
|
|
2619
|
+
for (const { segment } of segmenter.segment(string)) {
|
|
2620
|
+
if (isZeroWidthCluster(segment)) continue;
|
|
2621
|
+
if (rgiEmojiRegex.test(segment)) {
|
|
2622
|
+
width += 2;
|
|
2623
|
+
continue;
|
|
2624
|
+
}
|
|
2625
|
+
const codePoint = baseVisible(segment).codePointAt(0);
|
|
2626
|
+
width += eastAsianWidth(codePoint, eastAsianWidthOptions);
|
|
2627
|
+
width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
|
|
2628
|
+
}
|
|
2629
|
+
return width;
|
|
2630
|
+
}
|
|
2631
|
+
//#endregion
|
|
2632
|
+
//#region ../../node_modules/.pnpm/is-interactive@2.0.0/node_modules/is-interactive/index.js
|
|
2633
|
+
function isInteractive({ stream = process.stdout } = {}) {
|
|
2634
|
+
return Boolean(stream && stream.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env));
|
|
2635
|
+
}
|
|
2636
|
+
//#endregion
|
|
2637
|
+
//#region ../../node_modules/.pnpm/stdin-discarder@0.3.2/node_modules/stdin-discarder/index.js
|
|
2638
|
+
const ASCII_ETX_CODE = 3;
|
|
2639
|
+
var StdinDiscarder = class {
|
|
2640
|
+
#activeCount = 0;
|
|
2641
|
+
#stdin;
|
|
2642
|
+
#stdinWasPaused = false;
|
|
2643
|
+
#stdinWasRaw = false;
|
|
2644
|
+
#handleInputBound = (chunk) => {
|
|
2645
|
+
if (!chunk?.length) return;
|
|
2646
|
+
if ((typeof chunk === "string" ? chunk.codePointAt(0) : chunk[0]) === ASCII_ETX_CODE) process$1.kill(process$1.pid, "SIGINT");
|
|
2647
|
+
};
|
|
2648
|
+
start() {
|
|
2649
|
+
this.#activeCount++;
|
|
2650
|
+
if (this.#activeCount === 1) this.#realStart();
|
|
2651
|
+
}
|
|
2652
|
+
stop() {
|
|
2653
|
+
if (this.#activeCount === 0) return;
|
|
2654
|
+
if (--this.#activeCount === 0) this.#realStop();
|
|
2655
|
+
}
|
|
2656
|
+
#realStart() {
|
|
2657
|
+
const { stdin } = process$1;
|
|
2658
|
+
if (process$1.platform === "win32" || !stdin?.isTTY || typeof stdin.setRawMode !== "function") {
|
|
2659
|
+
this.#stdin = void 0;
|
|
2660
|
+
return;
|
|
2661
|
+
}
|
|
2662
|
+
this.#stdin = stdin;
|
|
2663
|
+
this.#stdinWasPaused = stdin.isPaused();
|
|
2664
|
+
this.#stdinWasRaw = Boolean(stdin.isRaw);
|
|
2665
|
+
stdin.setRawMode(true);
|
|
2666
|
+
stdin.prependListener("data", this.#handleInputBound);
|
|
2667
|
+
if (this.#stdinWasPaused) stdin.resume();
|
|
2668
|
+
}
|
|
2669
|
+
#realStop() {
|
|
2670
|
+
if (!this.#stdin) return;
|
|
2671
|
+
const stdin = this.#stdin;
|
|
2672
|
+
stdin.off("data", this.#handleInputBound);
|
|
2673
|
+
if (stdin.isTTY) stdin.setRawMode?.(this.#stdinWasRaw);
|
|
2674
|
+
if (this.#stdinWasPaused) stdin.pause();
|
|
2675
|
+
this.#stdin = void 0;
|
|
2676
|
+
this.#stdinWasPaused = false;
|
|
2677
|
+
this.#stdinWasRaw = false;
|
|
2678
|
+
}
|
|
2679
|
+
};
|
|
2680
|
+
const stdinDiscarder = new StdinDiscarder();
|
|
2681
|
+
var stdin_discarder_default = Object.freeze(stdinDiscarder);
|
|
2682
|
+
//#endregion
|
|
2683
|
+
//#region ../../node_modules/.pnpm/ora@9.4.0/node_modules/ora/index.js
|
|
2684
|
+
const RENDER_DEFERRAL_TIMEOUT = 200;
|
|
2685
|
+
const SYNCHRONIZED_OUTPUT_ENABLE = "\x1B[?2026h";
|
|
2686
|
+
const SYNCHRONIZED_OUTPUT_DISABLE = "\x1B[?2026l";
|
|
2687
|
+
const activeHooksPerStream = /* @__PURE__ */ new Map();
|
|
2688
|
+
const validColors = new Set([
|
|
2689
|
+
"black",
|
|
2690
|
+
"red",
|
|
2691
|
+
"green",
|
|
2692
|
+
"yellow",
|
|
2693
|
+
"blue",
|
|
2694
|
+
"magenta",
|
|
2695
|
+
"cyan",
|
|
2696
|
+
"white",
|
|
2697
|
+
"gray"
|
|
2698
|
+
]);
|
|
2699
|
+
var Ora = class {
|
|
2700
|
+
#linesToClear = 0;
|
|
2701
|
+
#frameIndex = -1;
|
|
2702
|
+
#lastFrameTime = 0;
|
|
2703
|
+
#options;
|
|
2704
|
+
#spinner;
|
|
2705
|
+
#stream;
|
|
2706
|
+
#id;
|
|
2707
|
+
#hookedStreams = /* @__PURE__ */ new Map();
|
|
2708
|
+
#isInternalWrite = false;
|
|
2709
|
+
#drainHandler;
|
|
2710
|
+
#deferRenderTimer;
|
|
2711
|
+
#isDiscardingStdin = false;
|
|
2712
|
+
#color;
|
|
2713
|
+
#internalWrite(fn) {
|
|
2714
|
+
this.#isInternalWrite = true;
|
|
2715
|
+
try {
|
|
2716
|
+
return fn();
|
|
2717
|
+
} finally {
|
|
2718
|
+
this.#isInternalWrite = false;
|
|
2719
|
+
}
|
|
2720
|
+
}
|
|
2721
|
+
#tryRender() {
|
|
2722
|
+
if (this.isSpinning) this.render();
|
|
2723
|
+
}
|
|
2724
|
+
#stringifyChunk(chunk, encoding) {
|
|
2725
|
+
if (chunk === void 0 || chunk === null) return "";
|
|
2726
|
+
if (typeof chunk === "string") return chunk;
|
|
2727
|
+
if (Buffer.isBuffer(chunk) || ArrayBuffer.isView(chunk)) {
|
|
2728
|
+
const normalizedEncoding = typeof encoding === "string" && encoding && encoding !== "buffer" ? encoding : "utf8";
|
|
2729
|
+
return Buffer.from(chunk).toString(normalizedEncoding);
|
|
2730
|
+
}
|
|
2731
|
+
return String(chunk);
|
|
2732
|
+
}
|
|
2733
|
+
#chunkTerminatesLine(chunkString) {
|
|
2734
|
+
if (!chunkString) return false;
|
|
2735
|
+
const lastCharacter = chunkString.at(-1);
|
|
2736
|
+
return lastCharacter === "\n" || lastCharacter === "\r";
|
|
2737
|
+
}
|
|
2738
|
+
#scheduleRenderDeferral() {
|
|
2739
|
+
if (this.#deferRenderTimer) return;
|
|
2740
|
+
this.#deferRenderTimer = setTimeout(() => {
|
|
2741
|
+
this.#deferRenderTimer = void 0;
|
|
2742
|
+
if (this.isSpinning) this.#tryRender();
|
|
2743
|
+
}, RENDER_DEFERRAL_TIMEOUT);
|
|
2744
|
+
if (typeof this.#deferRenderTimer?.unref === "function") this.#deferRenderTimer.unref();
|
|
2745
|
+
}
|
|
2746
|
+
#clearRenderDeferral() {
|
|
2747
|
+
if (this.#deferRenderTimer) {
|
|
2748
|
+
clearTimeout(this.#deferRenderTimer);
|
|
2749
|
+
this.#deferRenderTimer = void 0;
|
|
2750
|
+
}
|
|
2751
|
+
}
|
|
2752
|
+
#buildOutputLine(symbol, text, prefixText, suffixText) {
|
|
2753
|
+
const fullPrefixText = this.#getFullPrefixText(prefixText, " ");
|
|
2754
|
+
const fullText = typeof text === "string" ? (symbol ? " " : "") + text : "";
|
|
2755
|
+
const fullSuffixText = this.#getFullSuffixText(suffixText, " ");
|
|
2756
|
+
return fullPrefixText + symbol + fullText + fullSuffixText;
|
|
2757
|
+
}
|
|
2758
|
+
constructor(options) {
|
|
2759
|
+
if (typeof options === "string") options = { text: options };
|
|
2760
|
+
this.#options = {
|
|
2761
|
+
color: "cyan",
|
|
2762
|
+
stream: process$1.stderr,
|
|
2763
|
+
discardStdin: true,
|
|
2764
|
+
hideCursor: true,
|
|
2765
|
+
...options
|
|
2766
|
+
};
|
|
2767
|
+
this.color = this.#options.color;
|
|
2768
|
+
this.#stream = this.#options.stream;
|
|
2769
|
+
if (typeof this.#options.isEnabled !== "boolean") this.#options.isEnabled = isInteractive({ stream: this.#stream });
|
|
2770
|
+
if (typeof this.#options.isSilent !== "boolean") this.#options.isSilent = false;
|
|
2771
|
+
if (this.#options.interval !== void 0 && !(Number.isInteger(this.#options.interval) && this.#options.interval > 0)) throw new Error("The `interval` option must be a positive integer");
|
|
2772
|
+
const userInterval = this.#options.interval;
|
|
2773
|
+
this.spinner = this.#options.spinner;
|
|
2774
|
+
this.#options.interval = userInterval;
|
|
2775
|
+
this.text = this.#options.text;
|
|
2776
|
+
this.prefixText = this.#options.prefixText;
|
|
2777
|
+
this.suffixText = this.#options.suffixText;
|
|
2778
|
+
this.indent = this.#options.indent;
|
|
2779
|
+
if (process$1.env.NODE_ENV === "test") {
|
|
2780
|
+
this._stream = this.#stream;
|
|
2781
|
+
this._isEnabled = this.#options.isEnabled;
|
|
2782
|
+
Object.defineProperty(this, "_linesToClear", {
|
|
2783
|
+
get() {
|
|
2784
|
+
return this.#linesToClear;
|
|
2785
|
+
},
|
|
2786
|
+
set(newValue) {
|
|
2787
|
+
this.#linesToClear = newValue;
|
|
2788
|
+
}
|
|
2789
|
+
});
|
|
2790
|
+
Object.defineProperty(this, "_frameIndex", { get() {
|
|
2791
|
+
return this.#frameIndex;
|
|
2792
|
+
} });
|
|
2793
|
+
Object.defineProperty(this, "_lineCount", { get() {
|
|
2794
|
+
const columns = this.#stream.columns ?? 80;
|
|
2795
|
+
const prefixText = typeof this.#options.prefixText === "function" ? "" : this.#options.prefixText;
|
|
2796
|
+
const suffixText = typeof this.#options.suffixText === "function" ? "" : this.#options.suffixText;
|
|
2797
|
+
const fullPrefixText = typeof prefixText === "string" && prefixText !== "" ? prefixText + " " : "";
|
|
2798
|
+
const fullSuffixText = typeof suffixText === "string" && suffixText !== "" ? " " + suffixText : "";
|
|
2799
|
+
const fullText = " ".repeat(this.#options.indent) + fullPrefixText + "-" + (typeof this.#options.text === "string" ? " " + this.#options.text : "") + fullSuffixText;
|
|
2800
|
+
return this.#computeLineCountFrom(fullText, columns);
|
|
2801
|
+
} });
|
|
2802
|
+
}
|
|
2803
|
+
}
|
|
2804
|
+
get indent() {
|
|
2805
|
+
return this.#options.indent;
|
|
2806
|
+
}
|
|
2807
|
+
set indent(indent = 0) {
|
|
2808
|
+
if (!(indent >= 0 && Number.isInteger(indent))) throw new Error("The `indent` option must be an integer from 0 and up");
|
|
2809
|
+
this.#options.indent = indent;
|
|
2810
|
+
}
|
|
2811
|
+
get interval() {
|
|
2812
|
+
return this.#options.interval ?? this.#spinner.interval ?? 100;
|
|
2813
|
+
}
|
|
2814
|
+
get spinner() {
|
|
2815
|
+
return this.#spinner;
|
|
2816
|
+
}
|
|
2817
|
+
set spinner(spinner) {
|
|
2818
|
+
this.#frameIndex = -1;
|
|
2819
|
+
this.#options.interval = void 0;
|
|
2820
|
+
if (typeof spinner === "object") {
|
|
2821
|
+
if (!Array.isArray(spinner.frames) || spinner.frames.length === 0 || spinner.frames.some((frame) => typeof frame !== "string")) throw new Error("The given spinner must have a non-empty `frames` array of strings");
|
|
2822
|
+
if (spinner.interval !== void 0 && !(Number.isInteger(spinner.interval) && spinner.interval > 0)) throw new Error("`spinner.interval` must be a positive integer if provided");
|
|
2823
|
+
this.#spinner = spinner;
|
|
2824
|
+
} else if (!isUnicodeSupported()) this.#spinner = cli_spinners_default.line;
|
|
2825
|
+
else if (spinner === void 0) this.#spinner = cli_spinners_default.dots;
|
|
2826
|
+
else if (spinner !== "default" && cli_spinners_default[spinner]) this.#spinner = cli_spinners_default[spinner];
|
|
2827
|
+
else throw 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.`);
|
|
2828
|
+
}
|
|
2829
|
+
get text() {
|
|
2830
|
+
return this.#options.text;
|
|
2831
|
+
}
|
|
2832
|
+
set text(value = "") {
|
|
2833
|
+
this.#options.text = value;
|
|
2834
|
+
}
|
|
2835
|
+
get prefixText() {
|
|
2836
|
+
return this.#options.prefixText;
|
|
2837
|
+
}
|
|
2838
|
+
set prefixText(value = "") {
|
|
2839
|
+
this.#options.prefixText = value;
|
|
2840
|
+
}
|
|
2841
|
+
get suffixText() {
|
|
2842
|
+
return this.#options.suffixText;
|
|
2843
|
+
}
|
|
2844
|
+
set suffixText(value = "") {
|
|
2845
|
+
this.#options.suffixText = value;
|
|
2846
|
+
}
|
|
2847
|
+
get isSpinning() {
|
|
2848
|
+
return this.#id !== void 0;
|
|
2849
|
+
}
|
|
2850
|
+
#formatAffix(value, separator, placeBefore = false) {
|
|
2851
|
+
const resolved = typeof value === "function" ? value() : value;
|
|
2852
|
+
if (typeof resolved === "string" && resolved !== "") return placeBefore ? separator + resolved : resolved + separator;
|
|
2853
|
+
return "";
|
|
2854
|
+
}
|
|
2855
|
+
#getFullPrefixText(prefixText = this.#options.prefixText, postfix = " ") {
|
|
2856
|
+
return this.#formatAffix(prefixText, postfix, false);
|
|
2857
|
+
}
|
|
2858
|
+
#getFullSuffixText(suffixText = this.#options.suffixText, prefix = " ") {
|
|
2859
|
+
return this.#formatAffix(suffixText, prefix, true);
|
|
2860
|
+
}
|
|
2861
|
+
#computeLineCountFrom(text, columns) {
|
|
2862
|
+
let count = 0;
|
|
2863
|
+
for (const line of stripVTControlCharacters(text).split("\n")) count += Math.max(1, Math.ceil(stringWidth(line) / columns));
|
|
2864
|
+
return count;
|
|
2865
|
+
}
|
|
2866
|
+
get color() {
|
|
2867
|
+
return this.#color;
|
|
2868
|
+
}
|
|
2869
|
+
set color(value) {
|
|
2870
|
+
if (value !== void 0 && value !== false && !validColors.has(value)) throw new Error("The `color` option must be a valid color or `false` to disable");
|
|
2871
|
+
this.#color = value;
|
|
2872
|
+
}
|
|
2873
|
+
get isEnabled() {
|
|
2874
|
+
return this.#options.isEnabled && !this.#options.isSilent;
|
|
2875
|
+
}
|
|
2876
|
+
set isEnabled(value) {
|
|
2877
|
+
if (typeof value !== "boolean") throw new TypeError("The `isEnabled` option must be a boolean");
|
|
2878
|
+
this.#options.isEnabled = value;
|
|
2879
|
+
}
|
|
2880
|
+
get isSilent() {
|
|
2881
|
+
return this.#options.isSilent;
|
|
2882
|
+
}
|
|
2883
|
+
set isSilent(value) {
|
|
2884
|
+
if (typeof value !== "boolean") throw new TypeError("The `isSilent` option must be a boolean");
|
|
2885
|
+
this.#options.isSilent = value;
|
|
2886
|
+
}
|
|
2887
|
+
frame() {
|
|
2888
|
+
const now = Date.now();
|
|
2889
|
+
if (this.#frameIndex === -1 || now - this.#lastFrameTime >= this.interval) {
|
|
2890
|
+
this.#frameIndex = (this.#frameIndex + 1) % this.#spinner.frames.length;
|
|
2891
|
+
this.#lastFrameTime = now;
|
|
2892
|
+
}
|
|
2893
|
+
const { frames } = this.#spinner;
|
|
2894
|
+
let frame = frames[this.#frameIndex];
|
|
2895
|
+
if (this.#color) frame = chalk[this.#color](frame);
|
|
2896
|
+
const fullPrefixText = this.#getFullPrefixText(this.#options.prefixText, " ");
|
|
2897
|
+
const fullText = typeof this.text === "string" ? " " + this.text : "";
|
|
2898
|
+
const fullSuffixText = this.#getFullSuffixText(this.#options.suffixText, " ");
|
|
2899
|
+
return fullPrefixText + frame + fullText + fullSuffixText;
|
|
2900
|
+
}
|
|
2901
|
+
clear() {
|
|
2902
|
+
if (!this.isEnabled || !this.#stream.isTTY) return this;
|
|
2903
|
+
this.#internalWrite(() => {
|
|
2904
|
+
this.#stream.cursorTo(0);
|
|
2905
|
+
for (let index = 0; index < this.#linesToClear; index++) {
|
|
2906
|
+
if (index > 0) this.#stream.moveCursor(0, -1);
|
|
2907
|
+
this.#stream.clearLine(1);
|
|
2908
|
+
}
|
|
2909
|
+
if (this.#options.indent) this.#stream.cursorTo(this.#options.indent);
|
|
2910
|
+
});
|
|
2911
|
+
this.#linesToClear = 0;
|
|
2912
|
+
return this;
|
|
2913
|
+
}
|
|
2914
|
+
#hookStream(stream) {
|
|
2915
|
+
if (!stream || this.#hookedStreams.has(stream) || !stream.isTTY || typeof stream.write !== "function") return;
|
|
2916
|
+
if (activeHooksPerStream.has(stream)) console.warn("[ora] Multiple concurrent spinners detected. This may cause visual corruption. Use one spinner at a time.");
|
|
2917
|
+
const originalWrite = stream.write;
|
|
2918
|
+
this.#hookedStreams.set(stream, originalWrite);
|
|
2919
|
+
activeHooksPerStream.set(stream, this);
|
|
2920
|
+
stream.write = (chunk, encoding, callback) => this.#hookedWrite(stream, originalWrite, chunk, encoding, callback);
|
|
2921
|
+
}
|
|
2922
|
+
/**
|
|
2923
|
+
Intercept stream writes while spinner is active to handle external writes cleanly without visual corruption.
|
|
2924
|
+
Hooks process stdio streams and the active spinner stream so console.log(), console.error(), and direct writes stay tidy.
|
|
2925
|
+
*/
|
|
2926
|
+
#installHook() {
|
|
2927
|
+
if (!this.isEnabled || this.#hookedStreams.size > 0) return;
|
|
2928
|
+
const streamsToHook = new Set([
|
|
2929
|
+
this.#stream,
|
|
2930
|
+
process$1.stdout,
|
|
2931
|
+
process$1.stderr
|
|
2932
|
+
]);
|
|
2933
|
+
for (const stream of streamsToHook) this.#hookStream(stream);
|
|
2934
|
+
}
|
|
2935
|
+
#uninstallHook() {
|
|
2936
|
+
for (const [stream, originalWrite] of this.#hookedStreams) {
|
|
2937
|
+
stream.write = originalWrite;
|
|
2938
|
+
if (activeHooksPerStream.get(stream) === this) activeHooksPerStream.delete(stream);
|
|
2939
|
+
}
|
|
2940
|
+
this.#hookedStreams.clear();
|
|
2941
|
+
}
|
|
2942
|
+
#hookedWrite(stream, originalWrite, chunk, encoding, callback) {
|
|
2943
|
+
if (typeof encoding === "function") {
|
|
2944
|
+
callback = encoding;
|
|
2945
|
+
encoding = void 0;
|
|
2946
|
+
}
|
|
2947
|
+
if (this.#isInternalWrite) return originalWrite.call(stream, chunk, encoding, callback);
|
|
2948
|
+
this.clear();
|
|
2949
|
+
const chunkString = this.#stringifyChunk(chunk, encoding);
|
|
2950
|
+
const chunkTerminatesLine = this.#chunkTerminatesLine(chunkString);
|
|
2951
|
+
const writeResult = originalWrite.call(stream, chunk, encoding, callback);
|
|
2952
|
+
if (chunkTerminatesLine) this.#clearRenderDeferral();
|
|
2953
|
+
else if (chunkString.length > 0) this.#scheduleRenderDeferral();
|
|
2954
|
+
if (this.isSpinning && !this.#deferRenderTimer) this.render();
|
|
2955
|
+
return writeResult;
|
|
2956
|
+
}
|
|
2957
|
+
render() {
|
|
2958
|
+
if (!this.isEnabled || this.#drainHandler || this.#deferRenderTimer) return this;
|
|
2959
|
+
const useSynchronizedOutput = this.#stream.isTTY;
|
|
2960
|
+
let shouldDisableSynchronizedOutput = false;
|
|
2961
|
+
try {
|
|
2962
|
+
if (useSynchronizedOutput) {
|
|
2963
|
+
this.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_ENABLE));
|
|
2964
|
+
shouldDisableSynchronizedOutput = true;
|
|
2965
|
+
}
|
|
2966
|
+
this.clear();
|
|
2967
|
+
let frameContent = this.frame();
|
|
2968
|
+
const columns = this.#stream.columns ?? 80;
|
|
2969
|
+
const actualLineCount = this.#computeLineCountFrom(frameContent, columns);
|
|
2970
|
+
const consoleHeight = this.#stream.rows;
|
|
2971
|
+
if (consoleHeight && consoleHeight > 1 && actualLineCount > consoleHeight) {
|
|
2972
|
+
const lines = frameContent.split("\n");
|
|
2973
|
+
const maxLines = consoleHeight - 1;
|
|
2974
|
+
frameContent = [...lines.slice(0, maxLines), "... (content truncated to fit terminal)"].join("\n");
|
|
2975
|
+
}
|
|
2976
|
+
if (this.#internalWrite(() => this.#stream.write(frameContent)) === false && this.#stream.isTTY) {
|
|
2977
|
+
this.#drainHandler = () => {
|
|
2978
|
+
this.#drainHandler = void 0;
|
|
2979
|
+
this.#tryRender();
|
|
2980
|
+
};
|
|
2981
|
+
this.#stream.once("drain", this.#drainHandler);
|
|
2982
|
+
}
|
|
2983
|
+
this.#linesToClear = this.#computeLineCountFrom(frameContent, columns);
|
|
2984
|
+
} finally {
|
|
2985
|
+
if (shouldDisableSynchronizedOutput) this.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_DISABLE));
|
|
2986
|
+
}
|
|
2987
|
+
return this;
|
|
2988
|
+
}
|
|
2989
|
+
start(text) {
|
|
2990
|
+
if (text) this.text = text;
|
|
2991
|
+
if (this.isSilent) return this;
|
|
2992
|
+
if (!this.isEnabled) {
|
|
2993
|
+
const symbol = this.text ? "-" : "";
|
|
2994
|
+
const line = " ".repeat(this.#options.indent) + this.#buildOutputLine(symbol, this.text, this.#options.prefixText, this.#options.suffixText);
|
|
2995
|
+
if (line.trim() !== "") this.#internalWrite(() => this.#stream.write(line + "\n"));
|
|
2996
|
+
return this;
|
|
2997
|
+
}
|
|
2998
|
+
if (this.isSpinning) return this;
|
|
2999
|
+
if (this.#options.hideCursor) cliCursor.hide(this.#stream);
|
|
3000
|
+
if (this.#options.discardStdin && process$1.stdin.isTTY) {
|
|
3001
|
+
stdin_discarder_default.start();
|
|
3002
|
+
this.#isDiscardingStdin = true;
|
|
3003
|
+
}
|
|
3004
|
+
this.#installHook();
|
|
3005
|
+
this.render();
|
|
3006
|
+
this.#id = setInterval(this.render.bind(this), this.interval);
|
|
3007
|
+
return this;
|
|
3008
|
+
}
|
|
3009
|
+
stop() {
|
|
3010
|
+
clearInterval(this.#id);
|
|
3011
|
+
this.#id = void 0;
|
|
3012
|
+
this.#frameIndex = -1;
|
|
3013
|
+
this.#lastFrameTime = 0;
|
|
3014
|
+
this.#clearRenderDeferral();
|
|
3015
|
+
this.#uninstallHook();
|
|
3016
|
+
if (this.#drainHandler) {
|
|
3017
|
+
this.#stream.removeListener("drain", this.#drainHandler);
|
|
3018
|
+
this.#drainHandler = void 0;
|
|
3019
|
+
}
|
|
3020
|
+
if (this.isEnabled) {
|
|
3021
|
+
this.clear();
|
|
3022
|
+
if (this.#options.hideCursor) cliCursor.show(this.#stream);
|
|
3023
|
+
}
|
|
3024
|
+
if (this.#isDiscardingStdin) {
|
|
3025
|
+
this.#isDiscardingStdin = false;
|
|
3026
|
+
stdin_discarder_default.stop();
|
|
3027
|
+
}
|
|
3028
|
+
return this;
|
|
3029
|
+
}
|
|
3030
|
+
succeed(text) {
|
|
3031
|
+
return this.stopAndPersist({
|
|
3032
|
+
symbol: success,
|
|
3033
|
+
text
|
|
3034
|
+
});
|
|
3035
|
+
}
|
|
3036
|
+
fail(text) {
|
|
3037
|
+
return this.stopAndPersist({
|
|
3038
|
+
symbol: error,
|
|
3039
|
+
text
|
|
3040
|
+
});
|
|
3041
|
+
}
|
|
3042
|
+
warn(text) {
|
|
3043
|
+
return this.stopAndPersist({
|
|
3044
|
+
symbol: warning,
|
|
3045
|
+
text
|
|
3046
|
+
});
|
|
3047
|
+
}
|
|
3048
|
+
info(text) {
|
|
3049
|
+
return this.stopAndPersist({
|
|
3050
|
+
symbol: info,
|
|
3051
|
+
text
|
|
3052
|
+
});
|
|
3053
|
+
}
|
|
3054
|
+
stopAndPersist(options = {}) {
|
|
3055
|
+
if (this.isSilent) return this;
|
|
3056
|
+
const symbol = options.symbol ?? " ";
|
|
3057
|
+
const text = options.text ?? this.text;
|
|
3058
|
+
const prefixText = options.prefixText ?? this.#options.prefixText;
|
|
3059
|
+
const suffixText = options.suffixText ?? this.#options.suffixText;
|
|
3060
|
+
const textToWrite = this.#buildOutputLine(symbol, text, prefixText, suffixText) + "\n";
|
|
3061
|
+
this.stop();
|
|
3062
|
+
this.#internalWrite(() => this.#stream.write(textToWrite));
|
|
3063
|
+
return this;
|
|
3064
|
+
}
|
|
3065
|
+
};
|
|
3066
|
+
function ora(options) {
|
|
3067
|
+
return new Ora(options);
|
|
3068
|
+
}
|
|
3069
|
+
//#endregion
|
|
3070
|
+
//#region src/cli/utils/is-spinner-interactive.ts
|
|
3071
|
+
const isSpinnerInteractive = (stream = process.stderr) => {
|
|
3072
|
+
if (stream.isTTY !== true) return false;
|
|
3073
|
+
const columnCount = stream.columns;
|
|
3074
|
+
if (!columnCount || columnCount <= 0) return false;
|
|
3075
|
+
if (process.env.TERM === "dumb") return false;
|
|
3076
|
+
if (isNonInteractiveEnvironment()) return false;
|
|
3077
|
+
return true;
|
|
3078
|
+
};
|
|
3079
|
+
//#endregion
|
|
3080
|
+
//#region src/cli/utils/spinner.ts
|
|
3081
|
+
let isSilent = false;
|
|
3082
|
+
const setSpinnerSilent = (silent) => {
|
|
3083
|
+
isSilent = silent;
|
|
3084
|
+
};
|
|
3085
|
+
const isSpinnerSilent = () => isSilent;
|
|
3086
|
+
const noopHandle = Object.freeze({
|
|
3087
|
+
update: () => {},
|
|
3088
|
+
succeed: () => {},
|
|
3089
|
+
fail: () => {},
|
|
3090
|
+
warn: () => {},
|
|
3091
|
+
stop: () => {}
|
|
3092
|
+
});
|
|
3093
|
+
const spinner = (text) => ({ start() {
|
|
3094
|
+
if (isSilent) return noopHandle;
|
|
3095
|
+
const stream = process.stderr;
|
|
3096
|
+
const isEnabled = isSpinnerInteractive(stream);
|
|
3097
|
+
const instance = ora({
|
|
3098
|
+
text,
|
|
3099
|
+
indent: 0,
|
|
3100
|
+
isEnabled,
|
|
3101
|
+
stream,
|
|
3102
|
+
discardStdin: false
|
|
3103
|
+
});
|
|
3104
|
+
if (isEnabled) instance.start();
|
|
3105
|
+
let didFinalize = false;
|
|
3106
|
+
return {
|
|
3107
|
+
update(displayText) {
|
|
3108
|
+
if (didFinalize) return;
|
|
3109
|
+
instance.text = displayText;
|
|
3110
|
+
},
|
|
3111
|
+
succeed(displayText) {
|
|
3112
|
+
if (didFinalize) return;
|
|
3113
|
+
didFinalize = true;
|
|
3114
|
+
instance.succeed(displayText);
|
|
3115
|
+
},
|
|
3116
|
+
fail(displayText) {
|
|
3117
|
+
if (didFinalize) return;
|
|
3118
|
+
didFinalize = true;
|
|
3119
|
+
instance.fail(displayText);
|
|
3120
|
+
},
|
|
3121
|
+
warn(displayText) {
|
|
3122
|
+
if (didFinalize) return;
|
|
3123
|
+
didFinalize = true;
|
|
3124
|
+
instance.warn(displayText);
|
|
3125
|
+
},
|
|
3126
|
+
stop() {
|
|
3127
|
+
if (didFinalize) return;
|
|
3128
|
+
didFinalize = true;
|
|
3129
|
+
instance.stop();
|
|
3130
|
+
}
|
|
3131
|
+
};
|
|
3132
|
+
} });
|
|
3133
|
+
//#endregion
|
|
3134
|
+
//#region src/cli/utils/install-doctor-script.ts
|
|
3135
|
+
const DOCTOR_SCRIPT_NAME = "doctor";
|
|
3136
|
+
const FALLBACK_DOCTOR_SCRIPT_NAME = "react-doctor";
|
|
3137
|
+
const DOCTOR_SCRIPT_COMMAND = "npx react-doctor@latest";
|
|
3138
|
+
const DOCTOR_PACKAGE_NAME = "react-doctor";
|
|
3139
|
+
const DEPENDENCY_FIELD_NAMES = [
|
|
3140
|
+
"dependencies",
|
|
3141
|
+
"devDependencies",
|
|
3142
|
+
"optionalDependencies",
|
|
3143
|
+
"peerDependencies"
|
|
3144
|
+
];
|
|
3145
|
+
const isReactDoctorScriptCommand = (value) => typeof value === "string" && /\breact-doctor\b/.test(value);
|
|
3146
|
+
const findNearestPackageDirectory = (startDirectory, stopDirectory) => {
|
|
3147
|
+
let currentDirectory = path$1.resolve(startDirectory);
|
|
3148
|
+
const resolvedStopDirectory = stopDirectory === void 0 ? void 0 : path$1.resolve(stopDirectory);
|
|
3149
|
+
while (true) {
|
|
3150
|
+
if (fs$1.existsSync(getPackageJsonPath(currentDirectory))) return currentDirectory;
|
|
3151
|
+
if (currentDirectory === resolvedStopDirectory) return null;
|
|
3152
|
+
const parentDirectory = path$1.dirname(currentDirectory);
|
|
3153
|
+
if (parentDirectory === currentDirectory) return null;
|
|
3154
|
+
currentDirectory = parentDirectory;
|
|
3155
|
+
}
|
|
3156
|
+
};
|
|
3157
|
+
const hasDoctorScript = (projectRoot) => {
|
|
3158
|
+
const packageJson = readPackageJson(findNearestPackageDirectory(projectRoot) ?? projectRoot);
|
|
3159
|
+
if (!isRecord(packageJson)) return false;
|
|
3160
|
+
const scripts = packageJson.scripts;
|
|
3161
|
+
if (!isRecord(scripts)) return false;
|
|
3162
|
+
return isReactDoctorScriptCommand(scripts[DOCTOR_SCRIPT_NAME]) || isReactDoctorScriptCommand(scripts[FALLBACK_DOCTOR_SCRIPT_NAME]);
|
|
3163
|
+
};
|
|
3164
|
+
const hasDoctorDependency = (packageJson) => DEPENDENCY_FIELD_NAMES.some((fieldName) => {
|
|
3165
|
+
const dependencies = packageJson[fieldName];
|
|
3166
|
+
return isRecord(dependencies) && Object.hasOwn(dependencies, "react-doctor");
|
|
3167
|
+
});
|
|
3168
|
+
const installDoctorScript = (options) => {
|
|
3169
|
+
const packageDirectory = findNearestPackageDirectory(options.projectRoot) ?? options.projectRoot;
|
|
3170
|
+
const packageJsonPath = getPackageJsonPath(packageDirectory);
|
|
3171
|
+
const packageJson = readPackageJson(packageDirectory);
|
|
3172
|
+
if (!isRecord(packageJson)) return {
|
|
3173
|
+
packageJsonPath,
|
|
3174
|
+
scriptStatus: "skipped",
|
|
3175
|
+
scriptReason: "missing-or-invalid-package-json"
|
|
3176
|
+
};
|
|
3177
|
+
const scripts = packageJson.scripts;
|
|
3178
|
+
const scriptTarget = (() => {
|
|
3179
|
+
if (scripts !== void 0 && !isRecord(scripts)) return {
|
|
3180
|
+
status: "skipped",
|
|
3181
|
+
reason: "invalid-scripts"
|
|
3182
|
+
};
|
|
3183
|
+
const scriptRecord = isRecord(scripts) ? scripts : {};
|
|
3184
|
+
if (isReactDoctorScriptCommand(scriptRecord[DOCTOR_SCRIPT_NAME])) return {
|
|
3185
|
+
scriptName: DOCTOR_SCRIPT_NAME,
|
|
3186
|
+
status: "existing"
|
|
3187
|
+
};
|
|
3188
|
+
if (!Object.hasOwn(scriptRecord, DOCTOR_SCRIPT_NAME)) {
|
|
3189
|
+
if (isReactDoctorScriptCommand(scriptRecord[FALLBACK_DOCTOR_SCRIPT_NAME])) return {
|
|
3190
|
+
scriptName: FALLBACK_DOCTOR_SCRIPT_NAME,
|
|
3191
|
+
status: "existing"
|
|
3192
|
+
};
|
|
3193
|
+
return {
|
|
3194
|
+
scriptName: DOCTOR_SCRIPT_NAME,
|
|
3195
|
+
status: "created"
|
|
3196
|
+
};
|
|
3197
|
+
}
|
|
3198
|
+
if (isReactDoctorScriptCommand(scriptRecord[FALLBACK_DOCTOR_SCRIPT_NAME])) return {
|
|
3199
|
+
scriptName: FALLBACK_DOCTOR_SCRIPT_NAME,
|
|
3200
|
+
status: "existing",
|
|
3201
|
+
reason: "doctor-script-taken"
|
|
3202
|
+
};
|
|
3203
|
+
if (Object.hasOwn(scriptRecord, FALLBACK_DOCTOR_SCRIPT_NAME)) return {
|
|
3204
|
+
status: "skipped",
|
|
3205
|
+
reason: "script-names-taken"
|
|
3206
|
+
};
|
|
3207
|
+
return {
|
|
3208
|
+
scriptName: FALLBACK_DOCTOR_SCRIPT_NAME,
|
|
3209
|
+
status: "created",
|
|
3210
|
+
reason: "doctor-script-taken"
|
|
3211
|
+
};
|
|
3212
|
+
})();
|
|
3213
|
+
const scriptStatus = scriptTarget.status;
|
|
3214
|
+
if (scriptStatus === "created") writeJsonFile(packageJsonPath, {
|
|
3215
|
+
...packageJson,
|
|
3216
|
+
scripts: {
|
|
3217
|
+
...isRecord(scripts) ? scripts : {},
|
|
3218
|
+
[scriptTarget.scriptName ?? DOCTOR_SCRIPT_NAME]: DOCTOR_SCRIPT_COMMAND
|
|
3219
|
+
}
|
|
3220
|
+
});
|
|
3221
|
+
return {
|
|
3222
|
+
packageJsonPath,
|
|
3223
|
+
...scriptTarget.scriptName !== void 0 ? { scriptName: scriptTarget.scriptName } : {},
|
|
3224
|
+
scriptStatus,
|
|
3225
|
+
...scriptTarget.reason !== void 0 ? { scriptReason: scriptTarget.reason } : {}
|
|
3226
|
+
};
|
|
3227
|
+
};
|
|
3228
|
+
const formatDoctorScriptInstallMessage = (scriptResult) => {
|
|
3229
|
+
const scriptName = scriptResult.scriptName ?? "doctor";
|
|
3230
|
+
if (scriptResult.scriptStatus === "created") return `Added package script: ${scriptName}.`;
|
|
3231
|
+
if (scriptResult.scriptStatus === "existing") return `Package script already exists: ${scriptName}.`;
|
|
3232
|
+
if (scriptResult.scriptReason === "script-names-taken") return "Skipped package script: doctor and react-doctor are already taken.";
|
|
3233
|
+
if (scriptResult.scriptReason === "doctor-script-taken") return "Skipped package script: doctor and react-doctor scripts already exist.";
|
|
3234
|
+
if (scriptResult.scriptReason === "invalid-scripts") return "Skipped package script: scripts field is not an object.";
|
|
3235
|
+
return "Skipped package script: package.json missing or invalid.";
|
|
3236
|
+
};
|
|
3237
|
+
const installReactDoctorScriptStep = (projectRoot) => {
|
|
3238
|
+
const scriptSpinner = spinner("Installing React Doctor package script...").start();
|
|
3239
|
+
try {
|
|
3240
|
+
const scriptResult = installDoctorScript({ projectRoot });
|
|
3241
|
+
scriptSpinner.succeed(formatDoctorScriptInstallMessage(scriptResult));
|
|
3242
|
+
} catch (error) {
|
|
3243
|
+
scriptSpinner.fail("Failed to install React Doctor package script.");
|
|
3244
|
+
throw error;
|
|
3245
|
+
}
|
|
3246
|
+
};
|
|
3247
|
+
//#endregion
|
|
3248
|
+
export { packageHasNestedRecordKey as A, SIMPLE_GIT_HOOKS_CONFIG_FILE as C, getPackageJsonPath as D, ensureTrailingNewline as E, runGitRaw as F, writeJsonFile as I, cliLogger as L, readPackageJson as M, resolveGitPath as N, isRecord as O, runGit as P, REACT_DOCTOR_COMMAND as S, VITE_PLUS_HOOKS_PATH as T, LEFTHOOK_CONFIG_FILES as _, installReactDoctorScriptStep as a, OVERCOMMIT_CONFIG_FILE as b, spinner as c, stripAnsi as d, isUnicodeSupported as f, HUSKY_HOOKS_PATH as g, HOOK_RELATIVE_PATH as h, hasDoctorScript as i, packageHasRecordKey as j, packageHasDependency as k, isFullWidth as l, HOOK_FILE_NAME as m, findNearestPackageDirectory as n, isSpinnerSilent as o, chalk as p, hasDoctorDependency as r, setSpinnerSilent as s, DOCTOR_PACKAGE_NAME as t, isWide as u, LEGACY_HOOK_RUNNER_RELATIVE_PATH as v, SIMPLE_GIT_HOOKS_PACKAGE_JSON_KEY as w, PRE_COMMIT_CONFIG_FILE as x, NON_BLOCKING_REACT_DOCTOR_COMMAND as y };
|
|
3249
|
+
|
|
3250
|
+
//# sourceMappingURL=install-doctor-script-J-zvzVqR.js.map
|
|
3251
|
+
//# debugId=8e8a8984-9999-5109-b2bd-6383c2a28c71
|