@intlify/bundle-utils 11.0.7 → 11.1.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/lib/index.cjs +52 -2
- package/lib/index.d.cts +7 -2
- package/lib/index.d.mts +7 -2
- package/lib/index.d.ts +7 -2
- package/lib/index.mjs +52 -2
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
|
@@ -309,6 +309,38 @@ function generateResourceAst(msg, options = {}, path) {
|
|
|
309
309
|
const code = !occured ? `${shared.friendlyJSONstringify(ast)}` : `\`${_msg}\``;
|
|
310
310
|
return { code, ast, map, errors };
|
|
311
311
|
}
|
|
312
|
+
function filterMessageKeys(messages, shouldKeep, parentPath = []) {
|
|
313
|
+
const result = {};
|
|
314
|
+
for (const [key, value] of Object.entries(messages)) {
|
|
315
|
+
const currentPath = [...parentPath, key];
|
|
316
|
+
const dotPath = currentPath.join(".");
|
|
317
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
318
|
+
const filtered = filterMessageKeys(value, shouldKeep, currentPath);
|
|
319
|
+
if (Object.keys(filtered).length > 0) {
|
|
320
|
+
result[key] = filtered;
|
|
321
|
+
}
|
|
322
|
+
} else {
|
|
323
|
+
if (shouldKeep(dotPath)) {
|
|
324
|
+
result[key] = value;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return result;
|
|
329
|
+
}
|
|
330
|
+
function filterMultiLocaleMessages(messages, shouldKeep) {
|
|
331
|
+
const result = {};
|
|
332
|
+
for (const [locale, localeMessages] of Object.entries(messages)) {
|
|
333
|
+
if (typeof localeMessages === "object" && localeMessages !== null && !Array.isArray(localeMessages)) {
|
|
334
|
+
const filtered = filterMessageKeys(localeMessages, shouldKeep);
|
|
335
|
+
if (Object.keys(filtered).length > 0) {
|
|
336
|
+
result[locale] = filtered;
|
|
337
|
+
}
|
|
338
|
+
} else {
|
|
339
|
+
result[locale] = localeMessages;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return result;
|
|
343
|
+
}
|
|
312
344
|
function excludeLocales({
|
|
313
345
|
messages,
|
|
314
346
|
onlyLocales
|
|
@@ -637,7 +669,8 @@ function generate$2(targetSource, {
|
|
|
637
669
|
onError = void 0,
|
|
638
670
|
strictMessage = true,
|
|
639
671
|
escapeHtml = false,
|
|
640
|
-
jit = false
|
|
672
|
+
jit = false,
|
|
673
|
+
usedKeyFilter = void 0
|
|
641
674
|
}) {
|
|
642
675
|
let value = Buffer.isBuffer(targetSource) ? targetSource.toString() : targetSource;
|
|
643
676
|
const options = {
|
|
@@ -672,6 +705,14 @@ function generate$2(targetSource, {
|
|
|
672
705
|
options.locale = "";
|
|
673
706
|
options.source = void 0;
|
|
674
707
|
}
|
|
708
|
+
if (usedKeyFilter) {
|
|
709
|
+
const messages = jsoncEslintParser.getStaticJSONValue(ast);
|
|
710
|
+
const isMultiLocale = !locale && type === "sfc";
|
|
711
|
+
const filtered = isMultiLocale ? filterMultiLocaleMessages(messages, usedKeyFilter) : filterMessageKeys(messages, usedKeyFilter);
|
|
712
|
+
value = JSON.stringify(filtered);
|
|
713
|
+
ast = jsoncEslintParser.parseJSON(value, { filePath: filename });
|
|
714
|
+
options.source = value;
|
|
715
|
+
}
|
|
675
716
|
const generator = createCodeGenerator(options);
|
|
676
717
|
const codeMaps = _generate$1(generator, ast, options);
|
|
677
718
|
const { code, map } = generator.context();
|
|
@@ -839,7 +880,8 @@ function generate(targetSource, {
|
|
|
839
880
|
onError = void 0,
|
|
840
881
|
strictMessage = true,
|
|
841
882
|
escapeHtml = false,
|
|
842
|
-
jit = false
|
|
883
|
+
jit = false,
|
|
884
|
+
usedKeyFilter = void 0
|
|
843
885
|
}) {
|
|
844
886
|
let value = Buffer.isBuffer(targetSource) ? targetSource.toString() : targetSource;
|
|
845
887
|
const options = {
|
|
@@ -874,6 +916,14 @@ function generate(targetSource, {
|
|
|
874
916
|
options.locale = "";
|
|
875
917
|
options.source = void 0;
|
|
876
918
|
}
|
|
919
|
+
if (usedKeyFilter) {
|
|
920
|
+
const messages = yamlEslintParser.getStaticYAMLValue(ast);
|
|
921
|
+
const isMultiLocale = !locale && type === "sfc";
|
|
922
|
+
const filtered = isMultiLocale ? filterMultiLocaleMessages(messages, usedKeyFilter) : filterMessageKeys(messages, usedKeyFilter);
|
|
923
|
+
value = JSON.stringify(filtered);
|
|
924
|
+
ast = yamlEslintParser.parseYAML(value, { filePath: filename });
|
|
925
|
+
options.source = value;
|
|
926
|
+
}
|
|
877
927
|
const generator = createCodeGenerator(options);
|
|
878
928
|
const codeMaps = _generate(generator, ast, options);
|
|
879
929
|
const { code, map } = generator.context();
|
package/lib/index.d.cts
CHANGED
|
@@ -36,6 +36,11 @@ interface CodeGenOptions {
|
|
|
36
36
|
jit?: boolean;
|
|
37
37
|
minify?: boolean;
|
|
38
38
|
transformI18nBlock?: (source: string | Buffer) => string;
|
|
39
|
+
/**
|
|
40
|
+
* When provided, only keys matching this filter will be included in output.
|
|
41
|
+
* The function receives a dot-separated key path and returns true to keep.
|
|
42
|
+
*/
|
|
43
|
+
usedKeyFilter?: (keyPath: string) => boolean;
|
|
39
44
|
onWarn?: (msg: string) => void;
|
|
40
45
|
onError?: (msg: string, extra?: {
|
|
41
46
|
source: string;
|
|
@@ -65,7 +70,7 @@ declare function generate$3(targetSource: string | Buffer, options: CodeGenOptio
|
|
|
65
70
|
* Code / AST generator for i18n json/json5 resource
|
|
66
71
|
*/
|
|
67
72
|
|
|
68
|
-
declare function generate$2(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit }: CodeGenOptions): CodeGenResult<JSONProgram>;
|
|
73
|
+
declare function generate$2(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit, usedKeyFilter }: CodeGenOptions): CodeGenResult<JSONProgram>;
|
|
69
74
|
|
|
70
75
|
/**
|
|
71
76
|
* Code generator for i18n ts resource
|
|
@@ -85,7 +90,7 @@ declare function generate$1(targetSource: string | Buffer, options: CodeGenOptio
|
|
|
85
90
|
/**
|
|
86
91
|
* @internal
|
|
87
92
|
*/
|
|
88
|
-
declare function generate(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit }: CodeGenOptions): CodeGenResult<YAMLProgram>;
|
|
93
|
+
declare function generate(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit, usedKeyFilter }: CodeGenOptions): CodeGenResult<YAMLProgram>;
|
|
89
94
|
|
|
90
95
|
export { checkInstallPackage, generate$2 as generateJSON, generate$3 as generateJavaScript, generate$1 as generateTypescript, generate as generateYAML, getVueI18nVersion };
|
|
91
96
|
export type { CodeGenOptions, CodeGenResult, DevEnv, InstalledPackage };
|
package/lib/index.d.mts
CHANGED
|
@@ -36,6 +36,11 @@ interface CodeGenOptions {
|
|
|
36
36
|
jit?: boolean;
|
|
37
37
|
minify?: boolean;
|
|
38
38
|
transformI18nBlock?: (source: string | Buffer) => string;
|
|
39
|
+
/**
|
|
40
|
+
* When provided, only keys matching this filter will be included in output.
|
|
41
|
+
* The function receives a dot-separated key path and returns true to keep.
|
|
42
|
+
*/
|
|
43
|
+
usedKeyFilter?: (keyPath: string) => boolean;
|
|
39
44
|
onWarn?: (msg: string) => void;
|
|
40
45
|
onError?: (msg: string, extra?: {
|
|
41
46
|
source: string;
|
|
@@ -65,7 +70,7 @@ declare function generate$3(targetSource: string | Buffer, options: CodeGenOptio
|
|
|
65
70
|
* Code / AST generator for i18n json/json5 resource
|
|
66
71
|
*/
|
|
67
72
|
|
|
68
|
-
declare function generate$2(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit }: CodeGenOptions): CodeGenResult<JSONProgram>;
|
|
73
|
+
declare function generate$2(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit, usedKeyFilter }: CodeGenOptions): CodeGenResult<JSONProgram>;
|
|
69
74
|
|
|
70
75
|
/**
|
|
71
76
|
* Code generator for i18n ts resource
|
|
@@ -85,7 +90,7 @@ declare function generate$1(targetSource: string | Buffer, options: CodeGenOptio
|
|
|
85
90
|
/**
|
|
86
91
|
* @internal
|
|
87
92
|
*/
|
|
88
|
-
declare function generate(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit }: CodeGenOptions): CodeGenResult<YAMLProgram>;
|
|
93
|
+
declare function generate(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit, usedKeyFilter }: CodeGenOptions): CodeGenResult<YAMLProgram>;
|
|
89
94
|
|
|
90
95
|
export { checkInstallPackage, generate$2 as generateJSON, generate$3 as generateJavaScript, generate$1 as generateTypescript, generate as generateYAML, getVueI18nVersion };
|
|
91
96
|
export type { CodeGenOptions, CodeGenResult, DevEnv, InstalledPackage };
|
package/lib/index.d.ts
CHANGED
|
@@ -36,6 +36,11 @@ interface CodeGenOptions {
|
|
|
36
36
|
jit?: boolean;
|
|
37
37
|
minify?: boolean;
|
|
38
38
|
transformI18nBlock?: (source: string | Buffer) => string;
|
|
39
|
+
/**
|
|
40
|
+
* When provided, only keys matching this filter will be included in output.
|
|
41
|
+
* The function receives a dot-separated key path and returns true to keep.
|
|
42
|
+
*/
|
|
43
|
+
usedKeyFilter?: (keyPath: string) => boolean;
|
|
39
44
|
onWarn?: (msg: string) => void;
|
|
40
45
|
onError?: (msg: string, extra?: {
|
|
41
46
|
source: string;
|
|
@@ -65,7 +70,7 @@ declare function generate$3(targetSource: string | Buffer, options: CodeGenOptio
|
|
|
65
70
|
* Code / AST generator for i18n json/json5 resource
|
|
66
71
|
*/
|
|
67
72
|
|
|
68
|
-
declare function generate$2(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit }: CodeGenOptions): CodeGenResult<JSONProgram>;
|
|
73
|
+
declare function generate$2(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit, usedKeyFilter }: CodeGenOptions): CodeGenResult<JSONProgram>;
|
|
69
74
|
|
|
70
75
|
/**
|
|
71
76
|
* Code generator for i18n ts resource
|
|
@@ -85,7 +90,7 @@ declare function generate$1(targetSource: string | Buffer, options: CodeGenOptio
|
|
|
85
90
|
/**
|
|
86
91
|
* @internal
|
|
87
92
|
*/
|
|
88
|
-
declare function generate(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit }: CodeGenOptions): CodeGenResult<YAMLProgram>;
|
|
93
|
+
declare function generate(targetSource: string | Buffer, { type, onlyLocales, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, strictMessage, escapeHtml, jit, usedKeyFilter }: CodeGenOptions): CodeGenResult<YAMLProgram>;
|
|
89
94
|
|
|
90
95
|
export { checkInstallPackage, generate$2 as generateJSON, generate$3 as generateJavaScript, generate$1 as generateTypescript, generate as generateYAML, getVueI18nVersion };
|
|
91
96
|
export type { CodeGenOptions, CodeGenResult, DevEnv, InstalledPackage };
|
package/lib/index.mjs
CHANGED
|
@@ -302,6 +302,38 @@ function generateResourceAst(msg, options = {}, path) {
|
|
|
302
302
|
const code = !occured ? `${friendlyJSONstringify(ast)}` : `\`${_msg}\``;
|
|
303
303
|
return { code, ast, map, errors };
|
|
304
304
|
}
|
|
305
|
+
function filterMessageKeys(messages, shouldKeep, parentPath = []) {
|
|
306
|
+
const result = {};
|
|
307
|
+
for (const [key, value] of Object.entries(messages)) {
|
|
308
|
+
const currentPath = [...parentPath, key];
|
|
309
|
+
const dotPath = currentPath.join(".");
|
|
310
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
311
|
+
const filtered = filterMessageKeys(value, shouldKeep, currentPath);
|
|
312
|
+
if (Object.keys(filtered).length > 0) {
|
|
313
|
+
result[key] = filtered;
|
|
314
|
+
}
|
|
315
|
+
} else {
|
|
316
|
+
if (shouldKeep(dotPath)) {
|
|
317
|
+
result[key] = value;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
return result;
|
|
322
|
+
}
|
|
323
|
+
function filterMultiLocaleMessages(messages, shouldKeep) {
|
|
324
|
+
const result = {};
|
|
325
|
+
for (const [locale, localeMessages] of Object.entries(messages)) {
|
|
326
|
+
if (typeof localeMessages === "object" && localeMessages !== null && !Array.isArray(localeMessages)) {
|
|
327
|
+
const filtered = filterMessageKeys(localeMessages, shouldKeep);
|
|
328
|
+
if (Object.keys(filtered).length > 0) {
|
|
329
|
+
result[locale] = filtered;
|
|
330
|
+
}
|
|
331
|
+
} else {
|
|
332
|
+
result[locale] = localeMessages;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return result;
|
|
336
|
+
}
|
|
305
337
|
function excludeLocales({
|
|
306
338
|
messages,
|
|
307
339
|
onlyLocales
|
|
@@ -630,7 +662,8 @@ function generate$2(targetSource, {
|
|
|
630
662
|
onError = void 0,
|
|
631
663
|
strictMessage = true,
|
|
632
664
|
escapeHtml = false,
|
|
633
|
-
jit = false
|
|
665
|
+
jit = false,
|
|
666
|
+
usedKeyFilter = void 0
|
|
634
667
|
}) {
|
|
635
668
|
let value = Buffer.isBuffer(targetSource) ? targetSource.toString() : targetSource;
|
|
636
669
|
const options = {
|
|
@@ -665,6 +698,14 @@ function generate$2(targetSource, {
|
|
|
665
698
|
options.locale = "";
|
|
666
699
|
options.source = void 0;
|
|
667
700
|
}
|
|
701
|
+
if (usedKeyFilter) {
|
|
702
|
+
const messages = getStaticJSONValue(ast);
|
|
703
|
+
const isMultiLocale = !locale && type === "sfc";
|
|
704
|
+
const filtered = isMultiLocale ? filterMultiLocaleMessages(messages, usedKeyFilter) : filterMessageKeys(messages, usedKeyFilter);
|
|
705
|
+
value = JSON.stringify(filtered);
|
|
706
|
+
ast = parseJSON(value, { filePath: filename });
|
|
707
|
+
options.source = value;
|
|
708
|
+
}
|
|
668
709
|
const generator = createCodeGenerator(options);
|
|
669
710
|
const codeMaps = _generate$1(generator, ast, options);
|
|
670
711
|
const { code, map } = generator.context();
|
|
@@ -832,7 +873,8 @@ function generate(targetSource, {
|
|
|
832
873
|
onError = void 0,
|
|
833
874
|
strictMessage = true,
|
|
834
875
|
escapeHtml = false,
|
|
835
|
-
jit = false
|
|
876
|
+
jit = false,
|
|
877
|
+
usedKeyFilter = void 0
|
|
836
878
|
}) {
|
|
837
879
|
let value = Buffer.isBuffer(targetSource) ? targetSource.toString() : targetSource;
|
|
838
880
|
const options = {
|
|
@@ -867,6 +909,14 @@ function generate(targetSource, {
|
|
|
867
909
|
options.locale = "";
|
|
868
910
|
options.source = void 0;
|
|
869
911
|
}
|
|
912
|
+
if (usedKeyFilter) {
|
|
913
|
+
const messages = getStaticYAMLValue(ast);
|
|
914
|
+
const isMultiLocale = !locale && type === "sfc";
|
|
915
|
+
const filtered = isMultiLocale ? filterMultiLocaleMessages(messages, usedKeyFilter) : filterMessageKeys(messages, usedKeyFilter);
|
|
916
|
+
value = JSON.stringify(filtered);
|
|
917
|
+
ast = parseYAML(value, { filePath: filename });
|
|
918
|
+
options.source = value;
|
|
919
|
+
}
|
|
870
920
|
const generator = createCodeGenerator(options);
|
|
871
921
|
const codeMaps = _generate(generator, ast, options);
|
|
872
922
|
const { code, map } = generator.context();
|