@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.
Files changed (45) hide show
  1. package/dist/codegen/body-ts.js +146 -3
  2. package/dist/codegen/body-ts.js.map +1 -1
  3. package/dist/codegen/functions.js +9 -1
  4. package/dist/codegen/functions.js.map +1 -1
  5. package/dist/codegen/react-hook-imports.d.ts +72 -0
  6. package/dist/codegen/react-hook-imports.js +162 -0
  7. package/dist/codegen/react-hook-imports.js.map +1 -0
  8. package/dist/codegen-expression.js +10 -3
  9. package/dist/codegen-expression.js.map +1 -1
  10. package/dist/importer.js +25 -0
  11. package/dist/importer.js.map +1 -1
  12. package/dist/index.d.ts +4 -2
  13. package/dist/index.js +3 -2
  14. package/dist/index.js.map +1 -1
  15. package/dist/native-eligibility-ast.d.ts +30 -3
  16. package/dist/native-eligibility-ast.js +338 -35
  17. package/dist/native-eligibility-ast.js.map +1 -1
  18. package/dist/native-eligibility.d.ts +7 -0
  19. package/dist/native-eligibility.js +81 -7
  20. package/dist/native-eligibility.js.map +1 -1
  21. package/dist/parser-core.js +194 -12
  22. package/dist/parser-core.js.map +1 -1
  23. package/dist/parser-diagnostics.js +2 -0
  24. package/dist/parser-diagnostics.js.map +1 -1
  25. package/dist/parser-expression.d.ts +2 -2
  26. package/dist/parser-expression.js +276 -11
  27. package/dist/parser-expression.js.map +1 -1
  28. package/dist/parser-keywords.js +381 -0
  29. package/dist/parser-keywords.js.map +1 -1
  30. package/dist/parser-validate-body-statements.js +16 -0
  31. package/dist/parser-validate-body-statements.js.map +1 -1
  32. package/dist/parser-validate-native-eligible.js +14 -5
  33. package/dist/parser-validate-native-eligible.js.map +1 -1
  34. package/dist/schema.js +120 -12
  35. package/dist/schema.js.map +1 -1
  36. package/dist/semantic-validator.js +16 -10
  37. package/dist/semantic-validator.js.map +1 -1
  38. package/dist/spec.d.ts +2 -2
  39. package/dist/spec.js +3 -1
  40. package/dist/spec.js.map +1 -1
  41. package/dist/types.d.ts +1 -1
  42. package/dist/value-ir.d.ts +7 -0
  43. package/dist/value-ir.js +1 -0
  44. package/dist/value-ir.js.map +1 -1
  45. 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. The
32
- * multi-line guard catches body-statement attributes (`value="…"`) where
33
- * raw newlines would break the line shape.
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. The
27
- * multi-line guard catches body-statement attributes (`value="…"`) where
28
- * raw newlines would break the line shape.
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
- if (/\n/.test(exprText))
37
- return false;
38
- try {
39
- parseExpression(exprText);
40
- return true;
41
- }
42
- catch {
43
- return false;
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 (/\n/.test(exprText))
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 (/\n/.test(exprText))
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 isConst ? classifyDestructureDecl(decl, sf) : 'var-destructure-non-const';
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 pairReason = classifyForOfPairBinding(decl.name);
232
- if (pairReason !== null)
233
- return pairReason;
234
- if (!stmt.awaitModifier)
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 classifyForOfPairBinding(name) {
596
+ function parseForOfEntryBinding(name) {
315
597
  if (!ts.isArrayBindingPattern(name))
316
- return 'for-of-destructure';
317
- if (name.elements.length !== 2)
318
- return 'for-of-destructure';
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 'for-of-destructure';
602
+ return null;
322
603
  if (element.dotDotDotToken || element.initializer)
323
- return 'for-of-destructure';
604
+ return null;
324
605
  if (!ts.isIdentifier(element.name))
325
- return 'for-of-destructure';
606
+ return null;
607
+ return { kind: 'key' };
326
608
  }
327
- // This maps only for `for await` loops. Sync pair-mode is ambiguous across
328
- // targets: TS can iterate any iterable of pairs, while Python pair-mode emits
329
- // mapping `.items()`. Hand-write `each pairKey=/pairValue=` when the source
330
- // is intentionally map/dict-shaped.
331
- return null;
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":"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"}
@@ -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;