@kernlang/core 3.1.5 → 3.1.7

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 (112) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +5 -2
  3. package/dist/codegen/data-layer.d.ts +12 -0
  4. package/dist/codegen/data-layer.js +291 -0
  5. package/dist/codegen/data-layer.js.map +1 -0
  6. package/dist/codegen/emitters.js +1 -4
  7. package/dist/codegen/emitters.js.map +1 -1
  8. package/dist/codegen/events.d.ts +9 -0
  9. package/dist/codegen/events.js +169 -0
  10. package/dist/codegen/events.js.map +1 -0
  11. package/dist/codegen/functions.d.ts +8 -0
  12. package/dist/codegen/functions.js +149 -0
  13. package/dist/codegen/functions.js.map +1 -0
  14. package/dist/codegen/ground-layer.d.ts +22 -0
  15. package/dist/codegen/ground-layer.js +321 -0
  16. package/dist/codegen/ground-layer.js.map +1 -0
  17. package/dist/codegen/helpers.d.ts +2 -0
  18. package/dist/codegen/helpers.js +19 -7
  19. package/dist/codegen/helpers.js.map +1 -1
  20. package/dist/codegen/machines.d.ts +9 -0
  21. package/dist/codegen/machines.js +129 -0
  22. package/dist/codegen/machines.js.map +1 -0
  23. package/dist/codegen/modules.d.ts +10 -0
  24. package/dist/codegen/modules.js +43 -0
  25. package/dist/codegen/modules.js.map +1 -0
  26. package/dist/codegen/screens.d.ts +29 -0
  27. package/dist/codegen/screens.js +202 -0
  28. package/dist/codegen/screens.js.map +1 -0
  29. package/dist/codegen/semantic-types.d.ts +14 -0
  30. package/dist/codegen/semantic-types.js +31 -0
  31. package/dist/codegen/semantic-types.js.map +1 -0
  32. package/dist/codegen/test-gen.d.ts +7 -0
  33. package/dist/codegen/test-gen.js +56 -0
  34. package/dist/codegen/test-gen.js.map +1 -0
  35. package/dist/codegen/type-system.d.ts +11 -0
  36. package/dist/codegen/type-system.js +171 -0
  37. package/dist/codegen/type-system.js.map +1 -0
  38. package/dist/codegen-core.d.ts +30 -36
  39. package/dist/codegen-core.js +258 -1459
  40. package/dist/codegen-core.js.map +1 -1
  41. package/dist/concepts.js.map +1 -1
  42. package/dist/config.d.ts +20 -1
  43. package/dist/config.js +36 -3
  44. package/dist/config.js.map +1 -1
  45. package/dist/coverage-gap.js +9 -5
  46. package/dist/coverage-gap.js.map +1 -1
  47. package/dist/decompiler.d.ts +10 -1
  48. package/dist/decompiler.js +21 -4
  49. package/dist/decompiler.js.map +1 -1
  50. package/dist/errors.d.ts +5 -0
  51. package/dist/errors.js +11 -1
  52. package/dist/errors.js.map +1 -1
  53. package/dist/index.d.ts +33 -28
  54. package/dist/index.js +40 -35
  55. package/dist/index.js.map +1 -1
  56. package/dist/node-props.d.ts +255 -0
  57. package/dist/node-props.js +35 -0
  58. package/dist/node-props.js.map +1 -0
  59. package/dist/parser-core.d.ts +5 -0
  60. package/dist/parser-core.js +364 -0
  61. package/dist/parser-core.js.map +1 -0
  62. package/dist/parser-diagnostics.d.ts +14 -0
  63. package/dist/parser-diagnostics.js +32 -0
  64. package/dist/parser-diagnostics.js.map +1 -0
  65. package/dist/parser-keywords.d.ts +5 -0
  66. package/dist/parser-keywords.js +203 -0
  67. package/dist/parser-keywords.js.map +1 -0
  68. package/dist/parser-style.d.ts +3 -0
  69. package/dist/parser-style.js +73 -0
  70. package/dist/parser-style.js.map +1 -0
  71. package/dist/parser-token-stream.d.ts +27 -0
  72. package/dist/parser-token-stream.js +81 -0
  73. package/dist/parser-token-stream.js.map +1 -0
  74. package/dist/parser-tokenizer.d.ts +11 -0
  75. package/dist/parser-tokenizer.js +188 -0
  76. package/dist/parser-tokenizer.js.map +1 -0
  77. package/dist/parser.d.ts +61 -14
  78. package/dist/parser.js +65 -865
  79. package/dist/parser.js.map +1 -1
  80. package/dist/scanner.js +85 -25
  81. package/dist/scanner.js.map +1 -1
  82. package/dist/schema.d.ts +7 -2
  83. package/dist/schema.js +7 -2
  84. package/dist/schema.js.map +1 -1
  85. package/dist/source-map.d.ts +27 -0
  86. package/dist/source-map.js +82 -0
  87. package/dist/source-map.js.map +1 -0
  88. package/dist/spec.d.ts +1 -1
  89. package/dist/spec.js +197 -55
  90. package/dist/spec.js.map +1 -1
  91. package/dist/styles-react.js +1 -1
  92. package/dist/styles-react.js.map +1 -1
  93. package/dist/styles-tailwind.d.ts +10 -0
  94. package/dist/styles-tailwind.js +62 -15
  95. package/dist/styles-tailwind.js.map +1 -1
  96. package/dist/template-catalog.js +1 -1
  97. package/dist/template-catalog.js.map +1 -1
  98. package/dist/template-engine.d.ts +11 -6
  99. package/dist/template-engine.js +20 -12
  100. package/dist/template-engine.js.map +1 -1
  101. package/dist/types.d.ts +8 -3
  102. package/dist/utils.d.ts +21 -1
  103. package/dist/utils.js +29 -5
  104. package/dist/utils.js.map +1 -1
  105. package/dist/version-adapters.js +1 -2
  106. package/dist/version-adapters.js.map +1 -1
  107. package/dist/version-detect.js +3 -3
  108. package/dist/version-detect.js.map +1 -1
  109. package/dist/walk.d.ts +40 -0
  110. package/dist/walk.js +111 -0
  111. package/dist/walk.js.map +1 -0
  112. package/package.json +2 -2
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Type System Generators — type, interface, union, service, const.
3
+ *
4
+ * Extracted from codegen-core.ts for modular codegen architecture.
5
+ */
6
+ import { propsOf } from '../node-props.js';
7
+ import { emitIdentifier, emitTemplateSafe, emitTypeAnnotation } from './emitters.js';
8
+ import { exportPrefix, getChildren, getFirstChild, getProps, handlerCode, parseParamList } from './helpers.js';
9
+ const p = getProps;
10
+ const kids = getChildren;
11
+ const firstChild = getFirstChild;
12
+ // ── Type Alias ───────────────────────────────────────────────────────────
13
+ // type name=PlanState values="draft|approved|running|paused|completed|failed|cancelled"
14
+ // → export type PlanState = 'draft' | 'approved' | 'running' | ...;
15
+ export function generateType(node) {
16
+ const props = propsOf(node);
17
+ const name = emitIdentifier(props.name, 'UnknownType', node);
18
+ const { values, alias } = props;
19
+ const exp = exportPrefix(node);
20
+ if (values) {
21
+ const members = values
22
+ .split('|')
23
+ .map((v) => `'${emitTemplateSafe(v.trim())}'`)
24
+ .join(' | ');
25
+ return [`${exp}type ${name} = ${members};`];
26
+ }
27
+ if (alias) {
28
+ return [`${exp}type ${name} = ${emitTypeAnnotation(alias, 'unknown', node)};`];
29
+ }
30
+ return [`${exp}type ${name} = unknown;`];
31
+ }
32
+ // ── Interface ────────────────────────────────────────────────────────────
33
+ export function generateInterface(node) {
34
+ const props = propsOf(node);
35
+ const name = emitIdentifier(props.name, 'UnknownInterface', node);
36
+ const ext = props.extends ? ` extends ${emitTypeAnnotation(props.extends, 'unknown', node)}` : '';
37
+ const exp = exportPrefix(node);
38
+ const lines = [];
39
+ lines.push(`${exp}interface ${name}${ext} {`);
40
+ for (const field of kids(node, 'field')) {
41
+ const fp = propsOf(field);
42
+ const fieldName = emitIdentifier(fp.name, 'field', field);
43
+ const opt = fp.optional === 'true' || fp.optional === true ? '?' : '';
44
+ lines.push(` ${fieldName}${opt}: ${emitTypeAnnotation(fp.type, 'unknown', field)};`);
45
+ }
46
+ lines.push('}');
47
+ return lines;
48
+ }
49
+ // ── Discriminated Union ──────────────────────────────────────────────────
50
+ export function generateUnion(node) {
51
+ const props = propsOf(node);
52
+ const name = emitIdentifier(props.name, 'UnknownUnion', node);
53
+ const discriminant = emitIdentifier(props.discriminant, 'type', node);
54
+ const exp = exportPrefix(node);
55
+ const variants = kids(node, 'variant');
56
+ if (variants.length === 0) {
57
+ return [`${exp}type ${name} = never;`];
58
+ }
59
+ const lines = [`${exp}type ${name} =`];
60
+ for (let i = 0; i < variants.length; i++) {
61
+ const vp = propsOf(variants[i]);
62
+ const vname = emitTemplateSafe(vp.name ?? 'variant');
63
+ const fields = kids(variants[i], 'field');
64
+ const fieldParts = [`${discriminant}: '${emitTemplateSafe(vname)}'`];
65
+ for (const field of fields) {
66
+ const fp = propsOf(field);
67
+ const opt = fp.optional === 'true' || fp.optional === true ? '?' : '';
68
+ fieldParts.push(`${emitIdentifier(fp.name, 'field', field)}${opt}: ${emitTypeAnnotation(fp.type, 'unknown', field)}`);
69
+ }
70
+ const semi = i === variants.length - 1 ? ';' : '';
71
+ lines.push(` | { ${fieldParts.join('; ')} }${semi}`);
72
+ }
73
+ return lines;
74
+ }
75
+ // ── Service (Class) ─────────────────────────────────────────────────────
76
+ export function generateService(node) {
77
+ const props = propsOf(node);
78
+ const name = emitIdentifier(props.name, 'UnknownService', node);
79
+ const impl = props.implements;
80
+ const exp = exportPrefix(node);
81
+ const lines = [];
82
+ const implClause = impl ? ` implements ${emitTypeAnnotation(impl, 'unknown', node)}` : '';
83
+ lines.push(`${exp}class ${name}${implClause} {`);
84
+ // Fields
85
+ for (const field of kids(node, 'field')) {
86
+ const fp = propsOf(field);
87
+ const fieldName = emitIdentifier(fp.name, 'field', field);
88
+ const vis = fp.private === 'true' || fp.private === true ? 'private ' : '';
89
+ const readonly = fp.readonly === 'true' || fp.readonly === true
90
+ ? 'readonly '
91
+ : '';
92
+ const typeAnnotation = fp.type ? `: ${emitTypeAnnotation(fp.type, 'unknown', field)}` : '';
93
+ const defaultVal = fp.default;
94
+ // default values are by-design raw code (escape hatch) — documented, not sanitized
95
+ const init = defaultVal !== undefined ? ` = ${defaultVal}` : '';
96
+ lines.push(` ${vis}${readonly}${fieldName}${typeAnnotation}${init};`);
97
+ }
98
+ // Constructor (if any constructor child exists)
99
+ const ctorNode = firstChild(node, 'constructor');
100
+ if (ctorNode) {
101
+ const ctorProps = p(ctorNode);
102
+ const ctorParams = ctorProps.params ? parseParamList(ctorProps.params) : '';
103
+ const ctorCode = handlerCode(ctorNode);
104
+ lines.push('');
105
+ lines.push(` constructor(${ctorParams}) {`);
106
+ if (ctorCode) {
107
+ for (const line of ctorCode.split('\n')) {
108
+ lines.push(` ${line}`);
109
+ }
110
+ }
111
+ lines.push(' }');
112
+ }
113
+ // Methods
114
+ for (const method of kids(node, 'method')) {
115
+ const mp = propsOf(method);
116
+ const mname = emitIdentifier(mp.name, 'method', method);
117
+ const mparams = mp.params ? parseParamList(mp.params) : '';
118
+ const isAsync = mp.async === 'true' || mp.async === true;
119
+ const isStream = mp.stream === 'true' || mp.stream === true;
120
+ const isStatic = mp.static === 'true' || mp.static === true;
121
+ const vis = mp.private === 'true' || mp.private === true
122
+ ? 'private '
123
+ : '';
124
+ const staticKw = isStatic ? 'static ' : '';
125
+ const star = isStream ? '*' : '';
126
+ const asyncKw = isAsync || isStream ? 'async ' : '';
127
+ const mcode = handlerCode(method);
128
+ // stream=true → AsyncGenerator return type
129
+ const mreturns = isStream
130
+ ? `: AsyncGenerator<${emitTypeAnnotation(mp.returns, 'unknown', method)}>`
131
+ : mp.returns
132
+ ? `: ${emitTypeAnnotation(mp.returns, 'unknown', method)}`
133
+ : '';
134
+ lines.push('');
135
+ lines.push(` ${vis}${staticKw}${asyncKw}${star}${mname}(${mparams})${mreturns} {`);
136
+ if (mcode) {
137
+ for (const line of mcode.split('\n')) {
138
+ lines.push(` ${line}`);
139
+ }
140
+ }
141
+ lines.push(' }');
142
+ }
143
+ lines.push('}');
144
+ // Singleton instances
145
+ for (const singleton of kids(node, 'singleton')) {
146
+ const sp = p(singleton);
147
+ const sname = emitIdentifier(sp.name, 'instance', singleton);
148
+ const stype = emitIdentifier(sp.type, name, singleton);
149
+ lines.push('');
150
+ lines.push(`${exp}const ${sname} = new ${stype}();`);
151
+ }
152
+ return lines;
153
+ }
154
+ // ── Const ───────────────────────────────────────────────────────────────
155
+ export function generateConst(node) {
156
+ const props = propsOf(node);
157
+ const name = emitIdentifier(props.name, 'unknownConst', node);
158
+ const constType = props.type;
159
+ const value = props.value;
160
+ const exp = exportPrefix(node);
161
+ const code = handlerCode(node);
162
+ const typeAnnotation = constType ? `: ${emitTypeAnnotation(constType, 'unknown', node)}` : '';
163
+ if (code) {
164
+ return [`${exp}const ${name}${typeAnnotation} = ${code.trim()};`];
165
+ }
166
+ if (value) {
167
+ return [`${exp}const ${name}${typeAnnotation} = ${value};`];
168
+ }
169
+ return [`${exp}const ${name}${typeAnnotation};`];
170
+ }
171
+ //# sourceMappingURL=type-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-system.js","sourceRoot":"","sources":["../../src/codegen/type-system.ts"],"names":[],"mappings":"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"}
@@ -5,11 +5,26 @@
5
5
  * These are target-agnostic — they compile to TypeScript regardless of target.
