@kernlang/core 3.3.9 → 3.4.1

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 (97) hide show
  1. package/dist/capability-matrix.d.ts +15 -0
  2. package/dist/capability-matrix.js +245 -0
  3. package/dist/capability-matrix.js.map +1 -0
  4. package/dist/codegen/body-ts.d.ts +68 -0
  5. package/dist/codegen/body-ts.js +214 -0
  6. package/dist/codegen/body-ts.js.map +1 -0
  7. package/dist/codegen/data-layer.d.ts +1 -1
  8. package/dist/codegen/data-layer.js +59 -23
  9. package/dist/codegen/data-layer.js.map +1 -1
  10. package/dist/codegen/events.js +1 -1
  11. package/dist/codegen/events.js.map +1 -1
  12. package/dist/codegen/functions.js +48 -7
  13. package/dist/codegen/functions.js.map +1 -1
  14. package/dist/codegen/ground-layer.js +10 -6
  15. package/dist/codegen/ground-layer.js.map +1 -1
  16. package/dist/codegen/helpers.d.ts +3 -1
  17. package/dist/codegen/helpers.js +5 -1
  18. package/dist/codegen/helpers.js.map +1 -1
  19. package/dist/codegen/kern-stdlib.d.ts +63 -0
  20. package/dist/codegen/kern-stdlib.js +160 -0
  21. package/dist/codegen/kern-stdlib.js.map +1 -0
  22. package/dist/codegen/machines.js +4 -3
  23. package/dist/codegen/machines.js.map +1 -1
  24. package/dist/codegen/modules.d.ts +1 -0
  25. package/dist/codegen/modules.js +52 -1
  26. package/dist/codegen/modules.js.map +1 -1
  27. package/dist/codegen/screens.js +31 -9
  28. package/dist/codegen/screens.js.map +1 -1
  29. package/dist/codegen/stdlib-preamble.d.ts +58 -0
  30. package/dist/codegen/stdlib-preamble.js +271 -0
  31. package/dist/codegen/stdlib-preamble.js.map +1 -0
  32. package/dist/codegen/type-system.d.ts +113 -1
  33. package/dist/codegen/type-system.js +404 -31
  34. package/dist/codegen/type-system.js.map +1 -1
  35. package/dist/codegen-core.d.ts +2 -2
  36. package/dist/codegen-core.js +65 -10
  37. package/dist/codegen-core.js.map +1 -1
  38. package/dist/codegen-expression.d.ts +11 -0
  39. package/dist/codegen-expression.js +199 -0
  40. package/dist/codegen-expression.js.map +1 -0
  41. package/dist/concepts.d.ts +3 -3
  42. package/dist/config.d.ts +16 -0
  43. package/dist/config.js +13 -0
  44. package/dist/config.js.map +1 -1
  45. package/dist/decompiler.js +575 -4
  46. package/dist/decompiler.js.map +1 -1
  47. package/dist/importer.d.ts +1 -0
  48. package/dist/importer.js +574 -34
  49. package/dist/importer.js.map +1 -1
  50. package/dist/index.d.ts +16 -3
  51. package/dist/index.js +19 -3
  52. package/dist/index.js.map +1 -1
  53. package/dist/node-props.d.ts +181 -1
  54. package/dist/node-props.js.map +1 -1
  55. package/dist/parser-core.d.ts +7 -1
  56. package/dist/parser-core.js +33 -7
  57. package/dist/parser-core.js.map +1 -1
  58. package/dist/parser-diagnostics.js +8 -0
  59. package/dist/parser-diagnostics.js.map +1 -1
  60. package/dist/parser-expression.d.ts +22 -0
  61. package/dist/parser-expression.js +774 -0
  62. package/dist/parser-expression.js.map +1 -0
  63. package/dist/parser-keywords.js +16 -0
  64. package/dist/parser-keywords.js.map +1 -1
  65. package/dist/parser-tokenizer.d.ts +5 -3
  66. package/dist/parser-tokenizer.js +97 -16
  67. package/dist/parser-tokenizer.js.map +1 -1
  68. package/dist/parser-validate-effects.d.ts +21 -0
  69. package/dist/parser-validate-effects.js +188 -0
  70. package/dist/parser-validate-effects.js.map +1 -0
  71. package/dist/parser-validate-expressions.d.ts +6 -0
  72. package/dist/parser-validate-expressions.js +41 -0
  73. package/dist/parser-validate-expressions.js.map +1 -0
  74. package/dist/parser-validate-propagation.d.ts +105 -0
  75. package/dist/parser-validate-propagation.js +684 -0
  76. package/dist/parser-validate-propagation.js.map +1 -0
  77. package/dist/parser-validate-union-kind.d.ts +24 -0
  78. package/dist/parser-validate-union-kind.js +97 -0
  79. package/dist/parser-validate-union-kind.js.map +1 -0
  80. package/dist/parser.d.ts +10 -3
  81. package/dist/parser.js +11 -5
  82. package/dist/parser.js.map +1 -1
  83. package/dist/schema.d.ts +1 -1
  84. package/dist/schema.js +562 -30
  85. package/dist/schema.js.map +1 -1
  86. package/dist/semantic-validator.js +24 -13
  87. package/dist/semantic-validator.js.map +1 -1
  88. package/dist/spec.d.ts +5 -2
  89. package/dist/spec.js +36 -2
  90. package/dist/spec.js.map +1 -1
  91. package/dist/types.d.ts +7 -1
  92. package/dist/types.js +7 -1
  93. package/dist/types.js.map +1 -1
  94. package/dist/value-ir.d.ts +96 -0
  95. package/dist/value-ir.js +25 -0
  96. package/dist/value-ir.js.map +1 -0
  97. package/package.json +1 -1
