lingo.dev 0.74.16 → 0.75.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 +101 -27
- package/build/cli.cjs.map +1 -1
- package/build/cli.mjs +101 -27
- package/build/cli.mjs.map +1 -1
- package/package.json +4 -3
package/build/cli.cjs
CHANGED
|
@@ -287,6 +287,8 @@ function findLocaleFiles(bucket) {
|
|
|
287
287
|
return findLocaleFilesWithExtension(".xml");
|
|
288
288
|
case "markdown":
|
|
289
289
|
return findLocaleFilesWithExtension(".md");
|
|
290
|
+
case "php":
|
|
291
|
+
return findLocaleFilesWithExtension(".php");
|
|
290
292
|
case "xcode-xcstrings":
|
|
291
293
|
return findLocaleFilesForFilename("Localizable.xcstrings");
|
|
292
294
|
case "xcode-strings":
|
|
@@ -518,7 +520,7 @@ var init_default = new (0, _interactivecommander.InteractiveCommand)().command("
|
|
|
518
520
|
} else {
|
|
519
521
|
spinner.succeed("No existing locale files found.");
|
|
520
522
|
const useDefault = await _prompts.confirm.call(void 0, {
|
|
521
|
-
message: `Use default path ${patterns.join(", ")}?`
|
|
523
|
+
message: `Use (and create) default path ${patterns.join(", ")}?`
|
|
522
524
|
});
|
|
523
525
|
ensurePatterns(patterns, options.source);
|
|
524
526
|
if (useDefault) {
|
|
@@ -1588,7 +1590,7 @@ async function loadPrettierConfig() {
|
|
|
1588
1590
|
|
|
1589
1591
|
var _isurl = require('is-url'); var _isurl2 = _interopRequireDefault(_isurl);
|
|
1590
1592
|
var _datefns = require('date-fns');
|
|
1591
|
-
function createUnlocalizableLoader() {
|
|
1593
|
+
function createUnlocalizableLoader(isCacheRestore = false) {
|
|
1592
1594
|
const rules = {
|
|
1593
1595
|
isEmpty: (v) => _lodash2.default.isEmpty(v),
|
|
1594
1596
|
isNumber: (v) => !_lodash2.default.isNaN(_lodash2.default.toNumber(v)),
|
|
@@ -1611,6 +1613,9 @@ function createUnlocalizableLoader() {
|
|
|
1611
1613
|
return result;
|
|
1612
1614
|
},
|
|
1613
1615
|
async push(locale, data, originalInput) {
|
|
1616
|
+
if (isCacheRestore) {
|
|
1617
|
+
return _lodash2.default.merge({}, data);
|
|
1618
|
+
}
|
|
1614
1619
|
const result = _lodash2.default.merge({}, originalInput, data);
|
|
1615
1620
|
return result;
|
|
1616
1621
|
}
|
|
@@ -2534,10 +2539,10 @@ function createSyncLoader() {
|
|
|
2534
2539
|
|
|
2535
2540
|
// src/cli/utils/plutil-formatter.ts
|
|
2536
2541
|
function formatPlutilStyle(jsonData, existingJson) {
|
|
2537
|
-
const
|
|
2542
|
+
const indent2 = existingJson ? detectIndentation(existingJson) : " ";
|
|
2538
2543
|
function format(data, level = 0) {
|
|
2539
|
-
const currentIndent =
|
|
2540
|
-
const nextIndent =
|
|
2544
|
+
const currentIndent = indent2.repeat(level);
|
|
2545
|
+
const nextIndent = indent2.repeat(level + 1);
|
|
2541
2546
|
if (typeof data !== "object" || data === null) {
|
|
2542
2547
|
return JSON.stringify(data);
|
|
2543
2548
|
}
|
|
@@ -2591,8 +2596,68 @@ function createPlutilJsonTextLoader() {
|
|
|
2591
2596
|
});
|
|
2592
2597
|
}
|
|
2593
2598
|
|
|
2599
|
+
// src/cli/loaders/php.ts
|
|
2600
|
+
var _phparrayreader = require('php-array-reader');
|
|
2601
|
+
function createPhpLoader() {
|
|
2602
|
+
return createLoader({
|
|
2603
|
+
pull: async (locale, input2) => {
|
|
2604
|
+
try {
|
|
2605
|
+
const output = _phparrayreader.fromString.call(void 0, input2);
|
|
2606
|
+
return output;
|
|
2607
|
+
} catch (error) {
|
|
2608
|
+
throw new Error(`Error parsing PHP file for locale ${locale}`);
|
|
2609
|
+
}
|
|
2610
|
+
},
|
|
2611
|
+
push: async (locale, data, originalInput) => {
|
|
2612
|
+
const output = toPhpString(data, originalInput);
|
|
2613
|
+
return output;
|
|
2614
|
+
}
|
|
2615
|
+
});
|
|
2616
|
+
}
|
|
2617
|
+
function toPhpString(data, originalPhpString) {
|
|
2618
|
+
const defaultFilePrefix = "<?php\n\n";
|
|
2619
|
+
if (originalPhpString) {
|
|
2620
|
+
const [filePrefix = defaultFilePrefix] = originalPhpString.split("return ");
|
|
2621
|
+
const shortArraySyntax = !originalPhpString.includes("array(");
|
|
2622
|
+
const output = `${filePrefix}return ${toPhpArray(data, shortArraySyntax)};`;
|
|
2623
|
+
return output;
|
|
2624
|
+
}
|
|
2625
|
+
return `${defaultFilePrefix}return ${toPhpArray(data)};`;
|
|
2626
|
+
}
|
|
2627
|
+
function toPhpArray(data, shortSyntax = true, indentLevel = 1) {
|
|
2628
|
+
if (data === null || data === void 0) {
|
|
2629
|
+
return "null";
|
|
2630
|
+
}
|
|
2631
|
+
if (typeof data === "string") {
|
|
2632
|
+
return `'${escapePhpString(data)}'`;
|
|
2633
|
+
}
|
|
2634
|
+
if (typeof data === "number") {
|
|
2635
|
+
return data.toString();
|
|
2636
|
+
}
|
|
2637
|
+
if (typeof data === "boolean") {
|
|
2638
|
+
return data ? "true" : "false";
|
|
2639
|
+
}
|
|
2640
|
+
const arrayStart = shortSyntax ? "[" : "array(";
|
|
2641
|
+
const arrayEnd = shortSyntax ? "]" : ")";
|
|
2642
|
+
if (Array.isArray(data)) {
|
|
2643
|
+
return `${arrayStart}
|
|
2644
|
+
${data.map((value) => `${indent(indentLevel)}${toPhpArray(value, shortSyntax, indentLevel + 1)}`).join(",\n")}
|
|
2645
|
+
${indent(indentLevel - 1)}${arrayEnd}`;
|
|
2646
|
+
}
|
|
2647
|
+
const output = `${arrayStart}
|
|
2648
|
+
${Object.entries(data).map(([key, value]) => `${indent(indentLevel)}'${key}' => ${toPhpArray(value, shortSyntax, indentLevel + 1)}`).join(",\n")}
|
|
2649
|
+
${indent(indentLevel - 1)}${arrayEnd}`;
|
|
2650
|
+
return output;
|
|
2651
|
+
}
|
|
2652
|
+
function indent(level) {
|
|
2653
|
+
return " ".repeat(level);
|
|
2654
|
+
}
|
|
2655
|
+
function escapePhpString(str) {
|
|
2656
|
+
return str.replaceAll("\\", "\\\\").replaceAll("'", "\\'").replaceAll("\r", "\\r").replaceAll("\n", "\\n").replaceAll(" ", "\\t");
|
|
2657
|
+
}
|
|
2658
|
+
|
|
2594
2659
|
// src/cli/loaders/index.ts
|
|
2595
|
-
function createBucketLoader(bucketType, bucketPathPattern) {
|
|
2660
|
+
function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = false } = {}) {
|
|
2596
2661
|
switch (bucketType) {
|
|
2597
2662
|
default:
|
|
2598
2663
|
throw new Error(`Unsupported bucket type: ${bucketType}`);
|
|
@@ -2602,7 +2667,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2602
2667
|
createAndroidLoader(),
|
|
2603
2668
|
createFlatLoader(),
|
|
2604
2669
|
createSyncLoader(),
|
|
2605
|
-
createUnlocalizableLoader()
|
|
2670
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2606
2671
|
);
|
|
2607
2672
|
case "csv":
|
|
2608
2673
|
return composeLoaders(
|
|
@@ -2610,7 +2675,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2610
2675
|
createCsvLoader(),
|
|
2611
2676
|
createFlatLoader(),
|
|
2612
2677
|
createSyncLoader(),
|
|
2613
|
-
createUnlocalizableLoader()
|
|
2678
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2614
2679
|
);
|
|
2615
2680
|
case "html":
|
|
2616
2681
|
return composeLoaders(
|
|
@@ -2618,7 +2683,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2618
2683
|
createPrettierLoader({ parser: "html", alwaysFormat: true }),
|
|
2619
2684
|
createHtmlLoader(),
|
|
2620
2685
|
createSyncLoader(),
|
|
2621
|
-
createUnlocalizableLoader()
|
|
2686
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2622
2687
|
);
|
|
2623
2688
|
case "json":
|
|
2624
2689
|
return composeLoaders(
|
|
@@ -2627,7 +2692,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2627
2692
|
createJsonLoader(),
|
|
2628
2693
|
createFlatLoader(),
|
|
2629
2694
|
createSyncLoader(),
|
|
2630
|
-
createUnlocalizableLoader()
|
|
2695
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2631
2696
|
);
|
|
2632
2697
|
case "markdown":
|
|
2633
2698
|
return composeLoaders(
|
|
@@ -2635,7 +2700,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2635
2700
|
createPrettierLoader({ parser: "markdown" }),
|
|
2636
2701
|
createMarkdownLoader(),
|
|
2637
2702
|
createSyncLoader(),
|
|
2638
|
-
createUnlocalizableLoader()
|
|
2703
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2639
2704
|
);
|
|
2640
2705
|
case "po":
|
|
2641
2706
|
return composeLoaders(
|
|
@@ -2643,7 +2708,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2643
2708
|
createPoLoader(),
|
|
2644
2709
|
createFlatLoader(),
|
|
2645
2710
|
createSyncLoader(),
|
|
2646
|
-
createUnlocalizableLoader(),
|
|
2711
|
+
createUnlocalizableLoader(isCacheRestore),
|
|
2647
2712
|
createVariableLoader({ type: "python" })
|
|
2648
2713
|
);
|
|
2649
2714
|
case "properties":
|
|
@@ -2651,14 +2716,14 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2651
2716
|
createTextFileLoader(bucketPathPattern),
|
|
2652
2717
|
createPropertiesLoader(),
|
|
2653
2718
|
createSyncLoader(),
|
|
2654
|
-
createUnlocalizableLoader()
|
|
2719
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2655
2720
|
);
|
|
2656
2721
|
case "xcode-strings":
|
|
2657
2722
|
return composeLoaders(
|
|
2658
2723
|
createTextFileLoader(bucketPathPattern),
|
|
2659
2724
|
createXcodeStringsLoader(),
|
|
2660
2725
|
createSyncLoader(),
|
|
2661
|
-
createUnlocalizableLoader()
|
|
2726
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2662
2727
|
);
|
|
2663
2728
|
case "xcode-stringsdict":
|
|
2664
2729
|
return composeLoaders(
|
|
@@ -2666,7 +2731,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2666
2731
|
createXcodeStringsdictLoader(),
|
|
2667
2732
|
createFlatLoader(),
|
|
2668
2733
|
createSyncLoader(),
|
|
2669
|
-
createUnlocalizableLoader()
|
|
2734
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2670
2735
|
);
|
|
2671
2736
|
case "xcode-xcstrings":
|
|
2672
2737
|
return composeLoaders(
|
|
@@ -2676,7 +2741,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2676
2741
|
createXcodeXcstringsLoader(),
|
|
2677
2742
|
createFlatLoader(),
|
|
2678
2743
|
createSyncLoader(),
|
|
2679
|
-
createUnlocalizableLoader(),
|
|
2744
|
+
createUnlocalizableLoader(isCacheRestore),
|
|
2680
2745
|
createVariableLoader({ type: "ieee" })
|
|
2681
2746
|
);
|
|
2682
2747
|
case "yaml":
|
|
@@ -2686,7 +2751,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2686
2751
|
createYamlLoader(),
|
|
2687
2752
|
createFlatLoader(),
|
|
2688
2753
|
createSyncLoader(),
|
|
2689
|
-
createUnlocalizableLoader()
|
|
2754
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2690
2755
|
);
|
|
2691
2756
|
case "yaml-root-key":
|
|
2692
2757
|
return composeLoaders(
|
|
@@ -2696,7 +2761,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2696
2761
|
createRootKeyLoader(true),
|
|
2697
2762
|
createFlatLoader(),
|
|
2698
2763
|
createSyncLoader(),
|
|
2699
|
-
createUnlocalizableLoader()
|
|
2764
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2700
2765
|
);
|
|
2701
2766
|
case "flutter":
|
|
2702
2767
|
return composeLoaders(
|
|
@@ -2706,7 +2771,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2706
2771
|
createFlutterLoader(),
|
|
2707
2772
|
createFlatLoader(),
|
|
2708
2773
|
createSyncLoader(),
|
|
2709
|
-
createUnlocalizableLoader()
|
|
2774
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2710
2775
|
);
|
|
2711
2776
|
case "xliff":
|
|
2712
2777
|
return composeLoaders(
|
|
@@ -2714,7 +2779,7 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2714
2779
|
createXliffLoader(),
|
|
2715
2780
|
createFlatLoader(),
|
|
2716
2781
|
createSyncLoader(),
|
|
2717
|
-
createUnlocalizableLoader()
|
|
2782
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2718
2783
|
);
|
|
2719
2784
|
case "xml":
|
|
2720
2785
|
return composeLoaders(
|
|
@@ -2722,27 +2787,35 @@ function createBucketLoader(bucketType, bucketPathPattern) {
|
|
|
2722
2787
|
createXmlLoader(),
|
|
2723
2788
|
createFlatLoader(),
|
|
2724
2789
|
createSyncLoader(),
|
|
2725
|
-
createUnlocalizableLoader()
|
|
2790
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2726
2791
|
);
|
|
2727
2792
|
case "srt":
|
|
2728
2793
|
return composeLoaders(
|
|
2729
2794
|
createTextFileLoader(bucketPathPattern),
|
|
2730
2795
|
createSrtLoader(),
|
|
2731
2796
|
createSyncLoader(),
|
|
2732
|
-
createUnlocalizableLoader()
|
|
2797
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2733
2798
|
);
|
|
2734
2799
|
case "dato":
|
|
2735
2800
|
return composeLoaders(
|
|
2736
2801
|
createDatoLoader(bucketPathPattern),
|
|
2737
2802
|
createSyncLoader(),
|
|
2738
2803
|
createFlatLoader(),
|
|
2739
|
-
createUnlocalizableLoader()
|
|
2804
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2740
2805
|
);
|
|
2741
2806
|
case "vtt":
|
|
2742
2807
|
return composeLoaders(
|
|
2743
2808
|
createTextFileLoader(bucketPathPattern),
|
|
2744
2809
|
createVttLoader(),
|
|
2745
2810
|
createSyncLoader(),
|
|
2811
|
+
createUnlocalizableLoader(isCacheRestore)
|
|
2812
|
+
);
|
|
2813
|
+
case "php":
|
|
2814
|
+
return composeLoaders(
|
|
2815
|
+
createTextFileLoader(bucketPathPattern),
|
|
2816
|
+
createPhpLoader(),
|
|
2817
|
+
createSyncLoader(),
|
|
2818
|
+
createFlatLoader(),
|
|
2746
2819
|
createUnlocalizableLoader()
|
|
2747
2820
|
);
|
|
2748
2821
|
}
|
|
@@ -2950,7 +3023,7 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
|
|
|
2950
3023
|
const bucketOra = _ora2.default.call(void 0, { indent: 4 });
|
|
2951
3024
|
bucketOra.info(`Processing path: ${bucketConfig.pathPattern}`);
|
|
2952
3025
|
const sourceLocale = __spec.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
|
|
2953
|
-
const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
|
|
3026
|
+
const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, { isCacheRestore: true });
|
|
2954
3027
|
bucketLoader.setDefaultLocale(sourceLocale);
|
|
2955
3028
|
await bucketLoader.init();
|
|
2956
3029
|
const sourceData = await bucketLoader.pull(sourceLocale);
|
|
@@ -3438,7 +3511,7 @@ function displaySummary(results) {
|
|
|
3438
3511
|
// package.json
|
|
3439
3512
|
var package_default = {
|
|
3440
3513
|
name: "lingo.dev",
|
|
3441
|
-
version: "0.
|
|
3514
|
+
version: "0.75.0",
|
|
3442
3515
|
description: "Lingo.dev CLI",
|
|
3443
3516
|
private: false,
|
|
3444
3517
|
publishConfig: {
|
|
@@ -3482,10 +3555,10 @@ var package_default = {
|
|
|
3482
3555
|
author: "",
|
|
3483
3556
|
license: "Apache-2.0",
|
|
3484
3557
|
dependencies: {
|
|
3485
|
-
"@lingo.dev/_sdk": "workspace:*",
|
|
3486
|
-
"@lingo.dev/_spec": "workspace:*",
|
|
3487
3558
|
"@datocms/cma-client-node": "^3.4.0",
|
|
3488
3559
|
"@inquirer/prompts": "^7.2.3",
|
|
3560
|
+
"@lingo.dev/_sdk": "workspace:*",
|
|
3561
|
+
"@lingo.dev/_spec": "workspace:*",
|
|
3489
3562
|
"@paralleldrive/cuid2": "^2.2.2",
|
|
3490
3563
|
chalk: "^5.4.1",
|
|
3491
3564
|
cors: "^2.8.5",
|
|
@@ -3519,6 +3592,7 @@ var package_default = {
|
|
|
3519
3592
|
open: "^10.1.0",
|
|
3520
3593
|
ora: "^8.1.1",
|
|
3521
3594
|
"p-limit": "^6.2.0",
|
|
3595
|
+
"php-array-reader": "^2.1.2",
|
|
3522
3596
|
plist: "^3.1.0",
|
|
3523
3597
|
prettier: "^3.4.2",
|
|
3524
3598
|
"properties-parser": "^0.6.0",
|