6
6
  *
7
7
  * Machine nodes are KERN's killer feature: 12 lines of KERN → 140+ lines of TS.
8
+ *
9
+ * Generator implementations are split into domain modules under codegen/.
10
+ * This file is the thin dispatcher: imports, re-exports, and generateCoreNode switch.
11
+ * Generators that call generateCoreNode recursively remain here to avoid circular imports.
8
12
  */
9
- import type { IRNode } from './types.js';
10
13
  import { type KernRuntime } from './runtime.js';
11
- export { emitIdentifier, emitStringLiteral, emitPath, emitTemplateSafe, emitTypeAnnotation, emitImportSpecifier } from './codegen/emitters.js';
12
- export { getProps, getChildren, getFirstChild, getStyles, getPseudoStyles, getThemeRefs, dedent, cssPropertyName, handlerCode, exportPrefix, capitalize, parseParamList, emitReasonAnnotations, emitLowConfidenceTodo } from './codegen/helpers.js';
14
+ import type { IRNode } from './types.js';
15
+ export { generateCache, generateConfig, generateDependency, generateModel, generateRepository, generateStore, } from './codegen/data-layer.js';
16
+ export { emitIdentifier, emitImportSpecifier, emitPath, emitStringLiteral, emitTemplateSafe, emitTypeAnnotation, } from './codegen/emitters.js';
17
+ export { generateEvent, generateOn, generateWebSocket } from './codegen/events.js';
18
+ export { generateError, generateFunction } from './codegen/functions.js';
19
+ export { generateAction, generateApply, generateAssume, generateCollect, generateDerive, generateExpect, generateGuard, generateInvariant, generatePattern, generateRecover, generateResolve, generateTransform, } from './codegen/ground-layer.js';
20
+ export { capitalize, cssPropertyName, dedent, emitLowConfidenceTodo, emitReasonAnnotations, exportPrefix, getChildren, getFirstChild, getProps, getPseudoStyles, getStyles, getThemeRefs, handlerCode, parseParamList, sourceComment, } from './codegen/helpers.js';
21
+ export { generateMachine, generateMachineReducer } from './codegen/machines.js';
22
+ export { generateImport } from './codegen/modules.js';
23
+ export { generateScreen } from './codegen/screens.js';
24
+ export type { SemanticTypeMapping } from './codegen/semantic-types.js';
25
+ export { mapSemanticType, SEMANTIC_TYPE_MAP } from './codegen/semantic-types.js';
26
+ export { generateTest } from './codegen/test-gen.js';
27
+ export { generateConst, generateInterface, generateService, generateType, generateUnion, } from './codegen/type-system.js';
13
28
  /** Register an evolved generator (called at startup). */
