lingo.dev 0.71.0 → 0.72.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 +111 -24
- package/build/cli.cjs.map +1 -1
- package/build/cli.mjs +107 -20
- package/build/cli.mjs.map +1 -1
- package/package.json +1 -1
package/build/cli.mjs
CHANGED
|
@@ -18,7 +18,7 @@ import { InteractiveCommand as InteractiveCommand2 } from "interactive-commander
|
|
|
18
18
|
import figlet from "figlet";
|
|
19
19
|
import { vice } from "gradient-string";
|
|
20
20
|
|
|
21
|
-
// src/cli/
|
|
21
|
+
// src/cli/cmd/auth.ts
|
|
22
22
|
import { Command } from "interactive-commander";
|
|
23
23
|
import Ora from "ora";
|
|
24
24
|
import express from "express";
|
|
@@ -174,7 +174,7 @@ function createAuthenticator(params) {
|
|
|
174
174
|
};
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
// src/cli/
|
|
177
|
+
// src/cli/cmd/auth.ts
|
|
178
178
|
var auth_default = new Command().command("auth").description("Authenticate with Lingo.dev API").helpOption("-h, --help", "Show help").option("--logout", "Delete existing authentication").option("--login", "Authenticate with Lingo.dev API").action(async (options) => {
|
|
179
179
|
try {
|
|
180
180
|
let settings = await getSettings(void 0);
|
|
@@ -242,7 +242,7 @@ async function waitForApiKey(cb) {
|
|
|
242
242
|
});
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
-
// src/cli/
|
|
245
|
+
// src/cli/cmd/init.ts
|
|
246
246
|
import { InteractiveCommand, InteractiveOption } from "interactive-commander";
|
|
247
247
|
import Ora2 from "ora";
|
|
248
248
|
|
|
@@ -275,7 +275,7 @@ function _getConfigFilePath() {
|
|
|
275
275
|
return path2.join(process.cwd(), "i18n.json");
|
|
276
276
|
}
|
|
277
277
|
|
|
278
|
-
// src/cli/
|
|
278
|
+
// src/cli/cmd/init.ts
|
|
279
279
|
import fs3 from "fs";
|
|
280
280
|
import { spawn } from "child_process";
|
|
281
281
|
import _2 from "lodash";
|
|
@@ -396,10 +396,10 @@ var init_default = new InteractiveCommand().command("init").description("Initial
|
|
|
396
396
|
}
|
|
397
397
|
});
|
|
398
398
|
|
|
399
|
-
// src/cli/
|
|
399
|
+
// src/cli/cmd/show/index.ts
|
|
400
400
|
import { Command as Command5 } from "interactive-commander";
|
|
401
401
|
|
|
402
|
-
// src/cli/
|
|
402
|
+
// src/cli/cmd/show/config.ts
|
|
403
403
|
import { Command as Command2 } from "interactive-commander";
|
|
404
404
|
import _3 from "lodash";
|
|
405
405
|
import fs4 from "fs";
|
|
@@ -420,7 +420,7 @@ function loadReplexicaFileConfig() {
|
|
|
420
420
|
return replexicaFileConfig;
|
|
421
421
|
}
|
|
422
422
|
|
|
423
|
-
// src/cli/
|
|
423
|
+
// src/cli/cmd/show/locale.ts
|
|
424
424
|
import { Command as Command3 } from "interactive-commander";
|
|
425
425
|
import Ora3 from "ora";
|
|
426
426
|
var locale_default = new Command3().command("locale").description("Print out the list of locales").helpOption("-h, --help", "Show help").argument("<type>", 'Type of locales to show, either "sources" or "targets"').action(async (type) => {
|
|
@@ -445,7 +445,7 @@ var locale_default = new Command3().command("locale").description("Print out the
|
|
|
445
445
|
}
|
|
446
446
|
});
|
|
447
447
|
|
|
448
|
-
// src/cli/
|
|
448
|
+
// src/cli/cmd/show/files.ts
|
|
449
449
|
import { Command as Command4 } from "interactive-commander";
|
|
450
450
|
import Ora4 from "ora";
|
|
451
451
|
|
|
@@ -529,7 +529,7 @@ function resolveBucketItem(bucketItem) {
|
|
|
529
529
|
return bucketItem;
|
|
530
530
|
}
|
|
531
531
|
|
|
532
|
-
// src/cli/
|
|
532
|
+
// src/cli/cmd/show/files.ts
|
|
533
533
|
var files_default = new Command4().command("files").description("Print out the list of files managed by Lingo.dev").option("--source", "Only show source files").option("--target", "Only show target files").helpOption("-h, --help", "Show help").action(async (type) => {
|
|
534
534
|
const ora = Ora4();
|
|
535
535
|
try {
|
|
@@ -575,10 +575,10 @@ var files_default = new Command4().command("files").description("Print out the l
|
|
|
575
575
|
}
|
|
576
576
|
});
|
|
577
577
|
|
|
578
|
-
// src/cli/
|
|
578
|
+
// src/cli/cmd/show/index.ts
|
|
579
579
|
var show_default = new Command5().command("show").description("Prints out the current configuration").helpOption("-h, --help", "Show help").addCommand(config_default).addCommand(locale_default).addCommand(files_default);
|
|
580
580
|
|
|
581
|
-
// src/cli/
|
|
581
|
+
// src/cli/cmd/i18n.ts
|
|
582
582
|
import { Command as Command6 } from "interactive-commander";
|
|
583
583
|
import Z4 from "zod";
|
|
584
584
|
import _17 from "lodash";
|
|
@@ -724,7 +724,7 @@ function createTextFileLoader(pathPattern) {
|
|
|
724
724
|
const finalPath = path5.resolve(draftPath);
|
|
725
725
|
const dirPath = path5.dirname(finalPath);
|
|
726
726
|
await fs5.mkdir(dirPath, { recursive: true });
|
|
727
|
-
const finalPayload = data.trim()
|
|
727
|
+
const finalPayload = data.trim();
|
|
728
728
|
await fs5.writeFile(finalPath, finalPayload, {
|
|
729
729
|
encoding: "utf-8",
|
|
730
730
|
flag: "w"
|
|
@@ -1271,7 +1271,7 @@ function createPrettierLoader(options) {
|
|
|
1271
1271
|
return data;
|
|
1272
1272
|
}
|
|
1273
1273
|
const result = prettier.format(data, {
|
|
1274
|
-
...prettierConfig || { printWidth: 2500 },
|
|
1274
|
+
...prettierConfig || { printWidth: 2500, bracketSameLine: false },
|
|
1275
1275
|
parser: options.parser,
|
|
1276
1276
|
// For HTML parser, preserve comments and quotes
|
|
1277
1277
|
...options.parser === "html" ? {
|
|
@@ -2136,7 +2136,6 @@ function createVttLoader() {
|
|
|
2136
2136
|
text
|
|
2137
2137
|
};
|
|
2138
2138
|
});
|
|
2139
|
-
console.log(payload, output);
|
|
2140
2139
|
const input = {
|
|
2141
2140
|
valid: true,
|
|
2142
2141
|
strict: true,
|
|
@@ -2236,6 +2235,76 @@ function createSyncLoader() {
|
|
|
2236
2235
|
});
|
|
2237
2236
|
}
|
|
2238
2237
|
|
|
2238
|
+
// src/cli/utils/plutil-formatter.ts
|
|
2239
|
+
function formatPlutilStyle(jsonData, existingJson) {
|
|
2240
|
+
const indent = existingJson ? detectIndentation(existingJson) : " ";
|
|
2241
|
+
function format(data, level = 0) {
|
|
2242
|
+
const currentIndent = indent.repeat(level);
|
|
2243
|
+
const nextIndent = indent.repeat(level + 1);
|
|
2244
|
+
if (typeof data !== "object" || data === null) {
|
|
2245
|
+
return JSON.stringify(data);
|
|
2246
|
+
}
|
|
2247
|
+
if (Array.isArray(data)) {
|
|
2248
|
+
if (data.length === 0) return "[]";
|
|
2249
|
+
const items2 = data.map((item) => `${nextIndent}${format(item, level + 1)}`);
|
|
2250
|
+
return `[
|
|
2251
|
+
${items2.join(",\n")}
|
|
2252
|
+
${currentIndent}]`;
|
|
2253
|
+
}
|
|
2254
|
+
const keys = Object.keys(data);
|
|
2255
|
+
if (keys.length === 0) {
|
|
2256
|
+
return `{
|
|
2257
|
+
|
|
2258
|
+
${currentIndent}}`;
|
|
2259
|
+
}
|
|
2260
|
+
const items = keys.map((key) => {
|
|
2261
|
+
const value = data[key];
|
|
2262
|
+
return `${nextIndent}${JSON.stringify(key)} : ${format(value, level + 1)}`;
|
|
2263
|
+
});
|
|
2264
|
+
return `{
|
|
2265
|
+
${items.join(",\n")}
|
|
2266
|
+
${currentIndent}}`;
|
|
2267
|
+
}
|
|
2268
|
+
return format(jsonData);
|
|
2269
|
+
}
|
|
2270
|
+
function detectIndentation(jsonStr) {
|
|
2271
|
+
const match = jsonStr.match(/\n(\s+)/);
|
|
2272
|
+
return match ? match[1] : " ";
|
|
2273
|
+
}
|
|
2274
|
+
|
|
2275
|
+
// src/cli/loaders/plutil-json-loader.ts
|
|
2276
|
+
function createPlutilJsonTextLoader() {
|
|
2277
|
+
return createLoader({
|
|
2278
|
+
async pull(locale, data) {
|
|
2279
|
+
return data;
|
|
2280
|
+
},
|
|
2281
|
+
async push(locale, data, originalInput) {
|
|
2282
|
+
const jsonData = JSON.parse(data);
|
|
2283
|
+
const result = formatPlutilStyle(jsonData, originalInput || "");
|
|
2284
|
+
console.log(result[result.length - 1]);
|
|
2285
|
+
return result;
|
|
2286
|
+
}
|
|
2287
|
+
});
|
|
2288
|
+
}
|
|
2289
|
+
|
|
2290
|
+
// src/cli/loaders/new-line.ts
|
|
2291
|
+
function createNewLineLoader() {
|
|
2292
|
+
return createLoader({
|
|
2293
|
+
async pull(locale, input) {
|
|
2294
|
+
return input;
|
|
2295
|
+
},
|
|
2296
|
+
async push(locale, data, originalInput) {
|
|
2297
|
+
if (!data) return "";
|
|
2298
|
+
const trimmed = data.replace(/[\r\n]+$/, "");
|
|
2299
|
+
if (originalInput?.match(/[\r\n]$/)) {
|
|
2300
|
+
const ending = originalInput?.includes("\r\n") ? "\r\n" : originalInput?.includes("\r") ? "\r" : "\n";
|
|
2301
|
+
return trimmed + ending;
|
|
2302
|
+
}
|
|
2303
|
+
return trimmed;
|
|
2304
|
+
}
|
|
2305
|
+
});
|
|
2306
|
+
}
|
|
2307
|
+
|
|
2239
2308
|
// src/cli/loaders/index.ts
|
|
2240
2309
|
function createBucketLoader(bucketType, bucketPathPattern) {
|
|
2241
2310
|
switch (bucketType) {
|
|
@@ -2244,6 +2313,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2244
2313
|
case "android":
|
|
2245
2314
|
return composeLoaders(
|
|
2246
2315
|
createTextFileLoader(bucketPathPattern),
|
|
2316
|
+
createNewLineLoader(),
|
|
2247
2317
|
createAndroidLoader(),
|
|
2248
2318
|
createFlatLoader(),
|
|
2249
2319
|
createSyncLoader(),
|
|
@@ -2252,6 +2322,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2252
2322
|
case "csv":
|
|
2253
2323
|
return composeLoaders(
|
|
2254
2324
|
createTextFileLoader(bucketPathPattern),
|
|
2325
|
+
createNewLineLoader(),
|
|
2255
2326
|
createCsvLoader(),
|
|
2256
2327
|
createFlatLoader(),
|
|
2257
2328
|
createSyncLoader(),
|
|
@@ -2260,6 +2331,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2260
2331
|
case "html":
|
|
2261
2332
|
return composeLoaders(
|
|
2262
2333
|
createTextFileLoader(bucketPathPattern),
|
|
2334
|
+
createNewLineLoader(),
|
|
2263
2335
|
createPrettierLoader({ parser: "html", alwaysFormat: true }),
|
|
2264
2336
|
createHtmlLoader(),
|
|
2265
2337
|
createSyncLoader(),
|
|
@@ -2268,6 +2340,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2268
2340
|
case "json":
|
|
2269
2341
|
return composeLoaders(
|
|
2270
2342
|
createTextFileLoader(bucketPathPattern),
|
|
2343
|
+
createNewLineLoader(),
|
|
2271
2344
|
createPrettierLoader({ parser: "json" }),
|
|
2272
2345
|
createJsonLoader(),
|
|
2273
2346
|
createFlatLoader(),
|
|
@@ -2277,6 +2350,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2277
2350
|
case "markdown":
|
|
2278
2351
|
return composeLoaders(
|
|
2279
2352
|
createTextFileLoader(bucketPathPattern),
|
|
2353
|
+
createNewLineLoader(),
|
|
2280
2354
|
createPrettierLoader({ parser: "markdown" }),
|
|
2281
2355
|
createMarkdownLoader(),
|
|
2282
2356
|
createSyncLoader(),
|
|
@@ -2285,6 +2359,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2285
2359
|
case "po":
|
|
2286
2360
|
return composeLoaders(
|
|
2287
2361
|
createTextFileLoader(bucketPathPattern),
|
|
2362
|
+
createNewLineLoader(),
|
|
2288
2363
|
createPoLoader(),
|
|
2289
2364
|
createFlatLoader(),
|
|
2290
2365
|
createSyncLoader(),
|
|
@@ -2294,6 +2369,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2294
2369
|
case "properties":
|
|
2295
2370
|
return composeLoaders(
|
|
2296
2371
|
createTextFileLoader(bucketPathPattern),
|
|
2372
|
+
createNewLineLoader(),
|
|
2297
2373
|
createPropertiesLoader(),
|
|
2298
2374
|
createSyncLoader(),
|
|
2299
2375
|
createUnlocalizableLoader()
|
|
@@ -2301,6 +2377,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2301
2377
|
case "xcode-strings":
|
|
2302
2378
|
return composeLoaders(
|
|
2303
2379
|
createTextFileLoader(bucketPathPattern),
|
|
2380
|
+
createNewLineLoader(),
|
|
2304
2381
|
createXcodeStringsLoader(),
|
|
2305
2382
|
createSyncLoader(),
|
|
2306
2383
|
createUnlocalizableLoader()
|
|
@@ -2308,6 +2385,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2308
2385
|
case "xcode-stringsdict":
|
|
2309
2386
|
return composeLoaders(
|
|
2310
2387
|
createTextFileLoader(bucketPathPattern),
|
|
2388
|
+
createNewLineLoader(),
|
|
2311
2389
|
createXcodeStringsdictLoader(),
|
|
2312
2390
|
createFlatLoader(),
|
|
2313
2391
|
createSyncLoader(),
|
|
@@ -2316,7 +2394,8 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2316
2394
|
case "xcode-xcstrings":
|
|
2317
2395
|
return composeLoaders(
|
|
2318
2396
|
createTextFileLoader(bucketPathPattern),
|
|
2319
|
-
|
|
2397
|
+
createNewLineLoader(),
|
|
2398
|
+
createPlutilJsonTextLoader(),
|
|
2320
2399
|
createJsonLoader(),
|
|
2321
2400
|
createXcodeXcstringsLoader(),
|
|
2322
2401
|
createFlatLoader(),
|
|
@@ -2327,6 +2406,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2327
2406
|
case "yaml":
|
|
2328
2407
|
return composeLoaders(
|
|
2329
2408
|
createTextFileLoader(bucketPathPattern),
|
|
2409
|
+
createNewLineLoader(),
|
|
2330
2410
|
createPrettierLoader({ parser: "yaml" }),
|
|
2331
2411
|
createYamlLoader(),
|
|
2332
2412
|
createFlatLoader(),
|
|
@@ -2336,6 +2416,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2336
2416
|
case "yaml-root-key":
|
|
2337
2417
|
return composeLoaders(
|
|
2338
2418
|
createTextFileLoader(bucketPathPattern),
|
|
2419
|
+
createNewLineLoader(),
|
|
2339
2420
|
createPrettierLoader({ parser: "yaml" }),
|
|
2340
2421
|
createYamlLoader(),
|
|
2341
2422
|
createRootKeyLoader(true),
|
|
@@ -2346,6 +2427,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2346
2427
|
case "flutter":
|
|
2347
2428
|
return composeLoaders(
|
|
2348
2429
|
createTextFileLoader(bucketPathPattern),
|
|
2430
|
+
createNewLineLoader(),
|
|
2349
2431
|
createPrettierLoader({ parser: "json" }),
|
|
2350
2432
|
createJsonLoader(),
|
|
2351
2433
|
createFlutterLoader(),
|
|
@@ -2356,6 +2438,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2356
2438
|
case "xliff":
|
|
2357
2439
|
return composeLoaders(
|
|
2358
2440
|
createTextFileLoader(bucketPathPattern),
|
|
2441
|
+
createNewLineLoader(),
|
|
2359
2442
|
createXliffLoader(),
|
|
2360
2443
|
createFlatLoader(),
|
|
2361
2444
|
createSyncLoader(),
|
|
@@ -2364,6 +2447,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2364
2447
|
case "xml":
|
|
2365
2448
|
return composeLoaders(
|
|
2366
2449
|
createTextFileLoader(bucketPathPattern),
|
|
2450
|
+
createNewLineLoader(),
|
|
2367
2451
|
createXmlLoader(),
|
|
2368
2452
|
createFlatLoader(),
|
|
2369
2453
|
createSyncLoader(),
|
|
@@ -2372,6 +2456,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2372
2456
|
case "srt":
|
|
2373
2457
|
return composeLoaders(
|
|
2374
2458
|
createTextFileLoader(bucketPathPattern),
|
|
2459
|
+
createNewLineLoader(),
|
|
2375
2460
|
createSrtLoader(),
|
|
2376
2461
|
createSyncLoader(),
|
|
2377
2462
|
createUnlocalizableLoader()
|
|
@@ -2379,6 +2464,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2379
2464
|
case "dato":
|
|
2380
2465
|
return composeLoaders(
|
|
2381
2466
|
createDatoLoader(bucketPathPattern),
|
|
2467
|
+
createNewLineLoader(),
|
|
2382
2468
|
createSyncLoader(),
|
|
2383
2469
|
createFlatLoader(),
|
|
2384
2470
|
createUnlocalizableLoader()
|
|
@@ -2386,6 +2472,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2386
2472
|
case "vtt":
|
|
2387
2473
|
return composeLoaders(
|
|
2388
2474
|
createTextFileLoader(bucketPathPattern),
|
|
2475
|
+
createNewLineLoader(),
|
|
2389
2476
|
createVttLoader(),
|
|
2390
2477
|
createSyncLoader(),
|
|
2391
2478
|
createUnlocalizableLoader()
|
|
@@ -2462,7 +2549,7 @@ var LockfileSchema = Z3.object({
|
|
|
2462
2549
|
).default({})
|
|
2463
2550
|
});
|
|
2464
2551
|
|
|
2465
|
-
// src/cli/
|
|
2552
|
+
// src/cli/cmd/i18n.ts
|
|
2466
2553
|
import chalk from "chalk";
|
|
2467
2554
|
import { createTwoFilesPatch } from "diff";
|
|
2468
2555
|
import inquirer2 from "inquirer";
|
|
@@ -2535,7 +2622,7 @@ function _tryParseJSON(line) {
|
|
|
2535
2622
|
}
|
|
2536
2623
|
}
|
|
2537
2624
|
|
|
2538
|
-
// src/cli/
|
|
2625
|
+
// src/cli/cmd/i18n.ts
|
|
2539
2626
|
var i18n_default = new Command6().command("i18n").description("Run Localization engine").helpOption("-h, --help", "Show help").option("--locale <locale>", "Locale to process", (val, prev) => prev ? [...prev, val] : [val]).option("--bucket <bucket>", "Bucket to process", (val, prev) => prev ? [...prev, val] : [val]).option("--key <key>", "Key to process").option("--frozen", `Don't update the translations and fail if an update is needed`).option("--force", "Ignore lockfile and process all keys").option("--verbose", "Show verbose output").option("--interactive", "Interactive mode").option("--api-key <api-key>", "Explicitly set the API key to use").option("--debug", "Debug mode").option("--strict", "Stop on first error").action(async function(options) {
|
|
2540
2627
|
const ora = Ora5();
|
|
2541
2628
|
const flags = parseFlags(options);
|
|
@@ -2958,7 +3045,7 @@ Editing value for: ${chalk.cyan(key)}`);
|
|
|
2958
3045
|
return customData;
|
|
2959
3046
|
}
|
|
2960
3047
|
|
|
2961
|
-
// src/cli/
|
|
3048
|
+
// src/cli/cmd/lockfile.ts
|
|
2962
3049
|
import { Command as Command7 } from "interactive-commander";
|
|
2963
3050
|
import Z5 from "zod";
|
|
2964
3051
|
import Ora6 from "ora";
|
|
@@ -2987,7 +3074,7 @@ var flagsSchema = Z5.object({
|
|
|
2987
3074
|
force: Z5.boolean().default(false)
|
|
2988
3075
|
});
|
|
2989
3076
|
|
|
2990
|
-
// src/cli/
|
|
3077
|
+
// src/cli/cmd/cleanup.ts
|
|
2991
3078
|
import { Command as Command8 } from "interactive-commander";
|
|
2992
3079
|
import _18 from "lodash";
|
|
2993
3080
|
import Ora7 from "ora";
|
|
@@ -3080,7 +3167,7 @@ function displaySummary(results) {
|
|
|
3080
3167
|
// package.json
|
|
3081
3168
|
var package_default = {
|
|
3082
3169
|
name: "lingo.dev",
|
|
3083
|
-
version: "0.
|
|
3170
|
+
version: "0.72.0",
|
|
3084
3171
|
description: "Lingo.dev CLI",
|
|
3085
3172
|
private: false,
|
|
3086
3173
|
type: "module",
|