traicebox 0.1.5 → 0.1.6

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.
Files changed (3) hide show
  1. package/README.md +16 -6
  2. package/dist/index.js +546 -3368
  3. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -31,19 +31,6 @@ var __toESM = (mod, isNodeMode, target) => {
31
31
  return to;
32
32
  };
33
33
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
34
- var __returnValue = (v) => v;
35
- function __exportSetter(name, newValue) {
36
- this[name] = __returnValue.bind(null, newValue);
37
- }
38
- var __export = (target, all) => {
39
- for (var name in all)
40
- __defProp(target, name, {
41
- get: all[name],
42
- enumerable: true,
43
- configurable: true,
44
- set: __exportSetter.bind(all, name)
45
- });
46
- };
47
34
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
48
35
 
49
36
  // node_modules/emoji-regex/index.js
@@ -390,8 +377,8 @@ var require_directives = __commonJS((exports) => {
390
377
  if (prefix) {
391
378
  try {
392
379
  return prefix + decodeURIComponent(suffix);
393
- } catch (error2) {
394
- onError(String(error2));
380
+ } catch (error) {
381
+ onError(String(error));
395
382
  return null;
396
383
  }
397
384
  }
@@ -482,9 +469,9 @@ var require_anchors = __commonJS((exports) => {
482
469
  if (typeof ref === "object" && ref.anchor && (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {
483
470
  ref.node.anchor = ref.anchor;
484
471
  } else {
485
- const error2 = new Error("Failed to resolve repeated object (this should not happen)");
486
- error2.source = source;
487
- throw error2;
472
+ const error = new Error("Failed to resolve repeated object (this should not happen)");
473
+ error.source = source;
474
+ throw error;
488
475
  }
489
476
  }
490
477
  },
@@ -1647,12 +1634,12 @@ var require_log = __commonJS((exports) => {
1647
1634
  if (logLevel === "debug")
1648
1635
  console.log(...messages);
1649
1636
  }
1650
- function warn(logLevel, warning2) {
1637
+ function warn(logLevel, warning) {
1651
1638
  if (logLevel === "debug" || logLevel === "warn") {
1652
1639
  if (typeof node_process.emitWarning === "function")
1653
- node_process.emitWarning(warning2);
1640
+ node_process.emitWarning(warning);
1654
1641
  else
1655
- console.warn(warning2);
1642
+ console.warn(warning);
1656
1643
  }
1657
1644
  }
1658
1645
  exports.debug = debug;
@@ -2276,14 +2263,14 @@ var require_bool = __commonJS((exports) => {
2276
2263
 
2277
2264
  // node_modules/yaml/dist/stringify/stringifyNumber.js
2278
2265
  var require_stringifyNumber = __commonJS((exports) => {
2279
- function stringifyNumber({ format: format4, minFractionDigits, tag, value }) {
2266
+ function stringifyNumber({ format: format3, minFractionDigits, tag, value }) {
2280
2267
  if (typeof value === "bigint")
2281
2268
  return String(value);
2282
2269
  const num = typeof value === "number" ? value : Number(value);
2283
2270
  if (!isFinite(num))
2284
2271
  return isNaN(num) ? ".nan" : num < 0 ? "-.inf" : ".inf";
2285
2272
  let n = Object.is(value, -0) ? "-0" : JSON.stringify(value);
2286
- if (!format4 && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^\d/.test(n)) {
2273
+ if (!format3 && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^\d/.test(n)) {
2287
2274
  let i = n.indexOf(".");
2288
2275
  if (i < 0) {
2289
2276
  i = n.length;
@@ -3490,12 +3477,12 @@ var require_errors = __commonJS((exports) => {
3490
3477
  super("YAMLWarning", pos, code, message);
3491
3478
  }
3492
3479
  }
3493
- var prettifyError = (src, lc) => (error2) => {
3494
- if (error2.pos[0] === -1)
3480
+ var prettifyError = (src, lc) => (error) => {
3481
+ if (error.pos[0] === -1)
3495
3482
  return;
3496
- error2.linePos = error2.pos.map((pos) => lc.linePos(pos));
3497
- const { line, col } = error2.linePos[0];
3498
- error2.message += ` at line ${line}, column ${col}`;
3483
+ error.linePos = error.pos.map((pos) => lc.linePos(pos));
3484
+ const { line, col } = error.linePos[0];
3485
+ error.message += ` at line ${line}, column ${col}`;
3499
3486
  let ci = col - 1;
3500
3487
  let lineStr = src.substring(lc.lineStarts[line - 1], lc.lineStarts[line]).replace(/[\n\r]+$/, "");
3501
3488
  if (ci >= 60 && lineStr.length > 80) {
@@ -3514,12 +3501,12 @@ var require_errors = __commonJS((exports) => {
3514
3501
  }
3515
3502
  if (/[^ ]/.test(lineStr)) {
3516
3503
  let count = 1;
3517
- const end = error2.linePos[1];
3504
+ const end = error.linePos[1];
3518
3505
  if (end?.line === line && end.col > col) {
3519
3506
  count = Math.max(1, Math.min(end.col - col, 80 - ci));
3520
3507
  }
3521
3508
  const pointer = " ".repeat(ci) + "^".repeat(count);
3522
- error2.message += `:
3509
+ error.message += `:
3523
3510
 
3524
3511
  ${lineStr}
3525
3512
  ${pointer}
@@ -4309,7 +4296,7 @@ var require_resolve_block_scalar = __commonJS((exports) => {
4309
4296
  const mode = source[0];
4310
4297
  let indent = 0;
4311
4298
  let chomp = "";
4312
- let error2 = -1;
4299
+ let error = -1;
4313
4300
  for (let i = 1;i < source.length; ++i) {
4314
4301
  const ch = source[i];
4315
4302
  if (!chomp && (ch === "-" || ch === "+"))
@@ -4318,12 +4305,12 @@ var require_resolve_block_scalar = __commonJS((exports) => {
4318
4305
  const n = Number(ch);
4319
4306
  if (!indent && n)
4320
4307
  indent = n;
4321
- else if (error2 === -1)
4322
- error2 = offset + i;
4308
+ else if (error === -1)
4309
+ error = offset + i;
4323
4310
  }
4324
4311
  }
4325
- if (error2 !== -1)
4326
- onError(error2, "UNEXPECTED_TOKEN", `Block scalar header includes extra characters: ${source}`);
4312
+ if (error !== -1)
4313
+ onError(error, "UNEXPECTED_TOKEN", `Block scalar header includes extra characters: ${source}`);
4327
4314
  let hasSpace = false;
4328
4315
  let comment = "";
4329
4316
  let length = source.length;
@@ -4609,8 +4596,8 @@ var require_compose_scalar = __commonJS((exports) => {
4609
4596
  try {
4610
4597
  const res = tag.resolve(value, (msg) => onError(tagToken ?? token, "TAG_RESOLVE_FAILED", msg), ctx.options);
4611
4598
  scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);
4612
- } catch (error2) {
4613
- const msg = error2 instanceof Error ? error2.message : String(error2);
4599
+ } catch (error) {
4600
+ const msg = error instanceof Error ? error.message : String(error);
4614
4601
  onError(tagToken ?? token, "TAG_RESOLVE_FAILED", msg);
4615
4602
  scalar = new Scalar.Scalar(value);
4616
4603
  }
@@ -4727,8 +4714,8 @@ var require_compose_node = __commonJS((exports) => {
4727
4714
  node = composeCollection.composeCollection(CN, ctx, token, props, onError);
4728
4715
  if (anchor)
4729
4716
  node.anchor = anchor.source.substring(1);
4730
- } catch (error2) {
4731
- const message = error2 instanceof Error ? error2.message : String(error2);
4717
+ } catch (error) {
4718
+ const message = error instanceof Error ? error.message : String(error);
4732
4719
  onError(token, "RESOURCE_EXHAUSTION", message);
4733
4720
  }
4734
4721
  break;
@@ -4888,9 +4875,9 @@ var require_composer = __commonJS((exports) => {
4888
4875
  this.prelude = [];
4889
4876
  this.errors = [];
4890
4877
  this.warnings = [];
4891
- this.onError = (source, code, message, warning2) => {
4878
+ this.onError = (source, code, message, warning) => {
4892
4879
  const pos = getErrorPos(source);
4893
- if (warning2)
4880
+ if (warning)
4894
4881
  this.warnings.push(new errors.YAMLWarning(pos, code, message));
4895
4882
  else
4896
4883
  this.errors.push(new errors.YAMLParseError(pos, code, message));
@@ -4949,10 +4936,10 @@ ${cb}` : comment;
4949
4936
  console.dir(token, { depth: null });
4950
4937
  switch (token.type) {
4951
4938
  case "directive":
4952
- this.directives.add(token.source, (offset, message, warning2) => {
4939
+ this.directives.add(token.source, (offset, message, warning) => {
4953
4940
  const pos = getErrorPos(token);
4954
4941
  pos[0] += offset;
4955
- this.onError(pos, "BAD_DIRECTIVE", message, warning2);
4942
+ this.onError(pos, "BAD_DIRECTIVE", message, warning);
4956
4943
  });
4957
4944
  this.prelude.push(token.source);
4958
4945
  this.atDirectives = true;
@@ -4977,11 +4964,11 @@ ${cb}` : comment;
4977
4964
  break;
4978
4965
  case "error": {
4979
4966
  const msg = token.source ? `${token.message}: ${JSON.stringify(token.source)}` : token.message;
4980
- const error2 = new errors.YAMLParseError(getErrorPos(token), "UNEXPECTED_TOKEN", msg);
4967
+ const error = new errors.YAMLParseError(getErrorPos(token), "UNEXPECTED_TOKEN", msg);
4981
4968
  if (this.atDirectives || !this.doc)
4982
- this.errors.push(error2);
4969
+ this.errors.push(error);
4983
4970
  else
4984
- this.doc.errors.push(error2);
4971
+ this.doc.errors.push(error);
4985
4972
  break;
4986
4973
  }
4987
4974
  case "doc-end": {
@@ -6254,8 +6241,8 @@ var require_parser = __commonJS((exports) => {
6254
6241
  peek(n) {
6255
6242
  return this.stack[this.stack.length - n];
6256
6243
  }
6257
- *pop(error2) {
6258
- const token = error2 ?? this.stack.pop();
6244
+ *pop(error) {
6245
+ const token = error ?? this.stack.pop();
6259
6246
  if (!token) {
6260
6247
  const message = "Tried to pop an empty stack";
6261
6248
  yield { type: "error", offset: this.offset, source: "", message };
@@ -6952,7 +6939,7 @@ var require_public_api = __commonJS((exports) => {
6952
6939
  const doc = parseDocument(src, options);
6953
6940
  if (!doc)
6954
6941
  return null;
6955
- doc.warnings.forEach((warning2) => log.warn(doc.options.logLevel, warning2));
6942
+ doc.warnings.forEach((warning) => log.warn(doc.options.logLevel, warning));
6956
6943
  if (doc.errors.length > 0) {
6957
6944
  if (doc.options.logLevel !== "silent")
6958
6945
  throw doc.errors[0];
@@ -7411,7 +7398,7 @@ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
7411
7398
  return 1;
7412
7399
  }
7413
7400
 
7414
- // node_modules/cliui/node_modules/string-width/index.js
7401
+ // node_modules/string-width/index.js
7415
7402
  var import_emoji_regex = __toESM(require_emoji_regex(), 1);
7416
7403
  var segmenter = new Intl.Segmenter;
7417
7404
  var defaultIgnorableCodePointRegex = /^\p{Default_Ignorable_Code_Point}$/u;
@@ -7460,55 +7447,6 @@ function stringWidth(string, options = {}) {
7460
7447
  return width;
7461
7448
  }
7462
7449
 
7463
- // node_modules/wrap-ansi/node_modules/string-width/index.js
7464
- var import_emoji_regex2 = __toESM(require_emoji_regex(), 1);
7465
- var segmenter2 = new Intl.Segmenter;
7466
- var defaultIgnorableCodePointRegex2 = /^\p{Default_Ignorable_Code_Point}$/u;
7467
- function stringWidth2(string, options = {}) {
7468
- if (typeof string !== "string" || string.length === 0) {
7469
- return 0;
7470
- }
7471
- const {
7472
- ambiguousIsNarrow = true,
7473
- countAnsiEscapeCodes = false
7474
- } = options;
7475
- if (!countAnsiEscapeCodes) {
7476
- string = stripAnsi(string);
7477
- }
7478
- if (string.length === 0) {
7479
- return 0;
7480
- }
7481
- let width = 0;
7482
- const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
7483
- for (const { segment: character } of segmenter2.segment(string)) {
7484
- const codePoint = character.codePointAt(0);
7485
- if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
7486
- continue;
7487
- }
7488
- if (codePoint >= 8203 && codePoint <= 8207 || codePoint === 65279) {
7489
- continue;
7490
- }
7491
- if (codePoint >= 768 && codePoint <= 879 || codePoint >= 6832 && codePoint <= 6911 || codePoint >= 7616 && codePoint <= 7679 || codePoint >= 8400 && codePoint <= 8447 || codePoint >= 65056 && codePoint <= 65071) {
7492
- continue;
7493
- }
7494
- if (codePoint >= 55296 && codePoint <= 57343) {
7495
- continue;
7496
- }
7497
- if (codePoint >= 65024 && codePoint <= 65039) {
7498
- continue;
7499
- }
7500
- if (defaultIgnorableCodePointRegex2.test(character)) {
7501
- continue;
7502
- }
7503
- if (import_emoji_regex2.default().test(character)) {
7504
- width += 2;
7505
- continue;
7506
- }
7507
- width += eastAsianWidth(codePoint, eastAsianWidthOptions);
7508
- }
7509
- return width;
7510
- }
7511
-
7512
7450
  // node_modules/ansi-styles/index.js
7513
7451
  var ANSI_BACKGROUND_OFFSET = 10;
7514
7452
  var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
@@ -7699,14 +7637,14 @@ var ANSI_SGR_TERMINATOR = "m";
7699
7637
  var ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;
7700
7638
  var wrapAnsiCode = (code) => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;
7701
7639
  var wrapAnsiHyperlink = (url) => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;
7702
- var wordLengths = (string) => string.split(" ").map((character) => stringWidth2(character));
7640
+ var wordLengths = (string) => string.split(" ").map((character) => stringWidth(character));
7703
7641
  var wrapWord = (rows, word, columns) => {
7704
7642
  const characters = [...word];
7705
7643
  let isInsideEscape = false;
7706
7644
  let isInsideLinkEscape = false;
7707
- let visible = stringWidth2(stripAnsi(rows.at(-1)));
7645
+ let visible = stringWidth(stripAnsi(rows.at(-1)));
7708
7646
  for (const [index, character] of characters.entries()) {
7709
- const characterLength = stringWidth2(character);
7647
+ const characterLength = stringWidth(character);
7710
7648
  if (visible + characterLength <= columns) {
7711
7649
  rows[rows.length - 1] += character;
7712
7650
  } else {
@@ -7743,7 +7681,7 @@ var stringVisibleTrimSpacesRight = (string) => {
7743
7681
  const words = string.split(" ");
7744
7682
  let last = words.length;
7745
7683
  while (last > 0) {
7746
- if (stringWidth2(words[last - 1]) > 0) {
7684
+ if (stringWidth(words[last - 1]) > 0) {
7747
7685
  break;
7748
7686
  }
7749
7687
  last--;
@@ -7766,7 +7704,7 @@ var exec = (string, columns, options = {}) => {
7766
7704
  if (options.trim !== false) {
7767
7705
  rows[rows.length - 1] = rows.at(-1).trimStart();
7768
7706
  }
7769
- let rowLength = stringWidth2(rows.at(-1));
7707
+ let rowLength = stringWidth(rows.at(-1));
7770
7708
  if (index !== 0) {
7771
7709
  if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {
7772
7710
  rows.push("");
@@ -8885,55 +8823,6 @@ function getProcessArgvBin() {
8885
8823
  return process.argv[getProcessArgvBinIndex()];
8886
8824
  }
8887
8825
 
8888
- // node_modules/yargs/node_modules/string-width/index.js
8889
- var import_emoji_regex3 = __toESM(require_emoji_regex(), 1);
8890
- var segmenter3 = new Intl.Segmenter;
8891
- var defaultIgnorableCodePointRegex3 = /^\p{Default_Ignorable_Code_Point}$/u;
8892
- function stringWidth3(string, options = {}) {
8893
- if (typeof string !== "string" || string.length === 0) {
8894
- return 0;
8895
- }
8896
- const {
8897
- ambiguousIsNarrow = true,
8898
- countAnsiEscapeCodes = false
8899
- } = options;
8900
- if (!countAnsiEscapeCodes) {
8901
- string = stripAnsi(string);
8902
- }
8903
- if (string.length === 0) {
8904
- return 0;
8905
- }
8906
- let width = 0;
8907
- const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
8908
- for (const { segment: character } of segmenter3.segment(string)) {
8909
- const codePoint = character.codePointAt(0);
8910
- if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
8911
- continue;
8912
- }
8913
- if (codePoint >= 8203 && codePoint <= 8207 || codePoint === 65279) {
8914
- continue;
8915
- }
8916
- if (codePoint >= 768 && codePoint <= 879 || codePoint >= 6832 && codePoint <= 6911 || codePoint >= 7616 && codePoint <= 7679 || codePoint >= 8400 && codePoint <= 8447 || codePoint >= 65056 && codePoint <= 65071) {
8917
- continue;
8918
- }
8919
- if (codePoint >= 55296 && codePoint <= 57343) {
8920
- continue;
8921
- }
8922
- if (codePoint >= 65024 && codePoint <= 65039) {
8923
- continue;
8924
- }
8925
- if (defaultIgnorableCodePointRegex3.test(character)) {
8926
- continue;
8927
- }
8928
- if (import_emoji_regex3.default().test(character)) {
8929
- width += 2;
8930
- continue;
8931
- }
8932
- width += eastAsianWidth(codePoint, eastAsianWidthOptions);
8933
- }
8934
- return width;
8935
- }
8936
-
8937
8826
  // node_modules/y18n/build/lib/platform-shims/node.js
8938
8827
  import { readFileSync as readFileSync2, statSync as statSync2, writeFile } from "fs";
8939
8828
  import { format as format2 } from "util";
@@ -9166,7 +9055,7 @@ var esm_default = {
9166
9055
  const callerFile = import_get_caller_file.default(3);
9167
9056
  return callerFile.match(/^file:\/\//) ? fileURLToPath(callerFile) : callerFile;
9168
9057
  },
9169
- stringWidth: stringWidth3,
9058
+ stringWidth,
9170
9059
  y18n: y18n_default({
9171
9060
  directory: resolve4(__dirname2, "../../../locales"),
9172
9061
  updateFiles: false
@@ -12500,3216 +12389,497 @@ import { spawn as spawn2 } from "node:child_process";
12500
12389
  import { chmodSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
12501
12390
  import { join as join3 } from "node:path";
12502
12391
 
12503
- // node_modules/ora/index.js
12504
- import process8 from "node:process";
12505
- import { stripVTControlCharacters } from "node:util";
12506
-
12507
- // node_modules/chalk/source/vendor/ansi-styles/index.js
12508
- var ANSI_BACKGROUND_OFFSET2 = 10;
12509
- var wrapAnsi162 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
12510
- var wrapAnsi2562 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`;
12511
- var wrapAnsi16m2 = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
12512
- var styles2 = {
12513
- modifier: {
12514
- reset: [0, 0],
12515
- bold: [1, 22],
12516
- dim: [2, 22],
12517
- italic: [3, 23],
12518
- underline: [4, 24],
12519
- overline: [53, 55],
12520
- inverse: [7, 27],
12521
- hidden: [8, 28],
12522
- strikethrough: [9, 29]
12523
- },
12524
- color: {
12525
- black: [30, 39],
12526
- red: [31, 39],
12527
- green: [32, 39],
12528
- yellow: [33, 39],
12529
- blue: [34, 39],
12530
- magenta: [35, 39],
12531
- cyan: [36, 39],
12532
- white: [37, 39],
12533
- blackBright: [90, 39],
12534
- gray: [90, 39],
12535
- grey: [90, 39],
12536
- redBright: [91, 39],
12537
- greenBright: [92, 39],
12538
- yellowBright: [93, 39],
12539
- blueBright: [94, 39],
12540
- magentaBright: [95, 39],
12541
- cyanBright: [96, 39],
12542
- whiteBright: [97, 39]
12543
- },
12544
- bgColor: {
12545
- bgBlack: [40, 49],
12546
- bgRed: [41, 49],
12547
- bgGreen: [42, 49],
12548
- bgYellow: [43, 49],
12549
- bgBlue: [44, 49],
12550
- bgMagenta: [45, 49],
12551
- bgCyan: [46, 49],
12552
- bgWhite: [47, 49],
12553
- bgBlackBright: [100, 49],
12554
- bgGray: [100, 49],
12555
- bgGrey: [100, 49],
12556
- bgRedBright: [101, 49],
12557
- bgGreenBright: [102, 49],
12558
- bgYellowBright: [103, 49],
12559
- bgBlueBright: [104, 49],
12560
- bgMagentaBright: [105, 49],
12561
- bgCyanBright: [106, 49],
12562
- bgWhiteBright: [107, 49]
12563
- }
12392
+ // node_modules/picospinner/dist/constants.js
12393
+ var DEFAULT_FRAMES = ["", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
12394
+ var DEFAULT_TICK_MS = 50;
12395
+ var HIDE_CURSOR = "\x1B[?25l";
12396
+ var SHOW_CURSOR = "\x1B[?25h";
12397
+ var CLEAR_LINE = "\r\x1B[K";
12398
+ var UP_LINE = "\x1B[1A";
12399
+ var DEFAULT_SYMBOLS = {
12400
+ succeed: "✔",
12401
+ fail: "✖",
12402
+ warn: "!",
12403
+ info: "ℹ"
12404
+ };
12405
+ var DEFAULT_COLORS = {
12406
+ succeed: "green",
12407
+ fail: "red",
12408
+ warn: "yellow",
12409
+ info: "blue",
12410
+ spinner: "cyan"
12564
12411
  };
12565
- var modifierNames2 = Object.keys(styles2.modifier);
12566
- var foregroundColorNames2 = Object.keys(styles2.color);
12567
- var backgroundColorNames2 = Object.keys(styles2.bgColor);
12568
- var colorNames2 = [...foregroundColorNames2, ...backgroundColorNames2];
12569
- function assembleStyles2() {
12570
- const codes = new Map;
12571
- for (const [groupName, group] of Object.entries(styles2)) {
12572
- for (const [styleName, style] of Object.entries(group)) {
12573
- styles2[styleName] = {
12574
- open: `\x1B[${style[0]}m`,
12575
- close: `\x1B[${style[1]}m`
12576
- };
12577
- group[styleName] = styles2[styleName];
12578
- codes.set(style[0], style[1]);
12579
- }
12580
- Object.defineProperty(styles2, groupName, {
12581
- value: group,
12582
- enumerable: false
12583
- });
12584
- }
12585
- Object.defineProperty(styles2, "codes", {
12586
- value: codes,
12587
- enumerable: false
12588
- });
12589
- styles2.color.close = "\x1B[39m";
12590
- styles2.bgColor.close = "\x1B[49m";
12591
- styles2.color.ansi = wrapAnsi162();
12592
- styles2.color.ansi256 = wrapAnsi2562();
12593
- styles2.color.ansi16m = wrapAnsi16m2();
12594
- styles2.bgColor.ansi = wrapAnsi162(ANSI_BACKGROUND_OFFSET2);
12595
- styles2.bgColor.ansi256 = wrapAnsi2562(ANSI_BACKGROUND_OFFSET2);
12596
- styles2.bgColor.ansi16m = wrapAnsi16m2(ANSI_BACKGROUND_OFFSET2);
12597
- Object.defineProperties(styles2, {
12598
- rgbToAnsi256: {
12599
- value(red, green, blue) {
12600
- if (red === green && green === blue) {
12601
- if (red < 8) {
12602
- return 16;
12603
- }
12604
- if (red > 248) {
12605
- return 231;
12606
- }
12607
- return Math.round((red - 8) / 247 * 24) + 232;
12608
- }
12609
- return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
12610
- },
12611
- enumerable: false
12612
- },
12613
- hexToRgb: {
12614
- value(hex) {
12615
- const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
12616
- if (!matches) {
12617
- return [0, 0, 0];
12618
- }
12619
- let [colorString] = matches;
12620
- if (colorString.length === 3) {
12621
- colorString = [...colorString].map((character) => character + character).join("");
12622
- }
12623
- const integer = Number.parseInt(colorString, 16);
12624
- return [
12625
- integer >> 16 & 255,
12626
- integer >> 8 & 255,
12627
- integer & 255
12628
- ];
12629
- },
12630
- enumerable: false
12631
- },
12632
- hexToAnsi256: {
12633
- value: (hex) => styles2.rgbToAnsi256(...styles2.hexToRgb(hex)),
12634
- enumerable: false
12635
- },
12636
- ansi256ToAnsi: {
12637
- value(code) {
12638
- if (code < 8) {
12639
- return 30 + code;
12640
- }
12641
- if (code < 16) {
12642
- return 90 + (code - 8);
12643
- }
12644
- let red;
12645
- let green;
12646
- let blue;
12647
- if (code >= 232) {
12648
- red = ((code - 232) * 10 + 8) / 255;
12649
- green = red;
12650
- blue = red;
12651
- } else {
12652
- code -= 16;
12653
- const remainder = code % 36;
12654
- red = Math.floor(code / 36) / 5;
12655
- green = Math.floor(remainder / 6) / 5;
12656
- blue = remainder % 6 / 5;
12657
- }
12658
- const value = Math.max(red, green, blue) * 2;
12659
- if (value === 0) {
12660
- return 30;
12661
- }
12662
- let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
12663
- if (value === 2) {
12664
- result += 60;
12665
- }
12666
- return result;
12667
- },
12668
- enumerable: false
12669
- },
12670
- rgbToAnsi: {
12671
- value: (red, green, blue) => styles2.ansi256ToAnsi(styles2.rgbToAnsi256(red, green, blue)),
12672
- enumerable: false
12673
- },
12674
- hexToAnsi: {
12675
- value: (hex) => styles2.ansi256ToAnsi(styles2.hexToAnsi256(hex)),
12676
- enumerable: false
12677
- }
12678
- });
12679
- return styles2;
12680
- }
12681
- var ansiStyles2 = assembleStyles2();
12682
- var ansi_styles_default2 = ansiStyles2;
12683
12412
 
12684
- // node_modules/chalk/source/vendor/supports-color/index.js
12685
- import process2 from "node:process";
12686
- import os from "node:os";
12687
- import tty from "node:tty";
12688
- function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process2.argv) {
12689
- const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
12690
- const position = argv.indexOf(prefix + flag);
12691
- const terminatorPosition = argv.indexOf("--");
12692
- return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
12413
+ // node_modules/picospinner/dist/string-chars.js
12414
+ var nonSpacing = [
12415
+ [768, 879],
12416
+ [1155, 1158],
12417
+ [1160, 1161],
12418
+ [1425, 1469],
12419
+ [1471, 1471],
12420
+ [1473, 1474],
12421
+ [1476, 1477],
12422
+ [1479, 1479],
12423
+ [1536, 1539],
12424
+ [1552, 1557],
12425
+ [1611, 1630],
12426
+ [1648, 1648],
12427
+ [1750, 1764],
12428
+ [1767, 1768],
12429
+ [1770, 1773],
12430
+ [1807, 1807],
12431
+ [1809, 1809],
12432
+ [1840, 1866],
12433
+ [1958, 1968],
12434
+ [2027, 2035],
12435
+ [2305, 2306],
12436
+ [2364, 2364],
12437
+ [2369, 2376],
12438
+ [2381, 2381],
12439
+ [2385, 2388],
12440
+ [2402, 2403],
12441
+ [2433, 2433],
12442
+ [2492, 2492],
12443
+ [2497, 2500],
12444
+ [2509, 2509],
12445
+ [2530, 2531],
12446
+ [2561, 2562],
12447
+ [2620, 2620],
12448
+ [2625, 2626],
12449
+ [2631, 2632],
12450
+ [2635, 2637],
12451
+ [2672, 2673],
12452
+ [2689, 2690],
12453
+ [2748, 2748],
12454
+ [2753, 2757],
12455
+ [2759, 2760],
12456
+ [2765, 2765],
12457
+ [2786, 2787],
12458
+ [2817, 2817],
12459
+ [2876, 2876],
12460
+ [2879, 2879],
12461
+ [2881, 2883],
12462
+ [2893, 2893],
12463
+ [2902, 2902],
12464
+ [2946, 2946],
12465
+ [3008, 3008],
12466
+ [3021, 3021],
12467
+ [3134, 3136],
12468
+ [3142, 3144],
12469
+ [3146, 3149],
12470
+ [3157, 3158],
12471
+ [3260, 3260],
12472
+ [3263, 3263],
12473
+ [3270, 3270],
12474
+ [3276, 3277],
12475
+ [3298, 3299],
12476
+ [3393, 3395],
12477
+ [3405, 3405],
12478
+ [3530, 3530],
12479
+ [3538, 3540],
12480
+ [3542, 3542],
12481
+ [3633, 3633],
12482
+ [3636, 3642],
12483
+ [3655, 3662],
12484
+ [3761, 3761],
12485
+ [3764, 3769],
12486
+ [3771, 3772],
12487
+ [3784, 3789],
12488
+ [3864, 3865],
12489
+ [3893, 3893],
12490
+ [3895, 3895],
12491
+ [3897, 3897],
12492
+ [3953, 3966],
12493
+ [3968, 3972],
12494
+ [3974, 3975],
12495
+ [3984, 3991],
12496
+ [3993, 4028],
12497
+ [4038, 4038],
12498
+ [4141, 4144],
12499
+ [4146, 4146],
12500
+ [4150, 4151],
12501
+ [4153, 4153],
12502
+ [4184, 4185],
12503
+ [4448, 4607],
12504
+ [4959, 4959],
12505
+ [5906, 5908],
12506
+ [5938, 5940],
12507
+ [5970, 5971],
12508
+ [6002, 6003],
12509
+ [6068, 6069],
12510
+ [6071, 6077],
12511
+ [6086, 6086],
12512
+ [6089, 6099],
12513
+ [6109, 6109],
12514
+ [6155, 6157],
12515
+ [6313, 6313],
12516
+ [6432, 6434],
12517
+ [6439, 6440],
12518
+ [6450, 6450],
12519
+ [6457, 6459],
12520
+ [6679, 6680],
12521
+ [6912, 6915],
12522
+ [6964, 6964],
12523
+ [6966, 6970],
12524
+ [6972, 6972],
12525
+ [6978, 6978],
12526
+ [7019, 7027],
12527
+ [7616, 7626],
12528
+ [7678, 7679],
12529
+ [8203, 8207],
12530
+ [8234, 8238],
12531
+ [8288, 8291],
12532
+ [8298, 8303],
12533
+ [8400, 8431],
12534
+ [12330, 12335],
12535
+ [12441, 12442],
12536
+ [43014, 43014],
12537
+ [43019, 43019],
12538
+ [43045, 43046],
12539
+ [64286, 64286],
12540
+ [65024, 65039],
12541
+ [65056, 65059],
12542
+ [65279, 65279],
12543
+ [65529, 65531],
12544
+ [68097, 68099],
12545
+ [68101, 68102],
12546
+ [68108, 68111],
12547
+ [68152, 68154],
12548
+ [68159, 68159],
12549
+ [119143, 119145],
12550
+ [119155, 119170],
12551
+ [119173, 119179],
12552
+ [119210, 119213],
12553
+ [119362, 119364],
12554
+ [917505, 917505],
12555
+ [917536, 917631],
12556
+ [917760, 917999]
12557
+ ];
12558
+
12559
+ // node_modules/picospinner/dist/string-width.js
12560
+ var EMOJI_REGEX = /(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F)(?:\u200d(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F))*/uy;
12561
+ var ANSI_REGEX = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y;
12562
+ var MODIFIER_REGEX = /\p{M}+/uy;
12563
+ var EMOJI_LENGTH = 2;
12564
+ function binarySearch(ucs, intervals) {
12565
+ let min = 0;
12566
+ let mid;
12567
+ let max = intervals.length - 1;
12568
+ if (ucs < intervals[0][0] || ucs > intervals[max][1])
12569
+ return false;
12570
+ while (max >= min) {
12571
+ mid = Math.floor((min + max) / 2);
12572
+ if (ucs > intervals[mid][1])
12573
+ min = mid + 1;
12574
+ else if (ucs < intervals[mid][0])
12575
+ max = mid - 1;
12576
+ else
12577
+ return true;
12578
+ }
12579
+ return false;
12693
12580
  }
12694
- var { env: env2 } = process2;
12695
- var flagForceColor;
12696
- if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
12697
- flagForceColor = 0;
12698
- } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
12699
- flagForceColor = 1;
12581
+ function getCharWidth(ucs) {
12582
+ if (ucs === 0 || ucs < 32 || ucs >= 127 && ucs < 160 || binarySearch(ucs, nonSpacing))
12583
+ return 0;
12584
+ return ucs >= 4352 && (ucs <= 4447 || ucs == 9001 || ucs == 9002 || ucs >= 11904 && ucs <= 42191 && ucs != 12351 || ucs >= 44032 && ucs <= 55203 || ucs >= 63744 && ucs <= 64255 || ucs >= 65040 && ucs <= 65049 || ucs >= 65072 && ucs <= 65135 || ucs >= 65280 && ucs <= 65376 || ucs >= 65504 && ucs <= 65510 || ucs >= 131072 && ucs <= 196605 || ucs >= 196608 && ucs <= 262141) ? 2 : 1;
12700
12585
  }
12701
- function envForceColor() {
12702
- if ("FORCE_COLOR" in env2) {
12703
- if (env2.FORCE_COLOR === "true") {
12704
- return 1;
12586
+ function getStringWidth(str) {
12587
+ let width = 0;
12588
+ let charCode = 0;
12589
+ for (let i = 0;i < str.length; i++) {
12590
+ charCode = str[i].charCodeAt(0);
12591
+ if (charCode >= 32 && charCode < 127) {
12592
+ width++;
12593
+ continue;
12705
12594
  }
12706
- if (env2.FORCE_COLOR === "false") {
12707
- return 0;
12595
+ ANSI_REGEX.lastIndex = i;
12596
+ if (ANSI_REGEX.test(str)) {
12597
+ i = ANSI_REGEX.lastIndex - 1;
12598
+ continue;
12599
+ }
12600
+ EMOJI_REGEX.lastIndex = i;
12601
+ if (EMOJI_REGEX.test(str)) {
12602
+ i = EMOJI_REGEX.lastIndex - 1;
12603
+ width += EMOJI_LENGTH;
12604
+ continue;
12605
+ }
12606
+ MODIFIER_REGEX.lastIndex = i;
12607
+ if (MODIFIER_REGEX.test(str)) {
12608
+ i = MODIFIER_REGEX.lastIndex - 1;
12609
+ continue;
12708
12610
  }
12709
- return env2.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env2.FORCE_COLOR, 10), 3);
12611
+ width += getCharWidth(charCode);
12710
12612
  }
12613
+ return width;
12711
12614
  }
12712
- function translateLevel(level) {
12713
- if (level === 0) {
12714
- return false;
12615
+
12616
+ // node_modules/picospinner/dist/string-lines.js
12617
+ function countLines(str, maxWidth) {
12618
+ const lines = str.split(`
12619
+ `);
12620
+ let lineCount = lines.length;
12621
+ if (maxWidth === Infinity)
12622
+ return lineCount;
12623
+ for (const line of str.split(`
12624
+ `)) {
12625
+ lineCount += Math.max(Math.ceil(getStringWidth(line) / maxWidth) - 1, 0);
12626
+ }
12627
+ return lineCount;
12628
+ }
12629
+
12630
+ // node_modules/picospinner/dist/renderer.js
12631
+ class TextComponent {
12632
+ text;
12633
+ onChange;
12634
+ onFinish;
12635
+ finished = false;
12636
+ newLineEnding = true;
12637
+ constructor(text) {
12638
+ this.text = text;
12639
+ }
12640
+ setText(text) {
12641
+ this.text = text;
12642
+ if (typeof this.onChange === "function")
12643
+ this.onChange();
12644
+ }
12645
+ finish() {
12646
+ if (!this.finished && typeof this.onFinish === "function")
12647
+ this.onFinish();
12648
+ this.finished = true;
12649
+ }
12650
+ output() {
12651
+ return this.text;
12652
+ }
12653
+ disableNewLineEnding() {
12654
+ this.newLineEnding = false;
12655
+ }
12656
+ }
12657
+
12658
+ class Renderer {
12659
+ hideCursor;
12660
+ components = [];
12661
+ lastLinesAmt = 0;
12662
+ terminalWidth = Infinity;
12663
+ finishedComponents = 0;
12664
+ outputBuffer = "";
12665
+ constructor(hideCursor = true) {
12666
+ this.hideCursor = hideCursor;
12667
+ }
12668
+ addComponent(component) {
12669
+ this.components.push(component);
12670
+ component.onChange = this.render.bind(this);
12671
+ component.onFinish = this.onComponentFinish.bind(this);
12672
+ if (process.stdout.getWindowSize)
12673
+ this.terminalWidth = process.stdout.getWindowSize()[0];
12674
+ this.render();
12715
12675
  }
12716
- return {
12717
- level,
12718
- hasBasic: true,
12719
- has256: level >= 2,
12720
- has16m: level >= 3
12721
- };
12722
- }
12723
- function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
12724
- const noFlagForceColor = envForceColor();
12725
- if (noFlagForceColor !== undefined) {
12726
- flagForceColor = noFlagForceColor;
12727
- }
12728
- const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
12729
- if (forceColor === 0) {
12730
- return 0;
12731
- }
12732
- if (sniffFlags) {
12733
- if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
12734
- return 3;
12735
- }
12736
- if (hasFlag("color=256")) {
12737
- return 2;
12738
- }
12739
- }
12740
- if ("TF_BUILD" in env2 && "AGENT_NAME" in env2) {
12741
- return 1;
12742
- }
12743
- if (haveStream && !streamIsTTY && forceColor === undefined) {
12744
- return 0;
12745
- }
12746
- const min = forceColor || 0;
12747
- if (env2.TERM === "dumb") {
12748
- return min;
12749
- }
12750
- if (process2.platform === "win32") {
12751
- const osRelease = os.release().split(".");
12752
- if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
12753
- return Number(osRelease[2]) >= 14931 ? 3 : 2;
12754
- }
12755
- return 1;
12756
- }
12757
- if ("CI" in env2) {
12758
- if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => (key in env2))) {
12759
- return 3;
12760
- }
12761
- if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => (sign in env2)) || env2.CI_NAME === "codeship") {
12762
- return 1;
12763
- }
12764
- return min;
12765
- }
12766
- if ("TEAMCITY_VERSION" in env2) {
12767
- return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env2.TEAMCITY_VERSION) ? 1 : 0;
12768
- }
12769
- if (env2.COLORTERM === "truecolor") {
12770
- return 3;
12771
- }
12772
- if (env2.TERM === "xterm-kitty") {
12773
- return 3;
12774
- }
12775
- if (env2.TERM === "xterm-ghostty") {
12776
- return 3;
12777
- }
12778
- if (env2.TERM === "wezterm") {
12779
- return 3;
12780
- }
12781
- if ("TERM_PROGRAM" in env2) {
12782
- const version = Number.parseInt((env2.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
12783
- switch (env2.TERM_PROGRAM) {
12784
- case "iTerm.app": {
12785
- return version >= 3 ? 3 : 2;
12786
- }
12787
- case "Apple_Terminal": {
12788
- return 2;
12789
- }
12790
- }
12791
- }
12792
- if (/-256(color)?$/i.test(env2.TERM)) {
12793
- return 2;
12794
- }
12795
- if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env2.TERM)) {
12796
- return 1;
12797
- }
12798
- if ("COLORTERM" in env2) {
12799
- return 1;
12800
- }
12801
- return min;
12802
- }
12803
- function createSupportsColor(stream, options = {}) {
12804
- const level = _supportsColor(stream, {
12805
- streamIsTTY: stream && stream.isTTY,
12806
- ...options
12807
- });
12808
- return translateLevel(level);
12809
- }
12810
- var supportsColor = {
12811
- stdout: createSupportsColor({ isTTY: tty.isatty(1) }),
12812
- stderr: createSupportsColor({ isTTY: tty.isatty(2) })
12813
- };
12814
- var supports_color_default = supportsColor;
12815
-
12816
- // node_modules/chalk/source/utilities.js
12817
- function stringReplaceAll(string, substring, replacer) {
12818
- let index = string.indexOf(substring);
12819
- if (index === -1) {
12820
- return string;
12821
- }
12822
- const substringLength = substring.length;
12823
- let endIndex = 0;
12824
- let returnValue = "";
12825
- do {
12826
- returnValue += string.slice(endIndex, index) + substring + replacer;
12827
- endIndex = index + substringLength;
12828
- index = string.indexOf(substring, endIndex);
12829
- } while (index !== -1);
12830
- returnValue += string.slice(endIndex);
12831
- return returnValue;
12832
- }
12833
- function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
12834
- let endIndex = 0;
12835
- let returnValue = "";
12836
- do {
12837
- const gotCR = string[index - 1] === "\r";
12838
- returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? `\r
12839
- ` : `
12840
- `) + postfix;
12841
- endIndex = index + 1;
12842
- index = string.indexOf(`
12843
- `, endIndex);
12844
- } while (index !== -1);
12845
- returnValue += string.slice(endIndex);
12846
- return returnValue;
12847
- }
12848
-
12849
- // node_modules/chalk/source/index.js
12850
- var { stdout: stdoutColor, stderr: stderrColor } = supports_color_default;
12851
- var GENERATOR = Symbol("GENERATOR");
12852
- var STYLER = Symbol("STYLER");
12853
- var IS_EMPTY = Symbol("IS_EMPTY");
12854
- var levelMapping = [
12855
- "ansi",
12856
- "ansi",
12857
- "ansi256",
12858
- "ansi16m"
12859
- ];
12860
- var styles3 = Object.create(null);
12861
- var applyOptions = (object, options = {}) => {
12862
- if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
12863
- throw new Error("The `level` option should be an integer from 0 to 3");
12864
- }
12865
- const colorLevel = stdoutColor ? stdoutColor.level : 0;
12866
- object.level = options.level === undefined ? colorLevel : options.level;
12867
- };
12868
- var chalkFactory = (options) => {
12869
- const chalk = (...strings) => strings.join(" ");
12870
- applyOptions(chalk, options);
12871
- Object.setPrototypeOf(chalk, createChalk.prototype);
12872
- return chalk;
12873
- };
12874
- function createChalk(options) {
12875
- return chalkFactory(options);
12876
- }
12877
- Object.setPrototypeOf(createChalk.prototype, Function.prototype);
12878
- for (const [styleName, style] of Object.entries(ansi_styles_default2)) {
12879
- styles3[styleName] = {
12880
- get() {
12881
- const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
12882
- Object.defineProperty(this, styleName, { value: builder });
12883
- return builder;
12884
- }
12885
- };
12886
- }
12887
- styles3.visible = {
12888
- get() {
12889
- const builder = createBuilder(this, this[STYLER], true);
12890
- Object.defineProperty(this, "visible", { value: builder });
12891
- return builder;
12892
- }
12893
- };
12894
- var getModelAnsi = (model, level, type, ...arguments_) => {
12895
- if (model === "rgb") {
12896
- if (level === "ansi16m") {
12897
- return ansi_styles_default2[type].ansi16m(...arguments_);
12898
- }
12899
- if (level === "ansi256") {
12900
- return ansi_styles_default2[type].ansi256(ansi_styles_default2.rgbToAnsi256(...arguments_));
12901
- }
12902
- return ansi_styles_default2[type].ansi(ansi_styles_default2.rgbToAnsi(...arguments_));
12903
- }
12904
- if (model === "hex") {
12905
- return getModelAnsi("rgb", level, type, ...ansi_styles_default2.hexToRgb(...arguments_));
12906
- }
12907
- return ansi_styles_default2[type][model](...arguments_);
12908
- };
12909
- var usedModels = ["rgb", "hex", "ansi256"];
12910
- for (const model of usedModels) {
12911
- styles3[model] = {
12912
- get() {
12913
- const { level } = this;
12914
- return function(...arguments_) {
12915
- const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansi_styles_default2.color.close, this[STYLER]);
12916
- return createBuilder(this, styler, this[IS_EMPTY]);
12917
- };
12918
- }
12919
- };
12920
- const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
12921
- styles3[bgModel] = {
12922
- get() {
12923
- const { level } = this;
12924
- return function(...arguments_) {
12925
- const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansi_styles_default2.bgColor.close, this[STYLER]);
12926
- return createBuilder(this, styler, this[IS_EMPTY]);
12927
- };
12928
- }
12929
- };
12930
- }
12931
- var proto = Object.defineProperties(() => {}, {
12932
- ...styles3,
12933
- level: {
12934
- enumerable: true,
12935
- get() {
12936
- return this[GENERATOR].level;
12937
- },
12938
- set(level) {
12939
- this[GENERATOR].level = level;
12676
+ onComponentFinish() {
12677
+ this.finishedComponents++;
12678
+ if (this.finishedComponents === this.components.length) {
12679
+ this._reset();
12680
+ process.stdout.write(SHOW_CURSOR);
12940
12681
  }
12941
12682
  }
12942
- });
12943
- var createStyler = (open, close, parent) => {
12944
- let openAll;
12945
- let closeAll;
12946
- if (parent === undefined) {
12947
- openAll = open;
12948
- closeAll = close;
12949
- } else {
12950
- openAll = parent.openAll + open;
12951
- closeAll = close + parent.closeAll;
12952
- }
12953
- return {
12954
- open,
12955
- close,
12956
- openAll,
12957
- closeAll,
12958
- parent
12959
- };
12960
- };
12961
- var createBuilder = (self, _styler, _isEmpty) => {
12962
- const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
12963
- Object.setPrototypeOf(builder, proto);
12964
- builder[GENERATOR] = self;
12965
- builder[STYLER] = _styler;
12966
- builder[IS_EMPTY] = _isEmpty;
12967
- return builder;
12968
- };
12969
- var applyStyle = (self, string) => {
12970
- if (self.level <= 0 || !string) {
12971
- return self[IS_EMPTY] ? "" : string;
12972
- }
12973
- let styler = self[STYLER];
12974
- if (styler === undefined) {
12975
- return string;
12976
- }
12977
- const { openAll, closeAll } = styler;
12978
- if (string.includes("\x1B")) {
12979
- while (styler !== undefined) {
12980
- string = stringReplaceAll(string, styler.close, styler.open);
12981
- styler = styler.parent;
12982
- }
12983
- }
12984
- const lfIndex = string.indexOf(`
12985
- `);
12986
- if (lfIndex !== -1) {
12987
- string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
12988
- }
12989
- return openAll + string + closeAll;
12990
- };
12991
- Object.defineProperties(createChalk.prototype, styles3);
12992
- var chalk = createChalk();
12993
- var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
12994
- var source_default = chalk;
12995
-
12996
- // node_modules/cli-cursor/index.js
12997
- import process5 from "node:process";
12998
-
12999
- // node_modules/restore-cursor/index.js
13000
- import process4 from "node:process";
13001
-
13002
- // node_modules/mimic-function/index.js
13003
- var copyProperty = (to, from, property, ignoreNonConfigurable) => {
13004
- if (property === "length" || property === "prototype") {
13005
- return;
13006
- }
13007
- if (property === "arguments" || property === "caller") {
13008
- return;
13009
- }
13010
- const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
13011
- const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
13012
- if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
13013
- return;
13014
- }
13015
- Object.defineProperty(to, property, fromDescriptor);
13016
- };
13017
- var canCopyProperty = function(toDescriptor, fromDescriptor) {
13018
- return toDescriptor === undefined || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);
13019
- };
13020
- var changePrototype = (to, from) => {
13021
- const fromPrototype = Object.getPrototypeOf(from);
13022
- if (fromPrototype === Object.getPrototypeOf(to)) {
13023
- return;
13024
- }
13025
- Object.setPrototypeOf(to, fromPrototype);
13026
- };
13027
- var wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/
13028
- ${fromBody}`;
13029
- var toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString");
13030
- var toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name");
13031
- var changeToString = (to, from, name) => {
13032
- const withName = name === "" ? "" : `with ${name.trim()}() `;
13033
- const newToString = wrappedToString.bind(null, withName, from.toString());
13034
- Object.defineProperty(newToString, "name", toStringName);
13035
- const { writable, enumerable, configurable } = toStringDescriptor;
13036
- Object.defineProperty(to, "toString", { value: newToString, writable, enumerable, configurable });
13037
- };
13038
- function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {
13039
- const { name } = to;
13040
- for (const property of Reflect.ownKeys(from)) {
13041
- copyProperty(to, from, property, ignoreNonConfigurable);
13042
- }
13043
- changePrototype(to, from);
13044
- changeToString(to, from, name);
13045
- return to;
13046
- }
13047
-
13048
- // node_modules/onetime/index.js
13049
- var calledFunctions = new WeakMap;
13050
- var onetime = (function_, options = {}) => {
13051
- if (typeof function_ !== "function") {
13052
- throw new TypeError("Expected a function");
13053
- }
13054
- let returnValue;
13055
- let callCount = 0;
13056
- const functionName = function_.displayName || function_.name || "<anonymous>";
13057
- const onetime2 = function(...arguments_) {
13058
- calledFunctions.set(onetime2, ++callCount);
13059
- if (callCount === 1) {
13060
- returnValue = function_.apply(this, arguments_);
13061
- function_ = undefined;
13062
- } else if (options.throw === true) {
13063
- throw new Error(`Function \`${functionName}\` can only be called once`);
13064
- }
13065
- return returnValue;
13066
- };
13067
- mimicFunction(onetime2, function_);
13068
- calledFunctions.set(onetime2, callCount);
13069
- return onetime2;
13070
- };
13071
- onetime.callCount = (function_) => {
13072
- if (!calledFunctions.has(function_)) {
13073
- throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
13074
- }
13075
- return calledFunctions.get(function_);
13076
- };
13077
- var onetime_default = onetime;
13078
-
13079
- // node_modules/signal-exit/dist/mjs/signals.js
13080
- var signals = [];
13081
- signals.push("SIGHUP", "SIGINT", "SIGTERM");
13082
- if (process.platform !== "win32") {
13083
- signals.push("SIGALRM", "SIGABRT", "SIGVTALRM", "SIGXCPU", "SIGXFSZ", "SIGUSR2", "SIGTRAP", "SIGSYS", "SIGQUIT", "SIGIOT");
13084
- }
13085
- if (process.platform === "linux") {
13086
- signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
13087
- }
13088
-
13089
- // node_modules/signal-exit/dist/mjs/index.js
13090
- var processOk = (process3) => !!process3 && typeof process3 === "object" && typeof process3.removeListener === "function" && typeof process3.emit === "function" && typeof process3.reallyExit === "function" && typeof process3.listeners === "function" && typeof process3.kill === "function" && typeof process3.pid === "number" && typeof process3.on === "function";
13091
- var kExitEmitter = Symbol.for("signal-exit emitter");
13092
- var global = globalThis;
13093
- var ObjectDefineProperty = Object.defineProperty.bind(Object);
13094
-
13095
- class Emitter {
13096
- emitted = {
13097
- afterExit: false,
13098
- exit: false
13099
- };
13100
- listeners = {
13101
- afterExit: [],
13102
- exit: []
13103
- };
13104
- count = 0;
13105
- id = Math.random();
13106
- constructor() {
13107
- if (global[kExitEmitter]) {
13108
- return global[kExitEmitter];
13109
- }
13110
- ObjectDefineProperty(global, kExitEmitter, {
13111
- value: this,
13112
- writable: false,
13113
- enumerable: false,
13114
- configurable: false
13115
- });
13116
- }
13117
- on(ev, fn) {
13118
- this.listeners[ev].push(fn);
12683
+ removeComponent(component) {
12684
+ this.components = this.components.filter((c) => c !== component);
12685
+ component.onChange = undefined;
12686
+ if (component.finished)
12687
+ this.finishedComponents--;
12688
+ this.render();
13119
12689
  }
13120
- removeListener(ev, fn) {
13121
- const list = this.listeners[ev];
13122
- const i = list.indexOf(fn);
13123
- if (i === -1) {
12690
+ render() {
12691
+ this.outputBuffer = "";
12692
+ this.clear();
12693
+ if (this.components.length === 0) {
12694
+ process.stdout.write(this.outputBuffer);
12695
+ if (this.hideCursor)
12696
+ process.stdout.write(SHOW_CURSOR);
12697
+ this.lastLinesAmt = 0;
13124
12698
  return;
13125
12699
  }
13126
- if (i === 0 && list.length === 1) {
13127
- list.length = 0;
13128
- } else {
13129
- list.splice(i, 1);
13130
- }
13131
- }
13132
- emit(ev, code, signal) {
13133
- if (this.emitted[ev]) {
13134
- return false;
13135
- }
13136
- this.emitted[ev] = true;
13137
- let ret = false;
13138
- for (const fn of this.listeners[ev]) {
13139
- ret = fn(code, signal) === true || ret;
13140
- }
13141
- if (ev === "exit") {
13142
- ret = this.emit("afterExit", code, signal) || ret;
13143
- }
13144
- return ret;
12700
+ if (this.hideCursor)
12701
+ this.outputBuffer += HIDE_CURSOR;
12702
+ let output = "";
12703
+ let finished = true;
12704
+ for (let i = 0;i < this.components.length; i++) {
12705
+ const component = this.components[i];
12706
+ output += component.output() + (i !== this.components.length - 1 || component.newLineEnding ? `
12707
+ ` : "");
12708
+ if (!component.finished)
12709
+ finished = false;
12710
+ }
12711
+ this.lastLinesAmt = countLines(output, this.terminalWidth);
12712
+ this.outputBuffer += output;
12713
+ if (finished) {
12714
+ this._reset();
12715
+ this.outputBuffer += SHOW_CURSOR;
12716
+ }
12717
+ process.stdout.write(this.outputBuffer);
13145
12718
  }
13146
- }
13147
-
13148
- class SignalExitBase {
13149
- }
13150
- var signalExitWrap = (handler) => {
13151
- return {
13152
- onExit(cb, opts) {
13153
- return handler.onExit(cb, opts);
13154
- },
13155
- load() {
13156
- return handler.load();
13157
- },
13158
- unload() {
13159
- return handler.unload();
13160
- }
13161
- };
13162
- };
13163
-
13164
- class SignalExitFallback extends SignalExitBase {
13165
- onExit() {
13166
- return () => {};
13167
- }
13168
- load() {}
13169
- unload() {}
13170
- }
13171
-
13172
- class SignalExit extends SignalExitBase {
13173
- #hupSig = process3.platform === "win32" ? "SIGINT" : "SIGHUP";
13174
- #emitter = new Emitter;
13175
- #process;
13176
- #originalProcessEmit;
13177
- #originalProcessReallyExit;
13178
- #sigListeners = {};
13179
- #loaded = false;
13180
- constructor(process3) {
13181
- super();
13182
- this.#process = process3;
13183
- this.#sigListeners = {};
13184
- for (const sig of signals) {
13185
- this.#sigListeners[sig] = () => {
13186
- const listeners = this.#process.listeners(sig);
13187
- let { count } = this.#emitter;
13188
- const p = process3;
13189
- if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") {
13190
- count += p.__signal_exit_emitter__.count;
13191
- }
13192
- if (listeners.length === count) {
13193
- this.unload();
13194
- const ret = this.#emitter.emit("exit", null, sig);
13195
- const s = sig === "SIGHUP" ? this.#hupSig : sig;
13196
- if (!ret)
13197
- process3.kill(process3.pid, s);
13198
- }
12719
+ clear() {
12720
+ for (let i = 0;i < this.lastLinesAmt - 1; i++) {
12721
+ this.outputBuffer += CLEAR_LINE + UP_LINE;
12722
+ }
12723
+ this.outputBuffer += CLEAR_LINE;
12724
+ }
12725
+ _reset() {
12726
+ this.components = [];
12727
+ this.lastLinesAmt = 0;
12728
+ this.terminalWidth = Infinity;
12729
+ this.finishedComponents = 0;
12730
+ }
12731
+ }
12732
+
12733
+ // node_modules/picospinner/dist/index.js
12734
+ import * as util from "node:util";
12735
+ var renderer = new Renderer;
12736
+
12737
+ class Spinner {
12738
+ running = false;
12739
+ text = "";
12740
+ currentSymbol;
12741
+ symbolFormatter;
12742
+ interval;
12743
+ frameIndex = 0;
12744
+ symbols;
12745
+ frames;
12746
+ component = new TextComponent("");
12747
+ colors;
12748
+ constructor(display = "", { disableNewLineEnding, colors, frames = DEFAULT_FRAMES, symbols = {} } = {}) {
12749
+ this.symbols = { ...DEFAULT_SYMBOLS, ...symbols };
12750
+ if (typeof colors === "object") {
12751
+ this.colors = {
12752
+ ...DEFAULT_COLORS,
12753
+ ...colors
13199
12754
  };
13200
- }
13201
- this.#originalProcessReallyExit = process3.reallyExit;
13202
- this.#originalProcessEmit = process3.emit;
13203
- }
13204
- onExit(cb, opts) {
13205
- if (!processOk(this.#process)) {
13206
- return () => {};
13207
- }
13208
- if (this.#loaded === false) {
13209
- this.load();
13210
- }
13211
- const ev = opts?.alwaysLast ? "afterExit" : "exit";
13212
- this.#emitter.on(ev, cb);
13213
- return () => {
13214
- this.#emitter.removeListener(ev, cb);
13215
- if (this.#emitter.listeners["exit"].length === 0 && this.#emitter.listeners["afterExit"].length === 0) {
13216
- this.unload();
13217
- }
13218
- };
13219
- }
13220
- load() {
13221
- if (this.#loaded) {
13222
- return;
13223
- }
13224
- this.#loaded = true;
13225
- this.#emitter.count += 1;
13226
- for (const sig of signals) {
13227
- try {
13228
- const fn = this.#sigListeners[sig];
13229
- if (fn)
13230
- this.#process.on(sig, fn);
13231
- } catch (_) {}
13232
- }
13233
- this.#process.emit = (ev, ...a) => {
13234
- return this.#processEmit(ev, ...a);
13235
- };
13236
- this.#process.reallyExit = (code) => {
13237
- return this.#processReallyExit(code);
13238
- };
13239
- }
13240
- unload() {
13241
- if (!this.#loaded) {
13242
- return;
13243
- }
13244
- this.#loaded = false;
13245
- signals.forEach((sig) => {
13246
- const listener = this.#sigListeners[sig];
13247
- if (!listener) {
13248
- throw new Error("Listener not defined for signal: " + sig);
13249
- }
13250
- try {
13251
- this.#process.removeListener(sig, listener);
13252
- } catch (_) {}
13253
- });
13254
- this.#process.emit = this.#originalProcessEmit;
13255
- this.#process.reallyExit = this.#originalProcessReallyExit;
13256
- this.#emitter.count -= 1;
13257
- }
13258
- #processReallyExit(code) {
13259
- if (!processOk(this.#process)) {
13260
- return 0;
13261
- }
13262
- this.#process.exitCode = code || 0;
13263
- this.#emitter.emit("exit", this.#process.exitCode, null);
13264
- return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);
13265
- }
13266
- #processEmit(ev, ...args) {
13267
- const og = this.#originalProcessEmit;
13268
- if (ev === "exit" && processOk(this.#process)) {
13269
- if (typeof args[0] === "number") {
13270
- this.#process.exitCode = args[0];
13271
- }
13272
- const ret = og.call(this.#process, ev, ...args);
13273
- this.#emitter.emit("exit", this.#process.exitCode, null);
13274
- return ret;
12755
+ } else if (colors !== false) {
12756
+ this.colors = DEFAULT_COLORS;
12757
+ }
12758
+ if (disableNewLineEnding === true)
12759
+ this.component.disableNewLineEnding();
12760
+ if (typeof display === "string")
12761
+ display = { text: display };
12762
+ delete display.symbol;
12763
+ this.setDisplay(display, false);
12764
+ this.frames = frames;
12765
+ this.currentSymbol = frames[0];
12766
+ }
12767
+ start(tickMs = DEFAULT_TICK_MS) {
12768
+ if (this.running)
12769
+ throw new Error("Spinner is already running.");
12770
+ if (this.component.finished)
12771
+ this.component.finished = false;
12772
+ this.interval = setInterval(this.tick.bind(this), tickMs);
12773
+ this.running = true;
12774
+ this.currentSymbol = this.frames[0];
12775
+ this.tick();
12776
+ renderer.addComponent(this.component);
12777
+ this.addListeners();
12778
+ }
12779
+ tick() {
12780
+ this.currentSymbol = this.format(this.frames[this.frameIndex++], "spinner");
12781
+ if (this.frameIndex === this.frames.length)
12782
+ this.frameIndex = 0;
12783
+ this.refresh();
12784
+ }
12785
+ onProcessExit = (signal) => {
12786
+ this.stop();
12787
+ let signalCode;
12788
+ if (signal === "SIGTERM") {
12789
+ signalCode = 15 + 128;
12790
+ } else if (signal === "SIGINT") {
12791
+ signalCode = 2 + 128;
13275
12792
  } else {
13276
- return og.call(this.#process, ev, ...args);
12793
+ signalCode = Number(signal);
13277
12794
  }
13278
- }
13279
- }
13280
- var process3 = globalThis.process;
13281
- var {
13282
- onExit,
13283
- load,
13284
- unload
13285
- } = signalExitWrap(processOk(process3) ? new SignalExit(process3) : new SignalExitFallback);
13286
-
13287
- // node_modules/restore-cursor/index.js
13288
- var terminal = process4.stderr.isTTY ? process4.stderr : process4.stdout.isTTY ? process4.stdout : undefined;
13289
- var restoreCursor = terminal ? onetime_default(() => {
13290
- onExit(() => {
13291
- terminal.write("\x1B[?25h");
13292
- }, { alwaysLast: true });
13293
- }) : () => {};
13294
- var restore_cursor_default = restoreCursor;
13295
-
13296
- // node_modules/cli-cursor/index.js
13297
- var isHidden = false;
13298
- var cliCursor = {};
13299
- cliCursor.show = (writableStream = process5.stderr) => {
13300
- if (!writableStream.isTTY) {
13301
- return;
13302
- }
13303
- isHidden = false;
13304
- writableStream.write("\x1B[?25h");
13305
- };
13306
- cliCursor.hide = (writableStream = process5.stderr) => {
13307
- if (!writableStream.isTTY) {
13308
- return;
13309
- }
13310
- restore_cursor_default();
13311
- isHidden = true;
13312
- writableStream.write("\x1B[?25l");
13313
- };
13314
- cliCursor.toggle = (force, writableStream) => {
13315
- if (force !== undefined) {
13316
- isHidden = force;
13317
- }
13318
- if (isHidden) {
13319
- cliCursor.show(writableStream);
13320
- } else {
13321
- cliCursor.hide(writableStream);
13322
- }
13323
- };
13324
- var cli_cursor_default = cliCursor;
13325
- // node_modules/cli-spinners/spinners.json
13326
- var spinners_default = {
13327
- dots: {
13328
- interval: 80,
13329
- frames: [
13330
- "⠋",
13331
- "⠙",
13332
- "⠹",
13333
- "⠸",
13334
- "⠼",
13335
- "⠴",
13336
- "⠦",
13337
- "⠧",
13338
- "⠇",
13339
- "⠏"
13340
- ]
13341
- },
13342
- dots2: {
13343
- interval: 80,
13344
- frames: [
13345
- "⣾",
13346
- "⣽",
13347
- "⣻",
13348
- "⢿",
13349
- "⡿",
13350
- "⣟",
13351
- "⣯",
13352
- "⣷"
13353
- ]
13354
- },
13355
- dots3: {
13356
- interval: 80,
13357
- frames: [
13358
- "⠋",
13359
- "⠙",
13360
- "⠚",
13361
- "⠞",
13362
- "⠖",
13363
- "⠦",
13364
- "⠴",
13365
- "⠲",
13366
- "⠳",
13367
- "⠓"
13368
- ]
13369
- },
13370
- dots4: {
13371
- interval: 80,
13372
- frames: [
13373
- "⠄",
13374
- "⠆",
13375
- "⠇",
13376
- "⠋",
13377
- "⠙",
13378
- "⠸",
13379
- "⠰",
13380
- "⠠",
13381
- "⠰",
13382
- "⠸",
13383
- "⠙",
13384
- "⠋",
13385
- "⠇",
13386
- "⠆"
13387
- ]
13388
- },
13389
- dots5: {
13390
- interval: 80,
13391
- frames: [
13392
- "⠋",
13393
- "⠙",
13394
- "⠚",
13395
- "⠒",
13396
- "⠂",
13397
- "⠂",
13398
- "⠒",
13399
- "⠲",
13400
- "⠴",
13401
- "⠦",
13402
- "⠖",
13403
- "⠒",
13404
- "⠐",
13405
- "⠐",
13406
- "⠒",
13407
- "⠓",
13408
- "⠋"
13409
- ]
13410
- },
13411
- dots6: {
13412
- interval: 80,
13413
- frames: [
13414
- "⠁",
13415
- "⠉",
13416
- "⠙",
13417
- "⠚",
13418
- "⠒",
13419
- "⠂",
13420
- "⠂",
13421
- "⠒",
13422
- "⠲",
13423
- "⠴",
13424
- "⠤",
13425
- "⠄",
13426
- "⠄",
13427
- "⠤",
13428
- "⠴",
13429
- "⠲",
13430
- "⠒",
13431
- "⠂",
13432
- "⠂",
13433
- "⠒",
13434
- "⠚",
13435
- "⠙",
13436
- "⠉",
13437
- "⠁"
13438
- ]
13439
- },
13440
- dots7: {
13441
- interval: 80,
13442
- frames: [
13443
- "⠈",
13444
- "⠉",
13445
- "⠋",
13446
- "⠓",
13447
- "⠒",
13448
- "⠐",
13449
- "⠐",
13450
- "⠒",
13451
- "⠖",
13452
- "⠦",
13453
- "⠤",
13454
- "⠠",
13455
- "⠠",
13456
- "⠤",
13457
- "⠦",
13458
- "⠖",
13459
- "⠒",
13460
- "⠐",
13461
- "⠐",
13462
- "⠒",
13463
- "⠓",
13464
- "⠋",
13465
- "⠉",
13466
- "⠈"
13467
- ]
13468
- },
13469
- dots8: {
13470
- interval: 80,
13471
- frames: [
13472
- "⠁",
13473
- "⠁",
13474
- "⠉",
13475
- "⠙",
13476
- "⠚",
13477
- "⠒",
13478
- "⠂",
13479
- "⠂",
13480
- "⠒",
13481
- "⠲",
13482
- "⠴",
13483
- "⠤",
13484
- "⠄",
13485
- "⠄",
13486
- "⠤",
13487
- "⠠",
13488
- "⠠",
13489
- "⠤",
13490
- "⠦",
13491
- "⠖",
13492
- "⠒",
13493
- "⠐",
13494
- "⠐",
13495
- "⠒",
13496
- "⠓",
13497
- "⠋",
13498
- "⠉",
13499
- "⠈",
13500
- "⠈"
13501
- ]
13502
- },
13503
- dots9: {
13504
- interval: 80,
13505
- frames: [
13506
- "⢹",
13507
- "⢺",
13508
- "⢼",
13509
- "⣸",
13510
- "⣇",
13511
- "⡧",
13512
- "⡗",
13513
- "⡏"
13514
- ]
13515
- },
13516
- dots10: {
13517
- interval: 80,
13518
- frames: [
13519
- "⢄",
13520
- "⢂",
13521
- "⢁",
13522
- "⡁",
13523
- "⡈",
13524
- "⡐",
13525
- "⡠"
13526
- ]
13527
- },
13528
- dots11: {
13529
- interval: 100,
13530
- frames: [
13531
- "⠁",
13532
- "⠂",
13533
- "⠄",
13534
- "⡀",
13535
- "⢀",
13536
- "⠠",
13537
- "⠐",
13538
- "⠈"
13539
- ]
13540
- },
13541
- dots12: {
13542
- interval: 80,
13543
- frames: [
13544
- "⢀⠀",
13545
- "⡀⠀",
13546
- "⠄⠀",
13547
- "⢂⠀",
13548
- "⡂⠀",
13549
- "⠅⠀",
13550
- "⢃⠀",
13551
- "⡃⠀",
13552
- "⠍⠀",
13553
- "⢋⠀",
13554
- "⡋⠀",
13555
- "⠍⠁",
13556
- "⢋⠁",
13557
- "⡋⠁",
13558
- "⠍⠉",
13559
- "⠋⠉",
13560
- "⠋⠉",
13561
- "⠉⠙",
13562
- "⠉⠙",
13563
- "⠉⠩",
13564
- "⠈⢙",
13565
- "⠈⡙",
13566
- "⢈⠩",
13567
- "⡀⢙",
13568
- "⠄⡙",
13569
- "⢂⠩",
13570
- "⡂⢘",
13571
- "⠅⡘",
13572
- "⢃⠨",
13573
- "⡃⢐",
13574
- "⠍⡐",
13575
- "⢋⠠",
13576
- "⡋⢀",
13577
- "⠍⡁",
13578
- "⢋⠁",
13579
- "⡋⠁",
13580
- "⠍⠉",
13581
- "⠋⠉",
13582
- "⠋⠉",
13583
- "⠉⠙",
13584
- "⠉⠙",
13585
- "⠉⠩",
13586
- "⠈⢙",
13587
- "⠈⡙",
13588
- "⠈⠩",
13589
- "⠀⢙",
13590
- "⠀⡙",
13591
- "⠀⠩",
13592
- "⠀⢘",
13593
- "⠀⡘",
13594
- "⠀⠨",
13595
- "⠀⢐",
13596
- "⠀⡐",
13597
- "⠀⠠",
13598
- "⠀⢀",
13599
- "⠀⡀"
13600
- ]
13601
- },
13602
- dots13: {
13603
- interval: 80,
13604
- frames: [
13605
- "⣼",
13606
- "⣹",
13607
- "⢻",
13608
- "⠿",
13609
- "⡟",
13610
- "⣏",
13611
- "⣧",
13612
- "⣶"
13613
- ]
13614
- },
13615
- dots14: {
13616
- interval: 80,
13617
- frames: [
13618
- "⠉⠉",
13619
- "⠈⠙",
13620
- "⠀⠹",
13621
- "⠀⢸",
13622
- "⠀⣰",
13623
- "⢀⣠",
13624
- "⣀⣀",
13625
- "⣄⡀",
13626
- "⣆⠀",
13627
- "⡇⠀",
13628
- "⠏⠀",
13629
- "⠋⠁"
13630
- ]
13631
- },
13632
- dots8Bit: {
13633
- interval: 80,
13634
- frames: [
13635
- "⠀",
13636
- "⠁",
13637
- "⠂",
13638
- "⠃",
13639
- "⠄",
13640
- "⠅",
13641
- "⠆",
13642
- "⠇",
13643
- "⡀",
13644
- "⡁",
13645
- "⡂",
13646
- "⡃",
13647
- "⡄",
13648
- "⡅",
13649
- "⡆",
13650
- "⡇",
13651
- "⠈",
13652
- "⠉",
13653
- "⠊",
13654
- "⠋",
13655
- "⠌",
13656
- "⠍",
13657
- "⠎",
13658
- "⠏",
13659
- "⡈",
13660
- "⡉",
13661
- "⡊",
13662
- "⡋",
13663
- "⡌",
13664
- "⡍",
13665
- "⡎",
13666
- "⡏",
13667
- "⠐",
13668
- "⠑",
13669
- "⠒",
13670
- "⠓",
13671
- "⠔",
13672
- "⠕",
13673
- "⠖",
13674
- "⠗",
13675
- "⡐",
13676
- "⡑",
13677
- "⡒",
13678
- "⡓",
13679
- "⡔",
13680
- "⡕",
13681
- "⡖",
13682
- "⡗",
13683
- "⠘",
13684
- "⠙",
13685
- "⠚",
13686
- "⠛",
13687
- "⠜",
13688
- "⠝",
13689
- "⠞",
13690
- "⠟",
13691
- "⡘",
13692
- "⡙",
13693
- "⡚",
13694
- "⡛",
13695
- "⡜",
13696
- "⡝",
13697
- "⡞",
13698
- "⡟",
13699
- "⠠",
13700
- "⠡",
13701
- "⠢",
13702
- "⠣",
13703
- "⠤",
13704
- "⠥",
13705
- "⠦",
13706
- "⠧",
13707
- "⡠",
13708
- "⡡",
13709
- "⡢",
13710
- "⡣",
13711
- "⡤",
13712
- "⡥",
13713
- "⡦",
13714
- "⡧",
13715
- "⠨",
13716
- "⠩",
13717
- "⠪",
13718
- "⠫",
13719
- "⠬",
13720
- "⠭",
13721
- "⠮",
13722
- "⠯",
13723
- "⡨",
13724
- "⡩",
13725
- "⡪",
13726
- "⡫",
13727
- "⡬",
13728
- "⡭",
13729
- "⡮",
13730
- "⡯",
13731
- "⠰",
13732
- "⠱",
13733
- "⠲",
13734
- "⠳",
13735
- "⠴",
13736
- "⠵",
13737
- "⠶",
13738
- "⠷",
13739
- "⡰",
13740
- "⡱",
13741
- "⡲",
13742
- "⡳",
13743
- "⡴",
13744
- "⡵",
13745
- "⡶",
13746
- "⡷",
13747
- "⠸",
13748
- "⠹",
13749
- "⠺",
13750
- "⠻",
13751
- "⠼",
13752
- "⠽",
13753
- "⠾",
13754
- "⠿",
13755
- "⡸",
13756
- "⡹",
13757
- "⡺",
13758
- "⡻",
13759
- "⡼",
13760
- "⡽",
13761
- "⡾",
13762
- "⡿",
13763
- "⢀",
13764
- "⢁",
13765
- "⢂",
13766
- "⢃",
13767
- "⢄",
13768
- "⢅",
13769
- "⢆",
13770
- "⢇",
13771
- "⣀",
13772
- "⣁",
13773
- "⣂",
13774
- "⣃",
13775
- "⣄",
13776
- "⣅",
13777
- "⣆",
13778
- "⣇",
13779
- "⢈",
13780
- "⢉",
13781
- "⢊",
13782
- "⢋",
13783
- "⢌",
13784
- "⢍",
13785
- "⢎",
13786
- "⢏",
13787
- "⣈",
13788
- "⣉",
13789
- "⣊",
13790
- "⣋",
13791
- "⣌",
13792
- "⣍",
13793
- "⣎",
13794
- "⣏",
13795
- "⢐",
13796
- "⢑",
13797
- "⢒",
13798
- "⢓",
13799
- "⢔",
13800
- "⢕",
13801
- "⢖",
13802
- "⢗",
13803
- "⣐",
13804
- "⣑",
13805
- "⣒",
13806
- "⣓",
13807
- "⣔",
13808
- "⣕",
13809
- "⣖",
13810
- "⣗",
13811
- "⢘",
13812
- "⢙",
13813
- "⢚",
13814
- "⢛",
13815
- "⢜",
13816
- "⢝",
13817
- "⢞",
13818
- "⢟",
13819
- "⣘",
13820
- "⣙",
13821
- "⣚",
13822
- "⣛",
13823
- "⣜",
13824
- "⣝",
13825
- "⣞",
13826
- "⣟",
13827
- "⢠",
13828
- "⢡",
13829
- "⢢",
13830
- "⢣",
13831
- "⢤",
13832
- "⢥",
13833
- "⢦",
13834
- "⢧",
13835
- "⣠",
13836
- "⣡",
13837
- "⣢",
13838
- "⣣",
13839
- "⣤",
13840
- "⣥",
13841
- "⣦",
13842
- "⣧",
13843
- "⢨",
13844
- "⢩",
13845
- "⢪",
13846
- "⢫",
13847
- "⢬",
13848
- "⢭",
13849
- "⢮",
13850
- "⢯",
13851
- "⣨",
13852
- "⣩",
13853
- "⣪",
13854
- "⣫",
13855
- "⣬",
13856
- "⣭",
13857
- "⣮",
13858
- "⣯",
13859
- "⢰",
13860
- "⢱",
13861
- "⢲",
13862
- "⢳",
13863
- "⢴",
13864
- "⢵",
13865
- "⢶",
13866
- "⢷",
13867
- "⣰",
13868
- "⣱",
13869
- "⣲",
13870
- "⣳",
13871
- "⣴",
13872
- "⣵",
13873
- "⣶",
13874
- "⣷",
13875
- "⢸",
13876
- "⢹",
13877
- "⢺",
13878
- "⢻",
13879
- "⢼",
13880
- "⢽",
13881
- "⢾",
13882
- "⢿",
13883
- "⣸",
13884
- "⣹",
13885
- "⣺",
13886
- "⣻",
13887
- "⣼",
13888
- "⣽",
13889
- "⣾",
13890
- "⣿"
13891
- ]
13892
- },
13893
- dotsCircle: {
13894
- interval: 80,
13895
- frames: [
13896
- "⢎ ",
13897
- "⠎⠁",
13898
- "⠊⠑",
13899
- "⠈⠱",
13900
- " ⡱",
13901
- "⢀⡰",
13902
- "⢄⡠",
13903
- "⢆⡀"
13904
- ]
13905
- },
13906
- sand: {
13907
- interval: 80,
13908
- frames: [
13909
- "⠁",
13910
- "⠂",
13911
- "⠄",
13912
- "⡀",
13913
- "⡈",
13914
- "⡐",
13915
- "⡠",
13916
- "⣀",
13917
- "⣁",
13918
- "⣂",
13919
- "⣄",
13920
- "⣌",
13921
- "⣔",
13922
- "⣤",
13923
- "⣥",
13924
- "⣦",
13925
- "⣮",
13926
- "⣶",
13927
- "⣷",
13928
- "⣿",
13929
- "⡿",
13930
- "⠿",
13931
- "⢟",
13932
- "⠟",
13933
- "⡛",
13934
- "⠛",
13935
- "⠫",
13936
- "⢋",
13937
- "⠋",
13938
- "⠍",
13939
- "⡉",
13940
- "⠉",
13941
- "⠑",
13942
- "⠡",
13943
- "⢁"
13944
- ]
13945
- },
13946
- line: {
13947
- interval: 130,
13948
- frames: [
13949
- "-",
13950
- "\\",
13951
- "|",
13952
- "/"
13953
- ]
13954
- },
13955
- line2: {
13956
- interval: 100,
13957
- frames: [
13958
- "⠂",
13959
- "-",
13960
- "–",
13961
- "—",
13962
- "–",
13963
- "-"
13964
- ]
13965
- },
13966
- rollingLine: {
13967
- interval: 80,
13968
- frames: [
13969
- "/ ",
13970
- " - ",
13971
- " \\ ",
13972
- " |",
13973
- " |",
13974
- " \\ ",
13975
- " - ",
13976
- "/ "
13977
- ]
13978
- },
13979
- pipe: {
13980
- interval: 100,
13981
- frames: [
13982
- "┤",
13983
- "┘",
13984
- "┴",
13985
- "└",
13986
- "├",
13987
- "┌",
13988
- "┬",
13989
- "┐"
13990
- ]
13991
- },
13992
- simpleDots: {
13993
- interval: 400,
13994
- frames: [
13995
- ". ",
13996
- ".. ",
13997
- "...",
13998
- " "
13999
- ]
14000
- },
14001
- simpleDotsScrolling: {
14002
- interval: 200,
14003
- frames: [
14004
- ". ",
14005
- ".. ",
14006
- "...",
14007
- " ..",
14008
- " .",
14009
- " "
14010
- ]
14011
- },
14012
- star: {
14013
- interval: 70,
14014
- frames: [
14015
- "✶",
14016
- "✸",
14017
- "✹",
14018
- "✺",
14019
- "✹",
14020
- "✷"
14021
- ]
14022
- },
14023
- star2: {
14024
- interval: 80,
14025
- frames: [
14026
- "+",
14027
- "x",
14028
- "*"
14029
- ]
14030
- },
14031
- flip: {
14032
- interval: 70,
14033
- frames: [
14034
- "_",
14035
- "_",
14036
- "_",
14037
- "-",
14038
- "`",
14039
- "`",
14040
- "'",
14041
- "´",
14042
- "-",
14043
- "_",
14044
- "_",
14045
- "_"
14046
- ]
14047
- },
14048
- hamburger: {
14049
- interval: 100,
14050
- frames: [
14051
- "☱",
14052
- "☲",
14053
- "☴"
14054
- ]
14055
- },
14056
- growVertical: {
14057
- interval: 120,
14058
- frames: [
14059
- "▁",
14060
- "▃",
14061
- "▄",
14062
- "▅",
14063
- "▆",
14064
- "▇",
14065
- "▆",
14066
- "▅",
14067
- "▄",
14068
- "▃"
14069
- ]
14070
- },
14071
- growHorizontal: {
14072
- interval: 120,
14073
- frames: [
14074
- "▏",
14075
- "▎",
14076
- "▍",
14077
- "▌",
14078
- "▋",
14079
- "▊",
14080
- "▉",
14081
- "▊",
14082
- "▋",
14083
- "▌",
14084
- "▍",
14085
- "▎"
14086
- ]
14087
- },
14088
- balloon: {
14089
- interval: 140,
14090
- frames: [
14091
- " ",
14092
- ".",
14093
- "o",
14094
- "O",
14095
- "@",
14096
- "*",
14097
- " "
14098
- ]
14099
- },
14100
- balloon2: {
14101
- interval: 120,
14102
- frames: [
14103
- ".",
14104
- "o",
14105
- "O",
14106
- "°",
14107
- "O",
14108
- "o",
14109
- "."
14110
- ]
14111
- },
14112
- noise: {
14113
- interval: 100,
14114
- frames: [
14115
- "▓",
14116
- "▒",
14117
- "░"
14118
- ]
14119
- },
14120
- bounce: {
14121
- interval: 120,
14122
- frames: [
14123
- "⠁",
14124
- "⠂",
14125
- "⠄",
14126
- "⠂"
14127
- ]
14128
- },
14129
- boxBounce: {
14130
- interval: 120,
14131
- frames: [
14132
- "▖",
14133
- "▘",
14134
- "▝",
14135
- "▗"
14136
- ]
14137
- },
14138
- boxBounce2: {
14139
- interval: 100,
14140
- frames: [
14141
- "▌",
14142
- "▀",
14143
- "▐",
14144
- "▄"
14145
- ]
14146
- },
14147
- triangle: {
14148
- interval: 50,
14149
- frames: [
14150
- "◢",
14151
- "◣",
14152
- "◤",
14153
- "◥"
14154
- ]
14155
- },
14156
- binary: {
14157
- interval: 80,
14158
- frames: [
14159
- "010010",
14160
- "001100",
14161
- "100101",
14162
- "111010",
14163
- "111101",
14164
- "010111",
14165
- "101011",
14166
- "111000",
14167
- "110011",
14168
- "110101"
14169
- ]
14170
- },
14171
- arc: {
14172
- interval: 100,
14173
- frames: [
14174
- "◜",
14175
- "◠",
14176
- "◝",
14177
- "◞",
14178
- "◡",
14179
- "◟"
14180
- ]
14181
- },
14182
- circle: {
14183
- interval: 120,
14184
- frames: [
14185
- "◡",
14186
- "⊙",
14187
- "◠"
14188
- ]
14189
- },
14190
- squareCorners: {
14191
- interval: 180,
14192
- frames: [
14193
- "◰",
14194
- "◳",
14195
- "◲",
14196
- "◱"
14197
- ]
14198
- },
14199
- circleQuarters: {
14200
- interval: 120,
14201
- frames: [
14202
- "◴",
14203
- "◷",
14204
- "◶",
14205
- "◵"
14206
- ]
14207
- },
14208
- circleHalves: {
14209
- interval: 50,
14210
- frames: [
14211
- "◐",
14212
- "◓",
14213
- "◑",
14214
- "◒"
14215
- ]
14216
- },
14217
- squish: {
14218
- interval: 100,
14219
- frames: [
14220
- "╫",
14221
- "╪"
14222
- ]
14223
- },
14224
- toggle: {
14225
- interval: 250,
14226
- frames: [
14227
- "⊶",
14228
- "⊷"
14229
- ]
14230
- },
14231
- toggle2: {
14232
- interval: 80,
14233
- frames: [
14234
- "▫",
14235
- "▪"
14236
- ]
14237
- },
14238
- toggle3: {
14239
- interval: 120,
14240
- frames: [
14241
- "□",
14242
- "■"
14243
- ]
14244
- },
14245
- toggle4: {
14246
- interval: 100,
14247
- frames: [
14248
- "■",
14249
- "□",
14250
- "▪",
14251
- "▫"
14252
- ]
14253
- },
14254
- toggle5: {
14255
- interval: 100,
14256
- frames: [
14257
- "▮",
14258
- "▯"
14259
- ]
14260
- },
14261
- toggle6: {
14262
- interval: 300,
14263
- frames: [
14264
- "ဝ",
14265
- "၀"
14266
- ]
14267
- },
14268
- toggle7: {
14269
- interval: 80,
14270
- frames: [
14271
- "⦾",
14272
- "⦿"
14273
- ]
14274
- },
14275
- toggle8: {
14276
- interval: 100,
14277
- frames: [
14278
- "◍",
14279
- "◌"
14280
- ]
14281
- },
14282
- toggle9: {
14283
- interval: 100,
14284
- frames: [
14285
- "◉",
14286
- "◎"
14287
- ]
14288
- },
14289
- toggle10: {
14290
- interval: 100,
14291
- frames: [
14292
- "㊂",
14293
- "㊀",
14294
- "㊁"
14295
- ]
14296
- },
14297
- toggle11: {
14298
- interval: 50,
14299
- frames: [
14300
- "⧇",
14301
- "⧆"
14302
- ]
14303
- },
14304
- toggle12: {
14305
- interval: 120,
14306
- frames: [
14307
- "☗",
14308
- "☖"
14309
- ]
14310
- },
14311
- toggle13: {
14312
- interval: 80,
14313
- frames: [
14314
- "=",
14315
- "*",
14316
- "-"
14317
- ]
14318
- },
14319
- arrow: {
14320
- interval: 100,
14321
- frames: [
14322
- "←",
14323
- "↖",
14324
- "↑",
14325
- "↗",
14326
- "→",
14327
- "↘",
14328
- "↓",
14329
- "↙"
14330
- ]
14331
- },
14332
- arrow2: {
14333
- interval: 80,
14334
- frames: [
14335
- "⬆️ ",
14336
- "↗️ ",
14337
- "➡️ ",
14338
- "↘️ ",
14339
- "⬇️ ",
14340
- "↙️ ",
14341
- "⬅️ ",
14342
- "↖️ "
14343
- ]
14344
- },
14345
- arrow3: {
14346
- interval: 120,
14347
- frames: [
14348
- "▹▹▹▹▹",
14349
- "▸▹▹▹▹",
14350
- "▹▸▹▹▹",
14351
- "▹▹▸▹▹",
14352
- "▹▹▹▸▹",
14353
- "▹▹▹▹▸"
14354
- ]
14355
- },
14356
- bouncingBar: {
14357
- interval: 80,
14358
- frames: [
14359
- "[ ]",
14360
- "[= ]",
14361
- "[== ]",
14362
- "[=== ]",
14363
- "[====]",
14364
- "[ ===]",
14365
- "[ ==]",
14366
- "[ =]",
14367
- "[ ]",
14368
- "[ =]",
14369
- "[ ==]",
14370
- "[ ===]",
14371
- "[====]",
14372
- "[=== ]",
14373
- "[== ]",
14374
- "[= ]"
14375
- ]
14376
- },
14377
- bouncingBall: {
14378
- interval: 80,
14379
- frames: [
14380
- "( ● )",
14381
- "( ● )",
14382
- "( ● )",
14383
- "( ● )",
14384
- "( ●)",
14385
- "( ● )",
14386
- "( ● )",
14387
- "( ● )",
14388
- "( ● )",
14389
- "(● )"
14390
- ]
14391
- },
14392
- smiley: {
14393
- interval: 200,
14394
- frames: [
14395
- "😄 ",
14396
- "😝 "
14397
- ]
14398
- },
14399
- monkey: {
14400
- interval: 300,
14401
- frames: [
14402
- "🙈 ",
14403
- "🙈 ",
14404
- "🙉 ",
14405
- "🙊 "
14406
- ]
14407
- },
14408
- hearts: {
14409
- interval: 100,
14410
- frames: [
14411
- "💛 ",
14412
- "💙 ",
14413
- "💜 ",
14414
- "💚 ",
14415
- "💗 "
14416
- ]
14417
- },
14418
- clock: {
14419
- interval: 100,
14420
- frames: [
14421
- "🕛 ",
14422
- "🕐 ",
14423
- "🕑 ",
14424
- "🕒 ",
14425
- "🕓 ",
14426
- "🕔 ",
14427
- "🕕 ",
14428
- "🕖 ",
14429
- "🕗 ",
14430
- "🕘 ",
14431
- "🕙 ",
14432
- "🕚 "
14433
- ]
14434
- },
14435
- earth: {
14436
- interval: 180,
14437
- frames: [
14438
- "🌍 ",
14439
- "🌎 ",
14440
- "🌏 "
14441
- ]
14442
- },
14443
- material: {
14444
- interval: 17,
14445
- frames: [
14446
- "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
14447
- "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
14448
- "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
14449
- "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
14450
- "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
14451
- "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
14452
- "███████▁▁▁▁▁▁▁▁▁▁▁▁▁",
14453
- "████████▁▁▁▁▁▁▁▁▁▁▁▁",
14454
- "█████████▁▁▁▁▁▁▁▁▁▁▁",
14455
- "█████████▁▁▁▁▁▁▁▁▁▁▁",
14456
- "██████████▁▁▁▁▁▁▁▁▁▁",
14457
- "███████████▁▁▁▁▁▁▁▁▁",
14458
- "█████████████▁▁▁▁▁▁▁",
14459
- "██████████████▁▁▁▁▁▁",
14460
- "██████████████▁▁▁▁▁▁",
14461
- "▁██████████████▁▁▁▁▁",
14462
- "▁██████████████▁▁▁▁▁",
14463
- "▁██████████████▁▁▁▁▁",
14464
- "▁▁██████████████▁▁▁▁",
14465
- "▁▁▁██████████████▁▁▁",
14466
- "▁▁▁▁█████████████▁▁▁",
14467
- "▁▁▁▁██████████████▁▁",
14468
- "▁▁▁▁██████████████▁▁",
14469
- "▁▁▁▁▁██████████████▁",
14470
- "▁▁▁▁▁██████████████▁",
14471
- "▁▁▁▁▁██████████████▁",
14472
- "▁▁▁▁▁▁██████████████",
14473
- "▁▁▁▁▁▁██████████████",
14474
- "▁▁▁▁▁▁▁█████████████",
14475
- "▁▁▁▁▁▁▁█████████████",
14476
- "▁▁▁▁▁▁▁▁████████████",
14477
- "▁▁▁▁▁▁▁▁████████████",
14478
- "▁▁▁▁▁▁▁▁▁███████████",
14479
- "▁▁▁▁▁▁▁▁▁███████████",
14480
- "▁▁▁▁▁▁▁▁▁▁██████████",
14481
- "▁▁▁▁▁▁▁▁▁▁██████████",
14482
- "▁▁▁▁▁▁▁▁▁▁▁▁████████",
14483
- "▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
14484
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████",
14485
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
14486
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
14487
- "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
14488
- "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
14489
- "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
14490
- "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
14491
- "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
14492
- "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
14493
- "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
14494
- "██████▁▁▁▁▁▁▁▁▁▁▁▁▁█",
14495
- "████████▁▁▁▁▁▁▁▁▁▁▁▁",
14496
- "█████████▁▁▁▁▁▁▁▁▁▁▁",
14497
- "█████████▁▁▁▁▁▁▁▁▁▁▁",
14498
- "█████████▁▁▁▁▁▁▁▁▁▁▁",
14499
- "█████████▁▁▁▁▁▁▁▁▁▁▁",
14500
- "███████████▁▁▁▁▁▁▁▁▁",
14501
- "████████████▁▁▁▁▁▁▁▁",
14502
- "████████████▁▁▁▁▁▁▁▁",
14503
- "██████████████▁▁▁▁▁▁",
14504
- "██████████████▁▁▁▁▁▁",
14505
- "▁██████████████▁▁▁▁▁",
14506
- "▁██████████████▁▁▁▁▁",
14507
- "▁▁▁█████████████▁▁▁▁",
14508
- "▁▁▁▁▁████████████▁▁▁",
14509
- "▁▁▁▁▁████████████▁▁▁",
14510
- "▁▁▁▁▁▁███████████▁▁▁",
14511
- "▁▁▁▁▁▁▁▁█████████▁▁▁",
14512
- "▁▁▁▁▁▁▁▁█████████▁▁▁",
14513
- "▁▁▁▁▁▁▁▁▁█████████▁▁",
14514
- "▁▁▁▁▁▁▁▁▁█████████▁▁",
14515
- "▁▁▁▁▁▁▁▁▁▁█████████▁",
14516
- "▁▁▁▁▁▁▁▁▁▁▁████████▁",
14517
- "▁▁▁▁▁▁▁▁▁▁▁████████▁",
14518
- "▁▁▁▁▁▁▁▁▁▁▁▁███████▁",
14519
- "▁▁▁▁▁▁▁▁▁▁▁▁███████▁",
14520
- "▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
14521
- "▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
14522
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
14523
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
14524
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
14525
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
14526
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
14527
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
14528
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
14529
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
14530
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
14531
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
14532
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
14533
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
14534
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
14535
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
14536
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
14537
- "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁"
14538
- ]
14539
- },
14540
- moon: {
14541
- interval: 80,
14542
- frames: [
14543
- "🌑 ",
14544
- "🌒 ",
14545
- "🌓 ",
14546
- "🌔 ",
14547
- "🌕 ",
14548
- "🌖 ",
14549
- "🌗 ",
14550
- "🌘 "
14551
- ]
14552
- },
14553
- runner: {
14554
- interval: 140,
14555
- frames: [
14556
- "🚶 ",
14557
- "🏃 "
14558
- ]
14559
- },
14560
- pong: {
14561
- interval: 80,
14562
- frames: [
14563
- "▐⠂ ▌",
14564
- "▐⠈ ▌",
14565
- "▐ ⠂ ▌",
14566
- "▐ ⠠ ▌",
14567
- "▐ ⡀ ▌",
14568
- "▐ ⠠ ▌",
14569
- "▐ ⠂ ▌",
14570
- "▐ ⠈ ▌",
14571
- "▐ ⠂ ▌",
14572
- "▐ ⠠ ▌",
14573
- "▐ ⡀ ▌",
14574
- "▐ ⠠ ▌",
14575
- "▐ ⠂ ▌",
14576
- "▐ ⠈ ▌",
14577
- "▐ ⠂▌",
14578
- "▐ ⠠▌",
14579
- "▐ ⡀▌",
14580
- "▐ ⠠ ▌",
14581
- "▐ ⠂ ▌",
14582
- "▐ ⠈ ▌",
14583
- "▐ ⠂ ▌",
14584
- "▐ ⠠ ▌",
14585
- "▐ ⡀ ▌",
14586
- "▐ ⠠ ▌",
14587
- "▐ ⠂ ▌",
14588
- "▐ ⠈ ▌",
14589
- "▐ ⠂ ▌",
14590
- "▐ ⠠ ▌",
14591
- "▐ ⡀ ▌",
14592
- "▐⠠ ▌"
14593
- ]
14594
- },
14595
- shark: {
14596
- interval: 120,
14597
- frames: [
14598
- "▐|\\____________▌",
14599
- "▐_|\\___________▌",
14600
- "▐__|\\__________▌",
14601
- "▐___|\\_________▌",
14602
- "▐____|\\________▌",
14603
- "▐_____|\\_______▌",
14604
- "▐______|\\______▌",
14605
- "▐_______|\\_____▌",
14606
- "▐________|\\____▌",
14607
- "▐_________|\\___▌",
14608
- "▐__________|\\__▌",
14609
- "▐___________|\\_▌",
14610
- "▐____________|\\▌",
14611
- "▐____________/|▌",
14612
- "▐___________/|_▌",
14613
- "▐__________/|__▌",
14614
- "▐_________/|___▌",
14615
- "▐________/|____▌",
14616
- "▐_______/|_____▌",
14617
- "▐______/|______▌",
14618
- "▐_____/|_______▌",
14619
- "▐____/|________▌",
14620
- "▐___/|_________▌",
14621
- "▐__/|__________▌",
14622
- "▐_/|___________▌",
14623
- "▐/|____________▌"
14624
- ]
14625
- },
14626
- dqpb: {
14627
- interval: 100,
14628
- frames: [
14629
- "d",
14630
- "q",
14631
- "p",
14632
- "b"
14633
- ]
14634
- },
14635
- weather: {
14636
- interval: 100,
14637
- frames: [
14638
- "☀️ ",
14639
- "☀️ ",
14640
- "☀️ ",
14641
- "🌤 ",
14642
- "⛅️ ",
14643
- "🌥 ",
14644
- "☁️ ",
14645
- "🌧 ",
14646
- "🌨 ",
14647
- "🌧 ",
14648
- "🌨 ",
14649
- "🌧 ",
14650
- "🌨 ",
14651
- "⛈ ",
14652
- "🌨 ",
14653
- "🌧 ",
14654
- "🌨 ",
14655
- "☁️ ",
14656
- "🌥 ",
14657
- "⛅️ ",
14658
- "🌤 ",
14659
- "☀️ ",
14660
- "☀️ "
14661
- ]
14662
- },
14663
- christmas: {
14664
- interval: 400,
14665
- frames: [
14666
- "🌲",
14667
- "🎄"
14668
- ]
14669
- },
14670
- grenade: {
14671
- interval: 80,
14672
- frames: [
14673
- "، ",
14674
- "′ ",
14675
- " ´ ",
14676
- " ‾ ",
14677
- " ⸌",
14678
- " ⸊",
14679
- " |",
14680
- " ⁎",
14681
- " ⁕",
14682
- " ෴ ",
14683
- " ⁓",
14684
- " ",
14685
- " ",
14686
- " "
14687
- ]
14688
- },
14689
- point: {
14690
- interval: 125,
14691
- frames: [
14692
- "∙∙∙",
14693
- "●∙∙",
14694
- "∙●∙",
14695
- "∙∙●",
14696
- "∙∙∙"
14697
- ]
14698
- },
14699
- layer: {
14700
- interval: 150,
14701
- frames: [
14702
- "-",
14703
- "=",
14704
- "≡"
14705
- ]
14706
- },
14707
- betaWave: {
14708
- interval: 80,
14709
- frames: [
14710
- "ρββββββ",
14711
- "βρβββββ",
14712
- "ββρββββ",
14713
- "βββρβββ",
14714
- "ββββρββ",
14715
- "βββββρβ",
14716
- "ββββββρ"
14717
- ]
14718
- },
14719
- fingerDance: {
14720
- interval: 160,
14721
- frames: [
14722
- "🤘 ",
14723
- "🤟 ",
14724
- "🖖 ",
14725
- "✋ ",
14726
- "🤚 ",
14727
- "👆 "
14728
- ]
14729
- },
14730
- fistBump: {
14731
- interval: 80,
14732
- frames: [
14733
- "🤜    🤛 ",
14734
- "🤜    🤛 ",
14735
- "🤜    🤛 ",
14736
- " 🤜  🤛  ",
14737
- "  🤜🤛   ",
14738
- " 🤜✨🤛   ",
14739
- "🤜 ✨ 🤛  "
14740
- ]
14741
- },
14742
- soccerHeader: {
14743
- interval: 80,
14744
- frames: [
14745
- " 🧑⚽️ 🧑 ",
14746
- "🧑 ⚽️ 🧑 ",
14747
- "🧑 ⚽️ 🧑 ",
14748
- "🧑 ⚽️ 🧑 ",
14749
- "🧑 ⚽️ 🧑 ",
14750
- "🧑 ⚽️ 🧑 ",
14751
- "🧑 ⚽️🧑 ",
14752
- "🧑 ⚽️ 🧑 ",
14753
- "🧑 ⚽️ 🧑 ",
14754
- "🧑 ⚽️ 🧑 ",
14755
- "🧑 ⚽️ 🧑 ",
14756
- "🧑 ⚽️ 🧑 "
14757
- ]
14758
- },
14759
- mindblown: {
14760
- interval: 160,
14761
- frames: [
14762
- "😐 ",
14763
- "😐 ",
14764
- "😮 ",
14765
- "😮 ",
14766
- "😦 ",
14767
- "😦 ",
14768
- "😧 ",
14769
- "😧 ",
14770
- "🤯 ",
14771
- "💥 ",
14772
- "✨ ",
14773
- "  ",
14774
- "  ",
14775
- "  "
14776
- ]
14777
- },
14778
- speaker: {
14779
- interval: 160,
14780
- frames: [
14781
- "🔈 ",
14782
- "🔉 ",
14783
- "🔊 ",
14784
- "🔉 "
14785
- ]
14786
- },
14787
- orangePulse: {
14788
- interval: 100,
14789
- frames: [
14790
- "🔸 ",
14791
- "🔶 ",
14792
- "🟠 ",
14793
- "🟠 ",
14794
- "🔶 "
14795
- ]
14796
- },
14797
- bluePulse: {
14798
- interval: 100,
14799
- frames: [
14800
- "🔹 ",
14801
- "🔷 ",
14802
- "🔵 ",
14803
- "🔵 ",
14804
- "🔷 "
14805
- ]
14806
- },
14807
- orangeBluePulse: {
14808
- interval: 100,
14809
- frames: [
14810
- "🔸 ",
14811
- "🔶 ",
14812
- "🟠 ",
14813
- "🟠 ",
14814
- "🔶 ",
14815
- "🔹 ",
14816
- "🔷 ",
14817
- "🔵 ",
14818
- "🔵 ",
14819
- "🔷 "
14820
- ]
14821
- },
14822
- timeTravel: {
14823
- interval: 100,
14824
- frames: [
14825
- "🕛 ",
14826
- "🕚 ",
14827
- "🕙 ",
14828
- "🕘 ",
14829
- "🕗 ",
14830
- "🕖 ",
14831
- "🕕 ",
14832
- "🕔 ",
14833
- "🕓 ",
14834
- "🕒 ",
14835
- "🕑 ",
14836
- "🕐 "
14837
- ]
14838
- },
14839
- aesthetic: {
14840
- interval: 80,
14841
- frames: [
14842
- "▰▱▱▱▱▱▱",
14843
- "▰▰▱▱▱▱▱",
14844
- "▰▰▰▱▱▱▱",
14845
- "▰▰▰▰▱▱▱",
14846
- "▰▰▰▰▰▱▱",
14847
- "▰▰▰▰▰▰▱",
14848
- "▰▰▰▰▰▰▰",
14849
- "▰▱▱▱▱▱▱"
14850
- ]
14851
- },
14852
- dwarfFortress: {
14853
- interval: 80,
14854
- frames: [
14855
- " ██████£££ ",
14856
- "☺██████£££ ",
14857
- "☺██████£££ ",
14858
- "☺▓█████£££ ",
14859
- "☺▓█████£££ ",
14860
- "☺▒█████£££ ",
14861
- "☺▒█████£££ ",
14862
- "☺░█████£££ ",
14863
- "☺░█████£££ ",
14864
- "☺ █████£££ ",
14865
- " ☺█████£££ ",
14866
- " ☺█████£££ ",
14867
- " ☺▓████£££ ",
14868
- " ☺▓████£££ ",
14869
- " ☺▒████£££ ",
14870
- " ☺▒████£££ ",
14871
- " ☺░████£££ ",
14872
- " ☺░████£££ ",
14873
- " ☺ ████£££ ",
14874
- " ☺████£££ ",
14875
- " ☺████£££ ",
14876
- " ☺▓███£££ ",
14877
- " ☺▓███£££ ",
14878
- " ☺▒███£££ ",
14879
- " ☺▒███£££ ",
14880
- " ☺░███£££ ",
14881
- " ☺░███£££ ",
14882
- " ☺ ███£££ ",
14883
- " ☺███£££ ",
14884
- " ☺███£££ ",
14885
- " ☺▓██£££ ",
14886
- " ☺▓██£££ ",
14887
- " ☺▒██£££ ",
14888
- " ☺▒██£££ ",
14889
- " ☺░██£££ ",
14890
- " ☺░██£££ ",
14891
- " ☺ ██£££ ",
14892
- " ☺██£££ ",
14893
- " ☺██£££ ",
14894
- " ☺▓█£££ ",
14895
- " ☺▓█£££ ",
14896
- " ☺▒█£££ ",
14897
- " ☺▒█£££ ",
14898
- " ☺░█£££ ",
14899
- " ☺░█£££ ",
14900
- " ☺ █£££ ",
14901
- " ☺█£££ ",
14902
- " ☺█£££ ",
14903
- " ☺▓£££ ",
14904
- " ☺▓£££ ",
14905
- " ☺▒£££ ",
14906
- " ☺▒£££ ",
14907
- " ☺░£££ ",
14908
- " ☺░£££ ",
14909
- " ☺ £££ ",
14910
- " ☺£££ ",
14911
- " ☺£££ ",
14912
- " ☺▓££ ",
14913
- " ☺▓££ ",
14914
- " ☺▒££ ",
14915
- " ☺▒££ ",
14916
- " ☺░££ ",
14917
- " ☺░££ ",
14918
- " ☺ ££ ",
14919
- " ☺££ ",
14920
- " ☺££ ",
14921
- " ☺▓£ ",
14922
- " ☺▓£ ",
14923
- " ☺▒£ ",
14924
- " ☺▒£ ",
14925
- " ☺░£ ",
14926
- " ☺░£ ",
14927
- " ☺ £ ",
14928
- " ☺£ ",
14929
- " ☺£ ",
14930
- " ☺▓ ",
14931
- " ☺▓ ",
14932
- " ☺▒ ",
14933
- " ☺▒ ",
14934
- " ☺░ ",
14935
- " ☺░ ",
14936
- " ☺ ",
14937
- " ☺ &",
14938
- " ☺ ☼&",
14939
- " ☺ ☼ &",
14940
- " ☺☼ &",
14941
- " ☺☼ & ",
14942
- " ‼ & ",
14943
- " ☺ & ",
14944
- " ‼ & ",
14945
- " ☺ & ",
14946
- " ‼ & ",
14947
- " ☺ & ",
14948
- "‼ & ",
14949
- " & ",
14950
- " & ",
14951
- " & ░ ",
14952
- " & ▒ ",
14953
- " & ▓ ",
14954
- " & £ ",
14955
- " & ░£ ",
14956
- " & ▒£ ",
14957
- " & ▓£ ",
14958
- " & ££ ",
14959
- " & ░££ ",
14960
- " & ▒££ ",
14961
- "& ▓££ ",
14962
- "& £££ ",
14963
- " ░£££ ",
14964
- " ▒£££ ",
14965
- " ▓£££ ",
14966
- " █£££ ",
14967
- " ░█£££ ",
14968
- " ▒█£££ ",
14969
- " ▓█£££ ",
14970
- " ██£££ ",
14971
- " ░██£££ ",
14972
- " ▒██£££ ",
14973
- " ▓██£££ ",
14974
- " ███£££ ",
14975
- " ░███£££ ",
14976
- " ▒███£££ ",
14977
- " ▓███£££ ",
14978
- " ████£££ ",
14979
- " ░████£££ ",
14980
- " ▒████£££ ",
14981
- " ▓████£££ ",
14982
- " █████£££ ",
14983
- " ░█████£££ ",
14984
- " ▒█████£££ ",
14985
- " ▓█████£££ ",
14986
- " ██████£££ ",
14987
- " ██████£££ "
14988
- ]
14989
- },
14990
- fish: {
14991
- interval: 80,
14992
- frames: [
14993
- "~~~~~~~~~~~~~~~~~~~~",
14994
- "> ~~~~~~~~~~~~~~~~~~",
14995
- "º> ~~~~~~~~~~~~~~~~~",
14996
- "(º> ~~~~~~~~~~~~~~~~",
14997
- "((º> ~~~~~~~~~~~~~~~",
14998
- "<((º> ~~~~~~~~~~~~~~",
14999
- "><((º> ~~~~~~~~~~~~~",
15000
- " ><((º> ~~~~~~~~~~~~",
15001
- "~ ><((º> ~~~~~~~~~~~",
15002
- "~~ <>((º> ~~~~~~~~~~",
15003
- "~~~ ><((º> ~~~~~~~~~",
15004
- "~~~~ <>((º> ~~~~~~~~",
15005
- "~~~~~ ><((º> ~~~~~~~",
15006
- "~~~~~~ <>((º> ~~~~~~",
15007
- "~~~~~~~ ><((º> ~~~~~",
15008
- "~~~~~~~~ <>((º> ~~~~",
15009
- "~~~~~~~~~ ><((º> ~~~",
15010
- "~~~~~~~~~~ <>((º> ~~",
15011
- "~~~~~~~~~~~ ><((º> ~",
15012
- "~~~~~~~~~~~~ <>((º> ",
15013
- "~~~~~~~~~~~~~ ><((º>",
15014
- "~~~~~~~~~~~~~~ <>((º",
15015
- "~~~~~~~~~~~~~~~ ><((",
15016
- "~~~~~~~~~~~~~~~~ <>(",
15017
- "~~~~~~~~~~~~~~~~~ ><",
15018
- "~~~~~~~~~~~~~~~~~~ <",
15019
- "~~~~~~~~~~~~~~~~~~~~"
15020
- ]
15021
- }
15022
- };
15023
-
15024
- // node_modules/cli-spinners/index.js
15025
- var cli_spinners_default = spinners_default;
15026
- var spinnersList = Object.keys(spinners_default);
15027
-
15028
- // node_modules/log-symbols/symbols.js
15029
- var exports_symbols = {};
15030
- __export(exports_symbols, {
15031
- warning: () => warning,
15032
- success: () => success,
15033
- info: () => info,
15034
- error: () => error
15035
- });
15036
-
15037
- // node_modules/yoctocolors/base.js
15038
- import tty2 from "node:tty";
15039
- var hasColors = tty2?.WriteStream?.prototype?.hasColors?.() ?? false;
15040
- var format3 = (open, close) => {
15041
- if (!hasColors) {
15042
- return (input) => input;
15043
- }
15044
- const openCode = `\x1B[${open}m`;
15045
- const closeCode = `\x1B[${close}m`;
15046
- return (input) => {
15047
- const string = input + "";
15048
- let index = string.indexOf(closeCode);
15049
- if (index === -1) {
15050
- return openCode + string + closeCode;
15051
- }
15052
- let result = openCode;
15053
- let lastIndex = 0;
15054
- const reopenOnNestedClose = close === 22;
15055
- const replaceCode = (reopenOnNestedClose ? closeCode : "") + openCode;
15056
- while (index !== -1) {
15057
- result += string.slice(lastIndex, index) + replaceCode;
15058
- lastIndex = index + closeCode.length;
15059
- index = string.indexOf(closeCode, lastIndex);
15060
- }
15061
- result += string.slice(lastIndex) + closeCode;
15062
- return result;
12795
+ process.exit(signalCode);
15063
12796
  };
15064
- };
15065
- var reset = format3(0, 0);
15066
- var bold = format3(1, 22);
15067
- var dim = format3(2, 22);
15068
- var italic = format3(3, 23);
15069
- var underline = format3(4, 24);
15070
- var overline = format3(53, 55);
15071
- var inverse = format3(7, 27);
15072
- var hidden = format3(8, 28);
15073
- var strikethrough = format3(9, 29);
15074
- var black = format3(30, 39);
15075
- var red = format3(31, 39);
15076
- var green = format3(32, 39);
15077
- var yellow = format3(33, 39);
15078
- var blue = format3(34, 39);
15079
- var magenta = format3(35, 39);
15080
- var cyan = format3(36, 39);
15081
- var white = format3(37, 39);
15082
- var gray = format3(90, 39);
15083
- var bgBlack = format3(40, 49);
15084
- var bgRed = format3(41, 49);
15085
- var bgGreen = format3(42, 49);
15086
- var bgYellow = format3(43, 49);
15087
- var bgBlue = format3(44, 49);
15088
- var bgMagenta = format3(45, 49);
15089
- var bgCyan = format3(46, 49);
15090
- var bgWhite = format3(47, 49);
15091
- var bgGray = format3(100, 49);
15092
- var redBright = format3(91, 39);
15093
- var greenBright = format3(92, 39);
15094
- var yellowBright = format3(93, 39);
15095
- var blueBright = format3(94, 39);
15096
- var magentaBright = format3(95, 39);
15097
- var cyanBright = format3(96, 39);
15098
- var whiteBright = format3(97, 39);
15099
- var bgRedBright = format3(101, 49);
15100
- var bgGreenBright = format3(102, 49);
15101
- var bgYellowBright = format3(103, 49);
15102
- var bgBlueBright = format3(104, 49);
15103
- var bgMagentaBright = format3(105, 49);
15104
- var bgCyanBright = format3(106, 49);
15105
- var bgWhiteBright = format3(107, 49);
15106
-
15107
- // node_modules/is-unicode-supported/index.js
15108
- import process6 from "node:process";
15109
- function isUnicodeSupported() {
15110
- const { env: env3 } = process6;
15111
- const { TERM, TERM_PROGRAM } = env3;
15112
- if (process6.platform !== "win32") {
15113
- return TERM !== "linux";
15114
- }
15115
- return Boolean(env3.WT_SESSION) || Boolean(env3.TERMINUS_SUBLIME) || env3.ConEmuTask === "{cmd::Cmder}" || TERM_PROGRAM === "Terminus-Sublime" || TERM_PROGRAM === "vscode" || TERM === "xterm-256color" || TERM === "alacritty" || TERM === "rxvt-unicode" || TERM === "rxvt-unicode-256color" || env3.TERMINAL_EMULATOR === "JetBrains-JediTerm";
15116
- }
15117
-
15118
- // node_modules/log-symbols/symbols.js
15119
- var _isUnicodeSupported = isUnicodeSupported();
15120
- var info = blue(_isUnicodeSupported ? "ℹ" : "i");
15121
- var success = green(_isUnicodeSupported ? "✔" : "√");
15122
- var warning = yellow(_isUnicodeSupported ? "⚠" : "‼");
15123
- var error = red(_isUnicodeSupported ? "✖" : "×");
15124
- // node_modules/string-width/index.js
15125
- var segmenter4 = new Intl.Segmenter;
15126
- var zeroWidthClusterRegex = /^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Format}|\p{Mark}|\p{Surrogate})+$/v;
15127
- var leadingNonPrintingRegex = /^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Mark}\p{Surrogate}]+/v;
15128
- var rgiEmojiRegex = /^\p{RGI_Emoji}$/v;
15129
- var unqualifiedKeycapRegex = /^[\d#*]\u20E3$/;
15130
- var extendedPictographicRegex = /\p{Extended_Pictographic}/gu;
15131
- function isDoubleWidthNonRgiEmojiSequence(segment) {
15132
- if (segment.length > 50) {
15133
- return false;
15134
- }
15135
- if (unqualifiedKeycapRegex.test(segment)) {
15136
- return true;
15137
- }
15138
- if (segment.includes("‍")) {
15139
- const pictographics = segment.match(extendedPictographicRegex);
15140
- return pictographics !== null && pictographics.length >= 2;
15141
- }
15142
- return false;
15143
- }
15144
- function baseVisible(segment) {
15145
- return segment.replace(leadingNonPrintingRegex, "");
15146
- }
15147
- function isZeroWidthCluster(segment) {
15148
- return zeroWidthClusterRegex.test(segment);
15149
- }
15150
- function trailingHalfwidthWidth(segment, eastAsianWidthOptions) {
15151
- let extra = 0;
15152
- if (segment.length > 1) {
15153
- for (const char of segment.slice(1)) {
15154
- if (char >= "＀" && char <= "￯") {
15155
- extra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);
15156
- }
15157
- }
15158
- }
15159
- return extra;
15160
- }
15161
- function stringWidth4(input, options = {}) {
15162
- if (typeof input !== "string" || input.length === 0) {
15163
- return 0;
15164
- }
15165
- const {
15166
- ambiguousIsNarrow = true,
15167
- countAnsiEscapeCodes = false
15168
- } = options;
15169
- let string = input;
15170
- if (!countAnsiEscapeCodes && (string.includes("\x1B") || string.includes("›"))) {
15171
- string = stripAnsi(string);
15172
- }
15173
- if (string.length === 0) {
15174
- return 0;
15175
- }
15176
- if (/^[\u0020-\u007E]*$/.test(string)) {
15177
- return string.length;
15178
- }
15179
- let width = 0;
15180
- const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
15181
- for (const { segment } of segmenter4.segment(string)) {
15182
- if (isZeroWidthCluster(segment)) {
15183
- continue;
15184
- }
15185
- if (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {
15186
- width += 2;
15187
- continue;
15188
- }
15189
- const codePoint = baseVisible(segment).codePointAt(0);
15190
- width += eastAsianWidth(codePoint, eastAsianWidthOptions);
15191
- width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
15192
- }
15193
- return width;
15194
- }
15195
-
15196
- // node_modules/is-interactive/index.js
15197
- function isInteractive({ stream = process.stdout } = {}) {
15198
- return Boolean(stream && stream.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env));
15199
- }
15200
-
15201
- // node_modules/stdin-discarder/index.js
15202
- import process7 from "node:process";
15203
- var ASCII_ETX_CODE = 3;
15204
-
15205
- class StdinDiscarder {
15206
- #activeCount = 0;
15207
- #stdin;
15208
- #stdinWasPaused = false;
15209
- #stdinWasRaw = false;
15210
- #handleInputBound = (chunk) => {
15211
- if (!chunk?.length) {
15212
- return;
15213
- }
15214
- const code = typeof chunk === "string" ? chunk.codePointAt(0) : chunk[0];
15215
- if (code === ASCII_ETX_CODE) {
15216
- process7.kill(process7.pid, "SIGINT");
15217
- }
15218
- };
15219
- start() {
15220
- this.#activeCount++;
15221
- if (this.#activeCount === 1) {
15222
- this.#realStart();
15223
- }
15224
- }
15225
- stop() {
15226
- if (this.#activeCount === 0) {
15227
- return;
15228
- }
15229
- if (--this.#activeCount === 0) {
15230
- this.#realStop();
15231
- }
15232
- }
15233
- #realStart() {
15234
- const { stdin } = process7;
15235
- if (process7.platform === "win32" || !stdin?.isTTY || typeof stdin.setRawMode !== "function") {
15236
- this.#stdin = undefined;
15237
- return;
15238
- }
15239
- this.#stdin = stdin;
15240
- this.#stdinWasPaused = stdin.isPaused();
15241
- this.#stdinWasRaw = Boolean(stdin.isRaw);
15242
- stdin.setRawMode(true);
15243
- stdin.prependListener("data", this.#handleInputBound);
15244
- if (this.#stdinWasPaused) {
15245
- stdin.resume();
15246
- }
15247
- }
15248
- #realStop() {
15249
- if (!this.#stdin) {
15250
- return;
15251
- }
15252
- const stdin = this.#stdin;
15253
- stdin.off("data", this.#handleInputBound);
15254
- if (stdin.isTTY) {
15255
- stdin.setRawMode?.(this.#stdinWasRaw);
15256
- }
15257
- if (this.#stdinWasPaused) {
15258
- stdin.pause();
15259
- }
15260
- this.#stdin = undefined;
15261
- this.#stdinWasPaused = false;
15262
- this.#stdinWasRaw = false;
15263
- }
15264
- }
15265
- var stdinDiscarder = new StdinDiscarder;
15266
- var stdin_discarder_default = Object.freeze(stdinDiscarder);
15267
-
15268
- // node_modules/ora/index.js
15269
- var RENDER_DEFERRAL_TIMEOUT = 200;
15270
- var SYNCHRONIZED_OUTPUT_ENABLE = "\x1B[?2026h";
15271
- var SYNCHRONIZED_OUTPUT_DISABLE = "\x1B[?2026l";
15272
- var activeHooksPerStream = new Map;
15273
-
15274
- class Ora {
15275
- #linesToClear = 0;
15276
- #frameIndex = -1;
15277
- #lastFrameTime = 0;
15278
- #options;
15279
- #spinner;
15280
- #stream;
15281
- #id;
15282
- #hookedStreams = new Map;
15283
- #isInternalWrite = false;
15284
- #drainHandler;
15285
- #deferRenderTimer;
15286
- #isDiscardingStdin = false;
15287
- color;
15288
- #internalWrite(fn) {
15289
- this.#isInternalWrite = true;
15290
- try {
15291
- return fn();
15292
- } finally {
15293
- this.#isInternalWrite = false;
15294
- }
15295
- }
15296
- #tryRender() {
15297
- if (this.isSpinning) {
15298
- this.render();
15299
- }
15300
- }
15301
- #stringifyChunk(chunk, encoding) {
15302
- if (chunk === undefined || chunk === null) {
15303
- return "";
15304
- }
15305
- if (typeof chunk === "string") {
15306
- return chunk;
15307
- }
15308
- if (Buffer.isBuffer(chunk) || ArrayBuffer.isView(chunk)) {
15309
- const normalizedEncoding = typeof encoding === "string" && encoding && encoding !== "buffer" ? encoding : "utf8";
15310
- return Buffer.from(chunk).toString(normalizedEncoding);
15311
- }
15312
- return String(chunk);
15313
- }
15314
- #chunkTerminatesLine(chunkString) {
15315
- if (!chunkString) {
15316
- return false;
15317
- }
15318
- const lastCharacter = chunkString.at(-1);
15319
- return lastCharacter === `
15320
- ` || lastCharacter === "\r";
15321
- }
15322
- #scheduleRenderDeferral() {
15323
- if (this.#deferRenderTimer) {
15324
- return;
15325
- }
15326
- this.#deferRenderTimer = setTimeout(() => {
15327
- this.#deferRenderTimer = undefined;
15328
- if (this.isSpinning) {
15329
- this.#tryRender();
15330
- }
15331
- }, RENDER_DEFERRAL_TIMEOUT);
15332
- if (typeof this.#deferRenderTimer?.unref === "function") {
15333
- this.#deferRenderTimer.unref();
15334
- }
15335
- }
15336
- #clearRenderDeferral() {
15337
- if (this.#deferRenderTimer) {
15338
- clearTimeout(this.#deferRenderTimer);
15339
- this.#deferRenderTimer = undefined;
15340
- }
15341
- }
15342
- #buildOutputLine(symbol, text, prefixText, suffixText) {
15343
- const fullPrefixText = this.#getFullPrefixText(prefixText, " ");
15344
- const separatorText = symbol ? " " : "";
15345
- const fullText = typeof text === "string" ? separatorText + text : "";
15346
- const fullSuffixText = this.#getFullSuffixText(suffixText, " ");
15347
- return fullPrefixText + symbol + fullText + fullSuffixText;
15348
- }
15349
- constructor(options) {
15350
- if (typeof options === "string") {
15351
- options = {
15352
- text: options
15353
- };
15354
- }
15355
- this.#options = {
15356
- color: "cyan",
15357
- stream: process8.stderr,
15358
- discardStdin: true,
15359
- hideCursor: true,
15360
- ...options
15361
- };
15362
- this.color = this.#options.color;
15363
- this.#stream = this.#options.stream;
15364
- if (typeof this.#options.isEnabled !== "boolean") {
15365
- this.#options.isEnabled = isInteractive({ stream: this.#stream });
15366
- }
15367
- if (typeof this.#options.isSilent !== "boolean") {
15368
- this.#options.isSilent = false;
15369
- }
15370
- const userInterval = this.#options.interval;
15371
- this.spinner = this.#options.spinner;
15372
- this.#options.interval = userInterval;
15373
- this.text = this.#options.text;
15374
- this.prefixText = this.#options.prefixText;
15375
- this.suffixText = this.#options.suffixText;
15376
- this.indent = this.#options.indent;
15377
- if (process8.env.NODE_ENV === "test") {
15378
- this._stream = this.#stream;
15379
- this._isEnabled = this.#options.isEnabled;
15380
- Object.defineProperty(this, "_linesToClear", {
15381
- get() {
15382
- return this.#linesToClear;
15383
- },
15384
- set(newValue) {
15385
- this.#linesToClear = newValue;
15386
- }
15387
- });
15388
- Object.defineProperty(this, "_frameIndex", {
15389
- get() {
15390
- return this.#frameIndex;
15391
- }
15392
- });
15393
- Object.defineProperty(this, "_lineCount", {
15394
- get() {
15395
- const columns = this.#stream.columns ?? 80;
15396
- const prefixText = typeof this.#options.prefixText === "function" ? "" : this.#options.prefixText;
15397
- const suffixText = typeof this.#options.suffixText === "function" ? "" : this.#options.suffixText;
15398
- const fullPrefixText = typeof prefixText === "string" && prefixText !== "" ? prefixText + " " : "";
15399
- const fullSuffixText = typeof suffixText === "string" && suffixText !== "" ? " " + suffixText : "";
15400
- const spinnerChar = "-";
15401
- const fullText = " ".repeat(this.#options.indent) + fullPrefixText + spinnerChar + (typeof this.#options.text === "string" ? " " + this.#options.text : "") + fullSuffixText;
15402
- return this.#computeLineCountFrom(fullText, columns);
15403
- }
15404
- });
15405
- }
15406
- }
15407
- get indent() {
15408
- return this.#options.indent;
15409
- }
15410
- set indent(indent = 0) {
15411
- if (!(indent >= 0 && Number.isInteger(indent))) {
15412
- throw new Error("The `indent` option must be an integer from 0 and up");
15413
- }
15414
- this.#options.indent = indent;
15415
- }
15416
- get interval() {
15417
- return this.#options.interval ?? this.#spinner.interval ?? 100;
15418
- }
15419
- get spinner() {
15420
- return this.#spinner;
15421
- }
15422
- set spinner(spinner) {
15423
- this.#frameIndex = -1;
15424
- this.#options.interval = undefined;
15425
- if (typeof spinner === "object") {
15426
- if (!Array.isArray(spinner.frames) || spinner.frames.length === 0 || spinner.frames.some((frame) => typeof frame !== "string")) {
15427
- throw new Error("The given spinner must have a non-empty `frames` array of strings");
15428
- }
15429
- if (spinner.interval !== undefined && !(Number.isInteger(spinner.interval) && spinner.interval > 0)) {
15430
- throw new Error("`spinner.interval` must be a positive integer if provided");
15431
- }
15432
- this.#spinner = spinner;
15433
- } else if (!isUnicodeSupported()) {
15434
- this.#spinner = cli_spinners_default.line;
15435
- } else if (spinner === undefined) {
15436
- this.#spinner = cli_spinners_default.dots;
15437
- } else if (spinner !== "default" && cli_spinners_default[spinner]) {
15438
- this.#spinner = cli_spinners_default[spinner];
15439
- } else {
15440
- 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.`);
15441
- }
15442
- }
15443
- get text() {
15444
- return this.#options.text;
15445
- }
15446
- set text(value = "") {
15447
- this.#options.text = value;
15448
- }
15449
- get prefixText() {
15450
- return this.#options.prefixText;
15451
- }
15452
- set prefixText(value = "") {
15453
- this.#options.prefixText = value;
15454
- }
15455
- get suffixText() {
15456
- return this.#options.suffixText;
15457
- }
15458
- set suffixText(value = "") {
15459
- this.#options.suffixText = value;
15460
- }
15461
- get isSpinning() {
15462
- return this.#id !== undefined;
15463
- }
15464
- #formatAffix(value, separator, placeBefore = false) {
15465
- const resolved = typeof value === "function" ? value() : value;
15466
- if (typeof resolved === "string" && resolved !== "") {
15467
- return placeBefore ? separator + resolved : resolved + separator;
15468
- }
15469
- return "";
15470
- }
15471
- #getFullPrefixText(prefixText = this.#options.prefixText, postfix = " ") {
15472
- return this.#formatAffix(prefixText, postfix, false);
15473
- }
15474
- #getFullSuffixText(suffixText = this.#options.suffixText, prefix = " ") {
15475
- return this.#formatAffix(suffixText, prefix, true);
15476
- }
15477
- #computeLineCountFrom(text, columns) {
15478
- let count = 0;
15479
- for (const line of stripVTControlCharacters(text).split(`
15480
- `)) {
15481
- count += Math.max(1, Math.ceil(stringWidth4(line) / columns));
15482
- }
15483
- return count;
15484
- }
15485
- get isEnabled() {
15486
- return this.#options.isEnabled && !this.#options.isSilent;
15487
- }
15488
- set isEnabled(value) {
15489
- if (typeof value !== "boolean") {
15490
- throw new TypeError("The `isEnabled` option must be a boolean");
15491
- }
15492
- this.#options.isEnabled = value;
15493
- }
15494
- get isSilent() {
15495
- return this.#options.isSilent;
15496
- }
15497
- set isSilent(value) {
15498
- if (typeof value !== "boolean") {
15499
- throw new TypeError("The `isSilent` option must be a boolean");
15500
- }
15501
- this.#options.isSilent = value;
15502
- }
15503
- frame() {
15504
- const now = Date.now();
15505
- if (this.#frameIndex === -1 || now - this.#lastFrameTime >= this.interval) {
15506
- this.#frameIndex = (this.#frameIndex + 1) % this.#spinner.frames.length;
15507
- this.#lastFrameTime = now;
15508
- }
15509
- const { frames } = this.#spinner;
15510
- let frame = frames[this.#frameIndex];
15511
- if (this.color) {
15512
- frame = source_default[this.color](frame);
15513
- }
15514
- const fullPrefixText = this.#getFullPrefixText(this.#options.prefixText, " ");
15515
- const fullText = typeof this.text === "string" ? " " + this.text : "";
15516
- const fullSuffixText = this.#getFullSuffixText(this.#options.suffixText, " ");
15517
- return fullPrefixText + frame + fullText + fullSuffixText;
15518
- }
15519
- clear() {
15520
- if (!this.isEnabled || !this.#stream.isTTY) {
15521
- return this;
15522
- }
15523
- this.#internalWrite(() => {
15524
- this.#stream.cursorTo(0);
15525
- for (let index = 0;index < this.#linesToClear; index++) {
15526
- if (index > 0) {
15527
- this.#stream.moveCursor(0, -1);
15528
- }
15529
- this.#stream.clearLine(1);
15530
- }
15531
- if (this.#options.indent) {
15532
- this.#stream.cursorTo(this.#options.indent);
15533
- }
15534
- });
15535
- this.#linesToClear = 0;
15536
- return this;
15537
- }
15538
- #hookStream(stream) {
15539
- if (!stream || this.#hookedStreams.has(stream) || !stream.isTTY || typeof stream.write !== "function") {
15540
- return;
15541
- }
15542
- if (activeHooksPerStream.has(stream)) {
15543
- console.warn("[ora] Multiple concurrent spinners detected. This may cause visual corruption. Use one spinner at a time.");
15544
- }
15545
- const originalWrite = stream.write;
15546
- this.#hookedStreams.set(stream, originalWrite);
15547
- activeHooksPerStream.set(stream, this);
15548
- stream.write = (chunk, encoding, callback) => this.#hookedWrite(stream, originalWrite, chunk, encoding, callback);
15549
- }
15550
- #installHook() {
15551
- if (!this.isEnabled || this.#hookedStreams.size > 0) {
15552
- return;
15553
- }
15554
- const streamsToHook = new Set([this.#stream, process8.stdout, process8.stderr]);
15555
- for (const stream of streamsToHook) {
15556
- this.#hookStream(stream);
15557
- }
15558
- }
15559
- #uninstallHook() {
15560
- for (const [stream, originalWrite] of this.#hookedStreams) {
15561
- stream.write = originalWrite;
15562
- if (activeHooksPerStream.get(stream) === this) {
15563
- activeHooksPerStream.delete(stream);
15564
- }
15565
- }
15566
- this.#hookedStreams.clear();
12797
+ addListeners() {
12798
+ process.once("SIGTERM", this.onProcessExit);
12799
+ process.once("SIGINT", this.onProcessExit);
12800
+ process.once("exit", this.onProcessExit);
12801
+ }
12802
+ clearListeners() {
12803
+ process.off("SIGTERM", this.onProcessExit);
12804
+ process.off("SIGINT", this.onProcessExit);
12805
+ process.off("exit", this.onProcessExit);
12806
+ }
12807
+ refresh() {
12808
+ let symbol = this.currentSymbol;
12809
+ if (this.symbolFormatter)
12810
+ symbol = this.symbolFormatter(symbol);
12811
+ const output = (symbol ? symbol + " " : "") + this.text;
12812
+ this.component.setText(output);
12813
+ }
12814
+ setDisplay(displayOpts = {}, render = true) {
12815
+ if (typeof displayOpts.symbol === "string") {
12816
+ if (typeof displayOpts.symbolType === "string") {
12817
+ this.currentSymbol = this.format(displayOpts.symbol, displayOpts.symbolType);
12818
+ } else
12819
+ this.currentSymbol = displayOpts.symbol;
12820
+ }
12821
+ if (typeof displayOpts.text === "string")
12822
+ this.setText(displayOpts.text, false);
12823
+ if (displayOpts.symbolFormatter)
12824
+ this.symbolFormatter = displayOpts.symbolFormatter;
12825
+ if (render)
12826
+ this.refresh();
12827
+ if (typeof displayOpts.symbol === "string")
12828
+ this.end();
12829
+ }
12830
+ setText(text, render = true) {
12831
+ this.text = this.format(text, "text");
12832
+ if (this.running) {
12833
+ if (render)
12834
+ this.refresh();
12835
+ }
12836
+ }
12837
+ succeed(display) {
12838
+ if (typeof display === "string")
12839
+ this.setDisplay({ text: display, symbol: this.symbols.succeed, symbolType: "succeed" });
12840
+ else
12841
+ this.setDisplay({ ...display, symbol: this.symbols.succeed, symbolType: "succeed" });
15567
12842
  }
15568
- #hookedWrite(stream, originalWrite, chunk, encoding, callback) {
15569
- if (typeof encoding === "function") {
15570
- callback = encoding;
15571
- encoding = undefined;
15572
- }
15573
- if (this.#isInternalWrite) {
15574
- return originalWrite.call(stream, chunk, encoding, callback);
15575
- }
15576
- this.clear();
15577
- const chunkString = this.#stringifyChunk(chunk, encoding);
15578
- const chunkTerminatesLine = this.#chunkTerminatesLine(chunkString);
15579
- const writeResult = originalWrite.call(stream, chunk, encoding, callback);
15580
- if (chunkTerminatesLine) {
15581
- this.#clearRenderDeferral();
15582
- } else if (chunkString.length > 0) {
15583
- this.#scheduleRenderDeferral();
15584
- }
15585
- if (this.isSpinning && !this.#deferRenderTimer) {
15586
- this.render();
15587
- }
15588
- return writeResult;
12843
+ fail(display) {
12844
+ if (typeof display === "string")
12845
+ this.setDisplay({ text: display, symbol: this.symbols.fail, symbolType: "fail" });
12846
+ else
12847
+ this.setDisplay({ ...display, symbol: this.symbols.fail, symbolType: "fail" });
15589
12848
  }
15590
- render() {
15591
- if (!this.isEnabled || this.#drainHandler || this.#deferRenderTimer) {
15592
- return this;
15593
- }
15594
- const useSynchronizedOutput = this.#stream.isTTY;
15595
- let shouldDisableSynchronizedOutput = false;
15596
- try {
15597
- if (useSynchronizedOutput) {
15598
- this.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_ENABLE));
15599
- shouldDisableSynchronizedOutput = true;
15600
- }
15601
- this.clear();
15602
- let frameContent = this.frame();
15603
- const columns = this.#stream.columns ?? 80;
15604
- const actualLineCount = this.#computeLineCountFrom(frameContent, columns);
15605
- const consoleHeight = this.#stream.rows;
15606
- if (consoleHeight && consoleHeight > 1 && actualLineCount > consoleHeight) {
15607
- const lines = frameContent.split(`
15608
- `);
15609
- const maxLines = consoleHeight - 1;
15610
- frameContent = [...lines.slice(0, maxLines), "... (content truncated to fit terminal)"].join(`
15611
- `);
15612
- }
15613
- const canContinue = this.#internalWrite(() => this.#stream.write(frameContent));
15614
- if (canContinue === false && this.#stream.isTTY) {
15615
- this.#drainHandler = () => {
15616
- this.#drainHandler = undefined;
15617
- this.#tryRender();
15618
- };
15619
- this.#stream.once("drain", this.#drainHandler);
15620
- }
15621
- this.#linesToClear = this.#computeLineCountFrom(frameContent, columns);
15622
- } finally {
15623
- if (shouldDisableSynchronizedOutput) {
15624
- this.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_DISABLE));
15625
- }
15626
- }
15627
- return this;
12849
+ warn(display) {
12850
+ if (typeof display === "string")
12851
+ this.setDisplay({ text: display, symbol: this.symbols.warn, symbolType: "warn" });
12852
+ else
12853
+ this.setDisplay({ ...display, symbol: this.symbols.warn, symbolType: "warn" });
15628
12854
  }
15629
- start(text) {
15630
- if (text) {
15631
- this.text = text;
15632
- }
15633
- if (this.isSilent) {
15634
- return this;
15635
- }
15636
- if (!this.isEnabled) {
15637
- const symbol = this.text ? "-" : "";
15638
- const line = " ".repeat(this.#options.indent) + this.#buildOutputLine(symbol, this.text, this.#options.prefixText, this.#options.suffixText);
15639
- if (line.trim() !== "") {
15640
- this.#internalWrite(() => this.#stream.write(line + `
15641
- `));
15642
- }
15643
- return this;
15644
- }
15645
- if (this.isSpinning) {
15646
- return this;
15647
- }
15648
- if (this.#options.hideCursor) {
15649
- cli_cursor_default.hide(this.#stream);
15650
- }
15651
- if (this.#options.discardStdin && process8.stdin.isTTY) {
15652
- stdin_discarder_default.start();
15653
- this.#isDiscardingStdin = true;
15654
- }
15655
- this.#installHook();
15656
- this.render();
15657
- this.#id = setInterval(this.render.bind(this), this.interval);
15658
- return this;
12855
+ info(display) {
12856
+ if (typeof display === "string")
12857
+ this.setDisplay({ text: display, symbol: this.symbols.info, symbolType: "info" });
12858
+ else
12859
+ this.setDisplay({ ...display, symbol: this.symbols.info, symbolType: "info" });
15659
12860
  }
15660
12861
  stop() {
15661
- clearInterval(this.#id);
15662
- this.#id = undefined;
15663
- this.#frameIndex = -1;
15664
- this.#lastFrameTime = 0;
15665
- this.#clearRenderDeferral();
15666
- this.#uninstallHook();
15667
- if (this.#drainHandler) {
15668
- this.#stream.removeListener("drain", this.#drainHandler);
15669
- this.#drainHandler = undefined;
15670
- }
15671
- if (this.isEnabled) {
15672
- this.clear();
15673
- if (this.#options.hideCursor) {
15674
- cli_cursor_default.show(this.#stream);
15675
- }
15676
- }
15677
- if (this.#isDiscardingStdin) {
15678
- this.#isDiscardingStdin = false;
15679
- stdin_discarder_default.stop();
15680
- }
15681
- return this;
12862
+ this.end(false);
15682
12863
  }
15683
- succeed(text) {
15684
- return this.stopAndPersist({ symbol: exports_symbols.success, text });
15685
- }
15686
- fail(text) {
15687
- return this.stopAndPersist({ symbol: exports_symbols.error, text });
15688
- }
15689
- warn(text) {
15690
- return this.stopAndPersist({ symbol: exports_symbols.warning, text });
15691
- }
15692
- info(text) {
15693
- return this.stopAndPersist({ symbol: exports_symbols.info, text });
12864
+ end(keepComponent = true) {
12865
+ clearInterval(this.interval);
12866
+ this.clearListeners();
12867
+ if (keepComponent)
12868
+ this.component.finish();
12869
+ else
12870
+ renderer.removeComponent(this.component);
12871
+ this.running = false;
15694
12872
  }
15695
- stopAndPersist(options = {}) {
15696
- if (this.isSilent) {
15697
- return this;
12873
+ format(component, componentName) {
12874
+ if (this.colors === undefined)
12875
+ return component;
12876
+ const color = this.colors[componentName];
12877
+ if (color && util.styleText !== undefined) {
12878
+ return util.styleText(color, component);
15698
12879
  }
15699
- const symbol = options.symbol ?? " ";
15700
- const text = options.text ?? this.text;
15701
- const prefixText = options.prefixText ?? this.#options.prefixText;
15702
- const suffixText = options.suffixText ?? this.#options.suffixText;
15703
- const textToWrite = this.#buildOutputLine(symbol, text, prefixText, suffixText) + `
15704
- `;
15705
- this.stop();
15706
- this.#internalWrite(() => this.#stream.write(textToWrite));
15707
- return this;
12880
+ return component;
15708
12881
  }
15709
12882
  }
15710
- function ora(options) {
15711
- return new Ora(options);
15712
- }
15713
12883
 
15714
12884
  // cli/lib/constants.ts
15715
12885
  var DEFAULT_API_KEY_ENV = "OPENAI_COMPATIBLE_API_KEY";
@@ -15779,12 +12949,12 @@ async function executeCommand(command2) {
15779
12949
  stdout,
15780
12950
  stderr
15781
12951
  };
15782
- } catch (error2) {
12952
+ } catch (error) {
15783
12953
  return {
15784
12954
  exitCode: 1,
15785
12955
  stdout: "",
15786
- stderr: error2 instanceof Error ? error2.message : String(error2),
15787
- errorCode: typeof error2 === "object" && error2 !== null && "code" in error2 && typeof error2.code === "string" ? error2.code : undefined
12956
+ stderr: error instanceof Error ? error.message : String(error),
12957
+ errorCode: typeof error === "object" && error !== null && "code" in error && typeof error.code === "string" ? error.code : undefined
15788
12958
  };
15789
12959
  }
15790
12960
  }
@@ -15855,14 +13025,14 @@ var STACK_ENV_DEFAULTS = {
15855
13025
  LITELLM_MASTER_KEY: "admin",
15856
13026
  LITELLM_CLIENT_KEY: "sk-litellm-local-client"
15857
13027
  };
15858
- function resolveStackEnv(env3) {
13028
+ function resolveStackEnv(env2) {
15859
13029
  return Object.fromEntries(Object.entries(STACK_ENV_DEFAULTS).map(([key, value]) => [
15860
13030
  key,
15861
- env3[key] ?? value
13031
+ env2[key] ?? value
15862
13032
  ]));
15863
13033
  }
15864
- function serializeStackEnv(env3) {
15865
- return Object.entries(env3).map(([key, value]) => `${key}=${serializeEnvValue(value)}`).join(`
13034
+ function serializeStackEnv(env2) {
13035
+ return Object.entries(env2).map(([key, value]) => `${key}=${serializeEnvValue(value)}`).join(`
15866
13036
  `).concat(`
15867
13037
  `);
15868
13038
  }
@@ -15873,25 +13043,25 @@ function serializeEnvValue(value) {
15873
13043
  // cli/lib/runtime.ts
15874
13044
  var runtimeContext = null;
15875
13045
  function initializeRuntime() {
15876
- const env3 = { ...process.env };
13046
+ const env2 = { ...process.env };
15877
13047
  const resolvedHome = resolveTraiceboxHome({
15878
13048
  cwd: process.cwd(),
15879
13049
  env: process.env,
15880
13050
  platform: process.platform,
15881
13051
  homeDir: homedir(),
15882
- appData: env3.APPDATA,
15883
- xdgConfigHome: env3.XDG_CONFIG_HOME
13052
+ appData: env2.APPDATA,
13053
+ xdgConfigHome: env2.XDG_CONFIG_HOME
15884
13054
  });
15885
13055
  const configPath = join2(resolvedHome.home, "traicebox.yaml");
15886
13056
  if (existsSync2(configPath)) {
15887
13057
  try {
15888
13058
  const configObj = import_yaml2.default.parse(readFileSync4(configPath, "utf-8"));
15889
13059
  if (configObj && typeof configObj === "object") {
15890
- if (!env3.TRAICEBOX_HOST && typeof configObj.host === "string") {
15891
- env3.TRAICEBOX_HOST = configObj.host;
13060
+ if (!env2.TRAICEBOX_HOST && typeof configObj.host === "string") {
13061
+ env2.TRAICEBOX_HOST = configObj.host;
15892
13062
  }
15893
- if (!env3.TRAICEBOX_PORT && (typeof configObj.port === "string" || typeof configObj.port === "number")) {
15894
- env3.TRAICEBOX_PORT = String(configObj.port);
13063
+ if (!env2.TRAICEBOX_PORT && (typeof configObj.port === "string" || typeof configObj.port === "number")) {
13064
+ env2.TRAICEBOX_PORT = String(configObj.port);
15895
13065
  }
15896
13066
  }
15897
13067
  } catch {
@@ -15901,7 +13071,7 @@ function initializeRuntime() {
15901
13071
  runtimeContext = {
15902
13072
  home: resolvedHome.home,
15903
13073
  dev: resolvedHome.dev,
15904
- stackEnv: resolveStackEnv(env3)
13074
+ stackEnv: resolveStackEnv(env2)
15905
13075
  };
15906
13076
  return runtimeContext;
15907
13077
  }
@@ -16050,7 +13220,7 @@ function cleanupOpenAICompatibleApiKeySecretMaterialSync() {
16050
13220
  }
16051
13221
  async function runDockerCompose(args, logs) {
16052
13222
  const runtime = getRuntime();
16053
- const env3 = {
13223
+ const env2 = {
16054
13224
  ...process.env,
16055
13225
  ...runtime.stackEnv,
16056
13226
  [SECRET_FILE_ENV]: prepareOpenAICompatibleApiKeySecretFile()
@@ -16058,7 +13228,7 @@ async function runDockerCompose(args, logs) {
16058
13228
  try {
16059
13229
  const proc = spawn2("docker", ["compose", ...args], {
16060
13230
  cwd: runtime.home,
16061
- env: env3,
13231
+ env: env2,
16062
13232
  stdio: [
16063
13233
  logs ? "inherit" : "ignore",
16064
13234
  logs ? "inherit" : "pipe",
@@ -16100,18 +13270,15 @@ async function runStep(text, logs, action) {
16100
13270
  await action();
16101
13271
  return;
16102
13272
  }
16103
- const spinner = ora({
16104
- text,
16105
- spinner: "dots",
16106
- discardStdin: false
16107
- }).start();
13273
+ const spinner = new Spinner(text);
13274
+ spinner.start();
16108
13275
  activeSpinner = spinner;
16109
13276
  try {
16110
13277
  await action();
16111
13278
  spinner.succeed(text);
16112
- } catch (error2) {
13279
+ } catch (error) {
16113
13280
  spinner.fail(text);
16114
- throw error2;
13281
+ throw error;
16115
13282
  } finally {
16116
13283
  activeSpinner = null;
16117
13284
  }
@@ -16132,8 +13299,8 @@ function installDockerLifecycleSignalHandlers() {
16132
13299
  }
16133
13300
  async function runStackCommand(command2, logs) {
16134
13301
  ensureActiveHomeExists();
16135
- await ensureDockerReady().catch((error2) => {
16136
- fail(error2 instanceof Error ? error2.message : String(error2));
13302
+ await ensureDockerReady().catch((error) => {
13303
+ fail(error instanceof Error ? error.message : String(error));
16137
13304
  });
16138
13305
  if (command2 === "start" || command2 === "restart") {
16139
13306
  try {
@@ -16284,6 +13451,9 @@ async function clearImportedModels(configPath, dependencies = {}) {
16284
13451
  log(`Removed ${removedCount} model${removedCount === 1 ? "" : "s"} from ${configPath}`);
16285
13452
  }
16286
13453
 
13454
+ // cli/handlers/setup.ts
13455
+ import { rmSync as rmSync2 } from "node:fs";
13456
+
16287
13457
  // cli/lib/template.ts
16288
13458
  import { chmodSync as chmodSync2, existsSync as existsSync3, mkdirSync } from "node:fs";
16289
13459
  import { readFile as readFile2, writeFile as writeFile3 } from "node:fs/promises";
@@ -16394,15 +13564,18 @@ async function writeDevelopmentDotenv(home, stackEnv) {
16394
13564
  }
16395
13565
 
16396
13566
  // cli/handlers/setup.ts
16397
- async function runSetup() {
16398
- await ensureDockerReady().catch((error2) => {
16399
- fail(error2 instanceof Error ? error2.message : String(error2));
13567
+ async function runSetup(force = false) {
13568
+ await ensureDockerReady().catch((error) => {
13569
+ fail(error instanceof Error ? error.message : String(error));
16400
13570
  });
16401
13571
  const runtime = getRuntime();
13572
+ if (force) {
13573
+ rmSync2(runtime.home, { recursive: true, force: true });
13574
+ }
16402
13575
  try {
16403
13576
  await materializeTemplate(runtime.home, "fail-if-exists");
16404
- } catch (error2) {
16405
- fail(error2 instanceof Error ? error2.message : String(error2));
13577
+ } catch (error) {
13578
+ fail(error instanceof Error ? error.message : String(error));
16406
13579
  }
16407
13580
  if (runtime.dev) {
16408
13581
  await writeDevelopmentDotenv(runtime.home, runtime.stackEnv);
@@ -16419,8 +13592,13 @@ if (runtime.dev && requestedCommand !== "setup") {
16419
13592
  }
16420
13593
  installDockerLifecycleSignalHandlers();
16421
13594
  var defaultConfigPath = getDefaultLiteLLMConfigPath();
16422
- await yargs_default(hideBin(process.argv)).scriptName("traicebox").command("setup", "Create the Traicebox home directory", () => {}, async () => {
16423
- await runSetup();
13595
+ await yargs_default(hideBin(process.argv)).scriptName("traicebox").command("setup", "Create the Traicebox home directory", (cmd) => cmd.option("force", {
13596
+ alias: "f",
13597
+ type: "boolean",
13598
+ default: false,
13599
+ describe: "Delete the existing home directory and recreate it"
13600
+ }), async (argv) => {
13601
+ await runSetup(argv.force);
16424
13602
  }).command("start", "Start the stack and wait until it is ready", (cmd) => cmd.option("logs", {
16425
13603
  alias: "l",
16426
13604
  type: "boolean",