i18next-cli 1.42.2 → 1.42.3
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/dist/cjs/cli.js +1 -1
- package/dist/cjs/linter.js +7 -2
- package/dist/esm/cli.js +1 -1
- package/dist/esm/linter.js +7 -2
- package/package.json +1 -1
- package/types/linter.d.ts.map +1 -1
package/dist/cjs/cli.js
CHANGED
|
@@ -28,7 +28,7 @@ const program = new commander.Command();
|
|
|
28
28
|
program
|
|
29
29
|
.name('i18next-cli')
|
|
30
30
|
.description('A unified, high-performance i18next CLI.')
|
|
31
|
-
.version('1.42.
|
|
31
|
+
.version('1.42.3'); // This string is replaced with the actual version at build time by rollup
|
|
32
32
|
// new: global config override option
|
|
33
33
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
34
34
|
program
|
package/dist/cjs/linter.js
CHANGED
|
@@ -119,8 +119,11 @@ function lintInterpolationParams(ast, code, config) {
|
|
|
119
119
|
const issueLineNumber = position > -1 ? getLineNumber(position) : 1;
|
|
120
120
|
// Only check for unused parameters if there is at least one interpolation key in the string
|
|
121
121
|
if (keys.length > 0) {
|
|
122
|
+
// i18next supports nested object access via dot notation (e.g. {{author.name}} with { author }).
|
|
123
|
+
// For each interpolation key, check if the root (part before the first dot) matches a provided param.
|
|
122
124
|
for (const k of keys) {
|
|
123
|
-
|
|
125
|
+
const root = k.split('.')[0];
|
|
126
|
+
if (!paramKeys.includes(k) && !paramKeys.includes(root)) {
|
|
124
127
|
issues.push({
|
|
125
128
|
text: `Interpolation parameter "${k}" was not provided`,
|
|
126
129
|
line: issueLineNumber,
|
|
@@ -128,8 +131,10 @@ function lintInterpolationParams(ast, code, config) {
|
|
|
128
131
|
});
|
|
129
132
|
}
|
|
130
133
|
}
|
|
134
|
+
// For each provided param, check if it is used either directly or as the root of a dotted key.
|
|
131
135
|
for (const pk of paramKeys) {
|
|
132
|
-
|
|
136
|
+
const isUsed = keys.some(k => k === pk || k.split('.')[0] === pk);
|
|
137
|
+
if (!isUsed) {
|
|
133
138
|
issues.push({
|
|
134
139
|
text: `Parameter "${pk}" is not used in translation string`,
|
|
135
140
|
line: issueLineNumber,
|
package/dist/esm/cli.js
CHANGED
|
@@ -26,7 +26,7 @@ const program = new Command();
|
|
|
26
26
|
program
|
|
27
27
|
.name('i18next-cli')
|
|
28
28
|
.description('A unified, high-performance i18next CLI.')
|
|
29
|
-
.version('1.42.
|
|
29
|
+
.version('1.42.3'); // This string is replaced with the actual version at build time by rollup
|
|
30
30
|
// new: global config override option
|
|
31
31
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
32
32
|
program
|
package/dist/esm/linter.js
CHANGED
|
@@ -117,8 +117,11 @@ function lintInterpolationParams(ast, code, config) {
|
|
|
117
117
|
const issueLineNumber = position > -1 ? getLineNumber(position) : 1;
|
|
118
118
|
// Only check for unused parameters if there is at least one interpolation key in the string
|
|
119
119
|
if (keys.length > 0) {
|
|
120
|
+
// i18next supports nested object access via dot notation (e.g. {{author.name}} with { author }).
|
|
121
|
+
// For each interpolation key, check if the root (part before the first dot) matches a provided param.
|
|
120
122
|
for (const k of keys) {
|
|
121
|
-
|
|
123
|
+
const root = k.split('.')[0];
|
|
124
|
+
if (!paramKeys.includes(k) && !paramKeys.includes(root)) {
|
|
122
125
|
issues.push({
|
|
123
126
|
text: `Interpolation parameter "${k}" was not provided`,
|
|
124
127
|
line: issueLineNumber,
|
|
@@ -126,8 +129,10 @@ function lintInterpolationParams(ast, code, config) {
|
|
|
126
129
|
});
|
|
127
130
|
}
|
|
128
131
|
}
|
|
132
|
+
// For each provided param, check if it is used either directly or as the root of a dotted key.
|
|
129
133
|
for (const pk of paramKeys) {
|
|
130
|
-
|
|
134
|
+
const isUsed = keys.some(k => k === pk || k.split('.')[0] === pk);
|
|
135
|
+
if (!isUsed) {
|
|
131
136
|
issues.push({
|
|
132
137
|
text: `Parameter "${pk}" is not used in translation string`,
|
|
133
138
|
line: issueLineNumber,
|
package/package.json
CHANGED
package/types/linter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../src/linter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../src/linter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AA6I3D,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE;QAAC;YACT,OAAO,EAAE,MAAM,CAAC;SACjB;KAAC,CAAC;IACH,IAAI,EAAE;QAAC;YACL,OAAO,EAAE,OAAO,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;SAC1C;KAAC,CAAC;IACH,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACvB,CAAA;AAED,eAAO,MAAM,uBAAuB,UAET,CAAA;AAC3B,eAAO,MAAM,6BAA6B,UAAgN,CAAA;AAK1P,qBAAa,MAAO,SAAQ,YAAY,CAAC,cAAc,CAAC;IACtD,OAAO,CAAC,MAAM,CAAsB;gBAEvB,MAAM,EAAE,oBAAoB;IAKzC,SAAS,CAAE,KAAK,EAAE,OAAO;IAanB,GAAG;;;;;;;CA6FV;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,SAAS,CAAE,MAAM,EAAE,oBAAoB;;;;;;GAE5D;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,iBAkCnD;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,+GAA+G;IAC/G,IAAI,CAAC,EAAE,WAAW,GAAG,eAAe,CAAC;CACtC"}
|