thinkwell 0.4.1 → 0.4.2

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.
@@ -341,7 +341,7 @@ is not a problem with esbuild. You need to fix your environment instead.
341
341
  let sourceRoot = getFlag(options, keys, "sourceRoot", mustBeString);
342
342
  let sourcesContent = getFlag(options, keys, "sourcesContent", mustBeBoolean);
343
343
  let target = getFlag(options, keys, "target", mustBeStringOrArrayOfStrings);
344
- let format2 = getFlag(options, keys, "format", mustBeString);
344
+ let format = getFlag(options, keys, "format", mustBeString);
345
345
  let globalName = getFlag(options, keys, "globalName", mustBeString);
346
346
  let mangleProps = getFlag(options, keys, "mangleProps", mustBeRegExp);
347
347
  let reserveProps = getFlag(options, keys, "reserveProps", mustBeRegExp);
@@ -374,7 +374,7 @@ is not a problem with esbuild. You need to fix your environment instead.
374
374
  if (sourceRoot !== void 0) flags.push(`--source-root=${sourceRoot}`);
375
375
  if (sourcesContent !== void 0) flags.push(`--sources-content=${sourcesContent}`);
376
376
  if (target) flags.push(`--target=${validateAndJoinStringArray(Array.isArray(target) ? target : [target], "target")}`);
377
- if (format2) flags.push(`--format=${format2}`);
377
+ if (format) flags.push(`--format=${format}`);
378
378
  if (globalName) flags.push(`--global-name=${globalName}`);
379
379
  if (platform) flags.push(`--platform=${platform}`);
380
380
  if (tsconfigRaw) flags.push(`--tsconfig-raw=${typeof tsconfigRaw === "string" ? tsconfigRaw : JSON.stringify(tsconfigRaw)}`);
@@ -623,9 +623,9 @@ is not a problem with esbuild. You need to fix your environment instead.
623
623
  stdoutUsed -= offset;
624
624
  }
625
625
  }, "readFromStdout");
