lingo.dev 0.78.3 → 0.78.4
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 +62 -31
- package/build/cli.cjs.map +1 -1
- package/build/cli.mjs +62 -31
- package/build/cli.mjs.map +1 -1
- package/package.json +1 -1
package/build/cli.cjs
CHANGED
|
@@ -1803,7 +1803,7 @@ async function loadPrettierConfig() {
|
|
|
1803
1803
|
|
|
1804
1804
|
var _isurl = require('is-url'); var _isurl2 = _interopRequireDefault(_isurl);
|
|
1805
1805
|
var _datefns = require('date-fns');
|
|
1806
|
-
function createUnlocalizableLoader(isCacheRestore = false) {
|
|
1806
|
+
function createUnlocalizableLoader(isCacheRestore = false, returnUnlocalizedKeys = false) {
|
|
1807
1807
|
const rules = {
|
|
1808
1808
|
isEmpty: (v) => _lodash2.default.isEmpty(v),
|
|
1809
1809
|
isNumber: (v) => typeof v === "number" || /^[0-9]+$/.test(v),
|
|
@@ -1823,6 +1823,9 @@ function createUnlocalizableLoader(isCacheRestore = false) {
|
|
|
1823
1823
|
return false;
|
|
1824
1824
|
}).map(([key, _21]) => key);
|
|
1825
1825
|
const result = _lodash2.default.omitBy(input2, (_21, key) => passthroughKeys.includes(key));
|
|
1826
|
+
if (returnUnlocalizedKeys) {
|
|
1827
|
+
result.unlocalizable = _lodash2.default.omitBy(input2, (_21, key) => !passthroughKeys.includes(key));
|
|
1828
|
+
}
|
|
1826
1829
|
return result;
|
|
1827
1830
|
},
|
|
1828
1831
|
async push(locale, data, originalInput) {
|
|
@@ -2915,7 +2918,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
2915
2918
|
createAndroidLoader(),
|
|
2916
2919
|
createFlatLoader(),
|
|
2917
2920
|
createSyncLoader(),
|
|
2918
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
2921
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
2919
2922
|
);
|
|
2920
2923
|
case "csv":
|
|
2921
2924
|
return composeLoaders(
|
|
@@ -2923,7 +2926,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
2923
2926
|
createCsvLoader(),
|
|
2924
2927
|
createFlatLoader(),
|
|
2925
2928
|
createSyncLoader(),
|
|
2926
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
2929
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
2927
2930
|
);
|
|
2928
2931
|
case "html":
|
|
2929
2932
|
return composeLoaders(
|
|
@@ -2931,7 +2934,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
2931
2934
|
createPrettierLoader({ parser: "html", alwaysFormat: true }),
|
|
2932
2935
|
createHtmlLoader(),
|
|
2933
2936
|
createSyncLoader(),
|
|
2934
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
2937
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
2935
2938
|
);
|
|
2936
2939
|
case "json":
|
|
2937
2940
|
return composeLoaders(
|
|
@@ -2940,7 +2943,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
2940
2943
|
createJsonLoader(),
|
|
2941
2944
|
createFlatLoader(),
|
|
2942
2945
|
createSyncLoader(),
|
|
2943
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
2946
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
2944
2947
|
);
|
|
2945
2948
|
case "markdown":
|
|
2946
2949
|
return composeLoaders(
|
|
@@ -2948,7 +2951,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
2948
2951
|
createPrettierLoader({ parser: "markdown" }),
|
|
2949
2952
|
createMarkdownLoader(),
|
|
2950
2953
|
createSyncLoader(),
|
|
2951
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
2954
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
2952
2955
|
);
|
|
2953
2956
|
case "po":
|
|
2954
2957
|
return composeLoaders(
|
|
@@ -2956,7 +2959,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
2956
2959
|
createPoLoader(),
|
|
2957
2960
|
createFlatLoader(),
|
|
2958
2961
|
createSyncLoader(),
|
|
2959
|
-
createUnlocalizableLoader(options.isCacheRestore),
|
|
2962
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys),
|
|
2960
2963
|
createVariableLoader({ type: "python" })
|
|
2961
2964
|
);
|
|
2962
2965
|
case "properties":
|
|
@@ -2964,14 +2967,14 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
2964
2967
|
createTextFileLoader(bucketPathPattern),
|
|
2965
2968
|
createPropertiesLoader(),
|
|
2966
2969
|
createSyncLoader(),
|
|
2967
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
2970
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
2968
2971
|
);
|
|
2969
2972
|
case "xcode-strings":
|
|
2970
2973
|
return composeLoaders(
|
|
2971
2974
|
createTextFileLoader(bucketPathPattern),
|
|
2972
2975
|
createXcodeStringsLoader(),
|
|
2973
2976
|
createSyncLoader(),
|
|
2974
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
2977
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
2975
2978
|
);
|
|
2976
2979
|
case "xcode-stringsdict":
|
|
2977
2980
|
return composeLoaders(
|
|
@@ -2979,7 +2982,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
2979
2982
|
createXcodeStringsdictLoader(),
|
|
2980
2983
|
createFlatLoader(),
|
|
2981
2984
|
createSyncLoader(),
|
|
2982
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
2985
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
2983
2986
|
);
|
|
2984
2987
|
case "xcode-xcstrings":
|
|
2985
2988
|
return composeLoaders(
|
|
@@ -2989,7 +2992,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
2989
2992
|
createXcodeXcstringsLoader(options.defaultLocale),
|
|
2990
2993
|
createFlatLoader(),
|
|
2991
2994
|
createSyncLoader(),
|
|
2992
|
-
createUnlocalizableLoader(options.isCacheRestore),
|
|
2995
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys),
|
|
2993
2996
|
createVariableLoader({ type: "ieee" })
|
|
2994
2997
|
);
|
|
2995
2998
|
case "yaml":
|
|
@@ -2999,7 +3002,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
2999
3002
|
createYamlLoader(),
|
|
3000
3003
|
createFlatLoader(),
|
|
3001
3004
|
createSyncLoader(),
|
|
3002
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
3005
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
3003
3006
|
);
|
|
3004
3007
|
case "yaml-root-key":
|
|
3005
3008
|
return composeLoaders(
|
|
@@ -3009,7 +3012,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
3009
3012
|
createRootKeyLoader(true),
|
|
3010
3013
|
createFlatLoader(),
|
|
3011
3014
|
createSyncLoader(),
|
|
3012
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
3015
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
3013
3016
|
);
|
|
3014
3017
|
case "flutter":
|
|
3015
3018
|
return composeLoaders(
|
|
@@ -3019,7 +3022,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
3019
3022
|
createFlutterLoader(),
|
|
3020
3023
|
createFlatLoader(),
|
|
3021
3024
|
createSyncLoader(),
|
|
3022
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
3025
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
3023
3026
|
);
|
|
3024
3027
|
case "xliff":
|
|
3025
3028
|
return composeLoaders(
|
|
@@ -3027,7 +3030,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
3027
3030
|
createXliffLoader(),
|
|
3028
3031
|
createFlatLoader(),
|
|
3029
3032
|
createSyncLoader(),
|
|
3030
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
3033
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
3031
3034
|
);
|
|
3032
3035
|
case "xml":
|
|
3033
3036
|
return composeLoaders(
|
|
@@ -3035,28 +3038,28 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
3035
3038
|
createXmlLoader(),
|
|
3036
3039
|
createFlatLoader(),
|
|
3037
3040
|
createSyncLoader(),
|
|
3038
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
3041
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
3039
3042
|
);
|
|
3040
3043
|
case "srt":
|
|
3041
3044
|
return composeLoaders(
|
|
3042
3045
|
createTextFileLoader(bucketPathPattern),
|
|
3043
3046
|
createSrtLoader(),
|
|
3044
3047
|
createSyncLoader(),
|
|
3045
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
3048
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
3046
3049
|
);
|
|
3047
3050
|
case "dato":
|
|
3048
3051
|
return composeLoaders(
|
|
3049
3052
|
createDatoLoader(bucketPathPattern),
|
|
3050
3053
|
createSyncLoader(),
|
|
3051
3054
|
createFlatLoader(),
|
|
3052
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
3055
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
3053
3056
|
);
|
|
3054
3057
|
case "vtt":
|
|
3055
3058
|
return composeLoaders(
|
|
3056
3059
|
createTextFileLoader(bucketPathPattern),
|
|
3057
3060
|
createVttLoader(),
|
|
3058
3061
|
createSyncLoader(),
|
|
3059
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
3062
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
3060
3063
|
);
|
|
3061
3064
|
case "php":
|
|
3062
3065
|
return composeLoaders(
|
|
@@ -3064,7 +3067,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
3064
3067
|
createPhpLoader(),
|
|
3065
3068
|
createSyncLoader(),
|
|
3066
3069
|
createFlatLoader(),
|
|
3067
|
-
createUnlocalizableLoader(options.isCacheRestore)
|
|
3070
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
3068
3071
|
);
|
|
3069
3072
|
case "vue-json":
|
|
3070
3073
|
return composeLoaders(
|
|
@@ -3072,7 +3075,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options) {
|
|
|
3072
3075
|
createVueJsonLoader(),
|
|
3073
3076
|
createSyncLoader(),
|
|
3074
3077
|
createFlatLoader(),
|
|
3075
|
-
createUnlocalizableLoader()
|
|
3078
|
+
createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys)
|
|
3076
3079
|
);
|
|
3077
3080
|
}
|
|
3078
3081
|
}
|
|
@@ -3317,27 +3320,55 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
|
|
|
3317
3320
|
}
|
|
3318
3321
|
if (flags.frozen) {
|
|
3319
3322
|
ora.start("Checking for lockfile updates...");
|
|
3320
|
-
let requiresUpdate =
|
|
3321
|
-
for (const bucket of buckets) {
|
|
3323
|
+
let requiresUpdate = null;
|
|
3324
|
+
bucketLoop: for (const bucket of buckets) {
|
|
3322
3325
|
for (const bucketConfig of bucket.config) {
|
|
3323
3326
|
const sourceLocale = __spec.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
|
|
3324
3327
|
const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, {
|
|
3325
3328
|
isCacheRestore: false,
|
|
3326
|
-
defaultLocale: sourceLocale
|
|
3329
|
+
defaultLocale: sourceLocale,
|
|
3330
|
+
returnUnlocalizedKeys: true
|
|
3327
3331
|
});
|
|
3328
3332
|
bucketLoader.setDefaultLocale(sourceLocale);
|
|
3329
3333
|
await bucketLoader.init();
|
|
3330
|
-
const sourceData = await bucketLoader.pull(
|
|
3334
|
+
const { unlocalizable: sourceUnlocalizable, ...sourceData } = await bucketLoader.pull(
|
|
3335
|
+
i18nConfig.locale.source
|
|
3336
|
+
);
|
|
3331
3337
|
const updatedSourceData = lockfileHelper.extractUpdatedData(bucketConfig.pathPattern, sourceData);
|
|
3332
3338
|
if (Object.keys(updatedSourceData).length > 0) {
|
|
3333
|
-
requiresUpdate =
|
|
3334
|
-
break;
|
|
3339
|
+
requiresUpdate = "updated";
|
|
3340
|
+
break bucketLoop;
|
|
3341
|
+
}
|
|
3342
|
+
for (const _targetLocale of targetLocales) {
|
|
3343
|
+
const targetLocale = __spec.resolveOverridenLocale.call(void 0, _targetLocale, bucketConfig.delimiter);
|
|
3344
|
+
const { unlocalizable: targetUnlocalizable, ...targetData } = await bucketLoader.pull(targetLocale);
|
|
3345
|
+
const missingKeys = _lodash2.default.difference(Object.keys(sourceData), Object.keys(targetData));
|
|
3346
|
+
const extraKeys = _lodash2.default.difference(Object.keys(targetData), Object.keys(sourceData));
|
|
3347
|
+
const unlocalizableDataDiff = !_lodash2.default.isEqual(sourceUnlocalizable, targetUnlocalizable);
|
|
3348
|
+
if (missingKeys.length > 0) {
|
|
3349
|
+
requiresUpdate = "missing";
|
|
3350
|
+
break bucketLoop;
|
|
3351
|
+
}
|
|
3352
|
+
if (extraKeys.length > 0) {
|
|
3353
|
+
requiresUpdate = "extra";
|
|
3354
|
+
break bucketLoop;
|
|
3355
|
+
}
|
|
3356
|
+
if (unlocalizableDataDiff) {
|
|
3357
|
+
requiresUpdate = "unlocalizable";
|
|
3358
|
+
break bucketLoop;
|
|
3359
|
+
}
|
|
3335
3360
|
}
|
|
3336
3361
|
}
|
|
3337
|
-
if (requiresUpdate) break;
|
|
3338
3362
|
}
|
|
3339
3363
|
if (requiresUpdate) {
|
|
3340
|
-
|
|
3364
|
+
const message = {
|
|
3365
|
+
updated: "Source file has been updated.",
|
|
3366
|
+
missing: "Target file is missing translations.",
|
|
3367
|
+
extra: "Target file has extra translations not present in the source file.",
|
|
3368
|
+
unlocalizable: "Unlocalizable data (such as booleans, dates, URLs, etc.) do not match."
|
|
3369
|
+
}[requiresUpdate];
|
|
3370
|
+
ora.fail(`Localization data has changed; please update i18n.lock or run without --frozen.`);
|
|
3371
|
+
ora.fail(` Details: ${message}`);
|
|
3341
3372
|
process.exit(1);
|
|
3342
3373
|
} else {
|
|
3343
3374
|
ora.succeed("No lockfile updates required.");
|
|
@@ -3421,8 +3452,8 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
|
|
|
3421
3452
|
bucketOra.start(`Applying changes to ${bucketConfig} (${targetLocale})`);
|
|
3422
3453
|
}
|
|
3423
3454
|
const finalDiffSize = _lodash2.default.chain(finalTargetData).omitBy((value, key) => value === targetData[key]).size().value();
|
|
3455
|
+
await bucketLoader.push(targetLocale, finalTargetData);
|
|
3424
3456
|
if (finalDiffSize > 0 || flags.force) {
|
|
3425
|
-
await bucketLoader.push(targetLocale, finalTargetData);
|
|
3426
3457
|
bucketOra.succeed(`[${sourceLocale} -> ${targetLocale}] Localization completed`);
|
|
3427
3458
|
} else {
|
|
3428
3459
|
bucketOra.succeed(`[${sourceLocale} -> ${targetLocale}] Localization completed (no changes).`);
|
|
@@ -3837,7 +3868,7 @@ var mcp_default = new (0, _interactivecommander.Command)().command("mcp").descri
|
|
|
3837
3868
|
// package.json
|
|
3838
3869
|
var package_default = {
|
|
3839
3870
|
name: "lingo.dev",
|
|
3840
|
-
version: "0.78.
|
|
3871
|
+
version: "0.78.4",
|
|
3841
3872
|
description: "Lingo.dev CLI",
|
|
3842
3873
|
private: false,
|
|
3843
3874
|
publishConfig: {
|