@@ -3,18 +3,29 @@
3
3
  *
4
4
  * Extracted from codegen-core.ts for modular codegen architecture.
5
5
  */
6
+ import { emitExpression } from '../codegen-expression.js';
6
7
  import { propsOf } from '../node-props.js';
8
+ import { parseExpression } from '../parser-expression.js';
9
+ import { isExprObject } from '../types.js';
10
+ import { emitNativeKernBodyTS } from './body-ts.js';
7
11
  import { emitIdentifier, emitTemplateSafe, emitTypeAnnotation } from './emitters.js';
8
12
  import { emitDocComment, exportPrefix, getChildren, getFirstChild, getProps, handlerCode, parseParamList, } from './helpers.js';
13
+ /** Slice 4b — native KERN method body dispatch. Methods on `class` and
14
+ * `service` (both go through `emitClassBody`) get the same `lang=kern`
15
+ * opt-in as `fn` (slice 1). The handler is resolved off the method's
16
+ * child handler node; if it opts in, walk the structured statements
17
+ * via `emitNativeKernBodyTS`. Otherwise fall back to the legacy raw
18
+ * `<<<...>>>` body via `handlerCode`. */
19
+ function methodBodyCode(method) {
20
+ const handler = getFirstChild(method, 'handler');
21
+ if (handler && getProps(handler).lang === 'kern') {
22
+ return emitNativeKernBodyTS(handler);
23
+ }
24
+ return handlerCode(method);
25
+ }
9
26
  const p = getProps;
10
27
  const kids = getChildren;
11
28
  const firstChild = getFirstChild;
12
- function isExprObject(value) {
13
- return (typeof value === 'object' &&
14
- value !== null &&
15
- value.__expr === true &&
16
- typeof value.code === 'string');
17
- }
18
29
  // ── Type Alias ───────────────────────────────────────────────────────────
19
30
  // type name=PlanState values="draft|approved|running|paused|completed|failed|cancelled"
20
31
  // → export type PlanState = 'draft' | 'approved' | 'running' | ...;
