jinrai 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/bin.js ADDED
@@ -0,0 +1,3322 @@
1
+ #!/usr/bin/env node
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (target, all) => {
4
+ for (var name in all)
5
+ __defProp(target, name, { get: all[name], enumerable: true });
6
+ };
7
+
8
+ // src/bin.ts
9
+ import { writeFile } from "node:fs/promises";
10
+
11
+ // src/config/userConfig.ts
12
+ import { createJiti } from "jiti";
13
+ import { pathToFileURL } from "url";
14
+ import { resolve } from "path";
15
+ var getUserConfig = async () => {
16
+ const jiti = createJiti(import.meta.url, {
17
+ debug: false
18
+ });
19
+ const configPath = pathToFileURL(resolve(process.cwd(), ".ssr.config")).href;
20
+ const configModule = await jiti.import(configPath);
21
+ return configModule.default;
22
+ };
23
+
24
+ // src/routes/splitByTag.ts
25
+ var splitByTag = (tag, content) => {
26
+ const htmls = content.replace(new RegExp(`(</?${tag}.*?>)`, "gm"), (_, find) => {
27
+ return `<**${tag}**>` + (find.startsWith("</") ? "CLS" : "OPN");
28
+ }).split(`<**${tag}**>`);
29
+ if (htmls.length == 1)
30
+ return htmls;
31
+ let count = 0;
32
+ const result = [];
33
+ for (let itm of htmls) {
34
+ let step = 0;
35
+ if (itm.startsWith("OPN")) step = 1;
36
+ if (itm.startsWith("CLS")) step = -1;
37
+ if (step != 0)
38
+ itm = itm.substring(3);
39
+ if (step > 0) {
40
+ count += step;
41
+ step = 0;
42
+ }
43
+ if (count <= 1)
44
+ result.push([itm]);
45
+ else
46
+ result[result.length - 1].push(itm);
47
+ count += step;
48
+ }
49
+ return result.map((itms) => itms.join(`<**${tag}**>`));
50
+ };
51
+
52
+ // src/routes/parser.ts
53
+ var toBinary = (content) => {
54
+ return btoa(unescape(encodeURIComponent(content)));
55
+ };
56
+ var Parser = class {
57
+ templates = [];
58
+ ctemplates = [];
59
+ convertor;
60
+ constructor(convertor) {
61
+ this.convertor = convertor;
62
+ }
63
+ parse(html) {
64
+ const parts = splitByTag("loopwrapper", html);
65
+ return parts.map((content) => {
66
+ const isArray = content.startsWith("ArrayDataKey=");
67
+ let contentKey = void 0;
68
+ if (isArray) {
69
+ ;
70
+ [contentKey, content] = this.firstPypeSplit(content);
71
+ }
72
+ return {
73
+ type: isArray ? "array" : "html",
74
+ template: isArray ? this.parse(content) : this.getTemplateId(content),
75
+ contentKey
76
+ };
77
+ });
78
+ }
79
+ getTemplateId(template) {
80
+ const index = this.templates.indexOf(template);
81
+ if (index != -1) {
82
+ return index;
83
+ }
84
+ this.templates.push(template);
85
+ this.ctemplates.push(this.convertor ? this.convertor(template) : toBinary(template));
86
+ return this.templates.length - 1;
87
+ }
88
+ firstPypeSplit(content) {
89
+ const index = content.indexOf("|");
90
+ return [content.slice(13, index), content.slice(index + 1)];
91
+ }
92
+ };
93
+
94
+ // src/routes/getRoutes.ts
95
+ var getRoutesAndTemplates = (templates2) => {
96
+ const routes2 = [];
97
+ const parser = new Parser();
98
+ for (const template of templates2) {
99
+ const content = parser.parse(template.root);
100
+ const mask = template.mask.replaceAll("/", "\\/").replace(/{(.*?)}/, ".+?");
101
+ routes2.push({
102
+ content,
103
+ mask,
104
+ requests: template.input
105
+ });
106
+ }
107
+ return {
108
+ routes: routes2,
109
+ templates: parser.templates
110
+ };
111
+ };
112
+
113
+ // src/templates.ts
114
+ import { chromium } from "playwright";
115
+
116
+ // node_modules/ora/index.js
117
+ import process8 from "node:process";
118
+
119
+ // node_modules/chalk/source/vendor/ansi-styles/index.js
120
+ var ANSI_BACKGROUND_OFFSET = 10;
121
+ var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
122
+ var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`;
123
+ var wrapAnsi16m = (offset = 0) => (red2, green2, blue2) => `\x1B[${38 + offset};2;${red2};${green2};${blue2}m`;
124
+ var styles = {
125
+ modifier: {
126
+ reset: [0, 0],
127
+ // 21 isn't widely supported and 22 does the same thing
128
+ bold: [1, 22],
129
+ dim: [2, 22],
130
+ italic: [3, 23],
131
+ underline: [4, 24],
132
+ overline: [53, 55],
133
+ inverse: [7, 27],
134
+ hidden: [8, 28],
135
+ strikethrough: [9, 29]
136
+ },
137
+ color: {
138
+ black: [30, 39],
139
+ red: [31, 39],
140
+ green: [32, 39],
141
+ yellow: [33, 39],
142
+ blue: [34, 39],
143
+ magenta: [35, 39],
144
+ cyan: [36, 39],
145
+ white: [37, 39],
146
+ // Bright color
147
+ blackBright: [90, 39],
148
+ gray: [90, 39],
149
+ // Alias of `blackBright`
150
+ grey: [90, 39],
151
+ // Alias of `blackBright`
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
+ // Bright color
170
+ bgBlackBright: [100, 49],
171
+ bgGray: [100, 49],
172
+ // Alias of `bgBlackBright`
173
+ bgGrey: [100, 49],
174
+ // Alias of `bgBlackBright`
175
+ bgRedBright: [101, 49],
176
+ bgGreenBright: [102, 49],
177
+ bgYellowBright: [103, 49],
178
+ bgBlueBright: [104, 49],
179
+ bgMagentaBright: [105, 49],
180
+ bgCyanBright: [106, 49],
181
+ bgWhiteBright: [107, 49]
182
+ }
183
+ };
184
+ var modifierNames = Object.keys(styles.modifier);
185
+ var foregroundColorNames = Object.keys(styles.color);
186
+ var backgroundColorNames = Object.keys(styles.bgColor);
187
+ var colorNames = [...foregroundColorNames, ...backgroundColorNames];
188
+ function assembleStyles() {
189
+ const codes = /* @__PURE__ */ new Map();
190
+ for (const [groupName, group] of Object.entries(styles)) {
191
+ for (const [styleName, style] of Object.entries(group)) {
192
+ styles[styleName] = {
193
+ open: `\x1B[${style[0]}m`,
194
+ close: `\x1B[${style[1]}m`
195
+ };
196
+ group[styleName] = styles[styleName];
197
+ codes.set(style[0], style[1]);
198
+ }
199
+ Object.defineProperty(styles, groupName, {
200
+ value: group,
201
+ enumerable: false
202
+ });
203
+ }
204
+ Object.defineProperty(styles, "codes", {
205
+ value: codes,
206
+ enumerable: false
207
+ });
208
+ styles.color.close = "\x1B[39m";
209
+ styles.bgColor.close = "\x1B[49m";
210
+ styles.color.ansi = wrapAnsi16();
211
+ styles.color.ansi256 = wrapAnsi256();
212
+ styles.color.ansi16m = wrapAnsi16m();
213
+ styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
214
+ styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
215
+ styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
216
+ Object.defineProperties(styles, {
217
+ rgbToAnsi256: {
218
+ value(red2, green2, blue2) {
219
+ if (red2 === green2 && green2 === blue2) {
220
+ if (red2 < 8) {
221
+ return 16;
222
+ }
223
+ if (red2 > 248) {
224
+ return 231;
225
+ }
226
+ return Math.round((red2 - 8) / 247 * 24) + 232;
227
+ }
228
+ return 16 + 36 * Math.round(red2 / 255 * 5) + 6 * Math.round(green2 / 255 * 5) + Math.round(blue2 / 255 * 5);
229
+ },
230
+ enumerable: false
231
+ },
232
+ hexToRgb: {
233
+ value(hex) {
234
+ const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
235
+ if (!matches) {
236
+ return [0, 0, 0];
237
+ }
238
+ let [colorString] = matches;
239
+ if (colorString.length === 3) {
240
+ colorString = [...colorString].map((character) => character + character).join("");
241
+ }
242
+ const integer = Number.parseInt(colorString, 16);
243
+ return [
244
+ /* eslint-disable no-bitwise */
245
+ integer >> 16 & 255,
246
+ integer >> 8 & 255,
247
+ integer & 255
248
+ /* eslint-enable no-bitwise */
249
+ ];
250
+ },
251
+ enumerable: false
252
+ },
253
+ hexToAnsi256: {
254
+ value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)),
255
+ enumerable: false
256
+ },
257
+ ansi256ToAnsi: {
258
+ value(code) {
259
+ if (code < 8) {
260
+ return 30 + code;
261
+ }
262
+ if (code < 16) {
263
+ return 90 + (code - 8);
264
+ }
265
+ let red2;
266
+ let green2;
267
+ let blue2;
268
+ if (code >= 232) {
269
+ red2 = ((code - 232) * 10 + 8) / 255;
270
+ green2 = red2;
271
+ blue2 = red2;
272
+ } else {
273
+ code -= 16;
274
+ const remainder = code % 36;
275
+ red2 = Math.floor(code / 36) / 5;
276
+ green2 = Math.floor(remainder / 6) / 5;
277
+ blue2 = remainder % 6 / 5;
278
+ }
279
+ const value = Math.max(red2, green2, blue2) * 2;
280
+ if (value === 0) {
281
+ return 30;
282
+ }
283
+ let result = 30 + (Math.round(blue2) << 2 | Math.round(green2) << 1 | Math.round(red2));
284
+ if (value === 2) {
285
+ result += 60;
286
+ }
287
+ return result;
288
+ },
289
+ enumerable: false
290
+ },
291
+ rgbToAnsi: {
292
+ value: (red2, green2, blue2) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red2, green2, blue2)),
293
+ enumerable: false
294
+ },
295
+ hexToAnsi: {
296
+ value: (hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),
297
+ enumerable: false
298
+ }
299
+ });
300
+ return styles;
301
+ }
302
+ var ansiStyles = assembleStyles();
303
+ var ansi_styles_default = ansiStyles;
304
+
305
+ // node_modules/chalk/source/vendor/supports-color/index.js
306
+ import process2 from "node:process";
307
+ import os from "node:os";
308
+ import tty from "node:tty";
309
+ function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process2.argv) {
310
+ const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
311
+ const position = argv.indexOf(prefix + flag);
312
+ const terminatorPosition = argv.indexOf("--");
313
+ return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
314
+ }
315
+ var { env } = process2;
316
+ var flagForceColor;
317
+ if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
318
+ flagForceColor = 0;
319
+ } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
320
+ flagForceColor = 1;
321
+ }
322
+ function envForceColor() {
323
+ if ("FORCE_COLOR" in env) {
324
+ if (env.FORCE_COLOR === "true") {
325
+ return 1;
326
+ }
327
+ if (env.FORCE_COLOR === "false") {
328
+ return 0;
329
+ }
330
+ return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
331
+ }
332
+ }
333
+ function translateLevel(level) {
334
+ if (level === 0) {
335
+ return false;
336
+ }
337
+ return {
338
+ level,
339
+ hasBasic: true,
340
+ has256: level >= 2,
341
+ has16m: level >= 3
342
+ };
343
+ }
344
+ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
345
+ const noFlagForceColor = envForceColor();
346
+ if (noFlagForceColor !== void 0) {
347
+ flagForceColor = noFlagForceColor;
348
+ }
349
+ const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
350
+ if (forceColor === 0) {
351
+ return 0;
352
+ }
353
+ if (sniffFlags) {
354
+ if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
355
+ return 3;
356
+ }
357
+ if (hasFlag("color=256")) {
358
+ return 2;
359
+ }
360
+ }
361
+ if ("TF_BUILD" in env && "AGENT_NAME" in env) {
362
+ return 1;
363
+ }
364
+ if (haveStream && !streamIsTTY && forceColor === void 0) {
365
+ return 0;
366
+ }
367
+ const min = forceColor || 0;
368
+ if (env.TERM === "dumb") {
369
+ return min;
370
+ }
371
+ if (process2.platform === "win32") {
372
+ const osRelease = os.release().split(".");
373
+ if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
374
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
375
+ }
376
+ return 1;
377
+ }
378
+ if ("CI" in env) {
379
+ if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) {
380
+ return 3;
381
+ }
382
+ if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
383
+ return 1;
384
+ }
385
+ return min;
386
+ }
387
+ if ("TEAMCITY_VERSION" in env) {
388
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
389
+ }
390
+ if (env.COLORTERM === "truecolor") {
391
+ return 3;
392
+ }
393
+ if (env.TERM === "xterm-kitty") {
394
+ return 3;
395
+ }
396
+ if (env.TERM === "xterm-ghostty") {
397
+ return 3;
398
+ }
399
+ if (env.TERM === "wezterm") {
400
+ return 3;
401
+ }
402
+ if ("TERM_PROGRAM" in env) {
403
+ const version = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
404
+ switch (env.TERM_PROGRAM) {
405
+ case "iTerm.app": {
406
+ return version >= 3 ? 3 : 2;
407
+ }
408
+ case "Apple_Terminal": {
409
+ return 2;
410
+ }
411
+ }
412
+ }
413
+ if (/-256(color)?$/i.test(env.TERM)) {
414
+ return 2;
415
+ }
416
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
417
+ return 1;
418
+ }
419
+ if ("COLORTERM" in env) {
420
+ return 1;
421
+ }
422
+ return min;
423
+ }
424
+ function createSupportsColor(stream, options = {}) {
425
+ const level = _supportsColor(stream, {
426
+ streamIsTTY: stream && stream.isTTY,
427
+ ...options
428
+ });
429
+ return translateLevel(level);
430
+ }
431
+ var supportsColor = {
432
+ stdout: createSupportsColor({ isTTY: tty.isatty(1) }),
433
+ stderr: createSupportsColor({ isTTY: tty.isatty(2) })
434
+ };
435
+ var supports_color_default = supportsColor;
436
+
437
+ // node_modules/chalk/source/utilities.js
438
+ function stringReplaceAll(string, substring, replacer) {
439
+ let index = string.indexOf(substring);
440
+ if (index === -1) {
441
+ return string;
442
+ }
443
+ const substringLength = substring.length;
444
+ let endIndex = 0;
445
+ let returnValue = "";
446
+ do {
447
+ returnValue += string.slice(endIndex, index) + substring + replacer;
448
+ endIndex = index + substringLength;
449
+ index = string.indexOf(substring, endIndex);
450
+ } while (index !== -1);
451
+ returnValue += string.slice(endIndex);
452
+ return returnValue;
453
+ }
454
+ function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
455
+ let endIndex = 0;
456
+ let returnValue = "";
457
+ do {
458
+ const gotCR = string[index - 1] === "\r";
459
+ returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? "\r\n" : "\n") + postfix;
460
+ endIndex = index + 1;
461
+ index = string.indexOf("\n", endIndex);
462
+ } while (index !== -1);
463
+ returnValue += string.slice(endIndex);
464
+ return returnValue;
465
+ }
466
+
467
+ // node_modules/chalk/source/index.js
468
+ var { stdout: stdoutColor, stderr: stderrColor } = supports_color_default;
469
+ var GENERATOR = Symbol("GENERATOR");
470
+ var STYLER = Symbol("STYLER");
471
+ var IS_EMPTY = Symbol("IS_EMPTY");
472
+ var levelMapping = [
473
+ "ansi",
474
+ "ansi",
475
+ "ansi256",
476
+ "ansi16m"
477
+ ];
478
+ var styles2 = /* @__PURE__ */ Object.create(null);
479
+ var applyOptions = (object, options = {}) => {
480
+ if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
481
+ throw new Error("The `level` option should be an integer from 0 to 3");
482
+ }
483
+ const colorLevel = stdoutColor ? stdoutColor.level : 0;
484
+ object.level = options.level === void 0 ? colorLevel : options.level;
485
+ };
486
+ var chalkFactory = (options) => {
487
+ const chalk2 = (...strings) => strings.join(" ");
488
+ applyOptions(chalk2, options);
489
+ Object.setPrototypeOf(chalk2, createChalk.prototype);
490
+ return chalk2;
491
+ };
492
+ function createChalk(options) {
493
+ return chalkFactory(options);
494
+ }
495
+ Object.setPrototypeOf(createChalk.prototype, Function.prototype);
496
+ for (const [styleName, style] of Object.entries(ansi_styles_default)) {
497
+ styles2[styleName] = {
498
+ get() {
499
+ const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
500
+ Object.defineProperty(this, styleName, { value: builder });
501
+ return builder;
502
+ }
503
+ };
504
+ }
505
+ styles2.visible = {
506
+ get() {
507
+ const builder = createBuilder(this, this[STYLER], true);
508
+ Object.defineProperty(this, "visible", { value: builder });
509
+ return builder;
510
+ }
511
+ };
512
+ var getModelAnsi = (model, level, type, ...arguments_) => {
513
+ if (model === "rgb") {
514
+ if (level === "ansi16m") {
515
+ return ansi_styles_default[type].ansi16m(...arguments_);
516
+ }
517
+ if (level === "ansi256") {
518
+ return ansi_styles_default[type].ansi256(ansi_styles_default.rgbToAnsi256(...arguments_));
519
+ }
520
+ return ansi_styles_default[type].ansi(ansi_styles_default.rgbToAnsi(...arguments_));
521
+ }
522
+ if (model === "hex") {
523
+ return getModelAnsi("rgb", level, type, ...ansi_styles_default.hexToRgb(...arguments_));
524
+ }
525
+ return ansi_styles_default[type][model](...arguments_);
526
+ };
527
+ var usedModels = ["rgb", "hex", "ansi256"];
528
+ for (const model of usedModels) {
529
+ styles2[model] = {
530
+ get() {
531
+ const { level } = this;
532
+ return function(...arguments_) {
533
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansi_styles_default.color.close, this[STYLER]);
534
+ return createBuilder(this, styler, this[IS_EMPTY]);
535
+ };
536
+ }
537
+ };
538
+ const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
539
+ styles2[bgModel] = {
540
+ get() {
541
+ const { level } = this;
542
+ return function(...arguments_) {
543
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansi_styles_default.bgColor.close, this[STYLER]);
544
+ return createBuilder(this, styler, this[IS_EMPTY]);
545
+ };
546
+ }
547
+ };
548
+ }
549
+ var proto = Object.defineProperties(() => {
550
+ }, {
551
+ ...styles2,
552
+ level: {
553
+ enumerable: true,
554
+ get() {
555
+ return this[GENERATOR].level;
556
+ },
557
+ set(level) {
558
+ this[GENERATOR].level = level;
559
+ }
560
+ }
561
+ });
562
+ var createStyler = (open, close, parent) => {
563
+ let openAll;
564
+ let closeAll;
565
+ if (parent === void 0) {
566
+ openAll = open;
567
+ closeAll = close;
568
+ } else {
569
+ openAll = parent.openAll + open;
570
+ closeAll = close + parent.closeAll;
571
+ }
572
+ return {
573
+ open,
574
+ close,
575
+ openAll,
576
+ closeAll,
577
+ parent
578
+ };
579
+ };
580
+ var createBuilder = (self, _styler, _isEmpty) => {
581
+ const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
582
+ Object.setPrototypeOf(builder, proto);
583
+ builder[GENERATOR] = self;
584
+ builder[STYLER] = _styler;
585
+ builder[IS_EMPTY] = _isEmpty;
586
+ return builder;
587
+ };
588
+ var applyStyle = (self, string) => {
589
+ if (self.level <= 0 || !string) {
590
+ return self[IS_EMPTY] ? "" : string;
591
+ }
592
+ let styler = self[STYLER];
593
+ if (styler === void 0) {
594
+ return string;
595
+ }
596
+ const { openAll, closeAll } = styler;
597
+ if (string.includes("\x1B")) {
598
+ while (styler !== void 0) {
599
+ string = stringReplaceAll(string, styler.close, styler.open);
600
+ styler = styler.parent;
601
+ }
602
+ }
603
+ const lfIndex = string.indexOf("\n");
604
+ if (lfIndex !== -1) {
605
+ string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
606
+ }
607
+ return openAll + string + closeAll;
608
+ };
609
+ Object.defineProperties(createChalk.prototype, styles2);
610
+ var chalk = createChalk();
611
+ var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
612
+ var source_default = chalk;
613
+
614
+ // node_modules/cli-cursor/index.js
615
+ import process5 from "node:process";
616
+
617
+ // node_modules/restore-cursor/index.js
618
+ import process4 from "node:process";
619
+
620
+ // node_modules/mimic-function/index.js
621
+ var copyProperty = (to, from, property, ignoreNonConfigurable) => {
622
+ if (property === "length" || property === "prototype") {
623
+ return;
624
+ }
625
+ if (property === "arguments" || property === "caller") {
626
+ return;
627
+ }
628
+ const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
629
+ const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
630
+ if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
631
+ return;
632
+ }
633
+ Object.defineProperty(to, property, fromDescriptor);
634
+ };
635
+ var canCopyProperty = function(toDescriptor, fromDescriptor) {
636
+ return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);
637
+ };
638
+ var changePrototype = (to, from) => {
639
+ const fromPrototype = Object.getPrototypeOf(from);
640
+ if (fromPrototype === Object.getPrototypeOf(to)) {
641
+ return;
642
+ }
643
+ Object.setPrototypeOf(to, fromPrototype);
644
+ };
645
+ var wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/
646
+ ${fromBody}`;
647
+ var toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString");
648
+ var toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name");
649
+ var changeToString = (to, from, name) => {
650
+ const withName = name === "" ? "" : `with ${name.trim()}() `;
651
+ const newToString = wrappedToString.bind(null, withName, from.toString());
652
+ Object.defineProperty(newToString, "name", toStringName);
653
+ const { writable, enumerable, configurable } = toStringDescriptor;
654
+ Object.defineProperty(to, "toString", { value: newToString, writable, enumerable, configurable });
655
+ };
656
+ function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {
657
+ const { name } = to;
658
+ for (const property of Reflect.ownKeys(from)) {
659
+ copyProperty(to, from, property, ignoreNonConfigurable);
660
+ }
661
+ changePrototype(to, from);
662
+ changeToString(to, from, name);
663
+ return to;
664
+ }
665
+
666
+ // node_modules/onetime/index.js
667
+ var calledFunctions = /* @__PURE__ */ new WeakMap();
668
+ var onetime = (function_, options = {}) => {
669
+ if (typeof function_ !== "function") {
670
+ throw new TypeError("Expected a function");
671
+ }
672
+ let returnValue;
673
+ let callCount = 0;
674
+ const functionName = function_.displayName || function_.name || "<anonymous>";
675
+ const onetime2 = function(...arguments_) {
676
+ calledFunctions.set(onetime2, ++callCount);
677
+ if (callCount === 1) {
678
+ returnValue = function_.apply(this, arguments_);
679
+ function_ = void 0;
680
+ } else if (options.throw === true) {
681
+ throw new Error(`Function \`${functionName}\` can only be called once`);
682
+ }
683
+ return returnValue;
684
+ };
685
+ mimicFunction(onetime2, function_);
686
+ calledFunctions.set(onetime2, callCount);
687
+ return onetime2;
688
+ };
689
+ onetime.callCount = (function_) => {
690
+ if (!calledFunctions.has(function_)) {
691
+ throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
692
+ }
693
+ return calledFunctions.get(function_);
694
+ };
695
+ var onetime_default = onetime;
696
+
697
+ // node_modules/signal-exit/dist/mjs/signals.js
698
+ var signals = [];
699
+ signals.push("SIGHUP", "SIGINT", "SIGTERM");
700
+ if (process.platform !== "win32") {
701
+ signals.push(
702
+ "SIGALRM",
703
+ "SIGABRT",
704
+ "SIGVTALRM",
705
+ "SIGXCPU",
706
+ "SIGXFSZ",
707
+ "SIGUSR2",
708
+ "SIGTRAP",
709
+ "SIGSYS",
710
+ "SIGQUIT",
711
+ "SIGIOT"
712
+ // should detect profiler and enable/disable accordingly.
713
+ // see #21
714
+ // 'SIGPROF'
715
+ );
716
+ }
717
+ if (process.platform === "linux") {
718
+ signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
719
+ }
720
+
721
+ // node_modules/signal-exit/dist/mjs/index.js
722
+ var processOk = (process9) => !!process9 && typeof process9 === "object" && typeof process9.removeListener === "function" && typeof process9.emit === "function" && typeof process9.reallyExit === "function" && typeof process9.listeners === "function" && typeof process9.kill === "function" && typeof process9.pid === "number" && typeof process9.on === "function";
723
+ var kExitEmitter = Symbol.for("signal-exit emitter");
724
+ var global = globalThis;
725
+ var ObjectDefineProperty = Object.defineProperty.bind(Object);
726
+ var Emitter = class {
727
+ emitted = {
728
+ afterExit: false,
729
+ exit: false
730
+ };
731
+ listeners = {
732
+ afterExit: [],
733
+ exit: []
734
+ };
735
+ count = 0;
736
+ id = Math.random();
737
+ constructor() {
738
+ if (global[kExitEmitter]) {
739
+ return global[kExitEmitter];
740
+ }
741
+ ObjectDefineProperty(global, kExitEmitter, {
742
+ value: this,
743
+ writable: false,
744
+ enumerable: false,
745
+ configurable: false
746
+ });
747
+ }
748
+ on(ev, fn) {
749
+ this.listeners[ev].push(fn);
750
+ }
751
+ removeListener(ev, fn) {
752
+ const list = this.listeners[ev];
753
+ const i = list.indexOf(fn);
754
+ if (i === -1) {
755
+ return;
756
+ }
757
+ if (i === 0 && list.length === 1) {
758
+ list.length = 0;
759
+ } else {
760
+ list.splice(i, 1);
761
+ }
762
+ }
763
+ emit(ev, code, signal) {
764
+ if (this.emitted[ev]) {
765
+ return false;
766
+ }
767
+ this.emitted[ev] = true;
768
+ let ret = false;
769
+ for (const fn of this.listeners[ev]) {
770
+ ret = fn(code, signal) === true || ret;
771
+ }
772
+ if (ev === "exit") {
773
+ ret = this.emit("afterExit", code, signal) || ret;
774
+ }
775
+ return ret;
776
+ }
777
+ };
778
+ var SignalExitBase = class {
779
+ };
780
+ var signalExitWrap = (handler) => {
781
+ return {
782
+ onExit(cb, opts) {
783
+ return handler.onExit(cb, opts);
784
+ },
785
+ load() {
786
+ return handler.load();
787
+ },
788
+ unload() {
789
+ return handler.unload();
790
+ }
791
+ };
792
+ };
793
+ var SignalExitFallback = class extends SignalExitBase {
794
+ onExit() {
795
+ return () => {
796
+ };
797
+ }
798
+ load() {
799
+ }
800
+ unload() {
801
+ }
802
+ };
803
+ var SignalExit = class extends SignalExitBase {
804
+ // "SIGHUP" throws an `ENOSYS` error on Windows,
805
+ // so use a supported signal instead
806
+ /* c8 ignore start */
807
+ #hupSig = process3.platform === "win32" ? "SIGINT" : "SIGHUP";
808
+ /* c8 ignore stop */
809
+ #emitter = new Emitter();
810
+ #process;
811
+ #originalProcessEmit;
812
+ #originalProcessReallyExit;
813
+ #sigListeners = {};
814
+ #loaded = false;
815
+ constructor(process9) {
816
+ super();
817
+ this.#process = process9;
818
+ this.#sigListeners = {};
819
+ for (const sig of signals) {
820
+ this.#sigListeners[sig] = () => {
821
+ const listeners = this.#process.listeners(sig);
822
+ let { count } = this.#emitter;
823
+ const p = process9;
824
+ if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") {
825
+ count += p.__signal_exit_emitter__.count;
826
+ }
827
+ if (listeners.length === count) {
828
+ this.unload();
829
+ const ret = this.#emitter.emit("exit", null, sig);
830
+ const s = sig === "SIGHUP" ? this.#hupSig : sig;
831
+ if (!ret)
832
+ process9.kill(process9.pid, s);
833
+ }
834
+ };
835
+ }
836
+ this.#originalProcessReallyExit = process9.reallyExit;
837
+ this.#originalProcessEmit = process9.emit;
838
+ }
839
+ onExit(cb, opts) {
840
+ if (!processOk(this.#process)) {
841
+ return () => {
842
+ };
843
+ }
844
+ if (this.#loaded === false) {
845
+ this.load();
846
+ }
847
+ const ev = opts?.alwaysLast ? "afterExit" : "exit";
848
+ this.#emitter.on(ev, cb);
849
+ return () => {
850
+ this.#emitter.removeListener(ev, cb);
851
+ if (this.#emitter.listeners["exit"].length === 0 && this.#emitter.listeners["afterExit"].length === 0) {
852
+ this.unload();
853
+ }
854
+ };
855
+ }
856
+ load() {
857
+ if (this.#loaded) {
858
+ return;
859
+ }
860
+ this.#loaded = true;
861
+ this.#emitter.count += 1;
862
+ for (const sig of signals) {
863
+ try {
864
+ const fn = this.#sigListeners[sig];
865
+ if (fn)
866
+ this.#process.on(sig, fn);
867
+ } catch (_) {
868
+ }
869
+ }
870
+ this.#process.emit = (ev, ...a) => {
871
+ return this.#processEmit(ev, ...a);
872
+ };
873
+ this.#process.reallyExit = (code) => {
874
+ return this.#processReallyExit(code);
875
+ };
876
+ }
877
+ unload() {
878
+ if (!this.#loaded) {
879
+ return;
880
+ }
881
+ this.#loaded = false;
882
+ signals.forEach((sig) => {
883
+ const listener = this.#sigListeners[sig];
884
+ if (!listener) {
885
+ throw new Error("Listener not defined for signal: " + sig);
886
+ }
887
+ try {
888
+ this.#process.removeListener(sig, listener);
889
+ } catch (_) {
890
+ }
891
+ });
892
+ this.#process.emit = this.#originalProcessEmit;
893
+ this.#process.reallyExit = this.#originalProcessReallyExit;
894
+ this.#emitter.count -= 1;
895
+ }
896
+ #processReallyExit(code) {
897
+ if (!processOk(this.#process)) {
898
+ return 0;
899
+ }
900
+ this.#process.exitCode = code || 0;
901
+ this.#emitter.emit("exit", this.#process.exitCode, null);
902
+ return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);
903
+ }
904
+ #processEmit(ev, ...args) {
905
+ const og = this.#originalProcessEmit;
906
+ if (ev === "exit" && processOk(this.#process)) {
907
+ if (typeof args[0] === "number") {
908
+ this.#process.exitCode = args[0];
909
+ }
910
+ const ret = og.call(this.#process, ev, ...args);
911
+ this.#emitter.emit("exit", this.#process.exitCode, null);
912
+ return ret;
913
+ } else {
914
+ return og.call(this.#process, ev, ...args);
915
+ }
916
+ }
917
+ };
918
+ var process3 = globalThis.process;
919
+ var {
920
+ /**
921
+ * Called when the process is exiting, whether via signal, explicit
922
+ * exit, or running out of stuff to do.
923
+ *
924
+ * If the global process object is not suitable for instrumentation,
925
+ * then this will be a no-op.
926
+ *
927
+ * Returns a function that may be used to unload signal-exit.
928
+ */
929
+ onExit,
930
+ /**
931
+ * Load the listeners. Likely you never need to call this, unless
932
+ * doing a rather deep integration with signal-exit functionality.
933
+ * Mostly exposed for the benefit of testing.
934
+ *
935
+ * @internal
936
+ */
937
+ load,
938
+ /**
939
+ * Unload the listeners. Likely you never need to call this, unless
940
+ * doing a rather deep integration with signal-exit functionality.
941
+ * Mostly exposed for the benefit of testing.
942
+ *
943
+ * @internal
944
+ */
945
+ unload
946
+ } = signalExitWrap(processOk(process3) ? new SignalExit(process3) : new SignalExitFallback());
947
+
948
+ // node_modules/restore-cursor/index.js
949
+ var terminal = process4.stderr.isTTY ? process4.stderr : process4.stdout.isTTY ? process4.stdout : void 0;
950
+ var restoreCursor = terminal ? onetime_default(() => {
951
+ onExit(() => {
952
+ terminal.write("\x1B[?25h");
953
+ }, { alwaysLast: true });
954
+ }) : () => {
955
+ };
956
+ var restore_cursor_default = restoreCursor;
957
+
958
+ // node_modules/cli-cursor/index.js
959
+ var isHidden = false;
960
+ var cliCursor = {};
961
+ cliCursor.show = (writableStream = process5.stderr) => {
962
+ if (!writableStream.isTTY) {
963
+ return;
964
+ }
965
+ isHidden = false;
966
+ writableStream.write("\x1B[?25h");
967
+ };
968
+ cliCursor.hide = (writableStream = process5.stderr) => {
969
+ if (!writableStream.isTTY) {
970
+ return;
971
+ }
972
+ restore_cursor_default();
973
+ isHidden = true;
974
+ writableStream.write("\x1B[?25l");
975
+ };
976
+ cliCursor.toggle = (force, writableStream) => {
977
+ if (force !== void 0) {
978
+ isHidden = force;
979
+ }
980
+ if (isHidden) {
981
+ cliCursor.show(writableStream);
982
+ } else {
983
+ cliCursor.hide(writableStream);
984
+ }
985
+ };
986
+ var cli_cursor_default = cliCursor;
987
+
988
+ // node_modules/cli-spinners/spinners.json
989
+ var spinners_default = {
990
+ dots: {
991
+ interval: 80,
992
+ frames: [
993
+ "\u280B",
994
+ "\u2819",
995
+ "\u2839",
996
+ "\u2838",
997
+ "\u283C",
998
+ "\u2834",
999
+ "\u2826",
1000
+ "\u2827",
1001
+ "\u2807",
1002
+ "\u280F"
1003
+ ]
1004
+ },
1005
+ dots2: {
1006
+ interval: 80,
1007
+ frames: [
1008
+ "\u28FE",
1009
+ "\u28FD",
1010
+ "\u28FB",
1011
+ "\u28BF",
1012
+ "\u287F",
1013
+ "\u28DF",
1014
+ "\u28EF",
1015
+ "\u28F7"
1016
+ ]
1017
+ },
1018
+ dots3: {
1019
+ interval: 80,
1020
+ frames: [
1021
+ "\u280B",
1022
+ "\u2819",
1023
+ "\u281A",
1024
+ "\u281E",
1025
+ "\u2816",
1026
+ "\u2826",
1027
+ "\u2834",
1028
+ "\u2832",
1029
+ "\u2833",
1030
+ "\u2813"
1031
+ ]
1032
+ },
1033
+ dots4: {
1034
+ interval: 80,
1035
+ frames: [
1036
+ "\u2804",
1037
+ "\u2806",
1038
+ "\u2807",
1039
+ "\u280B",
1040
+ "\u2819",
1041
+ "\u2838",
1042
+ "\u2830",
1043
+ "\u2820",
1044
+ "\u2830",
1045
+ "\u2838",
1046
+ "\u2819",
1047
+ "\u280B",
1048
+ "\u2807",
1049
+ "\u2806"
1050
+ ]
1051
+ },
1052
+ dots5: {
1053
+ interval: 80,
1054
+ frames: [
1055
+ "\u280B",
1056
+ "\u2819",
1057
+ "\u281A",
1058
+ "\u2812",
1059
+ "\u2802",
1060
+ "\u2802",
1061
+ "\u2812",
1062
+ "\u2832",
1063
+ "\u2834",
1064
+ "\u2826",
1065
+ "\u2816",
1066
+ "\u2812",
1067
+ "\u2810",
1068
+ "\u2810",
1069
+ "\u2812",
1070
+ "\u2813",
1071
+ "\u280B"
1072
+ ]
1073
+ },
1074
+ dots6: {
1075
+ interval: 80,
1076
+ frames: [
1077
+ "\u2801",
1078
+ "\u2809",
1079
+ "\u2819",
1080
+ "\u281A",
1081
+ "\u2812",
1082
+ "\u2802",
1083
+ "\u2802",
1084
+ "\u2812",
1085
+ "\u2832",
1086
+ "\u2834",
1087
+ "\u2824",
1088
+ "\u2804",
1089
+ "\u2804",
1090
+ "\u2824",
1091
+ "\u2834",
1092
+ "\u2832",
1093
+ "\u2812",
1094
+ "\u2802",
1095
+ "\u2802",
1096
+ "\u2812",
1097
+ "\u281A",
1098
+ "\u2819",
1099
+ "\u2809",
1100
+ "\u2801"
1101
+ ]
1102
+ },
1103
+ dots7: {
1104
+ interval: 80,
1105
+ frames: [
1106
+ "\u2808",
1107
+ "\u2809",
1108
+ "\u280B",
1109
+ "\u2813",
1110
+ "\u2812",
1111
+ "\u2810",
1112
+ "\u2810",
1113
+ "\u2812",
1114
+ "\u2816",
1115
+ "\u2826",
1116
+ "\u2824",
1117
+ "\u2820",
1118
+ "\u2820",
1119
+ "\u2824",
1120
+ "\u2826",
1121
+ "\u2816",
1122
+ "\u2812",
1123
+ "\u2810",
1124
+ "\u2810",
1125
+ "\u2812",
1126
+ "\u2813",
1127
+ "\u280B",
1128
+ "\u2809",
1129
+ "\u2808"
1130
+ ]
1131
+ },
1132
+ dots8: {
1133
+ interval: 80,
1134
+ frames: [
1135
+ "\u2801",
1136
+ "\u2801",
1137
+ "\u2809",
1138
+ "\u2819",
1139
+ "\u281A",
1140
+ "\u2812",
1141
+ "\u2802",
1142
+ "\u2802",
1143
+ "\u2812",
1144
+ "\u2832",
1145
+ "\u2834",
1146
+ "\u2824",
1147
+ "\u2804",
1148
+ "\u2804",
1149
+ "\u2824",
1150
+ "\u2820",
1151
+ "\u2820",
1152
+ "\u2824",
1153
+ "\u2826",
1154
+ "\u2816",
1155
+ "\u2812",
1156
+ "\u2810",
1157
+ "\u2810",
1158
+ "\u2812",
1159
+ "\u2813",
1160
+ "\u280B",
1161
+ "\u2809",
1162
+ "\u2808",
1163
+ "\u2808"
1164
+ ]
1165
+ },
1166
+ dots9: {
1167
+ interval: 80,
1168
+ frames: [
1169
+ "\u28B9",
1170
+ "\u28BA",
1171
+ "\u28BC",
1172
+ "\u28F8",
1173
+ "\u28C7",
1174
+ "\u2867",
1175
+ "\u2857",
1176
+ "\u284F"
1177
+ ]
1178
+ },
1179
+ dots10: {
1180
+ interval: 80,
1181
+ frames: [
1182
+ "\u2884",
1183
+ "\u2882",
1184
+ "\u2881",
1185
+ "\u2841",
1186
+ "\u2848",
1187
+ "\u2850",
1188
+ "\u2860"
1189
+ ]
1190
+ },
1191
+ dots11: {
1192
+ interval: 100,
1193
+ frames: [
1194
+ "\u2801",
1195
+ "\u2802",
1196
+ "\u2804",
1197
+ "\u2840",
1198
+ "\u2880",
1199
+ "\u2820",
1200
+ "\u2810",
1201
+ "\u2808"
1202
+ ]
1203
+ },
1204
+ dots12: {
1205
+ interval: 80,
1206
+ frames: [
1207
+ "\u2880\u2800",
1208
+ "\u2840\u2800",
1209
+ "\u2804\u2800",
1210
+ "\u2882\u2800",
1211
+ "\u2842\u2800",
1212
+ "\u2805\u2800",
1213
+ "\u2883\u2800",
1214
+ "\u2843\u2800",
1215
+ "\u280D\u2800",
1216
+ "\u288B\u2800",
1217
+ "\u284B\u2800",
1218
+ "\u280D\u2801",
1219
+ "\u288B\u2801",
1220
+ "\u284B\u2801",
1221
+ "\u280D\u2809",
1222
+ "\u280B\u2809",
1223
+ "\u280B\u2809",
1224
+ "\u2809\u2819",
1225
+ "\u2809\u2819",
1226
+ "\u2809\u2829",
1227
+ "\u2808\u2899",
1228
+ "\u2808\u2859",
1229
+ "\u2888\u2829",
1230
+ "\u2840\u2899",
1231
+ "\u2804\u2859",
1232
+ "\u2882\u2829",
1233
+ "\u2842\u2898",
1234
+ "\u2805\u2858",
1235
+ "\u2883\u2828",
1236
+ "\u2843\u2890",
1237
+ "\u280D\u2850",
1238
+ "\u288B\u2820",
1239
+ "\u284B\u2880",
1240
+ "\u280D\u2841",
1241
+ "\u288B\u2801",
1242
+ "\u284B\u2801",
1243
+ "\u280D\u2809",
1244
+ "\u280B\u2809",
1245
+ "\u280B\u2809",
1246
+ "\u2809\u2819",
1247
+ "\u2809\u2819",
1248
+ "\u2809\u2829",
1249
+ "\u2808\u2899",
1250
+ "\u2808\u2859",
1251
+ "\u2808\u2829",
1252
+ "\u2800\u2899",
1253
+ "\u2800\u2859",
1254
+ "\u2800\u2829",
1255
+ "\u2800\u2898",
1256
+ "\u2800\u2858",
1257
+ "\u2800\u2828",
1258
+ "\u2800\u2890",
1259
+ "\u2800\u2850",
1260
+ "\u2800\u2820",
1261
+ "\u2800\u2880",
1262
+ "\u2800\u2840"
1263
+ ]
1264
+ },
1265
+ dots13: {
1266
+ interval: 80,
1267
+ frames: [
1268
+ "\u28FC",
1269
+ "\u28F9",
1270
+ "\u28BB",
1271
+ "\u283F",
1272
+ "\u285F",
1273
+ "\u28CF",
1274
+ "\u28E7",
1275
+ "\u28F6"
1276
+ ]
1277
+ },
1278
+ dots14: {
1279
+ interval: 80,
1280
+ frames: [
1281
+ "\u2809\u2809",
1282
+ "\u2808\u2819",
1283
+ "\u2800\u2839",
1284
+ "\u2800\u28B8",
1285
+ "\u2800\u28F0",
1286
+ "\u2880\u28E0",
1287
+ "\u28C0\u28C0",
1288
+ "\u28C4\u2840",
1289
+ "\u28C6\u2800",
1290
+ "\u2847\u2800",
1291
+ "\u280F\u2800",
1292
+ "\u280B\u2801"
1293
+ ]
1294
+ },
1295
+ dots8Bit: {
1296
+ interval: 80,
1297
+ frames: [
1298
+ "\u2800",
1299
+ "\u2801",
1300
+ "\u2802",
1301
+ "\u2803",
1302
+ "\u2804",
1303
+ "\u2805",
1304
+ "\u2806",
1305
+ "\u2807",
1306
+ "\u2840",
1307
+ "\u2841",
1308
+ "\u2842",
1309
+ "\u2843",
1310
+ "\u2844",
1311
+ "\u2845",
1312
+ "\u2846",
1313
+ "\u2847",
1314
+ "\u2808",
1315
+ "\u2809",
1316
+ "\u280A",
1317
+ "\u280B",
1318
+ "\u280C",
1319
+ "\u280D",
1320
+ "\u280E",
1321
+ "\u280F",
1322
+ "\u2848",
1323
+ "\u2849",
1324
+ "\u284A",
1325
+ "\u284B",
1326
+ "\u284C",
1327
+ "\u284D",
1328
+ "\u284E",
1329
+ "\u284F",
1330
+ "\u2810",
1331
+ "\u2811",
1332
+ "\u2812",
1333
+ "\u2813",
1334
+ "\u2814",
1335
+ "\u2815",
1336
+ "\u2816",
1337
+ "\u2817",
1338
+ "\u2850",
1339
+ "\u2851",
1340
+ "\u2852",
1341
+ "\u2853",
1342
+ "\u2854",
1343
+ "\u2855",
1344
+ "\u2856",
1345
+ "\u2857",
1346
+ "\u2818",
1347
+ "\u2819",
1348
+ "\u281A",
1349
+ "\u281B",
1350
+ "\u281C",
1351
+ "\u281D",
1352
+ "\u281E",
1353
+ "\u281F",
1354
+ "\u2858",
1355
+ "\u2859",
1356
+ "\u285A",
1357
+ "\u285B",
1358
+ "\u285C",
1359
+ "\u285D",
1360
+ "\u285E",
1361
+ "\u285F",
1362
+ "\u2820",
1363
+ "\u2821",
1364
+ "\u2822",
1365
+ "\u2823",
1366
+ "\u2824",
1367
+ "\u2825",
1368
+ "\u2826",
1369
+ "\u2827",
1370
+ "\u2860",
1371
+ "\u2861",
1372
+ "\u2862",
1373
+ "\u2863",
1374
+ "\u2864",
1375
+ "\u2865",
1376
+ "\u2866",
1377
+ "\u2867",
1378
+ "\u2828",
1379
+ "\u2829",
1380
+ "\u282A",
1381
+ "\u282B",
1382
+ "\u282C",
1383
+ "\u282D",
1384
+ "\u282E",
1385
+ "\u282F",
1386
+ "\u2868",
1387
+ "\u2869",
1388
+ "\u286A",
1389
+ "\u286B",
1390
+ "\u286C",
1391
+ "\u286D",
1392
+ "\u286E",
1393
+ "\u286F",
1394
+ "\u2830",
1395
+ "\u2831",
1396
+ "\u2832",
1397
+ "\u2833",
1398
+ "\u2834",
1399
+ "\u2835",
1400
+ "\u2836",
1401
+ "\u2837",
1402
+ "\u2870",
1403
+ "\u2871",
1404
+ "\u2872",
1405
+ "\u2873",
1406
+ "\u2874",
1407
+ "\u2875",
1408
+ "\u2876",
1409
+ "\u2877",
1410
+ "\u2838",
1411
+ "\u2839",
1412
+ "\u283A",
1413
+ "\u283B",
1414
+ "\u283C",
1415
+ "\u283D",
1416
+ "\u283E",
1417
+ "\u283F",
1418
+ "\u2878",
1419
+ "\u2879",
1420
+ "\u287A",
1421
+ "\u287B",
1422
+ "\u287C",
1423
+ "\u287D",
1424
+ "\u287E",
1425
+ "\u287F",
1426
+ "\u2880",
1427
+ "\u2881",
1428
+ "\u2882",
1429
+ "\u2883",
1430
+ "\u2884",
1431
+ "\u2885",
1432
+ "\u2886",
1433
+ "\u2887",
1434
+ "\u28C0",
1435
+ "\u28C1",
1436
+ "\u28C2",
1437
+ "\u28C3",
1438
+ "\u28C4",
1439
+ "\u28C5",
1440
+ "\u28C6",
1441
+ "\u28C7",
1442
+ "\u2888",
1443
+ "\u2889",
1444
+ "\u288A",
1445
+ "\u288B",
1446
+ "\u288C",
1447
+ "\u288D",
1448
+ "\u288E",
1449
+ "\u288F",
1450
+ "\u28C8",
1451
+ "\u28C9",
1452
+ "\u28CA",
1453
+ "\u28CB",
1454
+ "\u28CC",
1455
+ "\u28CD",
1456
+ "\u28CE",
1457
+ "\u28CF",
1458
+ "\u2890",
1459
+ "\u2891",
1460
+ "\u2892",
1461
+ "\u2893",
1462
+ "\u2894",
1463
+ "\u2895",
1464
+ "\u2896",
1465
+ "\u2897",
1466
+ "\u28D0",
1467
+ "\u28D1",
1468
+ "\u28D2",
1469
+ "\u28D3",
1470
+ "\u28D4",
1471
+ "\u28D5",
1472
+ "\u28D6",
1473
+ "\u28D7",
1474
+ "\u2898",
1475
+ "\u2899",
1476
+ "\u289A",
1477
+ "\u289B",
1478
+ "\u289C",
1479
+ "\u289D",
1480
+ "\u289E",
1481
+ "\u289F",
1482
+ "\u28D8",
1483
+ "\u28D9",
1484
+ "\u28DA",
1485
+ "\u28DB",
1486
+ "\u28DC",
1487
+ "\u28DD",
1488
+ "\u28DE",
1489
+ "\u28DF",
1490
+ "\u28A0",
1491
+ "\u28A1",
1492
+ "\u28A2",
1493
+ "\u28A3",
1494
+ "\u28A4",
1495
+ "\u28A5",
1496
+ "\u28A6",
1497
+ "\u28A7",
1498
+ "\u28E0",
1499
+ "\u28E1",
1500
+ "\u28E2",
1501
+ "\u28E3",
1502
+ "\u28E4",
1503
+ "\u28E5",
1504
+ "\u28E6",
1505
+ "\u28E7",
1506
+ "\u28A8",
1507
+ "\u28A9",
1508
+ "\u28AA",
1509
+ "\u28AB",
1510
+ "\u28AC",
1511
+ "\u28AD",
1512
+ "\u28AE",
1513
+ "\u28AF",
1514
+ "\u28E8",
1515
+ "\u28E9",
1516
+ "\u28EA",
1517
+ "\u28EB",
1518
+ "\u28EC",
1519
+ "\u28ED",
1520
+ "\u28EE",
1521
+ "\u28EF",
1522
+ "\u28B0",
1523
+ "\u28B1",
1524
+ "\u28B2",
1525
+ "\u28B3",
1526
+ "\u28B4",
1527
+ "\u28B5",
1528
+ "\u28B6",
1529
+ "\u28B7",
1530
+ "\u28F0",
1531
+ "\u28F1",
1532
+ "\u28F2",
1533
+ "\u28F3",
1534
+ "\u28F4",
1535
+ "\u28F5",
1536
+ "\u28F6",
1537
+ "\u28F7",
1538
+ "\u28B8",
1539
+ "\u28B9",
1540
+ "\u28BA",
1541
+ "\u28BB",
1542
+ "\u28BC",
1543
+ "\u28BD",
1544
+ "\u28BE",
1545
+ "\u28BF",
1546
+ "\u28F8",
1547
+ "\u28F9",
1548
+ "\u28FA",
1549
+ "\u28FB",
1550
+ "\u28FC",
1551
+ "\u28FD",
1552
+ "\u28FE",
1553
+ "\u28FF"
1554
+ ]
1555
+ },
1556
+ dotsCircle: {
1557
+ interval: 80,
1558
+ frames: [
1559
+ "\u288E ",
1560
+ "\u280E\u2801",
1561
+ "\u280A\u2811",
1562
+ "\u2808\u2831",
1563
+ " \u2871",
1564
+ "\u2880\u2870",
1565
+ "\u2884\u2860",
1566
+ "\u2886\u2840"
1567
+ ]
1568
+ },
1569
+ sand: {
1570
+ interval: 80,
1571
+ frames: [
1572
+ "\u2801",
1573
+ "\u2802",
1574
+ "\u2804",
1575
+ "\u2840",
1576
+ "\u2848",
1577
+ "\u2850",
1578
+ "\u2860",
1579
+ "\u28C0",
1580
+ "\u28C1",
1581
+ "\u28C2",
1582
+ "\u28C4",
1583
+ "\u28CC",
1584
+ "\u28D4",
1585
+ "\u28E4",
1586
+ "\u28E5",
1587
+ "\u28E6",
1588
+ "\u28EE",
1589
+ "\u28F6",
1590
+ "\u28F7",
1591
+ "\u28FF",
1592
+ "\u287F",
1593
+ "\u283F",
1594
+ "\u289F",
1595
+ "\u281F",
1596
+ "\u285B",
1597
+ "\u281B",
1598
+ "\u282B",
1599
+ "\u288B",
1600
+ "\u280B",
1601
+ "\u280D",
1602
+ "\u2849",
1603
+ "\u2809",
1604
+ "\u2811",
1605
+ "\u2821",
1606
+ "\u2881"
1607
+ ]
1608
+ },
1609
+ line: {
1610
+ interval: 130,
1611
+ frames: [
1612
+ "-",
1613
+ "\\",
1614
+ "|",
1615
+ "/"
1616
+ ]
1617
+ },
1618
+ line2: {
1619
+ interval: 100,
1620
+ frames: [
1621
+ "\u2802",
1622
+ "-",
1623
+ "\u2013",
1624
+ "\u2014",
1625
+ "\u2013",
1626
+ "-"
1627
+ ]
1628
+ },
1629
+ rollingLine: {
1630
+ interval: 80,
1631
+ frames: [
1632
+ "/ ",
1633
+ " - ",
1634
+ " \\ ",
1635
+ " |",
1636
+ " |",
1637
+ " \\ ",
1638
+ " - ",
1639
+ "/ "
1640
+ ]
1641
+ },
1642
+ pipe: {
1643
+ interval: 100,
1644
+ frames: [
1645
+ "\u2524",
1646
+ "\u2518",
1647
+ "\u2534",
1648
+ "\u2514",
1649
+ "\u251C",
1650
+ "\u250C",
1651
+ "\u252C",
1652
+ "\u2510"
1653
+ ]
1654
+ },
1655
+ simpleDots: {
1656
+ interval: 400,
1657
+ frames: [
1658
+ ". ",
1659
+ ".. ",
1660
+ "...",
1661
+ " "
1662
+ ]
1663
+ },
1664
+ simpleDotsScrolling: {
1665
+ interval: 200,
1666
+ frames: [
1667
+ ". ",
1668
+ ".. ",
1669
+ "...",
1670
+ " ..",
1671
+ " .",
1672
+ " "
1673
+ ]
1674
+ },
1675
+ star: {
1676
+ interval: 70,
1677
+ frames: [
1678
+ "\u2736",
1679
+ "\u2738",
1680
+ "\u2739",
1681
+ "\u273A",
1682
+ "\u2739",
1683
+ "\u2737"
1684
+ ]
1685
+ },
1686
+ star2: {
1687
+ interval: 80,
1688
+ frames: [
1689
+ "+",
1690
+ "x",
1691
+ "*"
1692
+ ]
1693
+ },
1694
+ flip: {
1695
+ interval: 70,
1696
+ frames: [
1697
+ "_",
1698
+ "_",
1699
+ "_",
1700
+ "-",
1701
+ "`",
1702
+ "`",
1703
+ "'",
1704
+ "\xB4",
1705
+ "-",
1706
+ "_",
1707
+ "_",
1708
+ "_"
1709
+ ]
1710
+ },
1711
+ hamburger: {
1712
+ interval: 100,
1713
+ frames: [
1714
+ "\u2631",
1715
+ "\u2632",
1716
+ "\u2634"
1717
+ ]
1718
+ },
1719
+ growVertical: {
1720
+ interval: 120,
1721
+ frames: [
1722
+ "\u2581",
1723
+ "\u2583",
1724
+ "\u2584",
1725
+ "\u2585",
1726
+ "\u2586",
1727
+ "\u2587",
1728
+ "\u2586",
1729
+ "\u2585",
1730
+ "\u2584",
1731
+ "\u2583"
1732
+ ]
1733
+ },
1734
+ growHorizontal: {
1735
+ interval: 120,
1736
+ frames: [
1737
+ "\u258F",
1738
+ "\u258E",
1739
+ "\u258D",
1740
+ "\u258C",
1741
+ "\u258B",
1742
+ "\u258A",
1743
+ "\u2589",
1744
+ "\u258A",
1745
+ "\u258B",
1746
+ "\u258C",
1747
+ "\u258D",
1748
+ "\u258E"
1749
+ ]
1750
+ },
1751
+ balloon: {
1752
+ interval: 140,
1753
+ frames: [
1754
+ " ",
1755
+ ".",
1756
+ "o",
1757
+ "O",
1758
+ "@",
1759
+ "*",
1760
+ " "
1761
+ ]
1762
+ },
1763
+ balloon2: {
1764
+ interval: 120,
1765
+ frames: [
1766
+ ".",
1767
+ "o",
1768
+ "O",
1769
+ "\xB0",
1770
+ "O",
1771
+ "o",
1772
+ "."
1773
+ ]
1774
+ },
1775
+ noise: {
1776
+ interval: 100,
1777
+ frames: [
1778
+ "\u2593",
1779
+ "\u2592",
1780
+ "\u2591"
1781
+ ]
1782
+ },
1783
+ bounce: {
1784
+ interval: 120,
1785
+ frames: [
1786
+ "\u2801",
1787
+ "\u2802",
1788
+ "\u2804",
1789
+ "\u2802"
1790
+ ]
1791
+ },
1792
+ boxBounce: {
1793
+ interval: 120,
1794
+ frames: [
1795
+ "\u2596",
1796
+ "\u2598",
1797
+ "\u259D",
1798
+ "\u2597"
1799
+ ]
1800
+ },
1801
+ boxBounce2: {
1802
+ interval: 100,
1803
+ frames: [
1804
+ "\u258C",
1805
+ "\u2580",
1806
+ "\u2590",
1807
+ "\u2584"
1808
+ ]
1809
+ },
1810
+ triangle: {
1811
+ interval: 50,
1812
+ frames: [
1813
+ "\u25E2",
1814
+ "\u25E3",
1815
+ "\u25E4",
1816
+ "\u25E5"
1817
+ ]
1818
+ },
1819
+ binary: {
1820
+ interval: 80,
1821
+ frames: [
1822
+ "010010",
1823
+ "001100",
1824
+ "100101",
1825
+ "111010",
1826
+ "111101",
1827
+ "010111",
1828
+ "101011",
1829
+ "111000",
1830
+ "110011",
1831
+ "110101"
1832
+ ]
1833
+ },
1834
+ arc: {
1835
+ interval: 100,
1836
+ frames: [
1837
+ "\u25DC",
1838
+ "\u25E0",
1839
+ "\u25DD",
1840
+ "\u25DE",
1841
+ "\u25E1",
1842
+ "\u25DF"
1843
+ ]
1844
+ },
1845
+ circle: {
1846
+ interval: 120,
1847
+ frames: [
1848
+ "\u25E1",
1849
+ "\u2299",
1850
+ "\u25E0"
1851
+ ]
1852
+ },
1853
+ squareCorners: {
1854
+ interval: 180,
1855
+ frames: [
1856
+ "\u25F0",
1857
+ "\u25F3",
1858
+ "\u25F2",
1859
+ "\u25F1"
1860
+ ]
1861
+ },
1862
+ circleQuarters: {
1863
+ interval: 120,
1864
+ frames: [
1865
+ "\u25F4",
1866
+ "\u25F7",
1867
+ "\u25F6",
1868
+ "\u25F5"
1869
+ ]
1870
+ },
1871
+ circleHalves: {
1872
+ interval: 50,
1873
+ frames: [
1874
+ "\u25D0",
1875
+ "\u25D3",
1876
+ "\u25D1",
1877
+ "\u25D2"
1878
+ ]
1879
+ },
1880
+ squish: {
1881
+ interval: 100,
1882
+ frames: [
1883
+ "\u256B",
1884
+ "\u256A"
1885
+ ]
1886
+ },
1887
+ toggle: {
1888
+ interval: 250,
1889
+ frames: [
1890
+ "\u22B6",
1891
+ "\u22B7"
1892
+ ]
1893
+ },
1894
+ toggle2: {
1895
+ interval: 80,
1896
+ frames: [
1897
+ "\u25AB",
1898
+ "\u25AA"
1899
+ ]
1900
+ },
1901
+ toggle3: {
1902
+ interval: 120,
1903
+ frames: [
1904
+ "\u25A1",
1905
+ "\u25A0"
1906
+ ]
1907
+ },
1908
+ toggle4: {
1909
+ interval: 100,
1910
+ frames: [
1911
+ "\u25A0",
1912
+ "\u25A1",
1913
+ "\u25AA",
1914
+ "\u25AB"
1915
+ ]
1916
+ },
1917
+ toggle5: {
1918
+ interval: 100,
1919
+ frames: [
1920
+ "\u25AE",
1921
+ "\u25AF"
1922
+ ]
1923
+ },
1924
+ toggle6: {
1925
+ interval: 300,
1926
+ frames: [
1927
+ "\u101D",
1928
+ "\u1040"
1929
+ ]
1930
+ },
1931
+ toggle7: {
1932
+ interval: 80,
1933
+ frames: [
1934
+ "\u29BE",
1935
+ "\u29BF"
1936
+ ]
1937
+ },
1938
+ toggle8: {
1939
+ interval: 100,
1940
+ frames: [
1941
+ "\u25CD",
1942
+ "\u25CC"
1943
+ ]
1944
+ },
1945
+ toggle9: {
1946
+ interval: 100,
1947
+ frames: [
1948
+ "\u25C9",
1949
+ "\u25CE"
1950
+ ]
1951
+ },
1952
+ toggle10: {
1953
+ interval: 100,
1954
+ frames: [
1955
+ "\u3282",
1956
+ "\u3280",
1957
+ "\u3281"
1958
+ ]
1959
+ },
1960
+ toggle11: {
1961
+ interval: 50,
1962
+ frames: [
1963
+ "\u29C7",
1964
+ "\u29C6"
1965
+ ]
1966
+ },
1967
+ toggle12: {
1968
+ interval: 120,
1969
+ frames: [
1970
+ "\u2617",
1971
+ "\u2616"
1972
+ ]
1973
+ },
1974
+ toggle13: {
1975
+ interval: 80,
1976
+ frames: [
1977
+ "=",
1978
+ "*",
1979
+ "-"
1980
+ ]
1981
+ },
1982
+ arrow: {
1983
+ interval: 100,
1984
+ frames: [
1985
+ "\u2190",
1986
+ "\u2196",
1987
+ "\u2191",
1988
+ "\u2197",
1989
+ "\u2192",
1990
+ "\u2198",
1991
+ "\u2193",
1992
+ "\u2199"
1993
+ ]
1994
+ },
1995
+ arrow2: {
1996
+ interval: 80,
1997
+ frames: [
1998
+ "\u2B06\uFE0F ",
1999
+ "\u2197\uFE0F ",
2000
+ "\u27A1\uFE0F ",
2001
+ "\u2198\uFE0F ",
2002
+ "\u2B07\uFE0F ",
2003
+ "\u2199\uFE0F ",
2004
+ "\u2B05\uFE0F ",
2005
+ "\u2196\uFE0F "
2006
+ ]
2007
+ },
2008
+ arrow3: {
2009
+ interval: 120,
2010
+ frames: [
2011
+ "\u25B9\u25B9\u25B9\u25B9\u25B9",
2012
+ "\u25B8\u25B9\u25B9\u25B9\u25B9",
2013
+ "\u25B9\u25B8\u25B9\u25B9\u25B9",
2014
+ "\u25B9\u25B9\u25B8\u25B9\u25B9",
2015
+ "\u25B9\u25B9\u25B9\u25B8\u25B9",
2016
+ "\u25B9\u25B9\u25B9\u25B9\u25B8"
2017
+ ]
2018
+ },
2019
+ bouncingBar: {
2020
+ interval: 80,
2021
+ frames: [
2022
+ "[ ]",
2023
+ "[= ]",
2024
+ "[== ]",
2025
+ "[=== ]",
2026
+ "[====]",
2027
+ "[ ===]",
2028
+ "[ ==]",
2029
+ "[ =]",
2030
+ "[ ]",
2031
+ "[ =]",
2032
+ "[ ==]",
2033
+ "[ ===]",
2034
+ "[====]",
2035
+ "[=== ]",
2036
+ "[== ]",
2037
+ "[= ]"
2038
+ ]
2039
+ },
2040
+ bouncingBall: {
2041
+ interval: 80,
2042
+ frames: [
2043
+ "( \u25CF )",
2044
+ "( \u25CF )",
2045
+ "( \u25CF )",
2046
+ "( \u25CF )",
2047
+ "( \u25CF)",
2048
+ "( \u25CF )",
2049
+ "( \u25CF )",
2050
+ "( \u25CF )",
2051
+ "( \u25CF )",
2052
+ "(\u25CF )"
2053
+ ]
2054
+ },
2055
+ smiley: {
2056
+ interval: 200,
2057
+ frames: [
2058
+ "\u{1F604} ",
2059
+ "\u{1F61D} "
2060
+ ]
2061
+ },
2062
+ monkey: {
2063
+ interval: 300,
2064
+ frames: [
2065
+ "\u{1F648} ",
2066
+ "\u{1F648} ",
2067
+ "\u{1F649} ",
2068
+ "\u{1F64A} "
2069
+ ]
2070
+ },
2071
+ hearts: {
2072
+ interval: 100,
2073
+ frames: [
2074
+ "\u{1F49B} ",
2075
+ "\u{1F499} ",
2076
+ "\u{1F49C} ",
2077
+ "\u{1F49A} ",
2078
+ "\u{1F497} "
2079
+ ]
2080
+ },
2081
+ clock: {
2082
+ interval: 100,
2083
+ frames: [
2084
+ "\u{1F55B} ",
2085
+ "\u{1F550} ",
2086
+ "\u{1F551} ",
2087
+ "\u{1F552} ",
2088
+ "\u{1F553} ",
2089
+ "\u{1F554} ",
2090
+ "\u{1F555} ",
2091
+ "\u{1F556} ",
2092
+ "\u{1F557} ",
2093
+ "\u{1F558} ",
2094
+ "\u{1F559} ",
2095
+ "\u{1F55A} "
2096
+ ]
2097
+ },
2098
+ earth: {
2099
+ interval: 180,
2100
+ frames: [
2101
+ "\u{1F30D} ",
2102
+ "\u{1F30E} ",
2103
+ "\u{1F30F} "
2104
+ ]
2105
+ },
2106
+ material: {
2107
+ interval: 17,
2108
+ frames: [
2109
+ "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2110
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2111
+ "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2112
+ "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2113
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2114
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2115
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2116
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2117
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2118
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2119
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2120
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2121
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2122
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
2123
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
2124
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
2125
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
2126
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
2127
+ "\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
2128
+ "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2129
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2130
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
2131
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
2132
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2133
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2134
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2135
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2136
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2137
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2138
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2139
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2140
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2141
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2142
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2143
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2144
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2145
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2146
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2147
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588",
2148
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
2149
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
2150
+ "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
2151
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
2152
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
2153
+ "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
2154
+ "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
2155
+ "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2156
+ "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2157
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2158
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2159
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2160
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2161
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2162
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2163
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2164
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2165
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2166
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
2167
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
2168
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
2169
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
2170
+ "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
2171
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2172
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2173
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2174
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2175
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2176
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
2177
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
2178
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2179
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2180
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2181
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2182
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2183
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2184
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2185
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
2186
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
2187
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
2188
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
2189
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
2190
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
2191
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
2192
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
2193
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
2194
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2195
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2196
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2197
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2198
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2199
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2200
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"
2201
+ ]
2202
+ },
2203
+ moon: {
2204
+ interval: 80,
2205
+ frames: [
2206
+ "\u{1F311} ",
2207
+ "\u{1F312} ",
2208
+ "\u{1F313} ",
2209
+ "\u{1F314} ",
2210
+ "\u{1F315} ",
2211
+ "\u{1F316} ",
2212
+ "\u{1F317} ",
2213
+ "\u{1F318} "
2214
+ ]
2215
+ },
2216
+ runner: {
2217
+ interval: 140,
2218
+ frames: [
2219
+ "\u{1F6B6} ",
2220
+ "\u{1F3C3} "
2221
+ ]
2222
+ },
2223
+ pong: {
2224
+ interval: 80,
2225
+ frames: [
2226
+ "\u2590\u2802 \u258C",
2227
+ "\u2590\u2808 \u258C",
2228
+ "\u2590 \u2802 \u258C",
2229
+ "\u2590 \u2820 \u258C",
2230
+ "\u2590 \u2840 \u258C",
2231
+ "\u2590 \u2820 \u258C",
2232
+ "\u2590 \u2802 \u258C",
2233
+ "\u2590 \u2808 \u258C",
2234
+ "\u2590 \u2802 \u258C",
2235
+ "\u2590 \u2820 \u258C",
2236
+ "\u2590 \u2840 \u258C",
2237
+ "\u2590 \u2820 \u258C",
2238
+ "\u2590 \u2802 \u258C",
2239
+ "\u2590 \u2808 \u258C",
2240
+ "\u2590 \u2802\u258C",
2241
+ "\u2590 \u2820\u258C",
2242
+ "\u2590 \u2840\u258C",
2243
+ "\u2590 \u2820 \u258C",
2244
+ "\u2590 \u2802 \u258C",
2245
+ "\u2590 \u2808 \u258C",
2246
+ "\u2590 \u2802 \u258C",
2247
+ "\u2590 \u2820 \u258C",
2248
+ "\u2590 \u2840 \u258C",
2249
+ "\u2590 \u2820 \u258C",
2250
+ "\u2590 \u2802 \u258C",
2251
+ "\u2590 \u2808 \u258C",
2252
+ "\u2590 \u2802 \u258C",
2253
+ "\u2590 \u2820 \u258C",
2254
+ "\u2590 \u2840 \u258C",
2255
+ "\u2590\u2820 \u258C"
2256
+ ]
2257
+ },
2258
+ shark: {
2259
+ interval: 120,
2260
+ frames: [
2261
+ "\u2590|\\____________\u258C",
2262
+ "\u2590_|\\___________\u258C",
2263
+ "\u2590__|\\__________\u258C",
2264
+ "\u2590___|\\_________\u258C",
2265
+ "\u2590____|\\________\u258C",
2266
+ "\u2590_____|\\_______\u258C",
2267
+ "\u2590______|\\______\u258C",
2268
+ "\u2590_______|\\_____\u258C",
2269
+ "\u2590________|\\____\u258C",
2270
+ "\u2590_________|\\___\u258C",
2271
+ "\u2590__________|\\__\u258C",
2272
+ "\u2590___________|\\_\u258C",
2273
+ "\u2590____________|\\\u258C",
2274
+ "\u2590____________/|\u258C",
2275
+ "\u2590___________/|_\u258C",
2276
+ "\u2590__________/|__\u258C",
2277
+ "\u2590_________/|___\u258C",
2278
+ "\u2590________/|____\u258C",
2279
+ "\u2590_______/|_____\u258C",
2280
+ "\u2590______/|______\u258C",
2281
+ "\u2590_____/|_______\u258C",
2282
+ "\u2590____/|________\u258C",
2283
+ "\u2590___/|_________\u258C",
2284
+ "\u2590__/|__________\u258C",
2285
+ "\u2590_/|___________\u258C",
2286
+ "\u2590/|____________\u258C"
2287
+ ]
2288
+ },
2289
+ dqpb: {
2290
+ interval: 100,
2291
+ frames: [
2292
+ "d",
2293
+ "q",
2294
+ "p",
2295
+ "b"
2296
+ ]
2297
+ },
2298
+ weather: {
2299
+ interval: 100,
2300
+ frames: [
2301
+ "\u2600\uFE0F ",
2302
+ "\u2600\uFE0F ",
2303
+ "\u2600\uFE0F ",
2304
+ "\u{1F324} ",
2305
+ "\u26C5\uFE0F ",
2306
+ "\u{1F325} ",
2307
+ "\u2601\uFE0F ",
2308
+ "\u{1F327} ",
2309
+ "\u{1F328} ",
2310
+ "\u{1F327} ",
2311
+ "\u{1F328} ",
2312
+ "\u{1F327} ",
2313
+ "\u{1F328} ",
2314
+ "\u26C8 ",
2315
+ "\u{1F328} ",
2316
+ "\u{1F327} ",
2317
+ "\u{1F328} ",
2318
+ "\u2601\uFE0F ",
2319
+ "\u{1F325} ",
2320
+ "\u26C5\uFE0F ",
2321
+ "\u{1F324} ",
2322
+ "\u2600\uFE0F ",
2323
+ "\u2600\uFE0F "
2324
+ ]
2325
+ },
2326
+ christmas: {
2327
+ interval: 400,
2328
+ frames: [
2329
+ "\u{1F332}",
2330
+ "\u{1F384}"
2331
+ ]
2332
+ },
2333
+ grenade: {
2334
+ interval: 80,
2335
+ frames: [
2336
+ "\u060C ",
2337
+ "\u2032 ",
2338
+ " \xB4 ",
2339
+ " \u203E ",
2340
+ " \u2E0C",
2341
+ " \u2E0A",
2342
+ " |",
2343
+ " \u204E",
2344
+ " \u2055",
2345
+ " \u0DF4 ",
2346
+ " \u2053",
2347
+ " ",
2348
+ " ",
2349
+ " "
2350
+ ]
2351
+ },
2352
+ point: {
2353
+ interval: 125,
2354
+ frames: [
2355
+ "\u2219\u2219\u2219",
2356
+ "\u25CF\u2219\u2219",
2357
+ "\u2219\u25CF\u2219",
2358
+ "\u2219\u2219\u25CF",
2359
+ "\u2219\u2219\u2219"
2360
+ ]
2361
+ },
2362
+ layer: {
2363
+ interval: 150,
2364
+ frames: [
2365
+ "-",
2366
+ "=",
2367
+ "\u2261"
2368
+ ]
2369
+ },
2370
+ betaWave: {
2371
+ interval: 80,
2372
+ frames: [
2373
+ "\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2",
2374
+ "\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2",
2375
+ "\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2",
2376
+ "\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2",
2377
+ "\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2",
2378
+ "\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2",
2379
+ "\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"
2380
+ ]
2381
+ },
2382
+ fingerDance: {
2383
+ interval: 160,
2384
+ frames: [
2385
+ "\u{1F918} ",
2386
+ "\u{1F91F} ",
2387
+ "\u{1F596} ",
2388
+ "\u270B ",
2389
+ "\u{1F91A} ",
2390
+ "\u{1F446} "
2391
+ ]
2392
+ },
2393
+ fistBump: {
2394
+ interval: 80,
2395
+ frames: [
2396
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
2397
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
2398
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
2399
+ "\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ",
2400
+ "\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ",
2401
+ "\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ",
2402
+ "\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "
2403
+ ]
2404
+ },
2405
+ soccerHeader: {
2406
+ interval: 80,
2407
+ frames: [
2408
+ " \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ",
2409
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2410
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2411
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2412
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2413
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2414
+ "\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ",
2415
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2416
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2417
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2418
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2419
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "
2420
+ ]
2421
+ },
2422
+ mindblown: {
2423
+ interval: 160,
2424
+ frames: [
2425
+ "\u{1F610} ",
2426
+ "\u{1F610} ",
2427
+ "\u{1F62E} ",
2428
+ "\u{1F62E} ",
2429
+ "\u{1F626} ",
2430
+ "\u{1F626} ",
2431
+ "\u{1F627} ",
2432
+ "\u{1F627} ",
2433
+ "\u{1F92F} ",
2434
+ "\u{1F4A5} ",
2435
+ "\u2728 ",
2436
+ "\u3000 ",
2437
+ "\u3000 ",
2438
+ "\u3000 "
2439
+ ]
2440
+ },
2441
+ speaker: {
2442
+ interval: 160,
2443
+ frames: [
2444
+ "\u{1F508} ",
2445
+ "\u{1F509} ",
2446
+ "\u{1F50A} ",
2447
+ "\u{1F509} "
2448
+ ]
2449
+ },
2450
+ orangePulse: {
2451
+ interval: 100,
2452
+ frames: [
2453
+ "\u{1F538} ",
2454
+ "\u{1F536} ",
2455
+ "\u{1F7E0} ",
2456
+ "\u{1F7E0} ",
2457
+ "\u{1F536} "
2458
+ ]
2459
+ },
2460
+ bluePulse: {
2461
+ interval: 100,
2462
+ frames: [
2463
+ "\u{1F539} ",
2464
+ "\u{1F537} ",
2465
+ "\u{1F535} ",
2466
+ "\u{1F535} ",
2467
+ "\u{1F537} "
2468
+ ]
2469
+ },
2470
+ orangeBluePulse: {
2471
+ interval: 100,
2472
+ frames: [
2473
+ "\u{1F538} ",
2474
+ "\u{1F536} ",
2475
+ "\u{1F7E0} ",
2476
+ "\u{1F7E0} ",
2477
+ "\u{1F536} ",
2478
+ "\u{1F539} ",
2479
+ "\u{1F537} ",
2480
+ "\u{1F535} ",
2481
+ "\u{1F535} ",
2482
+ "\u{1F537} "
2483
+ ]
2484
+ },
2485
+ timeTravel: {
2486
+ interval: 100,
2487
+ frames: [
2488
+ "\u{1F55B} ",
2489
+ "\u{1F55A} ",
2490
+ "\u{1F559} ",
2491
+ "\u{1F558} ",
2492
+ "\u{1F557} ",
2493
+ "\u{1F556} ",
2494
+ "\u{1F555} ",
2495
+ "\u{1F554} ",
2496
+ "\u{1F553} ",
2497
+ "\u{1F552} ",
2498
+ "\u{1F551} ",
2499
+ "\u{1F550} "
2500
+ ]
2501
+ },
2502
+ aesthetic: {
2503
+ interval: 80,
2504
+ frames: [
2505
+ "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1",
2506
+ "\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1",
2507
+ "\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1",
2508
+ "\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1",
2509
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1",
2510
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1",
2511
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0",
2512
+ "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"
2513
+ ]
2514
+ },
2515
+ dwarfFortress: {
2516
+ interval: 80,
2517
+ frames: [
2518
+ " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2519
+ "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2520
+ "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2521
+ "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2522
+ "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2523
+ "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2524
+ "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2525
+ "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2526
+ "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2527
+ "\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2528
+ " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2529
+ " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2530
+ " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2531
+ " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2532
+ " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2533
+ " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2534
+ " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2535
+ " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2536
+ " \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2537
+ " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2538
+ " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2539
+ " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
2540
+ " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
2541
+ " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
2542
+ " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
2543
+ " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
2544
+ " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
2545
+ " \u263A \u2588\u2588\u2588\xA3\xA3\xA3 ",
2546
+ " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
2547
+ " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
2548
+ " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
2549
+ " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
2550
+ " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
2551
+ " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
2552
+ " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
2553
+ " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
2554
+ " \u263A \u2588\u2588\xA3\xA3\xA3 ",
2555
+ " \u263A\u2588\u2588\xA3\xA3\xA3 ",
2556
+ " \u263A\u2588\u2588\xA3\xA3\xA3 ",
2557
+ " \u263A\u2593\u2588\xA3\xA3\xA3 ",
2558
+ " \u263A\u2593\u2588\xA3\xA3\xA3 ",
2559
+ " \u263A\u2592\u2588\xA3\xA3\xA3 ",
2560
+ " \u263A\u2592\u2588\xA3\xA3\xA3 ",
2561
+ " \u263A\u2591\u2588\xA3\xA3\xA3 ",
2562
+ " \u263A\u2591\u2588\xA3\xA3\xA3 ",
2563
+ " \u263A \u2588\xA3\xA3\xA3 ",
2564
+ " \u263A\u2588\xA3\xA3\xA3 ",
2565
+ " \u263A\u2588\xA3\xA3\xA3 ",
2566
+ " \u263A\u2593\xA3\xA3\xA3 ",
2567
+ " \u263A\u2593\xA3\xA3\xA3 ",
2568
+ " \u263A\u2592\xA3\xA3\xA3 ",
2569
+ " \u263A\u2592\xA3\xA3\xA3 ",
2570
+ " \u263A\u2591\xA3\xA3\xA3 ",
2571
+ " \u263A\u2591\xA3\xA3\xA3 ",
2572
+ " \u263A \xA3\xA3\xA3 ",
2573
+ " \u263A\xA3\xA3\xA3 ",
2574
+ " \u263A\xA3\xA3\xA3 ",
2575
+ " \u263A\u2593\xA3\xA3 ",
2576
+ " \u263A\u2593\xA3\xA3 ",
2577
+ " \u263A\u2592\xA3\xA3 ",
2578
+ " \u263A\u2592\xA3\xA3 ",
2579
+ " \u263A\u2591\xA3\xA3 ",
2580
+ " \u263A\u2591\xA3\xA3 ",
2581
+ " \u263A \xA3\xA3 ",
2582
+ " \u263A\xA3\xA3 ",
2583
+ " \u263A\xA3\xA3 ",
2584
+ " \u263A\u2593\xA3 ",
2585
+ " \u263A\u2593\xA3 ",
2586
+ " \u263A\u2592\xA3 ",
2587
+ " \u263A\u2592\xA3 ",
2588
+ " \u263A\u2591\xA3 ",
2589
+ " \u263A\u2591\xA3 ",
2590
+ " \u263A \xA3 ",
2591
+ " \u263A\xA3 ",
2592
+ " \u263A\xA3 ",
2593
+ " \u263A\u2593 ",
2594
+ " \u263A\u2593 ",
2595
+ " \u263A\u2592 ",
2596
+ " \u263A\u2592 ",
2597
+ " \u263A\u2591 ",
2598
+ " \u263A\u2591 ",
2599
+ " \u263A ",
2600
+ " \u263A &",
2601
+ " \u263A \u263C&",
2602
+ " \u263A \u263C &",
2603
+ " \u263A\u263C &",
2604
+ " \u263A\u263C & ",
2605
+ " \u203C & ",
2606
+ " \u263A & ",
2607
+ " \u203C & ",
2608
+ " \u263A & ",
2609
+ " \u203C & ",
2610
+ " \u263A & ",
2611
+ "\u203C & ",
2612
+ " & ",
2613
+ " & ",
2614
+ " & \u2591 ",
2615
+ " & \u2592 ",
2616
+ " & \u2593 ",
2617
+ " & \xA3 ",
2618
+ " & \u2591\xA3 ",
2619
+ " & \u2592\xA3 ",
2620
+ " & \u2593\xA3 ",
2621
+ " & \xA3\xA3 ",
2622
+ " & \u2591\xA3\xA3 ",
2623
+ " & \u2592\xA3\xA3 ",
2624
+ "& \u2593\xA3\xA3 ",
2625
+ "& \xA3\xA3\xA3 ",
2626
+ " \u2591\xA3\xA3\xA3 ",
2627
+ " \u2592\xA3\xA3\xA3 ",
2628
+ " \u2593\xA3\xA3\xA3 ",
2629
+ " \u2588\xA3\xA3\xA3 ",
2630
+ " \u2591\u2588\xA3\xA3\xA3 ",
2631
+ " \u2592\u2588\xA3\xA3\xA3 ",
2632
+ " \u2593\u2588\xA3\xA3\xA3 ",
2633
+ " \u2588\u2588\xA3\xA3\xA3 ",
2634
+ " \u2591\u2588\u2588\xA3\xA3\xA3 ",
2635
+ " \u2592\u2588\u2588\xA3\xA3\xA3 ",
2636
+ " \u2593\u2588\u2588\xA3\xA3\xA3 ",
2637
+ " \u2588\u2588\u2588\xA3\xA3\xA3 ",
2638
+ " \u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
2639
+ " \u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
2640
+ " \u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
2641
+ " \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2642
+ " \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2643
+ " \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2644
+ " \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2645
+ " \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2646
+ " \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2647
+ " \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2648
+ " \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2649
+ " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2650
+ " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "
2651
+ ]
2652
+ }
2653
+ };
2654
+
2655
+ // node_modules/cli-spinners/index.js
2656
+ var cli_spinners_default = spinners_default;
2657
+ var spinnersList = Object.keys(spinners_default);
2658
+
2659
+ // node_modules/log-symbols/symbols.js
2660
+ var symbols_exports = {};
2661
+ __export(symbols_exports, {
2662
+ error: () => error,
2663
+ info: () => info,
2664
+ success: () => success,
2665
+ warning: () => warning
2666
+ });
2667
+
2668
+ // node_modules/yoctocolors/base.js
2669
+ import tty2 from "node:tty";
2670
+ var hasColors = tty2?.WriteStream?.prototype?.hasColors?.() ?? false;
2671
+ var format = (open, close) => {
2672
+ if (!hasColors) {
2673
+ return (input2) => input2;
2674
+ }
2675
+ const openCode = `\x1B[${open}m`;
2676
+ const closeCode = `\x1B[${close}m`;
2677
+ return (input2) => {
2678
+ const string = input2 + "";
2679
+ let index = string.indexOf(closeCode);
2680
+ if (index === -1) {
2681
+ return openCode + string + closeCode;
2682
+ }
2683
+ let result = openCode;
2684
+ let lastIndex = 0;
2685
+ const reopenOnNestedClose = close === 22;
2686
+ const replaceCode = (reopenOnNestedClose ? closeCode : "") + openCode;
2687
+ while (index !== -1) {
2688
+ result += string.slice(lastIndex, index) + replaceCode;
2689
+ lastIndex = index + closeCode.length;
2690
+ index = string.indexOf(closeCode, lastIndex);
2691
+ }
2692
+ result += string.slice(lastIndex) + closeCode;
2693
+ return result;
2694
+ };
2695
+ };
2696
+ var reset = format(0, 0);
2697
+ var bold = format(1, 22);
2698
+ var dim = format(2, 22);
2699
+ var italic = format(3, 23);
2700
+ var underline = format(4, 24);
2701
+ var overline = format(53, 55);
2702
+ var inverse = format(7, 27);
2703
+ var hidden = format(8, 28);
2704
+ var strikethrough = format(9, 29);
2705
+ var black = format(30, 39);
2706
+ var red = format(31, 39);
2707
+ var green = format(32, 39);
2708
+ var yellow = format(33, 39);
2709
+ var blue = format(34, 39);
2710
+ var magenta = format(35, 39);
2711
+ var cyan = format(36, 39);
2712
+ var white = format(37, 39);
2713
+ var gray = format(90, 39);
2714
+ var bgBlack = format(40, 49);
2715
+ var bgRed = format(41, 49);
2716
+ var bgGreen = format(42, 49);
2717
+ var bgYellow = format(43, 49);
2718
+ var bgBlue = format(44, 49);
2719
+ var bgMagenta = format(45, 49);
2720
+ var bgCyan = format(46, 49);
2721
+ var bgWhite = format(47, 49);
2722
+ var bgGray = format(100, 49);
2723
+ var redBright = format(91, 39);
2724
+ var greenBright = format(92, 39);
2725
+ var yellowBright = format(93, 39);
2726
+ var blueBright = format(94, 39);
2727
+ var magentaBright = format(95, 39);
2728
+ var cyanBright = format(96, 39);
2729
+ var whiteBright = format(97, 39);
2730
+ var bgRedBright = format(101, 49);
2731
+ var bgGreenBright = format(102, 49);
2732
+ var bgYellowBright = format(103, 49);
2733
+ var bgBlueBright = format(104, 49);
2734
+ var bgMagentaBright = format(105, 49);
2735
+ var bgCyanBright = format(106, 49);
2736
+ var bgWhiteBright = format(107, 49);
2737
+
2738
+ // node_modules/is-unicode-supported/index.js
2739
+ import process6 from "node:process";
2740
+ function isUnicodeSupported() {
2741
+ const { env: env2 } = process6;
2742
+ const { TERM, TERM_PROGRAM } = env2;
2743
+ if (process6.platform !== "win32") {
2744
+ return TERM !== "linux";
2745
+ }
2746
+ return Boolean(env2.WT_SESSION) || Boolean(env2.TERMINUS_SUBLIME) || env2.ConEmuTask === "{cmd::Cmder}" || TERM_PROGRAM === "Terminus-Sublime" || TERM_PROGRAM === "vscode" || TERM === "xterm-256color" || TERM === "alacritty" || TERM === "rxvt-unicode" || TERM === "rxvt-unicode-256color" || env2.TERMINAL_EMULATOR === "JetBrains-JediTerm";
2747
+ }
2748
+
2749
+ // node_modules/log-symbols/symbols.js
2750
+ var _isUnicodeSupported = isUnicodeSupported();
2751
+ var info = blue(_isUnicodeSupported ? "\u2139" : "i");
2752
+ var success = green(_isUnicodeSupported ? "\u2714" : "\u221A");
2753
+ var warning = yellow(_isUnicodeSupported ? "\u26A0" : "\u203C");
2754
+ var error = red(_isUnicodeSupported ? "\u2716" : "\xD7");
2755
+
2756
+ // node_modules/ansi-regex/index.js
2757
+ function ansiRegex({ onlyFirst = false } = {}) {
2758
+ const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
2759
+ const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
2760
+ const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
2761
+ const pattern = `${osc}|${csi}`;
2762
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
2763
+ }
2764
+
2765
+ // node_modules/strip-ansi/index.js
2766
+ var regex = ansiRegex();
2767
+ function stripAnsi(string) {
2768
+ if (typeof string !== "string") {
2769
+ throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
2770
+ }
2771
+ return string.replace(regex, "");
2772
+ }
2773
+
2774
+ // node_modules/get-east-asian-width/lookup.js
2775
+ function isAmbiguous(x) {
2776
+ 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;
2777
+ }
2778
+ function isFullWidth(x) {
2779
+ return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
2780
+ }
2781
+ function isWide(x) {
2782
+ 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;
2783
+ }
2784
+
2785
+ // node_modules/get-east-asian-width/index.js
2786
+ function validate(codePoint) {
2787
+ if (!Number.isSafeInteger(codePoint)) {
2788
+ throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
2789
+ }
2790
+ }
2791
+ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
2792
+ validate(codePoint);
2793
+ if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
2794
+ return 2;
2795
+ }
2796
+ return 1;
2797
+ }
2798
+
2799
+ // node_modules/string-width/index.js
2800
+ var segmenter = new Intl.Segmenter();
2801
+ var zeroWidthClusterRegex = /^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Mark}|\p{Surrogate})+$/v;
2802
+ var leadingNonPrintingRegex = /^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Mark}\p{Surrogate}]+/v;
2803
+ var rgiEmojiRegex = /^\p{RGI_Emoji}$/v;
2804
+ function baseVisible(segment) {
2805
+ return segment.replace(leadingNonPrintingRegex, "");
2806
+ }
2807
+ function isZeroWidthCluster(segment) {
2808
+ return zeroWidthClusterRegex.test(segment);
2809
+ }
2810
+ function trailingHalfwidthWidth(segment, eastAsianWidthOptions) {
2811
+ let extra = 0;
2812
+ if (segment.length > 1) {
2813
+ for (const char of segment.slice(1)) {
2814
+ if (char >= "\uFF00" && char <= "\uFFEF") {
2815
+ extra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);
2816
+ }
2817
+ }
2818
+ }
2819
+ return extra;
2820
+ }
2821
+ function stringWidth(input2, options = {}) {
2822
+ if (typeof input2 !== "string" || input2.length === 0) {
2823
+ return 0;
2824
+ }
2825
+ const {
2826
+ ambiguousIsNarrow = true,
2827
+ countAnsiEscapeCodes = false
2828
+ } = options;
2829
+ let string = input2;
2830
+ if (!countAnsiEscapeCodes) {
2831
+ string = stripAnsi(string);
2832
+ }
2833
+ if (string.length === 0) {
2834
+ return 0;
2835
+ }
2836
+ let width = 0;
2837
+ const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
2838
+ for (const { segment } of segmenter.segment(string)) {
2839
+ if (isZeroWidthCluster(segment)) {
2840
+ continue;
2841
+ }
2842
+ if (rgiEmojiRegex.test(segment)) {
2843
+ width += 2;
2844
+ continue;
2845
+ }
2846
+ const codePoint = baseVisible(segment).codePointAt(0);
2847
+ width += eastAsianWidth(codePoint, eastAsianWidthOptions);
2848
+ width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
2849
+ }
2850
+ return width;
2851
+ }
2852
+
2853
+ // node_modules/is-interactive/index.js
2854
+ function isInteractive({ stream = process.stdout } = {}) {
2855
+ return Boolean(
2856
+ stream && stream.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env)
2857
+ );
2858
+ }
2859
+
2860
+ // node_modules/stdin-discarder/index.js
2861
+ import process7 from "node:process";
2862
+ var ASCII_ETX_CODE = 3;
2863
+ var StdinDiscarder = class {
2864
+ #activeCount = 0;
2865
+ start() {
2866
+ this.#activeCount++;
2867
+ if (this.#activeCount === 1) {
2868
+ this.#realStart();
2869
+ }
2870
+ }
2871
+ stop() {
2872
+ if (this.#activeCount <= 0) {
2873
+ throw new Error("`stop` called more times than `start`");
2874
+ }
2875
+ this.#activeCount--;
2876
+ if (this.#activeCount === 0) {
2877
+ this.#realStop();
2878
+ }
2879
+ }
2880
+ #realStart() {
2881
+ if (process7.platform === "win32" || !process7.stdin.isTTY) {
2882
+ return;
2883
+ }
2884
+ process7.stdin.setRawMode(true);
2885
+ process7.stdin.on("data", this.#handleInput);
2886
+ process7.stdin.resume();
2887
+ }
2888
+ #realStop() {
2889
+ if (!process7.stdin.isTTY) {
2890
+ return;
2891
+ }
2892
+ process7.stdin.off("data", this.#handleInput);
2893
+ process7.stdin.pause();
2894
+ process7.stdin.setRawMode(false);
2895
+ }
2896
+ #handleInput(chunk) {
2897
+ if (chunk[0] === ASCII_ETX_CODE) {
2898
+ process7.emit("SIGINT");
2899
+ }
2900
+ }
2901
+ };
2902
+ var stdinDiscarder = new StdinDiscarder();
2903
+ var stdin_discarder_default = stdinDiscarder;
2904
+
2905
+ // node_modules/ora/index.js
2906
+ var Ora = class {
2907
+ #linesToClear = 0;
2908
+ #isDiscardingStdin = false;
2909
+ #lineCount = 0;
2910
+ #frameIndex = -1;
2911
+ #lastSpinnerFrameTime = 0;
2912
+ #lastIndent = 0;
2913
+ #options;
2914
+ #spinner;
2915
+ #stream;
2916
+ #id;
2917
+ #initialInterval;
2918
+ #isEnabled;
2919
+ #isSilent;
2920
+ #indent;
2921
+ #text;
2922
+ #prefixText;
2923
+ #suffixText;
2924
+ color;
2925
+ constructor(options) {
2926
+ if (typeof options === "string") {
2927
+ options = {
2928
+ text: options
2929
+ };
2930
+ }
2931
+ this.#options = {
2932
+ color: "cyan",
2933
+ stream: process8.stderr,
2934
+ discardStdin: true,
2935
+ hideCursor: true,
2936
+ ...options
2937
+ };
2938
+ this.color = this.#options.color;
2939
+ this.spinner = this.#options.spinner;
2940
+ this.#initialInterval = this.#options.interval;
2941
+ this.#stream = this.#options.stream;
2942
+ this.#isEnabled = typeof this.#options.isEnabled === "boolean" ? this.#options.isEnabled : isInteractive({ stream: this.#stream });
2943
+ this.#isSilent = typeof this.#options.isSilent === "boolean" ? this.#options.isSilent : false;
2944
+ this.text = this.#options.text;
2945
+ this.prefixText = this.#options.prefixText;
2946
+ this.suffixText = this.#options.suffixText;
2947
+ this.indent = this.#options.indent;
2948
+ if (process8.env.NODE_ENV === "test") {
2949
+ this._stream = this.#stream;
2950
+ this._isEnabled = this.#isEnabled;
2951
+ Object.defineProperty(this, "_linesToClear", {
2952
+ get() {
2953
+ return this.#linesToClear;
2954
+ },
2955
+ set(newValue) {
2956
+ this.#linesToClear = newValue;
2957
+ }
2958
+ });
2959
+ Object.defineProperty(this, "_frameIndex", {
2960
+ get() {
2961
+ return this.#frameIndex;
2962
+ }
2963
+ });
2964
+ Object.defineProperty(this, "_lineCount", {
2965
+ get() {
2966
+ return this.#lineCount;
2967
+ }
2968
+ });
2969
+ }
2970
+ }
2971
+ get indent() {
2972
+ return this.#indent;
2973
+ }
2974
+ set indent(indent = 0) {
2975
+ if (!(indent >= 0 && Number.isInteger(indent))) {
2976
+ throw new Error("The `indent` option must be an integer from 0 and up");
2977
+ }
2978
+ this.#indent = indent;
2979
+ this.#updateLineCount();
2980
+ }
2981
+ get interval() {
2982
+ return this.#initialInterval ?? this.#spinner.interval ?? 100;
2983
+ }
2984
+ get spinner() {
2985
+ return this.#spinner;
2986
+ }
2987
+ set spinner(spinner) {
2988
+ this.#frameIndex = -1;
2989
+ this.#initialInterval = void 0;
2990
+ if (typeof spinner === "object") {
2991
+ if (!Array.isArray(spinner.frames) || spinner.frames.length === 0 || spinner.frames.some((frame) => typeof frame !== "string")) {
2992
+ throw new Error("The given spinner must have a non-empty `frames` array of strings");
2993
+ }
2994
+ if (spinner.interval !== void 0 && !(Number.isInteger(spinner.interval) && spinner.interval > 0)) {
2995
+ throw new Error("`spinner.interval` must be a positive integer if provided");
2996
+ }
2997
+ this.#spinner = spinner;
2998
+ } else if (!isUnicodeSupported()) {
2999
+ this.#spinner = cli_spinners_default.line;
3000
+ } else if (spinner === void 0) {
3001
+ this.#spinner = cli_spinners_default.dots;
3002
+ } else if (spinner !== "default" && cli_spinners_default[spinner]) {
3003
+ this.#spinner = cli_spinners_default[spinner];
3004
+ } else {
3005
+ 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.`);
3006
+ }
3007
+ }
3008
+ get text() {
3009
+ return this.#text;
3010
+ }
3011
+ set text(value = "") {
3012
+ this.#text = value;
3013
+ this.#updateLineCount();
3014
+ }
3015
+ get prefixText() {
3016
+ return this.#prefixText;
3017
+ }
3018
+ set prefixText(value = "") {
3019
+ this.#prefixText = value;
3020
+ this.#updateLineCount();
3021
+ }
3022
+ get suffixText() {
3023
+ return this.#suffixText;
3024
+ }
3025
+ set suffixText(value = "") {
3026
+ this.#suffixText = value;
3027
+ this.#updateLineCount();
3028
+ }
3029
+ get isSpinning() {
3030
+ return this.#id !== void 0;
3031
+ }
3032
+ #formatAffix(value, separator, placeBefore = false) {
3033
+ const resolved = typeof value === "function" ? value() : value;
3034
+ if (typeof resolved === "string" && resolved !== "") {
3035
+ return placeBefore ? separator + resolved : resolved + separator;
3036
+ }
3037
+ return "";
3038
+ }
3039
+ #getFullPrefixText(prefixText = this.#prefixText, postfix = " ") {
3040
+ return this.#formatAffix(prefixText, postfix, false);
3041
+ }
3042
+ #getFullSuffixText(suffixText = this.#suffixText, prefix = " ") {
3043
+ return this.#formatAffix(suffixText, prefix, true);
3044
+ }
3045
+ #computeLineCountFrom(text, columns) {
3046
+ let count = 0;
3047
+ for (const line of stripAnsi(text).split("\n")) {
3048
+ count += Math.max(1, Math.ceil(stringWidth(line) / columns));
3049
+ }
3050
+ return count;
3051
+ }
3052
+ #updateLineCount() {
3053
+ const columns = this.#stream.columns ?? 80;
3054
+ const prefixText = typeof this.#prefixText === "function" ? "" : this.#prefixText;
3055
+ const suffixText = typeof this.#suffixText === "function" ? "" : this.#suffixText;
3056
+ const fullPrefixText = typeof prefixText === "string" && prefixText !== "" ? prefixText + " " : "";
3057
+ const fullSuffixText = typeof suffixText === "string" && suffixText !== "" ? " " + suffixText : "";
3058
+ const spinnerChar = "-";
3059
+ const fullText = " ".repeat(this.#indent) + fullPrefixText + spinnerChar + (typeof this.#text === "string" ? " " + this.#text : "") + fullSuffixText;
3060
+ this.#lineCount = this.#computeLineCountFrom(fullText, columns);
3061
+ }
3062
+ get isEnabled() {
3063
+ return this.#isEnabled && !this.#isSilent;
3064
+ }
3065
+ set isEnabled(value) {
3066
+ if (typeof value !== "boolean") {
3067
+ throw new TypeError("The `isEnabled` option must be a boolean");
3068
+ }
3069
+ this.#isEnabled = value;
3070
+ }
3071
+ get isSilent() {
3072
+ return this.#isSilent;
3073
+ }
3074
+ set isSilent(value) {
3075
+ if (typeof value !== "boolean") {
3076
+ throw new TypeError("The `isSilent` option must be a boolean");
3077
+ }
3078
+ this.#isSilent = value;
3079
+ }
3080
+ frame() {
3081
+ const now = Date.now();
3082
+ if (this.#frameIndex === -1 || now - this.#lastSpinnerFrameTime >= this.interval) {
3083
+ this.#frameIndex = ++this.#frameIndex % this.#spinner.frames.length;
3084
+ this.#lastSpinnerFrameTime = now;
3085
+ }
3086
+ const { frames } = this.#spinner;
3087
+ let frame = frames[this.#frameIndex];
3088
+ if (this.color) {
3089
+ frame = source_default[this.color](frame);
3090
+ }
3091
+ const fullPrefixText = this.#getFullPrefixText(this.#prefixText, " ");
3092
+ const fullText = typeof this.text === "string" ? " " + this.text : "";
3093
+ const fullSuffixText = this.#getFullSuffixText(this.#suffixText, " ");
3094
+ return fullPrefixText + frame + fullText + fullSuffixText;
3095
+ }
3096
+ clear() {
3097
+ if (!this.#isEnabled || !this.#stream.isTTY) {
3098
+ return this;
3099
+ }
3100
+ this.#stream.cursorTo(0);
3101
+ for (let index = 0; index < this.#linesToClear; index++) {
3102
+ if (index > 0) {
3103
+ this.#stream.moveCursor(0, -1);
3104
+ }
3105
+ this.#stream.clearLine(1);
3106
+ }
3107
+ if (this.#indent || this.#lastIndent !== this.#indent) {
3108
+ this.#stream.cursorTo(this.#indent);
3109
+ }
3110
+ this.#lastIndent = this.#indent;
3111
+ this.#linesToClear = 0;
3112
+ return this;
3113
+ }
3114
+ render() {
3115
+ if (!this.#isEnabled || this.#isSilent) {
3116
+ return this;
3117
+ }
3118
+ this.clear();
3119
+ let frameContent = this.frame();
3120
+ const columns = this.#stream.columns ?? 80;
3121
+ const actualLineCount = this.#computeLineCountFrom(frameContent, columns);
3122
+ const consoleHeight = this.#stream.rows;
3123
+ if (consoleHeight && consoleHeight > 1 && actualLineCount > consoleHeight) {
3124
+ const lines = frameContent.split("\n");
3125
+ const maxLines = consoleHeight - 1;
3126
+ frameContent = [...lines.slice(0, maxLines), "... (content truncated to fit terminal)"].join("\n");
3127
+ }
3128
+ this.#stream.write(frameContent);
3129
+ this.#linesToClear = this.#computeLineCountFrom(frameContent, columns);
3130
+ return this;
3131
+ }
3132
+ start(text) {
3133
+ if (text) {
3134
+ this.text = text;
3135
+ }
3136
+ if (this.#isSilent) {
3137
+ return this;
3138
+ }
3139
+ if (!this.#isEnabled) {
3140
+ const line = " ".repeat(this.#indent) + this.#getFullPrefixText(this.#prefixText, " ") + (this.text ? `- ${this.text}` : "") + this.#getFullSuffixText(this.#suffixText, " ");
3141
+ if (line.trim() !== "") {
3142
+ this.#stream.write(line + "\n");
3143
+ }
3144
+ return this;
3145
+ }
3146
+ if (this.isSpinning) {
3147
+ return this;
3148
+ }
3149
+ if (this.#options.hideCursor) {
3150
+ cli_cursor_default.hide(this.#stream);
3151
+ }
3152
+ if (this.#options.discardStdin && process8.stdin.isTTY) {
3153
+ this.#isDiscardingStdin = true;
3154
+ stdin_discarder_default.start();
3155
+ }
3156
+ this.render();
3157
+ this.#id = setInterval(this.render.bind(this), this.interval);
3158
+ return this;
3159
+ }
3160
+ stop() {
3161
+ clearInterval(this.#id);
3162
+ this.#id = void 0;
3163
+ this.#frameIndex = 0;
3164
+ if (this.#isEnabled) {
3165
+ this.clear();
3166
+ if (this.#options.hideCursor) {
3167
+ cli_cursor_default.show(this.#stream);
3168
+ }
3169
+ }
3170
+ if (this.#options.discardStdin && process8.stdin.isTTY && this.#isDiscardingStdin) {
3171
+ stdin_discarder_default.stop();
3172
+ this.#isDiscardingStdin = false;
3173
+ }
3174
+ return this;
3175
+ }
3176
+ succeed(text) {
3177
+ return this.stopAndPersist({ symbol: symbols_exports.success, text });
3178
+ }
3179
+ fail(text) {
3180
+ return this.stopAndPersist({ symbol: symbols_exports.error, text });
3181
+ }
3182
+ warn(text) {
3183
+ return this.stopAndPersist({ symbol: symbols_exports.warning, text });
3184
+ }
3185
+ info(text) {
3186
+ return this.stopAndPersist({ symbol: symbols_exports.info, text });
3187
+ }
3188
+ stopAndPersist(options = {}) {
3189
+ if (this.#isSilent) {
3190
+ return this;
3191
+ }
3192
+ const prefixText = options.prefixText ?? this.#prefixText;
3193
+ const fullPrefixText = this.#getFullPrefixText(prefixText, " ");
3194
+ const symbolText = options.symbol ?? " ";
3195
+ const text = options.text ?? this.text;
3196
+ const separatorText = symbolText ? " " : "";
3197
+ const fullText = typeof text === "string" ? separatorText + text : "";
3198
+ const suffixText = options.suffixText ?? this.#suffixText;
3199
+ const fullSuffixText = this.#getFullSuffixText(suffixText, " ");
3200
+ const textToWrite = fullPrefixText + symbolText + fullText + fullSuffixText + "\n";
3201
+ this.stop();
3202
+ this.#stream.write(textToWrite);
3203
+ return this;
3204
+ }
3205
+ };
3206
+ function ora(options) {
3207
+ return new Ora(options);
3208
+ }
3209
+
3210
+ // src/ui/task.tsx
3211
+ import { stdin as input, stdout as output } from "node:process";
3212
+ import readline from "node:readline/promises";
3213
+ var Task = class {
3214
+ spiner = void 0;
3215
+ do(task2, color, spinner, prefix) {
3216
+ this.spiner = ora({
3217
+ text: task2,
3218
+ color,
3219
+ spinner,
3220
+ prefixText: prefix
3221
+ }).start();
3222
+ }
3223
+ next(task2, color, spinner, level = 0) {
3224
+ this.success();
3225
+ this.do(
3226
+ task2,
3227
+ color,
3228
+ spinner,
3229
+ level ? " ".repeat(level) + "\u2514\u2500" : void 0
3230
+ );
3231
+ }
3232
+ success() {
3233
+ if (this.spiner) this.spiner.succeed();
3234
+ }
3235
+ fail() {
3236
+ if (this.spiner) this.spiner.fail();
3237
+ }
3238
+ async ask(question, defaultAnswer = "") {
3239
+ if (this.spiner) {
3240
+ this.spiner.spinner = {
3241
+ interval: 100,
3242
+ frames: [
3243
+ "?",
3244
+ ".",
3245
+ " ",
3246
+ "."
3247
+ ]
3248
+ };
3249
+ }
3250
+ const rl = readline.createInterface({ input, output });
3251
+ const answer = (await rl.question("")).trim();
3252
+ rl.close();
3253
+ return answer ? answer : defaultAnswer;
3254
+ }
3255
+ };
3256
+
3257
+ // src/templates.ts
3258
+ var getRawPageData = async (url, pages, debug = false) => {
3259
+ const task2 = new Task();
3260
+ task2.next("Parsing pages", "yellow", cli_spinners_default.dotsCircle);
3261
+ const result = [];
3262
+ const browser = await chromium.launch({ headless: !debug, devtools: true });
3263
+ const context = await browser.newContext({
3264
+ userAgent: "____fast-ssr-tool___"
3265
+ });
3266
+ let date = [];
3267
+ for await (const mask of pages) {
3268
+ task2.next(mask, "yellow", cli_spinners_default.dotsCircle, 1);
3269
+ const page = await context.newPage();
3270
+ const path2 = mask.replaceAll("{", "").replaceAll("}", "");
3271
+ await page.goto(url + path2);
3272
+ await page.waitForLoadState("networkidle");
3273
+ await page.waitForTimeout(1e3);
3274
+ const requests = await page.evaluate(() => {
3275
+ return window.__ssr_preload;
3276
+ });
3277
+ const input2 = requests ? JSON.parse(requests) : [];
3278
+ const root = await page.locator("#root").innerHTML();
3279
+ if (debug) {
3280
+ await task2.ask("continue?");
3281
+ }
3282
+ page.close();
3283
+ result.push({
3284
+ input: input2,
3285
+ mask,
3286
+ root
3287
+ });
3288
+ }
3289
+ await browser.close();
3290
+ task2.success();
3291
+ return result;
3292
+ };
3293
+
3294
+ // src/bin.ts
3295
+ import path from "node:path";
3296
+ import { mkdir } from "node:fs/promises";
3297
+ import prettier from "prettier";
3298
+ var task = new Task();
3299
+ task.do("Load config");
3300
+ var config = await getUserConfig();
3301
+ task.success();
3302
+ var data = await getRawPageData(config.url, config.pages, config.dev);
3303
+ task.do("Format");
3304
+ var { routes, templates } = getRoutesAndTemplates(data);
3305
+ task.next(`Export: ${config.export.outDir} (${templates.length})`);
3306
+ await mkdir(config.export.outDir, { recursive: true });
3307
+ await writeFile(path.join(config.export.outDir, "config.json"), JSON.stringify(routes, null, 2));
3308
+ for await (let [index, template] of templates.entries()) {
3309
+ try {
3310
+ template = await prettier.format(template, {
3311
+ parser: "html",
3312
+ printWidth: 500,
3313
+ tabWidth: 2,
3314
+ useTabs: false,
3315
+ semi: true,
3316
+ singleQuote: true
3317
+ });
3318
+ } catch (error2) {
3319
+ }
3320
+ await writeFile(path.join(config.export.outDir, `${index}.html`), template);
3321
+ }
3322
+ task.success();