i18next-cli 1.67.6 → 1.67.8
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/README.md +15 -0
- package/dist/cjs/cli.js +1 -1
- package/dist/cjs/extractor/core/ast-visitors.js +82 -0
- package/dist/cjs/extractor/core/translation-manager.js +36 -45
- package/dist/cjs/extractor/parsers/expression-resolver.js +49 -0
- package/dist/cjs/instrumenter/core/instrumenter.js +61 -1
- package/dist/cjs/instrumenter/core/transformer.js +9 -1
- package/dist/esm/cli.js +1 -1
- package/dist/esm/extractor/core/ast-visitors.js +82 -0
- package/dist/esm/extractor/core/translation-manager.js +36 -45
- package/dist/esm/extractor/parsers/expression-resolver.js +49 -0
- package/dist/esm/instrumenter/core/instrumenter.js +61 -1
- package/dist/esm/instrumenter/core/transformer.js +9 -1
- package/package.json +1 -1
- package/types/extractor/core/ast-visitors.d.ts +11 -0
- package/types/extractor/core/ast-visitors.d.ts.map +1 -1
- package/types/extractor/core/translation-manager.d.ts.map +1 -1
- package/types/extractor/parsers/expression-resolver.d.ts +14 -0
- package/types/extractor/parsers/expression-resolver.d.ts.map +1 -1
- package/types/instrumenter/core/instrumenter.d.ts.map +1 -1
- package/types/instrumenter/core/transformer.d.ts.map +1 -1
- package/types/types.d.ts +2 -0
- package/types/types.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -451,6 +451,21 @@ The instrumenter uses confidence heuristics to avoid transforming:
|
|
|
451
451
|
- HTML attribute values that appear technical
|
|
452
452
|
- Template literals with only expressions (no static text)
|
|
453
453
|
- Strings already inside `t()` calls or `<Trans>` components
|
|
454
|
+
- **Module-scope strings** — anything outside a function body, e.g. a top-level config/registry array:
|
|
455
|
+
```ts
|
|
456
|
+
export const SETTINGS_SECTIONS = [
|
|
457
|
+
{ id: 'appearance', label: 'Appearance' }, // left untouched
|
|
458
|
+
]
|
|
459
|
+
```
|
|
460
|
+
A `t()` call there would be evaluated once, when the module is first imported — possibly before i18next
|
|
461
|
+
is initialized, and never again when the language changes. Move the text into a component, or expose the
|
|
462
|
+
registry as a hook that calls `useTranslation()` internally:
|
|
463
|
+
```ts
|
|
464
|
+
export const useSettingsSections = () => {
|
|
465
|
+
const { t } = useTranslation()
|
|
466
|
+
return [{ id: 'appearance', label: t('appearance', 'Appearance') }]
|
|
467
|
+
}
|
|
468
|
+
```
|
|
454
469
|
|
|
455
470
|
**Auto-injection:**
|
|
456
471
|
|
package/dist/cjs/cli.js
CHANGED
|
@@ -37,7 +37,7 @@ const program = new commander.Command();
|
|
|
37
37
|
program
|
|
38
38
|
.name('i18next-cli')
|
|
39
39
|
.description('A unified, high-performance i18next CLI.')
|
|
40
|
-
.version('1.67.
|
|
40
|
+
.version('1.67.8'); // This string is replaced with the actual version at build time by rollup
|
|
41
41
|
// new: global config override option
|
|
42
42
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
43
43
|
program
|
|
@@ -175,6 +175,7 @@ class ASTVisitors {
|
|
|
175
175
|
let isNewClassScope = false;
|
|
176
176
|
let paramTemporaries;
|
|
177
177
|
let paramObjectTemporaries;
|
|
178
|
+
let paramArrayTemporaries;
|
|
178
179
|
// ENTER CLASS SCOPE for class declarations / expressions and pre-register
|
|
179
180
|
// class field initializers so that later `this.<field>` references inside
|
|
180
181
|
// method bodies can inherit the namespace/keyPrefix from the field.
|
|
@@ -409,6 +410,17 @@ class ASTVisitors {
|
|
|
409
410
|
paramObjectTemporaries = [];
|
|
410
411
|
paramObjectTemporaries.push(paramKey);
|
|
411
412
|
}
|
|
413
|
+
else {
|
|
414
|
+
// Array-of-object param (`items: IProps[]`) so the callback
|
|
415
|
+
// parameter of `items.map(...)` can be bound to the element type.
|
|
416
|
+
const elementMembers = this.expressionResolver.resolveArrayElementMembers(typeAnn);
|
|
417
|
+
if (elementMembers) {
|
|
418
|
+
this.expressionResolver.setArrayElementMembers(paramKey, elementMembers);
|
|
419
|
+
if (!paramArrayTemporaries)
|
|
420
|
+
paramArrayTemporaries = [];
|
|
421
|
+
paramArrayTemporaries.push(paramKey);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
412
424
|
}
|
|
413
425
|
}
|
|
414
426
|
}
|
|
@@ -473,6 +485,11 @@ class ASTVisitors {
|
|
|
473
485
|
this.expressionResolver.setTemporaryVariable(info.paramName, info.values);
|
|
474
486
|
arrayCallbackCleanup = () => this.expressionResolver.deleteTemporaryVariable(info.paramName);
|
|
475
487
|
}
|
|
488
|
+
else {
|
|
489
|
+
// `items.map(({ size }) => ...)` / `items.map(item => ...t(`${item.size}`))`
|
|
490
|
+
// where `items` is typed as an array of an object shape.
|
|
491
|
+
arrayCallbackCleanup = this.tryBindObjectArrayCallback(node);
|
|
492
|
+
}
|
|
476
493
|
}
|
|
477
494
|
// --- RECURSION ---
|
|
478
495
|
// Recurse into the children of the current node
|
|
@@ -621,6 +638,11 @@ class ASTVisitors {
|
|
|
621
638
|
this.expressionResolver.deleteTemporaryObjectVariable(name);
|
|
622
639
|
}
|
|
623
640
|
}
|
|
641
|
+
if (paramArrayTemporaries) {
|
|
642
|
+
for (const name of paramArrayTemporaries) {
|
|
643
|
+
this.expressionResolver.deleteArrayElementMembers(name);
|
|
644
|
+
}
|
|
645
|
+
}
|
|
624
646
|
this.scopeManager.exitScope();
|
|
625
647
|
}
|
|
626
648
|
// LEAVE CLASS SCOPE for classes
|
|
@@ -687,6 +709,66 @@ class ASTVisitors {
|
|
|
687
709
|
return undefined;
|
|
688
710
|
}
|
|
689
711
|
}
|
|
712
|
+
/**
|
|
713
|
+
* If `node` is `items.map(cb)` (or forEach/flatMap/…) where `items` is typed
|
|
714
|
+
* as an array of an object shape (`items: IProps[]`), binds the callback
|
|
715
|
+
* parameter to the element type for the duration of the callback body:
|
|
716
|
+
*
|
|
717
|
+
* items.map(({ size }) => t(`some|${size}`)) → `size` bound to the union
|
|
718
|
+
* items.map(item => t(`some|${item.size}`)) → `item` bound to the members
|
|
719
|
+
*
|
|
720
|
+
* Returns a cleanup function, or undefined when nothing was bound.
|
|
721
|
+
*/
|
|
722
|
+
tryBindObjectArrayCallback(node) {
|
|
723
|
+
try {
|
|
724
|
+
const callee = node.callee;
|
|
725
|
+
if (callee?.type !== 'MemberExpression')
|
|
726
|
+
return undefined;
|
|
727
|
+
const prop = callee.property;
|
|
728
|
+
if (prop?.type !== 'Identifier')
|
|
729
|
+
return undefined;
|
|
730
|
+
if (!['map', 'forEach', 'flatMap', 'filter', 'find', 'some', 'every'].includes(prop.value))
|
|
731
|
+
return undefined;
|
|
732
|
+
if (callee.object?.type !== 'Identifier')
|
|
733
|
+
return undefined;
|
|
734
|
+
const members = this.expressionResolver.getArrayElementMembers(callee.object.value);
|
|
735
|
+
if (!members)
|
|
736
|
+
return undefined;
|
|
737
|
+
const callbackArg = node.arguments?.[0]?.expression;
|
|
738
|
+
const params = callbackArg?.params ?? callbackArg?.parameters ?? [];
|
|
739
|
+
const firstParam = params[0];
|
|
740
|
+
if (!firstParam)
|
|
741
|
+
return undefined;
|
|
742
|
+
const pat = firstParam.pat ?? firstParam.pattern ?? firstParam;
|
|
743
|
+
// Destructured element: `({ size }) => …` / `({ size: s }) => …`
|
|
744
|
+
if (pat.type === 'ObjectPattern') {
|
|
745
|
+
const bound = [];
|
|
746
|
+
for (const patProp of (pat.properties ?? [])) {
|
|
747
|
+
const memberName = patProp?.key?.value;
|
|
748
|
+
let localNode = patProp?.type === 'KeyValuePatternProperty' ? patProp.value : patProp?.key;
|
|
749
|
+
if (localNode?.type === 'AssignmentPattern')
|
|
750
|
+
localNode = localNode.left;
|
|
751
|
+
const localName = localNode?.type === 'Identifier' ? localNode.value : undefined;
|
|
752
|
+
if (!memberName || !localName || !members[memberName])
|
|
753
|
+
continue;
|
|
754
|
+
this.expressionResolver.setTemporaryVariable(localName, members[memberName]);
|
|
755
|
+
bound.push(localName);
|
|
756
|
+
}
|
|
757
|
+
if (bound.length === 0)
|
|
758
|
+
return undefined;
|
|
759
|
+
return () => bound.forEach(name => this.expressionResolver.deleteTemporaryVariable(name));
|
|
760
|
+
}
|
|
761
|
+
// Whole element: `item => …` so `item.size` resolves
|
|
762
|
+
if (pat.type === 'Identifier') {
|
|
763
|
+
this.expressionResolver.setTemporaryObjectVariable(pat.value, members);
|
|
764
|
+
return () => this.expressionResolver.deleteTemporaryObjectVariable(pat.value);
|
|
765
|
+
}
|
|
766
|
+
return undefined;
|
|
767
|
+
}
|
|
768
|
+
catch {
|
|
769
|
+
return undefined;
|
|
770
|
+
}
|
|
771
|
+
}
|
|
690
772
|
/**
|
|
691
773
|
* Extracts the first callback parameter identifier from an iteration call node
|
|
692
774
|
* and pairs it with the provided values array.
|
|
@@ -95,61 +95,52 @@ function sortObject(obj, config, customSort) {
|
|
|
95
95
|
const pluralSeparator = config?.extract?.pluralSeparator ?? '_';
|
|
96
96
|
// Define the canonical order for plural forms
|
|
97
97
|
const ordinalPluralOrder = pluralForms.map(form => `ordinal${pluralSeparator}${form}`);
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// Handle cardinal plurals: key_form or key_context_form
|
|
109
|
-
for (const form of pluralForms) {
|
|
110
|
-
if (key.endsWith(`${pluralSeparator}${form}`)) {
|
|
111
|
-
const base = key.slice(0, -(pluralSeparator.length + form.length));
|
|
112
|
-
return { base, form, isOrdinal: false, isPlural: true, fullKey: key };
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return { base: key, form: '', isOrdinal: false, isPlural: false, fullKey: key };
|
|
116
|
-
};
|
|
117
|
-
const aInfo = getKeyInfo(a);
|
|
118
|
-
const bInfo = getKeyInfo(b);
|
|
119
|
-
// If both are plural forms
|
|
120
|
-
if (aInfo.isPlural && bInfo.isPlural) {
|
|
121
|
-
// First compare by base key
|
|
122
|
-
const baseComparison = customSort
|
|
123
|
-
? customSort(aInfo.base, bInfo.base)
|
|
124
|
-
: aInfo.base.localeCompare(bInfo.base, undefined, { sensitivity: 'base' });
|
|
125
|
-
if (baseComparison !== 0) {
|
|
126
|
-
return baseComparison;
|
|
98
|
+
// Helper function to extract base key and its rank within that base.
|
|
99
|
+
// Rank orders the variants of one base key: the plain key first, then the
|
|
100
|
+
// cardinal plural forms in canonical order, then the ordinal ones.
|
|
101
|
+
const getKeyInfo = (key) => {
|
|
102
|
+
// Handle ordinal plurals: key_ordinal_form or key_context_ordinal_form
|
|
103
|
+
for (const form of ordinalPluralOrder) {
|
|
104
|
+
if (key.endsWith(`${pluralSeparator}${form}`)) {
|
|
105
|
+
const base = key.slice(0, -(pluralSeparator.length + form.length));
|
|
106
|
+
return { base, rank: pluralForms.length + ordinalPluralOrder.indexOf(form) };
|
|
127
107
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const orderArray = aInfo.isOrdinal ? ordinalPluralOrder : pluralForms;
|
|
135
|
-
const aIndex = orderArray.indexOf(aInfo.form);
|
|
136
|
-
const bIndex = orderArray.indexOf(bInfo.form);
|
|
137
|
-
if (aIndex !== -1 && bIndex !== -1) {
|
|
138
|
-
return aIndex - bIndex;
|
|
108
|
+
}
|
|
109
|
+
// Handle cardinal plurals: key_form or key_context_form
|
|
110
|
+
for (const form of pluralForms) {
|
|
111
|
+
if (key.endsWith(`${pluralSeparator}${form}`)) {
|
|
112
|
+
const base = key.slice(0, -(pluralSeparator.length + form.length));
|
|
113
|
+
return { base, rank: pluralForms.indexOf(form) };
|
|
139
114
|
}
|
|
140
|
-
// Fallback to alphabetical if forms not found in order array
|
|
141
|
-
return aInfo.form.localeCompare(bInfo.form);
|
|
142
115
|
}
|
|
143
|
-
|
|
144
|
-
|
|
116
|
+
return { base: key, rank: -1 };
|
|
117
|
+
};
|
|
118
|
+
const compareKeys = (a, b) => {
|
|
119
|
+
if (customSort)
|
|
145
120
|
return customSort(a, b);
|
|
146
|
-
}
|
|
147
121
|
// Default: case-insensitive, then by case
|
|
148
122
|
const caseInsensitiveComparison = a.localeCompare(b, undefined, { sensitivity: 'base' });
|
|
149
123
|
if (caseInsensitiveComparison === 0) {
|
|
150
124
|
return a.localeCompare(b, undefined, { sensitivity: 'case' });
|
|
151
125
|
}
|
|
152
126
|
return caseInsensitiveComparison;
|
|
127
|
+
};
|
|
128
|
+
const keys = Object.keys(obj).sort((a, b) => {
|
|
129
|
+
const aInfo = getKeyInfo(a);
|
|
130
|
+
const bInfo = getKeyInfo(b);
|
|
131
|
+
// Always compare by base key first. Comparing base keys for plural/plural
|
|
132
|
+
// pairs but full keys for every other pair made the comparator
|
|
133
|
+
// intransitive, so the result depended on the input order and `extract`
|
|
134
|
+
// was not idempotent (#279).
|
|
135
|
+
if (aInfo.base !== bInfo.base) {
|
|
136
|
+
const baseComparison = compareKeys(aInfo.base, bInfo.base);
|
|
137
|
+
if (baseComparison !== 0)
|
|
138
|
+
return baseComparison;
|
|
139
|
+
}
|
|
140
|
+
// Same base key: plain key, cardinal plurals, then ordinal plurals
|
|
141
|
+
if (aInfo.rank !== bInfo.rank)
|
|
142
|
+
return aInfo.rank - bInfo.rank;
|
|
143
|
+
return compareKeys(a, b);
|
|
153
144
|
});
|
|
154
145
|
for (const key of keys) {
|
|
155
146
|
sortedObj[key] = sortObject(obj[key], config, customSort);
|
|
@@ -33,6 +33,10 @@ class ExpressionResolver {
|
|
|
33
33
|
// Temporary per-scope bindings for identifiers holding an object-shaped type,
|
|
34
34
|
// e.g. `function f(props: IProps)` -> { props: { size: ['all','next'] } }.
|
|
35
35
|
temporaryObjectVariables = new Map();
|
|
36
|
+
// Identifiers holding an array of an object-shaped type, e.g.
|
|
37
|
+
// `items: IProps[]` -> { items: { size: ['all','next'] } }, so that the
|
|
38
|
+
// callback parameter of `items.map(...)` can be bound to the element type.
|
|
39
|
+
arrayElementMembers = new Map();
|
|
36
40
|
constructor(hooks) {
|
|
37
41
|
this.hooks = hooks;
|
|
38
42
|
}
|
|
@@ -43,6 +47,7 @@ class ExpressionResolver {
|
|
|
43
47
|
this.variableTable.clear();
|
|
44
48
|
this.typeAliasTable.clear();
|
|
45
49
|
this.temporaryVariables.clear();
|
|
50
|
+
this.arrayElementMembers.clear();
|
|
46
51
|
}
|
|
47
52
|
/**
|
|
48
53
|
* Capture a VariableDeclarator node to record simple statically analyzable
|
|
@@ -97,6 +102,14 @@ class ExpressionResolver {
|
|
|
97
102
|
if (node.id.type !== 'Identifier')
|
|
98
103
|
return;
|
|
99
104
|
const name = node.id.value;
|
|
105
|
+
// `const items: IProps[] = …` → remember the element's member map so
|
|
106
|
+
// `items.map(({ size }) => …)` can bind the callback parameter.
|
|
107
|
+
const idTypeAnnotation = this.extractTypeAnnotation(node.id);
|
|
108
|
+
if (idTypeAnnotation) {
|
|
109
|
+
const elementMembers = this.resolveArrayElementMembers(idTypeAnnotation);
|
|
110
|
+
if (elementMembers)
|
|
111
|
+
this.arrayElementMembers.set(name, elementMembers);
|
|
112
|
+
}
|
|
100
113
|
// pattern 1:
|
|
101
114
|
// Handle `declare const x: 'a' | 'b'` and `declare const x: SomeUnion`
|
|
102
115
|
// where there is no initializer but a TypeScript type annotation.
|
|
@@ -301,6 +314,42 @@ class ExpressionResolver {
|
|
|
301
314
|
catch { }
|
|
302
315
|
return undefined;
|
|
303
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
* Resolve a type annotation for an array of an object shape (`IProps[]`,
|
|
319
|
+
* `Array<IProps>`, `ReadonlyArray<IProps>`) to the element's member map, so
|
|
320
|
+
* that `items.map(({ size }) => …)` can bind the callback parameter.
|
|
321
|
+
*/
|
|
322
|
+
resolveArrayElementMembers(tsType) {
|
|
323
|
+
try {
|
|
324
|
+
if (!tsType)
|
|
325
|
+
return undefined;
|
|
326
|
+
if (tsType.type === 'TsArrayType') {
|
|
327
|
+
return this.resolveTypeMembers(tsType.elemType);
|
|
328
|
+
}
|
|
329
|
+
if (tsType.type === 'TsTypeReference' && tsType.typeName?.type === 'Identifier') {
|
|
330
|
+
const name = tsType.typeName.value;
|
|
331
|
+
if (name !== 'Array' && name !== 'ReadonlyArray')
|
|
332
|
+
return undefined;
|
|
333
|
+
const arg = tsType.typeParams?.params?.[0] ?? tsType.typeArguments?.params?.[0];
|
|
334
|
+
return this.resolveTypeMembers(arg);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
catch { }
|
|
338
|
+
return undefined;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Bind an identifier to the member map of its array element type
|
|
342
|
+
* (`items: IProps[]`).
|
|
343
|
+
*/
|
|
344
|
+
setArrayElementMembers(name, members) {
|
|
345
|
+
this.arrayElementMembers.set(name, members);
|
|
346
|
+
}
|
|
347
|
+
getArrayElementMembers(name) {
|
|
348
|
+
return this.arrayElementMembers.get(name);
|
|
349
|
+
}
|
|
350
|
+
deleteArrayElementMembers(name) {
|
|
351
|
+
this.arrayElementMembers.delete(name);
|
|
352
|
+
}
|
|
304
353
|
/**
|
|
305
354
|
* Temporarily bind an identifier to an object-shaped type's members, so that
|
|
306
355
|
* `props.size` inside the function body resolves to the member's values.
|
|
@@ -79,6 +79,14 @@ async function runInstrumenter(config, options, logger$1 = new logger.ConsoleLog
|
|
|
79
79
|
const { components, languageChangeSites } = scanResult;
|
|
80
80
|
// Run instrumentOnResult plugin pipeline
|
|
81
81
|
candidates = await runInstrumentOnResultPipeline(file, candidates, plugins, logger$1);
|
|
82
|
+
if (scanResult.moduleScopeSkipped > 0) {
|
|
83
|
+
totalCandidates += scanResult.moduleScopeSkipped;
|
|
84
|
+
totalSkipped += scanResult.moduleScopeSkipped;
|
|
85
|
+
logger$1.warn(`${file}: skipped ${scanResult.moduleScopeSkipped} module-scope string(s). ` +
|
|
86
|
+
'A t() call there runs once at import time — before i18next may be initialized — and never updates on language change. ' +
|
|
87
|
+
'Move the text into a component/hook (e.g. a useSections() hook calling useTranslation()), or read the key at render time. ' +
|
|
88
|
+
'See: https://www.locize.com/blog/how-to-use-i18next-t-outside-react-components/');
|
|
89
|
+
}
|
|
82
90
|
if (candidates.length === 0 && languageChangeSites.length === 0) {
|
|
83
91
|
continue;
|
|
84
92
|
}
|
|
@@ -217,6 +225,7 @@ async function scanFileForCandidates(content, file, config) {
|
|
|
217
225
|
const candidates = [];
|
|
218
226
|
const components = [];
|
|
219
227
|
const languageChangeSites = [];
|
|
228
|
+
let moduleScopeSkipped = 0;
|
|
220
229
|
const fileExt = node_path.extname(file).toLowerCase();
|
|
221
230
|
const isTypeScriptFile = ['.ts', '.tsx', '.mts', '.cts'].includes(fileExt);
|
|
222
231
|
const isTSX = fileExt === '.tsx';
|
|
@@ -265,6 +274,9 @@ async function scanFileForCandidates(content, file, config) {
|
|
|
265
274
|
astUtils.normalizeSpansToCharIndices(ast, content);
|
|
266
275
|
// Detect React function component boundaries
|
|
267
276
|
detectComponentBoundaries(ast, content, components);
|
|
277
|
+
// Collect function spans so module-scope strings can be excluded below
|
|
278
|
+
const functionSpans = [];
|
|
279
|
+
collectFunctionSpans(ast, functionSpans);
|
|
268
280
|
// Visit AST to find string literals
|
|
269
281
|
visitNodeForStrings(ast, content, file, config, candidates);
|
|
270
282
|
// Detect JSX interpolation patterns (merge adjacent text + expression children)
|
|
@@ -282,6 +294,16 @@ async function scanFileForCandidates(content, file, config) {
|
|
|
282
294
|
}
|
|
283
295
|
}
|
|
284
296
|
}
|
|
297
|
+
// Drop module-scope candidates: wrapping them yields a t() call evaluated
|
|
298
|
+
// once at import time — possibly before i18next is initialized, and never
|
|
299
|
+
// re-evaluated on language change. See issue #278.
|
|
300
|
+
const moduleScoped = candidates.filter(c => !functionSpans.some(span => c.offset >= span.start && c.endOffset <= span.end));
|
|
301
|
+
if (moduleScoped.length > 0) {
|
|
302
|
+
moduleScopeSkipped = moduleScoped.length;
|
|
303
|
+
const keep = candidates.filter(c => !moduleScoped.includes(c));
|
|
304
|
+
candidates.length = 0;
|
|
305
|
+
candidates.push(...keep);
|
|
306
|
+
}
|
|
285
307
|
// Annotate language change sites with their enclosing component (if any)
|
|
286
308
|
for (const site of languageChangeSites) {
|
|
287
309
|
for (const comp of components) {
|
|
@@ -315,7 +337,45 @@ async function scanFileForCandidates(content, file, config) {
|
|
|
315
337
|
catch (err) {
|
|
316
338
|
// Silently skip files that can't be parsed
|
|
317
339
|
}
|
|
318
|
-
return { candidates, components, languageChangeSites };
|
|
340
|
+
return { candidates, components, languageChangeSites, moduleScopeSkipped };
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Node types whose span delimits deferred (call-time) evaluation. A string
|
|
344
|
+
* outside all of them is evaluated when the module is first imported.
|
|
345
|
+
*/
|
|
346
|
+
const FUNCTION_NODE_TYPES = new Set([
|
|
347
|
+
'FunctionDeclaration',
|
|
348
|
+
'FunctionExpression',
|
|
349
|
+
'ArrowFunctionExpression',
|
|
350
|
+
'ClassMethod',
|
|
351
|
+
'PrivateMethod',
|
|
352
|
+
'MethodProperty',
|
|
353
|
+
'GetterProperty',
|
|
354
|
+
'SetterProperty',
|
|
355
|
+
'Constructor'
|
|
356
|
+
]);
|
|
357
|
+
/**
|
|
358
|
+
* Recursively collects the spans of every function-like node in the AST.
|
|
359
|
+
*/
|
|
360
|
+
function collectFunctionSpans(node, spans) {
|
|
361
|
+
if (!node || typeof node !== 'object')
|
|
362
|
+
return;
|
|
363
|
+
if (FUNCTION_NODE_TYPES.has(node.type) && node.span) {
|
|
364
|
+
spans.push({ start: node.span.start, end: node.span.end });
|
|
365
|
+
// No need to recurse: nested functions are inside this span already.
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
for (const key in node) {
|
|
369
|
+
const value = node[key];
|
|
370
|
+
if (value && typeof value === 'object') {
|
|
371
|
+
if (Array.isArray(value)) {
|
|
372
|
+
value.forEach(item => collectFunctionSpans(item, spans));
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
collectFunctionSpans(value, spans);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
319
379
|
}
|
|
320
380
|
/**
|
|
321
381
|
* Returns the 1-based line number for a character offset.
|
|
@@ -344,6 +344,9 @@ function addImportStatements(s, content, needs) {
|
|
|
344
344
|
// Skip past this statement so we don't match `import` lines inside it.
|
|
345
345
|
importStartRegex.lastIndex = endOfImport;
|
|
346
346
|
}
|
|
347
|
+
// Last import may end at EOF without a trailing newline
|
|
348
|
+
if (insertPos > 0 && content[insertPos - 1] !== '\n')
|
|
349
|
+
importStatement = `\n${importStatement}`;
|
|
347
350
|
s.appendRight(insertPos, importStatement);
|
|
348
351
|
}
|
|
349
352
|
/**
|
|
@@ -383,7 +386,12 @@ function findImportStatementEnd(content, start) {
|
|
|
383
386
|
continue;
|
|
384
387
|
}
|
|
385
388
|
if (depth === 0 && sawString && (ch === '\n' || ch === ';')) {
|
|
386
|
-
|
|
389
|
+
if (ch === '\n')
|
|
390
|
+
return i + 1;
|
|
391
|
+
// Terminated by `;` — consume the rest of the line so the next statement
|
|
392
|
+
// is inserted on its own line rather than appended after the semicolon.
|
|
393
|
+
const newlinePos = content.indexOf('\n', i);
|
|
394
|
+
return newlinePos === -1 ? content.length : newlinePos + 1;
|
|
387
395
|
}
|
|
388
396
|
}
|
|
389
397
|
return content.length;
|
package/dist/esm/cli.js
CHANGED
|
@@ -31,7 +31,7 @@ const program = new Command();
|
|
|
31
31
|
program
|
|
32
32
|
.name('i18next-cli')
|
|
33
33
|
.description('A unified, high-performance i18next CLI.')
|
|
34
|
-
.version('1.67.
|
|
34
|
+
.version('1.67.8'); // 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
|
|
@@ -173,6 +173,7 @@ class ASTVisitors {
|
|
|
173
173
|
let isNewClassScope = false;
|
|
174
174
|
let paramTemporaries;
|
|
175
175
|
let paramObjectTemporaries;
|
|
176
|
+
let paramArrayTemporaries;
|
|
176
177
|
// ENTER CLASS SCOPE for class declarations / expressions and pre-register
|
|
177
178
|
// class field initializers so that later `this.<field>` references inside
|
|
178
179
|
// method bodies can inherit the namespace/keyPrefix from the field.
|
|
@@ -407,6 +408,17 @@ class ASTVisitors {
|
|
|
407
408
|
paramObjectTemporaries = [];
|
|
408
409
|
paramObjectTemporaries.push(paramKey);
|
|
409
410
|
}
|
|
411
|
+
else {
|
|
412
|
+
// Array-of-object param (`items: IProps[]`) so the callback
|
|
413
|
+
// parameter of `items.map(...)` can be bound to the element type.
|
|
414
|
+
const elementMembers = this.expressionResolver.resolveArrayElementMembers(typeAnn);
|
|
415
|
+
if (elementMembers) {
|
|
416
|
+
this.expressionResolver.setArrayElementMembers(paramKey, elementMembers);
|
|
417
|
+
if (!paramArrayTemporaries)
|
|
418
|
+
paramArrayTemporaries = [];
|
|
419
|
+
paramArrayTemporaries.push(paramKey);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
410
422
|
}
|
|
411
423
|
}
|
|
412
424
|
}
|
|
@@ -471,6 +483,11 @@ class ASTVisitors {
|
|
|
471
483
|
this.expressionResolver.setTemporaryVariable(info.paramName, info.values);
|
|
472
484
|
arrayCallbackCleanup = () => this.expressionResolver.deleteTemporaryVariable(info.paramName);
|
|
473
485
|
}
|
|
486
|
+
else {
|
|
487
|
+
// `items.map(({ size }) => ...)` / `items.map(item => ...t(`${item.size}`))`
|
|
488
|
+
// where `items` is typed as an array of an object shape.
|
|
489
|
+
arrayCallbackCleanup = this.tryBindObjectArrayCallback(node);
|
|
490
|
+
}
|
|
474
491
|
}
|
|
475
492
|
// --- RECURSION ---
|
|
476
493
|
// Recurse into the children of the current node
|
|
@@ -619,6 +636,11 @@ class ASTVisitors {
|
|
|
619
636
|
this.expressionResolver.deleteTemporaryObjectVariable(name);
|
|
620
637
|
}
|
|
621
638
|
}
|
|
639
|
+
if (paramArrayTemporaries) {
|
|
640
|
+
for (const name of paramArrayTemporaries) {
|
|
641
|
+
this.expressionResolver.deleteArrayElementMembers(name);
|
|
642
|
+
}
|
|
643
|
+
}
|
|
622
644
|
this.scopeManager.exitScope();
|
|
623
645
|
}
|
|
624
646
|
// LEAVE CLASS SCOPE for classes
|
|
@@ -685,6 +707,66 @@ class ASTVisitors {
|
|
|
685
707
|
return undefined;
|
|
686
708
|
}
|
|
687
709
|
}
|
|
710
|
+
/**
|
|
711
|
+
* If `node` is `items.map(cb)` (or forEach/flatMap/…) where `items` is typed
|
|
712
|
+
* as an array of an object shape (`items: IProps[]`), binds the callback
|
|
713
|
+
* parameter to the element type for the duration of the callback body:
|
|
714
|
+
*
|
|
715
|
+
* items.map(({ size }) => t(`some|${size}`)) → `size` bound to the union
|
|
716
|
+
* items.map(item => t(`some|${item.size}`)) → `item` bound to the members
|
|
717
|
+
*
|
|
718
|
+
* Returns a cleanup function, or undefined when nothing was bound.
|
|
719
|
+
*/
|
|
720
|
+
tryBindObjectArrayCallback(node) {
|
|
721
|
+
try {
|
|
722
|
+
const callee = node.callee;
|
|
723
|
+
if (callee?.type !== 'MemberExpression')
|
|
724
|
+
return undefined;
|
|
725
|
+
const prop = callee.property;
|
|
726
|
+
if (prop?.type !== 'Identifier')
|
|
727
|
+
return undefined;
|
|
728
|
+
if (!['map', 'forEach', 'flatMap', 'filter', 'find', 'some', 'every'].includes(prop.value))
|
|
729
|
+
return undefined;
|
|
730
|
+
if (callee.object?.type !== 'Identifier')
|
|
731
|
+
return undefined;
|
|
732
|
+
const members = this.expressionResolver.getArrayElementMembers(callee.object.value);
|
|
733
|
+
if (!members)
|
|
734
|
+
return undefined;
|
|
735
|
+
const callbackArg = node.arguments?.[0]?.expression;
|
|
736
|
+
const params = callbackArg?.params ?? callbackArg?.parameters ?? [];
|
|
737
|
+
const firstParam = params[0];
|
|
738
|
+
if (!firstParam)
|
|
739
|
+
return undefined;
|
|
740
|
+
const pat = firstParam.pat ?? firstParam.pattern ?? firstParam;
|
|
741
|
+
// Destructured element: `({ size }) => …` / `({ size: s }) => …`
|
|
742
|
+
if (pat.type === 'ObjectPattern') {
|
|
743
|
+
const bound = [];
|
|
744
|
+
for (const patProp of (pat.properties ?? [])) {
|
|
745
|
+
const memberName = patProp?.key?.value;
|
|
746
|
+
let localNode = patProp?.type === 'KeyValuePatternProperty' ? patProp.value : patProp?.key;
|
|
747
|
+
if (localNode?.type === 'AssignmentPattern')
|
|
748
|
+
localNode = localNode.left;
|
|
749
|
+
const localName = localNode?.type === 'Identifier' ? localNode.value : undefined;
|
|
750
|
+
if (!memberName || !localName || !members[memberName])
|
|
751
|
+
continue;
|
|
752
|
+
this.expressionResolver.setTemporaryVariable(localName, members[memberName]);
|
|
753
|
+
bound.push(localName);
|
|
754
|
+
}
|
|
755
|
+
if (bound.length === 0)
|
|
756
|
+
return undefined;
|
|
757
|
+
return () => bound.forEach(name => this.expressionResolver.deleteTemporaryVariable(name));
|
|
758
|
+
}
|
|
759
|
+
// Whole element: `item => …` so `item.size` resolves
|
|
760
|
+
if (pat.type === 'Identifier') {
|
|
761
|
+
this.expressionResolver.setTemporaryObjectVariable(pat.value, members);
|
|
762
|
+
return () => this.expressionResolver.deleteTemporaryObjectVariable(pat.value);
|
|
763
|
+
}
|
|
764
|
+
return undefined;
|
|
765
|
+
}
|
|
766
|
+
catch {
|
|
767
|
+
return undefined;
|
|
768
|
+
}
|
|
769
|
+
}
|
|
688
770
|
/**
|
|
689
771
|
* Extracts the first callback parameter identifier from an iteration call node
|
|
690
772
|
* and pairs it with the provided values array.
|
|
@@ -93,61 +93,52 @@ function sortObject(obj, config, customSort) {
|
|
|
93
93
|
const pluralSeparator = config?.extract?.pluralSeparator ?? '_';
|
|
94
94
|
// Define the canonical order for plural forms
|
|
95
95
|
const ordinalPluralOrder = pluralForms.map(form => `ordinal${pluralSeparator}${form}`);
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
// Handle cardinal plurals: key_form or key_context_form
|
|
107
|
-
for (const form of pluralForms) {
|
|
108
|
-
if (key.endsWith(`${pluralSeparator}${form}`)) {
|
|
109
|
-
const base = key.slice(0, -(pluralSeparator.length + form.length));
|
|
110
|
-
return { base, form, isOrdinal: false, isPlural: true, fullKey: key };
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
return { base: key, form: '', isOrdinal: false, isPlural: false, fullKey: key };
|
|
114
|
-
};
|
|
115
|
-
const aInfo = getKeyInfo(a);
|
|
116
|
-
const bInfo = getKeyInfo(b);
|
|
117
|
-
// If both are plural forms
|
|
118
|
-
if (aInfo.isPlural && bInfo.isPlural) {
|
|
119
|
-
// First compare by base key
|
|
120
|
-
const baseComparison = customSort
|
|
121
|
-
? customSort(aInfo.base, bInfo.base)
|
|
122
|
-
: aInfo.base.localeCompare(bInfo.base, undefined, { sensitivity: 'base' });
|
|
123
|
-
if (baseComparison !== 0) {
|
|
124
|
-
return baseComparison;
|
|
96
|
+
// Helper function to extract base key and its rank within that base.
|
|
97
|
+
// Rank orders the variants of one base key: the plain key first, then the
|
|
98
|
+
// cardinal plural forms in canonical order, then the ordinal ones.
|
|
99
|
+
const getKeyInfo = (key) => {
|
|
100
|
+
// Handle ordinal plurals: key_ordinal_form or key_context_ordinal_form
|
|
101
|
+
for (const form of ordinalPluralOrder) {
|
|
102
|
+
if (key.endsWith(`${pluralSeparator}${form}`)) {
|
|
103
|
+
const base = key.slice(0, -(pluralSeparator.length + form.length));
|
|
104
|
+
return { base, rank: pluralForms.length + ordinalPluralOrder.indexOf(form) };
|
|
125
105
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
const orderArray = aInfo.isOrdinal ? ordinalPluralOrder : pluralForms;
|
|
133
|
-
const aIndex = orderArray.indexOf(aInfo.form);
|
|
134
|
-
const bIndex = orderArray.indexOf(bInfo.form);
|
|
135
|
-
if (aIndex !== -1 && bIndex !== -1) {
|
|
136
|
-
return aIndex - bIndex;
|
|
106
|
+
}
|
|
107
|
+
// Handle cardinal plurals: key_form or key_context_form
|
|
108
|
+
for (const form of pluralForms) {
|
|
109
|
+
if (key.endsWith(`${pluralSeparator}${form}`)) {
|
|
110
|
+
const base = key.slice(0, -(pluralSeparator.length + form.length));
|
|
111
|
+
return { base, rank: pluralForms.indexOf(form) };
|
|
137
112
|
}
|
|
138
|
-
// Fallback to alphabetical if forms not found in order array
|
|
139
|
-
return aInfo.form.localeCompare(bInfo.form);
|
|
140
113
|
}
|
|
141
|
-
|
|
142
|
-
|
|
114
|
+
return { base: key, rank: -1 };
|
|
115
|
+
};
|
|
116
|
+
const compareKeys = (a, b) => {
|
|
117
|
+
if (customSort)
|
|
143
118
|
return customSort(a, b);
|
|
144
|
-
}
|
|
145
119
|
// Default: case-insensitive, then by case
|
|
146
120
|
const caseInsensitiveComparison = a.localeCompare(b, undefined, { sensitivity: 'base' });
|
|
147
121
|
if (caseInsensitiveComparison === 0) {
|
|
148
122
|
return a.localeCompare(b, undefined, { sensitivity: 'case' });
|
|
149
123
|
}
|
|
150
124
|
return caseInsensitiveComparison;
|
|
125
|
+
};
|
|
126
|
+
const keys = Object.keys(obj).sort((a, b) => {
|
|
127
|
+
const aInfo = getKeyInfo(a);
|
|
128
|
+
const bInfo = getKeyInfo(b);
|
|
129
|
+
// Always compare by base key first. Comparing base keys for plural/plural
|
|
130
|
+
// pairs but full keys for every other pair made the comparator
|
|
131
|
+
// intransitive, so the result depended on the input order and `extract`
|
|
132
|
+
// was not idempotent (#279).
|
|
133
|
+
if (aInfo.base !== bInfo.base) {
|
|
134
|
+
const baseComparison = compareKeys(aInfo.base, bInfo.base);
|
|
135
|
+
if (baseComparison !== 0)
|
|
136
|
+
return baseComparison;
|
|
137
|
+
}
|
|
138
|
+
// Same base key: plain key, cardinal plurals, then ordinal plurals
|
|
139
|
+
if (aInfo.rank !== bInfo.rank)
|
|
140
|
+
return aInfo.rank - bInfo.rank;
|
|
141
|
+
return compareKeys(a, b);
|
|
151
142
|
});
|
|
152
143
|
for (const key of keys) {
|
|
153
144
|
sortedObj[key] = sortObject(obj[key], config, customSort);
|
|
@@ -31,6 +31,10 @@ class ExpressionResolver {
|
|
|
31
31
|
// Temporary per-scope bindings for identifiers holding an object-shaped type,
|
|
32
32
|
// e.g. `function f(props: IProps)` -> { props: { size: ['all','next'] } }.
|
|
33
33
|
temporaryObjectVariables = new Map();
|
|
34
|
+
// Identifiers holding an array of an object-shaped type, e.g.
|
|
35
|
+
// `items: IProps[]` -> { items: { size: ['all','next'] } }, so that the
|
|
36
|
+
// callback parameter of `items.map(...)` can be bound to the element type.
|
|
37
|
+
arrayElementMembers = new Map();
|
|
34
38
|
constructor(hooks) {
|
|
35
39
|
this.hooks = hooks;
|
|
36
40
|
}
|
|
@@ -41,6 +45,7 @@ class ExpressionResolver {
|
|
|
41
45
|
this.variableTable.clear();
|
|
42
46
|
this.typeAliasTable.clear();
|
|
43
47
|
this.temporaryVariables.clear();
|
|
48
|
+
this.arrayElementMembers.clear();
|
|
44
49
|
}
|
|
45
50
|
/**
|
|
46
51
|
* Capture a VariableDeclarator node to record simple statically analyzable
|
|
@@ -95,6 +100,14 @@ class ExpressionResolver {
|
|
|
95
100
|
if (node.id.type !== 'Identifier')
|
|
96
101
|
return;
|
|
97
102
|
const name = node.id.value;
|
|
103
|
+
// `const items: IProps[] = …` → remember the element's member map so
|
|
104
|
+
// `items.map(({ size }) => …)` can bind the callback parameter.
|
|
105
|
+
const idTypeAnnotation = this.extractTypeAnnotation(node.id);
|
|
106
|
+
if (idTypeAnnotation) {
|
|
107
|
+
const elementMembers = this.resolveArrayElementMembers(idTypeAnnotation);
|
|
108
|
+
if (elementMembers)
|
|
109
|
+
this.arrayElementMembers.set(name, elementMembers);
|
|
110
|
+
}
|
|
98
111
|
// pattern 1:
|
|
99
112
|
// Handle `declare const x: 'a' | 'b'` and `declare const x: SomeUnion`
|
|
100
113
|
// where there is no initializer but a TypeScript type annotation.
|
|
@@ -299,6 +312,42 @@ class ExpressionResolver {
|
|
|
299
312
|
catch { }
|
|
300
313
|
return undefined;
|
|
301
314
|
}
|
|
315
|
+
/**
|
|
316
|
+
* Resolve a type annotation for an array of an object shape (`IProps[]`,
|
|
317
|
+
* `Array<IProps>`, `ReadonlyArray<IProps>`) to the element's member map, so
|
|
318
|
+
* that `items.map(({ size }) => …)` can bind the callback parameter.
|
|
319
|
+
*/
|
|
320
|
+
resolveArrayElementMembers(tsType) {
|
|
321
|
+
try {
|
|
322
|
+
if (!tsType)
|
|
323
|
+
return undefined;
|
|
324
|
+
if (tsType.type === 'TsArrayType') {
|
|
325
|
+
return this.resolveTypeMembers(tsType.elemType);
|
|
326
|
+
}
|
|
327
|
+
if (tsType.type === 'TsTypeReference' && tsType.typeName?.type === 'Identifier') {
|
|
328
|
+
const name = tsType.typeName.value;
|
|
329
|
+
if (name !== 'Array' && name !== 'ReadonlyArray')
|
|
330
|
+
return undefined;
|
|
331
|
+
const arg = tsType.typeParams?.params?.[0] ?? tsType.typeArguments?.params?.[0];
|
|
332
|
+
return this.resolveTypeMembers(arg);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
catch { }
|
|
336
|
+
return undefined;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Bind an identifier to the member map of its array element type
|
|
340
|
+
* (`items: IProps[]`).
|
|
341
|
+
*/
|
|
342
|
+
setArrayElementMembers(name, members) {
|
|
343
|
+
this.arrayElementMembers.set(name, members);
|
|
344
|
+
}
|
|
345
|
+
getArrayElementMembers(name) {
|
|
346
|
+
return this.arrayElementMembers.get(name);
|
|
347
|
+
}
|
|
348
|
+
deleteArrayElementMembers(name) {
|
|
349
|
+
this.arrayElementMembers.delete(name);
|
|
350
|
+
}
|
|
302
351
|
/**
|
|
303
352
|
* Temporarily bind an identifier to an object-shaped type's members, so that
|
|
304
353
|
* `props.size` inside the function body resolves to the member's values.
|
|
@@ -73,6 +73,14 @@ async function runInstrumenter(config, options, logger = new ConsoleLogger()) {
|
|
|
73
73
|
const { components, languageChangeSites } = scanResult;
|
|
74
74
|
// Run instrumentOnResult plugin pipeline
|
|
75
75
|
candidates = await runInstrumentOnResultPipeline(file, candidates, plugins, logger);
|
|
76
|
+
if (scanResult.moduleScopeSkipped > 0) {
|
|
77
|
+
totalCandidates += scanResult.moduleScopeSkipped;
|
|
78
|
+
totalSkipped += scanResult.moduleScopeSkipped;
|
|
79
|
+
logger.warn(`${file}: skipped ${scanResult.moduleScopeSkipped} module-scope string(s). ` +
|
|
80
|
+
'A t() call there runs once at import time — before i18next may be initialized — and never updates on language change. ' +
|
|
81
|
+
'Move the text into a component/hook (e.g. a useSections() hook calling useTranslation()), or read the key at render time. ' +
|
|
82
|
+
'See: https://www.locize.com/blog/how-to-use-i18next-t-outside-react-components/');
|
|
83
|
+
}
|
|
76
84
|
if (candidates.length === 0 && languageChangeSites.length === 0) {
|
|
77
85
|
continue;
|
|
78
86
|
}
|
|
@@ -211,6 +219,7 @@ async function scanFileForCandidates(content, file, config) {
|
|
|
211
219
|
const candidates = [];
|
|
212
220
|
const components = [];
|
|
213
221
|
const languageChangeSites = [];
|
|
222
|
+
let moduleScopeSkipped = 0;
|
|
214
223
|
const fileExt = extname(file).toLowerCase();
|
|
215
224
|
const isTypeScriptFile = ['.ts', '.tsx', '.mts', '.cts'].includes(fileExt);
|
|
216
225
|
const isTSX = fileExt === '.tsx';
|
|
@@ -259,6 +268,9 @@ async function scanFileForCandidates(content, file, config) {
|
|
|
259
268
|
normalizeSpansToCharIndices(ast, content);
|
|
260
269
|
// Detect React function component boundaries
|
|
261
270
|
detectComponentBoundaries(ast, content, components);
|
|
271
|
+
// Collect function spans so module-scope strings can be excluded below
|
|
272
|
+
const functionSpans = [];
|
|
273
|
+
collectFunctionSpans(ast, functionSpans);
|
|
262
274
|
// Visit AST to find string literals
|
|
263
275
|
visitNodeForStrings(ast, content, file, config, candidates);
|
|
264
276
|
// Detect JSX interpolation patterns (merge adjacent text + expression children)
|
|
@@ -276,6 +288,16 @@ async function scanFileForCandidates(content, file, config) {
|
|
|
276
288
|
}
|
|
277
289
|
}
|
|
278
290
|
}
|
|
291
|
+
// Drop module-scope candidates: wrapping them yields a t() call evaluated
|
|
292
|
+
// once at import time — possibly before i18next is initialized, and never
|
|
293
|
+
// re-evaluated on language change. See issue #278.
|
|
294
|
+
const moduleScoped = candidates.filter(c => !functionSpans.some(span => c.offset >= span.start && c.endOffset <= span.end));
|
|
295
|
+
if (moduleScoped.length > 0) {
|
|
296
|
+
moduleScopeSkipped = moduleScoped.length;
|
|
297
|
+
const keep = candidates.filter(c => !moduleScoped.includes(c));
|
|
298
|
+
candidates.length = 0;
|
|
299
|
+
candidates.push(...keep);
|
|
300
|
+
}
|
|
279
301
|
// Annotate language change sites with their enclosing component (if any)
|
|
280
302
|
for (const site of languageChangeSites) {
|
|
281
303
|
for (const comp of components) {
|
|
@@ -309,7 +331,45 @@ async function scanFileForCandidates(content, file, config) {
|
|
|
309
331
|
catch (err) {
|
|
310
332
|
// Silently skip files that can't be parsed
|
|
311
333
|
}
|
|
312
|
-
return { candidates, components, languageChangeSites };
|
|
334
|
+
return { candidates, components, languageChangeSites, moduleScopeSkipped };
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Node types whose span delimits deferred (call-time) evaluation. A string
|
|
338
|
+
* outside all of them is evaluated when the module is first imported.
|
|
339
|
+
*/
|
|
340
|
+
const FUNCTION_NODE_TYPES = new Set([
|
|
341
|
+
'FunctionDeclaration',
|
|
342
|
+
'FunctionExpression',
|
|
343
|
+
'ArrowFunctionExpression',
|
|
344
|
+
'ClassMethod',
|
|
345
|
+
'PrivateMethod',
|
|
346
|
+
'MethodProperty',
|
|
347
|
+
'GetterProperty',
|
|
348
|
+
'SetterProperty',
|
|
349
|
+
'Constructor'
|
|
350
|
+
]);
|
|
351
|
+
/**
|
|
352
|
+
* Recursively collects the spans of every function-like node in the AST.
|
|
353
|
+
*/
|
|
354
|
+
function collectFunctionSpans(node, spans) {
|
|
355
|
+
if (!node || typeof node !== 'object')
|
|
356
|
+
return;
|
|
357
|
+
if (FUNCTION_NODE_TYPES.has(node.type) && node.span) {
|
|
358
|
+
spans.push({ start: node.span.start, end: node.span.end });
|
|
359
|
+
// No need to recurse: nested functions are inside this span already.
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
for (const key in node) {
|
|
363
|
+
const value = node[key];
|
|
364
|
+
if (value && typeof value === 'object') {
|
|
365
|
+
if (Array.isArray(value)) {
|
|
366
|
+
value.forEach(item => collectFunctionSpans(item, spans));
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
collectFunctionSpans(value, spans);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
313
373
|
}
|
|
314
374
|
/**
|
|
315
375
|
* Returns the 1-based line number for a character offset.
|
|
@@ -338,6 +338,9 @@ function addImportStatements(s, content, needs) {
|
|
|
338
338
|
// Skip past this statement so we don't match `import` lines inside it.
|
|
339
339
|
importStartRegex.lastIndex = endOfImport;
|
|
340
340
|
}
|
|
341
|
+
// Last import may end at EOF without a trailing newline
|
|
342
|
+
if (insertPos > 0 && content[insertPos - 1] !== '\n')
|
|
343
|
+
importStatement = `\n${importStatement}`;
|
|
341
344
|
s.appendRight(insertPos, importStatement);
|
|
342
345
|
}
|
|
343
346
|
/**
|
|
@@ -377,7 +380,12 @@ function findImportStatementEnd(content, start) {
|
|
|
377
380
|
continue;
|
|
378
381
|
}
|
|
379
382
|
if (depth === 0 && sawString && (ch === '\n' || ch === ';')) {
|
|
380
|
-
|
|
383
|
+
if (ch === '\n')
|
|
384
|
+
return i + 1;
|
|
385
|
+
// Terminated by `;` — consume the rest of the line so the next statement
|
|
386
|
+
// is inserted on its own line rather than appended after the semicolon.
|
|
387
|
+
const newlinePos = content.indexOf('\n', i);
|
|
388
|
+
return newlinePos === -1 ? content.length : newlinePos + 1;
|
|
381
389
|
}
|
|
382
390
|
}
|
|
383
391
|
return content.length;
|
package/package.json
CHANGED
|
@@ -95,6 +95,17 @@ export declare class ASTVisitors {
|
|
|
95
95
|
* `Object.values(MAP).map/forEach(v => ...)` → param bound to MAP's values
|
|
96
96
|
*/
|
|
97
97
|
private tryGetArrayIterationCallbackInfo;
|
|
98
|
+
/**
|
|
99
|
+
* If `node` is `items.map(cb)` (or forEach/flatMap/…) where `items` is typed
|
|
100
|
+
* as an array of an object shape (`items: IProps[]`), binds the callback
|
|
101
|
+
* parameter to the element type for the duration of the callback body:
|
|
102
|
+
*
|
|
103
|
+
* items.map(({ size }) => t(`some|${size}`)) → `size` bound to the union
|
|
104
|
+
* items.map(item => t(`some|${item.size}`)) → `item` bound to the members
|
|
105
|
+
*
|
|
106
|
+
* Returns a cleanup function, or undefined when nothing was bound.
|
|
107
|
+
*/
|
|
108
|
+
private tryBindObjectArrayCallback;
|
|
98
109
|
/**
|
|
99
110
|
* Extracts the first callback parameter identifier from an iteration call node
|
|
100
111
|
* and pairs it with the provided values array.
|
|
@@ -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;IAqDzB;;;;;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;IAqDzB;;;;;OAKG;IACI,KAAK,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAUjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,IAAI;IAudZ;;;;;;;;OAQG;IACH,OAAO,CAAC,gCAAgC;IAqDxC;;;;;;;;;OASG;IACH,OAAO,CAAC,0BAA0B;IA+ClC;;;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"}
|
|
@@ -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,gBAAgB,CAAA;
|
|
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;AA2rC9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,oBAA4B,EAC5B,MAA4B,EAC7B,GAAE;IACD,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAyK9B"}
|
|
@@ -11,6 +11,7 @@ export declare class ExpressionResolver {
|
|
|
11
11
|
private temporaryVariables;
|
|
12
12
|
private objectTypeTable;
|
|
13
13
|
private temporaryObjectVariables;
|
|
14
|
+
private arrayElementMembers;
|
|
14
15
|
constructor(hooks: ASTVisitorHooks);
|
|
15
16
|
/**
|
|
16
17
|
* Clear per-file captured variables. Enums / shared maps are kept.
|
|
@@ -55,6 +56,19 @@ export declare class ExpressionResolver {
|
|
|
55
56
|
* type alias, or inline type literal) to its member → string values map.
|
|
56
57
|
*/
|
|
57
58
|
resolveTypeMembers(tsType: any): Record<string, string[]> | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Resolve a type annotation for an array of an object shape (`IProps[]`,
|
|
61
|
+
* `Array<IProps>`, `ReadonlyArray<IProps>`) to the element's member map, so
|
|
62
|
+
* that `items.map(({ size }) => …)` can bind the callback parameter.
|
|
63
|
+
*/
|
|
64
|
+
resolveArrayElementMembers(tsType: any): Record<string, string[]> | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Bind an identifier to the member map of its array element type
|
|
67
|
+
* (`items: IProps[]`).
|
|
68
|
+
*/
|
|
69
|
+
setArrayElementMembers(name: string, members: Record<string, string[]>): void;
|
|
70
|
+
getArrayElementMembers(name: string): Record<string, string[]> | undefined;
|
|
71
|
+
deleteArrayElementMembers(name: string): void;
|
|
58
72
|
/**
|
|
59
73
|
* Temporarily bind an identifier to an object-shaped type's members, so that
|
|
60
74
|
* `props.size` inside the function body resolves to the member's values.
|
|
@@ -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;IAM/D,OAAO,CAAC,yBAAyB,CAAmC;IAIpE,OAAO,CAAC,kBAAkB,CAAmC;IAK7D,OAAO,CAAC,eAAe,CAAmD;IAI1E,OAAO,CAAC,wBAAwB,CAAmD;
|
|
1
|
+
{"version":3,"file":"expression-resolver.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/expression-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,gBAAgB,CAAA;AAU1N;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,GAAE,MAA4B,GACnC,OAAO,CAAC,sBAAsB,CAAC,
|
|
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,CA+NjC;AAqyCD;;GAEG;AACH,wBAAsB,mBAAmB,IAAK,OAAO,CAAC,OAAO,CAAC,CAU7D;AAID,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAA;AA6B/E;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,IAAK,OAAO,CAAC,kBAAkB,CAAC,CA8B7E;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAK,OAAO,CAAC,OAAO,CAAC,CAOlE;AAwBD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,IAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxE;AAmYD;;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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/core/transformer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAGnI,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;IAC7C,6EAA6E;IAC7E,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC3C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,eAAe,EAAE,EAC7B,OAAO,EAAE,kBAAkB,GAC1B,eAAe,CAyLjB;
|
|
1
|
+
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/core/transformer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAGnI,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;IAC7C,6EAA6E;IAC7E,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC3C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,eAAe,EAAE,EAC7B,OAAO,EAAE,kBAAkB,GAC1B,eAAe,CAyLjB;AAyPD;;GAEG;AACH,wBAAgB,YAAY,CAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwB1F"}
|
package/types/types.d.ts
CHANGED
|
@@ -1075,6 +1075,8 @@ export interface FileScanResult {
|
|
|
1075
1075
|
components: ComponentBoundary[];
|
|
1076
1076
|
/** Detected language-change call sites */
|
|
1077
1077
|
languageChangeSites: LanguageChangeSite[];
|
|
1078
|
+
/** Number of candidates dropped because they live at module scope */
|
|
1079
|
+
moduleScopeSkipped: number;
|
|
1078
1080
|
}
|
|
1079
1081
|
/**
|
|
1080
1082
|
* Custom scorer function for the instrument command.
|
package/types/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|