i18next-cli 1.49.0 → 1.49.2
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 +143 -19
- package/dist/cjs/extractor/parsers/expression-resolver.js +135 -2
- package/dist/esm/cli.js +1 -1
- package/dist/esm/extractor/core/ast-visitors.js +143 -19
- package/dist/esm/extractor/parsers/expression-resolver.js +135 -2
- package/package.json +10 -8
- package/types/config.d.ts +1 -1
- package/types/config.d.ts.map +1 -1
- package/types/extractor/core/ast-visitors.d.ts +9 -3
- package/types/extractor/core/ast-visitors.d.ts.map +1 -1
- package/types/extractor/core/extractor.d.ts +3 -3
- package/types/extractor/core/extractor.d.ts.map +1 -1
- package/types/extractor/core/key-finder.d.ts +1 -1
- package/types/extractor/core/key-finder.d.ts.map +1 -1
- package/types/extractor/core/translation-manager.d.ts +1 -1
- package/types/extractor/core/translation-manager.d.ts.map +1 -1
- package/types/extractor/index.d.ts +7 -7
- package/types/extractor/index.d.ts.map +1 -1
- package/types/extractor/parsers/call-expression-handler.d.ts +2 -2
- package/types/extractor/parsers/call-expression-handler.d.ts.map +1 -1
- package/types/extractor/parsers/comment-parser.d.ts +1 -1
- package/types/extractor/parsers/comment-parser.d.ts.map +1 -1
- package/types/extractor/parsers/expression-resolver.d.ts +19 -1
- package/types/extractor/parsers/expression-resolver.d.ts.map +1 -1
- package/types/extractor/parsers/jsx-handler.d.ts +2 -2
- package/types/extractor/parsers/jsx-handler.d.ts.map +1 -1
- package/types/extractor/parsers/jsx-parser.d.ts +1 -1
- package/types/extractor/parsers/jsx-parser.d.ts.map +1 -1
- package/types/extractor/parsers/scope-manager.d.ts +1 -1
- package/types/extractor/parsers/scope-manager.d.ts.map +1 -1
- package/types/extractor/plugin-manager.d.ts +1 -1
- package/types/extractor/plugin-manager.d.ts.map +1 -1
- package/types/extractor.d.ts +5 -5
- package/types/extractor.d.ts.map +1 -1
- package/types/heuristic-config.d.ts +1 -1
- package/types/heuristic-config.d.ts.map +1 -1
- package/types/index.d.ts +9 -9
- package/types/index.d.ts.map +1 -1
- package/types/instrumenter/core/instrumenter.d.ts +1 -1
- package/types/instrumenter/core/instrumenter.d.ts.map +1 -1
- package/types/instrumenter/core/string-detector.d.ts +1 -1
- package/types/instrumenter/core/string-detector.d.ts.map +1 -1
- package/types/instrumenter/core/transformer.d.ts +1 -1
- package/types/instrumenter/core/transformer.d.ts.map +1 -1
- package/types/instrumenter/index.d.ts +5 -5
- package/types/instrumenter/index.d.ts.map +1 -1
- package/types/linter.d.ts +1 -1
- package/types/linter.d.ts.map +1 -1
- package/types/locize.d.ts +1 -1
- package/types/locize.d.ts.map +1 -1
- package/types/rename-key.d.ts +1 -1
- package/types/rename-key.d.ts.map +1 -1
- package/types/status.d.ts +1 -1
- package/types/status.d.ts.map +1 -1
- package/types/syncer.d.ts +1 -1
- package/types/syncer.d.ts.map +1 -1
- package/types/types-generator.d.ts +1 -1
- package/types/types-generator.d.ts.map +1 -1
- package/types/utils/file-utils.d.ts +1 -1
- package/types/utils/file-utils.d.ts.map +1 -1
- package/types/utils/logger.d.ts +1 -1
- package/types/utils/logger.d.ts.map +1 -1
- package/types/utils/validation.d.ts +1 -1
- package/types/utils/validation.d.ts.map +1 -1
|
@@ -10,6 +10,15 @@ class ExpressionResolver {
|
|
|
10
10
|
// Per-file table for type aliases: Maps typeName -> string[]
|
|
11
11
|
// e.g. `type ChangeType = 'all' | 'next' | 'this'` -> { ChangeType: ['all', 'next', 'this'] }
|
|
12
12
|
typeAliasTable = new Map();
|
|
13
|
+
// Shared (cross-file) table for string-array constants (e.g. `as const` arrays).
|
|
14
|
+
// Persists across resetFileSymbols() so exported arrays are visible to importers.
|
|
15
|
+
sharedVariableTable = new Map();
|
|
16
|
+
// Shared (cross-file) table for type aliases — populated alongside typeAliasTable.
|
|
17
|
+
// Persists across resetFileSymbols() so exported type aliases are visible to importers.
|
|
18
|
+
sharedTypeAliasTable = new Map();
|
|
19
|
+
// Temporary per-scope variable overrides, used to inject .map() / .forEach()
|
|
20
|
+
// callback parameters while the callback body is being walked.
|
|
21
|
+
temporaryVariables = new Map();
|
|
13
22
|
constructor(hooks) {
|
|
14
23
|
this.hooks = hooks;
|
|
15
24
|
}
|
|
@@ -19,6 +28,7 @@ class ExpressionResolver {
|
|
|
19
28
|
resetFileSymbols() {
|
|
20
29
|
this.variableTable.clear();
|
|
21
30
|
this.typeAliasTable.clear();
|
|
31
|
+
this.temporaryVariables.clear();
|
|
22
32
|
}
|
|
23
33
|
/**
|
|
24
34
|
* Capture a VariableDeclarator node to record simple statically analyzable
|
|
@@ -34,6 +44,41 @@ class ExpressionResolver {
|
|
|
34
44
|
try {
|
|
35
45
|
if (!node || !node.id)
|
|
36
46
|
return;
|
|
47
|
+
// ── ArrayPattern id: `const [x, y] = fn<T>(...)` ────────────────────────
|
|
48
|
+
// Handles `const [state] = useState<'a'|'b'>('a')` or similar generic calls
|
|
49
|
+
// where the type argument is a finite string-literal union.
|
|
50
|
+
if (node.id.type === 'ArrayPattern' && node.init) {
|
|
51
|
+
const init = node.init;
|
|
52
|
+
// Unwrap await / as-expressions
|
|
53
|
+
let callExpr = init;
|
|
54
|
+
while (callExpr?.type === 'AwaitExpression')
|
|
55
|
+
callExpr = callExpr.argument;
|
|
56
|
+
while (callExpr?.type === 'TsConstAssertion' ||
|
|
57
|
+
callExpr?.type === 'TsAsExpression' ||
|
|
58
|
+
callExpr?.type === 'TsSatisfiesExpression')
|
|
59
|
+
callExpr = callExpr.expression;
|
|
60
|
+
if (callExpr?.type === 'CallExpression') {
|
|
61
|
+
const typeArgs = callExpr.typeArguments?.params ??
|
|
62
|
+
callExpr.typeParameters?.params ??
|
|
63
|
+
[];
|
|
64
|
+
if (typeArgs.length > 0) {
|
|
65
|
+
const vals = this.resolvePossibleStringValuesFromType(typeArgs[0]);
|
|
66
|
+
if (vals.length > 0) {
|
|
67
|
+
// Bind each array-pattern element: first element is the state variable
|
|
68
|
+
for (const el of node.id.elements) {
|
|
69
|
+
if (!el)
|
|
70
|
+
continue;
|
|
71
|
+
const ident = el.type === 'Identifier' ? el : (el.type === 'AssignmentPattern' && el.left?.type === 'Identifier' ? el.left : null);
|
|
72
|
+
if (ident) {
|
|
73
|
+
this.variableTable.set(ident.value, vals);
|
|
74
|
+
}
|
|
75
|
+
break; // only bind the first element (the state value, not the setter)
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
37
82
|
// only handle simple identifier bindings like `const x = ...`
|
|
38
83
|
if (node.id.type !== 'Identifier')
|
|
39
84
|
return;
|
|
@@ -84,6 +129,24 @@ class ExpressionResolver {
|
|
|
84
129
|
return;
|
|
85
130
|
}
|
|
86
131
|
}
|
|
132
|
+
// ArrayExpression -> list of string values
|
|
133
|
+
// Handles `const OPTS = ['a', 'b', 'c'] as const`
|
|
134
|
+
if (unwrappedInit.type === 'ArrayExpression' && Array.isArray(unwrappedInit.elements)) {
|
|
135
|
+
const vals = [];
|
|
136
|
+
for (const elem of unwrappedInit.elements) {
|
|
137
|
+
if (!elem || !elem.expression)
|
|
138
|
+
continue;
|
|
139
|
+
const resolved = this.resolvePossibleStringValuesFromExpression(elem.expression);
|
|
140
|
+
if (resolved.length === 1)
|
|
141
|
+
vals.push(resolved[0]);
|
|
142
|
+
}
|
|
143
|
+
if (vals.length > 0) {
|
|
144
|
+
this.variableTable.set(name, vals);
|
|
145
|
+
// Also share so importing files can see this array
|
|
146
|
+
this.sharedVariableTable.set(name, vals);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
87
150
|
// For other initializers, try to resolve to one-or-more strings
|
|
88
151
|
const vals = this.resolvePossibleStringValuesFromExpression(init);
|
|
89
152
|
if (vals.length > 0) {
|
|
@@ -127,6 +190,8 @@ class ExpressionResolver {
|
|
|
127
190
|
const vals = this.resolvePossibleStringValuesFromType(tsType);
|
|
128
191
|
if (vals.length > 0) {
|
|
129
192
|
this.typeAliasTable.set(name, vals);
|
|
193
|
+
// Also share so importing files can resolve this alias by name
|
|
194
|
+
this.sharedTypeAliasTable.set(name, vals);
|
|
130
195
|
}
|
|
131
196
|
}
|
|
132
197
|
catch {
|
|
@@ -178,6 +243,33 @@ class ExpressionResolver {
|
|
|
178
243
|
return raw.typeAnnotation;
|
|
179
244
|
return raw;
|
|
180
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* Temporarily bind a variable name to a set of string values.
|
|
248
|
+
* Used by ast-visitors to inject .map()/.forEach() callback parameters.
|
|
249
|
+
* Call deleteTemporaryVariable() after walking the callback body.
|
|
250
|
+
*/
|
|
251
|
+
setTemporaryVariable(name, values) {
|
|
252
|
+
this.temporaryVariables.set(name, values);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Remove a previously-injected temporary variable binding.
|
|
256
|
+
*/
|
|
257
|
+
deleteTemporaryVariable(name) {
|
|
258
|
+
this.temporaryVariables.delete(name);
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Return the array values stored for a variable name, checking all tables.
|
|
262
|
+
* Returns undefined if the name is not a known string array.
|
|
263
|
+
*/
|
|
264
|
+
getVariableValues(name) {
|
|
265
|
+
const tmp = this.temporaryVariables.get(name);
|
|
266
|
+
if (tmp)
|
|
267
|
+
return tmp;
|
|
268
|
+
const v = this.variableTable.get(name);
|
|
269
|
+
if (Array.isArray(v))
|
|
270
|
+
return v;
|
|
271
|
+
return this.sharedVariableTable.get(name);
|
|
272
|
+
}
|
|
181
273
|
/**
|
|
182
274
|
* Capture a TypeScript enum declaration so members can be resolved later.
|
|
183
275
|
* Accepts SWC node shapes like `TsEnumDeclaration` / `TSEnumDeclaration`.
|
|
@@ -419,9 +511,18 @@ class ExpressionResolver {
|
|
|
419
511
|
}
|
|
420
512
|
// Identifier resolution via captured per-file variable table only
|
|
421
513
|
if (expression.type === 'Identifier') {
|
|
514
|
+
// Check temporary (callback param) overrides first
|
|
515
|
+
const tmp = this.temporaryVariables.get(expression.value);
|
|
516
|
+
if (tmp)
|
|
517
|
+
return tmp;
|
|
422
518
|
const v = this.variableTable.get(expression.value);
|
|
423
|
-
if (!v)
|
|
519
|
+
if (!v) {
|
|
520
|
+
// Fall back to shared cross-file array table
|
|
521
|
+
const sv = this.sharedVariableTable.get(expression.value);
|
|
522
|
+
if (sv)
|
|
523
|
+
return sv;
|
|
424
524
|
return [];
|
|
525
|
+
}
|
|
425
526
|
if (Array.isArray(v))
|
|
426
527
|
return v;
|
|
427
528
|
// object map - cannot be used directly as key, so return empty
|
|
@@ -431,6 +532,11 @@ class ExpressionResolver {
|
|
|
431
532
|
return [];
|
|
432
533
|
}
|
|
433
534
|
resolvePossibleStringValuesFromType(type, returnEmptyStrings = false) {
|
|
535
|
+
// Unwrap TsParenthesizedType — SWC explicitly emits these for grouped types like
|
|
536
|
+
// `(typeof X)[number]` where `(typeof X)` becomes TsParenthesizedType { typeAnnotation: TsTypeQuery }
|
|
537
|
+
if (type.type === 'TsParenthesizedType') {
|
|
538
|
+
return this.resolvePossibleStringValuesFromType(type.typeAnnotation, returnEmptyStrings);
|
|
539
|
+
}
|
|
434
540
|
if (type.type === 'TsUnionType') {
|
|
435
541
|
return type.types.flatMap((t) => this.resolvePossibleStringValuesFromType(t, returnEmptyStrings));
|
|
436
542
|
}
|
|
@@ -454,11 +560,38 @@ class ExpressionResolver {
|
|
|
454
560
|
? type.typeName.value
|
|
455
561
|
: undefined;
|
|
456
562
|
if (typeName) {
|
|
457
|
-
const aliasVals = this.typeAliasTable.get(typeName);
|
|
563
|
+
const aliasVals = this.typeAliasTable.get(typeName) ?? this.sharedTypeAliasTable.get(typeName);
|
|
458
564
|
if (aliasVals && aliasVals.length > 0)
|
|
459
565
|
return aliasVals;
|
|
460
566
|
}
|
|
461
567
|
}
|
|
568
|
+
// `(typeof ACCESS_OPTIONS)[number]` — resolve through the shared array variable table.
|
|
569
|
+
// SWC emits: TsIndexedAccessType {
|
|
570
|
+
// objectType: TsParenthesizedType { typeAnnotation: TsTypeQuery { exprName: Identifier } }
|
|
571
|
+
// indexType: TsKeywordType
|
|
572
|
+
// }
|
|
573
|
+
// The parens around `typeof X` produce a TsParenthesizedType wrapper that we must unwrap.
|
|
574
|
+
if (type.type === 'TsIndexedAccessType') {
|
|
575
|
+
try {
|
|
576
|
+
let objType = type.objectType;
|
|
577
|
+
// Unwrap TsParenthesizedType wrapper (SWC preserves explicit parens in type positions)
|
|
578
|
+
while (objType?.type === 'TsParenthesizedType') {
|
|
579
|
+
objType = objType.typeAnnotation;
|
|
580
|
+
}
|
|
581
|
+
if (objType?.type === 'TsTypeQuery' || objType?.type === 'TSTypeQuery') {
|
|
582
|
+
// SWC: TsTypeQuery.exprName is TsEntityName (Identifier | TsQualifiedName)
|
|
583
|
+
const exprName = objType.exprName ?? objType.expr ?? objType.entityName;
|
|
584
|
+
// access .value (Identifier) or fall back to .name for alternate SWC builds
|
|
585
|
+
const varName = exprName?.value ?? exprName?.name;
|
|
586
|
+
if (varName) {
|
|
587
|
+
const vals = this.getVariableValues(varName);
|
|
588
|
+
if (vals && vals.length > 0)
|
|
589
|
+
return vals;
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
catch { }
|
|
594
|
+
}
|
|
462
595
|
// We can't statically determine the value of other expressions (e.g., variables, function calls)
|
|
463
596
|
return [];
|
|
464
597
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "i18next-cli",
|
|
3
|
-
"version": "1.49.
|
|
3
|
+
"version": "1.49.2",
|
|
4
4
|
"description": "A unified, high-performance i18next CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -55,13 +55,15 @@
|
|
|
55
55
|
"@rollup/plugin-replace": "6.0.3",
|
|
56
56
|
"@rollup/plugin-terser": "0.4.4",
|
|
57
57
|
"@types/inquirer": "9.0.9",
|
|
58
|
-
"@types/node": "25.3.
|
|
58
|
+
"@types/node": "25.3.3",
|
|
59
59
|
"@types/react": "19.2.14",
|
|
60
|
+
"@typescript-eslint/parser": "^8.56.1",
|
|
60
61
|
"@vitest/coverage-v8": "4.0.18",
|
|
61
62
|
"eslint": "9.39.2",
|
|
63
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
62
64
|
"eslint-plugin-import": "2.32.0",
|
|
63
|
-
"memfs": "4.56.
|
|
64
|
-
"neostandard": "0.
|
|
65
|
+
"memfs": "4.56.11",
|
|
66
|
+
"neostandard": "0.13.0",
|
|
65
67
|
"rollup-plugin-typescript2": "0.36.0",
|
|
66
68
|
"typescript": "5.9.3",
|
|
67
69
|
"unplugin-swc": "1.5.9",
|
|
@@ -69,8 +71,7 @@
|
|
|
69
71
|
},
|
|
70
72
|
"dependencies": {
|
|
71
73
|
"@croct/json5-parser": "0.2.2",
|
|
72
|
-
"@swc/core": "1.15.
|
|
73
|
-
"yaml": "2.8.2",
|
|
74
|
+
"@swc/core": "1.15.18",
|
|
74
75
|
"chokidar": "5.0.0",
|
|
75
76
|
"commander": "14.0.3",
|
|
76
77
|
"execa": "9.6.1",
|
|
@@ -79,10 +80,11 @@
|
|
|
79
80
|
"inquirer": "13.3.0",
|
|
80
81
|
"jiti": "2.6.1",
|
|
81
82
|
"jsonc-parser": "3.3.1",
|
|
82
|
-
"magic-string": "0.30.
|
|
83
|
+
"magic-string": "0.30.21",
|
|
83
84
|
"minimatch": "10.2.4",
|
|
84
85
|
"ora": "9.3.0",
|
|
85
86
|
"react": "^19.2.4",
|
|
86
|
-
"react-i18next": "^16.5.
|
|
87
|
+
"react-i18next": "^16.5.5",
|
|
88
|
+
"yaml": "2.8.2"
|
|
87
89
|
}
|
|
88
90
|
}
|
package/types/config.d.ts
CHANGED
package/types/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAc9D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAE,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAEhF;AAgCD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,MAA4B,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA+CjI;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,MAA4B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA8B5H;AAyBD;;;GAGG;AACH,wBAAsB,kBAAkB,IAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAyB3E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Module } from '@swc/core';
|
|
2
|
-
import type { PluginContext, I18nextToolkitConfig, Logger, ASTVisitorHooks, ScopeInfo } from '../../types';
|
|
3
|
-
import { ScopeManager } from '../parsers/scope-manager';
|
|
4
|
-
import { ExpressionResolver } from '../parsers/expression-resolver';
|
|
2
|
+
import type { PluginContext, I18nextToolkitConfig, Logger, ASTVisitorHooks, ScopeInfo } from '../../types.js';
|
|
3
|
+
import { ScopeManager } from '../parsers/scope-manager.js';
|
|
4
|
+
import { ExpressionResolver } from '../parsers/expression-resolver.js';
|
|
5
5
|
/**
|
|
6
6
|
* AST visitor class that traverses JavaScript/TypeScript syntax trees to extract translation keys.
|
|
7
7
|
*
|
|
@@ -65,6 +65,12 @@ export declare class ASTVisitors {
|
|
|
65
65
|
* @private
|
|
66
66
|
*/
|
|
67
67
|
private walk;
|
|
68
|
+
/**
|
|
69
|
+
* If `node` is a call like `ARRAY.map(param => ...)` where ARRAY is a known
|
|
70
|
+
* string-array constant, returns the callback's first parameter name and the
|
|
71
|
+
* array values so the caller can inject a temporary variable binding.
|
|
72
|
+
*/
|
|
73
|
+
private tryGetArrayIterationCallbackInfo;
|
|
68
74
|
/**
|
|
69
75
|
* Retrieves variable information from the scope chain.
|
|
70
76
|
* Searches from innermost to outermost scope.
|
|
@@ -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,
|
|
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;;;;;OAKG;IACI,KAAK,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAUjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,IAAI;IAgWZ;;;;OAIG;IACH,OAAO,CAAC,gCAAgC;IAwCxC;;;;;;;;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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Logger, I18nextToolkitConfig, Plugin, PluginContext } from '../../types';
|
|
2
|
-
import { ASTVisitors } from './ast-visitors';
|
|
1
|
+
import type { Logger, I18nextToolkitConfig, Plugin, PluginContext, TranslationResult } from '../../types.js';
|
|
2
|
+
import { ASTVisitors } from './ast-visitors.js';
|
|
3
3
|
/**
|
|
4
4
|
* Main extractor function that runs the complete key extraction and file generation process.
|
|
5
5
|
*
|
|
@@ -75,5 +75,5 @@ export declare function processFile(file: string, plugins: Plugin[], astVisitors
|
|
|
75
75
|
*/
|
|
76
76
|
export declare function extract(config: I18nextToolkitConfig, { syncPrimaryWithDefaults }?: {
|
|
77
77
|
syncPrimaryWithDefaults?: boolean;
|
|
78
|
-
}): Promise<
|
|
78
|
+
}): Promise<TranslationResult[]>;
|
|
79
79
|
//# sourceMappingURL=extractor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/extractor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/extractor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAO5G,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAK/C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CA6E1D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,MAAM,GAAE,MAA4B,EACpC,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC,CAkHf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,OAAO,CAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,uBAA+B,EAAE,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAO1K"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-finder.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/key-finder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAmB,MAAM,
|
|
1
|
+
{"version":3,"file":"key-finder.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/key-finder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAmB,MAAM,gBAAgB,CAAA;AAOjG;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,oBAAoB,EAC5B,MAAM,GAAE,MAA4B,EACpC,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CA6E1E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TranslationResult, ExtractedKey, I18nextToolkitConfig, Logger } from '../../types';
|
|
1
|
+
import { TranslationResult, ExtractedKey, I18nextToolkitConfig, Logger } from '../../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Processes extracted translation keys and generates translation files for all configured locales.
|
|
4
4
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation-manager.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/translation-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"translation-manager.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/translation-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAw3B9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,MAAM,EAAE,oBAAoB,EAC5B,EACE,uBAA+B,EAC/B,OAAe,EACf,MAA4B,EAC7B,GAAE;IACD,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA8J9B"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './core/extractor';
|
|
2
|
-
export * from './core/key-finder';
|
|
3
|
-
export * from './core/translation-manager';
|
|
4
|
-
export * from './core/ast-visitors';
|
|
5
|
-
export * from './parsers/comment-parser';
|
|
6
|
-
export * from './parsers/jsx-parser';
|
|
7
|
-
export * from './plugin-manager';
|
|
1
|
+
export * from './core/extractor.js';
|
|
2
|
+
export * from './core/key-finder.js';
|
|
3
|
+
export * from './core/translation-manager.js';
|
|
4
|
+
export * from './core/ast-visitors.js';
|
|
5
|
+
export * from './parsers/comment-parser.js';
|
|
6
|
+
export * from './parsers/jsx-parser.js';
|
|
7
|
+
export * from './plugin-manager.js';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extractor/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extractor/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wBAAwB,CAAA;AACtC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CallExpression } from '@swc/core';
|
|
2
|
-
import type { PluginContext, I18nextToolkitConfig, Logger, ScopeInfo } from '../../types';
|
|
3
|
-
import { ExpressionResolver } from './expression-resolver';
|
|
2
|
+
import type { PluginContext, I18nextToolkitConfig, Logger, ScopeInfo } from '../../types.js';
|
|
3
|
+
import { ExpressionResolver } from './expression-resolver.js';
|
|
4
4
|
export declare class CallExpressionHandler {
|
|
5
5
|
private pluginContext;
|
|
6
6
|
private config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-expression-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/call-expression-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA6C,MAAM,WAAW,CAAA;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"call-expression-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/call-expression-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA6C,MAAM,WAAW,CAAA;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAM7D,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,kBAAkB,CAAoB;IACvC,UAAU,cAAoB;IACrC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,iBAAiB,CAAsC;gBAG7D,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,MAAM,MAAM,EAC5B,cAAc,EAAE,MAAM,MAAM,EAC5B,iBAAiB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAA2B;IAW3E;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI;IAgYxG;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,oBAAoB;IA6E5B,OAAO,CAAC,wBAAwB;IAyEhC;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IA8BpC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,sBAAsB;IA2C9B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,gBAAgB;IAyMxB;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;CA2BxB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PluginContext, I18nextToolkitConfig } from '../../types';
|
|
1
|
+
import type { PluginContext, I18nextToolkitConfig } from '../../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Extracts translation keys from comments in source code using regex patterns.
|
|
4
4
|
* Supports extraction from single-line (//) and multi-line comments.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-parser.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/comment-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"comment-parser.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/comment-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAEzE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,oBAAoB,EAC5B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAC1F,IAAI,CAiJN"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { Expression } from '@swc/core';
|
|
2
|
-
import type { ASTVisitorHooks } from '../../types';
|
|
2
|
+
import type { ASTVisitorHooks } from '../../types.js';
|
|
3
3
|
export declare class ExpressionResolver {
|
|
4
4
|
private hooks;
|
|
5
5
|
private variableTable;
|
|
6
6
|
private sharedEnumTable;
|
|
7
7
|
private typeAliasTable;
|
|
8
|
+
private sharedVariableTable;
|
|
9
|
+
private sharedTypeAliasTable;
|
|
10
|
+
private temporaryVariables;
|
|
8
11
|
constructor(hooks: ASTVisitorHooks);
|
|
9
12
|
/**
|
|
10
13
|
* Clear per-file captured variables. Enums / shared maps are kept.
|
|
@@ -46,6 +49,21 @@ export declare class ExpressionResolver {
|
|
|
46
49
|
* SWC may wrap it in a `TsTypeAnnotation` node — this unwraps it.
|
|
47
50
|
*/
|
|
48
51
|
private extractTypeAnnotation;
|
|
52
|
+
/**
|
|
53
|
+
* Temporarily bind a variable name to a set of string values.
|
|
54
|
+
* Used by ast-visitors to inject .map()/.forEach() callback parameters.
|
|
55
|
+
* Call deleteTemporaryVariable() after walking the callback body.
|
|
56
|
+
*/
|
|
57
|
+
setTemporaryVariable(name: string, values: string[]): void;
|
|
58
|
+
/**
|
|
59
|
+
* Remove a previously-injected temporary variable binding.
|
|
60
|
+
*/
|
|
61
|
+
deleteTemporaryVariable(name: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Return the array values stored for a variable name, checking all tables.
|
|
64
|
+
* Returns undefined if the name is not a known string array.
|
|
65
|
+
*/
|
|
66
|
+
getVariableValues(name: string): string[] | undefined;
|
|
49
67
|
/**
|
|
50
68
|
* Capture a TypeScript enum declaration so members can be resolved later.
|
|
51
69
|
* Accepts SWC node shapes like `TsEnumDeclaration` / `TSEnumDeclaration`.
|
|
@@ -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,
|
|
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;IAwI3C;;;;;;;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;;;;;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;IAgMjD,OAAO,CAAC,mCAAmC;IAsE3C;;;;;;OAMG;IACH,OAAO,CAAC,6CAA6C;IAyBrD;;;;;;OAMG;IACH,OAAO,CAAC,kDAAkD;CAwB3D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { JSXElement } from '@swc/core';
|
|
2
|
-
import type { PluginContext, I18nextToolkitConfig } from '../../types';
|
|
3
|
-
import { ExpressionResolver } from './expression-resolver';
|
|
2
|
+
import type { PluginContext, I18nextToolkitConfig } from '../../types.js';
|
|
3
|
+
import { ExpressionResolver } from './expression-resolver.js';
|
|
4
4
|
export declare class JSXHandler {
|
|
5
5
|
private config;
|
|
6
6
|
private pluginContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/jsx-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,WAAW,CAAA;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"jsx-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/jsx-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,WAAW,CAAA;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAgB,MAAM,gBAAgB,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAI7D,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,cAAc,CAAc;gBAGlC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,MAAM,MAAM,EAC5B,cAAc,EAAE,MAAM,MAAM;IAS9B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;;;;;;;OAQG;IACH,gBAAgB,CAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,GAAG,IAAI;IAwUjI;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,0BAA0B;IAkIlC;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;CAevB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Expression, JSXElement, ObjectExpression } from '@swc/core';
|
|
2
|
-
import type { I18nextToolkitConfig } from '../../types';
|
|
2
|
+
import type { I18nextToolkitConfig } from '../../types.js';
|
|
3
3
|
export interface ExtractedJSXAttributes {
|
|
4
4
|
/** holds the raw key expression from the AST */
|
|
5
5
|
keyExpression?: Expression;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-parser.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/jsx-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAsC,UAAU,EAAkD,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC7J,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"jsx-parser.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/jsx-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAsC,UAAU,EAAkD,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC7J,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAsE1D,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,aAAa,CAAC,EAAE,UAAU,CAAC;IAE3B,qDAAqD;IACrD,kBAAkB,EAAE,MAAM,CAAC;IAE3B,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,8DAA8D;IAC9D,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAE/B,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAE/B,kHAAkH;IAClH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,yBAAyB,CAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,oBAAoB,GAAG,sBAAsB,GAAG,IAAI,CAkMxH"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { VariableDeclarator } from '@swc/core';
|
|
2
|
-
import type { ScopeInfo, I18nextToolkitConfig } from '../../types';
|
|
2
|
+
import type { ScopeInfo, I18nextToolkitConfig } from '../../types.js';
|
|
3
3
|
export declare class ScopeManager {
|
|
4
4
|
private scopeStack;
|
|
5
5
|
private config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-manager.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/scope-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,kBAAkB,EAMnB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,SAAS,EAA4B,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scope-manager.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/scope-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,kBAAkB,EAMnB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,SAAS,EAA4B,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAG/F,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,KAAK,CAAqE;IAGlF,OAAO,CAAC,eAAe,CAAiC;IAGxD,OAAO,CAAC,qBAAqB,CAAiD;IAI9E,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,qBAAqB,CAAiD;gBAEjE,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC;IAI1D;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAcjC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAgB9C;;;;;;OAMG;IACI,KAAK,IAAK,IAAI;IAOrB;;;OAGG;IACH,UAAU,IAAK,IAAI;IAInB;;;OAGG;IACH,SAAS,IAAK,IAAI;IAIlB;;;;;;OAMG;IACH,aAAa,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAUnD;;;;;;OAMG;IACH,eAAe,CAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAkBrD,OAAO,CAAC,uBAAuB;IAoB/B;;OAEG;IACI,6BAA6B,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvE;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IAqBrC;;;;;;;;;;OAUG;IACH,wBAAwB,CAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI;IA0FzD;;;;;;;;OAQG;IACH,OAAO,CAAC,+BAA+B;IA0GvC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,8BAA8B;IAmFtC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,yBAAyB;IAoBjC;;;;;;;;;OASG;IACH,OAAO,CAAC,qCAAqC;CAuB9C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ExtractedKey, PluginContext, I18nextToolkitConfig, Logger, Plugin } from '../types';
|
|
1
|
+
import type { ExtractedKey, PluginContext, I18nextToolkitConfig, Logger, Plugin } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Error thrown when warnOnConflicts is set to 'error' and a key conflict is detected.
|
|
4
4
|
* This error is intentionally not caught by the per-file error handler in the extractor.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/extractor/plugin-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAa,MAAM,
|
|
1
|
+
{"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/extractor/plugin-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAa,MAAM,aAAa,CAAA;AAE/G;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAItE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAClC,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,MAAM,EAAE,MAAM,GACb,aAAa,CAiHf"}
|
package/types/extractor.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { runExtractor, extract } from './extractor/core/extractor';
|
|
2
|
-
import { findKeys } from './extractor/core/key-finder';
|
|
3
|
-
import { getTranslations } from './extractor/core/translation-manager';
|
|
4
|
-
import { ASTVisitors } from './extractor/core/ast-visitors';
|
|
5
|
-
import type { PluginContext } from './types';
|
|
1
|
+
import { runExtractor, extract } from './extractor/core/extractor.js';
|
|
2
|
+
import { findKeys } from './extractor/core/key-finder.js';
|
|
3
|
+
import { getTranslations } from './extractor/core/translation-manager.js';
|
|
4
|
+
import { ASTVisitors } from './extractor/core/ast-visitors.js';
|
|
5
|
+
import type { PluginContext } from './types.js';
|
|
6
6
|
export { runExtractor, extract, findKeys, getTranslations, ASTVisitors, PluginContext, };
|
|
7
7
|
//# sourceMappingURL=extractor.d.ts.map
|
package/types/extractor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../src/extractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../src/extractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,OAAO,EACL,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,eAAe,EACf,WAAW,EACX,aAAa,GACd,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heuristic-config.d.ts","sourceRoot":"","sources":["../src/heuristic-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"heuristic-config.d.ts","sourceRoot":"","sources":["../src/heuristic-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AA+CtD;;;;;;GAMG;AACH,wBAAsB,YAAY,IAAK,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,CA6DnF"}
|
package/types/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export type { I18nextToolkitConfig, Plugin, LinterPlugin, InstrumenterPlugin, LintPluginContext, LintIssue, PluginContext, ExtractedKey, TranslationResult, ExtractedKeysMap, RenameKeyResult, Logger, InstrumenterOptions, CandidateString, TransformResult, FileInstrumentationResult, InstrumentationResults, ComponentBoundary, FileScanResult, CustomCandidateScorer, InstrumentPluginContext } from './types';
|
|
2
|
-
export { defineConfig } from './config';
|
|
3
|
-
export { extract, findKeys, getTranslations, runExtractor } from './extractor';
|
|
4
|
-
export { runLinter, recommendedAcceptedTags, recommendedAcceptedAttributes } from './linter';
|
|
5
|
-
export { runSyncer } from './syncer';
|
|
6
|
-
export { runStatus } from './status';
|
|
7
|
-
export { runTypesGenerator } from './types-generator';
|
|
8
|
-
export { runRenameKey } from './rename-key';
|
|
9
|
-
export { runInstrumenter, writeExtractedKeys } from './instrumenter';
|
|
1
|
+
export type { I18nextToolkitConfig, Plugin, LinterPlugin, InstrumenterPlugin, LintPluginContext, LintIssue, PluginContext, ExtractedKey, TranslationResult, ExtractedKeysMap, RenameKeyResult, Logger, InstrumenterOptions, CandidateString, TransformResult, FileInstrumentationResult, InstrumentationResults, ComponentBoundary, FileScanResult, CustomCandidateScorer, InstrumentPluginContext } from './types.js';
|
|
2
|
+
export { defineConfig } from './config.js';
|
|
3
|
+
export { extract, findKeys, getTranslations, runExtractor } from './extractor.js';
|
|
4
|
+
export { runLinter, recommendedAcceptedTags, recommendedAcceptedAttributes } from './linter.js';
|
|
5
|
+
export { runSyncer } from './syncer.js';
|
|
6
|
+
export { runStatus } from './status.js';
|
|
7
|
+
export { runTypesGenerator } from './types-generator.js';
|
|
8
|
+
export { runRenameKey } from './rename-key.js';
|
|
9
|
+
export { runInstrumenter, writeExtractedKeys } from './instrumenter/index.js';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,MAAM,EACN,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,MAAM,EACN,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EACL,OAAO,EACP,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAC/F,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Logger, I18nextToolkitConfig, InstrumenterOptions, CandidateString, InstrumentationResults } from '../../types';
|
|
1
|
+
import type { Logger, I18nextToolkitConfig, InstrumenterOptions, CandidateString, InstrumentationResults } from '../../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Main orchestrator for the instrument command.
|
|
4
4
|
* Scans source files for hardcoded strings and instruments them with i18next calls.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumenter.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/core/instrumenter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,eAAe,EAA6B,sBAAsB,EAAiE,MAAM,
|
|
1
|
+
{"version":3,"file":"instrumenter.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/core/instrumenter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,eAAe,EAA6B,sBAAsB,EAAiE,MAAM,gBAAgB,CAAA;AAU1N;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,GAAE,MAA4B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAoNjC;AA4wDD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,eAAe,EAAE,EAC7B,MAAM,EAAE,oBAAoB,EAC5B,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,GAAE,MAA4B,GACnC,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { I18nextToolkitConfig, CandidateString } from '../../types';
|
|
1
|
+
import type { I18nextToolkitConfig, CandidateString } from '../../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Detects if a string is a candidate for translation based on confidence heuristics.
|
|
4
4
|
* Returns null if the string should be skipped, otherwise returns a CandidateString
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string-detector.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/core/string-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"string-detector.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/core/string-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAI3E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,GAC5C,eAAe,GAAG,IAAI,CAgDxB"}
|