@@ -22,6 +33,7 @@ export function generateType(node) {
22
33
  const props = propsOf(node);
23
34
  const name = emitIdentifier(props.name, 'UnknownType', node);
24
35
  const { values, alias } = props;
36
+ const generics = props.generics ? emitTypeAnnotation(props.generics, '', node) : '';
25
37
  const exp = exportPrefix(node);
26
38
  const docs = emitDocComment(node);
27
39
  if (values) {
@@ -29,27 +41,37 @@ export function generateType(node) {
29
41
  .split('|')
30
42
  .map((v) => `'${emitTemplateSafe(v.trim())}'`)
31
43
  .join(' | ');
32
- return [...docs, `${exp}type ${name} = ${members};`];
44
+ return [...docs, `${exp}type ${name}${generics} = ${members};`];
33
45
  }
34
46
  if (alias) {
35
- return [...docs, `${exp}type ${name} = ${emitTypeAnnotation(alias, 'unknown', node)};`];
47
+ return [...docs, `${exp}type ${name}${generics} = ${emitTypeAnnotation(alias, 'unknown', node)};`];
36
48
  }
37
- return [...docs, `${exp}type ${name} = unknown;`];
49
+ return [...docs, `${exp}type ${name}${generics} = unknown;`];
38
50
  }
39
51
  // ── Interface ────────────────────────────────────────────────────────────
40
52
  export function generateInterface(node) {
41
53
  const props = propsOf(node);
42
54
  const name = emitIdentifier(props.name, 'UnknownInterface', node);
55
+ const generics = props.generics ? emitTypeAnnotation(props.generics, '', node) : '';
43
56
  const ext = props.extends ? ` extends ${emitTypeAnnotation(props.extends, 'unknown', node)}` : '';
44
57
  const exp = exportPrefix(node);
45
58
  const lines = [...emitDocComment(node)];
46
- lines.push(`${exp}interface ${name}${ext} {`);
59
+ lines.push(`${exp}interface ${name}${generics}${ext} {`);
47
60
  for (const field of kids(node, 'field')) {
48
61
  const fp = propsOf(field);
49
62
  const fieldName = emitIdentifier(fp.name, 'field', field);
50
63
  const opt = fp.optional === 'true' || fp.optional === true ? '?' : '';
51
64
  lines.push(` ${fieldName}${opt}: ${emitTypeAnnotation(fp.type, 'unknown', field)};`);
52
65
  }
66
+ for (const idx of kids(node, 'indexer')) {
67
+ const ip = propsOf(idx);
68
+ // `||` (not `??`) so an empty-string keyName also falls back to 'key'.
69
+ const keyName = emitIdentifier(ip.keyName || 'key', 'key', idx);
70
+ const keyType = emitTypeAnnotation(ip.keyType, 'string', idx);
71
+ const valType = emitTypeAnnotation(ip.type, 'unknown', idx);
72
+ const ro = ip.readonly === 'true' || ip.readonly === true ? 'readonly ' : '';
73
+ lines.push(` ${ro}[${keyName}: ${keyType}]: ${valType};`);
74
+ }
53
75
  lines.push('}');
54
76
  return lines;
55
77
  }
@@ -99,16 +121,18 @@ function emitClassHeader(node, fallbackName) {
99
121
  const name = emitIdentifier(props.name, fallbackName, node);
100
122
  const exp = exportPrefix(node);
101
123
  const docs = emitDocComment(node);
124
+ const generics = props.generics ? emitTypeAnnotation(props.generics, '', node) : '';
102
125
  const extendsClause = props.extends ? ` extends ${emitTypeAnnotation(props.extends, 'unknown', node)}` : '';
103
126
  const implementsClause = props.implements
104
127
  ? ` implements ${emitTypeAnnotation(props.implements, 'unknown', node)}`
105
128
  : '';
106
129
  const abstractKw = props.abstract === 'true' || props.abstract === true ? 'abstract ' : '';
130
+ const classKw = node.type === 'service' ? 'class ' : `${abstractKw}class `;
107
131
  return {
108
132
  exp,
109
133
  name,
110
134
  docs,
111
- header: `${exp}${abstractKw}class ${name}${extendsClause}${implementsClause} {`,
135
+ header: `${exp}${classKw}${name}${generics}${extendsClause}${implementsClause} {`,
112
136
  };
113
137
  }
114
138
  export function generateClass(node) {
@@ -147,26 +171,44 @@ function emitClassBody(node, lines) {
147
171
  const staticKw = fp.static === 'true' || fp.static === true ? 'static ' : '';
148
172
  const readonly = fp.readonly === 'true' || fp.readonly === true ? 'readonly ' : '';
149
173
  const typeAnnotation = fp.type ? `: ${emitTypeAnnotation(fp.type, 'unknown', field)}` : '';
150
- const defaultVal = fp.default;
151
- // `default={{ expr }}` parses as an ExprObject; emit its raw code.
152
- // Bare `default=0` arrives as a string. Either way it's by-design raw TS.
174
+ // Slice 3b: `value` (native ValueIR) takes precedence over `default`
175
+ // (rawExpr passthrough). `value` routes through emitConstValue for
176
+ // ValueIR canonicalisation + __quotedProps-aware string-literal handling;
177
+ // `default` keeps the original raw passthrough so existing seeds with
178
+ // bare-string defaults (e.g. `default=plan` for a string-typed field)
179
+ // continue to compile unchanged.
180
+ //
181
+ // Codex-hold guard from slice 3a: presence is `=== undefined` only —
182
+ // empty-string `value=""` is a legal explicit string literal when the
183
+ // source had it quoted (__quotedProps tracks it), and emitConstValue
184
+ // JSON.stringifies it to `""`. Slice 3b Codex hold #1: an unquoted
185
+ // empty `value=` (no __quotedProps) must NOT be routed through
186
+ // emitConstValue — parseExpression('') throws and returns '', producing
187
+ // invalid TS like `x: string = ;`. Treat unquoted-empty as absent.
188
+ const rawValue = fp.value;
189
+ const rawDefault = fp.default;
190
+ const valuePresent = rawValue !== undefined && (rawValue !== '' || field.__quotedProps?.includes('value') === true);
153
191
  const init = (() => {
154
- if (defaultVal === undefined || defaultVal === '')
192
+ if (valuePresent) {
193
+ return ` = ${emitConstValue(field, rawValue)}`;
194
+ }
195
+ if (rawDefault === undefined || rawDefault === '')
155
196
  return '';
156
- if (isExprObject(defaultVal))
157
- return ` = ${defaultVal.code}`;
158
- return ` = ${defaultVal}`;
197
+ if (isExprObject(rawDefault))
198
+ return ` = ${rawDefault.code}`;
199
+ return ` = ${rawDefault}`;
159
200
  })();
160
201
  lines.push(` ${vis}${staticKw}${readonly}${fieldName}${typeAnnotation}${init};`);
161
202
  }
162
203
  // Constructor (if any constructor child exists)
163
204
  const ctorNode = firstChild(node, 'constructor');
164
205
  if (ctorNode) {
165
- const ctorProps = p(ctorNode);
166
- const ctorParams = ctorProps.params ? parseParamList(ctorProps.params) : '';
206
+ const ctorProps = propsOf(ctorNode);
207
+ const ctorParams = emitParamList(ctorNode);
208
+ const generics = ctorProps.generics ? emitTypeAnnotation(ctorProps.generics, '', ctorNode) : '';
167
209
  const ctorCode = handlerCode(ctorNode);
168
210
  lines.push('');
169
- lines.push(` constructor(${ctorParams}) {`);
211
+ lines.push(` constructor${generics}(${ctorParams}) {`);
170
212
  if (ctorCode) {
171
213
  for (const line of ctorCode.split('\n')) {
172
214
  lines.push(` ${line}`);
@@ -178,18 +220,17 @@ function emitClassBody(node, lines) {
178
220
  for (const method of kids(node, 'method')) {
179
221
  const mp = propsOf(method);
180
222
  const mname = emitIdentifier(mp.name, 'method', method);
181
- const mparams = mp.params ? parseParamList(mp.params) : '';
223
+ const mparams = emitParamList(method);
224
+ const generics = mp.generics ? emitTypeAnnotation(mp.generics, '', method) : '';
182
225
  const isAsync = mp.async === 'true' || mp.async === true;
183
226
  const isStream = mp.stream === 'true' || mp.stream === true;
184
227
  const isGenerator = mp.generator === 'true' || mp.generator === true;
185
228
  const isStatic = mp.static === 'true' || mp.static === true;
186
- const vis = mp.private === 'true' || mp.private === true
187
- ? 'private '
188
- : '';
229
+ const vis = mp.private === 'true' || mp.private === true ? 'private ' : '';
189
230
  const staticKw = isStatic ? 'static ' : '';
190
231
  const star = isStream || isGenerator ? '*' : '';
191
232
  const asyncKw = isAsync || isStream ? 'async ' : '';
192
- const mcode = handlerCode(method);
233
+ const mcode = methodBodyCode(method);
193
234
  // stream=true → AsyncGenerator, generator=true → Generator/AsyncGenerator
194
235
  // If user already declared full Generator<...>/AsyncGenerator<...>, use as-is
195
236
  const mrt = mp.returns ? emitTypeAnnotation(mp.returns, 'unknown', method) : '';
@@ -206,7 +247,7 @@ function emitClassBody(node, lines) {
206
247
  ? `: ${mrt}`
207
248
  : '';
208
249
  lines.push('');
209
- lines.push(` ${vis}${staticKw}${asyncKw}${star}${mname}(${mparams})${mreturns} {`);
250
+ lines.push(` ${vis}${staticKw}${asyncKw}${star}${mname}${generics}(${mparams})${mreturns} {`);
210
251
  if (mcode) {
211
252
  for (const line of mcode.split('\n')) {
212
253
  lines.push(` ${line}`);
@@ -237,7 +278,7 @@ function emitClassBody(node, lines) {
237
278
  const sname = emitIdentifier(sp.name, 'setter', setter);
238
279
  const svis = sp.private === 'true' || sp.private === true ? 'private ' : '';
239
280
  const sstatic = sp.static === 'true' || sp.static === true ? 'static ' : '';
240
- const sparams = sp.params ? parseParamList(sp.params) : 'value: unknown';
281
+ const sparams = emitParamList(setter, { fallback: 'value: unknown' });
241
282
  const scode = handlerCode(setter);
242
283
  lines.push('');
243
284
  lines.push(` ${svis}${sstatic}set ${sname}(${sparams}) {`);
@@ -249,6 +290,63 @@ function emitClassBody(node, lines) {
249
290
  lines.push(' }');
250
291
  }
251
292
  }
293
+ // ── Enum ────────────────────────────────────────────────────────────────
294
+ // enum name=Status values="Pending|Active|Done"
295
+ // → export enum Status { Pending, Active, Done }
296
+ //
297
+ // enum name=Direction
298
+ // member name=Up value="UP"
299
+ // member name=Down value="DOWN"
300
+ // → export enum Direction { Up = "UP", Down = "DOWN" }
301
+ //
302
+ // enum name=Flag const=true values="On|Off"
303
+ // → export const enum Flag { On, Off }
304
+ export function generateEnum(node) {
305
+ const props = propsOf(node);
306
+ const name = emitIdentifier(props.name, 'UnknownEnum', node);
307
+ const exp = exportPrefix(node);
308
+ const isConst = props.const === 'true' || props.const === true;
309
+ const constKw = isConst ? 'const ' : '';
310
+ const docs = emitDocComment(node);
311
+ // Member children take precedence over `values=`. If both are provided, members win
312
+ // (and `values=` is silently ignored — the user picked the more expressive form).
313
+ const memberChildren = kids(node, 'member');
314
+ if (memberChildren.length > 0) {
315
+ const lines = [...docs, `${exp}${constKw}enum ${name} {`];
316
+ for (const m of memberChildren) {
317
+ const mp = propsOf(m);
318
+ const mname = emitIdentifier(mp.name, 'unknownMember', m);
319
+ const rawVal = mp.value;
320
+ // Quoted strings keep their string form; bare values pass through as-is.
321
+ // (Slice 1i/1j contract: __quotedProps tracks origin; here we honour it.)
322
+ let valueStr;
323
+ if (rawVal === undefined || rawVal === '') {
324
+ valueStr = '';
325
+ }
326
+ else if (isExprObject(rawVal)) {
327
+ valueStr = ` = ${rawVal.code}`;
328
+ }
329
+ else if (typeof rawVal === 'string') {
330
+ const isQuoted = m.__quotedProps?.includes('value');
331
+ valueStr = ` = ${isQuoted ? JSON.stringify(rawVal) : rawVal}`;
332
+ }
333
+ else {
334
+ valueStr = ` = ${String(rawVal)}`;
335
+ }
336
+ lines.push(` ${mname}${valueStr},`);
337
+ }
338
+ lines.push('}');
339
+ return lines;
340
+ }
341
+ if (props.values) {
342
+ const members = props.values
343
+ .split('|')
344
+ .map((v) => emitIdentifier(v.trim(), 'unknownMember', node))
345
+ .join(', ');
346
+ return [...docs, `${exp}${constKw}enum ${name} { ${members} }`];
347
+ }
348
+ return [...docs, `${exp}${constKw}enum ${name} {}`];
349
+ }
252
350
  // ── Const ───────────────────────────────────────────────────────────────
253
351
  export function generateConst(node) {
254
352
  const props = propsOf(node);
@@ -263,11 +361,286 @@ export function generateConst(node) {
263
361
  return [...docs, `${exp}const ${name}${typeAnnotation} = ${code.trim()};`];
264
362
  }
265
363
  if (rawValue !== undefined && rawValue !== '') {
266
- // `value={{ expr }}` is parsed as ExprObject; emit the raw code. Bare
267
- // literal values (`value=42`) come through as strings.
268
- const value = isExprObject(rawValue) ? rawValue.code : rawValue;
364
+ const value = emitConstValue(node, rawValue);
269
365
  return [...docs, `${exp}const ${name}${typeAnnotation} = ${value};`];
270
366
  }
271
367
  return [...docs, `${exp}const ${name}${typeAnnotation};`];
272
368
  }
369
+ // ── Destructure (slice 3d) ──────────────────────────────────────────────
370
+ /**
371
+ * Slice 3d — emit a TS destructuring statement from a `destructure` node.
372
+ *
373
+ * Two paths:
374
+ * (1) `expr={{...}}` escape hatch — emit the carried code verbatim. Used
375
+ * by the importer for complex patterns (rest `...`, defaults `=v`,
376
+ * nested `{a:{b}}`, computed keys) where structured children would
377
+ * lose information.
378
+ * (2) Structured children — `binding` for object patterns (with optional
379
+ * `key=` for renames) or `element` for array patterns (with `index=`
380
+ * for ordered position). Codegen detects which child kind dominates
381
+ * and emits `{a, b: alias} = src` or `[a, b, , c] = src` (holes from
382
+ * index gaps).
383
+ *
384
+ * `kind` defaults to `const` when omitted. `type` (optional) flows through
385
+ * `emitTypeAnnotation` and is appended after the LHS pattern.
386
+ */
387
+ export function generateDestructure(node) {
388
+ const props = propsOf(node);
389
+ const docs = emitDocComment(node);
390
+ const exp = exportPrefix(node);
391
+ const kind = props.kind === 'let' ? 'let' : 'const';
392
+ // Escape-hatch path for unsupported patterns (rest/defaults/nested).
393
+ // Importer falls back to this when ts.ObjectBindingPattern / ts.ArrayBindingPattern
394
+ // contain features the structured emitter can't represent. The raw text is
395
+ // expected to be a full statement (including `const`/`let` and any `export`
396
+ // prefix), so we DON'T re-prepend `exp` or `kind` here.
397
+ if (props.expr !== undefined) {
398
+ const raw = isExprObject(props.expr) ? props.expr.code : String(props.expr);
399
+ return [...docs, raw];
400
+ }
401
+ if (props.source === undefined || props.source === '') {
402
+ throw new Error('destructure node requires either `source=...` or `expr={{...}}`');
403
+ }
404
+ const sourceCode = emitConstValue(node, props.source);
405
+ const typeAnn = props.type ? `: ${emitTypeAnnotation(props.type, 'unknown', node)}` : '';
406
+ const pattern = formatBindingPatternFromChildren(node);
407
+ if (pattern === null) {
408
+ throw new Error('destructure node has no `binding` or `element` children — use `expr={{...}}` instead for empty patterns');
409
+ }
410
+ return [...docs, `${exp}${kind} ${pattern}${typeAnn} = ${sourceCode};`];
411
+ }
412
+ /**
413
+ * Slice 3c-extension #3 / shared with slice 3d destructure: format the LHS
414
+ * pattern (`{a, b: alias}` or `[x, , y]`) from a node's `binding` (object)
415
+ * or `element` (array) children. Returns null when neither is present (used
416
+ * by the destructure node validator); throws when the node mixes both.
417
+ *
418
+ * Used by:
419
+ * - `generateDestructure` (slice 3d) — full statement: `const {a,b} = src;`
420
+ * - `parseParamListFromChildren` (slice 3c-extension #3) — pattern-only LHS
421
+ * of a destructured fn parameter: `{a, b}: Point` or `[x, y]`.
422
+ */
423
+ export function formatBindingPatternFromChildren(node) {
424
+ const children = node.children || [];
425
+ const bindings = children.filter((c) => c.type === 'binding');
426
+ const elements = children.filter((c) => c.type === 'element');
427
+ if (bindings.length === 0 && elements.length === 0)
428
+ return null;
429
+ if (bindings.length > 0 && elements.length > 0) {
430
+ throw new Error(`${node.type} mixes \`binding\` (object) and \`element\` (array) children — use one or the other`);
431
+ }
432
+ if (bindings.length > 0) {
433
+ // Object pattern: {a, b: rename, c}
434
+ const parts = bindings.map((child) => {
435
+ const cp = propsOf(child);
436
+ const name = emitIdentifier(cp.name, 'unknownBinding', child);
437
+ if (cp.key) {
438
+ const key = emitIdentifier(cp.key, 'unknownKey', child);
439
+ return `${key}: ${name}`;
440
+ }
441
+ return name;
442
+ });
443
+ return `{ ${parts.join(', ')} }`;
444
+ }
445
+ // Array pattern: ordered by `index=`, gaps emit holes (`, ,`).
446
+ const indexed = elements.map((child) => {
447
+ const cp = propsOf(child);
448
+ const idx = cp.index !== undefined ? Number.parseInt(cp.index, 10) : Number.NaN;
449
+ return { idx, child, props: cp };
450
+ });
451
+ if (indexed.some((e) => Number.isNaN(e.idx))) {
452
+ throw new Error(`${node.type} \`element\` children require numeric \`index=\` props`);
453
+ }
454
+ indexed.sort((a, b) => a.idx - b.idx);
455
+ const max = indexed[indexed.length - 1].idx;
456
+ const slots = [];
457
+ for (let i = 0; i <= max; i++) {
458
+ const match = indexed.find((e) => e.idx === i);
459
+ if (match) {
460
+ slots.push(emitIdentifier(match.props.name, 'unknownElement', match.child));
461
+ }
462
+ else {
463
+ slots.push('');
464
+ }
465
+ }
466
+ return `[${slots.join(', ')}]`;
467
+ }
468
+ // ── Map / Set literals (slice 3e) ───────────────────────────────────────
469
+ /**
470
+ * Slice 3e — emit a TS Map literal from a `mapLit` node.
471
+ *
472
+ * mapLit name=cache type="Map<string, number>"
473
+ * mapEntry key="foo" value=1
474
+ * mapEntry key="bar" value=2
475
+ *
476
+ * → `const cache: Map<string, number> = new Map([['foo', 1], ['bar', 2]]);`
477
+ *
478
+ * `expr={{...}}` escape hatch carries a raw TS statement verbatim — used
479
+ * by the importer fallback when a Map literal contains shapes the
480
+ * structured emitter can't represent (computed keys, conditional entries,
481
+ * spread). Mirrors slice 3d destructure escape-hatch policy.
482
+ */
483
+ export function generateMapLit(node) {
484
+ const props = propsOf(node);
485
+ const docs = emitDocComment(node);
486
+ const exp = exportPrefix(node);
487
+ if (props.expr !== undefined) {
488
+ const raw = isExprObject(props.expr) ? props.expr.code : String(props.expr);
489
+ return [...docs, raw];
490
+ }
491
+ const name = emitIdentifier(props.name, 'unknownMap', node);
492
+ const kind = props.kind === 'let' ? 'let' : 'const';
493
+ const typeAnn = props.type ? `: ${emitTypeAnnotation(props.type, 'Map<unknown, unknown>', node)}` : '';
494
+ const entries = (node.children || []).filter((c) => c.type === 'mapEntry');
495
+ const pairs = entries.map((child) => {
496
+ const cp = propsOf(child);
497
+ if (cp.key === undefined) {
498
+ throw new Error('mapEntry requires a `key=` prop');
499
+ }
500
+ if (cp.value === undefined) {
501
+ throw new Error('mapEntry requires a `value=` prop');
502
+ }
503
+ const k = emitConstValue(child, cp.key, 'key');
504
+ const v = emitConstValue(child, cp.value, 'value');
505
+ return `[${k}, ${v}]`;
506
+ });
507
+ return [...docs, `${exp}${kind} ${name}${typeAnn} = new Map([${pairs.join(', ')}]);`];
508
+ }
509
+ /**
510
+ * Slice 3e — emit a TS Set literal from a `setLit` node.
511
+ *
512
+ * setLit name=allowed type="Set<string>"
513
+ * setItem value="admin"
514
+ * setItem value="user"
515
+ *
516
+ * → `const allowed: Set<string> = new Set(['admin', 'user']);`
517
+ *
518
+ * Same `expr={{...}}` escape-hatch policy as `mapLit`/`destructure`.
519
+ */
520
+ export function generateSetLit(node) {
521
+ const props = propsOf(node);
522
+ const docs = emitDocComment(node);
523
+ const exp = exportPrefix(node);
524
+ if (props.expr !== undefined) {
525
+ const raw = isExprObject(props.expr) ? props.expr.code : String(props.expr);
526
+ return [...docs, raw];
527
+ }
528
+ const name = emitIdentifier(props.name, 'unknownSet', node);
529
+ const kind = props.kind === 'let' ? 'let' : 'const';
530
+ const typeAnn = props.type ? `: ${emitTypeAnnotation(props.type, 'Set<unknown>', node)}` : '';
531
+ const items = (node.children || []).filter((c) => c.type === 'setItem');
532
+ const values = items.map((child) => {
533
+ const cp = propsOf(child);
534
+ if (cp.value === undefined) {
535
+ throw new Error('setItem requires a `value=` prop');
536
+ }
537
+ return emitConstValue(child, cp.value, 'value');
538
+ });
539
+ return [...docs, `${exp}${kind} ${name}${typeAnn} = new Set([${values.join(', ')}]);`];
540
+ }
541
+ /** Emit the right-hand side of an expression-typed prop (e.g. `const.value`,
542
+ * `let.value`) from its raw IR form.
543
+ *
544
+ * - `<prop>={{ expr }}` (ExprObject) — emit `.code` raw (escape hatch for arbitrary TS).
545
+ * - `<prop>="literal"` (quoted, tracked in __quotedProps) — emit as JSON-quoted string
546
+ * so output is valid TS even when the literal contains expression-illegal characters.
547
+ * - bare `<prop>=...` — try ValueIR parse + emit for canonicalization. Fall back to raw
548
+ * string on parse failure (validator emits INVALID_EXPRESSION but codegen still ships).
549
+ *
550
+ * Slice 3e — `propName` parameter (default 'value') lets non-`value` props
551
+ * participate in the same quoted-vs-bare distinction. `mapEntry.key` and
552
+ * `mapEntry.value` both flow through this with their own __quotedProps key. */
553
+ export function emitConstValue(node, rawValue, propName = 'value') {
554
+ if (isExprObject(rawValue))
555
+ return rawValue.code;
556
+ if (typeof rawValue !== 'string')
557
+ return String(rawValue);
558
+ if (node.__quotedProps?.includes(propName))
559
+ return JSON.stringify(rawValue);
560
+ try {
561
+ return emitExpression(parseExpression(rawValue));
562
+ }
563
+ catch {
564
+ return rawValue;
565
+ }
566
+ }
567
+ /**
568
+ * Slice 3c — produce a TS parameter-list string from `param` child IR nodes.
569
+ *
570
+ * Mirrors `parseParamList` (which parses the legacy `params="..."` string)
571
+ * but reads structured child nodes so each parameter's `value=` flows through
572
+ * `emitConstValue` for ValueIR canonicalisation. Identifier/type annotations
573
+ * are routed through the schema emitters so authored bad input raises
574
+ * KernCodegenError instead of producing broken TS.
575
+ *
576
+ * Per child:
577
+ * - `value=` (slice 3c, ValueIR-canonicalised) — JSON-quoted for quoted
578
+ * string literals, parsed+re-emitted for bare expressions, raw for
579
+ * `{{...}}` ExprObject. Same routing as slice 3b field.value.
580
+ * - `default=` (rawExpr passthrough) — kept for back-compat / MCP usage.
581
+ * - When both set, `value` wins. The slice 3a/3b gate treats unquoted
582
+ * empty `value=` as absent so it doesn't trigger the
583
+ * `parseExpression('')` throw → empty fallback → `name: T = ;` bug.
584
+ *
585
+ * `options.stripDefaults`: TS forbids parameter initializers in overload
586
+ * signatures — the implementation alone may carry defaults. Same flag as
587
+ * the sibling `parseParamList`.
588
+ */
589
+ export function parseParamListFromChildren(paramNodes, options) {
590
+ if (paramNodes.length === 0)
591
+ return '';
592
+ return paramNodes
593
+ .map((paramNode) => {
594
+ const pp = propsOf(paramNode);
595
+ // Slice 3c-extension #3: destructured params via `binding`/`element`
596
+ // children — the pattern (`{a, b}` / `[x, y]`) replaces the name in
597
+ // the LHS. Slice 3d shares the same children, so the same formatter
598
+ // serves both contexts. When a destructure pattern is present, `name=`
599
+ // is ignored (and the importer omits it).
600
+ const destructurePattern = formatBindingPatternFromChildren(paramNode);
601
+ const rawName = destructurePattern ?? emitIdentifier(pp.name, 'parameter', paramNode);
602
+ // Slice 3c-extension: TS-style variadic `...` prepended to name.
603
+ const variadic = pp.variadic === true || pp.variadic === 'true' ? '...' : '';
604
+ const pname = `${variadic}${rawName}`;
605
+ // Slice 3c-extension: TS-style optional `?` between name and type.
606
+ const optional = pp.optional === true || pp.optional === 'true' ? '?' : '';
607
+ const typeAnn = pp.type ? `: ${emitTypeAnnotation(pp.type, 'unknown', paramNode)}` : '';
608
+ if (options?.stripDefaults)
609
+ return `${pname}${optional}${typeAnn}`;
610
+ const rawValue = pp.value;
611
+ const rawDefault = pp.default;
612
+ const valuePresent = rawValue !== undefined && (rawValue !== '' || paramNode.__quotedProps?.includes('value') === true);
613
+ if (valuePresent) {
614
+ return `${pname}${optional}${typeAnn} = ${emitConstValue(paramNode, rawValue)}`;
615
+ }
616
+ if (rawDefault === undefined || rawDefault === '')
617
+ return `${pname}${optional}${typeAnn}`;
618
+ if (isExprObject(rawDefault))
619
+ return `${pname}${optional}${typeAnn} = ${rawDefault.code}`;
620
+ return `${pname}${optional}${typeAnn} = ${rawDefault}`;
621
+ })
622
+ .join(', ');
623
+ }
624
+ /**
625
+ * Slice 3c — unified TS parameter-list emitter for any callable IR node.
626
+ *
627
+ * Reads the node's `param` children first (canonical, ValueIR-routed). If
628
+ * none, falls back to the legacy `params="..."` string. If neither, returns
629
+ * the fallback (default empty).
630
+ *
631
+ * Children win when present. Mixed mode is intentionally unsupported — a
632
+ * signature is either fully-structured-children or fully-legacy-string.
633
+ * Producers (importer, migrate-class-body) emit children all-or-nothing
634
+ * per signature; consumers don't need to reconcile partial states.
635
+ */
636
+ export function emitParamList(node, options) {
637
+ const paramChildren = kids(node, 'param');
638
+ if (paramChildren.length > 0) {
639
+ return parseParamListFromChildren(paramChildren, options);
640
+ }
641
+ const params = p(node).params ?? '';
642
+ if (params)
643
+ return parseParamList(params, options);
644
+ return options?.fallback ?? '';
645
+ }
273
646
  //# sourceMappingURL=type-system.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-system.js","sourceRoot":"","sources":["../../src/codegen/type-system.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-system.js","sourceRoot":"","sources":["../../src/codegen/type-system.ts"],"names":[],"mappings":"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"}