i18next-cli 1.53.0 → 1.53.1
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/extractor/core/ast-visitors.js +20 -0
- package/dist/cjs/extractor/parsers/expression-resolver.js +13 -0
- package/dist/esm/cli.js +1 -1
- package/dist/esm/extractor/core/ast-visitors.js +20 -0
- package/dist/esm/extractor/parsers/expression-resolver.js +13 -0
- package/package.json +1 -1
- package/types/extractor/core/ast-visitors.d.ts.map +1 -1
- package/types/extractor/parsers/expression-resolver.d.ts +6 -0
- package/types/extractor/parsers/expression-resolver.d.ts.map +1 -1
package/dist/cjs/cli.js
CHANGED
|
@@ -31,7 +31,7 @@ const program = new commander.Command();
|
|
|
31
31
|
program
|
|
32
32
|
.name('i18next-cli')
|
|
33
33
|
.description('A unified, high-performance i18next CLI.')
|
|
34
|
-
.version('1.53.
|
|
34
|
+
.version('1.53.1'); // This string is replaced with the actual version at build time by rollup
|
|
35
35
|
// new: global config override option
|
|
36
36
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
37
37
|
program
|
|
@@ -155,6 +155,7 @@ class ASTVisitors {
|
|
|
155
155
|
if (!node)
|
|
156
156
|
return;
|
|
157
157
|
let isNewScope = false;
|
|
158
|
+
let paramTemporaries;
|
|
158
159
|
// ENTER SCOPE for functions
|
|
159
160
|
// Accept many SWC/TS AST variants for function-like nodes (declarations, expressions, arrow functions)
|
|
160
161
|
if (node.type === 'Function' ||
|
|
@@ -314,6 +315,19 @@ class ASTVisitors {
|
|
|
314
315
|
}
|
|
315
316
|
}
|
|
316
317
|
}
|
|
318
|
+
// Capture parameter type annotations as temporary variables in the
|
|
319
|
+
// expression resolver so that dynamic bracket expressions like
|
|
320
|
+
// `t(($) => $.table.columns[field])` can resolve `field` to its
|
|
321
|
+
// possible string values (e.g. "name" | "age").
|
|
322
|
+
if (typeAnn) {
|
|
323
|
+
const paramVals = this.expressionResolver.resolveTypeToStringValues(typeAnn);
|
|
324
|
+
if (paramVals.length > 0) {
|
|
325
|
+
this.expressionResolver.setTemporaryVariable(paramKey, paramVals);
|
|
326
|
+
if (!paramTemporaries)
|
|
327
|
+
paramTemporaries = [];
|
|
328
|
+
paramTemporaries.push(paramKey);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
317
331
|
}
|
|
318
332
|
}
|
|
319
333
|
this.hooks.onBeforeVisitNode?.(node);
|
|
@@ -508,6 +522,12 @@ class ASTVisitors {
|
|
|
508
522
|
arrayCallbackCleanup?.();
|
|
509
523
|
// LEAVE SCOPE for functions
|
|
510
524
|
if (isNewScope) {
|
|
525
|
+
// Remove temporary parameter type bindings
|
|
526
|
+
if (paramTemporaries) {
|
|
527
|
+
for (const name of paramTemporaries) {
|
|
528
|
+
this.expressionResolver.deleteTemporaryVariable(name);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
511
531
|
this.scopeManager.exitScope();
|
|
512
532
|
}
|
|
513
533
|
}
|
|
@@ -271,6 +271,19 @@ class ExpressionResolver {
|
|
|
271
271
|
deleteTemporaryVariable(name) {
|
|
272
272
|
this.temporaryVariables.delete(name);
|
|
273
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Resolve a TypeScript type annotation to its possible string values.
|
|
276
|
+
* Used by ast-visitors to capture function parameter type annotations
|
|
277
|
+
* (e.g. `field: "name" | "age"`) as temporary variable bindings.
|
|
278
|
+
*/
|
|
279
|
+
resolveTypeToStringValues(tsType) {
|
|
280
|
+
try {
|
|
281
|
+
return this.resolvePossibleStringValuesFromType(tsType);
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
return [];
|
|
285
|
+
}
|
|
286
|
+
}
|
|
274
287
|
/**
|
|
275
288
|
* Return the array values stored for a variable name, checking all tables.
|
|
276
289
|
* Returns undefined if the name is not a known string array.
|
package/dist/esm/cli.js
CHANGED
|
@@ -29,7 +29,7 @@ const program = new Command();
|
|
|
29
29
|
program
|
|
30
30
|
.name('i18next-cli')
|
|
31
31
|
.description('A unified, high-performance i18next CLI.')
|
|
32
|
-
.version('1.53.
|
|
32
|
+
.version('1.53.1'); // This string is replaced with the actual version at build time by rollup
|
|
33
33
|
// new: global config override option
|
|
34
34
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
35
35
|
program
|
|
@@ -153,6 +153,7 @@ class ASTVisitors {
|
|
|
153
153
|
if (!node)
|
|
154
154
|
return;
|
|
155
155
|
let isNewScope = false;
|
|
156
|
+
let paramTemporaries;
|
|
156
157
|
// ENTER SCOPE for functions
|
|
157
158
|
// Accept many SWC/TS AST variants for function-like nodes (declarations, expressions, arrow functions)
|
|
158
159
|
if (node.type === 'Function' ||
|
|
@@ -312,6 +313,19 @@ class ASTVisitors {
|
|
|
312
313
|
}
|
|
313
314
|
}
|
|
314
315
|
}
|
|
316
|
+
// Capture parameter type annotations as temporary variables in the
|
|
317
|
+
// expression resolver so that dynamic bracket expressions like
|
|
318
|
+
// `t(($) => $.table.columns[field])` can resolve `field` to its
|
|
319
|
+
// possible string values (e.g. "name" | "age").
|
|
320
|
+
if (typeAnn) {
|
|
321
|
+
const paramVals = this.expressionResolver.resolveTypeToStringValues(typeAnn);
|
|
322
|
+
if (paramVals.length > 0) {
|
|
323
|
+
this.expressionResolver.setTemporaryVariable(paramKey, paramVals);
|
|
324
|
+
if (!paramTemporaries)
|
|
325
|
+
paramTemporaries = [];
|
|
326
|
+
paramTemporaries.push(paramKey);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
315
329
|
}
|
|
316
330
|
}
|
|
317
331
|
this.hooks.onBeforeVisitNode?.(node);
|
|
@@ -506,6 +520,12 @@ class ASTVisitors {
|
|
|
506
520
|
arrayCallbackCleanup?.();
|
|
507
521
|
// LEAVE SCOPE for functions
|
|
508
522
|
if (isNewScope) {
|
|
523
|
+
// Remove temporary parameter type bindings
|
|
524
|
+
if (paramTemporaries) {
|
|
525
|
+
for (const name of paramTemporaries) {
|
|
526
|
+
this.expressionResolver.deleteTemporaryVariable(name);
|
|
527
|
+
}
|
|
528
|
+
}
|
|
509
529
|
this.scopeManager.exitScope();
|
|
510
530
|
}
|
|
511
531
|
}
|
|
@@ -269,6 +269,19 @@ class ExpressionResolver {
|
|
|
269
269
|
deleteTemporaryVariable(name) {
|
|
270
270
|
this.temporaryVariables.delete(name);
|
|
271
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* Resolve a TypeScript type annotation to its possible string values.
|
|
274
|
+
* Used by ast-visitors to capture function parameter type annotations
|
|
275
|
+
* (e.g. `field: "name" | "age"`) as temporary variable bindings.
|
|
276
|
+
*/
|
|
277
|
+
resolveTypeToStringValues(tsType) {
|
|
278
|
+
try {
|
|
279
|
+
return this.resolvePossibleStringValuesFromType(tsType);
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
return [];
|
|
283
|
+
}
|
|
284
|
+
}
|
|
272
285
|
/**
|
|
273
286
|
* Return the array values stored for a variable name, checking all tables.
|
|
274
287
|
* Returns undefined if the name is not a known string array.
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-visitors.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/ast-visitors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAQ,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAItE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,KAAK,CAAiB;IAE9B,IAAW,UAAU,gBAEpB;IAED,SAAgB,YAAY,EAAE,YAAY,CAAA;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAa;IAEhC;;;;;;OAMG;gBAED,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,eAAe,EACvB,kBAAkB,CAAC,EAAE,kBAAkB;IAiCzC;;;;;;;;;;;;;OAaG;IACI,mBAAmB,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/C;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;;;;OAKG;IACI,KAAK,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAUjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"ast-visitors.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/ast-visitors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAQ,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAItE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,KAAK,CAAiB;IAE9B,IAAW,UAAU,gBAEpB;IAED,SAAgB,YAAY,EAAE,YAAY,CAAA;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAa;IAEhC;;;;;;OAMG;gBAED,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,eAAe,EACvB,kBAAkB,CAAC,EAAE,kBAAkB;IAiCzC;;;;;;;;;;;;;OAaG;IACI,mBAAmB,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/C;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;;;;OAKG;IACI,KAAK,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAUjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,IAAI;IAoXZ;;;;;;;;OAQG;IACH,OAAO,CAAC,gCAAgC;IAqDxC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;;;;;;;OAQG;IACI,eAAe,CAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI5D;;OAEG;IACI,cAAc,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxD;;;;;;OAMG;IACI,cAAc,IAAK,MAAM;IAIhC;;OAEG;IACI,cAAc,IAAK,MAAM;CAGjC"}
|
|
@@ -59,6 +59,12 @@ export declare class ExpressionResolver {
|
|
|
59
59
|
* Remove a previously-injected temporary variable binding.
|
|
60
60
|
*/
|
|
61
61
|
deleteTemporaryVariable(name: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Resolve a TypeScript type annotation to its possible string values.
|
|
64
|
+
* Used by ast-visitors to capture function parameter type annotations
|
|
65
|
+
* (e.g. `field: "name" | "age"`) as temporary variable bindings.
|
|
66
|
+
*/
|
|
67
|
+
resolveTypeToStringValues(tsType: any): string[];
|
|
62
68
|
/**
|
|
63
69
|
* Return the array values stored for a variable name, checking all tables.
|
|
64
70
|
* Returns undefined if the name is not a known string array.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-resolver.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/expression-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkD,MAAM,WAAW,CAAA;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAK9B,OAAO,CAAC,aAAa,CAA4D;IAGjF,OAAO,CAAC,eAAe,CAAiD;IAIxE,OAAO,CAAC,cAAc,CAAmC;IAIzD,OAAO,CAAC,mBAAmB,CAAmC;IAI9D,OAAO,CAAC,oBAAoB,CAAmC;IAI/D,OAAO,CAAC,kBAAkB,CAAmC;gBAEhD,KAAK,EAAE,eAAe;IAInC;;OAEG;IACI,gBAAgB,IAAK,IAAI;IAMhC;;;;;;;;;OASG;IACH,yBAAyB,CAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAoJ3C;;;;;;;OAOG;IACH,2BAA2B,CAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAkB7C;;;;;;;;;OASG;IACH,0BAA0B,CAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAoB5C;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;;;OAIG;IACI,oBAAoB,CAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlE;;OAEG;IACI,uBAAuB,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAInD;;;OAGG;IACI,iBAAiB,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAQ7D;;;;OAIG;IACI,YAAY,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;IAQtE;;;;;OAKG;IACH,sBAAsB,CAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAwBxC;;;;;;;OAOG;IACH,kCAAkC,CAAE,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE;IAKrE;;;;;;;OAOG;IACH,8BAA8B,CAAE,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE;IAKjE;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,yCAAyC;IAsNjD,OAAO,CAAC,mCAAmC;IAiH3C;;;;;;OAMG;IACH,OAAO,CAAC,6CAA6C;IAyBrD;;;;;;OAMG;IACH,OAAO,CAAC,kDAAkD;CAwB3D"}
|
|
1
|
+
{"version":3,"file":"expression-resolver.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/expression-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkD,MAAM,WAAW,CAAA;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAK9B,OAAO,CAAC,aAAa,CAA4D;IAGjF,OAAO,CAAC,eAAe,CAAiD;IAIxE,OAAO,CAAC,cAAc,CAAmC;IAIzD,OAAO,CAAC,mBAAmB,CAAmC;IAI9D,OAAO,CAAC,oBAAoB,CAAmC;IAI/D,OAAO,CAAC,kBAAkB,CAAmC;gBAEhD,KAAK,EAAE,eAAe;IAInC;;OAEG;IACI,gBAAgB,IAAK,IAAI;IAMhC;;;;;;;;;OASG;IACH,yBAAyB,CAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAoJ3C;;;;;;;OAOG;IACH,2BAA2B,CAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAkB7C;;;;;;;;;OASG;IACH,0BAA0B,CAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAoB5C;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;;;OAIG;IACI,oBAAoB,CAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlE;;OAEG;IACI,uBAAuB,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAInD;;;;OAIG;IACI,yBAAyB,CAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE;IAQxD;;;OAGG;IACI,iBAAiB,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAQ7D;;;;OAIG;IACI,YAAY,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;IAQtE;;;;;OAKG;IACH,sBAAsB,CAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAwBxC;;;;;;;OAOG;IACH,kCAAkC,CAAE,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE;IAKrE;;;;;;;OAOG;IACH,8BAA8B,CAAE,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE;IAKjE;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,yCAAyC;IAsNjD,OAAO,CAAC,mCAAmC;IAiH3C;;;;;;OAMG;IACH,OAAO,CAAC,6CAA6C;IAyBrD;;;;;;OAMG;IACH,OAAO,CAAC,kDAAkD;CAwB3D"}
|