14
29
  export declare function registerEvolvedGenerator(keyword: string, fn: (node: IRNode) => string[]): void;
15
30
  /** Register a target-specific evolved generator (called at startup). */
@@ -20,45 +35,24 @@ export declare function unregisterEvolvedGenerator(keyword: string): void;
20
35
  export declare function clearEvolvedGenerators(): void;
21
36
  /** Check if an evolved generator exists for a type. */
22
37
  export declare function hasEvolvedGenerator(type: string): boolean;
23
- export declare function generateType(node: IRNode): string[];
24
- export declare function generateInterface(node: IRNode): string[];
25
- export declare function generateUnion(node: IRNode): string[];
26
- export declare function generateService(node: IRNode): string[];
27
- export declare function generateFunction(node: IRNode): string[];
28
- export declare function generateError(node: IRNode): string[];
29
- export declare function generateMachine(node: IRNode): string[];
30
- export declare function generateMachineReducer(node: IRNode): string[];
31
- export declare function generateConfig(node: IRNode): string[];
32
- export declare function generateStore(node: IRNode): string[];
33
- export declare function generateTest(node: IRNode): string[];
34
- export declare function generateEvent(node: IRNode): string[];
35
- export declare function generateOn(node: IRNode): string[];
36
- export declare function generateWebSocket(node: IRNode): string[];
37
38
  export declare function generateModule(node: IRNode): string[];
