lingo.dev 0.101.0 → 0.102.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cli.cjs +147 -5
- package/build/cli.cjs.map +1 -1
- package/build/cli.mjs +188 -46
- package/build/cli.mjs.map +1 -1
- package/package.json +3 -1
package/build/cli.mjs
CHANGED
|
@@ -4542,9 +4542,7 @@ function reorderKeys(data, originalInput) {
|
|
|
4542
4542
|
const dataKeys = new Set(Object.keys(data));
|
|
4543
4543
|
for (const key of originalKeys) {
|
|
4544
4544
|
if (dataKeys.has(key)) {
|
|
4545
|
-
|
|
4546
|
-
orderedData[key] = reorderKeys(data[key], originalInput[key]);
|
|
4547
|
-
}
|
|
4545
|
+
orderedData[key] = reorderKeys(data[key], originalInput[key]);
|
|
4548
4546
|
dataKeys.delete(key);
|
|
4549
4547
|
}
|
|
4550
4548
|
}
|
|
@@ -8344,6 +8342,135 @@ function processRenamedKeys(delta, targetData) {
|
|
|
8344
8342
|
}).fromPairs().value();
|
|
8345
8343
|
}
|
|
8346
8344
|
|
|
8345
|
+
// src/cli/cmd/run/watch.ts
|
|
8346
|
+
import * as chokidar from "chokidar";
|
|
8347
|
+
import chalk13 from "chalk";
|
|
8348
|
+
async function watch2(ctx) {
|
|
8349
|
+
const debounceDelay = ctx.flags.debounce || 5e3;
|
|
8350
|
+
console.log(chalk13.hex(colors.orange)("[Watch Mode]"));
|
|
8351
|
+
console.log(
|
|
8352
|
+
`\u{1F440} Watching for changes... (Press ${chalk13.yellow("Ctrl+C")} to stop)`
|
|
8353
|
+
);
|
|
8354
|
+
console.log(chalk13.dim(` Debounce delay: ${debounceDelay}ms`));
|
|
8355
|
+
console.log("");
|
|
8356
|
+
const state = {
|
|
8357
|
+
isRunning: false,
|
|
8358
|
+
pendingChanges: /* @__PURE__ */ new Set()
|
|
8359
|
+
};
|
|
8360
|
+
const watchPatterns = await getWatchPatterns(ctx);
|
|
8361
|
+
if (watchPatterns.length === 0) {
|
|
8362
|
+
console.log(chalk13.yellow("\u26A0\uFE0F No source files found to watch"));
|
|
8363
|
+
return;
|
|
8364
|
+
}
|
|
8365
|
+
console.log(chalk13.dim(`Watching ${watchPatterns.length} file pattern(s):`));
|
|
8366
|
+
watchPatterns.forEach((pattern) => {
|
|
8367
|
+
console.log(chalk13.dim(` \u2022 ${pattern}`));
|
|
8368
|
+
});
|
|
8369
|
+
console.log("");
|
|
8370
|
+
const watcher = chokidar.watch(watchPatterns, {
|
|
8371
|
+
ignoreInitial: true,
|
|
8372
|
+
persistent: true,
|
|
8373
|
+
awaitWriteFinish: {
|
|
8374
|
+
stabilityThreshold: 500,
|
|
8375
|
+
pollInterval: 100
|
|
8376
|
+
}
|
|
8377
|
+
});
|
|
8378
|
+
watcher.on("change", (path17) => {
|
|
8379
|
+
handleFileChange(path17, state, ctx);
|
|
8380
|
+
});
|
|
8381
|
+
watcher.on("add", (path17) => {
|
|
8382
|
+
handleFileChange(path17, state, ctx);
|
|
8383
|
+
});
|
|
8384
|
+
watcher.on("unlink", (path17) => {
|
|
8385
|
+
handleFileChange(path17, state, ctx);
|
|
8386
|
+
});
|
|
8387
|
+
watcher.on("error", (error) => {
|
|
8388
|
+
console.error(
|
|
8389
|
+
chalk13.red(
|
|
8390
|
+
`Watch error: ${error instanceof Error ? error.message : String(error)}`
|
|
8391
|
+
)
|
|
8392
|
+
);
|
|
8393
|
+
});
|
|
8394
|
+
process.on("SIGINT", () => {
|
|
8395
|
+
console.log(chalk13.yellow("\n\n\u{1F6D1} Stopping watch mode..."));
|
|
8396
|
+
watcher.close();
|
|
8397
|
+
process.exit(0);
|
|
8398
|
+
});
|
|
8399
|
+
await new Promise(() => {
|
|
8400
|
+
});
|
|
8401
|
+
}
|
|
8402
|
+
async function getWatchPatterns(ctx) {
|
|
8403
|
+
if (!ctx.config) return [];
|
|
8404
|
+
const buckets = getBuckets(ctx.config);
|
|
8405
|
+
const patterns = [];
|
|
8406
|
+
for (const bucket of buckets) {
|
|
8407
|
+
if (ctx.flags.bucket && !ctx.flags.bucket.includes(bucket.type)) {
|
|
8408
|
+
continue;
|
|
8409
|
+
}
|
|
8410
|
+
for (const bucketPath of bucket.paths) {
|
|
8411
|
+
if (ctx.flags.file) {
|
|
8412
|
+
if (!ctx.flags.file.some((f) => bucketPath.pathPattern.includes(f))) {
|
|
8413
|
+
continue;
|
|
8414
|
+
}
|
|
8415
|
+
}
|
|
8416
|
+
const sourceLocale = ctx.flags.sourceLocale || ctx.config.locale.source;
|
|
8417
|
+
const sourcePattern = bucketPath.pathPattern.replace(
|
|
8418
|
+
"[locale]",
|
|
8419
|
+
sourceLocale
|
|
8420
|
+
);
|
|
8421
|
+
patterns.push(sourcePattern);
|
|
8422
|
+
}
|
|
8423
|
+
}
|
|
8424
|
+
return patterns;
|
|
8425
|
+
}
|
|
8426
|
+
function handleFileChange(filePath, state, ctx) {
|
|
8427
|
+
const debounceDelay = ctx.flags.debounce || 5e3;
|
|
8428
|
+
state.pendingChanges.add(filePath);
|
|
8429
|
+
console.log(chalk13.dim(`\u{1F4DD} File changed: ${filePath}`));
|
|
8430
|
+
if (state.debounceTimer) {
|
|
8431
|
+
clearTimeout(state.debounceTimer);
|
|
8432
|
+
}
|
|
8433
|
+
state.debounceTimer = setTimeout(async () => {
|
|
8434
|
+
if (state.isRunning) {
|
|
8435
|
+
console.log(
|
|
8436
|
+
chalk13.yellow("\u23F3 Translation already in progress, skipping...")
|
|
8437
|
+
);
|
|
8438
|
+
return;
|
|
8439
|
+
}
|
|
8440
|
+
await triggerRetranslation(state, ctx);
|
|
8441
|
+
}, debounceDelay);
|
|
8442
|
+
}
|
|
8443
|
+
async function triggerRetranslation(state, ctx) {
|
|
8444
|
+
if (state.isRunning) return;
|
|
8445
|
+
state.isRunning = true;
|
|
8446
|
+
try {
|
|
8447
|
+
const changedFiles = Array.from(state.pendingChanges);
|
|
8448
|
+
state.pendingChanges.clear();
|
|
8449
|
+
console.log(chalk13.hex(colors.green)("\n\u{1F504} Triggering retranslation..."));
|
|
8450
|
+
console.log(chalk13.dim(`Changed files: ${changedFiles.join(", ")}`));
|
|
8451
|
+
console.log("");
|
|
8452
|
+
const runCtx = {
|
|
8453
|
+
...ctx,
|
|
8454
|
+
tasks: [],
|
|
8455
|
+
results: /* @__PURE__ */ new Map()
|
|
8456
|
+
};
|
|
8457
|
+
await plan(runCtx);
|
|
8458
|
+
if (runCtx.tasks.length === 0) {
|
|
8459
|
+
console.log(chalk13.dim("\u2728 No translation tasks needed"));
|
|
8460
|
+
} else {
|
|
8461
|
+
await execute(runCtx);
|
|
8462
|
+
await renderSummary(runCtx.results);
|
|
8463
|
+
}
|
|
8464
|
+
console.log(chalk13.hex(colors.green)("\u2705 Retranslation completed"));
|
|
8465
|
+
console.log(chalk13.dim("\u{1F440} Continuing to watch for changes...\n"));
|
|
8466
|
+
} catch (error) {
|
|
8467
|
+
console.error(chalk13.red(`\u274C Retranslation failed: ${error.message}`));
|
|
8468
|
+
console.log(chalk13.dim("\u{1F440} Continuing to watch for changes...\n"));
|
|
8469
|
+
} finally {
|
|
8470
|
+
state.isRunning = false;
|
|
8471
|
+
}
|
|
8472
|
+
}
|
|
8473
|
+
|
|
8347
8474
|
// src/cli/cmd/run/_types.ts
|
|
8348
8475
|
import {
|
|
8349
8476
|
bucketTypeSchema as bucketTypeSchema3
|
|
@@ -8362,7 +8489,10 @@ var flagsSchema2 = z2.object({
|
|
|
8362
8489
|
concurrency: z2.number().positive().default(10),
|
|
8363
8490
|
debug: z2.boolean().default(false),
|
|
8364
8491
|
sourceLocale: z2.string().optional(),
|
|
8365
|
-
targetLocale: z2.array(z2.string()).optional()
|
|
8492
|
+
targetLocale: z2.array(z2.string()).optional(),
|
|
8493
|
+
watch: z2.boolean().default(false),
|
|
8494
|
+
debounce: z2.number().positive().default(5e3)
|
|
8495
|
+
// 5 seconds default
|
|
8366
8496
|
});
|
|
8367
8497
|
|
|
8368
8498
|
// src/cli/cmd/run/_utils.ts
|
|
@@ -8413,6 +8543,13 @@ var run_default = new Command16().command("run").description("Run Lingo.dev loca
|
|
|
8413
8543
|
"--concurrency <concurrency>",
|
|
8414
8544
|
"Number of concurrent tasks to run",
|
|
8415
8545
|
(val) => parseInt(val)
|
|
8546
|
+
).option(
|
|
8547
|
+
"--watch",
|
|
8548
|
+
"Watch source files for changes and automatically retranslate"
|
|
8549
|
+
).option(
|
|
8550
|
+
"--debounce <milliseconds>",
|
|
8551
|
+
"Debounce delay in milliseconds for watch mode (default: 5000ms)",
|
|
8552
|
+
(val) => parseInt(val)
|
|
8416
8553
|
).action(async (args) => {
|
|
8417
8554
|
let authId = null;
|
|
8418
8555
|
try {
|
|
@@ -8442,6 +8579,9 @@ var run_default = new Command16().command("run").description("Run Lingo.dev loca
|
|
|
8442
8579
|
await renderSpacer();
|
|
8443
8580
|
await renderSummary(ctx.results);
|
|
8444
8581
|
await renderSpacer();
|
|
8582
|
+
if (ctx.flags.watch) {
|
|
8583
|
+
await watch2(ctx);
|
|
8584
|
+
}
|
|
8445
8585
|
trackEvent(authId, "cmd.run.success", {
|
|
8446
8586
|
config: ctx.config,
|
|
8447
8587
|
flags: ctx.flags
|
|
@@ -9183,7 +9323,7 @@ import {
|
|
|
9183
9323
|
import { Command as Command18 } from "interactive-commander";
|
|
9184
9324
|
import Z11 from "zod";
|
|
9185
9325
|
import Ora10 from "ora";
|
|
9186
|
-
import
|
|
9326
|
+
import chalk14 from "chalk";
|
|
9187
9327
|
import Table from "cli-table3";
|
|
9188
9328
|
var status_default = new Command18().command("status").description("Show the status of the localization process").helpOption("-h, --help", "Show help").option(
|
|
9189
9329
|
"--locale <locale>",
|
|
@@ -9358,7 +9498,7 @@ var status_default = new Command18().command("status").description("Show the sta
|
|
|
9358
9498
|
(totalWordCount.get(_targetLocale) || 0) + sourceWordCount
|
|
9359
9499
|
);
|
|
9360
9500
|
bucketOra.succeed(
|
|
9361
|
-
`[${sourceLocale} -> ${targetLocale}] ${
|
|
9501
|
+
`[${sourceLocale} -> ${targetLocale}] ${chalk14.red(
|
|
9362
9502
|
`0% complete`
|
|
9363
9503
|
)} (0/${sourceKeys.length} keys) - file not found`
|
|
9364
9504
|
);
|
|
@@ -9403,30 +9543,30 @@ var status_default = new Command18().command("status").description("Show the sta
|
|
|
9403
9543
|
const completionPercent = (completeKeys.length / totalKeysInFile * 100).toFixed(1);
|
|
9404
9544
|
if (missingKeys.length === 0 && updatedKeys.length === 0) {
|
|
9405
9545
|
bucketOra.succeed(
|
|
9406
|
-
`[${sourceLocale} -> ${targetLocale}] ${
|
|
9546
|
+
`[${sourceLocale} -> ${targetLocale}] ${chalk14.green(
|
|
9407
9547
|
`100% complete`
|
|
9408
9548
|
)} (${completeKeys.length}/${totalKeysInFile} keys)`
|
|
9409
9549
|
);
|
|
9410
9550
|
} else {
|
|
9411
|
-
const message = `[${sourceLocale} -> ${targetLocale}] ${parseFloat(completionPercent) > 50 ?
|
|
9551
|
+
const message = `[${sourceLocale} -> ${targetLocale}] ${parseFloat(completionPercent) > 50 ? chalk14.yellow(`${completionPercent}% complete`) : chalk14.red(`${completionPercent}% complete`)} (${completeKeys.length}/${totalKeysInFile} keys)`;
|
|
9412
9552
|
bucketOra.succeed(message);
|
|
9413
9553
|
if (flags.verbose) {
|
|
9414
9554
|
if (missingKeys.length > 0) {
|
|
9415
9555
|
console.log(
|
|
9416
|
-
` ${
|
|
9556
|
+
` ${chalk14.red(`Missing:`)} ${missingKeys.length} keys, ~${wordsToTranslate} words`
|
|
9417
9557
|
);
|
|
9418
9558
|
console.log(
|
|
9419
|
-
` ${
|
|
9559
|
+
` ${chalk14.red(`Missing:`)} ${missingKeys.length} keys, ~${wordsToTranslate} words`
|
|
9420
9560
|
);
|
|
9421
9561
|
console.log(
|
|
9422
|
-
` ${
|
|
9562
|
+
` ${chalk14.dim(
|
|
9423
9563
|
`Example missing: ${missingKeys.slice(0, 2).join(", ")}${missingKeys.length > 2 ? "..." : ""}`
|
|
9424
9564
|
)}`
|
|
9425
9565
|
);
|
|
9426
9566
|
}
|
|
9427
9567
|
if (updatedKeys.length > 0) {
|
|
9428
9568
|
console.log(
|
|
9429
|
-
` ${
|
|
9569
|
+
` ${chalk14.yellow(`Updated:`)} ${updatedKeys.length} keys that changed in source`
|
|
9430
9570
|
);
|
|
9431
9571
|
}
|
|
9432
9572
|
}
|
|
@@ -9445,22 +9585,22 @@ var status_default = new Command18().command("status").description("Show the sta
|
|
|
9445
9585
|
);
|
|
9446
9586
|
const totalCompletedKeys = totalSourceKeyCount - totalKeysNeedingTranslation / targetLocales.length;
|
|
9447
9587
|
console.log();
|
|
9448
|
-
ora.succeed(
|
|
9449
|
-
console.log(
|
|
9588
|
+
ora.succeed(chalk14.green(`Localization status completed.`));
|
|
9589
|
+
console.log(chalk14.bold.cyan(`
|
|
9450
9590
|
\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557`));
|
|
9451
|
-
console.log(
|
|
9452
|
-
console.log(
|
|
9453
|
-
console.log(
|
|
9591
|
+
console.log(chalk14.bold.cyan(`\u2551 LOCALIZATION STATUS REPORT \u2551`));
|
|
9592
|
+
console.log(chalk14.bold.cyan(`\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D`));
|
|
9593
|
+
console.log(chalk14.bold(`
|
|
9454
9594
|
\u{1F4DD} SOURCE CONTENT:`));
|
|
9455
9595
|
console.log(
|
|
9456
|
-
`\u2022 Source language: ${
|
|
9596
|
+
`\u2022 Source language: ${chalk14.green(i18nConfig.locale.source)}`
|
|
9457
9597
|
);
|
|
9458
9598
|
console.log(
|
|
9459
|
-
`\u2022 Source keys: ${
|
|
9599
|
+
`\u2022 Source keys: ${chalk14.yellow(
|
|
9460
9600
|
totalSourceKeyCount.toString()
|
|
9461
9601
|
)} keys across all files`
|
|
9462
9602
|
);
|
|
9463
|
-
console.log(
|
|
9603
|
+
console.log(chalk14.bold(`
|
|
9464
9604
|
\u{1F310} LANGUAGE BY LANGUAGE BREAKDOWN:`));
|
|
9465
9605
|
const table = new Table({
|
|
9466
9606
|
head: [
|
|
@@ -9490,19 +9630,19 @@ var status_default = new Command18().command("status").description("Show the sta
|
|
|
9490
9630
|
let statusColor;
|
|
9491
9631
|
if (stats.missing === totalSourceKeyCount) {
|
|
9492
9632
|
statusText = "\u{1F534} Not started";
|
|
9493
|
-
statusColor =
|
|
9633
|
+
statusColor = chalk14.red;
|
|
9494
9634
|
} else if (stats.missing === 0 && stats.updated === 0) {
|
|
9495
9635
|
statusText = "\u2705 Complete";
|
|
9496
|
-
statusColor =
|
|
9636
|
+
statusColor = chalk14.green;
|
|
9497
9637
|
} else if (parseFloat(percentComplete) > 80) {
|
|
9498
9638
|
statusText = "\u{1F7E1} Almost done";
|
|
9499
|
-
statusColor =
|
|
9639
|
+
statusColor = chalk14.yellow;
|
|
9500
9640
|
} else if (parseFloat(percentComplete) > 0) {
|
|
9501
9641
|
statusText = "\u{1F7E0} In progress";
|
|
9502
|
-
statusColor =
|
|
9642
|
+
statusColor = chalk14.yellow;
|
|
9503
9643
|
} else {
|
|
9504
9644
|
statusText = "\u{1F534} Not started";
|
|
9505
|
-
statusColor =
|
|
9645
|
+
statusColor = chalk14.red;
|
|
9506
9646
|
}
|
|
9507
9647
|
const words = totalWordCount.get(locale) || 0;
|
|
9508
9648
|
totalWordsToTranslate += words;
|
|
@@ -9510,17 +9650,17 @@ var status_default = new Command18().command("status").description("Show the sta
|
|
|
9510
9650
|
locale,
|
|
9511
9651
|
statusColor(statusText),
|
|
9512
9652
|
`${stats.complete}/${totalSourceKeyCount} (${percentComplete}%)`,
|
|
9513
|
-
stats.missing > 0 ?
|
|
9514
|
-
stats.updated > 0 ?
|
|
9515
|
-
totalNeeded > 0 ?
|
|
9653
|
+
stats.missing > 0 ? chalk14.red(stats.missing.toString()) : "0",
|
|
9654
|
+
stats.updated > 0 ? chalk14.yellow(stats.updated.toString()) : "0",
|
|
9655
|
+
totalNeeded > 0 ? chalk14.magenta(totalNeeded.toString()) : "0",
|
|
9516
9656
|
words > 0 ? `~${words.toLocaleString()}` : "0"
|
|
9517
9657
|
]);
|
|
9518
9658
|
}
|
|
9519
9659
|
console.log(table.toString());
|
|
9520
|
-
console.log(
|
|
9660
|
+
console.log(chalk14.bold(`
|
|
9521
9661
|
\u{1F4CA} USAGE ESTIMATE:`));
|
|
9522
9662
|
console.log(
|
|
9523
|
-
`\u2022 WORDS TO BE CONSUMED: ~${
|
|
9663
|
+
`\u2022 WORDS TO BE CONSUMED: ~${chalk14.yellow.bold(
|
|
9524
9664
|
totalWordsToTranslate.toLocaleString()
|
|
9525
9665
|
)} words across all languages`
|
|
9526
9666
|
);
|
|
@@ -9538,11 +9678,11 @@ var status_default = new Command18().command("status").description("Show the sta
|
|
|
9538
9678
|
}
|
|
9539
9679
|
}
|
|
9540
9680
|
if (flags.confirm && Object.keys(fileStats).length > 0) {
|
|
9541
|
-
console.log(
|
|
9681
|
+
console.log(chalk14.bold(`
|
|
9542
9682
|
\u{1F4D1} BREAKDOWN BY FILE:`));
|
|
9543
9683
|
Object.entries(fileStats).sort((a, b) => b[1].wordCount - a[1].wordCount).forEach(([path17, stats]) => {
|
|
9544
9684
|
if (stats.sourceKeys === 0) return;
|
|
9545
|
-
console.log(
|
|
9685
|
+
console.log(chalk14.bold(`
|
|
9546
9686
|
\u2022 ${path17}:`));
|
|
9547
9687
|
console.log(
|
|
9548
9688
|
` ${stats.sourceKeys} source keys, ~${stats.wordCount.toLocaleString()} source words`
|
|
@@ -9562,13 +9702,13 @@ var status_default = new Command18().command("status").description("Show the sta
|
|
|
9562
9702
|
const total = stats.sourceKeys;
|
|
9563
9703
|
const completion = (complete / total * 100).toFixed(1);
|
|
9564
9704
|
let status = "\u2705 Complete";
|
|
9565
|
-
let statusColor =
|
|
9705
|
+
let statusColor = chalk14.green;
|
|
9566
9706
|
if (langStats.missing === total) {
|
|
9567
9707
|
status = "\u274C Not started";
|
|
9568
|
-
statusColor =
|
|
9708
|
+
statusColor = chalk14.red;
|
|
9569
9709
|
} else if (langStats.missing > 0 || langStats.updated > 0) {
|
|
9570
9710
|
status = `\u26A0\uFE0F ${completion}% complete`;
|
|
9571
|
-
statusColor =
|
|
9711
|
+
statusColor = chalk14.yellow;
|
|
9572
9712
|
}
|
|
9573
9713
|
let details = "";
|
|
9574
9714
|
if (langStats.missing > 0 || langStats.updated > 0) {
|
|
@@ -9592,16 +9732,16 @@ var status_default = new Command18().command("status").description("Show the sta
|
|
|
9592
9732
|
const missingLanguages = targetLocales.filter(
|
|
9593
9733
|
(locale) => languageStats[locale].complete === 0
|
|
9594
9734
|
);
|
|
9595
|
-
console.log(
|
|
9735
|
+
console.log(chalk14.bold.green(`
|
|
9596
9736
|
\u{1F4A1} OPTIMIZATION TIPS:`));
|
|
9597
9737
|
if (missingLanguages.length > 0) {
|
|
9598
9738
|
console.log(
|
|
9599
|
-
`\u2022 ${
|
|
9739
|
+
`\u2022 ${chalk14.yellow(missingLanguages.join(", "))} ${missingLanguages.length === 1 ? "has" : "have"} no translations yet`
|
|
9600
9740
|
);
|
|
9601
9741
|
}
|
|
9602
9742
|
if (completeLanguages.length > 0) {
|
|
9603
9743
|
console.log(
|
|
9604
|
-
`\u2022 ${
|
|
9744
|
+
`\u2022 ${chalk14.green(completeLanguages.join(", "))} ${completeLanguages.length === 1 ? "is" : "are"} completely translated`
|
|
9605
9745
|
);
|
|
9606
9746
|
}
|
|
9607
9747
|
if (targetLocales.length > 1) {
|
|
@@ -9684,7 +9824,7 @@ function validateParams2(i18nConfig, flags) {
|
|
|
9684
9824
|
import { Command as Command19 } from "interactive-commander";
|
|
9685
9825
|
import * as cp from "node:child_process";
|
|
9686
9826
|
import figlet2 from "figlet";
|
|
9687
|
-
import
|
|
9827
|
+
import chalk15 from "chalk";
|
|
9688
9828
|
import { vice as vice2 } from "gradient-string";
|
|
9689
9829
|
var colors2 = {
|
|
9690
9830
|
orange: "#ff6600",
|
|
@@ -9698,7 +9838,7 @@ var may_the_fourth_default = new Command19().command("may-the-fourth").descripti
|
|
|
9698
9838
|
await renderClear2();
|
|
9699
9839
|
await renderBanner2();
|
|
9700
9840
|
await renderSpacer2();
|
|
9701
|
-
console.log(
|
|
9841
|
+
console.log(chalk15.hex(colors2.yellow)("Loading the Star Wars movie..."));
|
|
9702
9842
|
await renderSpacer2();
|
|
9703
9843
|
await new Promise((resolve, reject) => {
|
|
9704
9844
|
const ssh = cp.spawn("ssh", ["starwarstel.net"], {
|
|
@@ -9717,12 +9857,12 @@ var may_the_fourth_default = new Command19().command("may-the-fourth").descripti
|
|
|
9717
9857
|
});
|
|
9718
9858
|
await renderSpacer2();
|
|
9719
9859
|
console.log(
|
|
9720
|
-
`${
|
|
9860
|
+
`${chalk15.hex(colors2.green)("We hope you enjoyed it! :)")} ${chalk15.hex(
|
|
9721
9861
|
colors2.blue
|
|
9722
9862
|
)("May the Fourth be with you! \u{1F680}")}`
|
|
9723
9863
|
);
|
|
9724
9864
|
await renderSpacer2();
|
|
9725
|
-
console.log(
|
|
9865
|
+
console.log(chalk15.dim(`---`));
|
|
9726
9866
|
await renderSpacer2();
|
|
9727
9867
|
await renderHero2();
|
|
9728
9868
|
});
|
|
@@ -9745,21 +9885,21 @@ async function renderBanner2() {
|
|
|
9745
9885
|
}
|
|
9746
9886
|
async function renderHero2() {
|
|
9747
9887
|
console.log(
|
|
9748
|
-
`\u26A1\uFE0F ${
|
|
9888
|
+
`\u26A1\uFE0F ${chalk15.hex(colors2.green)(
|
|
9749
9889
|
"Lingo.dev"
|
|
9750
9890
|
)} - open-source, AI-powered i18n CLI for web & mobile localization.`
|
|
9751
9891
|
);
|
|
9752
9892
|
console.log(" ");
|
|
9753
9893
|
console.log(
|
|
9754
|
-
|
|
9894
|
+
chalk15.hex(colors2.blue)("\u2B50 GitHub Repo: https://lingo.dev/go/gh")
|
|
9755
9895
|
);
|
|
9756
|
-
console.log(
|
|
9896
|
+
console.log(chalk15.hex(colors2.blue)("\u{1F4AC} 24/7 Support: hi@lingo.dev"));
|
|
9757
9897
|
}
|
|
9758
9898
|
|
|
9759
9899
|
// package.json
|
|
9760
9900
|
var package_default = {
|
|
9761
9901
|
name: "lingo.dev",
|
|
9762
|
-
version: "0.
|
|
9902
|
+
version: "0.102.0",
|
|
9763
9903
|
description: "Lingo.dev CLI",
|
|
9764
9904
|
private: false,
|
|
9765
9905
|
publishConfig: {
|
|
@@ -9894,6 +10034,7 @@ var package_default = {
|
|
|
9894
10034
|
ai: "^4.3.15",
|
|
9895
10035
|
bitbucket: "^2.12.0",
|
|
9896
10036
|
chalk: "^5.4.1",
|
|
10037
|
+
chokidar: "^4.0.3",
|
|
9897
10038
|
"cli-progress": "^3.12.0",
|
|
9898
10039
|
"cli-table3": "^0.6.5",
|
|
9899
10040
|
cors: "^2.8.5",
|
|
@@ -9962,6 +10103,7 @@ var package_default = {
|
|
|
9962
10103
|
},
|
|
9963
10104
|
devDependencies: {
|
|
9964
10105
|
"@types/babel__generator": "^7.27.0",
|
|
10106
|
+
"@types/chokidar": "^2.1.7",
|
|
9965
10107
|
"@types/cli-progress": "^3.11.6",
|
|
9966
10108
|
"@types/cors": "^2.8.17",
|
|
9967
10109
|
"@types/diff": "^7.0.0",
|