i18next-cli 1.56.2 → 1.56.4
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/parsers/jsx-handler.js +62 -0
- package/dist/cjs/extractor/parsers/scope-manager.js +29 -8
- package/dist/esm/cli.js +1 -1
- package/dist/esm/extractor/parsers/jsx-handler.js +62 -0
- package/dist/esm/extractor/parsers/scope-manager.js +29 -8
- package/package.json +1 -1
- package/types/extractor/parsers/jsx-handler.d.ts +21 -0
- package/types/extractor/parsers/jsx-handler.d.ts.map +1 -1
- package/types/extractor/parsers/scope-manager.d.ts +8 -0
- package/types/extractor/parsers/scope-manager.d.ts.map +1 -1
package/dist/cjs/cli.js
CHANGED
|
@@ -32,7 +32,7 @@ const program = new commander.Command();
|
|
|
32
32
|
program
|
|
33
33
|
.name('i18next-cli')
|
|
34
34
|
.description('A unified, high-performance i18next CLI.')
|
|
35
|
-
.version('1.56.
|
|
35
|
+
.version('1.56.4'); // This string is replaced with the actual version at build time by rollup
|
|
36
36
|
// new: global config override option
|
|
37
37
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
38
38
|
program
|
|
@@ -30,6 +30,67 @@ class JSXHandler {
|
|
|
30
30
|
return undefined;
|
|
31
31
|
return astUtils.lineColumnFromOffset(this.getCurrentCode(), node.span.start);
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Emits an error for `<Trans>Hello <b>{name}</b></Trans>` style children
|
|
35
|
+
* where a bare identifier is used as a React child. react-i18next inlines
|
|
36
|
+
* the value at runtime, producing a key like `"Hello <1>meow</1>"`, but the
|
|
37
|
+
* extractor serializes the identifier name as `"{{name}}"`. The two never
|
|
38
|
+
* match, and even when an `i18nKey` is set, the placeholder `{{name}}`
|
|
39
|
+
* cannot be interpolated without a `values={{ name }}` prop — it renders
|
|
40
|
+
* literally.
|
|
41
|
+
*
|
|
42
|
+
* We keep the existing extraction behaviour so projects that already rely
|
|
43
|
+
* on the `{{name}}` output (with a matching `values` prop) aren't broken,
|
|
44
|
+
* and instead surface a diagnostic pointing users at the runtime mismatch.
|
|
45
|
+
* Emitted via `logger.error` with an `Error:` prefix so build tooling that
|
|
46
|
+
* watches for errors (see #200) can treat this as fatal if desired.
|
|
47
|
+
*/
|
|
48
|
+
warnOnBareIdentifierTransChildren(node, elementName) {
|
|
49
|
+
const bareIdentifiers = [];
|
|
50
|
+
const visit = (children) => {
|
|
51
|
+
for (const child of children) {
|
|
52
|
+
if (child.type === 'JSXExpressionContainer') {
|
|
53
|
+
const inner = this.unwrapExpression(child.expression);
|
|
54
|
+
if (inner && inner.type === 'Identifier') {
|
|
55
|
+
bareIdentifiers.push({ name: inner.value, span: child.span });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else if (child.type === 'JSXElement') {
|
|
59
|
+
visit(child.children);
|
|
60
|
+
}
|
|
61
|
+
else if (child.type === 'JSXFragment') {
|
|
62
|
+
visit(child.children);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
visit(node.children);
|
|
67
|
+
if (bareIdentifiers.length === 0)
|
|
68
|
+
return;
|
|
69
|
+
const emit = this.pluginContext?.logger?.error?.bind(this.pluginContext.logger) ??
|
|
70
|
+
console.error.bind(console);
|
|
71
|
+
for (const { name, span } of bareIdentifiers) {
|
|
72
|
+
const loc = astUtils.lineColumnFromOffset(this.getCurrentCode(), span.start);
|
|
73
|
+
const where = loc
|
|
74
|
+
? `${this.getCurrentFile()}:${loc.line}:${loc.column}`
|
|
75
|
+
: this.getCurrentFile();
|
|
76
|
+
emit(`Error: <${elementName}> child {${name}} at ${where} won't match at runtime — react-i18next inlines the value (e.g. "<1>meow</1>"), but extraction produces "<1>{{${name}}}</1>". Use {{${name}}} (double braces) with values={{ ${name} }} for interpolation, or inline the value if it isn't meant to be translated.`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Unwraps TS type-assertion and parenthesis wrappers so we can inspect the
|
|
81
|
+
* underlying expression type (mirrors behaviour in jsx-parser).
|
|
82
|
+
*/
|
|
83
|
+
unwrapExpression(expr) {
|
|
84
|
+
if (!expr)
|
|
85
|
+
return expr;
|
|
86
|
+
if (expr.type === 'TsAsExpression' || expr.type === 'TsSatisfiesExpression') {
|
|
87
|
+
return this.unwrapExpression(expr.expression);
|
|
88
|
+
}
|
|
89
|
+
if (expr.type === 'ParenthesisExpression') {
|
|
90
|
+
return this.unwrapExpression(expr.expression);
|
|
91
|
+
}
|
|
92
|
+
return expr;
|
|
93
|
+
}
|
|
33
94
|
/**
|
|
34
95
|
* Processes JSX elements to extract translation keys from Trans components.
|
|
35
96
|
*
|
|
@@ -42,6 +103,7 @@ class JSXHandler {
|
|
|
42
103
|
handleJSXElement(node, getScopeInfo) {
|
|
43
104
|
const elementName = this.getElementName(node);
|
|
44
105
|
if (elementName && (this.config.extract.transComponents || ['Trans']).includes(elementName)) {
|
|
106
|
+
this.warnOnBareIdentifierTransChildren(node, elementName);
|
|
45
107
|
let extractedAttributes = null;
|
|
46
108
|
try {
|
|
47
109
|
extractedAttributes = jsxParser.extractFromTransComponent(node, this.config);
|
|
@@ -486,14 +486,37 @@ class ScopeManager {
|
|
|
486
486
|
const args = callExpr.arguments;
|
|
487
487
|
// getFixedT(lng, ns, keyPrefix)
|
|
488
488
|
// We ignore the first argument (lng) for key extraction.
|
|
489
|
-
const
|
|
490
|
-
const
|
|
491
|
-
const defaultNs = (nsArg?.type === 'StringLiteral') ? nsArg.value : undefined;
|
|
492
|
-
const keyPrefix = (keyPrefixArg?.type === 'StringLiteral') ? keyPrefixArg.value : undefined;
|
|
489
|
+
const defaultNs = this.resolveStringArg(args[1]?.expression);
|
|
490
|
+
const keyPrefix = this.resolveStringArg(args[2]?.expression);
|
|
493
491
|
if (defaultNs || keyPrefix) {
|
|
494
492
|
this.setVarInScope(variableName, { defaultNs, keyPrefix });
|
|
495
493
|
}
|
|
496
494
|
}
|
|
495
|
+
/**
|
|
496
|
+
* Resolves a call argument expression to a string value by handling string
|
|
497
|
+
* literals, previously-declared local/shared constants (Identifier), member
|
|
498
|
+
* expressions referencing constant objects, and simple template literals
|
|
499
|
+
* without interpolation. Returns undefined when the expression cannot be
|
|
500
|
+
* resolved statically.
|
|
501
|
+
*/
|
|
502
|
+
resolveStringArg(node) {
|
|
503
|
+
if (!node)
|
|
504
|
+
return undefined;
|
|
505
|
+
const unwrapped = ScopeManager.unwrapTsExpression(node);
|
|
506
|
+
if (unwrapped.type === 'StringLiteral')
|
|
507
|
+
return unwrapped.value;
|
|
508
|
+
if (unwrapped.type === 'Identifier')
|
|
509
|
+
return this.resolveSimpleStringIdentifier(unwrapped.value);
|
|
510
|
+
if (unwrapped.type === 'MemberExpression')
|
|
511
|
+
return this.resolveSimpleMemberExpression(unwrapped);
|
|
512
|
+
if (unwrapped.type === 'TemplateLiteral') {
|
|
513
|
+
const tpl = unwrapped;
|
|
514
|
+
if ((tpl.expressions || []).length === 0) {
|
|
515
|
+
return tpl.quasis?.[0]?.cooked ?? undefined;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
return undefined;
|
|
519
|
+
}
|
|
497
520
|
/**
|
|
498
521
|
* Handles cases where a getFixedT-like function is a variable (from a custom hook)
|
|
499
522
|
* and is invoked to produce a bound `t` function, e.g.:
|
|
@@ -513,10 +536,8 @@ class ScopeManager {
|
|
|
513
536
|
return;
|
|
514
537
|
const args = callExpr.arguments;
|
|
515
538
|
// getFixedT(lng, ns, keyPrefix)
|
|
516
|
-
const
|
|
517
|
-
const
|
|
518
|
-
const nsFromCall = (nsArg?.type === 'StringLiteral') ? nsArg.value : undefined;
|
|
519
|
-
const keyPrefixFromCall = (keyPrefixArg?.type === 'StringLiteral') ? keyPrefixArg.value : undefined;
|
|
539
|
+
const nsFromCall = this.resolveStringArg(args[1]?.expression);
|
|
540
|
+
const keyPrefixFromCall = this.resolveStringArg(args[2]?.expression);
|
|
520
541
|
// Merge: call args take precedence over source scope values
|
|
521
542
|
const finalNs = nsFromCall ?? sourceScope.defaultNs;
|
|
522
543
|
const finalKeyPrefix = keyPrefixFromCall ?? sourceScope.keyPrefix;
|
package/dist/esm/cli.js
CHANGED
|
@@ -30,7 +30,7 @@ const program = new Command();
|
|
|
30
30
|
program
|
|
31
31
|
.name('i18next-cli')
|
|
32
32
|
.description('A unified, high-performance i18next CLI.')
|
|
33
|
-
.version('1.56.
|
|
33
|
+
.version('1.56.4'); // This string is replaced with the actual version at build time by rollup
|
|
34
34
|
// new: global config override option
|
|
35
35
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
36
36
|
program
|
|
@@ -28,6 +28,67 @@ class JSXHandler {
|
|
|
28
28
|
return undefined;
|
|
29
29
|
return lineColumnFromOffset(this.getCurrentCode(), node.span.start);
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Emits an error for `<Trans>Hello <b>{name}</b></Trans>` style children
|
|
33
|
+
* where a bare identifier is used as a React child. react-i18next inlines
|
|
34
|
+
* the value at runtime, producing a key like `"Hello <1>meow</1>"`, but the
|
|
35
|
+
* extractor serializes the identifier name as `"{{name}}"`. The two never
|
|
36
|
+
* match, and even when an `i18nKey` is set, the placeholder `{{name}}`
|
|
37
|
+
* cannot be interpolated without a `values={{ name }}` prop — it renders
|
|
38
|
+
* literally.
|
|
39
|
+
*
|
|
40
|
+
* We keep the existing extraction behaviour so projects that already rely
|
|
41
|
+
* on the `{{name}}` output (with a matching `values` prop) aren't broken,
|
|
42
|
+
* and instead surface a diagnostic pointing users at the runtime mismatch.
|
|
43
|
+
* Emitted via `logger.error` with an `Error:` prefix so build tooling that
|
|
44
|
+
* watches for errors (see #200) can treat this as fatal if desired.
|
|
45
|
+
*/
|
|
46
|
+
warnOnBareIdentifierTransChildren(node, elementName) {
|
|
47
|
+
const bareIdentifiers = [];
|
|
48
|
+
const visit = (children) => {
|
|
49
|
+
for (const child of children) {
|
|
50
|
+
if (child.type === 'JSXExpressionContainer') {
|
|
51
|
+
const inner = this.unwrapExpression(child.expression);
|
|
52
|
+
if (inner && inner.type === 'Identifier') {
|
|
53
|
+
bareIdentifiers.push({ name: inner.value, span: child.span });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else if (child.type === 'JSXElement') {
|
|
57
|
+
visit(child.children);
|
|
58
|
+
}
|
|
59
|
+
else if (child.type === 'JSXFragment') {
|
|
60
|
+
visit(child.children);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
visit(node.children);
|
|
65
|
+
if (bareIdentifiers.length === 0)
|
|
66
|
+
return;
|
|
67
|
+
const emit = this.pluginContext?.logger?.error?.bind(this.pluginContext.logger) ??
|
|
68
|
+
console.error.bind(console);
|
|
69
|
+
for (const { name, span } of bareIdentifiers) {
|
|
70
|
+
const loc = lineColumnFromOffset(this.getCurrentCode(), span.start);
|
|
71
|
+
const where = loc
|
|
72
|
+
? `${this.getCurrentFile()}:${loc.line}:${loc.column}`
|
|
73
|
+
: this.getCurrentFile();
|
|
74
|
+
emit(`Error: <${elementName}> child {${name}} at ${where} won't match at runtime — react-i18next inlines the value (e.g. "<1>meow</1>"), but extraction produces "<1>{{${name}}}</1>". Use {{${name}}} (double braces) with values={{ ${name} }} for interpolation, or inline the value if it isn't meant to be translated.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Unwraps TS type-assertion and parenthesis wrappers so we can inspect the
|
|
79
|
+
* underlying expression type (mirrors behaviour in jsx-parser).
|
|
80
|
+
*/
|
|
81
|
+
unwrapExpression(expr) {
|
|
82
|
+
if (!expr)
|
|
83
|
+
return expr;
|
|
84
|
+
if (expr.type === 'TsAsExpression' || expr.type === 'TsSatisfiesExpression') {
|
|
85
|
+
return this.unwrapExpression(expr.expression);
|
|
86
|
+
}
|
|
87
|
+
if (expr.type === 'ParenthesisExpression') {
|
|
88
|
+
return this.unwrapExpression(expr.expression);
|
|
89
|
+
}
|
|
90
|
+
return expr;
|
|
91
|
+
}
|
|
31
92
|
/**
|
|
32
93
|
* Processes JSX elements to extract translation keys from Trans components.
|
|
33
94
|
*
|
|
@@ -40,6 +101,7 @@ class JSXHandler {
|
|
|
40
101
|
handleJSXElement(node, getScopeInfo) {
|
|
41
102
|
const elementName = this.getElementName(node);
|
|
42
103
|
if (elementName && (this.config.extract.transComponents || ['Trans']).includes(elementName)) {
|
|
104
|
+
this.warnOnBareIdentifierTransChildren(node, elementName);
|
|
43
105
|
let extractedAttributes = null;
|
|
44
106
|
try {
|
|
45
107
|
extractedAttributes = extractFromTransComponent(node, this.config);
|
|
@@ -484,14 +484,37 @@ class ScopeManager {
|
|
|
484
484
|
const args = callExpr.arguments;
|
|
485
485
|
// getFixedT(lng, ns, keyPrefix)
|
|
486
486
|
// We ignore the first argument (lng) for key extraction.
|
|
487
|
-
const
|
|
488
|
-
const
|
|
489
|
-
const defaultNs = (nsArg?.type === 'StringLiteral') ? nsArg.value : undefined;
|
|
490
|
-
const keyPrefix = (keyPrefixArg?.type === 'StringLiteral') ? keyPrefixArg.value : undefined;
|
|
487
|
+
const defaultNs = this.resolveStringArg(args[1]?.expression);
|
|
488
|
+
const keyPrefix = this.resolveStringArg(args[2]?.expression);
|
|
491
489
|
if (defaultNs || keyPrefix) {
|
|
492
490
|
this.setVarInScope(variableName, { defaultNs, keyPrefix });
|
|
493
491
|
}
|
|
494
492
|
}
|
|
493
|
+
/**
|
|
494
|
+
* Resolves a call argument expression to a string value by handling string
|
|
495
|
+
* literals, previously-declared local/shared constants (Identifier), member
|
|
496
|
+
* expressions referencing constant objects, and simple template literals
|
|
497
|
+
* without interpolation. Returns undefined when the expression cannot be
|
|
498
|
+
* resolved statically.
|
|
499
|
+
*/
|
|
500
|
+
resolveStringArg(node) {
|
|
501
|
+
if (!node)
|
|
502
|
+
return undefined;
|
|
503
|
+
const unwrapped = ScopeManager.unwrapTsExpression(node);
|
|
504
|
+
if (unwrapped.type === 'StringLiteral')
|
|
505
|
+
return unwrapped.value;
|
|
506
|
+
if (unwrapped.type === 'Identifier')
|
|
507
|
+
return this.resolveSimpleStringIdentifier(unwrapped.value);
|
|
508
|
+
if (unwrapped.type === 'MemberExpression')
|
|
509
|
+
return this.resolveSimpleMemberExpression(unwrapped);
|
|
510
|
+
if (unwrapped.type === 'TemplateLiteral') {
|
|
511
|
+
const tpl = unwrapped;
|
|
512
|
+
if ((tpl.expressions || []).length === 0) {
|
|
513
|
+
return tpl.quasis?.[0]?.cooked ?? undefined;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
return undefined;
|
|
517
|
+
}
|
|
495
518
|
/**
|
|
496
519
|
* Handles cases where a getFixedT-like function is a variable (from a custom hook)
|
|
497
520
|
* and is invoked to produce a bound `t` function, e.g.:
|
|
@@ -511,10 +534,8 @@ class ScopeManager {
|
|
|
511
534
|
return;
|
|
512
535
|
const args = callExpr.arguments;
|
|
513
536
|
// getFixedT(lng, ns, keyPrefix)
|
|
514
|
-
const
|
|
515
|
-
const
|
|
516
|
-
const nsFromCall = (nsArg?.type === 'StringLiteral') ? nsArg.value : undefined;
|
|
517
|
-
const keyPrefixFromCall = (keyPrefixArg?.type === 'StringLiteral') ? keyPrefixArg.value : undefined;
|
|
537
|
+
const nsFromCall = this.resolveStringArg(args[1]?.expression);
|
|
538
|
+
const keyPrefixFromCall = this.resolveStringArg(args[2]?.expression);
|
|
518
539
|
// Merge: call args take precedence over source scope values
|
|
519
540
|
const finalNs = nsFromCall ?? sourceScope.defaultNs;
|
|
520
541
|
const finalKeyPrefix = keyPrefixFromCall ?? sourceScope.keyPrefix;
|
package/package.json
CHANGED
|
@@ -14,6 +14,27 @@ export declare class JSXHandler {
|
|
|
14
14
|
* so we can use them directly.
|
|
15
15
|
*/
|
|
16
16
|
private getLocationFromNode;
|
|
17
|
+
/**
|
|
18
|
+
* Emits an error for `<Trans>Hello <b>{name}</b></Trans>` style children
|
|
19
|
+
* where a bare identifier is used as a React child. react-i18next inlines
|
|
20
|
+
* the value at runtime, producing a key like `"Hello <1>meow</1>"`, but the
|
|
21
|
+
* extractor serializes the identifier name as `"{{name}}"`. The two never
|
|
22
|
+
* match, and even when an `i18nKey` is set, the placeholder `{{name}}`
|
|
23
|
+
* cannot be interpolated without a `values={{ name }}` prop — it renders
|
|
24
|
+
* literally.
|
|
25
|
+
*
|
|
26
|
+
* We keep the existing extraction behaviour so projects that already rely
|
|
27
|
+
* on the `{{name}}` output (with a matching `values` prop) aren't broken,
|
|
28
|
+
* and instead surface a diagnostic pointing users at the runtime mismatch.
|
|
29
|
+
* Emitted via `logger.error` with an `Error:` prefix so build tooling that
|
|
30
|
+
* watches for errors (see #200) can treat this as fatal if desired.
|
|
31
|
+
*/
|
|
32
|
+
private warnOnBareIdentifierTransChildren;
|
|
33
|
+
/**
|
|
34
|
+
* Unwraps TS type-assertion and parenthesis wrappers so we can inspect the
|
|
35
|
+
* underlying expression type (mirrors behaviour in jsx-parser).
|
|
36
|
+
*/
|
|
37
|
+
private unwrapExpression;
|
|
17
38
|
/**
|
|
18
39
|
* Processes JSX elements to extract translation keys from Trans components.
|
|
19
40
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/jsx-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"jsx-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/jsx-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAqC,MAAM,WAAW,CAAA;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAgB,MAAM,gBAAgB,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAS7D,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;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,iCAAiC;IAgCzC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;;;;;;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;IA2UjI;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,0BAA0B;IAkIlC;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;CAevB"}
|
|
@@ -112,6 +112,14 @@ export declare class ScopeManager {
|
|
|
112
112
|
* @param callExpr - The CallExpression node representing the getFixedT invocation
|
|
113
113
|
*/
|
|
114
114
|
private handleGetFixedTDeclarator;
|
|
115
|
+
/**
|
|
116
|
+
* Resolves a call argument expression to a string value by handling string
|
|
117
|
+
* literals, previously-declared local/shared constants (Identifier), member
|
|
118
|
+
* expressions referencing constant objects, and simple template literals
|
|
119
|
+
* without interpolation. Returns undefined when the expression cannot be
|
|
120
|
+
* resolved statically.
|
|
121
|
+
*/
|
|
122
|
+
private resolveStringArg;
|
|
115
123
|
/**
|
|
116
124
|
* Handles cases where a getFixedT-like function is a variable (from a custom hook)
|
|
117
125
|
* and is invoked to produce a bound `t` function, e.g.:
|
|
@@ -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,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;
|
|
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;IAiBjC;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAexB;;;;;;;;;OASG;IACH,OAAO,CAAC,qCAAqC;CAoB9C"}
|