38
- export declare function generateImport(node: IRNode): string[];
39
- export declare function generateConst(node: IRNode): string[];
40
- export declare function generateDerive(node: IRNode): string[];
41
- export declare function generateTransform(node: IRNode): string[];
42
- export declare function generateAction(node: IRNode): string[];
43
- export declare function generateGuard(node: IRNode): string[];
44
- export declare function generateAssume(node: IRNode): string[];
45
- export declare function generateInvariant(node: IRNode): string[];
46
39
  export declare function generateEach(node: IRNode): string[];
47
- export declare function generateCollect(node: IRNode): string[];
48
40
  export declare function generateBranch(node: IRNode): string[];
49
- export declare function generateResolve(node: IRNode): string[];
50
- export declare function generateExpect(node: IRNode): string[];
51
- export declare function generateRecover(node: IRNode): string[];
52
- export declare function generatePattern(node: IRNode): string[];
53
- export declare function generateApply(node: IRNode, _depth?: number): string[];
54
41
  export declare function generateConditional(node: IRNode): string[];
55
42
  export declare function generateSelect(node: IRNode): string[];
56
- export declare function generateModel(node: IRNode): string[];
57
- export declare function generateRepository(node: IRNode): string[];
58
- export declare function generateDependency(node: IRNode): string[];
59
- export declare function generateCache(node: IRNode): string[];
60
43
  export declare const CORE_NODE_TYPES: Set<string>;
61
44
  /** Check if a node type is a core language construct. */
62
45
  export declare function isCoreNode(type: string): boolean;
63
- /** Generate TypeScript for any core language node. */
46
+ /**
47
+ * Generate TypeScript lines for a core IR node (type system, functions, machines, etc.).
48
+ *
49
+ * Returns an empty array if the node type is unknown and no evolved generator is registered.
50
+ * Template nodes are expanded automatically via the template engine.
51
+ *
52
+ * @param node - The IR node to generate code for
53
+ * @param target - Optional target hint (e.g., `'ink'` for machine → useReducer)
54
+ * @param runtime - Optional KernRuntime instance
55
+ * @returns Array of TypeScript source lines
56
+ * @throws {KernCodegenError} For nodes with invalid/missing required props
57
+ */
64
58
  export declare function generateCoreNode(node: IRNode, target?: string, runtime?: KernRuntime): string[];