@kernlang/core 3.4.6 → 3.4.7-canary.100.1.95f0eb11
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/codegen/body-ts.js +146 -3
- package/dist/codegen/body-ts.js.map +1 -1
- package/dist/codegen/functions.js +9 -1
- package/dist/codegen/functions.js.map +1 -1
- package/dist/codegen/react-hook-imports.d.ts +72 -0
- package/dist/codegen/react-hook-imports.js +162 -0
- package/dist/codegen/react-hook-imports.js.map +1 -0
- package/dist/codegen-expression.js +10 -3
- package/dist/codegen-expression.js.map +1 -1
- package/dist/importer.js +25 -0
- package/dist/importer.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/native-eligibility-ast.d.ts +30 -3
- package/dist/native-eligibility-ast.js +338 -35
- package/dist/native-eligibility-ast.js.map +1 -1
- package/dist/native-eligibility.d.ts +7 -0
- package/dist/native-eligibility.js +81 -7
- package/dist/native-eligibility.js.map +1 -1
- package/dist/parser-core.js +194 -12
- package/dist/parser-core.js.map +1 -1
- package/dist/parser-diagnostics.js +2 -0
- package/dist/parser-diagnostics.js.map +1 -1
- package/dist/parser-expression.d.ts +2 -2
- package/dist/parser-expression.js +276 -11
- package/dist/parser-expression.js.map +1 -1
- package/dist/parser-keywords.js +381 -0
- package/dist/parser-keywords.js.map +1 -1
- package/dist/parser-validate-body-statements.js +16 -0
- package/dist/parser-validate-body-statements.js.map +1 -1
- package/dist/parser-validate-native-eligible.js +14 -5
- package/dist/parser-validate-native-eligible.js.map +1 -1
- package/dist/schema.js +120 -12
- package/dist/schema.js.map +1 -1
- package/dist/semantic-validator.js +16 -10
- package/dist/semantic-validator.js.map +1 -1
- package/dist/spec.d.ts +2 -2
- package/dist/spec.js +3 -1
- package/dist/spec.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/value-ir.d.ts +7 -0
- package/dist/value-ir.js +1 -0
- package/dist/value-ir.js.map +1 -1
- package/package.json +1 -1
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* `try-finally`, `expr-stmt-mutation`) so users running
|
|
20
20
|
* `kern migrate native-handlers` and `kern review` see actionable hints
|
|
21
21
|
* instead of a generic "ineligible". */
|
|
22
|
+
import ts from 'typescript';
|
|
22
23
|
export interface AstEligibilityResult {
|
|
23
24
|
eligible: boolean;
|
|
24
25
|
/** When eligible: 'empty' | 'ok'.
|
|
@@ -28,9 +29,12 @@ export interface AstEligibilityResult {
|
|
|
28
29
|
* 'return-bad-expr', 'unsupported-stmt-<Kind>'. */
|
|
29
30
|
reason: string;
|
|
30
31
|
}
|
|
31
|
-
/** True when `exprText` parses cleanly under KERN's parser-expression.
|
|
32
|
-
*
|
|
33
|
-
*
|
|
32
|
+
/** True when `exprText` parses cleanly under KERN's parser-expression.
|
|
33
|
+
*
|
|
34
|
+
* Multi-line input is accepted: the parser itself is whitespace-insensitive,
|
|
35
|
+
* and the migrator round-trips through `canonicalKernExpression` before
|
|
36
|
+
* emitting into a quoted attribute value, so the original line shape never
|
|
37
|
+
* reaches the .kern serializer.
|
|
34
38
|
*
|
|
35
39
|
* Exported so the migrator (`migrate-native-handlers.ts`) shares the
|
|
36
40
|
* same predicate the classifier uses — slice α-3 gemini review pulled
|
|
@@ -40,6 +44,28 @@ export interface AstEligibilityResult {
|
|
|
40
44
|
export declare function isValidKernExpression(exprText: string): boolean;
|
|
41
45
|
export declare function isValidKernAssignmentTarget(exprText: string): boolean;
|
|
42
46
|
export declare function isValidKernAssignmentValue(exprText: string): boolean;
|
|
47
|
+
/** Return a single-line form of `exprText` suitable for a quoted KERN
|
|
48
|
+
* attribute value. The migrator uses this so multi-line const initializers
|
|
49
|
+
* (`const x = {\n a: 1,\n};`) can lift to `let name=x value="{ a: 1 }"`
|
|
50
|
+
* without leaking the source line shape into the .kern serialization.
|
|
51
|
+
*
|
|
52
|
+
* Returns `null` if:
|
|
53
|
+
* - KERN's `parseExpression` rejects it (caller would bail anyway), or
|
|
54
|
+
* - the TS parser rejects the wrapped form, or
|
|
55
|
+
* - the expression contains a multi-line template literal whose newlines
|
|
56
|
+
* are semantically significant and cannot be collapsed.
|
|
57
|
+
*
|
|
58
|
+
* Why not `emitExpression`: that serializer translates KERN stdlib calls
|
|
59
|
+
* to their TS-native form (`List.map(arr, fn)` → `arr.map(fn)`), which is
|
|
60
|
+
* correct for codegen but wrong here — the migrator must keep the surface
|
|
61
|
+
* call shape (`List.map(...)`) so the next round-trip parses to the same
|
|
62
|
+
* KERN IR. TS printer + newline-collapse preserves the surface form while
|
|
63
|
+
* normalizing whitespace outside string/template literals.
|
|
64
|
+
*
|
|
65
|
+
* The migrator's `--verify` pre/post codegen diff catches any drift the
|
|
66
|
+
* normalization introduces. */
|
|
67
|
+
export declare function canonicalKernExpression(exprText: string): string | null;
|
|
68
|
+
export declare function canonicalObjectEntriesSource(expr: ts.Expression, sf: ts.SourceFile): string | null;
|
|
43
69
|
export declare function isValidKernTypeAnnotation(typeText: string): boolean;
|
|
44
70
|
/** True when `bodyText` contains any line or block comment. The migrator
|
|
45
71
|
* drops comments silently on rewrite, so a body containing them is
|
|
@@ -48,6 +74,7 @@ export declare function isValidKernTypeAnnotation(typeText: string): boolean;
|
|
|
48
74
|
* scanner predicate and comment-detection cannot diverge between the
|
|
49
75
|
* two sides. */
|
|
50
76
|
export declare function hasComments(bodyText: string): boolean;
|
|
77
|
+
export declare function hasOnlyMigratableComments(bodyText: string): boolean;
|
|
51
78
|
/** Classify a raw `<<<…>>>` handler body — the AST-aware replacement for
|
|
52
79
|
* the slice 5a regex pass. Returns `eligible: true` only if every top-level
|
|
53
80
|
* statement (and every nested if/try branch) maps to a body-statement form
|
|
@@ -23,9 +23,12 @@ import ts from 'typescript';
|
|
|
23
23
|
import { supportedCompoundAssignmentOperator } from './assignment-operators.js';
|
|
24
24
|
import { emitTypeAnnotation } from './codegen/emitters.js';
|
|
25
25
|
import { parseExpression } from './parser-expression.js';
|
|
26
|
-
/** True when `exprText` parses cleanly under KERN's parser-expression.
|
|
27
|
-
*
|
|
28
|
-
*
|
|
26
|
+
/** True when `exprText` parses cleanly under KERN's parser-expression.
|
|
27
|
+
*
|
|
28
|
+
* Multi-line input is accepted: the parser itself is whitespace-insensitive,
|
|
29
|
+
* and the migrator round-trips through `canonicalKernExpression` before
|
|
30
|
+
* emitting into a quoted attribute value, so the original line shape never
|
|
31
|
+
* reaches the .kern serializer.
|
|
29
32
|
*
|
|
30
33
|
* Exported so the migrator (`migrate-native-handlers.ts`) shares the
|
|
31
34
|
* same predicate the classifier uses — slice α-3 gemini review pulled
|
|
@@ -33,18 +36,17 @@ import { parseExpression } from './parser-expression.js';
|
|
|
33
36
|
* bail conditions from drifting away from the classifier's pass
|
|
34
37
|
* conditions. */
|
|
35
38
|
export function isValidKernExpression(exprText) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
39
|
+
// Defer to `canonicalKernExpression` so the eligibility classifier and the
|
|
40
|
+
// migrator share the same pass/bail conditions exactly — including the
|
|
41
|
+
// multi-line-template bailout. Without this delegation, a body like
|
|
42
|
+
// `notify(\`hello\n${name}\`);` would parse cleanly here (KERN's
|
|
43
|
+
// parser-expression accepts the template) but later fail in
|
|
44
|
+
// `canonicalKernExpression`, breaking the documented "eligible ≡ migrates"
|
|
45
|
+
// invariant from slice α-3.
|
|
46
|
+
return canonicalKernExpression(exprText) !== null;
|
|
45
47
|
}
|
|
46
48
|
export function isValidKernAssignmentTarget(exprText) {
|
|
47
|
-
if (
|
|
49
|
+
if (canonicalKernExpression(exprText) === null)
|
|
48
50
|
return false;
|
|
49
51
|
try {
|
|
50
52
|
return isAssignableTarget(parseExpression(exprText));
|
|
@@ -54,7 +56,7 @@ export function isValidKernAssignmentTarget(exprText) {
|
|
|
54
56
|
}
|
|
55
57
|
}
|
|
56
58
|
export function isValidKernAssignmentValue(exprText) {
|
|
57
|
-
if (
|
|
59
|
+
if (canonicalKernExpression(exprText) === null)
|
|
58
60
|
return false;
|
|
59
61
|
try {
|
|
60
62
|
const expr = parseExpression(exprText);
|
|
@@ -64,6 +66,92 @@ export function isValidKernAssignmentValue(exprText) {
|
|
|
64
66
|
return false;
|
|
65
67
|
}
|
|
66
68
|
}
|
|
69
|
+
/** Return a single-line form of `exprText` suitable for a quoted KERN
|
|
70
|
+
* attribute value. The migrator uses this so multi-line const initializers
|
|
71
|
+
* (`const x = {\n a: 1,\n};`) can lift to `let name=x value="{ a: 1 }"`
|
|
72
|
+
* without leaking the source line shape into the .kern serialization.
|
|
73
|
+
*
|
|
74
|
+
* Returns `null` if:
|
|
75
|
+
* - KERN's `parseExpression` rejects it (caller would bail anyway), or
|
|
76
|
+
* - the TS parser rejects the wrapped form, or
|
|
77
|
+
* - the expression contains a multi-line template literal whose newlines
|
|
78
|
+
* are semantically significant and cannot be collapsed.
|
|
79
|
+
*
|
|
80
|
+
* Why not `emitExpression`: that serializer translates KERN stdlib calls
|
|
81
|
+
* to their TS-native form (`List.map(arr, fn)` → `arr.map(fn)`), which is
|
|
82
|
+
* correct for codegen but wrong here — the migrator must keep the surface
|
|
83
|
+
* call shape (`List.map(...)`) so the next round-trip parses to the same
|
|
84
|
+
* KERN IR. TS printer + newline-collapse preserves the surface form while
|
|
85
|
+
* normalizing whitespace outside string/template literals.
|
|
86
|
+
*
|
|
87
|
+
* The migrator's `--verify` pre/post codegen diff catches any drift the
|
|
88
|
+
* normalization introduces. */
|
|
89
|
+
export function canonicalKernExpression(exprText) {
|
|
90
|
+
try {
|
|
91
|
+
parseExpression(exprText);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
// Wrap in parens so a bare object literal (`{a:1}`) parses as an expression
|
|
97
|
+
// rather than a block statement.
|
|
98
|
+
const sf = ts.createSourceFile('__expr.ts', `(${exprText});`, ts.ScriptTarget.Latest, true);
|
|
99
|
+
const diags = sf.parseDiagnostics;
|
|
100
|
+
if (diags && diags.length > 0)
|
|
101
|
+
return null;
|
|
102
|
+
const stmt = sf.statements[0];
|
|
103
|
+
if (!stmt || !ts.isExpressionStatement(stmt))
|
|
104
|
+
return null;
|
|
105
|
+
let expr = stmt.expression;
|
|
106
|
+
if (ts.isParenthesizedExpression(expr))
|
|
107
|
+
expr = expr.expression;
|
|
108
|
+
if (hasMultilineTemplate(expr, sf))
|
|
109
|
+
return null;
|
|
110
|
+
const printed = canonicalPrinter.printNode(ts.EmitHint.Expression, expr, sf);
|
|
111
|
+
return printed.replace(/\r?\n\s*/g, ' ');
|
|
112
|
+
}
|
|
113
|
+
export function canonicalObjectEntriesSource(expr, sf) {
|
|
114
|
+
const unwrapped = unwrapExpressionForShape(expr);
|
|
115
|
+
if (!ts.isCallExpression(unwrapped) || unwrapped.arguments.length !== 1)
|
|
116
|
+
return null;
|
|
117
|
+
const callee = unwrapped.expression;
|
|
118
|
+
if (!ts.isPropertyAccessExpression(callee))
|
|
119
|
+
return null;
|
|
120
|
+
if (callee.name.text !== 'entries')
|
|
121
|
+
return null;
|
|
122
|
+
if (!ts.isIdentifier(callee.expression) || callee.expression.text !== 'Object')
|
|
123
|
+
return null;
|
|
124
|
+
return canonicalKernExpression(unwrapped.arguments[0].getText(sf));
|
|
125
|
+
}
|
|
126
|
+
function unwrapExpressionForShape(expr) {
|
|
127
|
+
let current = expr;
|
|
128
|
+
while (true) {
|
|
129
|
+
if (ts.isParenthesizedExpression(current)) {
|
|
130
|
+
current = current.expression;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (ts.isAsExpression(current) || ts.isTypeAssertionExpression(current) || ts.isSatisfiesExpression(current)) {
|
|
134
|
+
current = current.expression;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
return current;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const canonicalPrinter = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed, removeComments: true });
|
|
141
|
+
function hasMultilineTemplate(node, sf) {
|
|
142
|
+
let found = false;
|
|
143
|
+
const visit = (n) => {
|
|
144
|
+
if (found)
|
|
145
|
+
return;
|
|
146
|
+
if (ts.isNoSubstitutionTemplateLiteral(n) || ts.isTemplateExpression(n)) {
|
|
147
|
+
if (n.getText(sf).includes('\n'))
|
|
148
|
+
found = true;
|
|
149
|
+
}
|
|
150
|
+
ts.forEachChild(n, visit);
|
|
151
|
+
};
|
|
152
|
+
visit(node);
|
|
153
|
+
return found;
|
|
154
|
+
}
|
|
67
155
|
export function isValidKernTypeAnnotation(typeText) {
|
|
68
156
|
if (/\n/.test(typeText))
|
|
69
157
|
return false;
|
|
@@ -78,6 +166,120 @@ export function isValidKernTypeAnnotation(typeText) {
|
|
|
78
166
|
return false;
|
|
79
167
|
}
|
|
80
168
|
}
|
|
169
|
+
/** Classify bodies that should not count as ordinary language-gap blockers.
|
|
170
|
+
*
|
|
171
|
+
* These are still ineligible for `kern migrate native-handlers`, but the
|
|
172
|
+
* reason tells the Self-coverage report that the right next action is an
|
|
173
|
+
* explicit foreign/template boundary, not a parser/codegen lift slice.
|
|
174
|
+
*/
|
|
175
|
+
function classifyParseFailureBoundary(bodyText) {
|
|
176
|
+
if (/\{\{\s*[A-Za-z_$][\w$.-]*\s*\}\}/.test(bodyText))
|
|
177
|
+
return 'template-placeholder';
|
|
178
|
+
if (isObjectFragmentBody(bodyText))
|
|
179
|
+
return 'foreign-by-design';
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
function isObjectFragmentBody(bodyText) {
|
|
183
|
+
return /^\s*[A-Za-z_$][\w$]*\s*:\s*[\s\S]*,\s*\n\s*[A-Za-z_$][\w$]*\s*:\s*(?:async\s*)?(?:\([^)]*\)|[A-Za-z_$][\w$]*)\s*=>/.test(bodyText);
|
|
184
|
+
}
|
|
185
|
+
function isHostInteropBody(sf) {
|
|
186
|
+
let found = false;
|
|
187
|
+
const localBindings = collectLocalBindings(sf);
|
|
188
|
+
const visit = (node) => {
|
|
189
|
+
if (found)
|
|
190
|
+
return;
|
|
191
|
+
if (isHostInteropNode(node, localBindings)) {
|
|
192
|
+
found = true;
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
ts.forEachChild(node, visit);
|
|
196
|
+
};
|
|
197
|
+
visit(sf);
|
|
198
|
+
return found;
|
|
199
|
+
}
|
|
200
|
+
function isHostInteropNode(node, localBindings) {
|
|
201
|
+
if (ts.isPropertyAccessExpression(node)) {
|
|
202
|
+
const root = rootIdentifierName(node.expression);
|
|
203
|
+
if (root && !localBindings.has(root) && (root === 'res' || root === 'process' || root === 'db' || root === 'uri')) {
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
if (root && !localBindings.has(root) && root === 'req' && hasOptionalAccess(node)) {
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (ts.isCallExpression(node)) {
|
|
211
|
+
if (node.expression.kind === ts.SyntaxKind.ImportKeyword)
|
|
212
|
+
return true;
|
|
213
|
+
const callee = node.expression;
|
|
214
|
+
if (ts.isIdentifier(callee)) {
|
|
215
|
+
if (localBindings.has(callee.text))
|
|
216
|
+
return false;
|
|
217
|
+
return (callee.text === 'useEffect' ||
|
|
218
|
+
callee.text === 'setTimeout' ||
|
|
219
|
+
callee.text === 'clearTimeout' ||
|
|
220
|
+
callee.text === 'fetch');
|
|
221
|
+
}
|
|
222
|
+
if (ts.isPropertyAccessExpression(callee)) {
|
|
223
|
+
const root = rootIdentifierName(callee.expression);
|
|
224
|
+
if (root &&
|
|
225
|
+
!localBindings.has(root) &&
|
|
226
|
+
(root === 'db' || root === 'registry' || root === 'req' || root === 'res')) {
|
|
227
|
+
return true;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (ts.isNewExpression(node) && ts.isIdentifier(node.expression)) {
|
|
232
|
+
if (localBindings.has(node.expression.text))
|
|
233
|
+
return false;
|
|
234
|
+
return node.expression.text === 'AbortController' || node.expression.text === 'Pool';
|
|
235
|
+
}
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
function collectLocalBindings(sf) {
|
|
239
|
+
const names = new Set();
|
|
240
|
+
const visit = (node) => {
|
|
241
|
+
if (ts.isVariableDeclaration(node))
|
|
242
|
+
collectBindingName(node.name, names);
|
|
243
|
+
else if (ts.isFunctionDeclaration(node) && node.name)
|
|
244
|
+
names.add(node.name.text);
|
|
245
|
+
else if (ts.isParameter(node))
|
|
246
|
+
collectBindingName(node.name, names);
|
|
247
|
+
else if (ts.isCatchClause(node) && node.variableDeclaration)
|
|
248
|
+
collectBindingName(node.variableDeclaration.name, names);
|
|
249
|
+
ts.forEachChild(node, visit);
|
|
250
|
+
};
|
|
251
|
+
visit(sf);
|
|
252
|
+
return names;
|
|
253
|
+
}
|
|
254
|
+
function collectBindingName(name, names) {
|
|
255
|
+
if (ts.isIdentifier(name)) {
|
|
256
|
+
names.add(name.text);
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
for (const element of name.elements) {
|
|
260
|
+
if (ts.isOmittedExpression(element))
|
|
261
|
+
continue;
|
|
262
|
+
collectBindingName(element.name, names);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
function rootIdentifierName(node) {
|
|
266
|
+
let current = node;
|
|
267
|
+
while (ts.isPropertyAccessExpression(current) || ts.isElementAccessExpression(current)) {
|
|
268
|
+
current = current.expression;
|
|
269
|
+
}
|
|
270
|
+
if (ts.isCallExpression(current))
|
|
271
|
+
return null;
|
|
272
|
+
return ts.isIdentifier(current) ? current.text : null;
|
|
273
|
+
}
|
|
274
|
+
function hasOptionalAccess(node) {
|
|
275
|
+
let current = node;
|
|
276
|
+
while (ts.isPropertyAccessExpression(current) || ts.isElementAccessExpression(current)) {
|
|
277
|
+
if (current.questionDotToken !== undefined)
|
|
278
|
+
return true;
|
|
279
|
+
current = current.expression;
|
|
280
|
+
}
|
|
281
|
+
return false;
|
|
282
|
+
}
|
|
81
283
|
function isAssignableTarget(node) {
|
|
82
284
|
if (node.kind === 'ident')
|
|
83
285
|
return true;
|
|
@@ -94,6 +296,8 @@ function containsOptionalAccess(node) {
|
|
|
94
296
|
return node.optional || containsOptionalAccess(node.object);
|
|
95
297
|
if (node.kind === 'call')
|
|
96
298
|
return node.optional || containsOptionalAccess(node.callee);
|
|
299
|
+
if (node.kind === 'nonNull' || node.kind === 'typeAssert')
|
|
300
|
+
return containsOptionalAccess(node.expression);
|
|
97
301
|
return false;
|
|
98
302
|
}
|
|
99
303
|
/** True when `bodyText` contains any line or block comment. The migrator
|
|
@@ -113,6 +317,53 @@ export function hasComments(bodyText) {
|
|
|
113
317
|
return true;
|
|
114
318
|
}
|
|
115
319
|
}
|
|
320
|
+
export function hasOnlyMigratableComments(bodyText) {
|
|
321
|
+
const all = collectCommentRanges(bodyText);
|
|
322
|
+
if (all.length === 0)
|
|
323
|
+
return true;
|
|
324
|
+
if (all.some((range) => !isStandaloneCommentRange(bodyText, range)))
|
|
325
|
+
return false;
|
|
326
|
+
const sf = ts.createSourceFile('__handler.ts', bodyText, ts.ScriptTarget.Latest, true);
|
|
327
|
+
const diags = sf.parseDiagnostics;
|
|
328
|
+
if (diags && diags.length > 0)
|
|
329
|
+
return false;
|
|
330
|
+
const leading = new Set();
|
|
331
|
+
const visit = (node) => {
|
|
332
|
+
if (ts.isStatement(node)) {
|
|
333
|
+
for (const range of ts.getLeadingCommentRanges(sf.text, node.getFullStart()) ?? []) {
|
|
334
|
+
if (isStandaloneCommentRange(sf.text, range))
|
|
335
|
+
leading.add(commentRangeKey(range));
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
ts.forEachChild(node, visit);
|
|
339
|
+
};
|
|
340
|
+
visit(sf);
|
|
341
|
+
return all.every((range) => leading.has(commentRangeKey(range)));
|
|
342
|
+
}
|
|
343
|
+
function collectCommentRanges(bodyText) {
|
|
344
|
+
const ranges = [];
|
|
345
|
+
const scanner = ts.createScanner(ts.ScriptTarget.Latest, /*skipTrivia*/ false);
|
|
346
|
+
scanner.setText(bodyText);
|
|
347
|
+
while (true) {
|
|
348
|
+
const kind = scanner.scan();
|
|
349
|
+
if (kind === ts.SyntaxKind.EndOfFileToken)
|
|
350
|
+
return ranges;
|
|
351
|
+
if (kind === ts.SyntaxKind.SingleLineCommentTrivia || kind === ts.SyntaxKind.MultiLineCommentTrivia) {
|
|
352
|
+
ranges.push({ pos: scanner.getTokenPos(), end: scanner.getTextPos(), kind, hasTrailingNewLine: false });
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
function isStandaloneCommentRange(text, range) {
|
|
357
|
+
const beforeLineStart = text.lastIndexOf('\n', Math.max(0, range.pos - 1)) + 1;
|
|
358
|
+
const afterLineEndIndex = text.indexOf('\n', range.end);
|
|
359
|
+
const afterLineEnd = afterLineEndIndex === -1 ? text.length : afterLineEndIndex;
|
|
360
|
+
const before = text.slice(beforeLineStart, range.pos);
|
|
361
|
+
const after = text.slice(range.end, afterLineEnd);
|
|
362
|
+
return before.trim() === '' && after.trim() === '';
|
|
363
|
+
}
|
|
364
|
+
function commentRangeKey(range) {
|
|
365
|
+
return `${range.pos}:${range.end}:${range.kind}`;
|
|
366
|
+
}
|
|
116
367
|
/** Classify a single statement. Returns null if the migrator can emit it,
|
|
117
368
|
* otherwise a kebab-case reason. Recurses through if/try branches. */
|
|
118
369
|
function classifyStmt(stmt, sf, ctx) {
|
|
@@ -131,7 +382,22 @@ function classifyStmt(stmt, sf, ctx) {
|
|
|
131
382
|
if (decl.type && !isValidKernTypeAnnotation(decl.type.getText(sf)))
|
|
132
383
|
return 'var-bad-type';
|
|
133
384
|
if (!ts.isIdentifier(decl.name))
|
|
134
|
-
return
|
|
385
|
+
return classifyDestructureDecl(decl, sf);
|
|
386
|
+
// Template-literal initializer is migratable via the `fmt` body-stmt.
|
|
387
|
+
// Restriction parity with the migrator: single-line, no backslash escape
|
|
388
|
+
// sequences (avoids round-trip drift between KERN attribute escaping and
|
|
389
|
+
// codegen-side backtick escaping). Multi-line falls through; templates
|
|
390
|
+
// with escapes are reported separately so the classifier reason matches
|
|
391
|
+
// the actual migrator bail.
|
|
392
|
+
if (ts.isNoSubstitutionTemplateLiteral(decl.initializer) || ts.isTemplateExpression(decl.initializer)) {
|
|
393
|
+
const raw = decl.initializer.getText(sf);
|
|
394
|
+
const body = raw.slice(1, -1);
|
|
395
|
+
if (body.includes('\n'))
|
|
396
|
+
return 'var-template-multiline';
|
|
397
|
+
if (body.includes('\\'))
|
|
398
|
+
return 'var-template-escapes';
|
|
399
|
+
return null;
|
|
400
|
+
}
|
|
135
401
|
if (!isValidKernExpression(decl.initializer.getText(sf)))
|
|
136
402
|
return 'var-bad-expr';
|
|
137
403
|
return null;
|
|
@@ -139,6 +405,17 @@ function classifyStmt(stmt, sf, ctx) {
|
|
|
139
405
|
if (ts.isReturnStatement(stmt)) {
|
|
140
406
|
if (!stmt.expression)
|
|
141
407
|
return null;
|
|
408
|
+
// Template-literal return is migratable via `fmt return=true`. Same
|
|
409
|
+
// single-line + no-backslash restriction as the binding-form path.
|
|
410
|
+
if (ts.isNoSubstitutionTemplateLiteral(stmt.expression) || ts.isTemplateExpression(stmt.expression)) {
|
|
411
|
+
const raw = stmt.expression.getText(sf);
|
|
412
|
+
const body = raw.slice(1, -1);
|
|
413
|
+
if (body.includes('\n'))
|
|
414
|
+
return 'return-template-multiline';
|
|
415
|
+
if (body.includes('\\'))
|
|
416
|
+
return 'return-template-escapes';
|
|
417
|
+
return null;
|
|
418
|
+
}
|
|
142
419
|
if (!isValidKernExpression(stmt.expression.getText(sf)))
|
|
143
420
|
return 'return-bad-expr';
|
|
144
421
|
return null;
|
|
@@ -228,10 +505,15 @@ function classifyStmt(stmt, sf, ctx) {
|
|
|
228
505
|
if (decl.initializer)
|
|
229
506
|
return 'for-of-init';
|
|
230
507
|
if (!ts.isIdentifier(decl.name)) {
|
|
231
|
-
const
|
|
232
|
-
if (
|
|
233
|
-
return
|
|
234
|
-
if (
|
|
508
|
+
const entryBinding = parseForOfEntryBinding(decl.name);
|
|
509
|
+
if (entryBinding === null)
|
|
510
|
+
return 'for-of-destructure';
|
|
511
|
+
if (stmt.awaitModifier && canonicalObjectEntriesSource(stmt.expression, sf) !== null) {
|
|
512
|
+
return 'for-of-async-object-entries';
|
|
513
|
+
}
|
|
514
|
+
if (stmt.awaitModifier && entryBinding.kind !== 'pair')
|
|
515
|
+
return 'for-of-async-entry';
|
|
516
|
+
if (!stmt.awaitModifier && canonicalObjectEntriesSource(stmt.expression, sf) === null)
|
|
235
517
|
return 'for-of-sync-pair';
|
|
236
518
|
if (decl.type)
|
|
237
519
|
return 'for-of-destructure-type';
|
|
@@ -311,24 +593,35 @@ function classifyDestructureDecl(decl, sf) {
|
|
|
311
593
|
}
|
|
312
594
|
return 'var-destructure';
|
|
313
595
|
}
|
|
314
|
-
function
|
|
596
|
+
function parseForOfEntryBinding(name) {
|
|
315
597
|
if (!ts.isArrayBindingPattern(name))
|
|
316
|
-
return
|
|
317
|
-
if (name.elements.length
|
|
318
|
-
|
|
319
|
-
for (const element of name.elements) {
|
|
598
|
+
return null;
|
|
599
|
+
if (name.elements.length === 1) {
|
|
600
|
+
const [element] = name.elements;
|
|
320
601
|
if (ts.isOmittedExpression(element))
|
|
321
|
-
return
|
|
602
|
+
return null;
|
|
322
603
|
if (element.dotDotDotToken || element.initializer)
|
|
323
|
-
return
|
|
604
|
+
return null;
|
|
324
605
|
if (!ts.isIdentifier(element.name))
|
|
325
|
-
return
|
|
606
|
+
return null;
|
|
607
|
+
return { kind: 'key' };
|
|
326
608
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
609
|
+
if (name.elements.length !== 2)
|
|
610
|
+
return null;
|
|
611
|
+
const [keyElement, valueElement] = name.elements;
|
|
612
|
+
if (!ts.isOmittedExpression(keyElement)) {
|
|
613
|
+
if (keyElement.dotDotDotToken || keyElement.initializer)
|
|
614
|
+
return null;
|
|
615
|
+
if (!ts.isIdentifier(keyElement.name))
|
|
616
|
+
return null;
|
|
617
|
+
}
|
|
618
|
+
if (ts.isOmittedExpression(valueElement))
|
|
619
|
+
return null;
|
|
620
|
+
if (valueElement.dotDotDotToken || valueElement.initializer)
|
|
621
|
+
return null;
|
|
622
|
+
if (!ts.isIdentifier(valueElement.name))
|
|
623
|
+
return null;
|
|
624
|
+
return ts.isOmittedExpression(keyElement) ? { kind: 'value' } : { kind: 'pair' };
|
|
332
625
|
}
|
|
333
626
|
function classifyBranch(node, sf, ctx) {
|
|
334
627
|
const stmts = ts.isBlock(node) ? Array.from(node.statements) : [node];
|
|
@@ -347,14 +640,24 @@ export function classifyHandlerBodyAst(rawBody) {
|
|
|
347
640
|
const trimmed = rawBody.trim();
|
|
348
641
|
if (trimmed === '')
|
|
349
642
|
return { eligible: true, reason: 'empty' };
|
|
350
|
-
if (hasComments(rawBody))
|
|
351
|
-
return { eligible: false, reason: 'comments-present' };
|
|
352
643
|
const sf = ts.createSourceFile('__handler.ts', rawBody, ts.ScriptTarget.Latest, true);
|
|
353
644
|
// ts.SourceFile carries `parseDiagnostics` despite not exposing it on the
|
|
354
645
|
// public type — the migrator reads it the same way.
|
|
355
646
|
const diags = sf.parseDiagnostics;
|
|
356
|
-
if (diags && diags.length > 0)
|
|
647
|
+
if (diags && diags.length > 0) {
|
|
648
|
+
const parseBoundary = classifyParseFailureBoundary(rawBody);
|
|
649
|
+
if (parseBoundary !== null)
|
|
650
|
+
return { eligible: false, reason: parseBoundary };
|
|
651
|
+
if (hasComments(rawBody) && !hasOnlyMigratableComments(rawBody)) {
|
|
652
|
+
return { eligible: false, reason: 'comments-present' };
|
|
653
|
+
}
|
|
357
654
|
return { eligible: false, reason: 'ts-parse-error' };
|
|
655
|
+
}
|
|
656
|
+
if (isHostInteropBody(sf))
|
|
657
|
+
return { eligible: false, reason: 'foreign-by-design' };
|
|
658
|
+
if (hasComments(rawBody) && !hasOnlyMigratableComments(rawBody)) {
|
|
659
|
+
return { eligible: false, reason: 'comments-present' };
|
|
660
|
+
}
|
|
358
661
|
for (const stmt of sf.statements) {
|
|
359
662
|
const r = classifyStmt(stmt, sf, { loopDepth: 0 });
|
|
360
663
|
if (r !== null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-eligibility-ast.js","sourceRoot":"","sources":["../src/native-eligibility-ast.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"native-eligibility-ast.js","sourceRoot":"","sources":["../src/native-eligibility-ast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;yCAoByC;AAEzC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAiBzD;;;;;;;;;;;kBAWkB;AAClB,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,2EAA2E;IAC3E,uEAAuE;IACvE,oEAAoE;IACpE,iEAAiE;IACjE,4DAA4D;IAC5D,2EAA2E;IAC3E,4BAA4B;IAC5B,OAAO,uBAAuB,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC1D,IAAI,uBAAuB,CAAC,QAAQ,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,IAAI,uBAAuB,CAAC,QAAQ,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;gCAmBgC;AAChC,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,IAAI,CAAC;QACH,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,4EAA4E;IAC5E,iCAAiC;IACjC,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAI,EAAwD,CAAC,gBAAgB,CAAC;IACzF,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,IAAI,GAAkB,IAAI,CAAC,UAAU,CAAC;IAC1C,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;IAC/D,IAAI,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAAmB,EAAE,EAAiB;IACjF,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrF,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5F,OAAO,uBAAuB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAmB;IACnD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7G,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;AAEtG,SAAS,oBAAoB,CAAC,IAAa,EAAE,EAAiB;IAC5D,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,KAAK,GAAG,CAAC,CAAU,EAAE,EAAE;QAC3B,IAAI,KAAK;YAAE,OAAO;QAClB,IAAI,EAAE,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,KAAK,GAAG,IAAI,CAAC;QACjD,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,CAAC;QACH,sEAAsE;QACtE,sEAAsE;QACtE,iEAAiE;QACjE,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,4BAA4B,CAAC,QAAgB;IACpD,IAAI,kCAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,sBAAsB,CAAC;IACrF,IAAI,oBAAoB,CAAC,QAAQ,CAAC;QAAE,OAAO,mBAAmB,CAAC;IAC/D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,OAAO,oHAAoH,CAAC,IAAI,CAC9H,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAiB;IAC1C,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,aAAa,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,KAAK;YAAE,OAAO;QAClB,IAAI,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC;YAC3C,KAAK,GAAG,IAAI,CAAC;YACb,OAAO;QACT,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAa,EAAE,aAAkC;IAC1E,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAClH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAClF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACjD,OAAO,CACL,MAAM,CAAC,IAAI,KAAK,WAAW;gBAC3B,MAAM,CAAC,IAAI,KAAK,YAAY;gBAC5B,MAAM,CAAC,IAAI,KAAK,cAAc;gBAC9B,MAAM,CAAC,IAAI,KAAK,OAAO,CACxB,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACnD,IACE,IAAI;gBACJ,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;gBACxB,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,EAC1E,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1D,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC;IACvF,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,EAAiB;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aACpE,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3E,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;YAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC/D,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB;YACzD,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3D,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAoB,EAAE,KAAkB;IAClE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC;YAAE,SAAS;QAC9C,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAmB;IAC7C,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvF,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/B,CAAC;IACD,IAAI,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAmB;IAC5C,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvF,IAAK,OAA0C,CAAC,gBAAgB,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5F,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAa;IACvC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1F,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAa;IAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,QAAQ,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxF,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,QAAQ,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvF,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,QAAQ,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1G,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;iBAKiB;AACjB,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/E,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,uBAAuB,IAAI,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,sBAAsB;YAAE,OAAO,IAAI,CAAC;IACnH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,MAAM,GAAG,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAElF,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,cAAc,EAAE,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvF,MAAM,KAAK,GAAI,EAAwD,CAAC,gBAAgB,CAAC;IACzF,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnF,IAAI,wBAAwB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,KAAK,CAAC,EAAE,CAAC,CAAC;IAEV,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/E,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc;YAAE,OAAO,MAAM,CAAC;QACzD,IAAI,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,uBAAuB,IAAI,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC;YACpG,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,KAAsB;IACpE,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/E,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,iBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAChF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,eAAe,CAAC,KAAsB;IAC7C,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;uEACuE;AACvE,SAAS,YAAY,CAAC,IAAkB,EAAE,EAAiB,EAAE,GAAoB;IAC/E,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QACzC,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;YAAE,OAAO,eAAe,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,gBAAgB,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,aAAa,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,cAAc,CAAC;QAC1F,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1E,sEAAsE;QACtE,yEAAyE;QACzE,yEAAyE;QACzE,uEAAuE;QACvE,wEAAwE;QACxE,4BAA4B;QAC5B,IAAI,EAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtG,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,wBAAwB,CAAC;YACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,sBAAsB,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,cAAc,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAClC,oEAAoE;QACpE,mEAAmE;QACnE,IAAI,EAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACpG,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,2BAA2B,CAAC;YAC5D,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,yBAAyB,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,iBAAiB,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,eAAe,CAAC;QAC7C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,gBAAgB,CAAC;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,eAAe,CAAC;QACvC,OAAO,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACzD,CAAC;IACD,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,kBAAkB,CAAC;QAC1C,OAAO,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAC5D,CAAC;IACD,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,aAAa,CAAC;QAC9E,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/D,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO,UAAU,CAAC;QAC3C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,mEAAmE;YACnE,oEAAoE;YACpE,iEAAiE;YACjE,kEAAkE;YAClE,8DAA8D;YAC9D,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/D,IAAI,UAAU,KAAK,IAAI;gBAAE,OAAO,UAAU,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,cAAc,CAAC;QAC7C,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,aAAa,CAAC;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5B,IAAI,EAAE,CAAC,mBAAmB,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAAE,OAAO,oBAAoB,CAAC;QACzG,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QACzC,OAAO,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,qEAAqE;QACrE,8DAA8D;QAC9D,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;YAC9C,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;gBAC9E,IAAI,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,mCAAmC,CAAC,EAAE,CAAC,EAAE,CAAC;oBACjF,OAAO,sBAAsB,CAAC;gBAChC,CAAC;gBACD,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAO,6BAA6B,CAAC;gBACzG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAO,4BAA4B,CAAC;gBACxG,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAChG,MAAM,EAAE,GAAI,IAAI,CAAC,UAAmE,CAAC,QAAQ,CAAC;YAC9F,IAAI,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,IAAI,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,eAAe;gBAAE,OAAO,oBAAoB,CAAC;QAC9G,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,oBAAoB,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,iBAAiB,CAAC;QAC9E,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,kBAAkB,CAAC;QAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,mBAAmB,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,aAAa,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,YAAY,KAAK,IAAI;gBAAE,OAAO,oBAAoB,CAAC;YACvD,IAAI,IAAI,CAAC,aAAa,IAAI,4BAA4B,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBACrF,OAAO,6BAA6B,CAAC;YACvC,CAAC;YACD,IAAI,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,oBAAoB,CAAC;YACpF,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,4BAA4B,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,IAAI;gBAAE,OAAO,kBAAkB,CAAC;YACjH,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,yBAAyB,CAAC;QAClD,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1E,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,iBAAiB,CAAC;QAClF,wEAAwE;QACxE,sEAAsE;QACtE,iDAAiD;QACjD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,kBAAkB,CAAC;QAC3D,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,mBAAmB,CAAC;QACvE,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,gBAAgB,CAAC;QACjF,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,iBAAiB,CAAC;QAC1D,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,kBAAkB,CAAC;QACtE,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IAC5E,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,eAAe,CAAC;IACnD,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,aAAa,CAAC;IACrD,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAC1C,0EAA0E;IAC1E,2EAA2E;IAC3E,OAAO,oBAAoB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,uBAAuB,CAAC,IAA4B,EAAE,EAAiB;IAC9E,IAAI,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO,aAAa,CAAC;IAC5C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,0BAA0B,CAAC;IAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,uBAAuB,CAAC;QAC/D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,cAAc;gBAAE,OAAO,sBAAsB,CAAC;YAC1D,IAAI,OAAO,CAAC,WAAW;gBAAE,OAAO,yBAAyB,CAAC;YAC1D,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;gBAAE,OAAO,wBAAwB,CAAC;YACpE,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;gBAAE,OAAO,0BAA0B,CAAC;QACxG,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBAAE,SAAS;YAC9C,gBAAgB,EAAE,CAAC;YACnB,IAAI,OAAO,CAAC,cAAc;gBAAE,OAAO,sBAAsB,CAAC;YAC1D,IAAI,OAAO,CAAC,WAAW;gBAAE,OAAO,yBAAyB,CAAC;YAC1D,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;gBAAE,OAAO,wBAAwB,CAAC;QACtE,CAAC;QACD,IAAI,gBAAgB,KAAK,CAAC;YAAE,OAAO,uBAAuB,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAoB;IAClD,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,IAAI,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACjD,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAC/D,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAChD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,IAAI,UAAU,CAAC,cAAc,IAAI,UAAU,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QACrE,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACrD,CAAC;IACD,IAAI,EAAE,CAAC,mBAAmB,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,YAAY,CAAC,cAAc,IAAI,YAAY,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IACzE,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,cAAc,CAAC,IAAkB,EAAE,EAAiB,EAAE,GAAoB;IACjF,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;6BAG6B;AAC7B,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC/D,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtF,0EAA0E;IAC1E,oDAAoD;IACpD,MAAM,KAAK,GAAI,EAAwD,CAAC,gBAAgB,CAAC;IACzF,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,aAAa,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,aAAa,KAAK,IAAI;YAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QAC9E,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QACzD,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,iBAAiB,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACnF,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACzD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -43,6 +43,12 @@ export interface RawBody {
|
|
|
43
43
|
startLine: number;
|
|
44
44
|
/** 1-indexed line number of the `>>>` closer. */
|
|
45
45
|
endLine: number;
|
|
46
|
+
/** Raw opener text before `<<<`, when present. */
|
|
47
|
+
opener?: string;
|
|
48
|
+
/** Parsed `lang=` value from the opener, when present. */
|
|
49
|
+
declaredLang?: string;
|
|
50
|
+
/** Parsed `reason=` value from the opener, when present. */
|
|
51
|
+
declaredReason?: string;
|
|
46
52
|
}
|
|
47
53
|
/** Aggregate eligibility report for a single file. */
|
|
48
54
|
export interface FileEligibilityReport {
|
|
@@ -58,6 +64,7 @@ export interface FileEligibilityReport {
|
|
|
58
64
|
* The canonical classifier (`classifyHandlerBody`) no longer uses this set;
|
|
59
65
|
* it delegates to the AST walker in `native-eligibility-ast.ts`. */
|
|
60
66
|
export declare const LEGACY_NEG_PATTERNS: ReadonlyArray<RegExp>;
|
|
67
|
+
export declare function isExplicitForeignRawBody(body: Pick<RawBody, 'declaredLang' | 'declaredReason' | 'opener'>): boolean;
|
|
61
68
|
/** Classify a single raw body. Slice α-3: delegates to the AST walker so
|
|
62
69
|
* eligibility ≡ migrate-success by construction. */
|
|
63
70
|
export declare function classifyHandlerBody(rawBody: string): EligibilityResult;
|