@mathripper/ideal-cli 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3406 -115
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -88,11 +88,11 @@ async function isEmpty(dirPath) {
|
|
|
88
88
|
try {
|
|
89
89
|
const files = await fs.readdir(dirPath);
|
|
90
90
|
return files.length === 0;
|
|
91
|
-
} catch (
|
|
92
|
-
if (
|
|
91
|
+
} catch (error2) {
|
|
92
|
+
if (error2.code === "ENOENT") {
|
|
93
93
|
return true;
|
|
94
94
|
}
|
|
95
|
-
throw
|
|
95
|
+
throw error2;
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
async function copyDir(src, dest, options2 = {}) {
|
|
@@ -2721,7 +2721,7 @@ var require_loader = __commonJS({
|
|
|
2721
2721
|
iterator(documents[index]);
|
|
2722
2722
|
}
|
|
2723
2723
|
}
|
|
2724
|
-
function
|
|
2724
|
+
function load2(input, options2) {
|
|
2725
2725
|
var documents = loadDocuments(input, options2);
|
|
2726
2726
|
if (documents.length === 0) {
|
|
2727
2727
|
return void 0;
|
|
@@ -2738,10 +2738,10 @@ var require_loader = __commonJS({
|
|
|
2738
2738
|
return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options2));
|
|
2739
2739
|
}
|
|
2740
2740
|
function safeLoad(input, options2) {
|
|
2741
|
-
return
|
|
2741
|
+
return load2(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options2));
|
|
2742
2742
|
}
|
|
2743
2743
|
module2.exports.loadAll = loadAll;
|
|
2744
|
-
module2.exports.load =
|
|
2744
|
+
module2.exports.load = load2;
|
|
2745
2745
|
module2.exports.safeLoadAll = safeLoadAll;
|
|
2746
2746
|
module2.exports.safeLoad = safeLoad;
|
|
2747
2747
|
}
|
|
@@ -3752,14 +3752,20 @@ init_esm_shims();
|
|
|
3752
3752
|
|
|
3753
3753
|
// src/constants/messages.ts
|
|
3754
3754
|
init_esm_shims();
|
|
3755
|
+
var MSG_INIT_SUCCESS = "\u9879\u76EE\u521D\u59CB\u5316\u5B8C\u6210\uFF01";
|
|
3755
3756
|
var MSG_UPDATE_SUCCESS = "\u66F4\u65B0\u5B8C\u6210\uFF01";
|
|
3757
|
+
var ERR_DIR_EXISTS = "\u76EE\u5F55\u5DF2\u5B58\u5728\uFF0C\u8BF7\u4F7F\u7528 --force \u5F3A\u5236\u8986\u76D6";
|
|
3756
3758
|
var ERR_CONFIG_NOT_FOUND = "\u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728\uFF0C\u8BF7\u5148\u8FD0\u884C ideal init";
|
|
3757
3759
|
var WARN_FILE_MODIFIED = "\u6587\u4EF6\u5DF2\u88AB\u4FEE\u6539\uFF0C\u66F4\u65B0\u65F6\u53EF\u80FD\u88AB\u8986\u76D6";
|
|
3758
3760
|
var WARN_CONFLICT_DETECTED = "\u68C0\u6D4B\u5230\u51B2\u7A81\uFF0C\u8BF7\u624B\u52A8\u89E3\u51B3";
|
|
3761
|
+
var INFO_CREATING_DIR = "\u6B63\u5728\u521B\u5EFA\u76EE\u5F55...";
|
|
3762
|
+
var INFO_DOWNLOADING = "\u6B63\u5728\u4E0B\u8F7D\u6A21\u677F...";
|
|
3759
3763
|
var INFO_CHECKING = "\u6B63\u5728\u68C0\u67E5...";
|
|
3760
3764
|
var INFO_UPDATING = "\u6B63\u5728\u66F4\u65B0...";
|
|
3761
|
-
var HELP_INIT = "\u521D\u59CB\u5316\u9879\u76EE\u5DE5\u4F5C\u6D41\u914D\u7F6E";
|
|
3762
3765
|
var HELP_DOCTOR = "\u68C0\u67E5\u5DE5\u4F5C\u6D41\u914D\u7F6E\u5B8C\u6574\u6027\u548C\u6709\u6548\u6027";
|
|
3766
|
+
var PROMPT_PROJECT_NAME = "\u9879\u76EE\u540D\u79F0";
|
|
3767
|
+
var PROMPT_GIT_BRANCH = "Git \u4E3B\u5206\u652F\u540D\u79F0";
|
|
3768
|
+
var PROMPT_TECH_STACK = "\u6280\u672F\u6808\u7C7B\u578B";
|
|
3763
3769
|
|
|
3764
3770
|
// src/commands/doctor.ts
|
|
3765
3771
|
init_esm_shims();
|
|
@@ -3787,7 +3793,7 @@ init_esm_shims();
|
|
|
3787
3793
|
var ANSI_BACKGROUND_OFFSET = 10;
|
|
3788
3794
|
var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
|
|
3789
3795
|
var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`;
|
|
3790
|
-
var wrapAnsi16m = (offset = 0) => (
|
|
3796
|
+
var wrapAnsi16m = (offset = 0) => (red2, green2, blue2) => `\x1B[${38 + offset};2;${red2};${green2};${blue2}m`;
|
|
3791
3797
|
var styles = {
|
|
3792
3798
|
modifier: {
|
|
3793
3799
|
reset: [0, 0],
|
|
@@ -3882,17 +3888,17 @@ function assembleStyles() {
|
|
|
3882
3888
|
styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
|
|
3883
3889
|
Object.defineProperties(styles, {
|
|
3884
3890
|
rgbToAnsi256: {
|
|
3885
|
-
value(
|
|
3886
|
-
if (
|
|
3887
|
-
if (
|
|
3891
|
+
value(red2, green2, blue2) {
|
|
3892
|
+
if (red2 === green2 && green2 === blue2) {
|
|
3893
|
+
if (red2 < 8) {
|
|
3888
3894
|
return 16;
|
|
3889
3895
|
}
|
|
3890
|
-
if (
|
|
3896
|
+
if (red2 > 248) {
|
|
3891
3897
|
return 231;
|
|
3892
3898
|
}
|
|
3893
|
-
return Math.round((
|
|
3899
|
+
return Math.round((red2 - 8) / 247 * 24) + 232;
|
|
3894
3900
|
}
|
|
3895
|
-
return 16 + 36 * Math.round(
|
|
3901
|
+
return 16 + 36 * Math.round(red2 / 255 * 5) + 6 * Math.round(green2 / 255 * 5) + Math.round(blue2 / 255 * 5);
|
|
3896
3902
|
},
|
|
3897
3903
|
enumerable: false
|
|
3898
3904
|
},
|
|
@@ -3929,25 +3935,25 @@ function assembleStyles() {
|
|
|
3929
3935
|
if (code < 16) {
|
|
3930
3936
|
return 90 + (code - 8);
|
|
3931
3937
|
}
|
|
3932
|
-
let
|
|
3933
|
-
let
|
|
3934
|
-
let
|
|
3938
|
+
let red2;
|
|
3939
|
+
let green2;
|
|
3940
|
+
let blue2;
|
|
3935
3941
|
if (code >= 232) {
|
|
3936
|
-
|
|
3937
|
-
|
|
3938
|
-
|
|
3942
|
+
red2 = ((code - 232) * 10 + 8) / 255;
|
|
3943
|
+
green2 = red2;
|
|
3944
|
+
blue2 = red2;
|
|
3939
3945
|
} else {
|
|
3940
3946
|
code -= 16;
|
|
3941
3947
|
const remainder = code % 36;
|
|
3942
|
-
|
|
3943
|
-
|
|
3944
|
-
|
|
3948
|
+
red2 = Math.floor(code / 36) / 5;
|
|
3949
|
+
green2 = Math.floor(remainder / 6) / 5;
|
|
3950
|
+
blue2 = remainder % 6 / 5;
|
|
3945
3951
|
}
|
|
3946
|
-
const value = Math.max(
|
|
3952
|
+
const value = Math.max(red2, green2, blue2) * 2;
|
|
3947
3953
|
if (value === 0) {
|
|
3948
3954
|
return 30;
|
|
3949
3955
|
}
|
|
3950
|
-
let result = 30 + (Math.round(
|
|
3956
|
+
let result = 30 + (Math.round(blue2) << 2 | Math.round(green2) << 1 | Math.round(red2));
|
|
3951
3957
|
if (value === 2) {
|
|
3952
3958
|
result += 60;
|
|
3953
3959
|
}
|
|
@@ -3956,7 +3962,7 @@ function assembleStyles() {
|
|
|
3956
3962
|
enumerable: false
|
|
3957
3963
|
},
|
|
3958
3964
|
rgbToAnsi: {
|
|
3959
|
-
value: (
|
|
3965
|
+
value: (red2, green2, blue2) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red2, green2, blue2)),
|
|
3960
3966
|
enumerable: false
|
|
3961
3967
|
},
|
|
3962
3968
|
hexToAnsi: {
|
|
@@ -4384,6 +4390,30 @@ ${source_default.bold.cyan(message)}
|
|
|
4384
4390
|
var logger = Logger.getInstance();
|
|
4385
4391
|
|
|
4386
4392
|
// src/utils/detector.ts
|
|
4393
|
+
var TECH_STACK_RULES = [
|
|
4394
|
+
{
|
|
4395
|
+
name: "React",
|
|
4396
|
+
files: ["react.config.js", "react.config.ts"],
|
|
4397
|
+
dependencies: ["react", "react-dom"]
|
|
4398
|
+
},
|
|
4399
|
+
{
|
|
4400
|
+
name: "Vue",
|
|
4401
|
+
files: ["vue.config.js", "vue.config.ts", "vite.config.js", "vite.config.ts"],
|
|
4402
|
+
directories: ["src/views", "src/components"],
|
|
4403
|
+
dependencies: ["vue"]
|
|
4404
|
+
},
|
|
4405
|
+
{
|
|
4406
|
+
name: "Node.js",
|
|
4407
|
+
files: ["nest-cli.json", "tsconfig.build.json"],
|
|
4408
|
+
directories: ["src/controllers", "src/services", "src/modules"],
|
|
4409
|
+
dependencies: ["express", "nestjs", "@nestjs/core", "koa", "fastify"]
|
|
4410
|
+
},
|
|
4411
|
+
{
|
|
4412
|
+
name: "Python",
|
|
4413
|
+
files: ["requirements.txt", "setup.py", "pyproject.toml", "Pipfile"],
|
|
4414
|
+
directories: ["src", "tests"]
|
|
4415
|
+
}
|
|
4416
|
+
];
|
|
4387
4417
|
async function detectProjectRoot(startPath = process.cwd()) {
|
|
4388
4418
|
const idealRoot = await getProjectRoot(startPath);
|
|
4389
4419
|
if (idealRoot) {
|
|
@@ -4404,6 +4434,56 @@ async function detectProjectRoot(startPath = process.cwd()) {
|
|
|
4404
4434
|
}
|
|
4405
4435
|
return null;
|
|
4406
4436
|
}
|
|
4437
|
+
async function detectTechStack(projectRoot) {
|
|
4438
|
+
const packageJsonPath = path3.join(projectRoot, "package.json");
|
|
4439
|
+
const hasPackageJson = await fileExists(packageJsonPath);
|
|
4440
|
+
if (hasPackageJson) {
|
|
4441
|
+
try {
|
|
4442
|
+
const packageJson = JSON.parse(await readFile(packageJsonPath));
|
|
4443
|
+
const allDeps = {
|
|
4444
|
+
...packageJson.dependencies,
|
|
4445
|
+
...packageJson.devDependencies
|
|
4446
|
+
};
|
|
4447
|
+
for (const rule of TECH_STACK_RULES) {
|
|
4448
|
+
if (rule.name === "Python") continue;
|
|
4449
|
+
if (rule.files) {
|
|
4450
|
+
for (const file of rule.files) {
|
|
4451
|
+
if (await fileExists(path3.join(projectRoot, file))) {
|
|
4452
|
+
return rule.name;
|
|
4453
|
+
}
|
|
4454
|
+
}
|
|
4455
|
+
}
|
|
4456
|
+
if (rule.directories) {
|
|
4457
|
+
for (const dir of rule.directories) {
|
|
4458
|
+
if (await pathExists(path3.join(projectRoot, dir))) {
|
|
4459
|
+
return rule.name;
|
|
4460
|
+
}
|
|
4461
|
+
}
|
|
4462
|
+
}
|
|
4463
|
+
if (rule.dependencies) {
|
|
4464
|
+
for (const dep of rule.dependencies) {
|
|
4465
|
+
if (allDeps[dep]) {
|
|
4466
|
+
return rule.name;
|
|
4467
|
+
}
|
|
4468
|
+
}
|
|
4469
|
+
}
|
|
4470
|
+
}
|
|
4471
|
+
return "Node.js";
|
|
4472
|
+
} catch (error2) {
|
|
4473
|
+
logger.debug(
|
|
4474
|
+
`Failed to parse package.json: ${error2 instanceof Error ? error2.message : "Unknown error"}`
|
|
4475
|
+
);
|
|
4476
|
+
}
|
|
4477
|
+
}
|
|
4478
|
+
const requirementsPath = path3.join(projectRoot, "requirements.txt");
|
|
4479
|
+
const pyprojectPath = path3.join(projectRoot, "pyproject.toml");
|
|
4480
|
+
const setupPath = path3.join(projectRoot, "setup.py");
|
|
4481
|
+
const pipfilePath = path3.join(projectRoot, "Pipfile");
|
|
4482
|
+
if (await fileExists(requirementsPath) || await fileExists(pyprojectPath) || await fileExists(setupPath) || await fileExists(pipfilePath)) {
|
|
4483
|
+
return "Python";
|
|
4484
|
+
}
|
|
4485
|
+
return "Other";
|
|
4486
|
+
}
|
|
4407
4487
|
async function detectGitRepo(projectRoot) {
|
|
4408
4488
|
const gitDir = path3.join(projectRoot, ".git");
|
|
4409
4489
|
return pathExists(gitDir);
|
|
@@ -4420,6 +4500,59 @@ function getGitBranch(projectRoot) {
|
|
|
4420
4500
|
return null;
|
|
4421
4501
|
}
|
|
4422
4502
|
}
|
|
4503
|
+
function getGitRemoteUrl(projectRoot) {
|
|
4504
|
+
try {
|
|
4505
|
+
const url = execSync("git config --get remote.origin.url", {
|
|
4506
|
+
cwd: projectRoot,
|
|
4507
|
+
encoding: "utf-8",
|
|
4508
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
4509
|
+
}).trim();
|
|
4510
|
+
return url || null;
|
|
4511
|
+
} catch {
|
|
4512
|
+
return null;
|
|
4513
|
+
}
|
|
4514
|
+
}
|
|
4515
|
+
function extractProjectNameFromGitUrl(gitUrl) {
|
|
4516
|
+
let projectName = gitUrl;
|
|
4517
|
+
if (projectName.endsWith(".git")) {
|
|
4518
|
+
projectName = projectName.slice(0, -4);
|
|
4519
|
+
}
|
|
4520
|
+
const parts = projectName.split("/");
|
|
4521
|
+
if (parts.length > 0) {
|
|
4522
|
+
projectName = parts[parts.length - 1];
|
|
4523
|
+
}
|
|
4524
|
+
if (projectName.includes(":")) {
|
|
4525
|
+
const colonParts = projectName.split(":");
|
|
4526
|
+
projectName = colonParts[colonParts.length - 1];
|
|
4527
|
+
if (projectName.includes("/")) {
|
|
4528
|
+
projectName = projectName.split("/").pop() || projectName;
|
|
4529
|
+
}
|
|
4530
|
+
}
|
|
4531
|
+
return projectName;
|
|
4532
|
+
}
|
|
4533
|
+
async function getProjectNameFromPackageJson(projectRoot) {
|
|
4534
|
+
const packageJsonPath = path3.join(projectRoot, "package.json");
|
|
4535
|
+
if (!await fileExists(packageJsonPath)) {
|
|
4536
|
+
return null;
|
|
4537
|
+
}
|
|
4538
|
+
try {
|
|
4539
|
+
const packageJson = JSON.parse(await readFile(packageJsonPath));
|
|
4540
|
+
return packageJson.name || null;
|
|
4541
|
+
} catch {
|
|
4542
|
+
return null;
|
|
4543
|
+
}
|
|
4544
|
+
}
|
|
4545
|
+
async function detectProjectName(projectRoot) {
|
|
4546
|
+
const packageName = await getProjectNameFromPackageJson(projectRoot);
|
|
4547
|
+
if (packageName) {
|
|
4548
|
+
return packageName;
|
|
4549
|
+
}
|
|
4550
|
+
const gitUrl = getGitRemoteUrl(projectRoot);
|
|
4551
|
+
if (gitUrl) {
|
|
4552
|
+
return extractProjectNameFromGitUrl(gitUrl);
|
|
4553
|
+
}
|
|
4554
|
+
return path3.basename(projectRoot);
|
|
4555
|
+
}
|
|
4423
4556
|
async function detectIdealInitialized(projectRoot) {
|
|
4424
4557
|
const idealDir = path3.join(projectRoot, ".ideal");
|
|
4425
4558
|
const configPath = path3.join(idealDir, "config.json");
|
|
@@ -4663,12 +4796,12 @@ var ProjectValidator = class {
|
|
|
4663
4796
|
details: `\u9879\u76EE\u540D\u79F0: ${config.projectName}
|
|
4664
4797
|
\u6280\u672F\u6808: ${config.techStack}`
|
|
4665
4798
|
};
|
|
4666
|
-
} catch (
|
|
4799
|
+
} catch (error2) {
|
|
4667
4800
|
return {
|
|
4668
4801
|
name: "\u914D\u7F6E\u6587\u4EF6",
|
|
4669
4802
|
status: "error",
|
|
4670
4803
|
message: "\u914D\u7F6E\u6587\u4EF6\u683C\u5F0F\u9519\u8BEF",
|
|
4671
|
-
details: `\u89E3\u6790\u9519\u8BEF: ${
|
|
4804
|
+
details: `\u89E3\u6790\u9519\u8BEF: ${error2 instanceof Error ? error2.message : "Unknown error"}`
|
|
4672
4805
|
};
|
|
4673
4806
|
}
|
|
4674
4807
|
}
|
|
@@ -4951,9 +5084,9 @@ var DoctorCommand = class {
|
|
|
4951
5084
|
return 1;
|
|
4952
5085
|
}
|
|
4953
5086
|
return 0;
|
|
4954
|
-
} catch (
|
|
5087
|
+
} catch (error2) {
|
|
4955
5088
|
this.logger.error(
|
|
4956
|
-
`\u8BCA\u65AD\u68C0\u67E5\u5931\u8D25: ${
|
|
5089
|
+
`\u8BCA\u65AD\u68C0\u67E5\u5931\u8D25: ${error2 instanceof Error ? error2.message : "Unknown error"}`
|
|
4957
5090
|
);
|
|
4958
5091
|
return 1;
|
|
4959
5092
|
}
|
|
@@ -5017,9 +5150,9 @@ var ConfigManager = class {
|
|
|
5017
5150
|
const { data } = (0, import_gray_matter.default)(content);
|
|
5018
5151
|
const config = this.parseConfig(data);
|
|
5019
5152
|
return config;
|
|
5020
|
-
} catch (
|
|
5153
|
+
} catch (error2) {
|
|
5021
5154
|
throw new Error(
|
|
5022
|
-
`\u914D\u7F6E\u6587\u4EF6\u89E3\u6790\u5931\u8D25: ${
|
|
5155
|
+
`\u914D\u7F6E\u6587\u4EF6\u89E3\u6790\u5931\u8D25: ${error2 instanceof Error ? error2.message : String(error2)}`
|
|
5023
5156
|
);
|
|
5024
5157
|
}
|
|
5025
5158
|
}
|
|
@@ -5294,12 +5427,12 @@ var ConfigCommand = class {
|
|
|
5294
5427
|
console.log(item.key.padEnd(30) + item.value);
|
|
5295
5428
|
}
|
|
5296
5429
|
console.log("");
|
|
5297
|
-
} catch (
|
|
5298
|
-
if (
|
|
5430
|
+
} catch (error2) {
|
|
5431
|
+
if (error2 instanceof Error && error2.message.includes("\u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728")) {
|
|
5299
5432
|
console.error(ERR_CONFIG_NOT_FOUND);
|
|
5300
5433
|
process.exit(1);
|
|
5301
5434
|
}
|
|
5302
|
-
throw
|
|
5435
|
+
throw error2;
|
|
5303
5436
|
}
|
|
5304
5437
|
}
|
|
5305
5438
|
/**
|
|
@@ -5325,12 +5458,12 @@ var ConfigCommand = class {
|
|
|
5325
5458
|
} else {
|
|
5326
5459
|
console.log(String(value));
|
|
5327
5460
|
}
|
|
5328
|
-
} catch (
|
|
5329
|
-
if (
|
|
5461
|
+
} catch (error2) {
|
|
5462
|
+
if (error2 instanceof Error && error2.message.includes("\u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728")) {
|
|
5330
5463
|
console.error(ERR_CONFIG_NOT_FOUND);
|
|
5331
5464
|
process.exit(1);
|
|
5332
5465
|
}
|
|
5333
|
-
throw
|
|
5466
|
+
throw error2;
|
|
5334
5467
|
}
|
|
5335
5468
|
}
|
|
5336
5469
|
/**
|
|
@@ -5352,12 +5485,12 @@ var ConfigCommand = class {
|
|
|
5352
5485
|
const updatedConfig = configObj;
|
|
5353
5486
|
await this.configManager.write(projectRoot, updatedConfig);
|
|
5354
5487
|
console.log(`\u5DF2\u66F4\u65B0: ${key} = ${value}`);
|
|
5355
|
-
} catch (
|
|
5356
|
-
if (
|
|
5488
|
+
} catch (error2) {
|
|
5489
|
+
if (error2 instanceof Error && error2.message.includes("\u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728")) {
|
|
5357
5490
|
console.error(ERR_CONFIG_NOT_FOUND);
|
|
5358
5491
|
process.exit(1);
|
|
5359
5492
|
}
|
|
5360
|
-
throw
|
|
5493
|
+
throw error2;
|
|
5361
5494
|
}
|
|
5362
5495
|
}
|
|
5363
5496
|
};
|
|
@@ -5418,8 +5551,8 @@ function createHttpClient(config = {}) {
|
|
|
5418
5551
|
}
|
|
5419
5552
|
return config2;
|
|
5420
5553
|
},
|
|
5421
|
-
(
|
|
5422
|
-
return Promise.reject(
|
|
5554
|
+
(error2) => {
|
|
5555
|
+
return Promise.reject(error2);
|
|
5423
5556
|
}
|
|
5424
5557
|
);
|
|
5425
5558
|
instance.interceptors.response.use(
|
|
@@ -5431,8 +5564,8 @@ function createHttpClient(config = {}) {
|
|
|
5431
5564
|
}
|
|
5432
5565
|
return response;
|
|
5433
5566
|
},
|
|
5434
|
-
(
|
|
5435
|
-
return Promise.reject(handleAxiosError(
|
|
5567
|
+
(error2) => {
|
|
5568
|
+
return Promise.reject(handleAxiosError(error2));
|
|
5436
5569
|
}
|
|
5437
5570
|
);
|
|
5438
5571
|
return instance;
|
|
@@ -5468,9 +5601,9 @@ function configureProxy(instance) {
|
|
|
5468
5601
|
}
|
|
5469
5602
|
}
|
|
5470
5603
|
}
|
|
5471
|
-
function handleAxiosError(
|
|
5472
|
-
if (
|
|
5473
|
-
const { status, data } =
|
|
5604
|
+
function handleAxiosError(error2) {
|
|
5605
|
+
if (error2.response) {
|
|
5606
|
+
const { status, data } = error2.response;
|
|
5474
5607
|
let message = `\u8BF7\u6C42\u5931\u8D25\uFF0C\u72B6\u6001\u7801: ${status}`;
|
|
5475
5608
|
if (data && typeof data === "object" && "message" in data) {
|
|
5476
5609
|
message = data.message;
|
|
@@ -5479,21 +5612,21 @@ function handleAxiosError(error) {
|
|
|
5479
5612
|
}
|
|
5480
5613
|
return new NetworkError(message, "RESPONSE_ERROR", status, data);
|
|
5481
5614
|
}
|
|
5482
|
-
if (
|
|
5615
|
+
if (error2.request) {
|
|
5483
5616
|
return new NetworkError(
|
|
5484
5617
|
"\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5",
|
|
5485
5618
|
"NO_RESPONSE"
|
|
5486
5619
|
);
|
|
5487
5620
|
}
|
|
5488
|
-
if (
|
|
5621
|
+
if (error2.code === "ECONNABORTED") {
|
|
5489
5622
|
return new NetworkError(
|
|
5490
|
-
`\u8BF7\u6C42\u8D85\u65F6\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF08\u8D85\u65F6\u65F6\u95F4: ${
|
|
5623
|
+
`\u8BF7\u6C42\u8D85\u65F6\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF08\u8D85\u65F6\u65F6\u95F4: ${error2.config?.timeout || DEFAULT_TIMEOUT}ms\uFF09`,
|
|
5491
5624
|
"TIMEOUT"
|
|
5492
5625
|
);
|
|
5493
5626
|
}
|
|
5494
5627
|
return new NetworkError(
|
|
5495
|
-
|
|
5496
|
-
|
|
5628
|
+
error2.message || "\u672A\u77E5\u7F51\u7EDC\u9519\u8BEF",
|
|
5629
|
+
error2.code || "UNKNOWN"
|
|
5497
5630
|
);
|
|
5498
5631
|
}
|
|
5499
5632
|
async function get(client, url, config) {
|
|
@@ -5505,11 +5638,11 @@ async function withRetry(requestFn, maxRetries = 3, retryDelay = 1e3) {
|
|
|
5505
5638
|
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
5506
5639
|
try {
|
|
5507
5640
|
return await requestFn();
|
|
5508
|
-
} catch (
|
|
5509
|
-
lastError =
|
|
5510
|
-
if (
|
|
5511
|
-
if (
|
|
5512
|
-
throw
|
|
5641
|
+
} catch (error2) {
|
|
5642
|
+
lastError = error2;
|
|
5643
|
+
if (error2 instanceof NetworkError && error2.statusCode) {
|
|
5644
|
+
if (error2.statusCode >= 400 && error2.statusCode < 500) {
|
|
5645
|
+
throw error2;
|
|
5513
5646
|
}
|
|
5514
5647
|
}
|
|
5515
5648
|
if (attempt < maxRetries) {
|
|
@@ -5555,8 +5688,8 @@ var GitHubClient = class {
|
|
|
5555
5688
|
* @param ref Git 引用(分支、标签或提交 SHA)
|
|
5556
5689
|
* @returns 目录内容数组
|
|
5557
5690
|
*/
|
|
5558
|
-
async getContents(owner, repo,
|
|
5559
|
-
let url = `/repos/${owner}/${repo}/contents/${
|
|
5691
|
+
async getContents(owner, repo, path11 = "", ref) {
|
|
5692
|
+
let url = `/repos/${owner}/${repo}/contents/${path11}`;
|
|
5560
5693
|
if (ref) {
|
|
5561
5694
|
url += `?ref=${encodeURIComponent(ref)}`;
|
|
5562
5695
|
}
|
|
@@ -5569,11 +5702,11 @@ var GitHubClient = class {
|
|
|
5569
5702
|
3,
|
|
5570
5703
|
1e3
|
|
5571
5704
|
);
|
|
5572
|
-
} catch (
|
|
5573
|
-
if (
|
|
5574
|
-
logger.error(`Failed to fetch contents from ${url}: ${
|
|
5705
|
+
} catch (error2) {
|
|
5706
|
+
if (error2 instanceof NetworkError) {
|
|
5707
|
+
logger.error(`Failed to fetch contents from ${url}: ${error2.message}`);
|
|
5575
5708
|
}
|
|
5576
|
-
throw
|
|
5709
|
+
throw error2;
|
|
5577
5710
|
}
|
|
5578
5711
|
}
|
|
5579
5712
|
/**
|
|
@@ -5584,8 +5717,8 @@ var GitHubClient = class {
|
|
|
5584
5717
|
* @param ref Git 引用
|
|
5585
5718
|
* @returns 文件内容(已解码)
|
|
5586
5719
|
*/
|
|
5587
|
-
async getFileContent(owner, repo,
|
|
5588
|
-
let url = `/repos/${owner}/${repo}/contents/${
|
|
5720
|
+
async getFileContent(owner, repo, path11, ref) {
|
|
5721
|
+
let url = `/repos/${owner}/${repo}/contents/${path11}`;
|
|
5589
5722
|
if (ref) {
|
|
5590
5723
|
url += `?ref=${encodeURIComponent(ref)}`;
|
|
5591
5724
|
}
|
|
@@ -5605,13 +5738,13 @@ var GitHubClient = class {
|
|
|
5605
5738
|
return content;
|
|
5606
5739
|
}
|
|
5607
5740
|
throw new Error(
|
|
5608
|
-
`Unexpected response: content or encoding missing for ${
|
|
5741
|
+
`Unexpected response: content or encoding missing for ${path11}`
|
|
5609
5742
|
);
|
|
5610
|
-
} catch (
|
|
5611
|
-
if (
|
|
5612
|
-
logger.error(`Failed to fetch file ${
|
|
5743
|
+
} catch (error2) {
|
|
5744
|
+
if (error2 instanceof NetworkError) {
|
|
5745
|
+
logger.error(`Failed to fetch file ${path11}: ${error2.message}`);
|
|
5613
5746
|
}
|
|
5614
|
-
throw
|
|
5747
|
+
throw error2;
|
|
5615
5748
|
}
|
|
5616
5749
|
}
|
|
5617
5750
|
/**
|
|
@@ -5628,13 +5761,13 @@ var GitHubClient = class {
|
|
|
5628
5761
|
responseType: "text"
|
|
5629
5762
|
});
|
|
5630
5763
|
return response.data;
|
|
5631
|
-
} catch (
|
|
5632
|
-
if (
|
|
5764
|
+
} catch (error2) {
|
|
5765
|
+
if (error2 instanceof NetworkError) {
|
|
5633
5766
|
logger.error(
|
|
5634
|
-
`Failed to fetch file from ${downloadUrl}: ${
|
|
5767
|
+
`Failed to fetch file from ${downloadUrl}: ${error2.message}`
|
|
5635
5768
|
);
|
|
5636
5769
|
}
|
|
5637
|
-
throw
|
|
5770
|
+
throw error2;
|
|
5638
5771
|
}
|
|
5639
5772
|
}
|
|
5640
5773
|
/**
|
|
@@ -5645,13 +5778,13 @@ var GitHubClient = class {
|
|
|
5645
5778
|
* @param ref Git 引用
|
|
5646
5779
|
* @returns 版本信息
|
|
5647
5780
|
*/
|
|
5648
|
-
async getVersion(owner, repo,
|
|
5649
|
-
const content = await this.getFileContent(owner, repo,
|
|
5781
|
+
async getVersion(owner, repo, path11 = "version.json", ref) {
|
|
5782
|
+
const content = await this.getFileContent(owner, repo, path11, ref);
|
|
5650
5783
|
try {
|
|
5651
5784
|
return JSON.parse(content);
|
|
5652
|
-
} catch (
|
|
5785
|
+
} catch (error2) {
|
|
5653
5786
|
throw new Error(
|
|
5654
|
-
`Failed to parse version.json: ${
|
|
5787
|
+
`Failed to parse version.json: ${error2 instanceof Error ? error2.message : "Unknown error"}`
|
|
5655
5788
|
);
|
|
5656
5789
|
}
|
|
5657
5790
|
}
|
|
@@ -5663,7 +5796,7 @@ var GitHubClient = class {
|
|
|
5663
5796
|
* @param ref Git 引用
|
|
5664
5797
|
* @returns 所有文件的数组
|
|
5665
5798
|
*/
|
|
5666
|
-
async fetchDirectory(owner, repo,
|
|
5799
|
+
async fetchDirectory(owner, repo, path11 = "", ref) {
|
|
5667
5800
|
const results = [];
|
|
5668
5801
|
const fetchRecursive = async (currentPath) => {
|
|
5669
5802
|
const contents = await this.getContents(owner, repo, currentPath, ref);
|
|
@@ -5675,7 +5808,7 @@ var GitHubClient = class {
|
|
|
5675
5808
|
}
|
|
5676
5809
|
}
|
|
5677
5810
|
};
|
|
5678
|
-
await fetchRecursive(
|
|
5811
|
+
await fetchRecursive(path11);
|
|
5679
5812
|
return results;
|
|
5680
5813
|
}
|
|
5681
5814
|
/**
|
|
@@ -5688,11 +5821,11 @@ var GitHubClient = class {
|
|
|
5688
5821
|
try {
|
|
5689
5822
|
await this.getContents(owner, repo, "");
|
|
5690
5823
|
return true;
|
|
5691
|
-
} catch (
|
|
5692
|
-
if (
|
|
5824
|
+
} catch (error2) {
|
|
5825
|
+
if (error2 instanceof NetworkError && error2.statusCode === 404) {
|
|
5693
5826
|
return false;
|
|
5694
5827
|
}
|
|
5695
|
-
throw
|
|
5828
|
+
throw error2;
|
|
5696
5829
|
}
|
|
5697
5830
|
}
|
|
5698
5831
|
/**
|
|
@@ -5703,15 +5836,15 @@ var GitHubClient = class {
|
|
|
5703
5836
|
* @param ref Git 引用
|
|
5704
5837
|
* @returns 如果路径存在返回 true
|
|
5705
5838
|
*/
|
|
5706
|
-
async pathExists(owner, repo,
|
|
5839
|
+
async pathExists(owner, repo, path11, ref) {
|
|
5707
5840
|
try {
|
|
5708
|
-
await this.getContents(owner, repo,
|
|
5841
|
+
await this.getContents(owner, repo, path11, ref);
|
|
5709
5842
|
return true;
|
|
5710
|
-
} catch (
|
|
5711
|
-
if (
|
|
5843
|
+
} catch (error2) {
|
|
5844
|
+
if (error2 instanceof NetworkError && error2.statusCode === 404) {
|
|
5712
5845
|
return false;
|
|
5713
5846
|
}
|
|
5714
|
-
throw
|
|
5847
|
+
throw error2;
|
|
5715
5848
|
}
|
|
5716
5849
|
}
|
|
5717
5850
|
};
|
|
@@ -5827,9 +5960,9 @@ var TemplateManager = class {
|
|
|
5827
5960
|
if (this.verbose) {
|
|
5828
5961
|
logger.debug(`Downloaded: ${relativePath}`);
|
|
5829
5962
|
}
|
|
5830
|
-
} catch (
|
|
5963
|
+
} catch (error2) {
|
|
5831
5964
|
logger.warn(
|
|
5832
|
-
`Failed to download ${file.path}: ${
|
|
5965
|
+
`Failed to download ${file.path}: ${error2 instanceof Error ? error2.message : "Unknown error"}`
|
|
5833
5966
|
);
|
|
5834
5967
|
}
|
|
5835
5968
|
}
|
|
@@ -5847,10 +5980,10 @@ var TemplateManager = class {
|
|
|
5847
5980
|
const versionPath = this.getVersionCachePath();
|
|
5848
5981
|
await ensureFileDir(versionPath);
|
|
5849
5982
|
await writeFile(versionPath, JSON.stringify(versionInfo, null, 2));
|
|
5850
|
-
} catch (
|
|
5983
|
+
} catch (error2) {
|
|
5851
5984
|
if (this.verbose) {
|
|
5852
5985
|
logger.debug(
|
|
5853
|
-
`Failed to cache version info: ${
|
|
5986
|
+
`Failed to cache version info: ${error2 instanceof Error ? error2.message : "Unknown error"}`
|
|
5854
5987
|
);
|
|
5855
5988
|
}
|
|
5856
5989
|
}
|
|
@@ -6045,9 +6178,9 @@ var DiffManager = class {
|
|
|
6045
6178
|
const content = await readFile(metadataPath);
|
|
6046
6179
|
const metadata = JSON.parse(content);
|
|
6047
6180
|
return metadata;
|
|
6048
|
-
} catch (
|
|
6181
|
+
} catch (error2) {
|
|
6049
6182
|
throw new Error(
|
|
6050
|
-
`\u5143\u6570\u636E\u6587\u4EF6\u89E3\u6790\u5931\u8D25: ${
|
|
6183
|
+
`\u5143\u6570\u636E\u6587\u4EF6\u89E3\u6790\u5931\u8D25: ${error2 instanceof Error ? error2.message : String(error2)}`
|
|
6051
6184
|
);
|
|
6052
6185
|
}
|
|
6053
6186
|
}
|
|
@@ -6462,9 +6595,9 @@ var UpdateCommand = class _UpdateCommand {
|
|
|
6462
6595
|
console.error(`\u66F4\u65B0\u5931\u8D25: ${result.error}`);
|
|
6463
6596
|
return 1;
|
|
6464
6597
|
}
|
|
6465
|
-
} catch (
|
|
6598
|
+
} catch (error2) {
|
|
6466
6599
|
console.error(
|
|
6467
|
-
`\u66F4\u65B0\u8FC7\u7A0B\u4E2D\u53D1\u751F\u9519\u8BEF: ${
|
|
6600
|
+
`\u66F4\u65B0\u8FC7\u7A0B\u4E2D\u53D1\u751F\u9519\u8BEF: ${error2 instanceof Error ? error2.message : String(error2)}`
|
|
6468
6601
|
);
|
|
6469
6602
|
return 1;
|
|
6470
6603
|
}
|
|
@@ -6492,9 +6625,9 @@ var UpdateCommand = class _UpdateCommand {
|
|
|
6492
6625
|
remoteVersion: remoteMeta.version,
|
|
6493
6626
|
changelog: remoteMeta.changelog
|
|
6494
6627
|
};
|
|
6495
|
-
} catch (
|
|
6628
|
+
} catch (error2) {
|
|
6496
6629
|
if (this.verbose) {
|
|
6497
|
-
logger.debug(`\u68C0\u67E5\u66F4\u65B0\u5931\u8D25: ${
|
|
6630
|
+
logger.debug(`\u68C0\u67E5\u66F4\u65B0\u5931\u8D25: ${error2 instanceof Error ? error2.message : String(error2)}`);
|
|
6498
6631
|
}
|
|
6499
6632
|
return {
|
|
6500
6633
|
hasUpdate: false,
|
|
@@ -6753,8 +6886,8 @@ ${WARN_CONFLICT_DETECTED}`);
|
|
|
6753
6886
|
lastUpdated: (/* @__PURE__ */ new Date()).toISOString()
|
|
6754
6887
|
});
|
|
6755
6888
|
result.success = true;
|
|
6756
|
-
} catch (
|
|
6757
|
-
result.error =
|
|
6889
|
+
} catch (error2) {
|
|
6890
|
+
result.error = error2 instanceof Error ? error2.message : String(error2);
|
|
6758
6891
|
}
|
|
6759
6892
|
return result;
|
|
6760
6893
|
}
|
|
@@ -6804,20 +6937,3178 @@ ${WARN_CONFLICT_DETECTED}`);
|
|
|
6804
6937
|
}
|
|
6805
6938
|
};
|
|
6806
6939
|
|
|
6807
|
-
// src/commands/
|
|
6808
|
-
|
|
6809
|
-
|
|
6810
|
-
|
|
6940
|
+
// src/commands/init.ts
|
|
6941
|
+
init_esm_shims();
|
|
6942
|
+
import path10 from "path";
|
|
6943
|
+
import inquirer from "inquirer";
|
|
6944
|
+
|
|
6945
|
+
// src/utils/spinner.ts
|
|
6946
|
+
init_esm_shims();
|
|
6947
|
+
|
|
6948
|
+
// node_modules/ora/index.js
|
|
6949
|
+
init_esm_shims();
|
|
6950
|
+
import process8 from "process";
|
|
6951
|
+
import { stripVTControlCharacters } from "util";
|
|
6952
|
+
|
|
6953
|
+
// node_modules/cli-cursor/index.js
|
|
6954
|
+
init_esm_shims();
|
|
6955
|
+
import process5 from "process";
|
|
6956
|
+
|
|
6957
|
+
// node_modules/restore-cursor/index.js
|
|
6958
|
+
init_esm_shims();
|
|
6959
|
+
import process4 from "process";
|
|
6960
|
+
|
|
6961
|
+
// node_modules/onetime/index.js
|
|
6962
|
+
init_esm_shims();
|
|
6963
|
+
|
|
6964
|
+
// node_modules/mimic-function/index.js
|
|
6965
|
+
init_esm_shims();
|
|
6966
|
+
var copyProperty = (to, from, property, ignoreNonConfigurable) => {
|
|
6967
|
+
if (property === "length" || property === "prototype") {
|
|
6968
|
+
return;
|
|
6969
|
+
}
|
|
6970
|
+
if (property === "arguments" || property === "caller") {
|
|
6971
|
+
return;
|
|
6972
|
+
}
|
|
6973
|
+
const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
|
|
6974
|
+
const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
|
|
6975
|
+
if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
|
|
6976
|
+
return;
|
|
6977
|
+
}
|
|
6978
|
+
Object.defineProperty(to, property, fromDescriptor);
|
|
6979
|
+
};
|
|
6980
|
+
var canCopyProperty = function(toDescriptor, fromDescriptor) {
|
|
6981
|
+
return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);
|
|
6982
|
+
};
|
|
6983
|
+
var changePrototype = (to, from) => {
|
|
6984
|
+
const fromPrototype = Object.getPrototypeOf(from);
|
|
6985
|
+
if (fromPrototype === Object.getPrototypeOf(to)) {
|
|
6986
|
+
return;
|
|
6987
|
+
}
|
|
6988
|
+
Object.setPrototypeOf(to, fromPrototype);
|
|
6989
|
+
};
|
|
6990
|
+
var wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/
|
|
6991
|
+
${fromBody}`;
|
|
6992
|
+
var toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString");
|
|
6993
|
+
var toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name");
|
|
6994
|
+
var changeToString = (to, from, name) => {
|
|
6995
|
+
const withName = name === "" ? "" : `with ${name.trim()}() `;
|
|
6996
|
+
const newToString = wrappedToString.bind(null, withName, from.toString());
|
|
6997
|
+
Object.defineProperty(newToString, "name", toStringName);
|
|
6998
|
+
const { writable, enumerable, configurable } = toStringDescriptor;
|
|
6999
|
+
Object.defineProperty(to, "toString", { value: newToString, writable, enumerable, configurable });
|
|
7000
|
+
};
|
|
7001
|
+
function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {
|
|
7002
|
+
const { name } = to;
|
|
7003
|
+
for (const property of Reflect.ownKeys(from)) {
|
|
7004
|
+
copyProperty(to, from, property, ignoreNonConfigurable);
|
|
7005
|
+
}
|
|
7006
|
+
changePrototype(to, from);
|
|
7007
|
+
changeToString(to, from, name);
|
|
7008
|
+
return to;
|
|
6811
7009
|
}
|
|
6812
|
-
|
|
6813
|
-
|
|
6814
|
-
|
|
6815
|
-
|
|
6816
|
-
|
|
6817
|
-
|
|
7010
|
+
|
|
7011
|
+
// node_modules/onetime/index.js
|
|
7012
|
+
var calledFunctions = /* @__PURE__ */ new WeakMap();
|
|
7013
|
+
var onetime = (function_, options2 = {}) => {
|
|
7014
|
+
if (typeof function_ !== "function") {
|
|
7015
|
+
throw new TypeError("Expected a function");
|
|
7016
|
+
}
|
|
7017
|
+
let returnValue;
|
|
7018
|
+
let callCount = 0;
|
|
7019
|
+
const functionName = function_.displayName || function_.name || "<anonymous>";
|
|
7020
|
+
const onetime2 = function(...arguments_) {
|
|
7021
|
+
calledFunctions.set(onetime2, ++callCount);
|
|
7022
|
+
if (callCount === 1) {
|
|
7023
|
+
returnValue = function_.apply(this, arguments_);
|
|
7024
|
+
function_ = void 0;
|
|
7025
|
+
} else if (options2.throw === true) {
|
|
7026
|
+
throw new Error(`Function \`${functionName}\` can only be called once`);
|
|
7027
|
+
}
|
|
7028
|
+
return returnValue;
|
|
7029
|
+
};
|
|
7030
|
+
mimicFunction(onetime2, function_);
|
|
7031
|
+
calledFunctions.set(onetime2, callCount);
|
|
7032
|
+
return onetime2;
|
|
7033
|
+
};
|
|
7034
|
+
onetime.callCount = (function_) => {
|
|
7035
|
+
if (!calledFunctions.has(function_)) {
|
|
7036
|
+
throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
|
|
7037
|
+
}
|
|
7038
|
+
return calledFunctions.get(function_);
|
|
7039
|
+
};
|
|
7040
|
+
var onetime_default = onetime;
|
|
7041
|
+
|
|
7042
|
+
// node_modules/signal-exit/dist/mjs/index.js
|
|
7043
|
+
init_esm_shims();
|
|
7044
|
+
|
|
7045
|
+
// node_modules/signal-exit/dist/mjs/signals.js
|
|
7046
|
+
init_esm_shims();
|
|
7047
|
+
var signals = [];
|
|
7048
|
+
signals.push("SIGHUP", "SIGINT", "SIGTERM");
|
|
7049
|
+
if (process.platform !== "win32") {
|
|
7050
|
+
signals.push(
|
|
7051
|
+
"SIGALRM",
|
|
7052
|
+
"SIGABRT",
|
|
7053
|
+
"SIGVTALRM",
|
|
7054
|
+
"SIGXCPU",
|
|
7055
|
+
"SIGXFSZ",
|
|
7056
|
+
"SIGUSR2",
|
|
7057
|
+
"SIGTRAP",
|
|
7058
|
+
"SIGSYS",
|
|
7059
|
+
"SIGQUIT",
|
|
7060
|
+
"SIGIOT"
|
|
7061
|
+
// should detect profiler and enable/disable accordingly.
|
|
7062
|
+
// see #21
|
|
7063
|
+
// 'SIGPROF'
|
|
7064
|
+
);
|
|
6818
7065
|
}
|
|
6819
|
-
|
|
6820
|
-
|
|
7066
|
+
if (process.platform === "linux") {
|
|
7067
|
+
signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
|
|
7068
|
+
}
|
|
7069
|
+
|
|
7070
|
+
// node_modules/signal-exit/dist/mjs/index.js
|
|
7071
|
+
var processOk = (process9) => !!process9 && typeof process9 === "object" && typeof process9.removeListener === "function" && typeof process9.emit === "function" && typeof process9.reallyExit === "function" && typeof process9.listeners === "function" && typeof process9.kill === "function" && typeof process9.pid === "number" && typeof process9.on === "function";
|
|
7072
|
+
var kExitEmitter = /* @__PURE__ */ Symbol.for("signal-exit emitter");
|
|
7073
|
+
var global = globalThis;
|
|
7074
|
+
var ObjectDefineProperty = Object.defineProperty.bind(Object);
|
|
7075
|
+
var Emitter = class {
|
|
7076
|
+
emitted = {
|
|
7077
|
+
afterExit: false,
|
|
7078
|
+
exit: false
|
|
7079
|
+
};
|
|
7080
|
+
listeners = {
|
|
7081
|
+
afterExit: [],
|
|
7082
|
+
exit: []
|
|
7083
|
+
};
|
|
7084
|
+
count = 0;
|
|
7085
|
+
id = Math.random();
|
|
7086
|
+
constructor() {
|
|
7087
|
+
if (global[kExitEmitter]) {
|
|
7088
|
+
return global[kExitEmitter];
|
|
7089
|
+
}
|
|
7090
|
+
ObjectDefineProperty(global, kExitEmitter, {
|
|
7091
|
+
value: this,
|
|
7092
|
+
writable: false,
|
|
7093
|
+
enumerable: false,
|
|
7094
|
+
configurable: false
|
|
7095
|
+
});
|
|
7096
|
+
}
|
|
7097
|
+
on(ev, fn) {
|
|
7098
|
+
this.listeners[ev].push(fn);
|
|
7099
|
+
}
|
|
7100
|
+
removeListener(ev, fn) {
|
|
7101
|
+
const list = this.listeners[ev];
|
|
7102
|
+
const i = list.indexOf(fn);
|
|
7103
|
+
if (i === -1) {
|
|
7104
|
+
return;
|
|
7105
|
+
}
|
|
7106
|
+
if (i === 0 && list.length === 1) {
|
|
7107
|
+
list.length = 0;
|
|
7108
|
+
} else {
|
|
7109
|
+
list.splice(i, 1);
|
|
7110
|
+
}
|
|
7111
|
+
}
|
|
7112
|
+
emit(ev, code, signal) {
|
|
7113
|
+
if (this.emitted[ev]) {
|
|
7114
|
+
return false;
|
|
7115
|
+
}
|
|
7116
|
+
this.emitted[ev] = true;
|
|
7117
|
+
let ret = false;
|
|
7118
|
+
for (const fn of this.listeners[ev]) {
|
|
7119
|
+
ret = fn(code, signal) === true || ret;
|
|
7120
|
+
}
|
|
7121
|
+
if (ev === "exit") {
|
|
7122
|
+
ret = this.emit("afterExit", code, signal) || ret;
|
|
7123
|
+
}
|
|
7124
|
+
return ret;
|
|
7125
|
+
}
|
|
7126
|
+
};
|
|
7127
|
+
var SignalExitBase = class {
|
|
7128
|
+
};
|
|
7129
|
+
var signalExitWrap = (handler) => {
|
|
7130
|
+
return {
|
|
7131
|
+
onExit(cb, opts) {
|
|
7132
|
+
return handler.onExit(cb, opts);
|
|
7133
|
+
},
|
|
7134
|
+
load() {
|
|
7135
|
+
return handler.load();
|
|
7136
|
+
},
|
|
7137
|
+
unload() {
|
|
7138
|
+
return handler.unload();
|
|
7139
|
+
}
|
|
7140
|
+
};
|
|
7141
|
+
};
|
|
7142
|
+
var SignalExitFallback = class extends SignalExitBase {
|
|
7143
|
+
onExit() {
|
|
7144
|
+
return () => {
|
|
7145
|
+
};
|
|
7146
|
+
}
|
|
7147
|
+
load() {
|
|
7148
|
+
}
|
|
7149
|
+
unload() {
|
|
7150
|
+
}
|
|
7151
|
+
};
|
|
7152
|
+
var SignalExit = class extends SignalExitBase {
|
|
7153
|
+
// "SIGHUP" throws an `ENOSYS` error on Windows,
|
|
7154
|
+
// so use a supported signal instead
|
|
7155
|
+
/* c8 ignore start */
|
|
7156
|
+
#hupSig = process3.platform === "win32" ? "SIGINT" : "SIGHUP";
|
|
7157
|
+
/* c8 ignore stop */
|
|
7158
|
+
#emitter = new Emitter();
|
|
7159
|
+
#process;
|
|
7160
|
+
#originalProcessEmit;
|
|
7161
|
+
#originalProcessReallyExit;
|
|
7162
|
+
#sigListeners = {};
|
|
7163
|
+
#loaded = false;
|
|
7164
|
+
constructor(process9) {
|
|
7165
|
+
super();
|
|
7166
|
+
this.#process = process9;
|
|
7167
|
+
this.#sigListeners = {};
|
|
7168
|
+
for (const sig of signals) {
|
|
7169
|
+
this.#sigListeners[sig] = () => {
|
|
7170
|
+
const listeners = this.#process.listeners(sig);
|
|
7171
|
+
let { count } = this.#emitter;
|
|
7172
|
+
const p = process9;
|
|
7173
|
+
if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") {
|
|
7174
|
+
count += p.__signal_exit_emitter__.count;
|
|
7175
|
+
}
|
|
7176
|
+
if (listeners.length === count) {
|
|
7177
|
+
this.unload();
|
|
7178
|
+
const ret = this.#emitter.emit("exit", null, sig);
|
|
7179
|
+
const s = sig === "SIGHUP" ? this.#hupSig : sig;
|
|
7180
|
+
if (!ret)
|
|
7181
|
+
process9.kill(process9.pid, s);
|
|
7182
|
+
}
|
|
7183
|
+
};
|
|
7184
|
+
}
|
|
7185
|
+
this.#originalProcessReallyExit = process9.reallyExit;
|
|
7186
|
+
this.#originalProcessEmit = process9.emit;
|
|
7187
|
+
}
|
|
7188
|
+
onExit(cb, opts) {
|
|
7189
|
+
if (!processOk(this.#process)) {
|
|
7190
|
+
return () => {
|
|
7191
|
+
};
|
|
7192
|
+
}
|
|
7193
|
+
if (this.#loaded === false) {
|
|
7194
|
+
this.load();
|
|
7195
|
+
}
|
|
7196
|
+
const ev = opts?.alwaysLast ? "afterExit" : "exit";
|
|
7197
|
+
this.#emitter.on(ev, cb);
|
|
7198
|
+
return () => {
|
|
7199
|
+
this.#emitter.removeListener(ev, cb);
|
|
7200
|
+
if (this.#emitter.listeners["exit"].length === 0 && this.#emitter.listeners["afterExit"].length === 0) {
|
|
7201
|
+
this.unload();
|
|
7202
|
+
}
|
|
7203
|
+
};
|
|
7204
|
+
}
|
|
7205
|
+
load() {
|
|
7206
|
+
if (this.#loaded) {
|
|
7207
|
+
return;
|
|
7208
|
+
}
|
|
7209
|
+
this.#loaded = true;
|
|
7210
|
+
this.#emitter.count += 1;
|
|
7211
|
+
for (const sig of signals) {
|
|
7212
|
+
try {
|
|
7213
|
+
const fn = this.#sigListeners[sig];
|
|
7214
|
+
if (fn)
|
|
7215
|
+
this.#process.on(sig, fn);
|
|
7216
|
+
} catch (_) {
|
|
7217
|
+
}
|
|
7218
|
+
}
|
|
7219
|
+
this.#process.emit = (ev, ...a) => {
|
|
7220
|
+
return this.#processEmit(ev, ...a);
|
|
7221
|
+
};
|
|
7222
|
+
this.#process.reallyExit = (code) => {
|
|
7223
|
+
return this.#processReallyExit(code);
|
|
7224
|
+
};
|
|
7225
|
+
}
|
|
7226
|
+
unload() {
|
|
7227
|
+
if (!this.#loaded) {
|
|
7228
|
+
return;
|
|
7229
|
+
}
|
|
7230
|
+
this.#loaded = false;
|
|
7231
|
+
signals.forEach((sig) => {
|
|
7232
|
+
const listener = this.#sigListeners[sig];
|
|
7233
|
+
if (!listener) {
|
|
7234
|
+
throw new Error("Listener not defined for signal: " + sig);
|
|
7235
|
+
}
|
|
7236
|
+
try {
|
|
7237
|
+
this.#process.removeListener(sig, listener);
|
|
7238
|
+
} catch (_) {
|
|
7239
|
+
}
|
|
7240
|
+
});
|
|
7241
|
+
this.#process.emit = this.#originalProcessEmit;
|
|
7242
|
+
this.#process.reallyExit = this.#originalProcessReallyExit;
|
|
7243
|
+
this.#emitter.count -= 1;
|
|
7244
|
+
}
|
|
7245
|
+
#processReallyExit(code) {
|
|
7246
|
+
if (!processOk(this.#process)) {
|
|
7247
|
+
return 0;
|
|
7248
|
+
}
|
|
7249
|
+
this.#process.exitCode = code || 0;
|
|
7250
|
+
this.#emitter.emit("exit", this.#process.exitCode, null);
|
|
7251
|
+
return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);
|
|
7252
|
+
}
|
|
7253
|
+
#processEmit(ev, ...args) {
|
|
7254
|
+
const og = this.#originalProcessEmit;
|
|
7255
|
+
if (ev === "exit" && processOk(this.#process)) {
|
|
7256
|
+
if (typeof args[0] === "number") {
|
|
7257
|
+
this.#process.exitCode = args[0];
|
|
7258
|
+
}
|
|
7259
|
+
const ret = og.call(this.#process, ev, ...args);
|
|
7260
|
+
this.#emitter.emit("exit", this.#process.exitCode, null);
|
|
7261
|
+
return ret;
|
|
7262
|
+
} else {
|
|
7263
|
+
return og.call(this.#process, ev, ...args);
|
|
7264
|
+
}
|
|
7265
|
+
}
|
|
7266
|
+
};
|
|
7267
|
+
var process3 = globalThis.process;
|
|
7268
|
+
var {
|
|
7269
|
+
/**
|
|
7270
|
+
* Called when the process is exiting, whether via signal, explicit
|
|
7271
|
+
* exit, or running out of stuff to do.
|
|
7272
|
+
*
|
|
7273
|
+
* If the global process object is not suitable for instrumentation,
|
|
7274
|
+
* then this will be a no-op.
|
|
7275
|
+
*
|
|
7276
|
+
* Returns a function that may be used to unload signal-exit.
|
|
7277
|
+
*/
|
|
7278
|
+
onExit,
|
|
7279
|
+
/**
|
|
7280
|
+
* Load the listeners. Likely you never need to call this, unless
|
|
7281
|
+
* doing a rather deep integration with signal-exit functionality.
|
|
7282
|
+
* Mostly exposed for the benefit of testing.
|
|
7283
|
+
*
|
|
7284
|
+
* @internal
|
|
7285
|
+
*/
|
|
7286
|
+
load,
|
|
7287
|
+
/**
|
|
7288
|
+
* Unload the listeners. Likely you never need to call this, unless
|
|
7289
|
+
* doing a rather deep integration with signal-exit functionality.
|
|
7290
|
+
* Mostly exposed for the benefit of testing.
|
|
7291
|
+
*
|
|
7292
|
+
* @internal
|
|
7293
|
+
*/
|
|
7294
|
+
unload
|
|
7295
|
+
} = signalExitWrap(processOk(process3) ? new SignalExit(process3) : new SignalExitFallback());
|
|
7296
|
+
|
|
7297
|
+
// node_modules/restore-cursor/index.js
|
|
7298
|
+
var terminal = process4.stderr.isTTY ? process4.stderr : process4.stdout.isTTY ? process4.stdout : void 0;
|
|
7299
|
+
var restoreCursor = terminal ? onetime_default(() => {
|
|
7300
|
+
onExit(() => {
|
|
7301
|
+
terminal.write("\x1B[?25h");
|
|
7302
|
+
}, { alwaysLast: true });
|
|
7303
|
+
}) : () => {
|
|
7304
|
+
};
|
|
7305
|
+
var restore_cursor_default = restoreCursor;
|
|
7306
|
+
|
|
7307
|
+
// node_modules/cli-cursor/index.js
|
|
7308
|
+
var isHidden = false;
|
|
7309
|
+
var cliCursor = {};
|
|
7310
|
+
cliCursor.show = (writableStream = process5.stderr) => {
|
|
7311
|
+
if (!writableStream.isTTY) {
|
|
7312
|
+
return;
|
|
7313
|
+
}
|
|
7314
|
+
isHidden = false;
|
|
7315
|
+
writableStream.write("\x1B[?25h");
|
|
7316
|
+
};
|
|
7317
|
+
cliCursor.hide = (writableStream = process5.stderr) => {
|
|
7318
|
+
if (!writableStream.isTTY) {
|
|
7319
|
+
return;
|
|
7320
|
+
}
|
|
7321
|
+
restore_cursor_default();
|
|
7322
|
+
isHidden = true;
|
|
7323
|
+
writableStream.write("\x1B[?25l");
|
|
7324
|
+
};
|
|
7325
|
+
cliCursor.toggle = (force, writableStream) => {
|
|
7326
|
+
if (force !== void 0) {
|
|
7327
|
+
isHidden = force;
|
|
7328
|
+
}
|
|
7329
|
+
if (isHidden) {
|
|
7330
|
+
cliCursor.show(writableStream);
|
|
7331
|
+
} else {
|
|
7332
|
+
cliCursor.hide(writableStream);
|
|
7333
|
+
}
|
|
7334
|
+
};
|
|
7335
|
+
var cli_cursor_default = cliCursor;
|
|
7336
|
+
|
|
7337
|
+
// node_modules/cli-spinners/index.js
|
|
7338
|
+
init_esm_shims();
|
|
7339
|
+
|
|
7340
|
+
// node_modules/cli-spinners/spinners.json
|
|
7341
|
+
var spinners_default = {
|
|
7342
|
+
dots: {
|
|
7343
|
+
interval: 80,
|
|
7344
|
+
frames: [
|
|
7345
|
+
"\u280B",
|
|
7346
|
+
"\u2819",
|
|
7347
|
+
"\u2839",
|
|
7348
|
+
"\u2838",
|
|
7349
|
+
"\u283C",
|
|
7350
|
+
"\u2834",
|
|
7351
|
+
"\u2826",
|
|
7352
|
+
"\u2827",
|
|
7353
|
+
"\u2807",
|
|
7354
|
+
"\u280F"
|
|
7355
|
+
]
|
|
7356
|
+
},
|
|
7357
|
+
dots2: {
|
|
7358
|
+
interval: 80,
|
|
7359
|
+
frames: [
|
|
7360
|
+
"\u28FE",
|
|
7361
|
+
"\u28FD",
|
|
7362
|
+
"\u28FB",
|
|
7363
|
+
"\u28BF",
|
|
7364
|
+
"\u287F",
|
|
7365
|
+
"\u28DF",
|
|
7366
|
+
"\u28EF",
|
|
7367
|
+
"\u28F7"
|
|
7368
|
+
]
|
|
7369
|
+
},
|
|
7370
|
+
dots3: {
|
|
7371
|
+
interval: 80,
|
|
7372
|
+
frames: [
|
|
7373
|
+
"\u280B",
|
|
7374
|
+
"\u2819",
|
|
7375
|
+
"\u281A",
|
|
7376
|
+
"\u281E",
|
|
7377
|
+
"\u2816",
|
|
7378
|
+
"\u2826",
|
|
7379
|
+
"\u2834",
|
|
7380
|
+
"\u2832",
|
|
7381
|
+
"\u2833",
|
|
7382
|
+
"\u2813"
|
|
7383
|
+
]
|
|
7384
|
+
},
|
|
7385
|
+
dots4: {
|
|
7386
|
+
interval: 80,
|
|
7387
|
+
frames: [
|
|
7388
|
+
"\u2804",
|
|
7389
|
+
"\u2806",
|
|
7390
|
+
"\u2807",
|
|
7391
|
+
"\u280B",
|
|
7392
|
+
"\u2819",
|
|
7393
|
+
"\u2838",
|
|
7394
|
+
"\u2830",
|
|
7395
|
+
"\u2820",
|
|
7396
|
+
"\u2830",
|
|
7397
|
+
"\u2838",
|
|
7398
|
+
"\u2819",
|
|
7399
|
+
"\u280B",
|
|
7400
|
+
"\u2807",
|
|
7401
|
+
"\u2806"
|
|
7402
|
+
]
|
|
7403
|
+
},
|
|
7404
|
+
dots5: {
|
|
7405
|
+
interval: 80,
|
|
7406
|
+
frames: [
|
|
7407
|
+
"\u280B",
|
|
7408
|
+
"\u2819",
|
|
7409
|
+
"\u281A",
|
|
7410
|
+
"\u2812",
|
|
7411
|
+
"\u2802",
|
|
7412
|
+
"\u2802",
|
|
7413
|
+
"\u2812",
|
|
7414
|
+
"\u2832",
|
|
7415
|
+
"\u2834",
|
|
7416
|
+
"\u2826",
|
|
7417
|
+
"\u2816",
|
|
7418
|
+
"\u2812",
|
|
7419
|
+
"\u2810",
|
|
7420
|
+
"\u2810",
|
|
7421
|
+
"\u2812",
|
|
7422
|
+
"\u2813",
|
|
7423
|
+
"\u280B"
|
|
7424
|
+
]
|
|
7425
|
+
},
|
|
7426
|
+
dots6: {
|
|
7427
|
+
interval: 80,
|
|
7428
|
+
frames: [
|
|
7429
|
+
"\u2801",
|
|
7430
|
+
"\u2809",
|
|
7431
|
+
"\u2819",
|
|
7432
|
+
"\u281A",
|
|
7433
|
+
"\u2812",
|
|
7434
|
+
"\u2802",
|
|
7435
|
+
"\u2802",
|
|
7436
|
+
"\u2812",
|
|
7437
|
+
"\u2832",
|
|
7438
|
+
"\u2834",
|
|
7439
|
+
"\u2824",
|
|
7440
|
+
"\u2804",
|
|
7441
|
+
"\u2804",
|
|
7442
|
+
"\u2824",
|
|
7443
|
+
"\u2834",
|
|
7444
|
+
"\u2832",
|
|
7445
|
+
"\u2812",
|
|
7446
|
+
"\u2802",
|
|
7447
|
+
"\u2802",
|
|
7448
|
+
"\u2812",
|
|
7449
|
+
"\u281A",
|
|
7450
|
+
"\u2819",
|
|
7451
|
+
"\u2809",
|
|
7452
|
+
"\u2801"
|
|
7453
|
+
]
|
|
7454
|
+
},
|
|
7455
|
+
dots7: {
|
|
7456
|
+
interval: 80,
|
|
7457
|
+
frames: [
|
|
7458
|
+
"\u2808",
|
|
7459
|
+
"\u2809",
|
|
7460
|
+
"\u280B",
|
|
7461
|
+
"\u2813",
|
|
7462
|
+
"\u2812",
|
|
7463
|
+
"\u2810",
|
|
7464
|
+
"\u2810",
|
|
7465
|
+
"\u2812",
|
|
7466
|
+
"\u2816",
|
|
7467
|
+
"\u2826",
|
|
7468
|
+
"\u2824",
|
|
7469
|
+
"\u2820",
|
|
7470
|
+
"\u2820",
|
|
7471
|
+
"\u2824",
|
|
7472
|
+
"\u2826",
|
|
7473
|
+
"\u2816",
|
|
7474
|
+
"\u2812",
|
|
7475
|
+
"\u2810",
|
|
7476
|
+
"\u2810",
|
|
7477
|
+
"\u2812",
|
|
7478
|
+
"\u2813",
|
|
7479
|
+
"\u280B",
|
|
7480
|
+
"\u2809",
|
|
7481
|
+
"\u2808"
|
|
7482
|
+
]
|
|
7483
|
+
},
|
|
7484
|
+
dots8: {
|
|
7485
|
+
interval: 80,
|
|
7486
|
+
frames: [
|
|
7487
|
+
"\u2801",
|
|
7488
|
+
"\u2801",
|
|
7489
|
+
"\u2809",
|
|
7490
|
+
"\u2819",
|
|
7491
|
+
"\u281A",
|
|
7492
|
+
"\u2812",
|
|
7493
|
+
"\u2802",
|
|
7494
|
+
"\u2802",
|
|
7495
|
+
"\u2812",
|
|
7496
|
+
"\u2832",
|
|
7497
|
+
"\u2834",
|
|
7498
|
+
"\u2824",
|
|
7499
|
+
"\u2804",
|
|
7500
|
+
"\u2804",
|
|
7501
|
+
"\u2824",
|
|
7502
|
+
"\u2820",
|
|
7503
|
+
"\u2820",
|
|
7504
|
+
"\u2824",
|
|
7505
|
+
"\u2826",
|
|
7506
|
+
"\u2816",
|
|
7507
|
+
"\u2812",
|
|
7508
|
+
"\u2810",
|
|
7509
|
+
"\u2810",
|
|
7510
|
+
"\u2812",
|
|
7511
|
+
"\u2813",
|
|
7512
|
+
"\u280B",
|
|
7513
|
+
"\u2809",
|
|
7514
|
+
"\u2808",
|
|
7515
|
+
"\u2808"
|
|
7516
|
+
]
|
|
7517
|
+
},
|
|
7518
|
+
dots9: {
|
|
7519
|
+
interval: 80,
|
|
7520
|
+
frames: [
|
|
7521
|
+
"\u28B9",
|
|
7522
|
+
"\u28BA",
|
|
7523
|
+
"\u28BC",
|
|
7524
|
+
"\u28F8",
|
|
7525
|
+
"\u28C7",
|
|
7526
|
+
"\u2867",
|
|
7527
|
+
"\u2857",
|
|
7528
|
+
"\u284F"
|
|
7529
|
+
]
|
|
7530
|
+
},
|
|
7531
|
+
dots10: {
|
|
7532
|
+
interval: 80,
|
|
7533
|
+
frames: [
|
|
7534
|
+
"\u2884",
|
|
7535
|
+
"\u2882",
|
|
7536
|
+
"\u2881",
|
|
7537
|
+
"\u2841",
|
|
7538
|
+
"\u2848",
|
|
7539
|
+
"\u2850",
|
|
7540
|
+
"\u2860"
|
|
7541
|
+
]
|
|
7542
|
+
},
|
|
7543
|
+
dots11: {
|
|
7544
|
+
interval: 100,
|
|
7545
|
+
frames: [
|
|
7546
|
+
"\u2801",
|
|
7547
|
+
"\u2802",
|
|
7548
|
+
"\u2804",
|
|
7549
|
+
"\u2840",
|
|
7550
|
+
"\u2880",
|
|
7551
|
+
"\u2820",
|
|
7552
|
+
"\u2810",
|
|
7553
|
+
"\u2808"
|
|
7554
|
+
]
|
|
7555
|
+
},
|
|
7556
|
+
dots12: {
|
|
7557
|
+
interval: 80,
|
|
7558
|
+
frames: [
|
|
7559
|
+
"\u2880\u2800",
|
|
7560
|
+
"\u2840\u2800",
|
|
7561
|
+
"\u2804\u2800",
|
|
7562
|
+
"\u2882\u2800",
|
|
7563
|
+
"\u2842\u2800",
|
|
7564
|
+
"\u2805\u2800",
|
|
7565
|
+
"\u2883\u2800",
|
|
7566
|
+
"\u2843\u2800",
|
|
7567
|
+
"\u280D\u2800",
|
|
7568
|
+
"\u288B\u2800",
|
|
7569
|
+
"\u284B\u2800",
|
|
7570
|
+
"\u280D\u2801",
|
|
7571
|
+
"\u288B\u2801",
|
|
7572
|
+
"\u284B\u2801",
|
|
7573
|
+
"\u280D\u2809",
|
|
7574
|
+
"\u280B\u2809",
|
|
7575
|
+
"\u280B\u2809",
|
|
7576
|
+
"\u2809\u2819",
|
|
7577
|
+
"\u2809\u2819",
|
|
7578
|
+
"\u2809\u2829",
|
|
7579
|
+
"\u2808\u2899",
|
|
7580
|
+
"\u2808\u2859",
|
|
7581
|
+
"\u2888\u2829",
|
|
7582
|
+
"\u2840\u2899",
|
|
7583
|
+
"\u2804\u2859",
|
|
7584
|
+
"\u2882\u2829",
|
|
7585
|
+
"\u2842\u2898",
|
|
7586
|
+
"\u2805\u2858",
|
|
7587
|
+
"\u2883\u2828",
|
|
7588
|
+
"\u2843\u2890",
|
|
7589
|
+
"\u280D\u2850",
|
|
7590
|
+
"\u288B\u2820",
|
|
7591
|
+
"\u284B\u2880",
|
|
7592
|
+
"\u280D\u2841",
|
|
7593
|
+
"\u288B\u2801",
|
|
7594
|
+
"\u284B\u2801",
|
|
7595
|
+
"\u280D\u2809",
|
|
7596
|
+
"\u280B\u2809",
|
|
7597
|
+
"\u280B\u2809",
|
|
7598
|
+
"\u2809\u2819",
|
|
7599
|
+
"\u2809\u2819",
|
|
7600
|
+
"\u2809\u2829",
|
|
7601
|
+
"\u2808\u2899",
|
|
7602
|
+
"\u2808\u2859",
|
|
7603
|
+
"\u2808\u2829",
|
|
7604
|
+
"\u2800\u2899",
|
|
7605
|
+
"\u2800\u2859",
|
|
7606
|
+
"\u2800\u2829",
|
|
7607
|
+
"\u2800\u2898",
|
|
7608
|
+
"\u2800\u2858",
|
|
7609
|
+
"\u2800\u2828",
|
|
7610
|
+
"\u2800\u2890",
|
|
7611
|
+
"\u2800\u2850",
|
|
7612
|
+
"\u2800\u2820",
|
|
7613
|
+
"\u2800\u2880",
|
|
7614
|
+
"\u2800\u2840"
|
|
7615
|
+
]
|
|
7616
|
+
},
|
|
7617
|
+
dots13: {
|
|
7618
|
+
interval: 80,
|
|
7619
|
+
frames: [
|
|
7620
|
+
"\u28FC",
|
|
7621
|
+
"\u28F9",
|
|
7622
|
+
"\u28BB",
|
|
7623
|
+
"\u283F",
|
|
7624
|
+
"\u285F",
|
|
7625
|
+
"\u28CF",
|
|
7626
|
+
"\u28E7",
|
|
7627
|
+
"\u28F6"
|
|
7628
|
+
]
|
|
7629
|
+
},
|
|
7630
|
+
dots14: {
|
|
7631
|
+
interval: 80,
|
|
7632
|
+
frames: [
|
|
7633
|
+
"\u2809\u2809",
|
|
7634
|
+
"\u2808\u2819",
|
|
7635
|
+
"\u2800\u2839",
|
|
7636
|
+
"\u2800\u28B8",
|
|
7637
|
+
"\u2800\u28F0",
|
|
7638
|
+
"\u2880\u28E0",
|
|
7639
|
+
"\u28C0\u28C0",
|
|
7640
|
+
"\u28C4\u2840",
|
|
7641
|
+
"\u28C6\u2800",
|
|
7642
|
+
"\u2847\u2800",
|
|
7643
|
+
"\u280F\u2800",
|
|
7644
|
+
"\u280B\u2801"
|
|
7645
|
+
]
|
|
7646
|
+
},
|
|
7647
|
+
dots8Bit: {
|
|
7648
|
+
interval: 80,
|
|
7649
|
+
frames: [
|
|
7650
|
+
"\u2800",
|
|
7651
|
+
"\u2801",
|
|
7652
|
+
"\u2802",
|
|
7653
|
+
"\u2803",
|
|
7654
|
+
"\u2804",
|
|
7655
|
+
"\u2805",
|
|
7656
|
+
"\u2806",
|
|
7657
|
+
"\u2807",
|
|
7658
|
+
"\u2840",
|
|
7659
|
+
"\u2841",
|
|
7660
|
+
"\u2842",
|
|
7661
|
+
"\u2843",
|
|
7662
|
+
"\u2844",
|
|
7663
|
+
"\u2845",
|
|
7664
|
+
"\u2846",
|
|
7665
|
+
"\u2847",
|
|
7666
|
+
"\u2808",
|
|
7667
|
+
"\u2809",
|
|
7668
|
+
"\u280A",
|
|
7669
|
+
"\u280B",
|
|
7670
|
+
"\u280C",
|
|
7671
|
+
"\u280D",
|
|
7672
|
+
"\u280E",
|
|
7673
|
+
"\u280F",
|
|
7674
|
+
"\u2848",
|
|
7675
|
+
"\u2849",
|
|
7676
|
+
"\u284A",
|
|
7677
|
+
"\u284B",
|
|
7678
|
+
"\u284C",
|
|
7679
|
+
"\u284D",
|
|
7680
|
+
"\u284E",
|
|
7681
|
+
"\u284F",
|
|
7682
|
+
"\u2810",
|
|
7683
|
+
"\u2811",
|
|
7684
|
+
"\u2812",
|
|
7685
|
+
"\u2813",
|
|
7686
|
+
"\u2814",
|
|
7687
|
+
"\u2815",
|
|
7688
|
+
"\u2816",
|
|
7689
|
+
"\u2817",
|
|
7690
|
+
"\u2850",
|
|
7691
|
+
"\u2851",
|
|
7692
|
+
"\u2852",
|
|
7693
|
+
"\u2853",
|
|
7694
|
+
"\u2854",
|
|
7695
|
+
"\u2855",
|
|
7696
|
+
"\u2856",
|
|
7697
|
+
"\u2857",
|
|
7698
|
+
"\u2818",
|
|
7699
|
+
"\u2819",
|
|
7700
|
+
"\u281A",
|
|
7701
|
+
"\u281B",
|
|
7702
|
+
"\u281C",
|
|
7703
|
+
"\u281D",
|
|
7704
|
+
"\u281E",
|
|
7705
|
+
"\u281F",
|
|
7706
|
+
"\u2858",
|
|
7707
|
+
"\u2859",
|
|
7708
|
+
"\u285A",
|
|
7709
|
+
"\u285B",
|
|
7710
|
+
"\u285C",
|
|
7711
|
+
"\u285D",
|
|
7712
|
+
"\u285E",
|
|
7713
|
+
"\u285F",
|
|
7714
|
+
"\u2820",
|
|
7715
|
+
"\u2821",
|
|
7716
|
+
"\u2822",
|
|
7717
|
+
"\u2823",
|
|
7718
|
+
"\u2824",
|
|
7719
|
+
"\u2825",
|
|
7720
|
+
"\u2826",
|
|
7721
|
+
"\u2827",
|
|
7722
|
+
"\u2860",
|
|
7723
|
+
"\u2861",
|
|
7724
|
+
"\u2862",
|
|
7725
|
+
"\u2863",
|
|
7726
|
+
"\u2864",
|
|
7727
|
+
"\u2865",
|
|
7728
|
+
"\u2866",
|
|
7729
|
+
"\u2867",
|
|
7730
|
+
"\u2828",
|
|
7731
|
+
"\u2829",
|
|
7732
|
+
"\u282A",
|
|
7733
|
+
"\u282B",
|
|
7734
|
+
"\u282C",
|
|
7735
|
+
"\u282D",
|
|
7736
|
+
"\u282E",
|
|
7737
|
+
"\u282F",
|
|
7738
|
+
"\u2868",
|
|
7739
|
+
"\u2869",
|
|
7740
|
+
"\u286A",
|
|
7741
|
+
"\u286B",
|
|
7742
|
+
"\u286C",
|
|
7743
|
+
"\u286D",
|
|
7744
|
+
"\u286E",
|
|
7745
|
+
"\u286F",
|
|
7746
|
+
"\u2830",
|
|
7747
|
+
"\u2831",
|
|
7748
|
+
"\u2832",
|
|
7749
|
+
"\u2833",
|
|
7750
|
+
"\u2834",
|
|
7751
|
+
"\u2835",
|
|
7752
|
+
"\u2836",
|
|
7753
|
+
"\u2837",
|
|
7754
|
+
"\u2870",
|
|
7755
|
+
"\u2871",
|
|
7756
|
+
"\u2872",
|
|
7757
|
+
"\u2873",
|
|
7758
|
+
"\u2874",
|
|
7759
|
+
"\u2875",
|
|
7760
|
+
"\u2876",
|
|
7761
|
+
"\u2877",
|
|
7762
|
+
"\u2838",
|
|
7763
|
+
"\u2839",
|
|
7764
|
+
"\u283A",
|
|
7765
|
+
"\u283B",
|
|
7766
|
+
"\u283C",
|
|
7767
|
+
"\u283D",
|
|
7768
|
+
"\u283E",
|
|
7769
|
+
"\u283F",
|
|
7770
|
+
"\u2878",
|
|
7771
|
+
"\u2879",
|
|
7772
|
+
"\u287A",
|
|
7773
|
+
"\u287B",
|
|
7774
|
+
"\u287C",
|
|
7775
|
+
"\u287D",
|
|
7776
|
+
"\u287E",
|
|
7777
|
+
"\u287F",
|
|
7778
|
+
"\u2880",
|
|
7779
|
+
"\u2881",
|
|
7780
|
+
"\u2882",
|
|
7781
|
+
"\u2883",
|
|
7782
|
+
"\u2884",
|
|
7783
|
+
"\u2885",
|
|
7784
|
+
"\u2886",
|
|
7785
|
+
"\u2887",
|
|
7786
|
+
"\u28C0",
|
|
7787
|
+
"\u28C1",
|
|
7788
|
+
"\u28C2",
|
|
7789
|
+
"\u28C3",
|
|
7790
|
+
"\u28C4",
|
|
7791
|
+
"\u28C5",
|
|
7792
|
+
"\u28C6",
|
|
7793
|
+
"\u28C7",
|
|
7794
|
+
"\u2888",
|
|
7795
|
+
"\u2889",
|
|
7796
|
+
"\u288A",
|
|
7797
|
+
"\u288B",
|
|
7798
|
+
"\u288C",
|
|
7799
|
+
"\u288D",
|
|
7800
|
+
"\u288E",
|
|
7801
|
+
"\u288F",
|
|
7802
|
+
"\u28C8",
|
|
7803
|
+
"\u28C9",
|
|
7804
|
+
"\u28CA",
|
|
7805
|
+
"\u28CB",
|
|
7806
|
+
"\u28CC",
|
|
7807
|
+
"\u28CD",
|
|
7808
|
+
"\u28CE",
|
|
7809
|
+
"\u28CF",
|
|
7810
|
+
"\u2890",
|
|
7811
|
+
"\u2891",
|
|
7812
|
+
"\u2892",
|
|
7813
|
+
"\u2893",
|
|
7814
|
+
"\u2894",
|
|
7815
|
+
"\u2895",
|
|
7816
|
+
"\u2896",
|
|
7817
|
+
"\u2897",
|
|
7818
|
+
"\u28D0",
|
|
7819
|
+
"\u28D1",
|
|
7820
|
+
"\u28D2",
|
|
7821
|
+
"\u28D3",
|
|
7822
|
+
"\u28D4",
|
|
7823
|
+
"\u28D5",
|
|
7824
|
+
"\u28D6",
|
|
7825
|
+
"\u28D7",
|
|
7826
|
+
"\u2898",
|
|
7827
|
+
"\u2899",
|
|
7828
|
+
"\u289A",
|
|
7829
|
+
"\u289B",
|
|
7830
|
+
"\u289C",
|
|
7831
|
+
"\u289D",
|
|
7832
|
+
"\u289E",
|
|
7833
|
+
"\u289F",
|
|
7834
|
+
"\u28D8",
|
|
7835
|
+
"\u28D9",
|
|
7836
|
+
"\u28DA",
|
|
7837
|
+
"\u28DB",
|
|
7838
|
+
"\u28DC",
|
|
7839
|
+
"\u28DD",
|
|
7840
|
+
"\u28DE",
|
|
7841
|
+
"\u28DF",
|
|
7842
|
+
"\u28A0",
|
|
7843
|
+
"\u28A1",
|
|
7844
|
+
"\u28A2",
|
|
7845
|
+
"\u28A3",
|
|
7846
|
+
"\u28A4",
|
|
7847
|
+
"\u28A5",
|
|
7848
|
+
"\u28A6",
|
|
7849
|
+
"\u28A7",
|
|
7850
|
+
"\u28E0",
|
|
7851
|
+
"\u28E1",
|
|
7852
|
+
"\u28E2",
|
|
7853
|
+
"\u28E3",
|
|
7854
|
+
"\u28E4",
|
|
7855
|
+
"\u28E5",
|
|
7856
|
+
"\u28E6",
|
|
7857
|
+
"\u28E7",
|
|
7858
|
+
"\u28A8",
|
|
7859
|
+
"\u28A9",
|
|
7860
|
+
"\u28AA",
|
|
7861
|
+
"\u28AB",
|
|
7862
|
+
"\u28AC",
|
|
7863
|
+
"\u28AD",
|
|
7864
|
+
"\u28AE",
|
|
7865
|
+
"\u28AF",
|
|
7866
|
+
"\u28E8",
|
|
7867
|
+
"\u28E9",
|
|
7868
|
+
"\u28EA",
|
|
7869
|
+
"\u28EB",
|
|
7870
|
+
"\u28EC",
|
|
7871
|
+
"\u28ED",
|
|
7872
|
+
"\u28EE",
|
|
7873
|
+
"\u28EF",
|
|
7874
|
+
"\u28B0",
|
|
7875
|
+
"\u28B1",
|
|
7876
|
+
"\u28B2",
|
|
7877
|
+
"\u28B3",
|
|
7878
|
+
"\u28B4",
|
|
7879
|
+
"\u28B5",
|
|
7880
|
+
"\u28B6",
|
|
7881
|
+
"\u28B7",
|
|
7882
|
+
"\u28F0",
|
|
7883
|
+
"\u28F1",
|
|
7884
|
+
"\u28F2",
|
|
7885
|
+
"\u28F3",
|
|
7886
|
+
"\u28F4",
|
|
7887
|
+
"\u28F5",
|
|
7888
|
+
"\u28F6",
|
|
7889
|
+
"\u28F7",
|
|
7890
|
+
"\u28B8",
|
|
7891
|
+
"\u28B9",
|
|
7892
|
+
"\u28BA",
|
|
7893
|
+
"\u28BB",
|
|
7894
|
+
"\u28BC",
|
|
7895
|
+
"\u28BD",
|
|
7896
|
+
"\u28BE",
|
|
7897
|
+
"\u28BF",
|
|
7898
|
+
"\u28F8",
|
|
7899
|
+
"\u28F9",
|
|
7900
|
+
"\u28FA",
|
|
7901
|
+
"\u28FB",
|
|
7902
|
+
"\u28FC",
|
|
7903
|
+
"\u28FD",
|
|
7904
|
+
"\u28FE",
|
|
7905
|
+
"\u28FF"
|
|
7906
|
+
]
|
|
7907
|
+
},
|
|
7908
|
+
dotsCircle: {
|
|
7909
|
+
interval: 80,
|
|
7910
|
+
frames: [
|
|
7911
|
+
"\u288E ",
|
|
7912
|
+
"\u280E\u2801",
|
|
7913
|
+
"\u280A\u2811",
|
|
7914
|
+
"\u2808\u2831",
|
|
7915
|
+
" \u2871",
|
|
7916
|
+
"\u2880\u2870",
|
|
7917
|
+
"\u2884\u2860",
|
|
7918
|
+
"\u2886\u2840"
|
|
7919
|
+
]
|
|
7920
|
+
},
|
|
7921
|
+
sand: {
|
|
7922
|
+
interval: 80,
|
|
7923
|
+
frames: [
|
|
7924
|
+
"\u2801",
|
|
7925
|
+
"\u2802",
|
|
7926
|
+
"\u2804",
|
|
7927
|
+
"\u2840",
|
|
7928
|
+
"\u2848",
|
|
7929
|
+
"\u2850",
|
|
7930
|
+
"\u2860",
|
|
7931
|
+
"\u28C0",
|
|
7932
|
+
"\u28C1",
|
|
7933
|
+
"\u28C2",
|
|
7934
|
+
"\u28C4",
|
|
7935
|
+
"\u28CC",
|
|
7936
|
+
"\u28D4",
|
|
7937
|
+
"\u28E4",
|
|
7938
|
+
"\u28E5",
|
|
7939
|
+
"\u28E6",
|
|
7940
|
+
"\u28EE",
|
|
7941
|
+
"\u28F6",
|
|
7942
|
+
"\u28F7",
|
|
7943
|
+
"\u28FF",
|
|
7944
|
+
"\u287F",
|
|
7945
|
+
"\u283F",
|
|
7946
|
+
"\u289F",
|
|
7947
|
+
"\u281F",
|
|
7948
|
+
"\u285B",
|
|
7949
|
+
"\u281B",
|
|
7950
|
+
"\u282B",
|
|
7951
|
+
"\u288B",
|
|
7952
|
+
"\u280B",
|
|
7953
|
+
"\u280D",
|
|
7954
|
+
"\u2849",
|
|
7955
|
+
"\u2809",
|
|
7956
|
+
"\u2811",
|
|
7957
|
+
"\u2821",
|
|
7958
|
+
"\u2881"
|
|
7959
|
+
]
|
|
7960
|
+
},
|
|
7961
|
+
line: {
|
|
7962
|
+
interval: 130,
|
|
7963
|
+
frames: [
|
|
7964
|
+
"-",
|
|
7965
|
+
"\\",
|
|
7966
|
+
"|",
|
|
7967
|
+
"/"
|
|
7968
|
+
]
|
|
7969
|
+
},
|
|
7970
|
+
line2: {
|
|
7971
|
+
interval: 100,
|
|
7972
|
+
frames: [
|
|
7973
|
+
"\u2802",
|
|
7974
|
+
"-",
|
|
7975
|
+
"\u2013",
|
|
7976
|
+
"\u2014",
|
|
7977
|
+
"\u2013",
|
|
7978
|
+
"-"
|
|
7979
|
+
]
|
|
7980
|
+
},
|
|
7981
|
+
rollingLine: {
|
|
7982
|
+
interval: 80,
|
|
7983
|
+
frames: [
|
|
7984
|
+
"/ ",
|
|
7985
|
+
" - ",
|
|
7986
|
+
" \\ ",
|
|
7987
|
+
" |",
|
|
7988
|
+
" |",
|
|
7989
|
+
" \\ ",
|
|
7990
|
+
" - ",
|
|
7991
|
+
"/ "
|
|
7992
|
+
]
|
|
7993
|
+
},
|
|
7994
|
+
pipe: {
|
|
7995
|
+
interval: 100,
|
|
7996
|
+
frames: [
|
|
7997
|
+
"\u2524",
|
|
7998
|
+
"\u2518",
|
|
7999
|
+
"\u2534",
|
|
8000
|
+
"\u2514",
|
|
8001
|
+
"\u251C",
|
|
8002
|
+
"\u250C",
|
|
8003
|
+
"\u252C",
|
|
8004
|
+
"\u2510"
|
|
8005
|
+
]
|
|
8006
|
+
},
|
|
8007
|
+
simpleDots: {
|
|
8008
|
+
interval: 400,
|
|
8009
|
+
frames: [
|
|
8010
|
+
". ",
|
|
8011
|
+
".. ",
|
|
8012
|
+
"...",
|
|
8013
|
+
" "
|
|
8014
|
+
]
|
|
8015
|
+
},
|
|
8016
|
+
simpleDotsScrolling: {
|
|
8017
|
+
interval: 200,
|
|
8018
|
+
frames: [
|
|
8019
|
+
". ",
|
|
8020
|
+
".. ",
|
|
8021
|
+
"...",
|
|
8022
|
+
" ..",
|
|
8023
|
+
" .",
|
|
8024
|
+
" "
|
|
8025
|
+
]
|
|
8026
|
+
},
|
|
8027
|
+
star: {
|
|
8028
|
+
interval: 70,
|
|
8029
|
+
frames: [
|
|
8030
|
+
"\u2736",
|
|
8031
|
+
"\u2738",
|
|
8032
|
+
"\u2739",
|
|
8033
|
+
"\u273A",
|
|
8034
|
+
"\u2739",
|
|
8035
|
+
"\u2737"
|
|
8036
|
+
]
|
|
8037
|
+
},
|
|
8038
|
+
star2: {
|
|
8039
|
+
interval: 80,
|
|
8040
|
+
frames: [
|
|
8041
|
+
"+",
|
|
8042
|
+
"x",
|
|
8043
|
+
"*"
|
|
8044
|
+
]
|
|
8045
|
+
},
|
|
8046
|
+
flip: {
|
|
8047
|
+
interval: 70,
|
|
8048
|
+
frames: [
|
|
8049
|
+
"_",
|
|
8050
|
+
"_",
|
|
8051
|
+
"_",
|
|
8052
|
+
"-",
|
|
8053
|
+
"`",
|
|
8054
|
+
"`",
|
|
8055
|
+
"'",
|
|
8056
|
+
"\xB4",
|
|
8057
|
+
"-",
|
|
8058
|
+
"_",
|
|
8059
|
+
"_",
|
|
8060
|
+
"_"
|
|
8061
|
+
]
|
|
8062
|
+
},
|
|
8063
|
+
hamburger: {
|
|
8064
|
+
interval: 100,
|
|
8065
|
+
frames: [
|
|
8066
|
+
"\u2631",
|
|
8067
|
+
"\u2632",
|
|
8068
|
+
"\u2634"
|
|
8069
|
+
]
|
|
8070
|
+
},
|
|
8071
|
+
growVertical: {
|
|
8072
|
+
interval: 120,
|
|
8073
|
+
frames: [
|
|
8074
|
+
"\u2581",
|
|
8075
|
+
"\u2583",
|
|
8076
|
+
"\u2584",
|
|
8077
|
+
"\u2585",
|
|
8078
|
+
"\u2586",
|
|
8079
|
+
"\u2587",
|
|
8080
|
+
"\u2586",
|
|
8081
|
+
"\u2585",
|
|
8082
|
+
"\u2584",
|
|
8083
|
+
"\u2583"
|
|
8084
|
+
]
|
|
8085
|
+
},
|
|
8086
|
+
growHorizontal: {
|
|
8087
|
+
interval: 120,
|
|
8088
|
+
frames: [
|
|
8089
|
+
"\u258F",
|
|
8090
|
+
"\u258E",
|
|
8091
|
+
"\u258D",
|
|
8092
|
+
"\u258C",
|
|
8093
|
+
"\u258B",
|
|
8094
|
+
"\u258A",
|
|
8095
|
+
"\u2589",
|
|
8096
|
+
"\u258A",
|
|
8097
|
+
"\u258B",
|
|
8098
|
+
"\u258C",
|
|
8099
|
+
"\u258D",
|
|
8100
|
+
"\u258E"
|
|
8101
|
+
]
|
|
8102
|
+
},
|
|
8103
|
+
balloon: {
|
|
8104
|
+
interval: 140,
|
|
8105
|
+
frames: [
|
|
8106
|
+
" ",
|
|
8107
|
+
".",
|
|
8108
|
+
"o",
|
|
8109
|
+
"O",
|
|
8110
|
+
"@",
|
|
8111
|
+
"*",
|
|
8112
|
+
" "
|
|
8113
|
+
]
|
|
8114
|
+
},
|
|
8115
|
+
balloon2: {
|
|
8116
|
+
interval: 120,
|
|
8117
|
+
frames: [
|
|
8118
|
+
".",
|
|
8119
|
+
"o",
|
|
8120
|
+
"O",
|
|
8121
|
+
"\xB0",
|
|
8122
|
+
"O",
|
|
8123
|
+
"o",
|
|
8124
|
+
"."
|
|
8125
|
+
]
|
|
8126
|
+
},
|
|
8127
|
+
noise: {
|
|
8128
|
+
interval: 100,
|
|
8129
|
+
frames: [
|
|
8130
|
+
"\u2593",
|
|
8131
|
+
"\u2592",
|
|
8132
|
+
"\u2591"
|
|
8133
|
+
]
|
|
8134
|
+
},
|
|
8135
|
+
bounce: {
|
|
8136
|
+
interval: 120,
|
|
8137
|
+
frames: [
|
|
8138
|
+
"\u2801",
|
|
8139
|
+
"\u2802",
|
|
8140
|
+
"\u2804",
|
|
8141
|
+
"\u2802"
|
|
8142
|
+
]
|
|
8143
|
+
},
|
|
8144
|
+
boxBounce: {
|
|
8145
|
+
interval: 120,
|
|
8146
|
+
frames: [
|
|
8147
|
+
"\u2596",
|
|
8148
|
+
"\u2598",
|
|
8149
|
+
"\u259D",
|
|
8150
|
+
"\u2597"
|
|
8151
|
+
]
|
|
8152
|
+
},
|
|
8153
|
+
boxBounce2: {
|
|
8154
|
+
interval: 100,
|
|
8155
|
+
frames: [
|
|
8156
|
+
"\u258C",
|
|
8157
|
+
"\u2580",
|
|
8158
|
+
"\u2590",
|
|
8159
|
+
"\u2584"
|
|
8160
|
+
]
|
|
8161
|
+
},
|
|
8162
|
+
triangle: {
|
|
8163
|
+
interval: 50,
|
|
8164
|
+
frames: [
|
|
8165
|
+
"\u25E2",
|
|
8166
|
+
"\u25E3",
|
|
8167
|
+
"\u25E4",
|
|
8168
|
+
"\u25E5"
|
|
8169
|
+
]
|
|
8170
|
+
},
|
|
8171
|
+
binary: {
|
|
8172
|
+
interval: 80,
|
|
8173
|
+
frames: [
|
|
8174
|
+
"010010",
|
|
8175
|
+
"001100",
|
|
8176
|
+
"100101",
|
|
8177
|
+
"111010",
|
|
8178
|
+
"111101",
|
|
8179
|
+
"010111",
|
|
8180
|
+
"101011",
|
|
8181
|
+
"111000",
|
|
8182
|
+
"110011",
|
|
8183
|
+
"110101"
|
|
8184
|
+
]
|
|
8185
|
+
},
|
|
8186
|
+
arc: {
|
|
8187
|
+
interval: 100,
|
|
8188
|
+
frames: [
|
|
8189
|
+
"\u25DC",
|
|
8190
|
+
"\u25E0",
|
|
8191
|
+
"\u25DD",
|
|
8192
|
+
"\u25DE",
|
|
8193
|
+
"\u25E1",
|
|
8194
|
+
"\u25DF"
|
|
8195
|
+
]
|
|
8196
|
+
},
|
|
8197
|
+
circle: {
|
|
8198
|
+
interval: 120,
|
|
8199
|
+
frames: [
|
|
8200
|
+
"\u25E1",
|
|
8201
|
+
"\u2299",
|
|
8202
|
+
"\u25E0"
|
|
8203
|
+
]
|
|
8204
|
+
},
|
|
8205
|
+
squareCorners: {
|
|
8206
|
+
interval: 180,
|
|
8207
|
+
frames: [
|
|
8208
|
+
"\u25F0",
|
|
8209
|
+
"\u25F3",
|
|
8210
|
+
"\u25F2",
|
|
8211
|
+
"\u25F1"
|
|
8212
|
+
]
|
|
8213
|
+
},
|
|
8214
|
+
circleQuarters: {
|
|
8215
|
+
interval: 120,
|
|
8216
|
+
frames: [
|
|
8217
|
+
"\u25F4",
|
|
8218
|
+
"\u25F7",
|
|
8219
|
+
"\u25F6",
|
|
8220
|
+
"\u25F5"
|
|
8221
|
+
]
|
|
8222
|
+
},
|
|
8223
|
+
circleHalves: {
|
|
8224
|
+
interval: 50,
|
|
8225
|
+
frames: [
|
|
8226
|
+
"\u25D0",
|
|
8227
|
+
"\u25D3",
|
|
8228
|
+
"\u25D1",
|
|
8229
|
+
"\u25D2"
|
|
8230
|
+
]
|
|
8231
|
+
},
|
|
8232
|
+
squish: {
|
|
8233
|
+
interval: 100,
|
|
8234
|
+
frames: [
|
|
8235
|
+
"\u256B",
|
|
8236
|
+
"\u256A"
|
|
8237
|
+
]
|
|
8238
|
+
},
|
|
8239
|
+
toggle: {
|
|
8240
|
+
interval: 250,
|
|
8241
|
+
frames: [
|
|
8242
|
+
"\u22B6",
|
|
8243
|
+
"\u22B7"
|
|
8244
|
+
]
|
|
8245
|
+
},
|
|
8246
|
+
toggle2: {
|
|
8247
|
+
interval: 80,
|
|
8248
|
+
frames: [
|
|
8249
|
+
"\u25AB",
|
|
8250
|
+
"\u25AA"
|
|
8251
|
+
]
|
|
8252
|
+
},
|
|
8253
|
+
toggle3: {
|
|
8254
|
+
interval: 120,
|
|
8255
|
+
frames: [
|
|
8256
|
+
"\u25A1",
|
|
8257
|
+
"\u25A0"
|
|
8258
|
+
]
|
|
8259
|
+
},
|
|
8260
|
+
toggle4: {
|
|
8261
|
+
interval: 100,
|
|
8262
|
+
frames: [
|
|
8263
|
+
"\u25A0",
|
|
8264
|
+
"\u25A1",
|
|
8265
|
+
"\u25AA",
|
|
8266
|
+
"\u25AB"
|
|
8267
|
+
]
|
|
8268
|
+
},
|
|
8269
|
+
toggle5: {
|
|
8270
|
+
interval: 100,
|
|
8271
|
+
frames: [
|
|
8272
|
+
"\u25AE",
|
|
8273
|
+
"\u25AF"
|
|
8274
|
+
]
|
|
8275
|
+
},
|
|
8276
|
+
toggle6: {
|
|
8277
|
+
interval: 300,
|
|
8278
|
+
frames: [
|
|
8279
|
+
"\u101D",
|
|
8280
|
+
"\u1040"
|
|
8281
|
+
]
|
|
8282
|
+
},
|
|
8283
|
+
toggle7: {
|
|
8284
|
+
interval: 80,
|
|
8285
|
+
frames: [
|
|
8286
|
+
"\u29BE",
|
|
8287
|
+
"\u29BF"
|
|
8288
|
+
]
|
|
8289
|
+
},
|
|
8290
|
+
toggle8: {
|
|
8291
|
+
interval: 100,
|
|
8292
|
+
frames: [
|
|
8293
|
+
"\u25CD",
|
|
8294
|
+
"\u25CC"
|
|
8295
|
+
]
|
|
8296
|
+
},
|
|
8297
|
+
toggle9: {
|
|
8298
|
+
interval: 100,
|
|
8299
|
+
frames: [
|
|
8300
|
+
"\u25C9",
|
|
8301
|
+
"\u25CE"
|
|
8302
|
+
]
|
|
8303
|
+
},
|
|
8304
|
+
toggle10: {
|
|
8305
|
+
interval: 100,
|
|
8306
|
+
frames: [
|
|
8307
|
+
"\u3282",
|
|
8308
|
+
"\u3280",
|
|
8309
|
+
"\u3281"
|
|
8310
|
+
]
|
|
8311
|
+
},
|
|
8312
|
+
toggle11: {
|
|
8313
|
+
interval: 50,
|
|
8314
|
+
frames: [
|
|
8315
|
+
"\u29C7",
|
|
8316
|
+
"\u29C6"
|
|
8317
|
+
]
|
|
8318
|
+
},
|
|
8319
|
+
toggle12: {
|
|
8320
|
+
interval: 120,
|
|
8321
|
+
frames: [
|
|
8322
|
+
"\u2617",
|
|
8323
|
+
"\u2616"
|
|
8324
|
+
]
|
|
8325
|
+
},
|
|
8326
|
+
toggle13: {
|
|
8327
|
+
interval: 80,
|
|
8328
|
+
frames: [
|
|
8329
|
+
"=",
|
|
8330
|
+
"*",
|
|
8331
|
+
"-"
|
|
8332
|
+
]
|
|
8333
|
+
},
|
|
8334
|
+
arrow: {
|
|
8335
|
+
interval: 100,
|
|
8336
|
+
frames: [
|
|
8337
|
+
"\u2190",
|
|
8338
|
+
"\u2196",
|
|
8339
|
+
"\u2191",
|
|
8340
|
+
"\u2197",
|
|
8341
|
+
"\u2192",
|
|
8342
|
+
"\u2198",
|
|
8343
|
+
"\u2193",
|
|
8344
|
+
"\u2199"
|
|
8345
|
+
]
|
|
8346
|
+
},
|
|
8347
|
+
arrow2: {
|
|
8348
|
+
interval: 80,
|
|
8349
|
+
frames: [
|
|
8350
|
+
"\u2B06\uFE0F ",
|
|
8351
|
+
"\u2197\uFE0F ",
|
|
8352
|
+
"\u27A1\uFE0F ",
|
|
8353
|
+
"\u2198\uFE0F ",
|
|
8354
|
+
"\u2B07\uFE0F ",
|
|
8355
|
+
"\u2199\uFE0F ",
|
|
8356
|
+
"\u2B05\uFE0F ",
|
|
8357
|
+
"\u2196\uFE0F "
|
|
8358
|
+
]
|
|
8359
|
+
},
|
|
8360
|
+
arrow3: {
|
|
8361
|
+
interval: 120,
|
|
8362
|
+
frames: [
|
|
8363
|
+
"\u25B9\u25B9\u25B9\u25B9\u25B9",
|
|
8364
|
+
"\u25B8\u25B9\u25B9\u25B9\u25B9",
|
|
8365
|
+
"\u25B9\u25B8\u25B9\u25B9\u25B9",
|
|
8366
|
+
"\u25B9\u25B9\u25B8\u25B9\u25B9",
|
|
8367
|
+
"\u25B9\u25B9\u25B9\u25B8\u25B9",
|
|
8368
|
+
"\u25B9\u25B9\u25B9\u25B9\u25B8"
|
|
8369
|
+
]
|
|
8370
|
+
},
|
|
8371
|
+
bouncingBar: {
|
|
8372
|
+
interval: 80,
|
|
8373
|
+
frames: [
|
|
8374
|
+
"[ ]",
|
|
8375
|
+
"[= ]",
|
|
8376
|
+
"[== ]",
|
|
8377
|
+
"[=== ]",
|
|
8378
|
+
"[====]",
|
|
8379
|
+
"[ ===]",
|
|
8380
|
+
"[ ==]",
|
|
8381
|
+
"[ =]",
|
|
8382
|
+
"[ ]",
|
|
8383
|
+
"[ =]",
|
|
8384
|
+
"[ ==]",
|
|
8385
|
+
"[ ===]",
|
|
8386
|
+
"[====]",
|
|
8387
|
+
"[=== ]",
|
|
8388
|
+
"[== ]",
|
|
8389
|
+
"[= ]"
|
|
8390
|
+
]
|
|
8391
|
+
},
|
|
8392
|
+
bouncingBall: {
|
|
8393
|
+
interval: 80,
|
|
8394
|
+
frames: [
|
|
8395
|
+
"( \u25CF )",
|
|
8396
|
+
"( \u25CF )",
|
|
8397
|
+
"( \u25CF )",
|
|
8398
|
+
"( \u25CF )",
|
|
8399
|
+
"( \u25CF)",
|
|
8400
|
+
"( \u25CF )",
|
|
8401
|
+
"( \u25CF )",
|
|
8402
|
+
"( \u25CF )",
|
|
8403
|
+
"( \u25CF )",
|
|
8404
|
+
"(\u25CF )"
|
|
8405
|
+
]
|
|
8406
|
+
},
|
|
8407
|
+
smiley: {
|
|
8408
|
+
interval: 200,
|
|
8409
|
+
frames: [
|
|
8410
|
+
"\u{1F604} ",
|
|
8411
|
+
"\u{1F61D} "
|
|
8412
|
+
]
|
|
8413
|
+
},
|
|
8414
|
+
monkey: {
|
|
8415
|
+
interval: 300,
|
|
8416
|
+
frames: [
|
|
8417
|
+
"\u{1F648} ",
|
|
8418
|
+
"\u{1F648} ",
|
|
8419
|
+
"\u{1F649} ",
|
|
8420
|
+
"\u{1F64A} "
|
|
8421
|
+
]
|
|
8422
|
+
},
|
|
8423
|
+
hearts: {
|
|
8424
|
+
interval: 100,
|
|
8425
|
+
frames: [
|
|
8426
|
+
"\u{1F49B} ",
|
|
8427
|
+
"\u{1F499} ",
|
|
8428
|
+
"\u{1F49C} ",
|
|
8429
|
+
"\u{1F49A} ",
|
|
8430
|
+
"\u{1F497} "
|
|
8431
|
+
]
|
|
8432
|
+
},
|
|
8433
|
+
clock: {
|
|
8434
|
+
interval: 100,
|
|
8435
|
+
frames: [
|
|
8436
|
+
"\u{1F55B} ",
|
|
8437
|
+
"\u{1F550} ",
|
|
8438
|
+
"\u{1F551} ",
|
|
8439
|
+
"\u{1F552} ",
|
|
8440
|
+
"\u{1F553} ",
|
|
8441
|
+
"\u{1F554} ",
|
|
8442
|
+
"\u{1F555} ",
|
|
8443
|
+
"\u{1F556} ",
|
|
8444
|
+
"\u{1F557} ",
|
|
8445
|
+
"\u{1F558} ",
|
|
8446
|
+
"\u{1F559} ",
|
|
8447
|
+
"\u{1F55A} "
|
|
8448
|
+
]
|
|
8449
|
+
},
|
|
8450
|
+
earth: {
|
|
8451
|
+
interval: 180,
|
|
8452
|
+
frames: [
|
|
8453
|
+
"\u{1F30D} ",
|
|
8454
|
+
"\u{1F30E} ",
|
|
8455
|
+
"\u{1F30F} "
|
|
8456
|
+
]
|
|
8457
|
+
},
|
|
8458
|
+
material: {
|
|
8459
|
+
interval: 17,
|
|
8460
|
+
frames: [
|
|
8461
|
+
"\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8462
|
+
"\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8463
|
+
"\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8464
|
+
"\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8465
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8466
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8467
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8468
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8469
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8470
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8471
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8472
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8473
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8474
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8475
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8476
|
+
"\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
|
|
8477
|
+
"\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
|
|
8478
|
+
"\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
|
|
8479
|
+
"\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
|
|
8480
|
+
"\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
|
|
8481
|
+
"\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
|
|
8482
|
+
"\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
|
|
8483
|
+
"\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
|
|
8484
|
+
"\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
|
|
8485
|
+
"\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
|
|
8486
|
+
"\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
|
|
8487
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8488
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8489
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8490
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8491
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8492
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8493
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8494
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8495
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8496
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8497
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8498
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8499
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8500
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
|
|
8501
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
|
|
8502
|
+
"\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
|
|
8503
|
+
"\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
|
|
8504
|
+
"\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
|
|
8505
|
+
"\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
|
|
8506
|
+
"\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
|
|
8507
|
+
"\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
|
|
8508
|
+
"\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
|
|
8509
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
|
|
8510
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8511
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8512
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8513
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8514
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8515
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8516
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8517
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8518
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8519
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8520
|
+
"\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
|
|
8521
|
+
"\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
|
|
8522
|
+
"\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
|
|
8523
|
+
"\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
|
|
8524
|
+
"\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
|
|
8525
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
|
|
8526
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
|
|
8527
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
|
|
8528
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
|
|
8529
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
|
|
8530
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
|
|
8531
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
|
|
8532
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
|
|
8533
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
|
|
8534
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
|
|
8535
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8536
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
|
|
8537
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
|
|
8538
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
|
|
8539
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
|
|
8540
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
|
|
8541
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
|
|
8542
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
|
|
8543
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
|
|
8544
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
|
|
8545
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
|
|
8546
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
|
|
8547
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
|
|
8548
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
|
|
8549
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8550
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8551
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
|
|
8552
|
+
"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"
|
|
8553
|
+
]
|
|
8554
|
+
},
|
|
8555
|
+
moon: {
|
|
8556
|
+
interval: 80,
|
|
8557
|
+
frames: [
|
|
8558
|
+
"\u{1F311} ",
|
|
8559
|
+
"\u{1F312} ",
|
|
8560
|
+
"\u{1F313} ",
|
|
8561
|
+
"\u{1F314} ",
|
|
8562
|
+
"\u{1F315} ",
|
|
8563
|
+
"\u{1F316} ",
|
|
8564
|
+
"\u{1F317} ",
|
|
8565
|
+
"\u{1F318} "
|
|
8566
|
+
]
|
|
8567
|
+
},
|
|
8568
|
+
runner: {
|
|
8569
|
+
interval: 140,
|
|
8570
|
+
frames: [
|
|
8571
|
+
"\u{1F6B6} ",
|
|
8572
|
+
"\u{1F3C3} "
|
|
8573
|
+
]
|
|
8574
|
+
},
|
|
8575
|
+
pong: {
|
|
8576
|
+
interval: 80,
|
|
8577
|
+
frames: [
|
|
8578
|
+
"\u2590\u2802 \u258C",
|
|
8579
|
+
"\u2590\u2808 \u258C",
|
|
8580
|
+
"\u2590 \u2802 \u258C",
|
|
8581
|
+
"\u2590 \u2820 \u258C",
|
|
8582
|
+
"\u2590 \u2840 \u258C",
|
|
8583
|
+
"\u2590 \u2820 \u258C",
|
|
8584
|
+
"\u2590 \u2802 \u258C",
|
|
8585
|
+
"\u2590 \u2808 \u258C",
|
|
8586
|
+
"\u2590 \u2802 \u258C",
|
|
8587
|
+
"\u2590 \u2820 \u258C",
|
|
8588
|
+
"\u2590 \u2840 \u258C",
|
|
8589
|
+
"\u2590 \u2820 \u258C",
|
|
8590
|
+
"\u2590 \u2802 \u258C",
|
|
8591
|
+
"\u2590 \u2808 \u258C",
|
|
8592
|
+
"\u2590 \u2802\u258C",
|
|
8593
|
+
"\u2590 \u2820\u258C",
|
|
8594
|
+
"\u2590 \u2840\u258C",
|
|
8595
|
+
"\u2590 \u2820 \u258C",
|
|
8596
|
+
"\u2590 \u2802 \u258C",
|
|
8597
|
+
"\u2590 \u2808 \u258C",
|
|
8598
|
+
"\u2590 \u2802 \u258C",
|
|
8599
|
+
"\u2590 \u2820 \u258C",
|
|
8600
|
+
"\u2590 \u2840 \u258C",
|
|
8601
|
+
"\u2590 \u2820 \u258C",
|
|
8602
|
+
"\u2590 \u2802 \u258C",
|
|
8603
|
+
"\u2590 \u2808 \u258C",
|
|
8604
|
+
"\u2590 \u2802 \u258C",
|
|
8605
|
+
"\u2590 \u2820 \u258C",
|
|
8606
|
+
"\u2590 \u2840 \u258C",
|
|
8607
|
+
"\u2590\u2820 \u258C"
|
|
8608
|
+
]
|
|
8609
|
+
},
|
|
8610
|
+
shark: {
|
|
8611
|
+
interval: 120,
|
|
8612
|
+
frames: [
|
|
8613
|
+
"\u2590|\\____________\u258C",
|
|
8614
|
+
"\u2590_|\\___________\u258C",
|
|
8615
|
+
"\u2590__|\\__________\u258C",
|
|
8616
|
+
"\u2590___|\\_________\u258C",
|
|
8617
|
+
"\u2590____|\\________\u258C",
|
|
8618
|
+
"\u2590_____|\\_______\u258C",
|
|
8619
|
+
"\u2590______|\\______\u258C",
|
|
8620
|
+
"\u2590_______|\\_____\u258C",
|
|
8621
|
+
"\u2590________|\\____\u258C",
|
|
8622
|
+
"\u2590_________|\\___\u258C",
|
|
8623
|
+
"\u2590__________|\\__\u258C",
|
|
8624
|
+
"\u2590___________|\\_\u258C",
|
|
8625
|
+
"\u2590____________|\\\u258C",
|
|
8626
|
+
"\u2590____________/|\u258C",
|
|
8627
|
+
"\u2590___________/|_\u258C",
|
|
8628
|
+
"\u2590__________/|__\u258C",
|
|
8629
|
+
"\u2590_________/|___\u258C",
|
|
8630
|
+
"\u2590________/|____\u258C",
|
|
8631
|
+
"\u2590_______/|_____\u258C",
|
|
8632
|
+
"\u2590______/|______\u258C",
|
|
8633
|
+
"\u2590_____/|_______\u258C",
|
|
8634
|
+
"\u2590____/|________\u258C",
|
|
8635
|
+
"\u2590___/|_________\u258C",
|
|
8636
|
+
"\u2590__/|__________\u258C",
|
|
8637
|
+
"\u2590_/|___________\u258C",
|
|
8638
|
+
"\u2590/|____________\u258C"
|
|
8639
|
+
]
|
|
8640
|
+
},
|
|
8641
|
+
dqpb: {
|
|
8642
|
+
interval: 100,
|
|
8643
|
+
frames: [
|
|
8644
|
+
"d",
|
|
8645
|
+
"q",
|
|
8646
|
+
"p",
|
|
8647
|
+
"b"
|
|
8648
|
+
]
|
|
8649
|
+
},
|
|
8650
|
+
weather: {
|
|
8651
|
+
interval: 100,
|
|
8652
|
+
frames: [
|
|
8653
|
+
"\u2600\uFE0F ",
|
|
8654
|
+
"\u2600\uFE0F ",
|
|
8655
|
+
"\u2600\uFE0F ",
|
|
8656
|
+
"\u{1F324} ",
|
|
8657
|
+
"\u26C5\uFE0F ",
|
|
8658
|
+
"\u{1F325} ",
|
|
8659
|
+
"\u2601\uFE0F ",
|
|
8660
|
+
"\u{1F327} ",
|
|
8661
|
+
"\u{1F328} ",
|
|
8662
|
+
"\u{1F327} ",
|
|
8663
|
+
"\u{1F328} ",
|
|
8664
|
+
"\u{1F327} ",
|
|
8665
|
+
"\u{1F328} ",
|
|
8666
|
+
"\u26C8 ",
|
|
8667
|
+
"\u{1F328} ",
|
|
8668
|
+
"\u{1F327} ",
|
|
8669
|
+
"\u{1F328} ",
|
|
8670
|
+
"\u2601\uFE0F ",
|
|
8671
|
+
"\u{1F325} ",
|
|
8672
|
+
"\u26C5\uFE0F ",
|
|
8673
|
+
"\u{1F324} ",
|
|
8674
|
+
"\u2600\uFE0F ",
|
|
8675
|
+
"\u2600\uFE0F "
|
|
8676
|
+
]
|
|
8677
|
+
},
|
|
8678
|
+
christmas: {
|
|
8679
|
+
interval: 400,
|
|
8680
|
+
frames: [
|
|
8681
|
+
"\u{1F332}",
|
|
8682
|
+
"\u{1F384}"
|
|
8683
|
+
]
|
|
8684
|
+
},
|
|
8685
|
+
grenade: {
|
|
8686
|
+
interval: 80,
|
|
8687
|
+
frames: [
|
|
8688
|
+
"\u060C ",
|
|
8689
|
+
"\u2032 ",
|
|
8690
|
+
" \xB4 ",
|
|
8691
|
+
" \u203E ",
|
|
8692
|
+
" \u2E0C",
|
|
8693
|
+
" \u2E0A",
|
|
8694
|
+
" |",
|
|
8695
|
+
" \u204E",
|
|
8696
|
+
" \u2055",
|
|
8697
|
+
" \u0DF4 ",
|
|
8698
|
+
" \u2053",
|
|
8699
|
+
" ",
|
|
8700
|
+
" ",
|
|
8701
|
+
" "
|
|
8702
|
+
]
|
|
8703
|
+
},
|
|
8704
|
+
point: {
|
|
8705
|
+
interval: 125,
|
|
8706
|
+
frames: [
|
|
8707
|
+
"\u2219\u2219\u2219",
|
|
8708
|
+
"\u25CF\u2219\u2219",
|
|
8709
|
+
"\u2219\u25CF\u2219",
|
|
8710
|
+
"\u2219\u2219\u25CF",
|
|
8711
|
+
"\u2219\u2219\u2219"
|
|
8712
|
+
]
|
|
8713
|
+
},
|
|
8714
|
+
layer: {
|
|
8715
|
+
interval: 150,
|
|
8716
|
+
frames: [
|
|
8717
|
+
"-",
|
|
8718
|
+
"=",
|
|
8719
|
+
"\u2261"
|
|
8720
|
+
]
|
|
8721
|
+
},
|
|
8722
|
+
betaWave: {
|
|
8723
|
+
interval: 80,
|
|
8724
|
+
frames: [
|
|
8725
|
+
"\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2",
|
|
8726
|
+
"\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2",
|
|
8727
|
+
"\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2",
|
|
8728
|
+
"\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2",
|
|
8729
|
+
"\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2",
|
|
8730
|
+
"\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2",
|
|
8731
|
+
"\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"
|
|
8732
|
+
]
|
|
8733
|
+
},
|
|
8734
|
+
fingerDance: {
|
|
8735
|
+
interval: 160,
|
|
8736
|
+
frames: [
|
|
8737
|
+
"\u{1F918} ",
|
|
8738
|
+
"\u{1F91F} ",
|
|
8739
|
+
"\u{1F596} ",
|
|
8740
|
+
"\u270B ",
|
|
8741
|
+
"\u{1F91A} ",
|
|
8742
|
+
"\u{1F446} "
|
|
8743
|
+
]
|
|
8744
|
+
},
|
|
8745
|
+
fistBump: {
|
|
8746
|
+
interval: 80,
|
|
8747
|
+
frames: [
|
|
8748
|
+
"\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
|
|
8749
|
+
"\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
|
|
8750
|
+
"\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
|
|
8751
|
+
"\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ",
|
|
8752
|
+
"\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ",
|
|
8753
|
+
"\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ",
|
|
8754
|
+
"\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "
|
|
8755
|
+
]
|
|
8756
|
+
},
|
|
8757
|
+
soccerHeader: {
|
|
8758
|
+
interval: 80,
|
|
8759
|
+
frames: [
|
|
8760
|
+
" \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ",
|
|
8761
|
+
"\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
|
|
8762
|
+
"\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
|
|
8763
|
+
"\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
|
|
8764
|
+
"\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
|
|
8765
|
+
"\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
|
|
8766
|
+
"\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ",
|
|
8767
|
+
"\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
|
|
8768
|
+
"\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
|
|
8769
|
+
"\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
|
|
8770
|
+
"\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
|
|
8771
|
+
"\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "
|
|
8772
|
+
]
|
|
8773
|
+
},
|
|
8774
|
+
mindblown: {
|
|
8775
|
+
interval: 160,
|
|
8776
|
+
frames: [
|
|
8777
|
+
"\u{1F610} ",
|
|
8778
|
+
"\u{1F610} ",
|
|
8779
|
+
"\u{1F62E} ",
|
|
8780
|
+
"\u{1F62E} ",
|
|
8781
|
+
"\u{1F626} ",
|
|
8782
|
+
"\u{1F626} ",
|
|
8783
|
+
"\u{1F627} ",
|
|
8784
|
+
"\u{1F627} ",
|
|
8785
|
+
"\u{1F92F} ",
|
|
8786
|
+
"\u{1F4A5} ",
|
|
8787
|
+
"\u2728 ",
|
|
8788
|
+
"\u3000 ",
|
|
8789
|
+
"\u3000 ",
|
|
8790
|
+
"\u3000 "
|
|
8791
|
+
]
|
|
8792
|
+
},
|
|
8793
|
+
speaker: {
|
|
8794
|
+
interval: 160,
|
|
8795
|
+
frames: [
|
|
8796
|
+
"\u{1F508} ",
|
|
8797
|
+
"\u{1F509} ",
|
|
8798
|
+
"\u{1F50A} ",
|
|
8799
|
+
"\u{1F509} "
|
|
8800
|
+
]
|
|
8801
|
+
},
|
|
8802
|
+
orangePulse: {
|
|
8803
|
+
interval: 100,
|
|
8804
|
+
frames: [
|
|
8805
|
+
"\u{1F538} ",
|
|
8806
|
+
"\u{1F536} ",
|
|
8807
|
+
"\u{1F7E0} ",
|
|
8808
|
+
"\u{1F7E0} ",
|
|
8809
|
+
"\u{1F536} "
|
|
8810
|
+
]
|
|
8811
|
+
},
|
|
8812
|
+
bluePulse: {
|
|
8813
|
+
interval: 100,
|
|
8814
|
+
frames: [
|
|
8815
|
+
"\u{1F539} ",
|
|
8816
|
+
"\u{1F537} ",
|
|
8817
|
+
"\u{1F535} ",
|
|
8818
|
+
"\u{1F535} ",
|
|
8819
|
+
"\u{1F537} "
|
|
8820
|
+
]
|
|
8821
|
+
},
|
|
8822
|
+
orangeBluePulse: {
|
|
8823
|
+
interval: 100,
|
|
8824
|
+
frames: [
|
|
8825
|
+
"\u{1F538} ",
|
|
8826
|
+
"\u{1F536} ",
|
|
8827
|
+
"\u{1F7E0} ",
|
|
8828
|
+
"\u{1F7E0} ",
|
|
8829
|
+
"\u{1F536} ",
|
|
8830
|
+
"\u{1F539} ",
|
|
8831
|
+
"\u{1F537} ",
|
|
8832
|
+
"\u{1F535} ",
|
|
8833
|
+
"\u{1F535} ",
|
|
8834
|
+
"\u{1F537} "
|
|
8835
|
+
]
|
|
8836
|
+
},
|
|
8837
|
+
timeTravel: {
|
|
8838
|
+
interval: 100,
|
|
8839
|
+
frames: [
|
|
8840
|
+
"\u{1F55B} ",
|
|
8841
|
+
"\u{1F55A} ",
|
|
8842
|
+
"\u{1F559} ",
|
|
8843
|
+
"\u{1F558} ",
|
|
8844
|
+
"\u{1F557} ",
|
|
8845
|
+
"\u{1F556} ",
|
|
8846
|
+
"\u{1F555} ",
|
|
8847
|
+
"\u{1F554} ",
|
|
8848
|
+
"\u{1F553} ",
|
|
8849
|
+
"\u{1F552} ",
|
|
8850
|
+
"\u{1F551} ",
|
|
8851
|
+
"\u{1F550} "
|
|
8852
|
+
]
|
|
8853
|
+
},
|
|
8854
|
+
aesthetic: {
|
|
8855
|
+
interval: 80,
|
|
8856
|
+
frames: [
|
|
8857
|
+
"\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1",
|
|
8858
|
+
"\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1",
|
|
8859
|
+
"\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1",
|
|
8860
|
+
"\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1",
|
|
8861
|
+
"\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1",
|
|
8862
|
+
"\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1",
|
|
8863
|
+
"\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0",
|
|
8864
|
+
"\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"
|
|
8865
|
+
]
|
|
8866
|
+
},
|
|
8867
|
+
dwarfFortress: {
|
|
8868
|
+
interval: 80,
|
|
8869
|
+
frames: [
|
|
8870
|
+
" \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8871
|
+
"\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8872
|
+
"\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8873
|
+
"\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8874
|
+
"\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8875
|
+
"\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8876
|
+
"\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8877
|
+
"\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8878
|
+
"\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8879
|
+
"\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8880
|
+
" \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8881
|
+
" \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8882
|
+
" \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8883
|
+
" \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8884
|
+
" \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8885
|
+
" \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8886
|
+
" \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8887
|
+
" \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8888
|
+
" \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8889
|
+
" \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8890
|
+
" \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8891
|
+
" \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8892
|
+
" \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8893
|
+
" \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8894
|
+
" \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8895
|
+
" \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8896
|
+
" \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8897
|
+
" \u263A \u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8898
|
+
" \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8899
|
+
" \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8900
|
+
" \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
|
|
8901
|
+
" \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
|
|
8902
|
+
" \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
|
|
8903
|
+
" \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
|
|
8904
|
+
" \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
|
|
8905
|
+
" \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
|
|
8906
|
+
" \u263A \u2588\u2588\xA3\xA3\xA3 ",
|
|
8907
|
+
" \u263A\u2588\u2588\xA3\xA3\xA3 ",
|
|
8908
|
+
" \u263A\u2588\u2588\xA3\xA3\xA3 ",
|
|
8909
|
+
" \u263A\u2593\u2588\xA3\xA3\xA3 ",
|
|
8910
|
+
" \u263A\u2593\u2588\xA3\xA3\xA3 ",
|
|
8911
|
+
" \u263A\u2592\u2588\xA3\xA3\xA3 ",
|
|
8912
|
+
" \u263A\u2592\u2588\xA3\xA3\xA3 ",
|
|
8913
|
+
" \u263A\u2591\u2588\xA3\xA3\xA3 ",
|
|
8914
|
+
" \u263A\u2591\u2588\xA3\xA3\xA3 ",
|
|
8915
|
+
" \u263A \u2588\xA3\xA3\xA3 ",
|
|
8916
|
+
" \u263A\u2588\xA3\xA3\xA3 ",
|
|
8917
|
+
" \u263A\u2588\xA3\xA3\xA3 ",
|
|
8918
|
+
" \u263A\u2593\xA3\xA3\xA3 ",
|
|
8919
|
+
" \u263A\u2593\xA3\xA3\xA3 ",
|
|
8920
|
+
" \u263A\u2592\xA3\xA3\xA3 ",
|
|
8921
|
+
" \u263A\u2592\xA3\xA3\xA3 ",
|
|
8922
|
+
" \u263A\u2591\xA3\xA3\xA3 ",
|
|
8923
|
+
" \u263A\u2591\xA3\xA3\xA3 ",
|
|
8924
|
+
" \u263A \xA3\xA3\xA3 ",
|
|
8925
|
+
" \u263A\xA3\xA3\xA3 ",
|
|
8926
|
+
" \u263A\xA3\xA3\xA3 ",
|
|
8927
|
+
" \u263A\u2593\xA3\xA3 ",
|
|
8928
|
+
" \u263A\u2593\xA3\xA3 ",
|
|
8929
|
+
" \u263A\u2592\xA3\xA3 ",
|
|
8930
|
+
" \u263A\u2592\xA3\xA3 ",
|
|
8931
|
+
" \u263A\u2591\xA3\xA3 ",
|
|
8932
|
+
" \u263A\u2591\xA3\xA3 ",
|
|
8933
|
+
" \u263A \xA3\xA3 ",
|
|
8934
|
+
" \u263A\xA3\xA3 ",
|
|
8935
|
+
" \u263A\xA3\xA3 ",
|
|
8936
|
+
" \u263A\u2593\xA3 ",
|
|
8937
|
+
" \u263A\u2593\xA3 ",
|
|
8938
|
+
" \u263A\u2592\xA3 ",
|
|
8939
|
+
" \u263A\u2592\xA3 ",
|
|
8940
|
+
" \u263A\u2591\xA3 ",
|
|
8941
|
+
" \u263A\u2591\xA3 ",
|
|
8942
|
+
" \u263A \xA3 ",
|
|
8943
|
+
" \u263A\xA3 ",
|
|
8944
|
+
" \u263A\xA3 ",
|
|
8945
|
+
" \u263A\u2593 ",
|
|
8946
|
+
" \u263A\u2593 ",
|
|
8947
|
+
" \u263A\u2592 ",
|
|
8948
|
+
" \u263A\u2592 ",
|
|
8949
|
+
" \u263A\u2591 ",
|
|
8950
|
+
" \u263A\u2591 ",
|
|
8951
|
+
" \u263A ",
|
|
8952
|
+
" \u263A &",
|
|
8953
|
+
" \u263A \u263C&",
|
|
8954
|
+
" \u263A \u263C &",
|
|
8955
|
+
" \u263A\u263C &",
|
|
8956
|
+
" \u263A\u263C & ",
|
|
8957
|
+
" \u203C & ",
|
|
8958
|
+
" \u263A & ",
|
|
8959
|
+
" \u203C & ",
|
|
8960
|
+
" \u263A & ",
|
|
8961
|
+
" \u203C & ",
|
|
8962
|
+
" \u263A & ",
|
|
8963
|
+
"\u203C & ",
|
|
8964
|
+
" & ",
|
|
8965
|
+
" & ",
|
|
8966
|
+
" & \u2591 ",
|
|
8967
|
+
" & \u2592 ",
|
|
8968
|
+
" & \u2593 ",
|
|
8969
|
+
" & \xA3 ",
|
|
8970
|
+
" & \u2591\xA3 ",
|
|
8971
|
+
" & \u2592\xA3 ",
|
|
8972
|
+
" & \u2593\xA3 ",
|
|
8973
|
+
" & \xA3\xA3 ",
|
|
8974
|
+
" & \u2591\xA3\xA3 ",
|
|
8975
|
+
" & \u2592\xA3\xA3 ",
|
|
8976
|
+
"& \u2593\xA3\xA3 ",
|
|
8977
|
+
"& \xA3\xA3\xA3 ",
|
|
8978
|
+
" \u2591\xA3\xA3\xA3 ",
|
|
8979
|
+
" \u2592\xA3\xA3\xA3 ",
|
|
8980
|
+
" \u2593\xA3\xA3\xA3 ",
|
|
8981
|
+
" \u2588\xA3\xA3\xA3 ",
|
|
8982
|
+
" \u2591\u2588\xA3\xA3\xA3 ",
|
|
8983
|
+
" \u2592\u2588\xA3\xA3\xA3 ",
|
|
8984
|
+
" \u2593\u2588\xA3\xA3\xA3 ",
|
|
8985
|
+
" \u2588\u2588\xA3\xA3\xA3 ",
|
|
8986
|
+
" \u2591\u2588\u2588\xA3\xA3\xA3 ",
|
|
8987
|
+
" \u2592\u2588\u2588\xA3\xA3\xA3 ",
|
|
8988
|
+
" \u2593\u2588\u2588\xA3\xA3\xA3 ",
|
|
8989
|
+
" \u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8990
|
+
" \u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8991
|
+
" \u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8992
|
+
" \u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8993
|
+
" \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8994
|
+
" \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8995
|
+
" \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8996
|
+
" \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8997
|
+
" \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8998
|
+
" \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
8999
|
+
" \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
9000
|
+
" \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
9001
|
+
" \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
|
|
9002
|
+
" \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "
|
|
9003
|
+
]
|
|
9004
|
+
},
|
|
9005
|
+
fish: {
|
|
9006
|
+
interval: 80,
|
|
9007
|
+
frames: [
|
|
9008
|
+
"~~~~~~~~~~~~~~~~~~~~",
|
|
9009
|
+
"> ~~~~~~~~~~~~~~~~~~",
|
|
9010
|
+
"\xBA> ~~~~~~~~~~~~~~~~~",
|
|
9011
|
+
"(\xBA> ~~~~~~~~~~~~~~~~",
|
|
9012
|
+
"((\xBA> ~~~~~~~~~~~~~~~",
|
|
9013
|
+
"<((\xBA> ~~~~~~~~~~~~~~",
|
|
9014
|
+
"><((\xBA> ~~~~~~~~~~~~~",
|
|
9015
|
+
" ><((\xBA> ~~~~~~~~~~~~",
|
|
9016
|
+
"~ ><((\xBA> ~~~~~~~~~~~",
|
|
9017
|
+
"~~ <>((\xBA> ~~~~~~~~~~",
|
|
9018
|
+
"~~~ ><((\xBA> ~~~~~~~~~",
|
|
9019
|
+
"~~~~ <>((\xBA> ~~~~~~~~",
|
|
9020
|
+
"~~~~~ ><((\xBA> ~~~~~~~",
|
|
9021
|
+
"~~~~~~ <>((\xBA> ~~~~~~",
|
|
9022
|
+
"~~~~~~~ ><((\xBA> ~~~~~",
|
|
9023
|
+
"~~~~~~~~ <>((\xBA> ~~~~",
|
|
9024
|
+
"~~~~~~~~~ ><((\xBA> ~~~",
|
|
9025
|
+
"~~~~~~~~~~ <>((\xBA> ~~",
|
|
9026
|
+
"~~~~~~~~~~~ ><((\xBA> ~",
|
|
9027
|
+
"~~~~~~~~~~~~ <>((\xBA> ",
|
|
9028
|
+
"~~~~~~~~~~~~~ ><((\xBA>",
|
|
9029
|
+
"~~~~~~~~~~~~~~ <>((\xBA",
|
|
9030
|
+
"~~~~~~~~~~~~~~~ ><((",
|
|
9031
|
+
"~~~~~~~~~~~~~~~~ <>(",
|
|
9032
|
+
"~~~~~~~~~~~~~~~~~ ><",
|
|
9033
|
+
"~~~~~~~~~~~~~~~~~~ <",
|
|
9034
|
+
"~~~~~~~~~~~~~~~~~~~~"
|
|
9035
|
+
]
|
|
9036
|
+
}
|
|
9037
|
+
};
|
|
9038
|
+
|
|
9039
|
+
// node_modules/cli-spinners/index.js
|
|
9040
|
+
var cli_spinners_default = spinners_default;
|
|
9041
|
+
var spinnersList = Object.keys(spinners_default);
|
|
9042
|
+
|
|
9043
|
+
// node_modules/log-symbols/index.js
|
|
9044
|
+
init_esm_shims();
|
|
9045
|
+
|
|
9046
|
+
// node_modules/log-symbols/symbols.js
|
|
9047
|
+
var symbols_exports = {};
|
|
9048
|
+
__export(symbols_exports, {
|
|
9049
|
+
error: () => error,
|
|
9050
|
+
info: () => info,
|
|
9051
|
+
success: () => success,
|
|
9052
|
+
warning: () => warning
|
|
9053
|
+
});
|
|
9054
|
+
init_esm_shims();
|
|
9055
|
+
|
|
9056
|
+
// node_modules/yoctocolors/base.js
|
|
9057
|
+
init_esm_shims();
|
|
9058
|
+
import tty2 from "tty";
|
|
9059
|
+
var hasColors = tty2?.WriteStream?.prototype?.hasColors?.() ?? false;
|
|
9060
|
+
var format = (open, close) => {
|
|
9061
|
+
if (!hasColors) {
|
|
9062
|
+
return (input) => input;
|
|
9063
|
+
}
|
|
9064
|
+
const openCode = `\x1B[${open}m`;
|
|
9065
|
+
const closeCode = `\x1B[${close}m`;
|
|
9066
|
+
return (input) => {
|
|
9067
|
+
const string = input + "";
|
|
9068
|
+
let index = string.indexOf(closeCode);
|
|
9069
|
+
if (index === -1) {
|
|
9070
|
+
return openCode + string + closeCode;
|
|
9071
|
+
}
|
|
9072
|
+
let result = openCode;
|
|
9073
|
+
let lastIndex = 0;
|
|
9074
|
+
const reopenOnNestedClose = close === 22;
|
|
9075
|
+
const replaceCode = (reopenOnNestedClose ? closeCode : "") + openCode;
|
|
9076
|
+
while (index !== -1) {
|
|
9077
|
+
result += string.slice(lastIndex, index) + replaceCode;
|
|
9078
|
+
lastIndex = index + closeCode.length;
|
|
9079
|
+
index = string.indexOf(closeCode, lastIndex);
|
|
9080
|
+
}
|
|
9081
|
+
result += string.slice(lastIndex) + closeCode;
|
|
9082
|
+
return result;
|
|
9083
|
+
};
|
|
9084
|
+
};
|
|
9085
|
+
var reset = format(0, 0);
|
|
9086
|
+
var bold = format(1, 22);
|
|
9087
|
+
var dim = format(2, 22);
|
|
9088
|
+
var italic = format(3, 23);
|
|
9089
|
+
var underline = format(4, 24);
|
|
9090
|
+
var overline = format(53, 55);
|
|
9091
|
+
var inverse = format(7, 27);
|
|
9092
|
+
var hidden = format(8, 28);
|
|
9093
|
+
var strikethrough = format(9, 29);
|
|
9094
|
+
var black = format(30, 39);
|
|
9095
|
+
var red = format(31, 39);
|
|
9096
|
+
var green = format(32, 39);
|
|
9097
|
+
var yellow = format(33, 39);
|
|
9098
|
+
var blue = format(34, 39);
|
|
9099
|
+
var magenta = format(35, 39);
|
|
9100
|
+
var cyan = format(36, 39);
|
|
9101
|
+
var white = format(37, 39);
|
|
9102
|
+
var gray = format(90, 39);
|
|
9103
|
+
var bgBlack = format(40, 49);
|
|
9104
|
+
var bgRed = format(41, 49);
|
|
9105
|
+
var bgGreen = format(42, 49);
|
|
9106
|
+
var bgYellow = format(43, 49);
|
|
9107
|
+
var bgBlue = format(44, 49);
|
|
9108
|
+
var bgMagenta = format(45, 49);
|
|
9109
|
+
var bgCyan = format(46, 49);
|
|
9110
|
+
var bgWhite = format(47, 49);
|
|
9111
|
+
var bgGray = format(100, 49);
|
|
9112
|
+
var redBright = format(91, 39);
|
|
9113
|
+
var greenBright = format(92, 39);
|
|
9114
|
+
var yellowBright = format(93, 39);
|
|
9115
|
+
var blueBright = format(94, 39);
|
|
9116
|
+
var magentaBright = format(95, 39);
|
|
9117
|
+
var cyanBright = format(96, 39);
|
|
9118
|
+
var whiteBright = format(97, 39);
|
|
9119
|
+
var bgRedBright = format(101, 49);
|
|
9120
|
+
var bgGreenBright = format(102, 49);
|
|
9121
|
+
var bgYellowBright = format(103, 49);
|
|
9122
|
+
var bgBlueBright = format(104, 49);
|
|
9123
|
+
var bgMagentaBright = format(105, 49);
|
|
9124
|
+
var bgCyanBright = format(106, 49);
|
|
9125
|
+
var bgWhiteBright = format(107, 49);
|
|
9126
|
+
|
|
9127
|
+
// node_modules/is-unicode-supported/index.js
|
|
9128
|
+
init_esm_shims();
|
|
9129
|
+
import process6 from "process";
|
|
9130
|
+
function isUnicodeSupported() {
|
|
9131
|
+
const { env: env2 } = process6;
|
|
9132
|
+
const { TERM, TERM_PROGRAM } = env2;
|
|
9133
|
+
if (process6.platform !== "win32") {
|
|
9134
|
+
return TERM !== "linux";
|
|
9135
|
+
}
|
|
9136
|
+
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";
|
|
9137
|
+
}
|
|
9138
|
+
|
|
9139
|
+
// node_modules/log-symbols/symbols.js
|
|
9140
|
+
var _isUnicodeSupported = isUnicodeSupported();
|
|
9141
|
+
var info = blue(_isUnicodeSupported ? "\u2139" : "i");
|
|
9142
|
+
var success = green(_isUnicodeSupported ? "\u2714" : "\u221A");
|
|
9143
|
+
var warning = yellow(_isUnicodeSupported ? "\u26A0" : "\u203C");
|
|
9144
|
+
var error = red(_isUnicodeSupported ? "\u2716" : "\xD7");
|
|
9145
|
+
|
|
9146
|
+
// node_modules/string-width/index.js
|
|
9147
|
+
init_esm_shims();
|
|
9148
|
+
|
|
9149
|
+
// node_modules/strip-ansi/index.js
|
|
9150
|
+
init_esm_shims();
|
|
9151
|
+
|
|
9152
|
+
// node_modules/ansi-regex/index.js
|
|
9153
|
+
init_esm_shims();
|
|
9154
|
+
function ansiRegex({ onlyFirst = false } = {}) {
|
|
9155
|
+
const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
|
|
9156
|
+
const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
|
|
9157
|
+
const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
|
|
9158
|
+
const pattern = `${osc}|${csi}`;
|
|
9159
|
+
return new RegExp(pattern, onlyFirst ? void 0 : "g");
|
|
9160
|
+
}
|
|
9161
|
+
|
|
9162
|
+
// node_modules/strip-ansi/index.js
|
|
9163
|
+
var regex = ansiRegex();
|
|
9164
|
+
function stripAnsi(string) {
|
|
9165
|
+
if (typeof string !== "string") {
|
|
9166
|
+
throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
|
|
9167
|
+
}
|
|
9168
|
+
return string.replace(regex, "");
|
|
9169
|
+
}
|
|
9170
|
+
|
|
9171
|
+
// node_modules/get-east-asian-width/index.js
|
|
9172
|
+
init_esm_shims();
|
|
9173
|
+
|
|
9174
|
+
// node_modules/get-east-asian-width/lookup.js
|
|
9175
|
+
init_esm_shims();
|
|
9176
|
+
|
|
9177
|
+
// node_modules/get-east-asian-width/lookup-data.js
|
|
9178
|
+
init_esm_shims();
|
|
9179
|
+
var ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
|
|
9180
|
+
var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
|
|
9181
|
+
var halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];
|
|
9182
|
+
var narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];
|
|
9183
|
+
var wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
|
|
9184
|
+
|
|
9185
|
+
// node_modules/get-east-asian-width/utilities.js
|
|
9186
|
+
init_esm_shims();
|
|
9187
|
+
var isInRange = (ranges, codePoint) => {
|
|
9188
|
+
let low = 0;
|
|
9189
|
+
let high = Math.floor(ranges.length / 2) - 1;
|
|
9190
|
+
while (low <= high) {
|
|
9191
|
+
const mid = Math.floor((low + high) / 2);
|
|
9192
|
+
const i = mid * 2;
|
|
9193
|
+
if (codePoint < ranges[i]) {
|
|
9194
|
+
high = mid - 1;
|
|
9195
|
+
} else if (codePoint > ranges[i + 1]) {
|
|
9196
|
+
low = mid + 1;
|
|
9197
|
+
} else {
|
|
9198
|
+
return true;
|
|
9199
|
+
}
|
|
9200
|
+
}
|
|
9201
|
+
return false;
|
|
9202
|
+
};
|
|
9203
|
+
|
|
9204
|
+
// node_modules/get-east-asian-width/lookup.js
|
|
9205
|
+
var minimumAmbiguousCodePoint = ambiguousRanges[0];
|
|
9206
|
+
var maximumAmbiguousCodePoint = ambiguousRanges.at(-1);
|
|
9207
|
+
var minimumFullWidthCodePoint = fullwidthRanges[0];
|
|
9208
|
+
var maximumFullWidthCodePoint = fullwidthRanges.at(-1);
|
|
9209
|
+
var minimumHalfWidthCodePoint = halfwidthRanges[0];
|
|
9210
|
+
var maximumHalfWidthCodePoint = halfwidthRanges.at(-1);
|
|
9211
|
+
var minimumNarrowCodePoint = narrowRanges[0];
|
|
9212
|
+
var maximumNarrowCodePoint = narrowRanges.at(-1);
|
|
9213
|
+
var minimumWideCodePoint = wideRanges[0];
|
|
9214
|
+
var maximumWideCodePoint = wideRanges.at(-1);
|
|
9215
|
+
var commonCjkCodePoint = 19968;
|
|
9216
|
+
var [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);
|
|
9217
|
+
function findWideFastPathRange(ranges) {
|
|
9218
|
+
let fastPathStart = ranges[0];
|
|
9219
|
+
let fastPathEnd = ranges[1];
|
|
9220
|
+
for (let index = 0; index < ranges.length; index += 2) {
|
|
9221
|
+
const start = ranges[index];
|
|
9222
|
+
const end = ranges[index + 1];
|
|
9223
|
+
if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
|
|
9224
|
+
return [start, end];
|
|
9225
|
+
}
|
|
9226
|
+
if (end - start > fastPathEnd - fastPathStart) {
|
|
9227
|
+
fastPathStart = start;
|
|
9228
|
+
fastPathEnd = end;
|
|
9229
|
+
}
|
|
9230
|
+
}
|
|
9231
|
+
return [fastPathStart, fastPathEnd];
|
|
9232
|
+
}
|
|
9233
|
+
var isAmbiguous = (codePoint) => {
|
|
9234
|
+
if (codePoint < minimumAmbiguousCodePoint || codePoint > maximumAmbiguousCodePoint) {
|
|
9235
|
+
return false;
|
|
9236
|
+
}
|
|
9237
|
+
return isInRange(ambiguousRanges, codePoint);
|
|
9238
|
+
};
|
|
9239
|
+
var isFullWidth = (codePoint) => {
|
|
9240
|
+
if (codePoint < minimumFullWidthCodePoint || codePoint > maximumFullWidthCodePoint) {
|
|
9241
|
+
return false;
|
|
9242
|
+
}
|
|
9243
|
+
return isInRange(fullwidthRanges, codePoint);
|
|
9244
|
+
};
|
|
9245
|
+
var isWide = (codePoint) => {
|
|
9246
|
+
if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
|
|
9247
|
+
return true;
|
|
9248
|
+
}
|
|
9249
|
+
if (codePoint < minimumWideCodePoint || codePoint > maximumWideCodePoint) {
|
|
9250
|
+
return false;
|
|
9251
|
+
}
|
|
9252
|
+
return isInRange(wideRanges, codePoint);
|
|
9253
|
+
};
|
|
9254
|
+
|
|
9255
|
+
// node_modules/get-east-asian-width/index.js
|
|
9256
|
+
function validate(codePoint) {
|
|
9257
|
+
if (!Number.isSafeInteger(codePoint)) {
|
|
9258
|
+
throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
|
|
9259
|
+
}
|
|
9260
|
+
}
|
|
9261
|
+
function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
|
|
9262
|
+
validate(codePoint);
|
|
9263
|
+
if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
|
|
9264
|
+
return 2;
|
|
9265
|
+
}
|
|
9266
|
+
return 1;
|
|
9267
|
+
}
|
|
9268
|
+
|
|
9269
|
+
// node_modules/string-width/index.js
|
|
9270
|
+
var segmenter = new Intl.Segmenter();
|
|
9271
|
+
var zeroWidthClusterRegex = new RegExp("^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Mark}|\\p{Surrogate})+$", "v");
|
|
9272
|
+
var leadingNonPrintingRegex = new RegExp("^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Mark}\\p{Surrogate}]+", "v");
|
|
9273
|
+
var rgiEmojiRegex = new RegExp("^\\p{RGI_Emoji}$", "v");
|
|
9274
|
+
var unqualifiedKeycapRegex = /^[\d#*]\u20E3$/;
|
|
9275
|
+
var extendedPictographicRegex = /\p{Extended_Pictographic}/gu;
|
|
9276
|
+
function isDoubleWidthNonRgiEmojiSequence(segment) {
|
|
9277
|
+
if (segment.length > 50) {
|
|
9278
|
+
return false;
|
|
9279
|
+
}
|
|
9280
|
+
if (unqualifiedKeycapRegex.test(segment)) {
|
|
9281
|
+
return true;
|
|
9282
|
+
}
|
|
9283
|
+
if (segment.includes("\u200D")) {
|
|
9284
|
+
const pictographics = segment.match(extendedPictographicRegex);
|
|
9285
|
+
return pictographics !== null && pictographics.length >= 2;
|
|
9286
|
+
}
|
|
9287
|
+
return false;
|
|
9288
|
+
}
|
|
9289
|
+
function baseVisible(segment) {
|
|
9290
|
+
return segment.replace(leadingNonPrintingRegex, "");
|
|
9291
|
+
}
|
|
9292
|
+
function isZeroWidthCluster(segment) {
|
|
9293
|
+
return zeroWidthClusterRegex.test(segment);
|
|
9294
|
+
}
|
|
9295
|
+
function trailingHalfwidthWidth(segment, eastAsianWidthOptions) {
|
|
9296
|
+
let extra = 0;
|
|
9297
|
+
if (segment.length > 1) {
|
|
9298
|
+
for (const char of segment.slice(1)) {
|
|
9299
|
+
if (char >= "\uFF00" && char <= "\uFFEF") {
|
|
9300
|
+
extra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);
|
|
9301
|
+
}
|
|
9302
|
+
}
|
|
9303
|
+
}
|
|
9304
|
+
return extra;
|
|
9305
|
+
}
|
|
9306
|
+
function stringWidth(input, options2 = {}) {
|
|
9307
|
+
if (typeof input !== "string" || input.length === 0) {
|
|
9308
|
+
return 0;
|
|
9309
|
+
}
|
|
9310
|
+
const {
|
|
9311
|
+
ambiguousIsNarrow = true,
|
|
9312
|
+
countAnsiEscapeCodes = false
|
|
9313
|
+
} = options2;
|
|
9314
|
+
let string = input;
|
|
9315
|
+
if (!countAnsiEscapeCodes && (string.includes("\x1B") || string.includes("\x9B"))) {
|
|
9316
|
+
string = stripAnsi(string);
|
|
9317
|
+
}
|
|
9318
|
+
if (string.length === 0) {
|
|
9319
|
+
return 0;
|
|
9320
|
+
}
|
|
9321
|
+
if (/^[\u0020-\u007E]*$/.test(string)) {
|
|
9322
|
+
return string.length;
|
|
9323
|
+
}
|
|
9324
|
+
let width = 0;
|
|
9325
|
+
const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
|
|
9326
|
+
for (const { segment } of segmenter.segment(string)) {
|
|
9327
|
+
if (isZeroWidthCluster(segment)) {
|
|
9328
|
+
continue;
|
|
9329
|
+
}
|
|
9330
|
+
if (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {
|
|
9331
|
+
width += 2;
|
|
9332
|
+
continue;
|
|
9333
|
+
}
|
|
9334
|
+
const codePoint = baseVisible(segment).codePointAt(0);
|
|
9335
|
+
width += eastAsianWidth(codePoint, eastAsianWidthOptions);
|
|
9336
|
+
width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
|
|
9337
|
+
}
|
|
9338
|
+
return width;
|
|
9339
|
+
}
|
|
9340
|
+
|
|
9341
|
+
// node_modules/is-interactive/index.js
|
|
9342
|
+
init_esm_shims();
|
|
9343
|
+
function isInteractive({ stream = process.stdout } = {}) {
|
|
9344
|
+
return Boolean(
|
|
9345
|
+
stream && stream.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env)
|
|
9346
|
+
);
|
|
9347
|
+
}
|
|
9348
|
+
|
|
9349
|
+
// node_modules/stdin-discarder/index.js
|
|
9350
|
+
init_esm_shims();
|
|
9351
|
+
import process7 from "process";
|
|
9352
|
+
var ASCII_ETX_CODE = 3;
|
|
9353
|
+
var StdinDiscarder = class {
|
|
9354
|
+
#activeCount = 0;
|
|
9355
|
+
#stdin;
|
|
9356
|
+
#stdinWasPaused = false;
|
|
9357
|
+
#stdinWasRaw = false;
|
|
9358
|
+
#handleInputBound = (chunk) => {
|
|
9359
|
+
if (!chunk?.length) {
|
|
9360
|
+
return;
|
|
9361
|
+
}
|
|
9362
|
+
const code = typeof chunk === "string" ? chunk.codePointAt(0) : chunk[0];
|
|
9363
|
+
if (code === ASCII_ETX_CODE) {
|
|
9364
|
+
if (process7.listenerCount("SIGINT") > 0) {
|
|
9365
|
+
process7.emit("SIGINT");
|
|
9366
|
+
} else {
|
|
9367
|
+
process7.kill(process7.pid, "SIGINT");
|
|
9368
|
+
}
|
|
9369
|
+
}
|
|
9370
|
+
};
|
|
9371
|
+
start() {
|
|
9372
|
+
this.#activeCount++;
|
|
9373
|
+
if (this.#activeCount === 1) {
|
|
9374
|
+
this.#realStart();
|
|
9375
|
+
}
|
|
9376
|
+
}
|
|
9377
|
+
stop() {
|
|
9378
|
+
if (this.#activeCount === 0) {
|
|
9379
|
+
return;
|
|
9380
|
+
}
|
|
9381
|
+
if (--this.#activeCount === 0) {
|
|
9382
|
+
this.#realStop();
|
|
9383
|
+
}
|
|
9384
|
+
}
|
|
9385
|
+
#realStart() {
|
|
9386
|
+
const { stdin } = process7;
|
|
9387
|
+
if (process7.platform === "win32" || !stdin?.isTTY || typeof stdin.setRawMode !== "function") {
|
|
9388
|
+
this.#stdin = void 0;
|
|
9389
|
+
return;
|
|
9390
|
+
}
|
|
9391
|
+
this.#stdin = stdin;
|
|
9392
|
+
this.#stdinWasPaused = stdin.isPaused();
|
|
9393
|
+
this.#stdinWasRaw = Boolean(stdin.isRaw);
|
|
9394
|
+
stdin.setRawMode(true);
|
|
9395
|
+
stdin.prependListener("data", this.#handleInputBound);
|
|
9396
|
+
if (this.#stdinWasPaused) {
|
|
9397
|
+
stdin.resume();
|
|
9398
|
+
}
|
|
9399
|
+
}
|
|
9400
|
+
#realStop() {
|
|
9401
|
+
if (!this.#stdin) {
|
|
9402
|
+
return;
|
|
9403
|
+
}
|
|
9404
|
+
const stdin = this.#stdin;
|
|
9405
|
+
stdin.off("data", this.#handleInputBound);
|
|
9406
|
+
if (stdin.isTTY) {
|
|
9407
|
+
stdin.setRawMode?.(this.#stdinWasRaw);
|
|
9408
|
+
}
|
|
9409
|
+
if (this.#stdinWasPaused) {
|
|
9410
|
+
stdin.pause();
|
|
9411
|
+
}
|
|
9412
|
+
this.#stdin = void 0;
|
|
9413
|
+
this.#stdinWasPaused = false;
|
|
9414
|
+
this.#stdinWasRaw = false;
|
|
9415
|
+
}
|
|
9416
|
+
};
|
|
9417
|
+
var stdinDiscarder = new StdinDiscarder();
|
|
9418
|
+
var stdin_discarder_default = Object.freeze(stdinDiscarder);
|
|
9419
|
+
|
|
9420
|
+
// node_modules/ora/index.js
|
|
9421
|
+
var RENDER_DEFERRAL_TIMEOUT = 200;
|
|
9422
|
+
var SYNCHRONIZED_OUTPUT_ENABLE = "\x1B[?2026h";
|
|
9423
|
+
var SYNCHRONIZED_OUTPUT_DISABLE = "\x1B[?2026l";
|
|
9424
|
+
var activeHooksPerStream = /* @__PURE__ */ new Map();
|
|
9425
|
+
var Ora = class {
|
|
9426
|
+
#linesToClear = 0;
|
|
9427
|
+
#frameIndex = -1;
|
|
9428
|
+
#lastFrameTime = 0;
|
|
9429
|
+
#options;
|
|
9430
|
+
#spinner;
|
|
9431
|
+
#stream;
|
|
9432
|
+
#id;
|
|
9433
|
+
#hookedStreams = /* @__PURE__ */ new Map();
|
|
9434
|
+
#isInternalWrite = false;
|
|
9435
|
+
#drainHandler;
|
|
9436
|
+
#deferRenderTimer;
|
|
9437
|
+
#isDiscardingStdin = false;
|
|
9438
|
+
color;
|
|
9439
|
+
// Helper to execute writes while preventing hook recursion
|
|
9440
|
+
#internalWrite(fn) {
|
|
9441
|
+
this.#isInternalWrite = true;
|
|
9442
|
+
try {
|
|
9443
|
+
return fn();
|
|
9444
|
+
} finally {
|
|
9445
|
+
this.#isInternalWrite = false;
|
|
9446
|
+
}
|
|
9447
|
+
}
|
|
9448
|
+
// Helper to render if still spinning
|
|
9449
|
+
#tryRender() {
|
|
9450
|
+
if (this.isSpinning) {
|
|
9451
|
+
this.render();
|
|
9452
|
+
}
|
|
9453
|
+
}
|
|
9454
|
+
#stringifyChunk(chunk, encoding) {
|
|
9455
|
+
if (chunk === void 0 || chunk === null) {
|
|
9456
|
+
return "";
|
|
9457
|
+
}
|
|
9458
|
+
if (typeof chunk === "string") {
|
|
9459
|
+
return chunk;
|
|
9460
|
+
}
|
|
9461
|
+
if (Buffer.isBuffer(chunk) || ArrayBuffer.isView(chunk)) {
|
|
9462
|
+
const normalizedEncoding = typeof encoding === "string" && encoding && encoding !== "buffer" ? encoding : "utf8";
|
|
9463
|
+
return Buffer.from(chunk).toString(normalizedEncoding);
|
|
9464
|
+
}
|
|
9465
|
+
return String(chunk);
|
|
9466
|
+
}
|
|
9467
|
+
#chunkTerminatesLine(chunkString) {
|
|
9468
|
+
if (!chunkString) {
|
|
9469
|
+
return false;
|
|
9470
|
+
}
|
|
9471
|
+
const lastCharacter = chunkString.at(-1);
|
|
9472
|
+
return lastCharacter === "\n" || lastCharacter === "\r";
|
|
9473
|
+
}
|
|
9474
|
+
#scheduleRenderDeferral() {
|
|
9475
|
+
if (this.#deferRenderTimer) {
|
|
9476
|
+
return;
|
|
9477
|
+
}
|
|
9478
|
+
this.#deferRenderTimer = setTimeout(() => {
|
|
9479
|
+
this.#deferRenderTimer = void 0;
|
|
9480
|
+
if (this.isSpinning) {
|
|
9481
|
+
this.#tryRender();
|
|
9482
|
+
}
|
|
9483
|
+
}, RENDER_DEFERRAL_TIMEOUT);
|
|
9484
|
+
if (typeof this.#deferRenderTimer?.unref === "function") {
|
|
9485
|
+
this.#deferRenderTimer.unref();
|
|
9486
|
+
}
|
|
9487
|
+
}
|
|
9488
|
+
#clearRenderDeferral() {
|
|
9489
|
+
if (this.#deferRenderTimer) {
|
|
9490
|
+
clearTimeout(this.#deferRenderTimer);
|
|
9491
|
+
this.#deferRenderTimer = void 0;
|
|
9492
|
+
}
|
|
9493
|
+
}
|
|
9494
|
+
// Helper to build complete line with symbol, text, prefix, and suffix
|
|
9495
|
+
#buildOutputLine(symbol, text, prefixText, suffixText) {
|
|
9496
|
+
const fullPrefixText = this.#getFullPrefixText(prefixText, " ");
|
|
9497
|
+
const separatorText = symbol ? " " : "";
|
|
9498
|
+
const fullText = typeof text === "string" ? separatorText + text : "";
|
|
9499
|
+
const fullSuffixText = this.#getFullSuffixText(suffixText, " ");
|
|
9500
|
+
return fullPrefixText + symbol + fullText + fullSuffixText;
|
|
9501
|
+
}
|
|
9502
|
+
constructor(options2) {
|
|
9503
|
+
if (typeof options2 === "string") {
|
|
9504
|
+
options2 = {
|
|
9505
|
+
text: options2
|
|
9506
|
+
};
|
|
9507
|
+
}
|
|
9508
|
+
this.#options = {
|
|
9509
|
+
color: "cyan",
|
|
9510
|
+
stream: process8.stderr,
|
|
9511
|
+
discardStdin: true,
|
|
9512
|
+
hideCursor: true,
|
|
9513
|
+
...options2
|
|
9514
|
+
};
|
|
9515
|
+
this.color = this.#options.color;
|
|
9516
|
+
this.#stream = this.#options.stream;
|
|
9517
|
+
if (typeof this.#options.isEnabled !== "boolean") {
|
|
9518
|
+
this.#options.isEnabled = isInteractive({ stream: this.#stream });
|
|
9519
|
+
}
|
|
9520
|
+
if (typeof this.#options.isSilent !== "boolean") {
|
|
9521
|
+
this.#options.isSilent = false;
|
|
9522
|
+
}
|
|
9523
|
+
const userInterval = this.#options.interval;
|
|
9524
|
+
this.spinner = this.#options.spinner;
|
|
9525
|
+
this.#options.interval = userInterval;
|
|
9526
|
+
this.text = this.#options.text;
|
|
9527
|
+
this.prefixText = this.#options.prefixText;
|
|
9528
|
+
this.suffixText = this.#options.suffixText;
|
|
9529
|
+
this.indent = this.#options.indent;
|
|
9530
|
+
if (process8.env.NODE_ENV === "test") {
|
|
9531
|
+
this._stream = this.#stream;
|
|
9532
|
+
this._isEnabled = this.#options.isEnabled;
|
|
9533
|
+
Object.defineProperty(this, "_linesToClear", {
|
|
9534
|
+
get() {
|
|
9535
|
+
return this.#linesToClear;
|
|
9536
|
+
},
|
|
9537
|
+
set(newValue) {
|
|
9538
|
+
this.#linesToClear = newValue;
|
|
9539
|
+
}
|
|
9540
|
+
});
|
|
9541
|
+
Object.defineProperty(this, "_frameIndex", {
|
|
9542
|
+
get() {
|
|
9543
|
+
return this.#frameIndex;
|
|
9544
|
+
}
|
|
9545
|
+
});
|
|
9546
|
+
Object.defineProperty(this, "_lineCount", {
|
|
9547
|
+
get() {
|
|
9548
|
+
const columns = this.#stream.columns ?? 80;
|
|
9549
|
+
const prefixText = typeof this.#options.prefixText === "function" ? "" : this.#options.prefixText;
|
|
9550
|
+
const suffixText = typeof this.#options.suffixText === "function" ? "" : this.#options.suffixText;
|
|
9551
|
+
const fullPrefixText = typeof prefixText === "string" && prefixText !== "" ? prefixText + " " : "";
|
|
9552
|
+
const fullSuffixText = typeof suffixText === "string" && suffixText !== "" ? " " + suffixText : "";
|
|
9553
|
+
const spinnerChar = "-";
|
|
9554
|
+
const fullText = " ".repeat(this.#options.indent) + fullPrefixText + spinnerChar + (typeof this.#options.text === "string" ? " " + this.#options.text : "") + fullSuffixText;
|
|
9555
|
+
return this.#computeLineCountFrom(fullText, columns);
|
|
9556
|
+
}
|
|
9557
|
+
});
|
|
9558
|
+
}
|
|
9559
|
+
}
|
|
9560
|
+
get indent() {
|
|
9561
|
+
return this.#options.indent;
|
|
9562
|
+
}
|
|
9563
|
+
set indent(indent = 0) {
|
|
9564
|
+
if (!(indent >= 0 && Number.isInteger(indent))) {
|
|
9565
|
+
throw new Error("The `indent` option must be an integer from 0 and up");
|
|
9566
|
+
}
|
|
9567
|
+
this.#options.indent = indent;
|
|
9568
|
+
}
|
|
9569
|
+
get interval() {
|
|
9570
|
+
return this.#options.interval ?? this.#spinner.interval ?? 100;
|
|
9571
|
+
}
|
|
9572
|
+
get spinner() {
|
|
9573
|
+
return this.#spinner;
|
|
9574
|
+
}
|
|
9575
|
+
set spinner(spinner) {
|
|
9576
|
+
this.#frameIndex = -1;
|
|
9577
|
+
this.#options.interval = void 0;
|
|
9578
|
+
if (typeof spinner === "object") {
|
|
9579
|
+
if (!Array.isArray(spinner.frames) || spinner.frames.length === 0 || spinner.frames.some((frame) => typeof frame !== "string")) {
|
|
9580
|
+
throw new Error("The given spinner must have a non-empty `frames` array of strings");
|
|
9581
|
+
}
|
|
9582
|
+
if (spinner.interval !== void 0 && !(Number.isInteger(spinner.interval) && spinner.interval > 0)) {
|
|
9583
|
+
throw new Error("`spinner.interval` must be a positive integer if provided");
|
|
9584
|
+
}
|
|
9585
|
+
this.#spinner = spinner;
|
|
9586
|
+
} else if (!isUnicodeSupported()) {
|
|
9587
|
+
this.#spinner = cli_spinners_default.line;
|
|
9588
|
+
} else if (spinner === void 0) {
|
|
9589
|
+
this.#spinner = cli_spinners_default.dots;
|
|
9590
|
+
} else if (spinner !== "default" && cli_spinners_default[spinner]) {
|
|
9591
|
+
this.#spinner = cli_spinners_default[spinner];
|
|
9592
|
+
} else {
|
|
9593
|
+
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.`);
|
|
9594
|
+
}
|
|
9595
|
+
}
|
|
9596
|
+
get text() {
|
|
9597
|
+
return this.#options.text;
|
|
9598
|
+
}
|
|
9599
|
+
set text(value = "") {
|
|
9600
|
+
this.#options.text = value;
|
|
9601
|
+
}
|
|
9602
|
+
get prefixText() {
|
|
9603
|
+
return this.#options.prefixText;
|
|
9604
|
+
}
|
|
9605
|
+
set prefixText(value = "") {
|
|
9606
|
+
this.#options.prefixText = value;
|
|
9607
|
+
}
|
|
9608
|
+
get suffixText() {
|
|
9609
|
+
return this.#options.suffixText;
|
|
9610
|
+
}
|
|
9611
|
+
set suffixText(value = "") {
|
|
9612
|
+
this.#options.suffixText = value;
|
|
9613
|
+
}
|
|
9614
|
+
get isSpinning() {
|
|
9615
|
+
return this.#id !== void 0;
|
|
9616
|
+
}
|
|
9617
|
+
#formatAffix(value, separator, placeBefore = false) {
|
|
9618
|
+
const resolved = typeof value === "function" ? value() : value;
|
|
9619
|
+
if (typeof resolved === "string" && resolved !== "") {
|
|
9620
|
+
return placeBefore ? separator + resolved : resolved + separator;
|
|
9621
|
+
}
|
|
9622
|
+
return "";
|
|
9623
|
+
}
|
|
9624
|
+
#getFullPrefixText(prefixText = this.#options.prefixText, postfix = " ") {
|
|
9625
|
+
return this.#formatAffix(prefixText, postfix, false);
|
|
9626
|
+
}
|
|
9627
|
+
#getFullSuffixText(suffixText = this.#options.suffixText, prefix = " ") {
|
|
9628
|
+
return this.#formatAffix(suffixText, prefix, true);
|
|
9629
|
+
}
|
|
9630
|
+
#computeLineCountFrom(text, columns) {
|
|
9631
|
+
let count = 0;
|
|
9632
|
+
for (const line of stripVTControlCharacters(text).split("\n")) {
|
|
9633
|
+
count += Math.max(1, Math.ceil(stringWidth(line) / columns));
|
|
9634
|
+
}
|
|
9635
|
+
return count;
|
|
9636
|
+
}
|
|
9637
|
+
get isEnabled() {
|
|
9638
|
+
return this.#options.isEnabled && !this.#options.isSilent;
|
|
9639
|
+
}
|
|
9640
|
+
set isEnabled(value) {
|
|
9641
|
+
if (typeof value !== "boolean") {
|
|
9642
|
+
throw new TypeError("The `isEnabled` option must be a boolean");
|
|
9643
|
+
}
|
|
9644
|
+
this.#options.isEnabled = value;
|
|
9645
|
+
}
|
|
9646
|
+
get isSilent() {
|
|
9647
|
+
return this.#options.isSilent;
|
|
9648
|
+
}
|
|
9649
|
+
set isSilent(value) {
|
|
9650
|
+
if (typeof value !== "boolean") {
|
|
9651
|
+
throw new TypeError("The `isSilent` option must be a boolean");
|
|
9652
|
+
}
|
|
9653
|
+
this.#options.isSilent = value;
|
|
9654
|
+
}
|
|
9655
|
+
frame() {
|
|
9656
|
+
const now = Date.now();
|
|
9657
|
+
if (this.#frameIndex === -1 || now - this.#lastFrameTime >= this.interval) {
|
|
9658
|
+
this.#frameIndex = (this.#frameIndex + 1) % this.#spinner.frames.length;
|
|
9659
|
+
this.#lastFrameTime = now;
|
|
9660
|
+
}
|
|
9661
|
+
const { frames } = this.#spinner;
|
|
9662
|
+
let frame = frames[this.#frameIndex];
|
|
9663
|
+
if (this.color) {
|
|
9664
|
+
frame = source_default[this.color](frame);
|
|
9665
|
+
}
|
|
9666
|
+
const fullPrefixText = this.#getFullPrefixText(this.#options.prefixText, " ");
|
|
9667
|
+
const fullText = typeof this.text === "string" ? " " + this.text : "";
|
|
9668
|
+
const fullSuffixText = this.#getFullSuffixText(this.#options.suffixText, " ");
|
|
9669
|
+
return fullPrefixText + frame + fullText + fullSuffixText;
|
|
9670
|
+
}
|
|
9671
|
+
clear() {
|
|
9672
|
+
if (!this.isEnabled || !this.#stream.isTTY) {
|
|
9673
|
+
return this;
|
|
9674
|
+
}
|
|
9675
|
+
this.#internalWrite(() => {
|
|
9676
|
+
this.#stream.cursorTo(0);
|
|
9677
|
+
for (let index = 0; index < this.#linesToClear; index++) {
|
|
9678
|
+
if (index > 0) {
|
|
9679
|
+
this.#stream.moveCursor(0, -1);
|
|
9680
|
+
}
|
|
9681
|
+
this.#stream.clearLine(1);
|
|
9682
|
+
}
|
|
9683
|
+
if (this.#options.indent) {
|
|
9684
|
+
this.#stream.cursorTo(this.#options.indent);
|
|
9685
|
+
}
|
|
9686
|
+
});
|
|
9687
|
+
this.#linesToClear = 0;
|
|
9688
|
+
return this;
|
|
9689
|
+
}
|
|
9690
|
+
// Helper to hook a single stream
|
|
9691
|
+
#hookStream(stream) {
|
|
9692
|
+
if (!stream || this.#hookedStreams.has(stream) || !stream.isTTY || typeof stream.write !== "function") {
|
|
9693
|
+
return;
|
|
9694
|
+
}
|
|
9695
|
+
if (activeHooksPerStream.has(stream)) {
|
|
9696
|
+
console.warn("[ora] Multiple concurrent spinners detected. This may cause visual corruption. Use one spinner at a time.");
|
|
9697
|
+
}
|
|
9698
|
+
const originalWrite = stream.write;
|
|
9699
|
+
this.#hookedStreams.set(stream, originalWrite);
|
|
9700
|
+
activeHooksPerStream.set(stream, this);
|
|
9701
|
+
stream.write = (chunk, encoding, callback) => this.#hookedWrite(stream, originalWrite, chunk, encoding, callback);
|
|
9702
|
+
}
|
|
9703
|
+
/**
|
|
9704
|
+
Intercept stream writes while spinner is active to handle external writes cleanly without visual corruption.
|
|
9705
|
+
Hooks process stdio streams and the active spinner stream so console.log(), console.error(), and direct writes stay tidy.
|
|
9706
|
+
*/
|
|
9707
|
+
#installHook() {
|
|
9708
|
+
if (!this.isEnabled || this.#hookedStreams.size > 0) {
|
|
9709
|
+
return;
|
|
9710
|
+
}
|
|
9711
|
+
const streamsToHook = /* @__PURE__ */ new Set([this.#stream, process8.stdout, process8.stderr]);
|
|
9712
|
+
for (const stream of streamsToHook) {
|
|
9713
|
+
this.#hookStream(stream);
|
|
9714
|
+
}
|
|
9715
|
+
}
|
|
9716
|
+
#uninstallHook() {
|
|
9717
|
+
for (const [stream, originalWrite] of this.#hookedStreams) {
|
|
9718
|
+
stream.write = originalWrite;
|
|
9719
|
+
if (activeHooksPerStream.get(stream) === this) {
|
|
9720
|
+
activeHooksPerStream.delete(stream);
|
|
9721
|
+
}
|
|
9722
|
+
}
|
|
9723
|
+
this.#hookedStreams.clear();
|
|
9724
|
+
}
|
|
9725
|
+
// eslint-disable-next-line max-params -- Need stream and originalWrite for multi-stream support
|
|
9726
|
+
#hookedWrite(stream, originalWrite, chunk, encoding, callback) {
|
|
9727
|
+
if (typeof encoding === "function") {
|
|
9728
|
+
callback = encoding;
|
|
9729
|
+
encoding = void 0;
|
|
9730
|
+
}
|
|
9731
|
+
if (this.#isInternalWrite) {
|
|
9732
|
+
return originalWrite.call(stream, chunk, encoding, callback);
|
|
9733
|
+
}
|
|
9734
|
+
this.clear();
|
|
9735
|
+
const chunkString = this.#stringifyChunk(chunk, encoding);
|
|
9736
|
+
const chunkTerminatesLine = this.#chunkTerminatesLine(chunkString);
|
|
9737
|
+
const writeResult = originalWrite.call(stream, chunk, encoding, callback);
|
|
9738
|
+
if (chunkTerminatesLine) {
|
|
9739
|
+
this.#clearRenderDeferral();
|
|
9740
|
+
} else if (chunkString.length > 0) {
|
|
9741
|
+
this.#scheduleRenderDeferral();
|
|
9742
|
+
}
|
|
9743
|
+
if (this.isSpinning && !this.#deferRenderTimer) {
|
|
9744
|
+
this.render();
|
|
9745
|
+
}
|
|
9746
|
+
return writeResult;
|
|
9747
|
+
}
|
|
9748
|
+
render() {
|
|
9749
|
+
if (!this.isEnabled || this.#drainHandler || this.#deferRenderTimer) {
|
|
9750
|
+
return this;
|
|
9751
|
+
}
|
|
9752
|
+
const useSynchronizedOutput = this.#stream.isTTY;
|
|
9753
|
+
let shouldDisableSynchronizedOutput = false;
|
|
9754
|
+
try {
|
|
9755
|
+
if (useSynchronizedOutput) {
|
|
9756
|
+
this.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_ENABLE));
|
|
9757
|
+
shouldDisableSynchronizedOutput = true;
|
|
9758
|
+
}
|
|
9759
|
+
this.clear();
|
|
9760
|
+
let frameContent = this.frame();
|
|
9761
|
+
const columns = this.#stream.columns ?? 80;
|
|
9762
|
+
const actualLineCount = this.#computeLineCountFrom(frameContent, columns);
|
|
9763
|
+
const consoleHeight = this.#stream.rows;
|
|
9764
|
+
if (consoleHeight && consoleHeight > 1 && actualLineCount > consoleHeight) {
|
|
9765
|
+
const lines = frameContent.split("\n");
|
|
9766
|
+
const maxLines = consoleHeight - 1;
|
|
9767
|
+
frameContent = [...lines.slice(0, maxLines), "... (content truncated to fit terminal)"].join("\n");
|
|
9768
|
+
}
|
|
9769
|
+
const canContinue = this.#internalWrite(() => this.#stream.write(frameContent));
|
|
9770
|
+
if (canContinue === false && this.#stream.isTTY) {
|
|
9771
|
+
this.#drainHandler = () => {
|
|
9772
|
+
this.#drainHandler = void 0;
|
|
9773
|
+
this.#tryRender();
|
|
9774
|
+
};
|
|
9775
|
+
this.#stream.once("drain", this.#drainHandler);
|
|
9776
|
+
}
|
|
9777
|
+
this.#linesToClear = this.#computeLineCountFrom(frameContent, columns);
|
|
9778
|
+
} finally {
|
|
9779
|
+
if (shouldDisableSynchronizedOutput) {
|
|
9780
|
+
this.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_DISABLE));
|
|
9781
|
+
}
|
|
9782
|
+
}
|
|
9783
|
+
return this;
|
|
9784
|
+
}
|
|
9785
|
+
start(text) {
|
|
9786
|
+
if (text) {
|
|
9787
|
+
this.text = text;
|
|
9788
|
+
}
|
|
9789
|
+
if (this.isSilent) {
|
|
9790
|
+
return this;
|
|
9791
|
+
}
|
|
9792
|
+
if (!this.isEnabled) {
|
|
9793
|
+
const symbol = this.text ? "-" : "";
|
|
9794
|
+
const line = " ".repeat(this.#options.indent) + this.#buildOutputLine(symbol, this.text, this.#options.prefixText, this.#options.suffixText);
|
|
9795
|
+
if (line.trim() !== "") {
|
|
9796
|
+
this.#internalWrite(() => this.#stream.write(line + "\n"));
|
|
9797
|
+
}
|
|
9798
|
+
return this;
|
|
9799
|
+
}
|
|
9800
|
+
if (this.isSpinning) {
|
|
9801
|
+
return this;
|
|
9802
|
+
}
|
|
9803
|
+
if (this.#options.hideCursor) {
|
|
9804
|
+
cli_cursor_default.hide(this.#stream);
|
|
9805
|
+
}
|
|
9806
|
+
if (this.#options.discardStdin && process8.stdin.isTTY) {
|
|
9807
|
+
stdin_discarder_default.start();
|
|
9808
|
+
this.#isDiscardingStdin = true;
|
|
9809
|
+
}
|
|
9810
|
+
this.#installHook();
|
|
9811
|
+
this.render();
|
|
9812
|
+
this.#id = setInterval(this.render.bind(this), this.interval);
|
|
9813
|
+
return this;
|
|
9814
|
+
}
|
|
9815
|
+
stop() {
|
|
9816
|
+
clearInterval(this.#id);
|
|
9817
|
+
this.#id = void 0;
|
|
9818
|
+
this.#frameIndex = -1;
|
|
9819
|
+
this.#lastFrameTime = 0;
|
|
9820
|
+
this.#clearRenderDeferral();
|
|
9821
|
+
this.#uninstallHook();
|
|
9822
|
+
if (this.#drainHandler) {
|
|
9823
|
+
this.#stream.removeListener("drain", this.#drainHandler);
|
|
9824
|
+
this.#drainHandler = void 0;
|
|
9825
|
+
}
|
|
9826
|
+
if (this.isEnabled) {
|
|
9827
|
+
this.clear();
|
|
9828
|
+
if (this.#options.hideCursor) {
|
|
9829
|
+
cli_cursor_default.show(this.#stream);
|
|
9830
|
+
}
|
|
9831
|
+
}
|
|
9832
|
+
if (this.#isDiscardingStdin) {
|
|
9833
|
+
this.#isDiscardingStdin = false;
|
|
9834
|
+
stdin_discarder_default.stop();
|
|
9835
|
+
}
|
|
9836
|
+
return this;
|
|
9837
|
+
}
|
|
9838
|
+
succeed(text) {
|
|
9839
|
+
return this.stopAndPersist({ symbol: symbols_exports.success, text });
|
|
9840
|
+
}
|
|
9841
|
+
fail(text) {
|
|
9842
|
+
return this.stopAndPersist({ symbol: symbols_exports.error, text });
|
|
9843
|
+
}
|
|
9844
|
+
warn(text) {
|
|
9845
|
+
return this.stopAndPersist({ symbol: symbols_exports.warning, text });
|
|
9846
|
+
}
|
|
9847
|
+
info(text) {
|
|
9848
|
+
return this.stopAndPersist({ symbol: symbols_exports.info, text });
|
|
9849
|
+
}
|
|
9850
|
+
stopAndPersist(options2 = {}) {
|
|
9851
|
+
if (this.isSilent) {
|
|
9852
|
+
return this;
|
|
9853
|
+
}
|
|
9854
|
+
const symbol = options2.symbol ?? " ";
|
|
9855
|
+
const text = options2.text ?? this.text;
|
|
9856
|
+
const prefixText = options2.prefixText ?? this.#options.prefixText;
|
|
9857
|
+
const suffixText = options2.suffixText ?? this.#options.suffixText;
|
|
9858
|
+
const textToWrite = this.#buildOutputLine(symbol, text, prefixText, suffixText) + "\n";
|
|
9859
|
+
this.stop();
|
|
9860
|
+
this.#internalWrite(() => this.#stream.write(textToWrite));
|
|
9861
|
+
return this;
|
|
9862
|
+
}
|
|
9863
|
+
};
|
|
9864
|
+
function ora(options2) {
|
|
9865
|
+
return new Ora(options2);
|
|
9866
|
+
}
|
|
9867
|
+
|
|
9868
|
+
// src/utils/spinner.ts
|
|
9869
|
+
function createSpinner(text) {
|
|
9870
|
+
return ora({
|
|
9871
|
+
text,
|
|
9872
|
+
spinner: "dots"
|
|
9873
|
+
});
|
|
9874
|
+
}
|
|
9875
|
+
function startSpinner(text) {
|
|
9876
|
+
const spinner = createSpinner(text);
|
|
9877
|
+
spinner.start();
|
|
9878
|
+
return spinner;
|
|
9879
|
+
}
|
|
9880
|
+
function spinnerSuccess(spinner, text) {
|
|
9881
|
+
spinner.succeed(text);
|
|
9882
|
+
}
|
|
9883
|
+
function spinnerFail(spinner, text) {
|
|
9884
|
+
spinner.fail(text);
|
|
9885
|
+
}
|
|
9886
|
+
|
|
9887
|
+
// src/commands/init.ts
|
|
9888
|
+
init_file_system();
|
|
9889
|
+
var DIRECTORY_STRUCTURE = [
|
|
9890
|
+
".claude/agents",
|
|
9891
|
+
".claude/skills",
|
|
9892
|
+
"docs/\u8FED\u4EE3",
|
|
9893
|
+
"docs/Wiki/\u7528\u6237\u6587\u6863",
|
|
9894
|
+
"docs/Wiki/\u5F00\u53D1\u6587\u6863",
|
|
9895
|
+
"docs/Wiki/\u63A5\u53E3\u6587\u6863"
|
|
9896
|
+
];
|
|
9897
|
+
var TECH_STACK_CHOICES = [
|
|
9898
|
+
{ name: "React", value: "React" },
|
|
9899
|
+
{ name: "Vue", value: "Vue" },
|
|
9900
|
+
{ name: "Node.js", value: "Node.js" },
|
|
9901
|
+
{ name: "Python", value: "Python" },
|
|
9902
|
+
{ name: "Other", value: "Other" }
|
|
9903
|
+
];
|
|
9904
|
+
var InitCommand = class {
|
|
9905
|
+
templateManager;
|
|
9906
|
+
configManager;
|
|
9907
|
+
projectPath;
|
|
9908
|
+
verbose;
|
|
9909
|
+
constructor(config = {}) {
|
|
9910
|
+
this.templateManager = new TemplateManager({ verbose: config.verbose });
|
|
9911
|
+
this.configManager = new ConfigManager();
|
|
9912
|
+
this.projectPath = config.projectPath ?? process.cwd();
|
|
9913
|
+
this.verbose = config.verbose ?? false;
|
|
9914
|
+
if (this.verbose) {
|
|
9915
|
+
logger.setVerbose(true);
|
|
9916
|
+
}
|
|
9917
|
+
}
|
|
9918
|
+
/**
|
|
9919
|
+
* 检测是否已存在配置
|
|
9920
|
+
* @returns 如果配置已存在返回 true
|
|
9921
|
+
*/
|
|
9922
|
+
async detectExistingConfig() {
|
|
9923
|
+
const claudeDir = path10.join(this.projectPath, ".claude");
|
|
9924
|
+
const configPath = this.configManager.getConfigPath(this.projectPath);
|
|
9925
|
+
const claudeDirExists = await pathExists(claudeDir);
|
|
9926
|
+
const configFileExists = await fileExists(configPath);
|
|
9927
|
+
return claudeDirExists && configFileExists;
|
|
9928
|
+
}
|
|
9929
|
+
/**
|
|
9930
|
+
* 交互式引导用户输入配置
|
|
9931
|
+
* @returns 用户输入的配置
|
|
9932
|
+
*/
|
|
9933
|
+
async promptConfig() {
|
|
9934
|
+
const defaultProjectName = await detectProjectName(this.projectPath);
|
|
9935
|
+
const defaultTechStack = await detectTechStack(this.projectPath);
|
|
9936
|
+
const isGitRepo = await detectGitRepo(this.projectPath);
|
|
9937
|
+
const defaultGitBranch = isGitRepo ? getGitBranch(this.projectPath) ?? "main" : "main";
|
|
9938
|
+
logger.title("\u521D\u59CB\u5316 ideal-cli \u5DE5\u4F5C\u6D41\u914D\u7F6E");
|
|
9939
|
+
logger.newline();
|
|
9940
|
+
const answers = await inquirer.prompt([
|
|
9941
|
+
{
|
|
9942
|
+
type: "input",
|
|
9943
|
+
name: "projectName",
|
|
9944
|
+
message: PROMPT_PROJECT_NAME,
|
|
9945
|
+
default: defaultProjectName,
|
|
9946
|
+
validate: (input) => {
|
|
9947
|
+
if (!input.trim()) {
|
|
9948
|
+
return "\u9879\u76EE\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A";
|
|
9949
|
+
}
|
|
9950
|
+
return true;
|
|
9951
|
+
}
|
|
9952
|
+
},
|
|
9953
|
+
{
|
|
9954
|
+
type: "input",
|
|
9955
|
+
name: "gitBranch",
|
|
9956
|
+
message: PROMPT_GIT_BRANCH,
|
|
9957
|
+
default: defaultGitBranch,
|
|
9958
|
+
validate: (input) => {
|
|
9959
|
+
if (!input.trim()) {
|
|
9960
|
+
return "\u5206\u652F\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A";
|
|
9961
|
+
}
|
|
9962
|
+
return true;
|
|
9963
|
+
}
|
|
9964
|
+
},
|
|
9965
|
+
{
|
|
9966
|
+
type: "list",
|
|
9967
|
+
name: "techStack",
|
|
9968
|
+
message: PROMPT_TECH_STACK,
|
|
9969
|
+
choices: TECH_STACK_CHOICES,
|
|
9970
|
+
default: defaultTechStack
|
|
9971
|
+
},
|
|
9972
|
+
{
|
|
9973
|
+
type: "confirm",
|
|
9974
|
+
name: "createExample",
|
|
9975
|
+
message: "\u662F\u5426\u521B\u5EFA\u793A\u4F8B\u6587\u4EF6\uFF1F",
|
|
9976
|
+
default: false
|
|
9977
|
+
}
|
|
9978
|
+
]);
|
|
9979
|
+
return answers;
|
|
9980
|
+
}
|
|
9981
|
+
/**
|
|
9982
|
+
* 创建目录结构
|
|
9983
|
+
* @returns 创建的目录数量
|
|
9984
|
+
*/
|
|
9985
|
+
async createDirectoryStructure() {
|
|
9986
|
+
const spinner = startSpinner(INFO_CREATING_DIR);
|
|
9987
|
+
let createdCount = 0;
|
|
9988
|
+
try {
|
|
9989
|
+
for (const dir of DIRECTORY_STRUCTURE) {
|
|
9990
|
+
const fullPath = path10.join(this.projectPath, dir);
|
|
9991
|
+
const exists = await pathExists(fullPath);
|
|
9992
|
+
if (!exists) {
|
|
9993
|
+
await ensureDir(fullPath);
|
|
9994
|
+
createdCount++;
|
|
9995
|
+
logger.debug(`Created directory: ${dir}`);
|
|
9996
|
+
}
|
|
9997
|
+
}
|
|
9998
|
+
spinnerSuccess(spinner, `\u521B\u5EFA\u4E86 ${createdCount} \u4E2A\u76EE\u5F55`);
|
|
9999
|
+
return createdCount;
|
|
10000
|
+
} catch (error2) {
|
|
10001
|
+
spinnerFail(spinner, "\u76EE\u5F55\u521B\u5EFA\u5931\u8D25");
|
|
10002
|
+
throw error2;
|
|
10003
|
+
}
|
|
10004
|
+
}
|
|
10005
|
+
/**
|
|
10006
|
+
* 应用模板文件
|
|
10007
|
+
* @param userInput 用户输入的配置
|
|
10008
|
+
* @returns 处理的文件数量
|
|
10009
|
+
*/
|
|
10010
|
+
async applyTemplate(userInput) {
|
|
10011
|
+
const spinner = startSpinner(INFO_DOWNLOADING);
|
|
10012
|
+
try {
|
|
10013
|
+
const variables = {
|
|
10014
|
+
projectName: userInput.projectName,
|
|
10015
|
+
gitBranch: userInput.gitBranch,
|
|
10016
|
+
techStack: userInput.techStack,
|
|
10017
|
+
initializedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
10018
|
+
};
|
|
10019
|
+
await this.templateManager.fetchTemplate();
|
|
10020
|
+
const claudeDir = path10.join(this.projectPath, ".claude");
|
|
10021
|
+
const filesProcessed = await this.templateManager.applyTemplate(
|
|
10022
|
+
claudeDir,
|
|
10023
|
+
variables
|
|
10024
|
+
);
|
|
10025
|
+
spinnerSuccess(spinner, `\u5E94\u7528\u4E86 ${filesProcessed} \u4E2A\u6A21\u677F\u6587\u4EF6`);
|
|
10026
|
+
return filesProcessed;
|
|
10027
|
+
} catch (error2) {
|
|
10028
|
+
spinnerFail(spinner, "\u6A21\u677F\u5E94\u7528\u5931\u8D25");
|
|
10029
|
+
throw error2;
|
|
10030
|
+
}
|
|
10031
|
+
}
|
|
10032
|
+
/**
|
|
10033
|
+
* 保存项目配置
|
|
10034
|
+
* @param userInput 用户输入的配置
|
|
10035
|
+
*/
|
|
10036
|
+
async saveConfig(userInput) {
|
|
10037
|
+
const config = this.configManager.createDefaultConfig(
|
|
10038
|
+
userInput.projectName,
|
|
10039
|
+
{
|
|
10040
|
+
gitBranch: userInput.gitBranch,
|
|
10041
|
+
techStack: userInput.techStack
|
|
10042
|
+
}
|
|
10043
|
+
);
|
|
10044
|
+
await this.configManager.write(this.projectPath, config);
|
|
10045
|
+
logger.debug("\u914D\u7F6E\u6587\u4EF6\u5DF2\u4FDD\u5B58");
|
|
10046
|
+
}
|
|
10047
|
+
/**
|
|
10048
|
+
* 输出成功消息和下一步指引
|
|
10049
|
+
*/
|
|
10050
|
+
outputSuccessMessage() {
|
|
10051
|
+
logger.newline();
|
|
10052
|
+
logger.success(MSG_INIT_SUCCESS);
|
|
10053
|
+
logger.newline();
|
|
10054
|
+
logger.divider();
|
|
10055
|
+
logger.newline();
|
|
10056
|
+
logger.info("\u4E0B\u4E00\u6B65\u64CD\u4F5C:");
|
|
10057
|
+
logger.newline();
|
|
10058
|
+
console.log(" 1. \u67E5\u770B .claude/project-config.md \u786E\u8BA4\u914D\u7F6E");
|
|
10059
|
+
console.log(" 2. \u67E5\u770B .claude/agents/ \u4E86\u89E3\u53EF\u7528\u7684\u89D2\u8272");
|
|
10060
|
+
console.log(" 3. \u67E5\u770B .claude/skills/ \u4E86\u89E3\u5DE5\u4F5C\u6D41\u9636\u6BB5");
|
|
10061
|
+
console.log(" 4. \u8FD0\u884C ideal doctor \u68C0\u67E5\u914D\u7F6E\u5B8C\u6574\u6027");
|
|
10062
|
+
logger.newline();
|
|
10063
|
+
logger.divider();
|
|
10064
|
+
}
|
|
10065
|
+
/**
|
|
10066
|
+
* 执行初始化命令
|
|
10067
|
+
* @param options 命令选项
|
|
10068
|
+
* @returns 退出码 (0 表示成功)
|
|
10069
|
+
*/
|
|
10070
|
+
async execute(options2 = {}) {
|
|
10071
|
+
try {
|
|
10072
|
+
const configExists = await this.detectExistingConfig();
|
|
10073
|
+
if (configExists && !options2.force) {
|
|
10074
|
+
logger.error(ERR_DIR_EXISTS);
|
|
10075
|
+
logger.info("\u4F7F\u7528 --force \u9009\u9879\u53EF\u4EE5\u5F3A\u5236\u8986\u76D6\u73B0\u6709\u914D\u7F6E");
|
|
10076
|
+
return 1;
|
|
10077
|
+
}
|
|
10078
|
+
const userInput = await this.promptConfig();
|
|
10079
|
+
await this.createDirectoryStructure();
|
|
10080
|
+
await this.applyTemplate(userInput);
|
|
10081
|
+
await this.saveConfig(userInput);
|
|
10082
|
+
this.outputSuccessMessage();
|
|
10083
|
+
return 0;
|
|
10084
|
+
} catch (error2) {
|
|
10085
|
+
logger.error(
|
|
10086
|
+
`\u521D\u59CB\u5316\u5931\u8D25: ${error2 instanceof Error ? error2.message : "Unknown error"}`
|
|
10087
|
+
);
|
|
10088
|
+
if (this.verbose && error2 instanceof Error && error2.stack) {
|
|
10089
|
+
logger.debug(error2.stack);
|
|
10090
|
+
}
|
|
10091
|
+
return 1;
|
|
10092
|
+
}
|
|
10093
|
+
}
|
|
10094
|
+
};
|
|
10095
|
+
|
|
10096
|
+
// src/commands/index.ts
|
|
10097
|
+
async function handleDoctor(options2) {
|
|
10098
|
+
const doctor = new DoctorCommand({
|
|
10099
|
+
verbose: options2.verbose
|
|
10100
|
+
});
|
|
10101
|
+
const exitCode = await doctor.execute();
|
|
10102
|
+
process.exit(exitCode);
|
|
10103
|
+
}
|
|
10104
|
+
function registerCommands(program) {
|
|
10105
|
+
program.command("init").description("\u521D\u59CB\u5316\u9879\u76EE\u5DE5\u4F5C\u6D41\u914D\u7F6E").option("-f, --force", "\u5F3A\u5236\u8986\u76D6\u5DF2\u5B58\u5728\u7684\u914D\u7F6E").option("-v, --verbose", "\u663E\u793A\u8BE6\u7EC6\u65E5\u5FD7").action(async (options2) => {
|
|
10106
|
+
const initCommand = new InitCommand({
|
|
10107
|
+
verbose: options2.verbose
|
|
10108
|
+
});
|
|
10109
|
+
const exitCode = await initCommand.execute({ force: options2.force });
|
|
10110
|
+
process.exit(exitCode);
|
|
10111
|
+
});
|
|
6821
10112
|
const configCommand = createConfigCommand();
|
|
6822
10113
|
configCommand.register(program);
|
|
6823
10114
|
const updateCommand = new UpdateCommand();
|
|
@@ -6862,8 +10153,8 @@ async function main() {
|
|
|
6862
10153
|
const program = createProgram();
|
|
6863
10154
|
await program.parseAsync(process.argv);
|
|
6864
10155
|
}
|
|
6865
|
-
main().catch((
|
|
6866
|
-
console.error("Error:",
|
|
10156
|
+
main().catch((error2) => {
|
|
10157
|
+
console.error("Error:", error2.message);
|
|
6867
10158
|
process.exit(1);
|
|
6868
10159
|
});
|
|
6869
10160
|
/*! Bundled license information:
|