626
- let afterClose = /* @__PURE__ */ __name((error2) => {
626
+ let afterClose = /* @__PURE__ */ __name((error) => {
627
627
  closeData.didClose = true;
628
- if (error2) closeData.reason = ": " + (error2.message || error2);
628
+ if (error) closeData.reason = ": " + (error.message || error);
629
629
  const text = "The service was stopped" + closeData.reason;
630
630
  for (let id in responseCallbacks) {
631
631
  responseCallbacks[id](text, null);
@@ -635,9 +635,9 @@ is not a problem with esbuild. You need to fix your environment instead.
635
635
  let sendRequest = /* @__PURE__ */ __name((refs, value, callback) => {
636
636
  if (closeData.didClose) return callback("The service is no longer running" + closeData.reason, null);
637
637
  let id = nextRequestID++;
638
- responseCallbacks[id] = (error2, response) => {
638
+ responseCallbacks[id] = (error, response) => {
639
639
  try {
640
- callback(error2, response);
640
+ callback(error, response);
641
641
  } finally {
642
642
  if (refs) refs.unref();
643
643
  }
@@ -751,8 +751,8 @@ is not a problem with esbuild. You need to fix your environment instead.
751
751
  input: inputPath !== null ? encodeUTF8(inputPath) : typeof input === "string" ? encodeUTF8(input) : input
752
752
  };
753
753
  if (mangleCache) request.mangleCache = mangleCache;
754
- sendRequest(refs, request, (error2, response) => {
755
- if (error2) return callback(new Error(error2), null);
754
+ sendRequest(refs, request, (error, response) => {
755
+ if (error) return callback(new Error(error), null);
756
756
  let errors = replaceDetailsInMessages(response.errors, details);
757
757
  let warnings = replaceDetailsInMessages(response.warnings, details);
758
758
  let outstanding = 1;
@@ -801,10 +801,10 @@ is not a problem with esbuild. You need to fix your environment instead.
801
801
  pushLogFlags(flags, options, {}, isTTY2, transformLogLevelDefault);
802
802
  } catch {
803
803
  }
804
- const error2 = extractErrorMessageV8(e, streamIn, details, void 0, "");
805
- sendRequest(refs, { command: "error", flags, error: error2 }, () => {
806
- error2.detail = details.load(error2.detail);
807
- callback(failureErrorWithLog("Transform failed", [error2], []), null);
804
+ const error = extractErrorMessageV8(e, streamIn, details, void 0, "");
805
+ sendRequest(refs, { command: "error", flags, error }, () => {
806
+ error.detail = details.load(error.detail);
807
+ callback(failureErrorWithLog("Transform failed", [error], []), null);
808
808
  });
809
809
  }
810
810
  }, "start");
@@ -830,8 +830,8 @@ is not a problem with esbuild. You need to fix your environment instead.
830
830
  };
831
831
  if (color !== void 0) request.color = color;
832
832
  if (terminalWidth !== void 0) request.terminalWidth = terminalWidth;
833
- sendRequest(refs, request, (error2, response) => {
834
- if (error2) return callback(new Error(error2), null);
833
+ sendRequest(refs, request, (error, response) => {
834
+ if (error) return callback(new Error(error), null);
835
835
  callback(null, response.messages);
836
836
  });
837
837
  }, "formatMessages2");
@@ -847,8 +847,8 @@ is not a problem with esbuild. You need to fix your environment instead.
847
847
  };
848
848
  if (color !== void 0) request.color = color;
849
849
  if (verbose !== void 0) request.verbose = verbose;
850
- sendRequest(refs, request, (error2, response) => {
851
- if (error2) return callback(new Error(error2), null);
850
+ sendRequest(refs, request, (error, response) => {
851
+ if (error) return callback(new Error(error), null);
852
852
  callback(null, response.result);
853
853
  });
854
854
  }, "analyzeMetafile2");
@@ -961,8 +961,8 @@ is not a problem with esbuild. You need to fix your environment instead.
961
961
  if (response.writeToStdout !== void 0) console.log(decodeUTF8(response.writeToStdout).replace(/\n$/, ""));
962
962
  runOnEndCallbacks(result, (onEndErrors, onEndWarnings) => {
963
963
  if (originalErrors.length > 0 || onEndErrors.length > 0) {
964
- const error2 = failureErrorWithLog("Build failed", originalErrors.concat(onEndErrors), originalWarnings.concat(onEndWarnings));
965
- return callback2(error2, null, onEndErrors, onEndWarnings);
964
+ const error = failureErrorWithLog("Build failed", originalErrors.concat(onEndErrors), originalWarnings.concat(onEndWarnings));
965
+ return callback2(error, null, onEndErrors, onEndWarnings);
966
966
  }
967
967
  callback2(null, result, onEndErrors, onEndWarnings);
968
968
  });
@@ -983,8 +983,8 @@ is not a problem with esbuild. You need to fix your environment instead.
983
983
  resolve2();
984
984
  });
985
985
  });
986
- sendRequest(refs, request, (error2, response) => {
987
- if (error2) return callback(new Error(error2), null);
986
+ sendRequest(refs, request, (error, response) => {
987
+ if (error) return callback(new Error(error), null);
988
988
  if (!isContext) {
989
989
  return buildResponseToResult(response, (err, res) => {
990
990
  scheduleOnDisposeCallbacks();
@@ -1007,9 +1007,9 @@ is not a problem with esbuild. You need to fix your environment instead.
1007
1007
  command: "rebuild",
1008
1008
  key: buildKey
1009
1009
  };
1010
- sendRequest(refs, request2, (error22, response2) => {
1011
- if (error22) {
1012
- reject(new Error(error22));
1010
+ sendRequest(refs, request2, (error2, response2) => {
1011
+ if (error2) {
1012
+ reject(new Error(error2));
1013
1013
  } else if (settlePromise) {
1014
1014
  settlePromise();
1015
1015
  } else {
@@ -1031,8 +1031,8 @@ is not a problem with esbuild. You need to fix your environment instead.
1031
1031
  key: buildKey
1032
1032
  };
1033
1033
  if (delay) request2.delay = delay;
1034
- sendRequest(refs, request2, (error22) => {
1035
- if (error22) reject(new Error(error22));
1034
+ sendRequest(refs, request2, (error2) => {
1035
+ if (error2) reject(new Error(error2));
1036
1036
  else resolve2(void 0);
1037
1037
  });
1038
1038
  }), "watch"),
@@ -1066,8 +1066,8 @@ is not a problem with esbuild. You need to fix your environment instead.
1066
1066
  if (Array.isArray(origin)) request2.corsOrigin = origin;
1067
1067
  else if (origin !== void 0) request2.corsOrigin = [origin];
1068
1068
  }
1069
- sendRequest(refs, request2, (error22, response2) => {
1070
- if (error22) return reject(new Error(error22));
1069
+ sendRequest(refs, request2, (error2, response2) => {
1070
+ if (error2) return reject(new Error(error2));
1071
1071
  if (onRequest) {
1072
1072
  requestCallbacks["serve-request"] = (id, request3) => {
1073
1073
  onRequest(request3.args);
@@ -1163,8 +1163,8 @@ is not a problem with esbuild. You need to fix your environment instead.
1163
1163
  else throw new Error(`Must specify "kind" when calling "resolve"`);
1164
1164
  if (pluginData != null) request.pluginData = details.store(pluginData);
1165
1165
  if (importAttributes != null) request.with = sanitizeStringMap(importAttributes, "with");
1166
- sendRequest(refs, request, (error2, response) => {
1167
- if (error2 !== null) reject(new Error(error2));
1166
+ sendRequest(refs, request, (error, response) => {
1167
+ if (error !== null) reject(new Error(error));
1168
1168
  else resolve22({
1169
1169
  errors: replaceDetailsInMessages(response.errors, details),
1170
1170
  warnings: replaceDetailsInMessages(response.warnings, details),
@@ -1508,20 +1508,20 @@ error: ${e.text}`;
1508
1508
  return `
1509
1509
  ${file}:${line}:${column}: ERROR: ${pluginText}${e.text}`;
1510
1510
  }).join("");
1511
- let error2 = new Error(text);
1511
+ let error = new Error(text);
1512
1512
  for (const [key, value] of [["errors", errors], ["warnings", warnings]]) {
1513
- Object.defineProperty(error2, key, {
1513
+ Object.defineProperty(error, key, {
1514
1514
  configurable: true,
1515
1515
  enumerable: true,
1516
1516
  get: /* @__PURE__ */ __name(() => value, "get"),
1517
- set: /* @__PURE__ */ __name((value2) => Object.defineProperty(error2, key, {
1517
+ set: /* @__PURE__ */ __name((value2) => Object.defineProperty(error, key, {
1518
1518
  configurable: true,
1519
1519
  enumerable: true,
1520
1520
  value: value2
1521
1521
  }), "set")
1522
1522
  });
1523
1523
  }
1524
- return error2;
1524
+ return error;
1525
1525
  }
1526
1526
  __name(failureErrorWithLog, "failureErrorWithLog");
1527
1527
  function replaceDetailsInMessages(messages, stash) {
@@ -1644,7 +1644,7 @@ ${file}:${line}:${column}: ERROR: ${pluginText}${e.text}`;
1644
1644
  }
1645
1645
  __name(jsRegExpToGoRegExp, "jsRegExpToGoRegExp");
1646
1646
  var fs = require("fs");
1647
- var os2 = require("os");
1647
+ var os = require("os");
1648
1648
  var path = require("path");
1649
1649
  var ESBUILD_BINARY_PATH = process.env.ESBUILD_BINARY_PATH || ESBUILD_BINARY_PATH;
1650
1650
  var isValidBinaryPath = /* @__PURE__ */ __name((x) => !!x && x !== "/usr/bin/esbuild", "isValidBinaryPath");
@@ -1686,7 +1686,7 @@ ${file}:${line}:${column}: ERROR: ${pluginText}${e.text}`;
1686
1686
  let pkg;
1687
1687
  let subpath;
1688
1688
  let isWASM = false;
1689
- let platformKey = `${process.platform} ${os2.arch()} ${os2.endianness()}`;
1689
+ let platformKey = `${process.platform} ${os.arch()} ${os.endianness()}`;
1690
1690
  if (platformKey in knownWindowsPackages) {
1691
1691
  pkg = knownWindowsPackages[platformKey];
1692
1692
  subpath = "esbuild.exe";
@@ -1840,8 +1840,8 @@ for your current platform.`);
1840
1840
  var crypto = require("crypto");
1841
1841
  var path2 = require("path");
1842
1842
  var fs2 = require("fs");
1843
- var os22 = require("os");
1844
- var tty3 = require("tty");
1843
+ var os2 = require("os");
1844
+ var tty = require("tty");
1845
1845
  var worker_threads;
1846
1846
  if (process.env.ESBUILD_WORKER_THREADS !== "0") {
1847
1847
  try {
@@ -1877,7 +1877,7 @@ More information: The file containing the code for esbuild's JavaScript API (${_
1877
1877
  }
1878
1878
  }
1879
1879
  }, "esbuildCommandAndArgs");
1880
- var isTTY = /* @__PURE__ */ __name(() => tty3.isatty(2), "isTTY");
1880
+ var isTTY = /* @__PURE__ */ __name(() => tty.isatty(2), "isTTY");
1881
1881
  var fsSync = {
1882
1882
  readFile(tempFile, callback) {
1883
1883
  try {
@@ -2145,7 +2145,7 @@ More information: The file containing the code for esbuild's JavaScript API (${_
2145
2145
  afterClose(null);
2146
2146
  }, "runServiceSync");
2147
2147
  var randomFileName = /* @__PURE__ */ __name(() => {
2148
- return path2.join(os22.tmpdir(), `esbuild-${crypto.randomBytes(32).toString("hex")}`);
2148
+ return path2.join(os2.tmpdir(), `esbuild-${crypto.randomBytes(32).toString("hex")}`);
2149
2149
  }, "randomFileName");
2150
2150
  var workerThreadService = null;
2151
2151
  var startWorkerThreadService = /* @__PURE__ */ __name((worker_threads2) => {
@@ -2166,12 +2166,12 @@ More information: The file containing the code for esbuild's JavaScript API (${_
2166
2166
  });
2167
2167
  let nextID = 0;
2168
2168
  let fakeBuildError = /* @__PURE__ */ __name((text) => {
2169
- let error2 = new Error(`Build failed with 1 error:
2169
+ let error = new Error(`Build failed with 1 error:
2170
2170
  error: ${text}`);
2171
2171
  let errors = [{ id: "", pluginName: "", text, location: null, notes: [], detail: void 0 }];
2172
- error2.errors = errors;
2173
- error2.warnings = [];
2174
- return error2;
2172
+ error.errors = errors;
2173
+ error.warnings = [];
2174
+ return error;
2175
2175
  }, "fakeBuildError");
2176
2176
  let validateBuildSyncOptions = /* @__PURE__ */ __name((options) => {
2177
2177
  if (!options) return;
@@ -2291,3312 +2291,101 @@ module.exports = __toCommonJS(build_exports);
2291
2291
  var import_node_fs = require("node:fs");
2292
2292
  var import_node_path = require("node:path");
2293
2293
  var import_node_url = require("node:url");
2294
- var import_node_util2 = require("node:util");
2295
- var import_node_os2 = require("node:os");
2294
+ var import_node_util = require("node:util");
2295
+ var import_node_os = require("node:os");
2296
2296
  var import_node_crypto = require("node:crypto");
2297
2297
  var import_node_child_process = require("node:child_process");
2298
-
2299
- // ../../node_modules/.pnpm/ora@9.1.0/node_modules/ora/index.js
2300
- var import_node_process6 = __toESM(require("node:process"), 1);
2301
- var import_node_util = require("node:util");
2302
-
2303
- // ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js
2304
- var ANSI_BACKGROUND_OFFSET = 10;
2305
- var wrapAnsi16 = /* @__PURE__ */ __name((offset = 0) => (code) => `\x1B[${code + offset}m`, "wrapAnsi16");
2306
- var wrapAnsi256 = /* @__PURE__ */ __name((offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`, "wrapAnsi256");
2307
- var wrapAnsi16m = /* @__PURE__ */ __name((offset = 0) => (red2, green2, blue2) => `\x1B[${38 + offset};2;${red2};${green2};${blue2}m`, "wrapAnsi16m");
2308
- var styles = {
2309
- modifier: {
2310
- reset: [0, 0],
2311
- // 21 isn't widely supported and 22 does the same thing
2312
- bold: [1, 22],
2313
- dim: [2, 22],
2314
- italic: [3, 23],
2315
- underline: [4, 24],
2316
- overline: [53, 55],
2317
- inverse: [7, 27],
2318
- hidden: [8, 28],
2319
- strikethrough: [9, 29]
2320
- },
2321
- color: {
2322
- black: [30, 39],
2323
- red: [31, 39],
2324
- green: [32, 39],
2325
- yellow: [33, 39],
2326
- blue: [34, 39],
2327
- magenta: [35, 39],
2328
- cyan: [36, 39],
2329
- white: [37, 39],
2330
- // Bright color
2331
- blackBright: [90, 39],
2332
- gray: [90, 39],
2333
- // Alias of `blackBright`
2334
- grey: [90, 39],
2335
- // Alias of `blackBright`
2336
- redBright: [91, 39],
2337
- greenBright: [92, 39],
2338
- yellowBright: [93, 39],
2339
- blueBright: [94, 39],
2340
- magentaBright: [95, 39],
2341
- cyanBright: [96, 39],
2342
- whiteBright: [97, 39]
2343
- },
2344
- bgColor: {
2345
- bgBlack: [40, 49],
2346
- bgRed: [41, 49],
2347
- bgGreen: [42, 49],
2348
- bgYellow: [43, 49],
2349
- bgBlue: [44, 49],
2350
- bgMagenta: [45, 49],
2351
- bgCyan: [46, 49],
2352
- bgWhite: [47, 49],
2353
- // Bright color
2354
- bgBlackBright: [100, 49],
2355
- bgGray: [100, 49],
2356
- // Alias of `bgBlackBright`
2357
- bgGrey: [100, 49],
2358
- // Alias of `bgBlackBright`
2359
- bgRedBright: [101, 49],
2360
- bgGreenBright: [102, 49],
2361
- bgYellowBright: [103, 49],
2362
- bgBlueBright: [104, 49],
2363
- bgMagentaBright: [105, 49],
2364
- bgCyanBright: [106, 49],
2365
- bgWhiteBright: [107, 49]
2366
- }
2367
- };
2368
- var modifierNames = Object.keys(styles.modifier);
2369
- var foregroundColorNames = Object.keys(styles.color);
2370
- var backgroundColorNames = Object.keys(styles.bgColor);
2371
- var colorNames = [...foregroundColorNames, ...backgroundColorNames];
2372
- function assembleStyles() {
2373
- const codes = /* @__PURE__ */ new Map();
2374
- for (const [groupName, group] of Object.entries(styles)) {
2375
- for (const [styleName, style] of Object.entries(group)) {
2376
- styles[styleName] = {
2377
- open: `\x1B[${style[0]}m`,
2378
- close: `\x1B[${style[1]}m`
2379
- };
2380
- group[styleName] = styles[styleName];
2381
- codes.set(style[0], style[1]);
2382
- }
2383
- Object.defineProperty(styles, groupName, {
2384
- value: group,
2385
- enumerable: false
2386
- });
2387
- }
2388
- Object.defineProperty(styles, "codes", {
2389
- value: codes,
2390
- enumerable: false
2391
- });
2392
- styles.color.close = "\x1B[39m";
2393
- styles.bgColor.close = "\x1B[49m";
2394
- styles.color.ansi = wrapAnsi16();
2395
- styles.color.ansi256 = wrapAnsi256();
2396
- styles.color.ansi16m = wrapAnsi16m();
2397
- styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
2398
- styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
2399
- styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
2400
- Object.defineProperties(styles, {
2401
- rgbToAnsi256: {
2402
- value(red2, green2, blue2) {
2403
- if (red2 === green2 && green2 === blue2) {
2404
- if (red2 < 8) {
2405
- return 16;
2406
- }
2407
- if (red2 > 248) {
2408
- return 231;
2409
- }
2410
- return Math.round((red2 - 8) / 247 * 24) + 232;
2411
- }
2412
- return 16 + 36 * Math.round(red2 / 255 * 5) + 6 * Math.round(green2 / 255 * 5) + Math.round(blue2 / 255 * 5);
2413
- },
2414
- enumerable: false
2415
- },
2416
- hexToRgb: {
2417
- value(hex) {
2418
- const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
2419
- if (!matches) {
2420
- return [0, 0, 0];
2421
- }
2422
- let [colorString] = matches;
2423
- if (colorString.length === 3) {
2424
- colorString = [...colorString].map((character) => character + character).join("");
2425
- }
2426
- const integer = Number.parseInt(colorString, 16);
2427
- return [
2428
- /* eslint-disable no-bitwise */
2429
- integer >> 16 & 255,
2430
- integer >> 8 & 255,
2431
- integer & 255
2432
- /* eslint-enable no-bitwise */
2433
- ];
2434
- },
2435
- enumerable: false
2436
- },
2437
- hexToAnsi256: {
2438
- value: /* @__PURE__ */ __name((hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)), "value"),
2439
- enumerable: false
2440
- },
2441
- ansi256ToAnsi: {
2442
- value(code) {
2443
- if (code < 8) {
2444
- return 30 + code;
2445
- }
2446
- if (code < 16) {
2447
- return 90 + (code - 8);
2448
- }
2449
- let red2;
2450
- let green2;
2451
- let blue2;
2452
- if (code >= 232) {
2453
- red2 = ((code - 232) * 10 + 8) / 255;
2454
- green2 = red2;
2455
- blue2 = red2;
2456
- } else {
2457
- code -= 16;
2458
- const remainder = code % 36;
2459
- red2 = Math.floor(code / 36) / 5;
2460
- green2 = Math.floor(remainder / 6) / 5;
2461
- blue2 = remainder % 6 / 5;
2462
- }
2463
- const value = Math.max(red2, green2, blue2) * 2;
2464
- if (value === 0) {
2465
- return 30;
2466
- }
2467
- let result = 30 + (Math.round(blue2) << 2 | Math.round(green2) << 1 | Math.round(red2));
2468
- if (value === 2) {
2469
- result += 60;
2470
- }
2471
- return result;
2472
- },
2473
- enumerable: false
2474
- },
2475
- rgbToAnsi: {
2476
- value: /* @__PURE__ */ __name((red2, green2, blue2) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red2, green2, blue2)), "value"),
2477
- enumerable: false
2478
- },
2479
- hexToAnsi: {
2480
- value: /* @__PURE__ */ __name((hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)), "value"),
2481
- enumerable: false
2482
- }
2483
- });
2484
- return styles;
2485
- }
2486
- __name(assembleStyles, "assembleStyles");
2487
- var ansiStyles = assembleStyles();
2488
- var ansi_styles_default = ansiStyles;
2489
-
2490
- // ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js
2491
- var import_node_process = __toESM(require("node:process"), 1);
2492
- var import_node_os = __toESM(require("node:os"), 1);
2493
- var import_node_tty = __toESM(require("node:tty"), 1);
2494
- function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : import_node_process.default.argv) {
2495
- const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
2496
- const position = argv.indexOf(prefix + flag);
2497
- const terminatorPosition = argv.indexOf("--");
2498
- return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
2499
- }
2500
- __name(hasFlag, "hasFlag");
2501
- var { env } = import_node_process.default;
2502
- var flagForceColor;
2503
- if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
2504
- flagForceColor = 0;
2505
- } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
2506
- flagForceColor = 1;
2507
- }
2508
- function envForceColor() {
2509
- if ("FORCE_COLOR" in env) {
2510
- if (env.FORCE_COLOR === "true") {
2511
- return 1;
2512
- }
2513
- if (env.FORCE_COLOR === "false") {
2514
- return 0;
2515
- }
2516
- return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
2517
- }
2518
- }
2519
- __name(envForceColor, "envForceColor");
2520
- function translateLevel(level) {
2521
- if (level === 0) {
2522
- return false;
2523
- }
2524
- return {
2525
- level,
2526
- hasBasic: true,
2527
- has256: level >= 2,
2528
- has16m: level >= 3
2529
- };
2530
- }
2531
- __name(translateLevel, "translateLevel");
2532
- function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
2533
- const noFlagForceColor = envForceColor();
2534
- if (noFlagForceColor !== void 0) {
2535
- flagForceColor = noFlagForceColor;
2536
- }
2537
- const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
2538
- if (forceColor === 0) {
2539
- return 0;
2540
- }
2541
- if (sniffFlags) {
2542
- if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
2543
- return 3;
2544
- }
2545
- if (hasFlag("color=256")) {
2546
- return 2;
2547
- }
2548
- }
2549
- if ("TF_BUILD" in env && "AGENT_NAME" in env) {
2550
- return 1;
2551
- }
2552
- if (haveStream && !streamIsTTY && forceColor === void 0) {
2553
- return 0;
2554
- }
2555
- const min = forceColor || 0;
2556
- if (env.TERM === "dumb") {
2557
- return min;
2558
- }
2559
- if (import_node_process.default.platform === "win32") {
2560
- const osRelease = import_node_os.default.release().split(".");
2561
- if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
2562
- return Number(osRelease[2]) >= 14931 ? 3 : 2;
2563
- }
2564
- return 1;
2565
- }
2566
- if ("CI" in env) {
2567
- if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) {
2568
- return 3;
2569
- }
2570
- if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
2571
- return 1;
2572
- }
2573
- return min;
2574
- }
2575
- if ("TEAMCITY_VERSION" in env) {
2576
- return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
2577
- }
2578
- if (env.COLORTERM === "truecolor") {
2579
- return 3;
2580
- }
2581
- if (env.TERM === "xterm-kitty") {
2582
- return 3;
2583
- }
2584
- if (env.TERM === "xterm-ghostty") {
2585
- return 3;
2586
- }
2587
- if (env.TERM === "wezterm") {
2588
- return 3;
2589
- }
2590
- if ("TERM_PROGRAM" in env) {
2591
- const version = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
2592
- switch (env.TERM_PROGRAM) {
2593
- case "iTerm.app": {
2594
- return version >= 3 ? 3 : 2;
2595
- }
2596
- case "Apple_Terminal": {
2597
- return 2;
2598
- }
2599
- }
2600
- }
2601
- if (/-256(color)?$/i.test(env.TERM)) {
2602
- return 2;
2603
- }
2604
- if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
2605
- return 1;
2606
- }
2607
- if ("COLORTERM" in env) {
2608
- return 1;
2609
- }
2610
- return min;
2611
- }
2612
- __name(_supportsColor, "_supportsColor");
2613
- function createSupportsColor(stream, options = {}) {
2614
- const level = _supportsColor(stream, {
2615
- streamIsTTY: stream && stream.isTTY,
2616
- ...options
2617
- });
2618
- return translateLevel(level);
2619
- }
2620
- __name(createSupportsColor, "createSupportsColor");
2621
- var supportsColor = {
2622
- stdout: createSupportsColor({ isTTY: import_node_tty.default.isatty(1) }),
2623
- stderr: createSupportsColor({ isTTY: import_node_tty.default.isatty(2) })
2624
- };
2625
- var supports_color_default = supportsColor;
2626
-
2627
- // ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/utilities.js
2628
- function stringReplaceAll(string, substring, replacer) {
2629
- let index = string.indexOf(substring);
2630
- if (index === -1) {
2631
- return string;
2632
- }
2633
- const substringLength = substring.length;
2634
- let endIndex = 0;
2635
- let returnValue = "";
2636
- do {
2637
- returnValue += string.slice(endIndex, index) + substring + replacer;
2638
- endIndex = index + substringLength;
2639
- index = string.indexOf(substring, endIndex);
2640
- } while (index !== -1);
2641
- returnValue += string.slice(endIndex);
2642
- return returnValue;
2643
- }
2644
- __name(stringReplaceAll, "stringReplaceAll");
2645
- function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
2646
- let endIndex = 0;
2647
- let returnValue = "";
2648
- do {
2649
- const gotCR = string[index - 1] === "\r";
2650
- returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? "\r\n" : "\n") + postfix;
2651
- endIndex = index + 1;
2652
- index = string.indexOf("\n", endIndex);
2653
- } while (index !== -1);
2654
- returnValue += string.slice(endIndex);
2655
- return returnValue;
2656
- }
2657
- __name(stringEncaseCRLFWithFirstIndex, "stringEncaseCRLFWithFirstIndex");
2658
-
2659
- // ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js
2660
- var { stdout: stdoutColor, stderr: stderrColor } = supports_color_default;
2661
- var GENERATOR = /* @__PURE__ */ Symbol("GENERATOR");
2662
- var STYLER = /* @__PURE__ */ Symbol("STYLER");
2663
- var IS_EMPTY = /* @__PURE__ */ Symbol("IS_EMPTY");
2664
- var levelMapping = [
2665
- "ansi",
2666
- "ansi",
2667
- "ansi256",
2668
- "ansi16m"
2669
- ];
2670
- var styles2 = /* @__PURE__ */ Object.create(null);
2671
- var applyOptions = /* @__PURE__ */ __name((object, options = {}) => {
2672
- if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
2673
- throw new Error("The `level` option should be an integer from 0 to 3");
2674
- }
2675
- const colorLevel = stdoutColor ? stdoutColor.level : 0;
2676
- object.level = options.level === void 0 ? colorLevel : options.level;
2677
- }, "applyOptions");
2678
- var chalkFactory = /* @__PURE__ */ __name((options) => {
2679
- const chalk2 = /* @__PURE__ */ __name((...strings) => strings.join(" "), "chalk");
2680
- applyOptions(chalk2, options);
2681
- Object.setPrototypeOf(chalk2, createChalk.prototype);
2682
- return chalk2;
2683
- }, "chalkFactory");
2684
- function createChalk(options) {
2685
- return chalkFactory(options);
2686
- }
2687
- __name(createChalk, "createChalk");
2688
- Object.setPrototypeOf(createChalk.prototype, Function.prototype);
2689
- for (const [styleName, style] of Object.entries(ansi_styles_default)) {
2690
- styles2[styleName] = {
2691
- get() {
2692
- const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
2693
- Object.defineProperty(this, styleName, { value: builder });
2694
- return builder;
2695
- }
2696
- };
2697
- }
2698
- styles2.visible = {
2699
- get() {
2700
- const builder = createBuilder(this, this[STYLER], true);
2701
- Object.defineProperty(this, "visible", { value: builder });
2702
- return builder;
2703
- }
2704
- };
2705
- var getModelAnsi = /* @__PURE__ */ __name((model, level, type, ...arguments_) => {
2706
- if (model === "rgb") {
2707
- if (level === "ansi16m") {
2708
- return ansi_styles_default[type].ansi16m(...arguments_);
2709
- }
2710
- if (level === "ansi256") {
2711
- return ansi_styles_default[type].ansi256(ansi_styles_default.rgbToAnsi256(...arguments_));
2712
- }
2713
- return ansi_styles_default[type].ansi(ansi_styles_default.rgbToAnsi(...arguments_));
2714
- }
2715
- if (model === "hex") {
2716
- return getModelAnsi("rgb", level, type, ...ansi_styles_default.hexToRgb(...arguments_));
2717
- }
2718
- return ansi_styles_default[type][model](...arguments_);
2719
- }, "getModelAnsi");
2720
- var usedModels = ["rgb", "hex", "ansi256"];
2721
- for (const model of usedModels) {
2722
- styles2[model] = {
2723
- get() {
2724
- const { level } = this;
2725
- return function(...arguments_) {
2726
- const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansi_styles_default.color.close, this[STYLER]);
2727
- return createBuilder(this, styler, this[IS_EMPTY]);
2728
- };
2729
- }
2730
- };
2731
- const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
2732
- styles2[bgModel] = {
2733
- get() {
2734
- const { level } = this;
2735
- return function(...arguments_) {
2736
- const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansi_styles_default.bgColor.close, this[STYLER]);
2737
- return createBuilder(this, styler, this[IS_EMPTY]);
2738
- };
2739
- }
2740
- };
2741
- }
2742
- var proto = Object.defineProperties(() => {
2743
- }, {
2744
- ...styles2,
2745
- level: {
2746
- enumerable: true,
2747
- get() {
2748
- return this[GENERATOR].level;
2749
- },
2750
- set(level) {
2751
- this[GENERATOR].level = level;
2752
- }
2753
- }
2754
- });
2755
- var createStyler = /* @__PURE__ */ __name((open, close, parent) => {
2756
- let openAll;
2757
- let closeAll;
2758
- if (parent === void 0) {
2759
- openAll = open;
2760
- closeAll = close;
2761
- } else {
2762
- openAll = parent.openAll + open;
2763
- closeAll = close + parent.closeAll;
2764
- }
2765
- return {
2766
- open,
2767
- close,
2768
- openAll,
2769
- closeAll,
2770
- parent
2771
- };
2772
- }, "createStyler");
2773
- var createBuilder = /* @__PURE__ */ __name((self, _styler, _isEmpty) => {
2774
- const builder = /* @__PURE__ */ __name((...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" ")), "builder");
2775
- Object.setPrototypeOf(builder, proto);
2776
- builder[GENERATOR] = self;
2777
- builder[STYLER] = _styler;
2778
- builder[IS_EMPTY] = _isEmpty;
2779
- return builder;
2780
- }, "createBuilder");
2781
- var applyStyle = /* @__PURE__ */ __name((self, string) => {
2782
- if (self.level <= 0 || !string) {
2783
- return self[IS_EMPTY] ? "" : string;
2784
- }
2785
- let styler = self[STYLER];
2786
- if (styler === void 0) {
2787
- return string;
2788
- }
2789
- const { openAll, closeAll } = styler;
2790
- if (string.includes("\x1B")) {
2791
- while (styler !== void 0) {
2792
- string = stringReplaceAll(string, styler.close, styler.open);
2793
- styler = styler.parent;
2794
- }
2795
- }
2796
- const lfIndex = string.indexOf("\n");
2797
- if (lfIndex !== -1) {
2798
- string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
2799
- }
2800
- return openAll + string + closeAll;
2801
- }, "applyStyle");
2802
- Object.defineProperties(createChalk.prototype, styles2);
2803
- var chalk = createChalk();
2804
- var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
2805
- var source_default = chalk;
2806
-
2807
- // ../../node_modules/.pnpm/cli-cursor@5.0.0/node_modules/cli-cursor/index.js
2808
- var import_node_process3 = __toESM(require("node:process"), 1);
2809
-
2810
- // ../../node_modules/.pnpm/restore-cursor@5.1.0/node_modules/restore-cursor/index.js
2811
- var import_node_process2 = __toESM(require("node:process"), 1);
2812
-
2813
- // ../../node_modules/.pnpm/mimic-function@5.0.1/node_modules/mimic-function/index.js
2814
- var copyProperty = /* @__PURE__ */ __name((to, from, property, ignoreNonConfigurable) => {
2815
- if (property === "length" || property === "prototype") {
2816
- return;
2817
- }
2818
- if (property === "arguments" || property === "caller") {
2819
- return;
2820
- }
2821
- const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
2822
- const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
2823
- if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
2824
- return;
2825
- }
2826
- Object.defineProperty(to, property, fromDescriptor);
2827
- }, "copyProperty");
2828
- var canCopyProperty = /* @__PURE__ */ __name(function(toDescriptor, fromDescriptor) {
2829
- return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);
2830
- }, "canCopyProperty");
2831
- var changePrototype = /* @__PURE__ */ __name((to, from) => {
2832
- const fromPrototype = Object.getPrototypeOf(from);
2833
- if (fromPrototype === Object.getPrototypeOf(to)) {
2834
- return;
2835
- }
2836
- Object.setPrototypeOf(to, fromPrototype);
2837
- }, "changePrototype");
2838
- var wrappedToString = /* @__PURE__ */ __name((withName, fromBody) => `/* Wrapped ${withName}*/
2839
- ${fromBody}`, "wrappedToString");
2840
- var toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString");
2841
- var toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name");
2842
- var changeToString = /* @__PURE__ */ __name((to, from, name) => {
2843
- const withName = name === "" ? "" : `with ${name.trim()}() `;
2844
- const newToString = wrappedToString.bind(null, withName, from.toString());
2845
- Object.defineProperty(newToString, "name", toStringName);
2846
- const { writable, enumerable, configurable } = toStringDescriptor;
2847
- Object.defineProperty(to, "toString", { value: newToString, writable, enumerable, configurable });
2848
- }, "changeToString");
2849
- function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {
2850
- const { name } = to;
2851
- for (const property of Reflect.ownKeys(from)) {
2852
- copyProperty(to, from, property, ignoreNonConfigurable);
2853
- }
2854
- changePrototype(to, from);
2855
- changeToString(to, from, name);
2856
- return to;
2857
- }
2858
- __name(mimicFunction, "mimicFunction");
2859
-
2860
- // ../../node_modules/.pnpm/onetime@7.0.0/node_modules/onetime/index.js
2861
- var calledFunctions = /* @__PURE__ */ new WeakMap();
2862
- var onetime = /* @__PURE__ */ __name((function_, options = {}) => {
2863
- if (typeof function_ !== "function") {
2864
- throw new TypeError("Expected a function");
2865
- }
2866
- let returnValue;
2867
- let callCount = 0;
2868
- const functionName = function_.displayName || function_.name || "<anonymous>";
2869
- const onetime2 = /* @__PURE__ */ __name(function(...arguments_) {
2870
- calledFunctions.set(onetime2, ++callCount);
2871
- if (callCount === 1) {
2872
- returnValue = function_.apply(this, arguments_);
2873
- function_ = void 0;
2874
- } else if (options.throw === true) {
2875
- throw new Error(`Function \`${functionName}\` can only be called once`);
2876
- }
2877
- return returnValue;
2878
- }, "onetime");
2879
- mimicFunction(onetime2, function_);
2880
- calledFunctions.set(onetime2, callCount);
2881
- return onetime2;
2882
- }, "onetime");
2883
- onetime.callCount = (function_) => {
2884
- if (!calledFunctions.has(function_)) {
2885
- throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
2886
- }
2887
- return calledFunctions.get(function_);
2888
- };
2889
- var onetime_default = onetime;
2890
-
2891
- // ../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js
2892
- var signals = [];
2893
- signals.push("SIGHUP", "SIGINT", "SIGTERM");
2894
- if (process.platform !== "win32") {
2895
- signals.push(
2896
- "SIGALRM",
2897
- "SIGABRT",
2898
- "SIGVTALRM",
2899
- "SIGXCPU",
2900
- "SIGXFSZ",
2901
- "SIGUSR2",
2902
- "SIGTRAP",
2903
- "SIGSYS",
2904
- "SIGQUIT",
2905
- "SIGIOT"
2906
- // should detect profiler and enable/disable accordingly.
2907
- // see #21
2908
- // 'SIGPROF'
2909
- );
2910
- }
2911
- if (process.platform === "linux") {
2912
- signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
2913
- }
2914
-
2915
- // ../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js
2916
- var processOk = /* @__PURE__ */ __name((process9) => !!process9 && typeof process9 === "object" && typeof process9.removeListener === "function" && typeof process9.emit === "function" && typeof process9.reallyExit === "function" && typeof process9.listeners === "function" && typeof process9.kill === "function" && typeof process9.pid === "number" && typeof process9.on === "function", "processOk");
2917
- var kExitEmitter = /* @__PURE__ */ Symbol.for("signal-exit emitter");
2918
- var global = globalThis;
2919
- var ObjectDefineProperty = Object.defineProperty.bind(Object);
2920
- var Emitter = class {
2921
- static {
2922
- __name(this, "Emitter");
2923
- }
2924
- emitted = {
2925
- afterExit: false,
2926
- exit: false
2927
- };
2928
- listeners = {
2929
- afterExit: [],
2930
- exit: []
2931
- };
2932
- count = 0;
2933
- id = Math.random();
2934
- constructor() {
2935
- if (global[kExitEmitter]) {
2936
- return global[kExitEmitter];
2937
- }
2938
- ObjectDefineProperty(global, kExitEmitter, {
2939
- value: this,
2940
- writable: false,
2941
- enumerable: false,
2942
- configurable: false
2943
- });
2944
- }
2945
- on(ev, fn) {
2946
- this.listeners[ev].push(fn);
2947
- }
2948
- removeListener(ev, fn) {
2949
- const list = this.listeners[ev];
2950
- const i = list.indexOf(fn);
2951
- if (i === -1) {
2298
+ var esbuild = __toESM(require_main(), 1);
2299
+ var import_meta = {};
2300
+ var SPINNER_FRAMES = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
2301
+ var SPINNER_INTERVAL = 80;
2302
+ function createSpinnerImpl(options) {
2303
+ let text = options.text;
2304
+ let interval;
2305
+ let frameIndex = 0;
2306
+ const isSilent = options.isSilent ?? false;
2307
+ const isTTY = /* @__PURE__ */ __name(() => process.stderr.isTTY === true, "isTTY");
2308
+ const clearLine = /* @__PURE__ */ __name(() => {
2309
+ if (isTTY()) {
2310
+ process.stderr.write("\r\x1B[K");
2311
+ }
2312
+ }, "clearLine");
2313
+ const render = /* @__PURE__ */ __name(() => {
2314
+ if (isSilent)
2952
2315
  return;
2953
- }
2954
- if (i === 0 && list.length === 1) {
2955
- list.length = 0;
2956
- } else {
2957
- list.splice(i, 1);
2958
- }
2959
- }
2960
- emit(ev, code, signal) {
2961
- if (this.emitted[ev]) {
2962
- return false;
2963
- }
2964
- this.emitted[ev] = true;
2965
- let ret = false;
2966
- for (const fn of this.listeners[ev]) {
2967
- ret = fn(code, signal) === true || ret;
2968
- }
2969
- if (ev === "exit") {
2970
- ret = this.emit("afterExit", code, signal) || ret;
2971
- }
2972
- return ret;
2973
- }
2974
- };
2975
- var SignalExitBase = class {
2976
- static {
2977
- __name(this, "SignalExitBase");
2978
- }
2979
- };
2980
- var signalExitWrap = /* @__PURE__ */ __name((handler) => {
2981
- return {
2982
- onExit(cb, opts) {
2983
- return handler.onExit(cb, opts);
2316
+ if (isTTY()) {
2317
+ const frame = SPINNER_FRAMES[frameIndex % SPINNER_FRAMES.length];
2318
+ process.stderr.write(`\r${frame} ${text}`);
2319
+ frameIndex++;
2320
+ }
2321
+ }, "render");
2322
+ const spinner = {
2323
+ get text() {
2324
+ return text;
2984
2325
  },
2985
- load() {
2986
- return handler.load();
2326
+ set text(value) {
2327
+ text = value;
2987
2328
  },
2988
- unload() {
2989
- return handler.unload();
2990
- }
2991
- };
2992
- }, "signalExitWrap");
2993
- var SignalExitFallback = class extends SignalExitBase {
2994
- static {
2995
- __name(this, "SignalExitFallback");
2996
- }
2997
- onExit() {
2998
- return () => {
2999
- };
3000
- }
3001
- load() {
3002
- }
3003
- unload() {
3004
- }
3005
- };
3006
- var SignalExit = class extends SignalExitBase {
3007
- static {
3008
- __name(this, "SignalExit");
3009
- }
3010
- // "SIGHUP" throws an `ENOSYS` error on Windows,
3011
- // so use a supported signal instead
3012
- /* c8 ignore start */
3013
- #hupSig = process3.platform === "win32" ? "SIGINT" : "SIGHUP";
3014
- /* c8 ignore stop */
3015
- #emitter = new Emitter();
3016
- #process;
3017
- #originalProcessEmit;
3018
- #originalProcessReallyExit;
3019
- #sigListeners = {};
3020
- #loaded = false;
3021
- constructor(process9) {
3022
- super();
3023
- this.#process = process9;
3024
- this.#sigListeners = {};
3025
- for (const sig of signals) {
3026
- this.#sigListeners[sig] = () => {
3027
- const listeners = this.#process.listeners(sig);
3028
- let { count } = this.#emitter;
3029
- const p = process9;
3030
- if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") {
3031
- count += p.__signal_exit_emitter__.count;
3032
- }
3033
- if (listeners.length === count) {
3034
- this.unload();
3035
- const ret = this.#emitter.emit("exit", null, sig);
3036
- const s = sig === "SIGHUP" ? this.#hupSig : sig;
3037
- if (!ret)
3038
- process9.kill(process9.pid, s);
3039
- }
3040
- };
3041
- }
3042
- this.#originalProcessReallyExit = process9.reallyExit;
3043
- this.#originalProcessEmit = process9.emit;
3044
- }
3045
- onExit(cb, opts) {
3046
- if (!processOk(this.#process)) {
3047
- return () => {
3048
- };
3049
- }
3050
- if (this.#loaded === false) {
3051
- this.load();
3052
- }
3053
- const ev = opts?.alwaysLast ? "afterExit" : "exit";
3054
- this.#emitter.on(ev, cb);
3055
- return () => {
3056
- this.#emitter.removeListener(ev, cb);
3057
- if (this.#emitter.listeners["exit"].length === 0 && this.#emitter.listeners["afterExit"].length === 0) {
3058
- this.unload();
3059
- }
3060
- };
3061
- }
3062
- load() {
3063
- if (this.#loaded) {
3064
- return;
3065
- }
3066
- this.#loaded = true;
3067
- this.#emitter.count += 1;
3068
- for (const sig of signals) {
3069
- try {
3070
- const fn = this.#sigListeners[sig];
3071
- if (fn)
3072
- this.#process.on(sig, fn);
3073
- } catch (_) {
3074
- }
3075
- }
3076
- this.#process.emit = (ev, ...a) => {
3077
- return this.#processEmit(ev, ...a);
3078
- };
3079
- this.#process.reallyExit = (code) => {
3080
- return this.#processReallyExit(code);
3081
- };
3082
- }
3083
- unload() {
3084
- if (!this.#loaded) {
3085
- return;
3086
- }
3087
- this.#loaded = false;
3088
- signals.forEach((sig) => {
3089
- const listener = this.#sigListeners[sig];
3090
- if (!listener) {
3091
- throw new Error("Listener not defined for signal: " + sig);
3092
- }
3093
- try {
3094
- this.#process.removeListener(sig, listener);
3095
- } catch (_) {
3096
- }
3097
- });
3098
- this.#process.emit = this.#originalProcessEmit;
3099
- this.#process.reallyExit = this.#originalProcessReallyExit;
3100
- this.#emitter.count -= 1;
3101
- }
3102
- #processReallyExit(code) {
3103
- if (!processOk(this.#process)) {
3104
- return 0;
3105
- }
3106
- this.#process.exitCode = code || 0;
3107
- this.#emitter.emit("exit", this.#process.exitCode, null);
3108
- return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);
3109
- }
3110
- #processEmit(ev, ...args) {
3111
- const og = this.#originalProcessEmit;
3112
- if (ev === "exit" && processOk(this.#process)) {
3113
- if (typeof args[0] === "number") {
3114
- this.#process.exitCode = args[0];
3115
- }
3116
- const ret = og.call(this.#process, ev, ...args);
3117
- this.#emitter.emit("exit", this.#process.exitCode, null);
3118
- return ret;
3119
- } else {
3120
- return og.call(this.#process, ev, ...args);
3121
- }
3122
- }
3123
- };
3124
- var process3 = globalThis.process;
3125
- var {
3126
- /**
3127
- * Called when the process is exiting, whether via signal, explicit
3128
- * exit, or running out of stuff to do.
3129
- *
3130
- * If the global process object is not suitable for instrumentation,
3131
- * then this will be a no-op.
3132
- *
3133
- * Returns a function that may be used to unload signal-exit.
3134
- */
3135
- onExit,
3136
- /**
3137
- * Load the listeners. Likely you never need to call this, unless
3138
- * doing a rather deep integration with signal-exit functionality.
3139
- * Mostly exposed for the benefit of testing.
3140
- *
3141
- * @internal
3142
- */
3143
- load,
3144
- /**
3145
- * Unload the listeners. Likely you never need to call this, unless
3146
- * doing a rather deep integration with signal-exit functionality.
3147
- * Mostly exposed for the benefit of testing.
3148
- *
3149
- * @internal
3150
- */
3151
- unload
3152
- } = signalExitWrap(processOk(process3) ? new SignalExit(process3) : new SignalExitFallback());
3153
-
3154
- // ../../node_modules/.pnpm/restore-cursor@5.1.0/node_modules/restore-cursor/index.js
3155
- var terminal = import_node_process2.default.stderr.isTTY ? import_node_process2.default.stderr : import_node_process2.default.stdout.isTTY ? import_node_process2.default.stdout : void 0;
3156
- var restoreCursor = terminal ? onetime_default(() => {
3157
- onExit(() => {
3158
- terminal.write("\x1B[?25h");
3159
- }, { alwaysLast: true });
3160
- }) : () => {
3161
- };
3162
- var restore_cursor_default = restoreCursor;
3163
-
3164
- // ../../node_modules/.pnpm/cli-cursor@5.0.0/node_modules/cli-cursor/index.js
3165
- var isHidden = false;
3166
- var cliCursor = {};
3167
- cliCursor.show = (writableStream = import_node_process3.default.stderr) => {
3168
- if (!writableStream.isTTY) {
3169
- return;
3170
- }
3171
- isHidden = false;
3172
- writableStream.write("\x1B[?25h");
3173
- };
3174
- cliCursor.hide = (writableStream = import_node_process3.default.stderr) => {
3175
- if (!writableStream.isTTY) {
3176
- return;
3177
- }
3178
- restore_cursor_default();
3179
- isHidden = true;
3180
- writableStream.write("\x1B[?25l");
3181
- };
3182
- cliCursor.toggle = (force, writableStream) => {
3183
- if (force !== void 0) {
3184
- isHidden = force;
3185
- }
3186
- if (isHidden) {
3187
- cliCursor.show(writableStream);
3188
- } else {
3189
- cliCursor.hide(writableStream);
3190
- }
3191
- };
3192
- var cli_cursor_default = cliCursor;
3193
-
3194
- // ../../node_modules/.pnpm/cli-spinners@3.4.0/node_modules/cli-spinners/spinners.json
3195
- var spinners_default = {
3196
- dots: {
3197
- interval: 80,
3198
- frames: [
3199
- "\u280B",
3200
- "\u2819",
3201
- "\u2839",
3202
- "\u2838",
3203
- "\u283C",
3204
- "\u2834",
3205
- "\u2826",
3206
- "\u2827",
3207
- "\u2807",
3208
- "\u280F"
3209
- ]
3210
- },
3211
- dots2: {
3212
- interval: 80,
3213
- frames: [
3214
- "\u28FE",
3215
- "\u28FD",
3216
- "\u28FB",
3217
- "\u28BF",
3218
- "\u287F",
3219
- "\u28DF",
3220
- "\u28EF",
3221
- "\u28F7"
3222
- ]
3223
- },
3224
- dots3: {
3225
- interval: 80,
3226
- frames: [
3227
- "\u280B",
3228
- "\u2819",
3229
- "\u281A",
3230
- "\u281E",
3231
- "\u2816",
3232
- "\u2826",
3233
- "\u2834",
3234
- "\u2832",
3235
- "\u2833",
3236
- "\u2813"
3237
- ]
3238
- },
3239
- dots4: {
3240
- interval: 80,
3241
- frames: [
3242
- "\u2804",
3243
- "\u2806",
3244
- "\u2807",
3245
- "\u280B",
3246
- "\u2819",
3247
- "\u2838",
3248
- "\u2830",
3249
- "\u2820",
3250
- "\u2830",
3251
- "\u2838",
3252
- "\u2819",
3253
- "\u280B",
3254
- "\u2807",
3255
- "\u2806"
3256
- ]
3257
- },
3258
- dots5: {
3259
- interval: 80,
3260
- frames: [
3261
- "\u280B",
3262
- "\u2819",
3263
- "\u281A",
3264
- "\u2812",
3265
- "\u2802",
3266
- "\u2802",
3267
- "\u2812",
3268
- "\u2832",
3269
- "\u2834",
3270
- "\u2826",
3271
- "\u2816",
3272
- "\u2812",
3273
- "\u2810",
3274
- "\u2810",
3275
- "\u2812",
3276
- "\u2813",
3277
- "\u280B"
3278
- ]
3279
- },
3280
- dots6: {
3281
- interval: 80,
3282
- frames: [
3283
- "\u2801",
3284
- "\u2809",
3285
- "\u2819",
3286
- "\u281A",
3287
- "\u2812",
3288
- "\u2802",
3289
- "\u2802",
3290
- "\u2812",
3291
- "\u2832",
3292
- "\u2834",
3293
- "\u2824",
3294
- "\u2804",
3295
- "\u2804",
3296
- "\u2824",
3297
- "\u2834",
3298
- "\u2832",
3299
- "\u2812",
3300
- "\u2802",
3301
- "\u2802",
3302
- "\u2812",
3303
- "\u281A",
3304
- "\u2819",
3305
- "\u2809",
3306
- "\u2801"
3307
- ]
3308
- },
3309
- dots7: {
3310
- interval: 80,
3311
- frames: [
3312
- "\u2808",
3313
- "\u2809",
3314
- "\u280B",
3315
- "\u2813",
3316
- "\u2812",
3317
- "\u2810",
3318
- "\u2810",
3319
- "\u2812",
3320
- "\u2816",
3321
- "\u2826",
3322
- "\u2824",
3323
- "\u2820",
3324
- "\u2820",
3325
- "\u2824",
3326
- "\u2826",
3327
- "\u2816",
3328
- "\u2812",
3329
- "\u2810",
3330
- "\u2810",
3331
- "\u2812",
3332
- "\u2813",
3333
- "\u280B",
3334
- "\u2809",
3335
- "\u2808"
3336
- ]
3337
- },
3338
- dots8: {
3339
- interval: 80,
3340
- frames: [
3341
- "\u2801",
3342
- "\u2801",
3343
- "\u2809",
3344
- "\u2819",
3345
- "\u281A",
3346
- "\u2812",
3347
- "\u2802",
3348
- "\u2802",
3349
- "\u2812",
3350
- "\u2832",
3351
- "\u2834",
3352
- "\u2824",
3353
- "\u2804",
3354
- "\u2804",
3355
- "\u2824",
3356
- "\u2820",
3357
- "\u2820",
3358
- "\u2824",
3359
- "\u2826",
3360
- "\u2816",
3361
- "\u2812",
3362
- "\u2810",
3363
- "\u2810",
3364
- "\u2812",
3365
- "\u2813",
3366
- "\u280B",
3367
- "\u2809",
3368
- "\u2808",
3369
- "\u2808"
3370
- ]
3371
- },
3372
- dots9: {
3373
- interval: 80,
3374
- frames: [
3375
- "\u28B9",
3376
- "\u28BA",
3377
- "\u28BC",
3378
- "\u28F8",
3379
- "\u28C7",
3380
- "\u2867",
3381
- "\u2857",
3382
- "\u284F"
3383
- ]
3384
- },
3385
- dots10: {
3386
- interval: 80,
3387
- frames: [
3388
- "\u2884",
3389
- "\u2882",
3390
- "\u2881",
3391
- "\u2841",
3392
- "\u2848",
3393
- "\u2850",
3394
- "\u2860"
3395
- ]
3396
- },
3397
- dots11: {
3398
- interval: 100,
3399
- frames: [
3400
- "\u2801",
3401
- "\u2802",
3402
- "\u2804",
3403
- "\u2840",
3404
- "\u2880",
3405
- "\u2820",
3406
- "\u2810",
3407
- "\u2808"
3408
- ]
3409
- },
3410
- dots12: {
3411
- interval: 80,
3412
- frames: [
3413
- "\u2880\u2800",
3414
- "\u2840\u2800",
3415
- "\u2804\u2800",
3416
- "\u2882\u2800",
3417
- "\u2842\u2800",
3418
- "\u2805\u2800",
3419
- "\u2883\u2800",
3420
- "\u2843\u2800",
3421
- "\u280D\u2800",
3422
- "\u288B\u2800",
3423
- "\u284B\u2800",
3424
- "\u280D\u2801",
3425
- "\u288B\u2801",
3426
- "\u284B\u2801",
3427
- "\u280D\u2809",
3428
- "\u280B\u2809",
3429
- "\u280B\u2809",
3430
- "\u2809\u2819",
3431
- "\u2809\u2819",
3432
- "\u2809\u2829",
3433
- "\u2808\u2899",
3434
- "\u2808\u2859",
3435
- "\u2888\u2829",
3436
- "\u2840\u2899",
3437
- "\u2804\u2859",
3438
- "\u2882\u2829",
3439
- "\u2842\u2898",
3440
- "\u2805\u2858",
3441
- "\u2883\u2828",
3442
- "\u2843\u2890",
3443
- "\u280D\u2850",
3444
- "\u288B\u2820",
3445
- "\u284B\u2880",
3446
- "\u280D\u2841",
3447
- "\u288B\u2801",
3448
- "\u284B\u2801",
3449
- "\u280D\u2809",
3450
- "\u280B\u2809",
3451
- "\u280B\u2809",
3452
- "\u2809\u2819",
3453
- "\u2809\u2819",
3454
- "\u2809\u2829",
3455
- "\u2808\u2899",
3456
- "\u2808\u2859",
3457
- "\u2808\u2829",
3458
- "\u2800\u2899",
3459
- "\u2800\u2859",
3460
- "\u2800\u2829",
3461
- "\u2800\u2898",
3462
- "\u2800\u2858",
3463
- "\u2800\u2828",
3464
- "\u2800\u2890",
3465
- "\u2800\u2850",
3466
- "\u2800\u2820",
3467
- "\u2800\u2880",
3468
- "\u2800\u2840"
3469
- ]
3470
- },
3471
- dots13: {
3472
- interval: 80,
3473
- frames: [
3474
- "\u28FC",
3475
- "\u28F9",
3476
- "\u28BB",
3477
- "\u283F",
3478
- "\u285F",
3479
- "\u28CF",
3480
- "\u28E7",
3481
- "\u28F6"
3482
- ]
3483
- },
3484
- dots14: {
3485
- interval: 80,
3486
- frames: [
3487
- "\u2809\u2809",
3488
- "\u2808\u2819",
3489
- "\u2800\u2839",
3490
- "\u2800\u28B8",
3491
- "\u2800\u28F0",
3492
- "\u2880\u28E0",
3493
- "\u28C0\u28C0",
3494
- "\u28C4\u2840",
3495
- "\u28C6\u2800",
3496
- "\u2847\u2800",
3497
- "\u280F\u2800",
3498
- "\u280B\u2801"
3499
- ]
3500
- },
3501
- dots8Bit: {
3502
- interval: 80,
3503
- frames: [
3504
- "\u2800",
3505
- "\u2801",
3506
- "\u2802",
3507
- "\u2803",
3508
- "\u2804",
3509
- "\u2805",
3510
- "\u2806",
3511
- "\u2807",
3512
- "\u2840",
3513
- "\u2841",
3514
- "\u2842",
3515
- "\u2843",
3516
- "\u2844",
3517
- "\u2845",
3518
- "\u2846",
3519
- "\u2847",
3520
- "\u2808",
3521
- "\u2809",
3522
- "\u280A",
3523
- "\u280B",
3524
- "\u280C",
3525
- "\u280D",
3526
- "\u280E",
3527
- "\u280F",
3528
- "\u2848",
3529
- "\u2849",
3530
- "\u284A",
3531
- "\u284B",
3532
- "\u284C",
3533
- "\u284D",
3534
- "\u284E",
3535
- "\u284F",
3536
- "\u2810",
3537
- "\u2811",
3538
- "\u2812",
3539
- "\u2813",
3540
- "\u2814",
3541
- "\u2815",
3542
- "\u2816",
3543
- "\u2817",
3544
- "\u2850",
3545
- "\u2851",
3546
- "\u2852",
3547
- "\u2853",
3548
- "\u2854",
3549
- "\u2855",
3550
- "\u2856",
3551
- "\u2857",
3552
- "\u2818",
3553
- "\u2819",
3554
- "\u281A",
3555
- "\u281B",
3556
- "\u281C",
3557
- "\u281D",
3558
- "\u281E",
3559
- "\u281F",
3560
- "\u2858",
3561
- "\u2859",
3562
- "\u285A",
3563
- "\u285B",
3564
- "\u285C",
3565
- "\u285D",
3566
- "\u285E",
3567
- "\u285F",
3568
- "\u2820",
3569
- "\u2821",
3570
- "\u2822",
3571
- "\u2823",
3572
- "\u2824",
3573
- "\u2825",
3574
- "\u2826",
3575
- "\u2827",
3576
- "\u2860",
3577
- "\u2861",
3578
- "\u2862",
3579
- "\u2863",
3580
- "\u2864",
3581
- "\u2865",
3582
- "\u2866",
3583
- "\u2867",
3584
- "\u2828",
3585
- "\u2829",
3586
- "\u282A",
3587
- "\u282B",
3588
- "\u282C",
3589
- "\u282D",
3590
- "\u282E",
3591
- "\u282F",
3592
- "\u2868",
3593
- "\u2869",
3594
- "\u286A",
3595
- "\u286B",
3596
- "\u286C",
3597
- "\u286D",
3598
- "\u286E",
3599
- "\u286F",
3600
- "\u2830",
3601
- "\u2831",
3602
- "\u2832",
3603
- "\u2833",
3604
- "\u2834",
3605
- "\u2835",
3606
- "\u2836",
3607
- "\u2837",
3608
- "\u2870",
3609
- "\u2871",
3610
- "\u2872",
3611
- "\u2873",
3612
- "\u2874",
3613
- "\u2875",
3614
- "\u2876",
3615
- "\u2877",
3616
- "\u2838",
3617
- "\u2839",
3618
- "\u283A",
3619
- "\u283B",
3620
- "\u283C",
3621
- "\u283D",
3622
- "\u283E",
3623
- "\u283F",
3624
- "\u2878",
3625
- "\u2879",
3626
- "\u287A",
3627
- "\u287B",
3628
- "\u287C",
3629
- "\u287D",
3630
- "\u287E",
3631
- "\u287F",
3632
- "\u2880",
3633
- "\u2881",
3634
- "\u2882",
3635
- "\u2883",
3636
- "\u2884",
3637
- "\u2885",
3638
- "\u2886",
3639
- "\u2887",
3640
- "\u28C0",
3641
- "\u28C1",
3642
- "\u28C2",
3643
- "\u28C3",
3644
- "\u28C4",
3645
- "\u28C5",
3646
- "\u28C6",
3647
- "\u28C7",
3648
- "\u2888",
3649
- "\u2889",
3650
- "\u288A",
3651
- "\u288B",
3652
- "\u288C",
3653
- "\u288D",
3654
- "\u288E",
3655
- "\u288F",
3656
- "\u28C8",
3657
- "\u28C9",
3658
- "\u28CA",
3659
- "\u28CB",
3660
- "\u28CC",
3661
- "\u28CD",
3662
- "\u28CE",
3663
- "\u28CF",
3664
- "\u2890",
3665
- "\u2891",
3666
- "\u2892",
3667
- "\u2893",
3668
- "\u2894",
3669
- "\u2895",
3670
- "\u2896",
3671
- "\u2897",
3672
- "\u28D0",
3673
- "\u28D1",
3674
- "\u28D2",
3675
- "\u28D3",
3676
- "\u28D4",
3677
- "\u28D5",
3678
- "\u28D6",
3679
- "\u28D7",
3680
- "\u2898",
3681
- "\u2899",
3682
- "\u289A",
3683
- "\u289B",
3684
- "\u289C",
3685
- "\u289D",
3686
- "\u289E",
3687
- "\u289F",
3688
- "\u28D8",
3689
- "\u28D9",
3690
- "\u28DA",
3691
- "\u28DB",
3692
- "\u28DC",
3693
- "\u28DD",
3694
- "\u28DE",
3695
- "\u28DF",
3696
- "\u28A0",
3697
- "\u28A1",
3698
- "\u28A2",
3699
- "\u28A3",
3700
- "\u28A4",
3701
- "\u28A5",
3702
- "\u28A6",
3703
- "\u28A7",
3704
- "\u28E0",
3705
- "\u28E1",
3706
- "\u28E2",
3707
- "\u28E3",
3708
- "\u28E4",
3709
- "\u28E5",
3710
- "\u28E6",
3711
- "\u28E7",
3712
- "\u28A8",
3713
- "\u28A9",
3714
- "\u28AA",
3715
- "\u28AB",
3716
- "\u28AC",
3717
- "\u28AD",
3718
- "\u28AE",
3719
- "\u28AF",
3720
- "\u28E8",
3721
- "\u28E9",
3722
- "\u28EA",
3723
- "\u28EB",
3724
- "\u28EC",
3725
- "\u28ED",
3726
- "\u28EE",
3727
- "\u28EF",
3728
- "\u28B0",
3729
- "\u28B1",
3730
- "\u28B2",
3731
- "\u28B3",
3732
- "\u28B4",
3733
- "\u28B5",
3734
- "\u28B6",
3735
- "\u28B7",
3736
- "\u28F0",
3737
- "\u28F1",
3738
- "\u28F2",
3739
- "\u28F3",
3740
- "\u28F4",
3741
- "\u28F5",
3742
- "\u28F6",
3743
- "\u28F7",
3744
- "\u28B8",
3745
- "\u28B9",
3746
- "\u28BA",
3747
- "\u28BB",
3748
- "\u28BC",
3749
- "\u28BD",
3750
- "\u28BE",
3751
- "\u28BF",
3752
- "\u28F8",
3753
- "\u28F9",
3754
- "\u28FA",
3755
- "\u28FB",
3756
- "\u28FC",
3757
- "\u28FD",
3758
- "\u28FE",
3759
- "\u28FF"
3760
- ]
3761
- },
3762
- dotsCircle: {
3763
- interval: 80,
3764
- frames: [
3765
- "\u288E ",
3766
- "\u280E\u2801",
3767
- "\u280A\u2811",
3768
- "\u2808\u2831",
3769
- " \u2871",
3770
- "\u2880\u2870",
3771
- "\u2884\u2860",
3772
- "\u2886\u2840"
3773
- ]
3774
- },
3775
- sand: {
3776
- interval: 80,
3777
- frames: [
3778
- "\u2801",
3779
- "\u2802",
3780
- "\u2804",
3781
- "\u2840",
3782
- "\u2848",
3783
- "\u2850",
3784
- "\u2860",
3785
- "\u28C0",
3786
- "\u28C1",
3787
- "\u28C2",
3788
- "\u28C4",
3789
- "\u28CC",
3790
- "\u28D4",
3791
- "\u28E4",
3792
- "\u28E5",
3793
- "\u28E6",
3794
- "\u28EE",
3795
- "\u28F6",
3796
- "\u28F7",
3797
- "\u28FF",
3798
- "\u287F",
3799
- "\u283F",
3800
- "\u289F",
3801
- "\u281F",
3802
- "\u285B",
3803
- "\u281B",
3804
- "\u282B",
3805
- "\u288B",
3806
- "\u280B",
3807
- "\u280D",
3808
- "\u2849",
3809
- "\u2809",
3810
- "\u2811",
3811
- "\u2821",
3812
- "\u2881"
3813
- ]
3814
- },
3815
- line: {
3816
- interval: 130,
3817
- frames: [
3818
- "-",
3819
- "\\",
3820
- "|",
3821
- "/"
3822
- ]
3823
- },
3824
- line2: {
3825
- interval: 100,
3826
- frames: [
3827
- "\u2802",
3828
- "-",
3829
- "\u2013",
3830
- "\u2014",
3831
- "\u2013",
3832
- "-"
3833
- ]
3834
- },
3835
- rollingLine: {
3836
- interval: 80,
3837
- frames: [
3838
- "/ ",
3839
- " - ",
3840
- " \\ ",
3841
- " |",
3842
- " |",
3843
- " \\ ",
3844
- " - ",
3845
- "/ "
3846
- ]
3847
- },
3848
- pipe: {
3849
- interval: 100,
3850
- frames: [
3851
- "\u2524",
3852
- "\u2518",
3853
- "\u2534",
3854
- "\u2514",
3855
- "\u251C",
3856
- "\u250C",
3857
- "\u252C",
3858
- "\u2510"
3859
- ]
3860
- },
3861
- simpleDots: {
3862
- interval: 400,
3863
- frames: [
3864
- ". ",
3865
- ".. ",
3866
- "...",
3867
- " "
3868
- ]
3869
- },
3870
- simpleDotsScrolling: {
3871
- interval: 200,
3872
- frames: [
3873
- ". ",
3874
- ".. ",
3875
- "...",
3876
- " ..",
3877
- " .",
3878
- " "
3879
- ]
3880
- },
3881
- star: {
3882
- interval: 70,
3883
- frames: [
3884
- "\u2736",
3885
- "\u2738",
3886
- "\u2739",
3887
- "\u273A",
3888
- "\u2739",
3889
- "\u2737"
3890
- ]
3891
- },
3892
- star2: {
3893
- interval: 80,
3894
- frames: [
3895
- "+",
3896
- "x",
3897
- "*"
3898
- ]
3899
- },
3900
- flip: {
3901
- interval: 70,
3902
- frames: [
3903
- "_",
3904
- "_",
3905
- "_",
3906
- "-",
3907
- "`",
3908
- "`",
3909
- "'",
3910
- "\xB4",
3911
- "-",
3912
- "_",
3913
- "_",
3914
- "_"
3915
- ]
3916
- },
3917
- hamburger: {
3918
- interval: 100,
3919
- frames: [
3920
- "\u2631",
3921
- "\u2632",
3922
- "\u2634"
3923
- ]
3924
- },
3925
- growVertical: {
3926
- interval: 120,
3927
- frames: [
3928
- "\u2581",
3929
- "\u2583",
3930
- "\u2584",
3931
- "\u2585",
3932
- "\u2586",
3933
- "\u2587",
3934
- "\u2586",
3935
- "\u2585",
3936
- "\u2584",
3937
- "\u2583"
3938
- ]
3939
- },
3940
- growHorizontal: {
3941
- interval: 120,
3942
- frames: [
3943
- "\u258F",
3944
- "\u258E",
3945
- "\u258D",
3946
- "\u258C",
3947
- "\u258B",
3948
- "\u258A",
3949
- "\u2589",
3950
- "\u258A",
3951
- "\u258B",
3952
- "\u258C",
3953
- "\u258D",
3954
- "\u258E"
3955
- ]
3956
- },
3957
- balloon: {
3958
- interval: 140,
3959
- frames: [
3960
- " ",
3961
- ".",
3962
- "o",
3963
- "O",
3964
- "@",
3965
- "*",
3966
- " "
3967
- ]
3968
- },
3969
- balloon2: {
3970
- interval: 120,
3971
- frames: [
3972
- ".",
3973
- "o",
3974
- "O",
3975
- "\xB0",
3976
- "O",
3977
- "o",
3978
- "."
3979
- ]
3980
- },
3981
- noise: {
3982
- interval: 100,
3983
- frames: [
3984
- "\u2593",
3985
- "\u2592",
3986
- "\u2591"
3987
- ]
3988
- },
3989
- bounce: {
3990
- interval: 120,
3991
- frames: [
3992
- "\u2801",
3993
- "\u2802",
3994
- "\u2804",
3995
- "\u2802"
3996
- ]
3997
- },
3998
- boxBounce: {
3999
- interval: 120,
4000
- frames: [
4001
- "\u2596",
4002
- "\u2598",
4003
- "\u259D",
4004
- "\u2597"
4005
- ]
4006
- },
4007
- boxBounce2: {
4008
- interval: 100,
4009
- frames: [
4010
- "\u258C",
4011
- "\u2580",
4012
- "\u2590",
4013
- "\u2584"
4014
- ]
4015
- },
4016
- triangle: {
4017
- interval: 50,
4018
- frames: [
4019
- "\u25E2",
4020
- "\u25E3",
4021
- "\u25E4",
4022
- "\u25E5"
4023
- ]
4024
- },
4025
- binary: {
4026
- interval: 80,
4027
- frames: [
4028
- "010010",
4029
- "001100",
4030
- "100101",
4031
- "111010",
4032
- "111101",
4033
- "010111",
4034
- "101011",
4035
- "111000",
4036
- "110011",
4037
- "110101"
4038
- ]
4039
- },
4040
- arc: {
4041
- interval: 100,
4042
- frames: [
4043
- "\u25DC",
4044
- "\u25E0",
4045
- "\u25DD",
4046
- "\u25DE",
4047
- "\u25E1",
4048
- "\u25DF"
4049
- ]
4050
- },
4051
- circle: {
4052
- interval: 120,
4053
- frames: [
4054
- "\u25E1",
4055
- "\u2299",
4056
- "\u25E0"
4057
- ]
4058
- },
4059
- squareCorners: {
4060
- interval: 180,
4061
- frames: [
4062
- "\u25F0",
4063
- "\u25F3",
4064
- "\u25F2",
4065
- "\u25F1"
4066
- ]
4067
- },
4068
- circleQuarters: {
4069
- interval: 120,
4070
- frames: [
4071
- "\u25F4",
4072
- "\u25F7",
4073
- "\u25F6",
4074
- "\u25F5"
4075
- ]
4076
- },
4077
- circleHalves: {
4078
- interval: 50,
4079
- frames: [
4080
- "\u25D0",
4081
- "\u25D3",
4082
- "\u25D1",
4083
- "\u25D2"
4084
- ]
4085
- },
4086
- squish: {
4087
- interval: 100,
4088
- frames: [
4089
- "\u256B",
4090
- "\u256A"
4091
- ]
4092
- },
4093
- toggle: {
4094
- interval: 250,
4095
- frames: [
4096
- "\u22B6",
4097
- "\u22B7"
4098
- ]
4099
- },
4100
- toggle2: {
4101
- interval: 80,
4102
- frames: [
4103
- "\u25AB",
4104
- "\u25AA"
4105
- ]
4106
- },
4107
- toggle3: {
4108
- interval: 120,
4109
- frames: [
4110
- "\u25A1",
4111
- "\u25A0"
4112
- ]
4113
- },
4114
- toggle4: {
4115
- interval: 100,
4116
- frames: [
4117
- "\u25A0",
4118
- "\u25A1",
4119
- "\u25AA",
4120
- "\u25AB"
4121
- ]
4122
- },
4123
- toggle5: {
4124
- interval: 100,
4125
- frames: [
4126
- "\u25AE",
4127
- "\u25AF"
4128
- ]
4129
- },
4130
- toggle6: {
4131
- interval: 300,
4132
- frames: [
4133
- "\u101D",
4134
- "\u1040"
4135
- ]
4136
- },
4137
- toggle7: {
4138
- interval: 80,
4139
- frames: [
4140
- "\u29BE",
4141
- "\u29BF"
4142
- ]
4143
- },
4144
- toggle8: {
4145
- interval: 100,
4146
- frames: [
4147
- "\u25CD",
4148
- "\u25CC"
4149
- ]
4150
- },
4151
- toggle9: {
4152
- interval: 100,
4153
- frames: [
4154
- "\u25C9",
4155
- "\u25CE"
4156
- ]
4157
- },
4158
- toggle10: {
4159
- interval: 100,
4160
- frames: [
4161
- "\u3282",
4162
- "\u3280",
4163
- "\u3281"
4164
- ]
4165
- },
4166
- toggle11: {
4167
- interval: 50,
4168
- frames: [
4169
- "\u29C7",
4170
- "\u29C6"
4171
- ]
4172
- },
4173
- toggle12: {
4174
- interval: 120,
4175
- frames: [
4176
- "\u2617",
4177
- "\u2616"
4178
- ]
4179
- },
4180
- toggle13: {
4181
- interval: 80,
4182
- frames: [
4183
- "=",
4184
- "*",
4185
- "-"
4186
- ]
4187
- },
4188
- arrow: {
4189
- interval: 100,
4190
- frames: [
4191
- "\u2190",
4192
- "\u2196",
4193
- "\u2191",
4194
- "\u2197",
4195
- "\u2192",
4196
- "\u2198",
4197
- "\u2193",
4198
- "\u2199"
4199
- ]
4200
- },
4201
- arrow2: {
4202
- interval: 80,
4203
- frames: [
4204
- "\u2B06\uFE0F ",
4205
- "\u2197\uFE0F ",
4206
- "\u27A1\uFE0F ",
4207
- "\u2198\uFE0F ",
4208
- "\u2B07\uFE0F ",
4209
- "\u2199\uFE0F ",
4210
- "\u2B05\uFE0F ",
4211
- "\u2196\uFE0F "
4212
- ]
4213
- },
4214
- arrow3: {
4215
- interval: 120,
4216
- frames: [
4217
- "\u25B9\u25B9\u25B9\u25B9\u25B9",
4218
- "\u25B8\u25B9\u25B9\u25B9\u25B9",
4219
- "\u25B9\u25B8\u25B9\u25B9\u25B9",
4220
- "\u25B9\u25B9\u25B8\u25B9\u25B9",
4221
- "\u25B9\u25B9\u25B9\u25B8\u25B9",
4222
- "\u25B9\u25B9\u25B9\u25B9\u25B8"
4223
- ]
4224
- },
4225
- bouncingBar: {
4226
- interval: 80,
4227
- frames: [
4228
- "[ ]",
4229
- "[= ]",
4230
- "[== ]",
4231
- "[=== ]",
4232
- "[====]",
4233
- "[ ===]",
4234
- "[ ==]",
4235
- "[ =]",
4236
- "[ ]",
4237
- "[ =]",
4238
- "[ ==]",
4239
- "[ ===]",
4240
- "[====]",
4241
- "[=== ]",
4242
- "[== ]",
4243
- "[= ]"
4244
- ]
4245
- },
4246
- bouncingBall: {
4247
- interval: 80,
4248
- frames: [
4249
- "( \u25CF )",
4250
- "( \u25CF )",
4251
- "( \u25CF )",
4252
- "( \u25CF )",
4253
- "( \u25CF)",
4254
- "( \u25CF )",
4255
- "( \u25CF )",
4256
- "( \u25CF )",
4257
- "( \u25CF )",
4258
- "(\u25CF )"
4259
- ]
4260
- },
4261
- smiley: {
4262
- interval: 200,
4263
- frames: [
4264
- "\u{1F604} ",
4265
- "\u{1F61D} "
4266
- ]
4267
- },
4268
- monkey: {
4269
- interval: 300,
4270
- frames: [
4271
- "\u{1F648} ",
4272
- "\u{1F648} ",
4273
- "\u{1F649} ",
4274
- "\u{1F64A} "
4275
- ]
4276
- },
4277
- hearts: {
4278
- interval: 100,
4279
- frames: [
4280
- "\u{1F49B} ",
4281
- "\u{1F499} ",
4282
- "\u{1F49C} ",
4283
- "\u{1F49A} ",
4284
- "\u{1F497} "
4285
- ]
4286
- },
4287
- clock: {
4288
- interval: 100,
4289
- frames: [
4290
- "\u{1F55B} ",
4291
- "\u{1F550} ",
4292
- "\u{1F551} ",
4293
- "\u{1F552} ",
4294
- "\u{1F553} ",
4295
- "\u{1F554} ",
4296
- "\u{1F555} ",
4297
- "\u{1F556} ",
4298
- "\u{1F557} ",
4299
- "\u{1F558} ",
4300
- "\u{1F559} ",
4301
- "\u{1F55A} "
4302
- ]
4303
- },
4304
- earth: {
4305
- interval: 180,
4306
- frames: [
4307
- "\u{1F30D} ",
4308
- "\u{1F30E} ",
4309
- "\u{1F30F} "
4310
- ]
4311
- },
4312
- material: {
4313
- interval: 17,
4314
- frames: [
4315
- "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4316
- "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4317
- "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4318
- "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4319
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4320
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4321
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4322
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4323
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4324
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4325
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4326
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4327
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4328
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
4329
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
4330
- "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
4331
- "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
4332
- "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
4333
- "\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
4334
- "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
4335
- "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
4336
- "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
4337
- "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
4338
- "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
4339
- "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
4340
- "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
4341
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4342
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4343
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4344
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4345
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4346
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4347
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4348
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4349
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4350
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4351
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4352
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4353
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588",
4354
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
4355
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
4356
- "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
4357
- "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
4358
- "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
4359
- "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
4360
- "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
4361
- "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
4362
- "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
4363
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
4364
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4365
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4366
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4367
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4368
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4369
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4370
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4371
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4372
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
4373
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
4374
- "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
4375
- "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
4376
- "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
4377
- "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
4378
- "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
4379
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
4380
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
4381
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
4382
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
4383
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
4384
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
4385
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
4386
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
4387
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
4388
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
4389
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4390
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
4391
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
4392
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
4393
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
4394
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
4395
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
4396
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
4397
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
4398
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
4399
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
4400
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
4401
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
4402
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
4403
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4404
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4405
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
4406
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"
4407
- ]
4408
- },
4409
- moon: {
4410
- interval: 80,
4411
- frames: [
4412
- "\u{1F311} ",
4413
- "\u{1F312} ",
4414
- "\u{1F313} ",
4415
- "\u{1F314} ",
4416
- "\u{1F315} ",
4417
- "\u{1F316} ",
4418
- "\u{1F317} ",
4419
- "\u{1F318} "
4420
- ]
4421
- },
4422
- runner: {
4423
- interval: 140,
4424
- frames: [
4425
- "\u{1F6B6} ",
4426
- "\u{1F3C3} "
4427
- ]
4428
- },
4429
- pong: {
4430
- interval: 80,
4431
- frames: [
4432
- "\u2590\u2802 \u258C",
4433
- "\u2590\u2808 \u258C",
4434
- "\u2590 \u2802 \u258C",
4435
- "\u2590 \u2820 \u258C",
4436
- "\u2590 \u2840 \u258C",
4437
- "\u2590 \u2820 \u258C",
4438
- "\u2590 \u2802 \u258C",
4439
- "\u2590 \u2808 \u258C",
4440
- "\u2590 \u2802 \u258C",
4441
- "\u2590 \u2820 \u258C",
4442
- "\u2590 \u2840 \u258C",
4443
- "\u2590 \u2820 \u258C",
4444
- "\u2590 \u2802 \u258C",
4445
- "\u2590 \u2808 \u258C",
4446
- "\u2590 \u2802\u258C",
4447
- "\u2590 \u2820\u258C",
4448
- "\u2590 \u2840\u258C",
4449
- "\u2590 \u2820 \u258C",
4450
- "\u2590 \u2802 \u258C",
4451
- "\u2590 \u2808 \u258C",
4452
- "\u2590 \u2802 \u258C",
4453
- "\u2590 \u2820 \u258C",
4454
- "\u2590 \u2840 \u258C",
4455
- "\u2590 \u2820 \u258C",
4456
- "\u2590 \u2802 \u258C",
4457
- "\u2590 \u2808 \u258C",
4458
- "\u2590 \u2802 \u258C",
4459
- "\u2590 \u2820 \u258C",
4460
- "\u2590 \u2840 \u258C",
4461
- "\u2590\u2820 \u258C"
4462
- ]
4463
- },
4464
- shark: {
4465
- interval: 120,
4466
- frames: [
4467
- "\u2590|\\____________\u258C",
4468
- "\u2590_|\\___________\u258C",
4469
- "\u2590__|\\__________\u258C",
4470
- "\u2590___|\\_________\u258C",
4471
- "\u2590____|\\________\u258C",
4472
- "\u2590_____|\\_______\u258C",
4473
- "\u2590______|\\______\u258C",
4474
- "\u2590_______|\\_____\u258C",
4475
- "\u2590________|\\____\u258C",
4476
- "\u2590_________|\\___\u258C",
4477
- "\u2590__________|\\__\u258C",
4478
- "\u2590___________|\\_\u258C",
4479
- "\u2590____________|\\\u258C",
4480
- "\u2590____________/|\u258C",
4481
- "\u2590___________/|_\u258C",
4482
- "\u2590__________/|__\u258C",
4483
- "\u2590_________/|___\u258C",
4484
- "\u2590________/|____\u258C",
4485
- "\u2590_______/|_____\u258C",
4486
- "\u2590______/|______\u258C",
4487
- "\u2590_____/|_______\u258C",
4488
- "\u2590____/|________\u258C",
4489
- "\u2590___/|_________\u258C",
4490
- "\u2590__/|__________\u258C",
4491
- "\u2590_/|___________\u258C",
4492
- "\u2590/|____________\u258C"
4493
- ]
4494
- },
4495
- dqpb: {
4496
- interval: 100,
4497
- frames: [
4498
- "d",
4499
- "q",
4500
- "p",
4501
- "b"
4502
- ]
4503
- },
4504
- weather: {
4505
- interval: 100,
4506
- frames: [
4507
- "\u2600\uFE0F ",
4508
- "\u2600\uFE0F ",
4509
- "\u2600\uFE0F ",
4510
- "\u{1F324} ",
4511
- "\u26C5\uFE0F ",
4512
- "\u{1F325} ",
4513
- "\u2601\uFE0F ",
4514
- "\u{1F327} ",
4515
- "\u{1F328} ",
4516
- "\u{1F327} ",
4517
- "\u{1F328} ",
4518
- "\u{1F327} ",
4519
- "\u{1F328} ",
4520
- "\u26C8 ",
4521
- "\u{1F328} ",
4522
- "\u{1F327} ",
4523
- "\u{1F328} ",
4524
- "\u2601\uFE0F ",
4525
- "\u{1F325} ",
4526
- "\u26C5\uFE0F ",
4527
- "\u{1F324} ",
4528
- "\u2600\uFE0F ",
4529
- "\u2600\uFE0F "
4530
- ]
4531
- },
4532
- christmas: {
4533
- interval: 400,
4534
- frames: [
4535
- "\u{1F332}",
4536
- "\u{1F384}"
4537
- ]
4538
- },
4539
- grenade: {
4540
- interval: 80,
4541
- frames: [
4542
- "\u060C ",
4543
- "\u2032 ",
4544
- " \xB4 ",
4545
- " \u203E ",
4546
- " \u2E0C",
4547
- " \u2E0A",
4548
- " |",
4549
- " \u204E",
4550
- " \u2055",
4551
- " \u0DF4 ",
4552
- " \u2053",
4553
- " ",
4554
- " ",
4555
- " "
4556
- ]
4557
- },
4558
- point: {
4559
- interval: 125,
4560
- frames: [
4561
- "\u2219\u2219\u2219",
4562
- "\u25CF\u2219\u2219",
4563
- "\u2219\u25CF\u2219",
4564
- "\u2219\u2219\u25CF",
4565
- "\u2219\u2219\u2219"
4566
- ]
4567
- },
4568
- layer: {
4569
- interval: 150,
4570
- frames: [
4571
- "-",
4572
- "=",
4573
- "\u2261"
4574
- ]
4575
- },
4576
- betaWave: {
4577
- interval: 80,
4578
- frames: [
4579
- "\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2",
4580
- "\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2",
4581
- "\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2",
4582
- "\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2",
4583
- "\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2",
4584
- "\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2",
4585
- "\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"
4586
- ]
4587
- },
4588
- fingerDance: {
4589
- interval: 160,
4590
- frames: [
4591
- "\u{1F918} ",
4592
- "\u{1F91F} ",
4593
- "\u{1F596} ",
4594
- "\u270B ",
4595
- "\u{1F91A} ",
4596
- "\u{1F446} "
4597
- ]
4598
- },
4599
- fistBump: {
4600
- interval: 80,
4601
- frames: [
4602
- "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
4603
- "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
4604
- "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
4605
- "\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ",
4606
- "\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ",
4607
- "\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ",
4608
- "\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "
4609
- ]
4610
- },
4611
- soccerHeader: {
4612
- interval: 80,
4613
- frames: [
4614
- " \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ",
4615
- "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
4616
- "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
4617
- "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
4618
- "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
4619
- "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
4620
- "\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ",
4621
- "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
4622
- "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
4623
- "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
4624
- "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
4625
- "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "
4626
- ]
4627
- },
4628
- mindblown: {
4629
- interval: 160,
4630
- frames: [
4631
- "\u{1F610} ",
4632
- "\u{1F610} ",
4633
- "\u{1F62E} ",
4634
- "\u{1F62E} ",
4635
- "\u{1F626} ",
4636
- "\u{1F626} ",
4637
- "\u{1F627} ",
4638
- "\u{1F627} ",
4639
- "\u{1F92F} ",
4640
- "\u{1F4A5} ",
4641
- "\u2728 ",
4642
- "\u3000 ",
4643
- "\u3000 ",
4644
- "\u3000 "
4645
- ]
4646
- },
4647
- speaker: {
4648
- interval: 160,
4649
- frames: [
4650
- "\u{1F508} ",
4651
- "\u{1F509} ",
4652
- "\u{1F50A} ",
4653
- "\u{1F509} "
4654
- ]
4655
- },
4656
- orangePulse: {
4657
- interval: 100,
4658
- frames: [
4659
- "\u{1F538} ",
4660
- "\u{1F536} ",
4661
- "\u{1F7E0} ",
4662
- "\u{1F7E0} ",
4663
- "\u{1F536} "
4664
- ]
4665
- },
4666
- bluePulse: {
4667
- interval: 100,
4668
- frames: [
4669
- "\u{1F539} ",
4670
- "\u{1F537} ",
4671
- "\u{1F535} ",
4672
- "\u{1F535} ",
4673
- "\u{1F537} "
4674
- ]
4675
- },
4676
- orangeBluePulse: {
4677
- interval: 100,
4678
- frames: [
4679
- "\u{1F538} ",
4680
- "\u{1F536} ",
4681
- "\u{1F7E0} ",
4682
- "\u{1F7E0} ",
4683
- "\u{1F536} ",
4684
- "\u{1F539} ",
4685
- "\u{1F537} ",
4686
- "\u{1F535} ",
4687
- "\u{1F535} ",
4688
- "\u{1F537} "
4689
- ]
4690
- },
4691
- timeTravel: {
4692
- interval: 100,
4693
- frames: [
4694
- "\u{1F55B} ",
4695
- "\u{1F55A} ",
4696
- "\u{1F559} ",
4697
- "\u{1F558} ",
4698
- "\u{1F557} ",
4699
- "\u{1F556} ",
4700
- "\u{1F555} ",
4701
- "\u{1F554} ",
4702
- "\u{1F553} ",
4703
- "\u{1F552} ",
4704
- "\u{1F551} ",
4705
- "\u{1F550} "
4706
- ]
4707
- },
4708
- aesthetic: {
4709
- interval: 80,
4710
- frames: [
4711
- "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1",
4712
- "\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1",
4713
- "\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1",
4714
- "\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1",
4715
- "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1",
4716
- "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1",
4717
- "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0",
4718
- "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"
4719
- ]
4720
- },
4721
- dwarfFortress: {
4722
- interval: 80,
4723
- frames: [
4724
- " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4725
- "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4726
- "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4727
- "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4728
- "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4729
- "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4730
- "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4731
- "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4732
- "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4733
- "\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4734
- " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4735
- " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4736
- " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4737
- " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4738
- " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4739
- " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4740
- " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4741
- " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4742
- " \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4743
- " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4744
- " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4745
- " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
4746
- " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
4747
- " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
4748
- " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
4749
- " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
4750
- " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
4751
- " \u263A \u2588\u2588\u2588\xA3\xA3\xA3 ",
4752
- " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
4753
- " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
4754
- " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
4755
- " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
4756
- " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
4757
- " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
4758
- " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
4759
- " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
4760
- " \u263A \u2588\u2588\xA3\xA3\xA3 ",
4761
- " \u263A\u2588\u2588\xA3\xA3\xA3 ",
4762
- " \u263A\u2588\u2588\xA3\xA3\xA3 ",
4763
- " \u263A\u2593\u2588\xA3\xA3\xA3 ",
4764
- " \u263A\u2593\u2588\xA3\xA3\xA3 ",
4765
- " \u263A\u2592\u2588\xA3\xA3\xA3 ",
4766
- " \u263A\u2592\u2588\xA3\xA3\xA3 ",
4767
- " \u263A\u2591\u2588\xA3\xA3\xA3 ",
4768
- " \u263A\u2591\u2588\xA3\xA3\xA3 ",
4769
- " \u263A \u2588\xA3\xA3\xA3 ",
4770
- " \u263A\u2588\xA3\xA3\xA3 ",
4771
- " \u263A\u2588\xA3\xA3\xA3 ",
4772
- " \u263A\u2593\xA3\xA3\xA3 ",
4773
- " \u263A\u2593\xA3\xA3\xA3 ",
4774
- " \u263A\u2592\xA3\xA3\xA3 ",
4775
- " \u263A\u2592\xA3\xA3\xA3 ",
4776
- " \u263A\u2591\xA3\xA3\xA3 ",
4777
- " \u263A\u2591\xA3\xA3\xA3 ",
4778
- " \u263A \xA3\xA3\xA3 ",
4779
- " \u263A\xA3\xA3\xA3 ",
4780
- " \u263A\xA3\xA3\xA3 ",
4781
- " \u263A\u2593\xA3\xA3 ",
4782
- " \u263A\u2593\xA3\xA3 ",
4783
- " \u263A\u2592\xA3\xA3 ",
4784
- " \u263A\u2592\xA3\xA3 ",
4785
- " \u263A\u2591\xA3\xA3 ",
4786
- " \u263A\u2591\xA3\xA3 ",
4787
- " \u263A \xA3\xA3 ",
4788
- " \u263A\xA3\xA3 ",
4789
- " \u263A\xA3\xA3 ",
4790
- " \u263A\u2593\xA3 ",
4791
- " \u263A\u2593\xA3 ",
4792
- " \u263A\u2592\xA3 ",
4793
- " \u263A\u2592\xA3 ",
4794
- " \u263A\u2591\xA3 ",
4795
- " \u263A\u2591\xA3 ",
4796
- " \u263A \xA3 ",
4797
- " \u263A\xA3 ",
4798
- " \u263A\xA3 ",
4799
- " \u263A\u2593 ",
4800
- " \u263A\u2593 ",
4801
- " \u263A\u2592 ",
4802
- " \u263A\u2592 ",
4803
- " \u263A\u2591 ",
4804
- " \u263A\u2591 ",
4805
- " \u263A ",
4806
- " \u263A &",
4807
- " \u263A \u263C&",
4808
- " \u263A \u263C &",
4809
- " \u263A\u263C &",
4810
- " \u263A\u263C & ",
4811
- " \u203C & ",
4812
- " \u263A & ",
4813
- " \u203C & ",
4814
- " \u263A & ",
4815
- " \u203C & ",
4816
- " \u263A & ",
4817
- "\u203C & ",
4818
- " & ",
4819
- " & ",
4820
- " & \u2591 ",
4821
- " & \u2592 ",
4822
- " & \u2593 ",
4823
- " & \xA3 ",
4824
- " & \u2591\xA3 ",
4825
- " & \u2592\xA3 ",
4826
- " & \u2593\xA3 ",
4827
- " & \xA3\xA3 ",
4828
- " & \u2591\xA3\xA3 ",
4829
- " & \u2592\xA3\xA3 ",
4830
- "& \u2593\xA3\xA3 ",
4831
- "& \xA3\xA3\xA3 ",
4832
- " \u2591\xA3\xA3\xA3 ",
4833
- " \u2592\xA3\xA3\xA3 ",
4834
- " \u2593\xA3\xA3\xA3 ",
4835
- " \u2588\xA3\xA3\xA3 ",
4836
- " \u2591\u2588\xA3\xA3\xA3 ",
4837
- " \u2592\u2588\xA3\xA3\xA3 ",
4838
- " \u2593\u2588\xA3\xA3\xA3 ",
4839
- " \u2588\u2588\xA3\xA3\xA3 ",
4840
- " \u2591\u2588\u2588\xA3\xA3\xA3 ",
4841
- " \u2592\u2588\u2588\xA3\xA3\xA3 ",
4842
- " \u2593\u2588\u2588\xA3\xA3\xA3 ",
4843
- " \u2588\u2588\u2588\xA3\xA3\xA3 ",
4844
- " \u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
4845
- " \u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
4846
- " \u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
4847
- " \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4848
- " \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4849
- " \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4850
- " \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4851
- " \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4852
- " \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4853
- " \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4854
- " \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4855
- " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
4856
- " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "
4857
- ]
4858
- },
4859
- fish: {
4860
- interval: 80,
4861
- frames: [
4862
- "~~~~~~~~~~~~~~~~~~~~",
4863
- "> ~~~~~~~~~~~~~~~~~~",
4864
- "\xBA> ~~~~~~~~~~~~~~~~~",
4865
- "(\xBA> ~~~~~~~~~~~~~~~~",
4866
- "((\xBA> ~~~~~~~~~~~~~~~",
4867
- "<((\xBA> ~~~~~~~~~~~~~~",
4868
- "><((\xBA> ~~~~~~~~~~~~~",
4869
- " ><((\xBA> ~~~~~~~~~~~~",
4870
- "~ ><((\xBA> ~~~~~~~~~~~",
4871
- "~~ <>((\xBA> ~~~~~~~~~~",
4872
- "~~~ ><((\xBA> ~~~~~~~~~",
4873
- "~~~~ <>((\xBA> ~~~~~~~~",
4874
- "~~~~~ ><((\xBA> ~~~~~~~",
4875
- "~~~~~~ <>((\xBA> ~~~~~~",
4876
- "~~~~~~~ ><((\xBA> ~~~~~",
4877
- "~~~~~~~~ <>((\xBA> ~~~~",
4878
- "~~~~~~~~~ ><((\xBA> ~~~",
4879
- "~~~~~~~~~~ <>((\xBA> ~~",
4880
- "~~~~~~~~~~~ ><((\xBA> ~",
4881
- "~~~~~~~~~~~~ <>((\xBA> ",
4882
- "~~~~~~~~~~~~~ ><((\xBA>",
4883
- "~~~~~~~~~~~~~~ <>((\xBA",
4884
- "~~~~~~~~~~~~~~~ ><((",
4885
- "~~~~~~~~~~~~~~~~ <>(",
4886
- "~~~~~~~~~~~~~~~~~ ><",
4887
- "~~~~~~~~~~~~~~~~~~ <",
4888
- "~~~~~~~~~~~~~~~~~~~~"
4889
- ]
4890
- }
4891
- };
4892
-
4893
- // ../../node_modules/.pnpm/cli-spinners@3.4.0/node_modules/cli-spinners/index.js
4894
- var cli_spinners_default = spinners_default;
4895
- var spinnersList = Object.keys(spinners_default);
4896
-
4897
- // ../../node_modules/.pnpm/log-symbols@7.0.1/node_modules/log-symbols/symbols.js
4898
- var symbols_exports = {};
4899
- __export(symbols_exports, {
4900
- error: () => error,
4901
- info: () => info,
4902
- success: () => success,
4903
- warning: () => warning
4904
- });
4905
-
4906
- // ../../node_modules/.pnpm/yoctocolors@2.1.2/node_modules/yoctocolors/base.js
4907
- var import_node_tty2 = __toESM(require("node:tty"), 1);
4908
- var hasColors = import_node_tty2.default?.WriteStream?.prototype?.hasColors?.() ?? false;
4909
- var format = /* @__PURE__ */ __name((open, close) => {
4910
- if (!hasColors) {
4911
- return (input) => input;
4912
- }
4913
- const openCode = `\x1B[${open}m`;
4914
- const closeCode = `\x1B[${close}m`;
4915
- return (input) => {
4916
- const string = input + "";
4917
- let index = string.indexOf(closeCode);
4918
- if (index === -1) {
4919
- return openCode + string + closeCode;
4920
- }
4921
- let result = openCode;
4922
- let lastIndex = 0;
4923
- const reopenOnNestedClose = close === 22;
4924
- const replaceCode = (reopenOnNestedClose ? closeCode : "") + openCode;
4925
- while (index !== -1) {
4926
- result += string.slice(lastIndex, index) + replaceCode;
4927
- lastIndex = index + closeCode.length;
4928
- index = string.indexOf(closeCode, lastIndex);
4929
- }
4930
- result += string.slice(lastIndex) + closeCode;
4931
- return result;
4932
- };
4933
- }, "format");
4934
- var reset = format(0, 0);
4935
- var bold = format(1, 22);
4936
- var dim = format(2, 22);
4937
- var italic = format(3, 23);
4938
- var underline = format(4, 24);
4939
- var overline = format(53, 55);
4940
- var inverse = format(7, 27);
4941
- var hidden = format(8, 28);
4942
- var strikethrough = format(9, 29);
4943
- var black = format(30, 39);
4944
- var red = format(31, 39);
4945
- var green = format(32, 39);
4946
- var yellow = format(33, 39);
4947
- var blue = format(34, 39);
4948
- var magenta = format(35, 39);
4949
- var cyan = format(36, 39);
4950
- var white = format(37, 39);
4951
- var gray = format(90, 39);
4952
- var bgBlack = format(40, 49);
4953
- var bgRed = format(41, 49);
4954
- var bgGreen = format(42, 49);
4955
- var bgYellow = format(43, 49);
4956
- var bgBlue = format(44, 49);
4957
- var bgMagenta = format(45, 49);
4958
- var bgCyan = format(46, 49);
4959
- var bgWhite = format(47, 49);
4960
- var bgGray = format(100, 49);
4961
- var redBright = format(91, 39);
4962
- var greenBright = format(92, 39);
4963
- var yellowBright = format(93, 39);
4964
- var blueBright = format(94, 39);
4965
- var magentaBright = format(95, 39);
4966
- var cyanBright = format(96, 39);
4967
- var whiteBright = format(97, 39);
4968
- var bgRedBright = format(101, 49);
4969
- var bgGreenBright = format(102, 49);
4970
- var bgYellowBright = format(103, 49);
4971
- var bgBlueBright = format(104, 49);
4972
- var bgMagentaBright = format(105, 49);
4973
- var bgCyanBright = format(106, 49);
4974
- var bgWhiteBright = format(107, 49);
4975
-
4976
- // ../../node_modules/.pnpm/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js
4977
- var import_node_process4 = __toESM(require("node:process"), 1);
4978
- function isUnicodeSupported() {
4979
- const { env: env2 } = import_node_process4.default;
4980
- const { TERM, TERM_PROGRAM } = env2;
4981
- if (import_node_process4.default.platform !== "win32") {
4982
- return TERM !== "linux";
4983
- }
4984
- return Boolean(env2.WT_SESSION) || Boolean(env2.TERMINUS_SUBLIME) || env2.ConEmuTask === "{cmd::Cmder}" || TERM_PROGRAM === "Terminus-Sublime" || TERM_PROGRAM === "vscode" || TERM === "xterm-256color" || TERM === "alacritty" || TERM === "rxvt-unicode" || TERM === "rxvt-unicode-256color" || env2.TERMINAL_EMULATOR === "JetBrains-JediTerm";
4985
- }
4986
- __name(isUnicodeSupported, "isUnicodeSupported");
4987
-
4988
- // ../../node_modules/.pnpm/log-symbols@7.0.1/node_modules/log-symbols/symbols.js
4989
- var _isUnicodeSupported = isUnicodeSupported();
4990
- var info = blue(_isUnicodeSupported ? "\u2139" : "i");
4991
- var success = green(_isUnicodeSupported ? "\u2714" : "\u221A");
4992
- var warning = yellow(_isUnicodeSupported ? "\u26A0" : "\u203C");
4993
- var error = red(_isUnicodeSupported ? "\u2716" : "\xD7");
4994
-
4995
- // ../../node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
4996
- function ansiRegex({ onlyFirst = false } = {}) {
4997
- const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
4998
- const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
4999
- const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
5000
- const pattern = `${osc}|${csi}`;
5001
- return new RegExp(pattern, onlyFirst ? void 0 : "g");
5002
- }
5003
- __name(ansiRegex, "ansiRegex");
5004
-
5005
- // ../../node_modules/.pnpm/strip-ansi@7.1.2/node_modules/strip-ansi/index.js
5006
- var regex = ansiRegex();
5007
- function stripAnsi(string) {
5008
- if (typeof string !== "string") {
5009
- throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
5010
- }
5011
- return string.replace(regex, "");
5012
- }
5013
- __name(stripAnsi, "stripAnsi");
5014
-
5015
- // ../../node_modules/.pnpm/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js
5016
- function isAmbiguous(x) {
5017
- return x === 161 || x === 164 || x === 167 || x === 168 || x === 170 || x === 173 || x === 174 || x >= 176 && x <= 180 || x >= 182 && x <= 186 || x >= 188 && x <= 191 || x === 198 || x === 208 || x === 215 || x === 216 || x >= 222 && x <= 225 || x === 230 || x >= 232 && x <= 234 || x === 236 || x === 237 || x === 240 || x === 242 || x === 243 || x >= 247 && x <= 250 || x === 252 || x === 254 || x === 257 || x === 273 || x === 275 || x === 283 || x === 294 || x === 295 || x === 299 || x >= 305 && x <= 307 || x === 312 || x >= 319 && x <= 322 || x === 324 || x >= 328 && x <= 331 || x === 333 || x === 338 || x === 339 || x === 358 || x === 359 || x === 363 || x === 462 || x === 464 || x === 466 || x === 468 || x === 470 || x === 472 || x === 474 || x === 476 || x === 593 || x === 609 || x === 708 || x === 711 || x >= 713 && x <= 715 || x === 717 || x === 720 || x >= 728 && x <= 731 || x === 733 || x === 735 || x >= 768 && x <= 879 || x >= 913 && x <= 929 || x >= 931 && x <= 937 || x >= 945 && x <= 961 || x >= 963 && x <= 969 || x === 1025 || x >= 1040 && x <= 1103 || x === 1105 || x === 8208 || x >= 8211 && x <= 8214 || x === 8216 || x === 8217 || x === 8220 || x === 8221 || x >= 8224 && x <= 8226 || x >= 8228 && x <= 8231 || x === 8240 || x === 8242 || x === 8243 || x === 8245 || x === 8251 || x === 8254 || x === 8308 || x === 8319 || x >= 8321 && x <= 8324 || x === 8364 || x === 8451 || x === 8453 || x === 8457 || x === 8467 || x === 8470 || x === 8481 || x === 8482 || x === 8486 || x === 8491 || x === 8531 || x === 8532 || x >= 8539 && x <= 8542 || x >= 8544 && x <= 8555 || x >= 8560 && x <= 8569 || x === 8585 || x >= 8592 && x <= 8601 || x === 8632 || x === 8633 || x === 8658 || x === 8660 || x === 8679 || x === 8704 || x === 8706 || x === 8707 || x === 8711 || x === 8712 || x === 8715 || x === 8719 || x === 8721 || x === 8725 || x === 8730 || x >= 8733 && x <= 8736 || x === 8739 || x === 8741 || x >= 8743 && x <= 8748 || x === 8750 || x >= 8756 && x <= 8759 || x === 8764 || x === 8765 || x === 8776 || x === 8780 || x === 8786 || x === 8800 || x === 8801 || x >= 8804 && x <= 8807 || x === 8810 || x === 8811 || x === 8814 || x === 8815 || x === 8834 || x === 8835 || x === 8838 || x === 8839 || x === 8853 || x === 8857 || x === 8869 || x === 8895 || x === 8978 || x >= 9312 && x <= 9449 || x >= 9451 && x <= 9547 || x >= 9552 && x <= 9587 || x >= 9600 && x <= 9615 || x >= 9618 && x <= 9621 || x === 9632 || x === 9633 || x >= 9635 && x <= 9641 || x === 9650 || x === 9651 || x === 9654 || x === 9655 || x === 9660 || x === 9661 || x === 9664 || x === 9665 || x >= 9670 && x <= 9672 || x === 9675 || x >= 9678 && x <= 9681 || x >= 9698 && x <= 9701 || x === 9711 || x === 9733 || x === 9734 || x === 9737 || x === 9742 || x === 9743 || x === 9756 || x === 9758 || x === 9792 || x === 9794 || x === 9824 || x === 9825 || x >= 9827 && x <= 9829 || x >= 9831 && x <= 9834 || x === 9836 || x === 9837 || x === 9839 || x === 9886 || x === 9887 || x === 9919 || x >= 9926 && x <= 9933 || x >= 9935 && x <= 9939 || x >= 9941 && x <= 9953 || x === 9955 || x === 9960 || x === 9961 || x >= 9963 && x <= 9969 || x === 9972 || x >= 9974 && x <= 9977 || x === 9979 || x === 9980 || x === 9982 || x === 9983 || x === 10045 || x >= 10102 && x <= 10111 || x >= 11094 && x <= 11097 || x >= 12872 && x <= 12879 || x >= 57344 && x <= 63743 || x >= 65024 && x <= 65039 || x === 65533 || x >= 127232 && x <= 127242 || x >= 127248 && x <= 127277 || x >= 127280 && x <= 127337 || x >= 127344 && x <= 127373 || x === 127375 || x === 127376 || x >= 127387 && x <= 127404 || x >= 917760 && x <= 917999 || x >= 983040 && x <= 1048573 || x >= 1048576 && x <= 1114109;
5018
- }
5019
- __name(isAmbiguous, "isAmbiguous");
5020
- function isFullWidth(x) {
5021
- return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
5022
- }
5023
- __name(isFullWidth, "isFullWidth");
5024
- function isWide(x) {
5025
- return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x >= 94192 && x <= 94198 || x >= 94208 && x <= 101589 || x >= 101631 && x <= 101662 || x >= 101760 && x <= 101874 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128728 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129674 || x >= 129678 && x <= 129734 || x === 129736 || x >= 129741 && x <= 129756 || x >= 129759 && x <= 129770 || x >= 129775 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
5026
- }
5027
- __name(isWide, "isWide");
5028
-
5029
- // ../../node_modules/.pnpm/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js
5030
- function validate(codePoint) {
5031
- if (!Number.isSafeInteger(codePoint)) {
5032
- throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
5033
- }
5034
- }
5035
- __name(validate, "validate");
5036
- function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
5037
- validate(codePoint);
5038
- if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
5039
- return 2;
5040
- }
5041
- return 1;
5042
- }
5043
- __name(eastAsianWidth, "eastAsianWidth");
5044
-
5045
- // ../../node_modules/.pnpm/string-width@8.1.1/node_modules/string-width/index.js
5046
- var segmenter = new Intl.Segmenter();
5047
- var zeroWidthClusterRegex = new RegExp("^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Mark}|\\p{Surrogate})+$", "v");
5048
- var leadingNonPrintingRegex = new RegExp("^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Mark}\\p{Surrogate}]+", "v");
5049
- var rgiEmojiRegex = new RegExp("^\\p{RGI_Emoji}$", "v");
5050
- function baseVisible(segment) {
5051
- return segment.replace(leadingNonPrintingRegex, "");
5052
- }
5053
- __name(baseVisible, "baseVisible");
5054
- function isZeroWidthCluster(segment) {
5055
- return zeroWidthClusterRegex.test(segment);
5056
- }
5057
- __name(isZeroWidthCluster, "isZeroWidthCluster");
5058
- function trailingHalfwidthWidth(segment, eastAsianWidthOptions) {
5059
- let extra = 0;
5060
- if (segment.length > 1) {
5061
- for (const char of segment.slice(1)) {
5062
- if (char >= "\uFF00" && char <= "\uFFEF") {
5063
- extra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);
5064
- }
5065
- }
5066
- }
5067
- return extra;
5068
- }
5069
- __name(trailingHalfwidthWidth, "trailingHalfwidthWidth");
5070
- function stringWidth(input, options = {}) {
5071
- if (typeof input !== "string" || input.length === 0) {
5072
- return 0;
5073
- }
5074
- const {
5075
- ambiguousIsNarrow = true,
5076
- countAnsiEscapeCodes = false
5077
- } = options;
5078
- let string = input;
5079
- if (!countAnsiEscapeCodes) {
5080
- string = stripAnsi(string);
5081
- }
5082
- if (string.length === 0) {
5083
- return 0;
5084
- }
5085
- let width = 0;
5086
- const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
5087
- for (const { segment } of segmenter.segment(string)) {
5088
- if (isZeroWidthCluster(segment)) {
5089
- continue;
5090
- }
5091
- if (rgiEmojiRegex.test(segment)) {
5092
- width += 2;
5093
- continue;
5094
- }
5095
- const codePoint = baseVisible(segment).codePointAt(0);
5096
- width += eastAsianWidth(codePoint, eastAsianWidthOptions);
5097
- width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
5098
- }
5099
- return width;
5100
- }
5101
- __name(stringWidth, "stringWidth");
5102
-
5103
- // ../../node_modules/.pnpm/is-interactive@2.0.0/node_modules/is-interactive/index.js
5104
- function isInteractive({ stream = process.stdout } = {}) {
5105
- return Boolean(
5106
- stream && stream.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env)
5107
- );
5108
- }
5109
- __name(isInteractive, "isInteractive");
5110
-
5111
- // ../../node_modules/.pnpm/stdin-discarder@0.2.2/node_modules/stdin-discarder/index.js
5112
- var import_node_process5 = __toESM(require("node:process"), 1);
5113
- var ASCII_ETX_CODE = 3;
5114
- var StdinDiscarder = class {
5115
- static {
5116
- __name(this, "StdinDiscarder");
5117
- }
5118
- #activeCount = 0;
5119
- start() {
5120
- this.#activeCount++;
5121
- if (this.#activeCount === 1) {
5122
- this.#realStart();
5123
- }
5124
- }
5125
- stop() {
5126
- if (this.#activeCount <= 0) {
5127
- throw new Error("`stop` called more times than `start`");
5128
- }
5129
- this.#activeCount--;
5130
- if (this.#activeCount === 0) {
5131
- this.#realStop();
5132
- }
5133
- }
5134
- #realStart() {
5135
- if (import_node_process5.default.platform === "win32" || !import_node_process5.default.stdin.isTTY) {
5136
- return;
5137
- }
5138
- import_node_process5.default.stdin.setRawMode(true);
5139
- import_node_process5.default.stdin.on("data", this.#handleInput);
5140
- import_node_process5.default.stdin.resume();
5141
- }
5142
- #realStop() {
5143
- if (!import_node_process5.default.stdin.isTTY) {
5144
- return;
5145
- }
5146
- import_node_process5.default.stdin.off("data", this.#handleInput);
5147
- import_node_process5.default.stdin.pause();
5148
- import_node_process5.default.stdin.setRawMode(false);
5149
- }
5150
- #handleInput(chunk) {
5151
- if (chunk[0] === ASCII_ETX_CODE) {
5152
- import_node_process5.default.emit("SIGINT");
5153
- }
5154
- }
5155
- };
5156
- var stdinDiscarder = new StdinDiscarder();
5157
- var stdin_discarder_default = stdinDiscarder;
5158
-
5159
- // ../../node_modules/.pnpm/ora@9.1.0/node_modules/ora/index.js
5160
- var RENDER_DEFERRAL_TIMEOUT = 200;
5161
- var activeHooksPerStream = /* @__PURE__ */ new Map();
5162
- var Ora = class {
5163
- static {
5164
- __name(this, "Ora");
5165
- }
5166
- #linesToClear = 0;
5167
- #frameIndex = -1;
5168
- #lastFrameTime = 0;
5169
- #options;
5170
- #spinner;
5171
- #stream;
5172
- #id;
5173
- #hookedStreams = /* @__PURE__ */ new Map();
5174
- #isInternalWrite = false;
5175
- #drainHandler;
5176
- #deferRenderTimer;
5177
- #isDiscardingStdin = false;
5178
- color;
5179
- // Helper to execute writes while preventing hook recursion
5180
- #internalWrite(fn) {
5181
- this.#isInternalWrite = true;
5182
- try {
5183
- return fn();
5184
- } finally {
5185
- this.#isInternalWrite = false;
5186
- }
5187
- }
5188
- // Helper to render if still spinning
5189
- #tryRender() {
5190
- if (this.isSpinning) {
5191
- this.render();
5192
- }
5193
- }
5194
- #stringifyChunk(chunk, encoding) {
5195
- if (chunk === void 0 || chunk === null) {
5196
- return "";
5197
- }
5198
- if (typeof chunk === "string") {
5199
- return chunk;
5200
- }
5201
- if (Buffer.isBuffer(chunk) || ArrayBuffer.isView(chunk)) {
5202
- const normalizedEncoding = typeof encoding === "string" && encoding && encoding !== "buffer" ? encoding : "utf8";
5203
- return Buffer.from(chunk).toString(normalizedEncoding);
5204
- }
5205
- return String(chunk);
5206
- }
5207
- #chunkTerminatesLine(chunkString) {
5208
- if (!chunkString) {
5209
- return false;
5210
- }
5211
- const lastCharacter = chunkString.at(-1);
5212
- return lastCharacter === "\n" || lastCharacter === "\r";
5213
- }
5214
- #scheduleRenderDeferral() {
5215
- if (this.#deferRenderTimer) {
5216
- return;
5217
- }
5218
- this.#deferRenderTimer = setTimeout(() => {
5219
- this.#deferRenderTimer = void 0;
5220
- if (this.isSpinning) {
5221
- this.#tryRender();
5222
- }
5223
- }, RENDER_DEFERRAL_TIMEOUT);
5224
- if (typeof this.#deferRenderTimer?.unref === "function") {
5225
- this.#deferRenderTimer.unref();
5226
- }
5227
- }
5228
- #clearRenderDeferral() {
5229
- if (this.#deferRenderTimer) {
5230
- clearTimeout(this.#deferRenderTimer);
5231
- this.#deferRenderTimer = void 0;
5232
- }
5233
- }
5234
- // Helper to build complete line with symbol, text, prefix, and suffix
5235
- #buildOutputLine(symbol, text, prefixText, suffixText) {
5236
- const fullPrefixText = this.#getFullPrefixText(prefixText, " ");
5237
- const separatorText = symbol ? " " : "";
5238
- const fullText = typeof text === "string" ? separatorText + text : "";
5239
- const fullSuffixText = this.#getFullSuffixText(suffixText, " ");
5240
- return fullPrefixText + symbol + fullText + fullSuffixText;
5241
- }
5242
- constructor(options) {
5243
- if (typeof options === "string") {
5244
- options = {
5245
- text: options
5246
- };
5247
- }
5248
- this.#options = {
5249
- color: "cyan",
5250
- stream: import_node_process6.default.stderr,
5251
- discardStdin: true,
5252
- hideCursor: true,
5253
- ...options
5254
- };
5255
- this.color = this.#options.color;
5256
- this.#stream = this.#options.stream;
5257
- if (typeof this.#options.isEnabled !== "boolean") {
5258
- this.#options.isEnabled = isInteractive({ stream: this.#stream });
5259
- }
5260
- if (typeof this.#options.isSilent !== "boolean") {
5261
- this.#options.isSilent = false;
5262
- }
5263
- const userInterval = this.#options.interval;
5264
- this.spinner = this.#options.spinner;
5265
- this.#options.interval = userInterval;
5266
- this.text = this.#options.text;
5267
- this.prefixText = this.#options.prefixText;
5268
- this.suffixText = this.#options.suffixText;
5269
- this.indent = this.#options.indent;
5270
- if (import_node_process6.default.env.NODE_ENV === "test") {
5271
- this._stream = this.#stream;
5272
- this._isEnabled = this.#options.isEnabled;
5273
- Object.defineProperty(this, "_linesToClear", {
5274
- get() {
5275
- return this.#linesToClear;
5276
- },
5277
- set(newValue) {
5278
- this.#linesToClear = newValue;
5279
- }
5280
- });
5281
- Object.defineProperty(this, "_frameIndex", {
5282
- get() {
5283
- return this.#frameIndex;
5284
- }
5285
- });
5286
- Object.defineProperty(this, "_lineCount", {
5287
- get() {
5288
- const columns = this.#stream.columns ?? 80;
5289
- const prefixText = typeof this.#options.prefixText === "function" ? "" : this.#options.prefixText;
5290
- const suffixText = typeof this.#options.suffixText === "function" ? "" : this.#options.suffixText;
5291
- const fullPrefixText = typeof prefixText === "string" && prefixText !== "" ? prefixText + " " : "";
5292
- const fullSuffixText = typeof suffixText === "string" && suffixText !== "" ? " " + suffixText : "";
5293
- const spinnerChar = "-";
5294
- const fullText = " ".repeat(this.#options.indent) + fullPrefixText + spinnerChar + (typeof this.#options.text === "string" ? " " + this.#options.text : "") + fullSuffixText;
5295
- return this.#computeLineCountFrom(fullText, columns);
5296
- }
5297
- });
5298
- }
5299
- }
5300
- get indent() {
5301
- return this.#options.indent;
5302
- }
5303
- set indent(indent = 0) {
5304
- if (!(indent >= 0 && Number.isInteger(indent))) {
5305
- throw new Error("The `indent` option must be an integer from 0 and up");
5306
- }
5307
- this.#options.indent = indent;
5308
- }
5309
- get interval() {
5310
- return this.#options.interval ?? this.#spinner.interval ?? 100;
5311
- }
5312
- get spinner() {
5313
- return this.#spinner;
5314
- }
5315
- set spinner(spinner) {
5316
- this.#frameIndex = -1;
5317
- this.#options.interval = void 0;
5318
- if (typeof spinner === "object") {
5319
- if (!Array.isArray(spinner.frames) || spinner.frames.length === 0 || spinner.frames.some((frame) => typeof frame !== "string")) {
5320
- throw new Error("The given spinner must have a non-empty `frames` array of strings");
5321
- }
5322
- if (spinner.interval !== void 0 && !(Number.isInteger(spinner.interval) && spinner.interval > 0)) {
5323
- throw new Error("`spinner.interval` must be a positive integer if provided");
2329
+ start(newText) {
2330
+ if (newText)
2331
+ text = newText;
2332
+ if (isSilent)
2333
+ return this;
2334
+ if (isTTY()) {
2335
+ render();
2336
+ interval = setInterval(render, SPINNER_INTERVAL);
2337
+ } else {
2338
+ process.stderr.write(`- ${text}
2339
+ `);
5324
2340
  }
5325
- this.#spinner = spinner;
5326
- } else if (!isUnicodeSupported()) {
5327
- this.#spinner = cli_spinners_default.line;
5328
- } else if (spinner === void 0) {
5329
- this.#spinner = cli_spinners_default.dots;
5330
- } else if (spinner !== "default" && cli_spinners_default[spinner]) {
5331
- this.#spinner = cli_spinners_default[spinner];
5332
- } else {
5333
- 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.`);
5334
- }
5335
- }
5336
- get text() {
5337
- return this.#options.text;
5338
- }
5339
- set text(value = "") {
5340
- this.#options.text = value;
5341
- }
5342
- get prefixText() {
5343
- return this.#options.prefixText;
5344
- }
5345
- set prefixText(value = "") {
5346
- this.#options.prefixText = value;
5347
- }
5348
- get suffixText() {
5349
- return this.#options.suffixText;
5350
- }
5351
- set suffixText(value = "") {
5352
- this.#options.suffixText = value;
5353
- }
5354
- get isSpinning() {
5355
- return this.#id !== void 0;
5356
- }
5357
- #formatAffix(value, separator, placeBefore = false) {
5358
- const resolved = typeof value === "function" ? value() : value;
5359
- if (typeof resolved === "string" && resolved !== "") {
5360
- return placeBefore ? separator + resolved : resolved + separator;
5361
- }
5362
- return "";
5363
- }
5364
- #getFullPrefixText(prefixText = this.#options.prefixText, postfix = " ") {
5365
- return this.#formatAffix(prefixText, postfix, false);
5366
- }
5367
- #getFullSuffixText(suffixText = this.#options.suffixText, prefix = " ") {
5368
- return this.#formatAffix(suffixText, prefix, true);
5369
- }
5370
- #computeLineCountFrom(text, columns) {
5371
- let count = 0;
5372
- for (const line of (0, import_node_util.stripVTControlCharacters)(text).split("\n")) {
5373
- count += Math.max(1, Math.ceil(stringWidth(line) / columns));
5374
- }
5375
- return count;
5376
- }
5377
- get isEnabled() {
5378
- return this.#options.isEnabled && !this.#options.isSilent;
5379
- }
5380
- set isEnabled(value) {
5381
- if (typeof value !== "boolean") {
5382
- throw new TypeError("The `isEnabled` option must be a boolean");
5383
- }
5384
- this.#options.isEnabled = value;
5385
- }
5386
- get isSilent() {
5387
- return this.#options.isSilent;
5388
- }
5389
- set isSilent(value) {
5390
- if (typeof value !== "boolean") {
5391
- throw new TypeError("The `isSilent` option must be a boolean");
5392
- }
5393
- this.#options.isSilent = value;
5394
- }
5395
- frame() {
5396
- const now = Date.now();
5397
- if (this.#frameIndex === -1 || now - this.#lastFrameTime >= this.interval) {
5398
- this.#frameIndex = (this.#frameIndex + 1) % this.#spinner.frames.length;
5399
- this.#lastFrameTime = now;
5400
- }
5401
- const { frames } = this.#spinner;
5402
- let frame = frames[this.#frameIndex];
5403
- if (this.color) {
5404
- frame = source_default[this.color](frame);
5405
- }
5406
- const fullPrefixText = this.#getFullPrefixText(this.#options.prefixText, " ");
5407
- const fullText = typeof this.text === "string" ? " " + this.text : "";
5408
- const fullSuffixText = this.#getFullSuffixText(this.#options.suffixText, " ");
5409
- return fullPrefixText + frame + fullText + fullSuffixText;
5410
- }
5411
- clear() {
5412
- if (!this.isEnabled || !this.#stream.isTTY) {
5413
2341
  return this;
5414
- }
5415
- this.#internalWrite(() => {
5416
- this.#stream.cursorTo(0);
5417
- for (let index = 0; index < this.#linesToClear; index++) {
5418
- if (index > 0) {
5419
- this.#stream.moveCursor(0, -1);
5420
- }
5421
- this.#stream.clearLine(1);
5422
- }
5423
- if (this.#options.indent) {
5424
- this.#stream.cursorTo(this.#options.indent);
5425
- }
5426
- });
5427
- this.#linesToClear = 0;
5428
- return this;
5429
- }
5430
- // Helper to hook a single stream
5431
- #hookStream(stream) {
5432
- if (!stream || this.#hookedStreams.has(stream) || !stream.isTTY || typeof stream.write !== "function") {
5433
- return;
5434
- }
5435
- if (activeHooksPerStream.has(stream)) {
5436
- console.warn("[ora] Multiple concurrent spinners detected. This may cause visual corruption. Use one spinner at a time.");
5437
- }
5438
- const originalWrite = stream.write;
5439
- this.#hookedStreams.set(stream, originalWrite);
5440
- activeHooksPerStream.set(stream, this);
5441
- stream.write = (chunk, encoding, callback) => this.#hookedWrite(stream, originalWrite, chunk, encoding, callback);
5442
- }
5443
- /**
5444
- Intercept stream writes while spinner is active to handle external writes cleanly without visual corruption.
5445
- Hooks process stdio streams and the active spinner stream so console.log(), console.error(), and direct writes stay tidy.
5446
- */
5447
- #installHook() {
5448
- if (!this.isEnabled || this.#hookedStreams.size > 0) {
5449
- return;
5450
- }
5451
- const streamsToHook = /* @__PURE__ */ new Set([this.#stream, import_node_process6.default.stdout, import_node_process6.default.stderr]);
5452
- for (const stream of streamsToHook) {
5453
- this.#hookStream(stream);
5454
- }
5455
- }
5456
- #uninstallHook() {
5457
- for (const [stream, originalWrite] of this.#hookedStreams) {
5458
- stream.write = originalWrite;
5459
- if (activeHooksPerStream.get(stream) === this) {
5460
- activeHooksPerStream.delete(stream);
2342
+ },
2343
+ stop() {
2344
+ if (interval) {
2345
+ clearInterval(interval);
2346
+ interval = void 0;
5461
2347
  }
5462
- }
5463
- this.#hookedStreams.clear();
5464
- }
5465
- // eslint-disable-next-line max-params -- Need stream and originalWrite for multi-stream support
5466
- #hookedWrite(stream, originalWrite, chunk, encoding, callback) {
5467
- if (typeof encoding === "function") {
5468
- callback = encoding;
5469
- encoding = void 0;
5470
- }
5471
- if (this.#isInternalWrite) {
5472
- return originalWrite.call(stream, chunk, encoding, callback);
5473
- }
5474
- this.clear();
5475
- const chunkString = this.#stringifyChunk(chunk, encoding);
5476
- const chunkTerminatesLine = this.#chunkTerminatesLine(chunkString);
5477
- const writeResult = originalWrite.call(stream, chunk, encoding, callback);
5478
- if (chunkTerminatesLine) {
5479
- this.#clearRenderDeferral();
5480
- } else if (chunkString.length > 0) {
5481
- this.#scheduleRenderDeferral();
5482
- }
5483
- if (this.isSpinning && !this.#deferRenderTimer) {
5484
- this.render();
5485
- }
5486
- return writeResult;
5487
- }
5488
- render() {
5489
- if (!this.isEnabled || this.#drainHandler || this.#deferRenderTimer) {
5490
- return this;
5491
- }
5492
- this.clear();
5493
- let frameContent = this.frame();
5494
- const columns = this.#stream.columns ?? 80;
5495
- const actualLineCount = this.#computeLineCountFrom(frameContent, columns);
5496
- const consoleHeight = this.#stream.rows;
5497
- if (consoleHeight && consoleHeight > 1 && actualLineCount > consoleHeight) {
5498
- const lines = frameContent.split("\n");
5499
- const maxLines = consoleHeight - 1;
5500
- frameContent = [...lines.slice(0, maxLines), "... (content truncated to fit terminal)"].join("\n");
5501
- }
5502
- const canContinue = this.#internalWrite(() => this.#stream.write(frameContent));
5503
- if (canContinue === false && this.#stream.isTTY) {
5504
- this.#drainHandler = () => {
5505
- this.#drainHandler = void 0;
5506
- this.#tryRender();
5507
- };
5508
- this.#stream.once("drain", this.#drainHandler);
5509
- }
5510
- this.#linesToClear = this.#computeLineCountFrom(frameContent, columns);
5511
- return this;
5512
- }
5513
- start(text) {
5514
- if (text) {
5515
- this.text = text;
5516
- }
5517
- if (this.isSilent) {
2348
+ clearLine();
5518
2349
  return this;
5519
- }
5520
- if (!this.isEnabled) {
5521
- const symbol = this.text ? "-" : "";
5522
- const line = " ".repeat(this.#options.indent) + this.#buildOutputLine(symbol, this.text, this.#options.prefixText, this.#options.suffixText);
5523
- if (line.trim() !== "") {
5524
- this.#internalWrite(() => this.#stream.write(line + "\n"));
2350
+ },
2351
+ succeed(successText) {
2352
+ if (interval) {
2353
+ clearInterval(interval);
2354
+ interval = void 0;
2355
+ }
2356
+ if (isSilent)
2357
+ return this;
2358
+ const finalText = successText ?? text;
2359
+ if (isTTY()) {
2360
+ process.stderr.write(`\r\x1B[K\u2714 ${finalText}
2361
+ `);
2362
+ } else {
2363
+ process.stderr.write(`\u2714 ${finalText}
2364
+ `);
5525
2365
  }
5526
2366
  return this;
5527
- }
5528
- if (this.isSpinning) {
5529
- return this;
5530
- }
5531
- if (this.#options.hideCursor) {
5532
- cli_cursor_default.hide(this.#stream);
5533
- }
5534
- if (this.#options.discardStdin && import_node_process6.default.stdin.isTTY) {
5535
- stdin_discarder_default.start();
5536
- this.#isDiscardingStdin = true;
5537
- }
5538
- this.#installHook();
5539
- this.render();
5540
- this.#id = setInterval(this.render.bind(this), this.interval);
5541
- return this;
5542
- }
5543
- stop() {
5544
- clearInterval(this.#id);
5545
- this.#id = void 0;
5546
- this.#frameIndex = -1;
5547
- this.#lastFrameTime = 0;
5548
- this.#clearRenderDeferral();
5549
- this.#uninstallHook();
5550
- if (this.#drainHandler) {
5551
- this.#stream.removeListener("drain", this.#drainHandler);
5552
- this.#drainHandler = void 0;
5553
- }
5554
- if (this.isEnabled) {
5555
- this.clear();
5556
- if (this.#options.hideCursor) {
5557
- cli_cursor_default.show(this.#stream);
2367
+ },
2368
+ fail(failText) {
2369
+ if (interval) {
2370
+ clearInterval(interval);
2371
+ interval = void 0;
2372
+ }
2373
+ if (isSilent)
2374
+ return this;
2375
+ const finalText = failText ?? text;
2376
+ if (isTTY()) {
2377
+ process.stderr.write(`\r\x1B[K\u2716 ${finalText}
2378
+ `);
2379
+ } else {
2380
+ process.stderr.write(`\u2716 ${finalText}
2381
+ `);
5558
2382
  }
5559
- }
5560
- if (this.#isDiscardingStdin) {
5561
- this.#isDiscardingStdin = false;
5562
- stdin_discarder_default.stop();
5563
- }
5564
- return this;
5565
- }
5566
- succeed(text) {
5567
- return this.stopAndPersist({ symbol: symbols_exports.success, text });
5568
- }
5569
- fail(text) {
5570
- return this.stopAndPersist({ symbol: symbols_exports.error, text });
5571
- }
5572
- warn(text) {
5573
- return this.stopAndPersist({ symbol: symbols_exports.warning, text });
5574
- }
5575
- info(text) {
5576
- return this.stopAndPersist({ symbol: symbols_exports.info, text });
5577
- }
5578
- stopAndPersist(options = {}) {
5579
- if (this.isSilent) {
5580
2383
  return this;
5581
2384
  }
5582
- const symbol = options.symbol ?? " ";
5583
- const text = options.text ?? this.text;
5584
- const prefixText = options.prefixText ?? this.#options.prefixText;
5585
- const suffixText = options.suffixText ?? this.#options.suffixText;
5586
- const textToWrite = this.#buildOutputLine(symbol, text, prefixText, suffixText) + "\n";
5587
- this.stop();
5588
- this.#internalWrite(() => this.#stream.write(textToWrite));
5589
- return this;
5590
- }
5591
- };
5592
- function ora(options) {
5593
- return new Ora(options);
2385
+ };
2386
+ return spinner;
5594
2387
  }
5595
- __name(ora, "ora");
5596
-
5597
- // dist/cli/build.js
5598
- var esbuild = __toESM(require_main(), 1);
5599
- var import_meta = {};
2388
+ __name(createSpinnerImpl, "createSpinnerImpl");
5600
2389
  var __dirname2 = typeof import_meta?.url === "string" ? (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(import_meta.url)) : globalThis.__dirname || (0, import_node_path.dirname)(process.argv[1]);
5601
2390
  var TARGET_MAP = {
5602
2391
  "darwin-arm64": "node24-macos-arm64",
@@ -5618,11 +2407,68 @@ function detectHostTarget() {
5618
2407
  throw new Error(`Unsupported platform: ${platform}-${arch}. Supported platforms: darwin-arm64, darwin-x64, linux-x64, linux-arm64`);
5619
2408
  }
5620
2409
  __name(detectHostTarget, "detectHostTarget");
2410
+ function readPackageJsonConfig(dir) {
2411
+ const pkgPath = (0, import_node_path.join)(dir, "package.json");
2412
+ if (!(0, import_node_fs.existsSync)(pkgPath)) {
2413
+ return void 0;
2414
+ }
2415
+ try {
2416
+ const content = (0, import_node_fs.readFileSync)(pkgPath, "utf-8");
2417
+ const pkg = JSON.parse(content);
2418
+ const config = pkg?.thinkwell?.build;
2419
+ if (!config || typeof config !== "object") {
2420
+ return void 0;
2421
+ }
2422
+ const result = {};
2423
+ if (typeof config.output === "string") {
2424
+ result.output = config.output;
2425
+ }
2426
+ if (Array.isArray(config.targets)) {
2427
+ const validTargets = ["darwin-arm64", "darwin-x64", "linux-x64", "linux-arm64", "host"];
2428
+ result.targets = config.targets.filter((t) => typeof t === "string" && validTargets.includes(t));
2429
+ }
2430
+ if (Array.isArray(config.include)) {
2431
+ result.include = config.include.filter((i) => typeof i === "string");
2432
+ }
2433
+ if (Array.isArray(config.external)) {
2434
+ result.external = config.external.filter((e) => typeof e === "string");
2435
+ }
2436
+ if (typeof config.minify === "boolean") {
2437
+ result.minify = config.minify;
2438
+ }
2439
+ return result;
2440
+ } catch {
2441
+ return void 0;
2442
+ }
2443
+ }
2444
+ __name(readPackageJsonConfig, "readPackageJsonConfig");
2445
+ function mergeWithPackageConfig(options, entryDir) {
2446
+ const pkgConfig = readPackageJsonConfig(entryDir);
2447
+ if (!pkgConfig) {
2448
+ return options;
2449
+ }
2450
+ return {
2451
+ ...options,
2452
+ output: options.output ?? pkgConfig.output,
2453
+ targets: options.targets && options.targets.length > 0 ? options.targets : pkgConfig.targets ?? options.targets,
2454
+ include: [
2455
+ ...pkgConfig.include || [],
2456
+ ...options.include || []
2457
+ ],
2458
+ external: [
2459
+ ...pkgConfig.external || [],
2460
+ ...options.external || []
2461
+ ],
2462
+ minify: options.minify ?? pkgConfig.minify
2463
+ };
2464
+ }
2465
+ __name(mergeWithPackageConfig, "mergeWithPackageConfig");
5621
2466
  function parseBuildArgs(args) {
5622
2467
  const options = {
5623
2468
  entry: "",
5624
2469
  targets: [],
5625
- include: []
2470
+ include: [],
2471
+ external: []
5626
2472
  };
5627
2473
  let i = 0;
5628
2474
  while (i < args.length) {
@@ -5650,12 +2496,22 @@ function parseBuildArgs(args) {
5650
2496
  throw new Error("Missing value for --include");
5651
2497
  }
5652
2498
  options.include.push(args[i]);
2499
+ } else if (arg === "--external" || arg === "-e") {
2500
+ i++;
2501
+ if (i >= args.length) {
2502
+ throw new Error("Missing value for --external");
2503
+ }
2504
+ options.external.push(args[i]);
5653
2505
  } else if (arg === "--verbose" || arg === "-v") {
5654
2506
  options.verbose = true;
5655
2507
  } else if (arg === "--quiet" || arg === "-q") {
5656
2508
  options.quiet = true;
5657
2509
  } else if (arg === "--dry-run" || arg === "-n") {
5658
2510
  options.dryRun = true;
2511
+ } else if (arg === "--minify" || arg === "-m") {
2512
+ options.minify = true;
2513
+ } else if (arg === "--watch" || arg === "-w") {
2514
+ options.watch = true;
5659
2515
  } else if (arg.startsWith("-")) {
5660
2516
  throw new Error(`Unknown option: ${arg}`);
5661
2517
  } else {
@@ -5684,6 +2540,10 @@ function initBuildContext(options) {
5684
2540
  }
5685
2541
  const entryBasename = (0, import_node_path.basename)(entryPath).replace(/\.(ts|js|mts|mjs|cts|cjs)$/, "");
5686
2542
  const entryDir = (0, import_node_path.dirname)(entryPath);
2543
+ let mergedOptions = mergeWithPackageConfig(options, entryDir);
2544
+ if (entryDir !== process.cwd()) {
2545
+ mergedOptions = mergeWithPackageConfig(mergedOptions, process.cwd());
2546
+ }
5687
2547
  const buildDir = (0, import_node_path.join)(entryDir, ".thinkwell-build");
5688
2548
  const thinkwellDistPkg = (0, import_node_path.resolve)(__dirname2, "../../dist-pkg");
5689
2549
  if (!(0, import_node_fs.existsSync)(thinkwellDistPkg)) {
@@ -5691,7 +2551,7 @@ function initBuildContext(options) {
5691
2551
  This may indicate a corrupted installation.
5692
2552
  Try reinstalling thinkwell: npm install thinkwell`);
5693
2553
  }
5694
- const resolvedTargets = options.targets.map((t) => t === "host" ? detectHostTarget() : t);
2554
+ const resolvedTargets = mergedOptions.targets.map((t) => t === "host" ? detectHostTarget() : t);
5695
2555
  const uniqueTargets = [...new Set(resolvedTargets)];
5696
2556
  return {
5697
2557
  entryPath,
@@ -5700,7 +2560,7 @@ function initBuildContext(options) {
5700
2560
  buildDir,
5701
2561
  thinkwellDistPkg,
5702
2562
  resolvedTargets: uniqueTargets,
5703
- options
2563
+ options: mergedOptions
5704
2564
  };
5705
2565
  }
5706
2566
  __name(initBuildContext, "initBuildContext");
@@ -5746,14 +2606,15 @@ async function bundleUserScript(ctx) {
5746
2606
  console.log(` Bundling ${ctx.entryPath}...`);
5747
2607
  }
5748
2608
  try {
2609
+ const externalPackages = ["node:*", ...ctx.options.external || []];
5749
2610
  await esbuild.build({
5750
2611
  entryPoints: [ctx.entryPath],
5751
2612
  bundle: true,
5752
2613
  platform: "node",
5753
2614
  format: "cjs",
5754
2615
  outfile: outputFile,
5755
- // External: Node built-ins
5756
- external: ["node:*"],
2616
+ // External: Node built-ins and user-specified packages
2617
+ external: externalPackages,
5757
2618
  // Mark thinkwell packages as external - they're provided via global.__bundled__
5758
2619
  // But actually, we need to transform the imports, so let's bundle them
5759
2620
  // and use a banner to set up the module aliases
@@ -5805,13 +2666,14 @@ require.main = __origRequire.main;
5805
2666
  }
5806
2667
  ],
5807
2668
  sourcemap: false,
5808
- minify: false,
5809
- keepNames: true,
2669
+ minify: ctx.options.minify ?? false,
2670
+ keepNames: !ctx.options.minify,
2671
+ // Keep names unless minifying
5810
2672
  target: "node24",
5811
2673
  logLevel: ctx.options.verbose ? "info" : "silent"
5812
2674
  });
5813
- } catch (error2) {
5814
- const message = error2 instanceof Error ? error2.message : String(error2);
2675
+ } catch (error) {
2676
+ const message = error instanceof Error ? error.message : String(error);
5815
2677
  if (message.includes("Could not resolve")) {
5816
2678
  const match = message.match(/Could not resolve "([^"]+)"/);
5817
2679
  const moduleName = match ? match[1] : "unknown module";
@@ -5824,7 +2686,7 @@ require.main = __origRequire.main;
5824
2686
  esbuild cannot bundle this file type by default.
5825
2687
  Consider using --include to embed the file as an asset instead.`);
5826
2688
  }
5827
- throw error2;
2689
+ throw error;
5828
2690
  }
5829
2691
  return outputFile;
5830
2692
  }
@@ -5851,7 +2713,7 @@ function isRunningFromCompiledBinary() {
5851
2713
  __name(isRunningFromCompiledBinary, "isRunningFromCompiledBinary");
5852
2714
  var PORTABLE_NODE_VERSION = "24.1.0";
5853
2715
  function getCacheDir() {
5854
- return process.env.THINKWELL_CACHE_DIR || (0, import_node_path.join)((0, import_node_os2.homedir)(), ".cache", "thinkwell");
2716
+ return process.env.THINKWELL_CACHE_DIR || (0, import_node_path.join)((0, import_node_os.homedir)(), ".cache", "thinkwell");
5855
2717
  }
5856
2718
  __name(getCacheDir, "getCacheDir");
5857
2719
  function getThinkwellVersion() {
@@ -5973,9 +2835,9 @@ Please retry or report this issue.`);
5973
2835
  (0, import_node_fs.rmSync)(archivePath, { force: true });
5974
2836
  spinner?.succeed(`Node.js v${version} cached to ${cacheDir}`);
5975
2837
  return nodePath;
5976
- } catch (error2) {
2838
+ } catch (error) {
5977
2839
  (0, import_node_fs.rmSync)(cacheDir, { recursive: true, force: true });
5978
- const message = error2 instanceof Error ? error2.message : String(error2);
2840
+ const message = error instanceof Error ? error.message : String(error);
5979
2841
  if (message.includes("ETIMEDOUT") || message.includes("ENOTFOUND")) {
5980
2842
  throw new Error(`Failed to download Node.js runtime.
5981
2843
 
@@ -5985,7 +2847,7 @@ Please retry or report this issue.`);
5985
2847
  Check your network connection and try again.
5986
2848
  If behind a proxy, set HTTPS_PROXY environment variable.`);
5987
2849
  }
5988
- throw error2;
2850
+ throw error;
5989
2851
  }
5990
2852
  }
5991
2853
  __name(ensurePortableNode, "ensurePortableNode");
@@ -6059,11 +2921,11 @@ function spawnAsync(command, args, options = {}) {
6059
2921
  stderr
6060
2922
  });
6061
2923
  });
6062
- proc.on("error", (error2) => {
2924
+ proc.on("error", (error) => {
6063
2925
  resolve2({
6064
2926
  exitCode: 1,
6065
2927
  stdout,
6066
- stderr: error2.message
2928
+ stderr: error.message
6067
2929
  });
6068
2930
  });
6069
2931
  });
@@ -6201,31 +3063,42 @@ function log(ctx, message) {
6201
3063
  }
6202
3064
  __name(log, "log");
6203
3065
  function createSpinner(ctx, text) {
6204
- return ora({
3066
+ return createSpinnerImpl({
6205
3067
  text,
6206
3068
  isSilent: ctx.options.quiet
6207
3069
  });
6208
3070
  }
6209
3071
  __name(createSpinner, "createSpinner");
6210
3072
  function runDryRun(ctx) {
6211
- console.log((0, import_node_util2.styleText)("bold", "Dry run mode - no files will be created\n"));
6212
- console.log((0, import_node_util2.styleText)("bold", "Entry point:"));
3073
+ console.log((0, import_node_util.styleText)("bold", "Dry run mode - no files will be created\n"));
3074
+ console.log((0, import_node_util.styleText)("bold", "Entry point:"));
6213
3075
  console.log(` ${ctx.entryPath}
6214
3076
  `);
6215
- console.log((0, import_node_util2.styleText)("bold", "Targets:"));
3077
+ console.log((0, import_node_util.styleText)("bold", "Targets:"));
6216
3078
  for (const target of ctx.resolvedTargets) {
6217
3079
  const outputPath = getOutputPath(ctx, target);
6218
3080
  console.log(` ${target} \u2192 ${outputPath}`);
6219
3081
  }
6220
3082
  console.log();
6221
3083
  if (ctx.options.include && ctx.options.include.length > 0) {
6222
- console.log((0, import_node_util2.styleText)("bold", "Assets to include:"));
3084
+ console.log((0, import_node_util.styleText)("bold", "Assets to include:"));
6223
3085
  for (const pattern of ctx.options.include) {
6224
3086
  console.log(` ${pattern}`);
6225
3087
  }
6226
3088
  console.log();
6227
3089
  }
6228
- console.log((0, import_node_util2.styleText)("bold", "Build steps:"));
3090
+ if (ctx.options.external && ctx.options.external.length > 0) {
3091
+ console.log((0, import_node_util.styleText)("bold", "External packages (not bundled):"));
3092
+ for (const pkg of ctx.options.external) {
3093
+ console.log(` ${pkg}`);
3094
+ }
3095
+ console.log();
3096
+ }
3097
+ if (ctx.options.minify) {
3098
+ console.log((0, import_node_util.styleText)("bold", "Minification:"), "enabled");
3099
+ console.log();
3100
+ }
3101
+ console.log((0, import_node_util.styleText)("bold", "Build steps:"));
6229
3102
  console.log(" 1. Bundle user script with esbuild");
6230
3103
  console.log(" 2. Copy thinkwell packages");
6231
3104
  console.log(" 3. Generate wrapper entry point");
@@ -6233,19 +3106,23 @@ function runDryRun(ctx) {
6233
3106
  console.log();
6234
3107
  const topLevelAwaits = detectTopLevelAwait(ctx.entryPath);
6235
3108
  if (topLevelAwaits.length > 0) {
6236
- console.log((0, import_node_util2.styleText)("yellow", "Warning: Top-level await detected"));
3109
+ console.log((0, import_node_util.styleText)("yellow", "Warning: Top-level await detected"));
6237
3110
  console.log(" Top-level await is not supported in compiled binaries.");
6238
3111
  console.log(` Found at line(s): ${topLevelAwaits.join(", ")}`);
6239
3112
  console.log(" Wrap async code in an async main() function instead.\n");
6240
3113
  }
6241
- console.log((0, import_node_util2.styleText)("dim", "Run without --dry-run to build."));
3114
+ console.log((0, import_node_util.styleText)("dim", "Run without --dry-run to build."));
6242
3115
  }
6243
3116
  __name(runDryRun, "runDryRun");
6244
3117
  async function runBuild(options) {
3118
+ if (options.watch) {
3119
+ await runWatchMode(options);
3120
+ return;
3121
+ }
6245
3122
  const ctx = initBuildContext(options);
6246
3123
  const topLevelAwaits = detectTopLevelAwait(ctx.entryPath);
6247
3124
  if (topLevelAwaits.length > 0) {
6248
- console.log((0, import_node_util2.styleText)("yellow", "Warning: Top-level await detected"));
3125
+ console.log((0, import_node_util.styleText)("yellow", "Warning: Top-level await detected"));
6249
3126
  console.log(" Top-level await is not supported in compiled binaries.");
6250
3127
  console.log(` Found at line(s): ${topLevelAwaits.join(", ")}`);
6251
3128
  console.log(" Wrap async code in an async main() function instead.\n");
@@ -6254,7 +3131,7 @@ async function runBuild(options) {
6254
3131
  runDryRun(ctx);
6255
3132
  return;
6256
3133
  }
6257
- log(ctx, `Building ${(0, import_node_util2.styleText)("bold", ctx.entryBasename)}...
3134
+ log(ctx, `Building ${(0, import_node_util.styleText)("bold", ctx.entryBasename)}...
6258
3135
  `);
6259
3136
  if ((0, import_node_fs.existsSync)(ctx.buildDir)) {
6260
3137
  (0, import_node_fs.rmSync)(ctx.buildDir, { recursive: true });
@@ -6285,9 +3162,9 @@ async function runBuild(options) {
6285
3162
  spinner.succeed(`Built ${(0, import_node_path.basename)(outputPath)}`);
6286
3163
  }
6287
3164
  log(ctx, "");
6288
- log(ctx, (0, import_node_util2.styleText)("green", "Build complete!"));
3165
+ log(ctx, (0, import_node_util.styleText)("green", "Build complete!"));
6289
3166
  log(ctx, "");
6290
- log(ctx, (0, import_node_util2.styleText)("bold", "Output:"));
3167
+ log(ctx, (0, import_node_util.styleText)("bold", "Output:"));
6291
3168
  for (const output of outputs) {
6292
3169
  log(ctx, ` ${output}`);
6293
3170
  }
@@ -6304,6 +3181,104 @@ Build artifacts preserved in: ${ctx.buildDir}`);
6304
3181
  }
6305
3182
  }
6306
3183
  __name(runBuild, "runBuild");
3184
+ async function runWatchMode(options) {
3185
+ const ctx = initBuildContext(options);
3186
+ console.log((0, import_node_util.styleText)("bold", `Watching ${ctx.entryBasename} for changes...`));
3187
+ console.log((0, import_node_util.styleText)("dim", "Press Ctrl+C to stop.\n"));
3188
+ let buildInProgress = false;
3189
+ let rebuildQueued = false;
3190
+ let debounceTimer = null;
3191
+ const DEBOUNCE_MS = 100;
3192
+ async function doBuild() {
3193
+ if (buildInProgress) {
3194
+ rebuildQueued = true;
3195
+ return;
3196
+ }
3197
+ buildInProgress = true;
3198
+ rebuildQueued = false;
3199
+ const startTime = Date.now();
3200
+ console.log((0, import_node_util.styleText)("dim", `[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}] Building...`));
3201
+ try {
3202
+ const freshCtx = initBuildContext(options);
3203
+ if ((0, import_node_fs.existsSync)(freshCtx.buildDir)) {
3204
+ (0, import_node_fs.rmSync)(freshCtx.buildDir, { recursive: true });
3205
+ }
3206
+ (0, import_node_fs.mkdirSync)(freshCtx.buildDir, { recursive: true });
3207
+ const userBundlePath = await bundleUserScript(freshCtx);
3208
+ copyThinkwellBundles(freshCtx);
3209
+ const wrapperPath = (0, import_node_path.join)(freshCtx.buildDir, "wrapper.cjs");
3210
+ const wrapperSource = generateWrapperSource(userBundlePath);
3211
+ (0, import_node_fs.writeFileSync)(wrapperPath, wrapperSource);
3212
+ const outputs = [];
3213
+ for (const target of freshCtx.resolvedTargets) {
3214
+ const outputPath = getOutputPath(freshCtx, target);
3215
+ await compileWithPkg(freshCtx, wrapperPath, target, outputPath);
3216
+ outputs.push(outputPath);
3217
+ }
3218
+ if (!freshCtx.options.verbose) {
3219
+ try {
3220
+ (0, import_node_fs.rmSync)(freshCtx.buildDir, { recursive: true });
3221
+ } catch {
3222
+ }
3223
+ }
3224
+ const elapsed = Date.now() - startTime;
3225
+ console.log((0, import_node_util.styleText)("green", `\u2713 Built in ${elapsed}ms`));
3226
+ for (const output of outputs) {
3227
+ console.log((0, import_node_util.styleText)("dim", ` ${(0, import_node_path.basename)(output)}`));
3228
+ }
3229
+ console.log();
3230
+ } catch (error) {
3231
+ const message = error instanceof Error ? error.message : String(error);
3232
+ console.log((0, import_node_util.styleText)("red", `\u2717 Build failed: ${message}`));
3233
+ console.log();
3234
+ } finally {
3235
+ buildInProgress = false;
3236
+ if (rebuildQueued) {
3237
+ doBuild();
3238
+ }
3239
+ }
3240
+ }
3241
+ __name(doBuild, "doBuild");
3242
+ function scheduleRebuild() {
3243
+ if (debounceTimer) {
3244
+ clearTimeout(debounceTimer);
3245
+ }
3246
+ debounceTimer = setTimeout(() => {
3247
+ debounceTimer = null;
3248
+ doBuild();
3249
+ }, DEBOUNCE_MS);
3250
+ }
3251
+ __name(scheduleRebuild, "scheduleRebuild");
3252
+ await doBuild();
3253
+ const watchDir = ctx.entryDir;
3254
+ const watcher = (0, import_node_fs.watch)(watchDir, { recursive: true }, (_eventType, filename) => {
3255
+ if (!filename)
3256
+ return;
3257
+ if (filename.includes(".thinkwell-build") || filename.includes("node_modules") || filename.startsWith(".") || filename.endsWith(".d.ts")) {
3258
+ return;
3259
+ }
3260
+ if (!/\.(ts|tsx|js|jsx|mts|mjs|cts|cjs|json)$/.test(filename)) {
3261
+ return;
3262
+ }
3263
+ if (ctx.options.verbose) {
3264
+ console.log((0, import_node_util.styleText)("dim", ` Changed: ${filename}`));
3265
+ }
3266
+ scheduleRebuild();
3267
+ });
3268
+ const cleanup = /* @__PURE__ */ __name(() => {
3269
+ watcher.close();
3270
+ if (debounceTimer) {
3271
+ clearTimeout(debounceTimer);
3272
+ }
3273
+ console.log("\nStopped watching.");
3274
+ process.exit(0);
3275
+ }, "cleanup");
3276
+ process.on("SIGINT", cleanup);
3277
+ process.on("SIGTERM", cleanup);
3278
+ await new Promise(() => {
3279
+ });
3280
+ }
3281
+ __name(runWatchMode, "runWatchMode");
6307
3282
  function showBuildHelp() {
6308
3283
  console.log(`
6309
3284
  thinkwell build - Compile TypeScript scripts into standalone executables
@@ -6318,6 +3293,9 @@ Options:
6318
3293
  -o, --output <path> Output file path (default: ./<name>-<target>)
6319
3294
  -t, --target <target> Target platform (can be specified multiple times)
6320
3295
  --include <glob> Additional files to embed as assets
3296
+ -e, --external <pkg> Exclude package from bundling (can be repeated)
3297
+ -m, --minify Minify the bundled code for smaller output
3298
+ -w, --watch Watch for changes and rebuild automatically
6321
3299
  -n, --dry-run Show what would be built without building
6322
3300
  -q, --quiet Suppress all output except errors (for CI)
6323
3301
  -v, --verbose Show detailed build output
@@ -6336,13 +3314,33 @@ Examples:
6336
3314
  thinkwell build src/agent.ts --target linux-x64 Build for Linux
6337
3315
  thinkwell build src/agent.ts -t darwin-arm64 -t linux-x64 Multi-platform
6338
3316
  thinkwell build src/agent.ts --dry-run Preview build without executing
3317
+ thinkwell build src/agent.ts -e sqlite3 Keep sqlite3 as external
3318
+ thinkwell build src/agent.ts --minify Minify for smaller binary
3319
+ thinkwell build src/agent.ts --watch Rebuild on file changes
6339
3320
 
6340
3321
  The resulting binary is self-contained and includes:
6341
3322
  - Node.js 24 runtime with TypeScript support
6342
3323
  - All thinkwell packages
6343
3324
  - Your bundled application code
6344
3325
 
3326
+ Configuration via package.json:
3327
+ Add a "thinkwell" key to your package.json to set defaults:
3328
+
3329
+ {
3330
+ "thinkwell": {
3331
+ "build": {
3332
+ "output": "dist/my-agent",
3333
+ "targets": ["darwin-arm64", "linux-x64"],
3334
+ "external": ["sqlite3"],
3335
+ "minify": true
3336
+ }
3337
+ }
3338
+ }
3339
+
3340
+ CLI options override package.json settings.
3341
+
6345
3342
  Note: Binaries are ~70-90 MB due to the embedded Node.js runtime.
3343
+ Use --minify to reduce bundle size (though Node.js runtime dominates).
6346
3344
  `);
6347
3345
  }
6348
3346
  __name(showBuildHelp, "showBuildHelp");