@kernlang/core 3.1.6 → 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.
- package/dist/codegen/data-layer.js +23 -24
- package/dist/codegen/data-layer.js.map +1 -1
- package/dist/codegen/emitters.js +1 -4
- package/dist/codegen/emitters.js.map +1 -1
- package/dist/codegen/events.js +28 -17
- package/dist/codegen/events.js.map +1 -1
- package/dist/codegen/functions.js +5 -3
- package/dist/codegen/functions.js.map +1 -1
- package/dist/codegen/ground-layer.js +9 -5
- package/dist/codegen/ground-layer.js.map +1 -1
- package/dist/codegen/helpers.d.ts +2 -0
- package/dist/codegen/helpers.js +19 -7
- package/dist/codegen/helpers.js.map +1 -1
- package/dist/codegen/machines.js +13 -11
- package/dist/codegen/machines.js.map +1 -1
- package/dist/codegen/modules.js +5 -2
- package/dist/codegen/modules.js.map +1 -1
- package/dist/codegen/screens.d.ts +29 -0
- package/dist/codegen/screens.js +202 -0
- package/dist/codegen/screens.js.map +1 -0
- package/dist/codegen/semantic-types.js.map +1 -1
- package/dist/codegen/test-gen.js +1 -1
- package/dist/codegen/test-gen.js.map +1 -1
- package/dist/codegen/type-system.js +16 -7
- package/dist/codegen/type-system.js.map +1 -1
- package/dist/codegen-core.d.ts +11 -10
- package/dist/codegen-core.js +216 -108
- package/dist/codegen-core.js.map +1 -1
- package/dist/concepts.js.map +1 -1
- package/dist/config.js +15 -2
- package/dist/config.js.map +1 -1
- package/dist/coverage-gap.js +5 -5
- package/dist/coverage-gap.js.map +1 -1
- package/dist/decompiler.d.ts +1 -1
- package/dist/decompiler.js +6 -4
- package/dist/decompiler.js.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +32 -34
- package/dist/index.js +37 -38
- package/dist/index.js.map +1 -1
- package/dist/node-props.d.ts +2 -0
- package/dist/node-props.js.map +1 -1
- package/dist/parser-core.d.ts +1 -1
- package/dist/parser-core.js +9 -8
- package/dist/parser-core.js.map +1 -1
- package/dist/parser-diagnostics.d.ts +1 -1
- package/dist/parser-diagnostics.js +3 -2
- package/dist/parser-diagnostics.js.map +1 -1
- package/dist/parser-keywords.d.ts +1 -1
- package/dist/parser-keywords.js +95 -27
- package/dist/parser-keywords.js.map +1 -1
- package/dist/parser-token-stream.js +18 -6
- package/dist/parser-token-stream.js.map +1 -1
- package/dist/parser-tokenizer.js.map +1 -1
- package/dist/parser.d.ts +3 -3
- package/dist/parser.js +15 -4
- package/dist/parser.js.map +1 -1
- package/dist/scanner.js +85 -25
- package/dist/scanner.js.map +1 -1
- package/dist/schema.js.map +1 -1
- package/dist/source-map.js +2 -2
- package/dist/source-map.js.map +1 -1
- package/dist/spec.d.ts +1 -1
- package/dist/spec.js +196 -56
- package/dist/spec.js.map +1 -1
- package/dist/styles-react.js +1 -1
- package/dist/styles-react.js.map +1 -1
- package/dist/styles-tailwind.js +52 -15
- package/dist/styles-tailwind.js.map +1 -1
- package/dist/template-catalog.js +1 -1
- package/dist/template-catalog.js.map +1 -1
- package/dist/template-engine.d.ts +1 -1
- package/dist/template-engine.js +10 -7
- package/dist/template-engine.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +9 -5
- package/dist/utils.js.map +1 -1
- package/dist/version-adapters.js +1 -2
- package/dist/version-adapters.js.map +1 -1
- package/dist/version-detect.js +3 -3
- package/dist/version-detect.js.map +1 -1
- package/dist/walk.js +6 -2
- package/dist/walk.js.map +1 -1
- package/package.json +1 -1
package/dist/codegen/machines.js
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { propsOf } from '../node-props.js';
|
|
8
8
|
import { emitIdentifier, emitTemplateSafe } from './emitters.js';
|
|
9
|
-
import {
|
|
10
|
-
const
|
|
9
|
+
import { exportPrefix, getChildren, getProps, handlerCode } from './helpers.js';
|
|
10
|
+
const _p = getProps;
|
|
11
11
|
const kids = getChildren;
|
|
12
12
|
// ── State Machine ────────────────────────────────────────────────────────
|
|
13
13
|
export function generateMachine(node) {
|
|
@@ -17,13 +17,13 @@ export function generateMachine(node) {
|
|
|
17
17
|
const lines = [];
|
|
18
18
|
// Collect states
|
|
19
19
|
const states = kids(node, 'state');
|
|
20
|
-
const stateNames = states.map(s => {
|
|
20
|
+
const stateNames = states.map((s) => {
|
|
21
21
|
const sp = propsOf(s);
|
|
22
22
|
return emitIdentifier(sp.name || sp.value, 'state', s);
|
|
23
23
|
});
|
|
24
24
|
// State type
|
|
25
25
|
const stateType = `${name}State`;
|
|
26
|
-
lines.push(`${exp}type ${stateType} = ${stateNames.map(s => `'${emitTemplateSafe(s)}'`).join(' | ')};`);
|
|
26
|
+
lines.push(`${exp}type ${stateType} = ${stateNames.map((s) => `'${emitTemplateSafe(s)}'`).join(' | ')};`);
|
|
27
27
|
lines.push('');
|
|
28
28
|
// Error class
|
|
29
29
|
const errorName = `${name}StateError`;
|
|
@@ -45,14 +45,14 @@ export function generateMachine(node) {
|
|
|
45
45
|
const tname = emitIdentifier(tp.name, 'transition', t);
|
|
46
46
|
const from = tp.from || '';
|
|
47
47
|
const to = tp.to || '';
|
|
48
|
-
const fromStates = from.split('|').map(s => s.trim());
|
|
48
|
+
const fromStates = from.split('|').map((s) => s.trim());
|
|
49
49
|
const isMultiFrom = fromStates.length > 1;
|
|
50
50
|
const fnName = `${tname}${name}`;
|
|
51
51
|
const code = handlerCode(t);
|
|
52
52
|
lines.push(`/** ${from} → ${to} */`);
|
|
53
53
|
lines.push(`${exp}function ${fnName}<T extends { state: ${stateType} }>(entity: T): T {`);
|
|
54
54
|
if (isMultiFrom) {
|
|
55
|
-
lines.push(` const validStates: ${stateType}[] = [${fromStates.map(s => `'${s}'`).join(', ')}];`);
|
|
55
|
+
lines.push(` const validStates: ${stateType}[] = [${fromStates.map((s) => `'${s}'`).join(', ')}];`);
|
|
56
56
|
lines.push(` if (!validStates.includes(entity.state)) {`);
|
|
57
57
|
lines.push(` throw new ${errorName}(validStates, entity.state);`);
|
|
58
58
|
lines.push(` }`);
|
|
@@ -87,20 +87,22 @@ export function generateMachineReducer(node) {
|
|
|
87
87
|
lines.push(...generateMachine(node));
|
|
88
88
|
// Collect states + transitions
|
|
89
89
|
const states = kids(node, 'state');
|
|
90
|
-
const stateNames = states.map(s => {
|
|
90
|
+
const stateNames = states.map((s) => {
|
|
91
91
|
const sp = propsOf(s);
|
|
92
92
|
return sp.name || sp.value || '';
|
|
93
93
|
});
|
|
94
|
-
const initialState = states.find(s => {
|
|
94
|
+
const initialState = states.find((s) => {
|
|
95
95
|
const sp = propsOf(s);
|
|
96
96
|
return sp.initial === 'true' || sp.initial === true;
|
|
97
97
|
});
|
|
98
|
-
const initialName = initialState
|
|
98
|
+
const initialName = initialState
|
|
99
|
+
? propsOf(initialState).name || propsOf(initialState).value || ''
|
|
100
|
+
: stateNames[0];
|
|
99
101
|
const transitions = kids(node, 'transition');
|
|
100
102
|
const stateType = `${name}State`;
|
|
101
103
|
// Action type union
|
|
102
|
-
const actionNames = transitions.map(t => emitIdentifier(propsOf(t).name, 'action', t));
|
|
103
|
-
lines.push(`${exp}type ${name}Action = ${actionNames.map(a => `'${a}'`).join(' | ')};`);
|
|
104
|
+
const actionNames = transitions.map((t) => emitIdentifier(propsOf(t).name, 'action', t));
|
|
105
|
+
lines.push(`${exp}type ${name}Action = ${actionNames.map((a) => `'${a}'`).join(' | ')};`);
|
|
104
106
|
lines.push('');
|
|
105
107
|
// Reducer function
|
|
106
108
|
lines.push(`${exp}function ${name.charAt(0).toLowerCase() + name.slice(1)}Reducer(state: ${stateType}, action: ${name}Action): ${stateType} {`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machines.js","sourceRoot":"","sources":["../../src/codegen/machines.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"machines.js","sourceRoot":"","sources":["../../src/codegen/machines.ts"],"names":[],"mappings":"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"}
|
package/dist/codegen/modules.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import { propsOf } from '../node-props.js';
|
|
10
10
|
import { emitIdentifier, emitImportSpecifier } from './emitters.js';
|
|
11
11
|
import { getProps } from './helpers.js';
|
|
12
|
-
const
|
|
12
|
+
const _p = getProps;
|
|
13
13
|
// ── Import ──────────────────────────────────────────────────────────────
|
|
14
14
|
export function generateImport(node) {
|
|
15
15
|
const props = propsOf(node);
|
|
@@ -23,7 +23,10 @@ export function generateImport(node) {
|
|
|
23
23
|
const typeKw = isTypeOnly ? 'type ' : '';
|
|
24
24
|
const safeDefault = defaultImport ? emitIdentifier(defaultImport, 'default', node) : '';
|
|
25
25
|
const namedList = names
|
|
26
|
-
? names
|
|
26
|
+
? names
|
|
27
|
+
.split(',')
|
|
28
|
+
.map((s) => emitIdentifier(s.trim(), 'import', node))
|
|
29
|
+
.join(', ')
|
|
27
30
|
: '';
|
|
28
31
|
if (safeDefault && namedList) {
|
|
29
32
|
return [`import ${typeKw}${safeDefault}, { ${namedList} } from '${safePath}';`];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../src/codegen/modules.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../src/codegen/modules.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,EAAE,GAAG,QAAQ,CAAC;AAEpB,2EAA2E;AAE3E,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,OAAO,CAAW,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;IAElE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,MAAM,SAAS,GAAG,KAAK;QACrB,CAAC,CAAC,KAAK;aACF,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;aACpD,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,UAAU,MAAM,GAAG,WAAW,OAAO,SAAS,YAAY,QAAQ,IAAI,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,UAAU,MAAM,GAAG,WAAW,UAAU,QAAQ,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,UAAU,MAAM,KAAK,SAAS,YAAY,QAAQ,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,qBAAqB;IACrB,OAAO,CAAC,WAAW,QAAQ,IAAI,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Screen codegen — generates React/Ink components from KERN `screen` nodes.
|
|
3
|
+
*
|
|
4
|
+
* KERN syntax:
|
|
5
|
+
* screen name=MyComponent target=ink
|
|
6
|
+
* prop name=title type=string
|
|
7
|
+
* prop name=count type=number optional=true
|
|
8
|
+
* state name=value type=string initial="''"
|
|
9
|
+
* state name=open type=boolean initial="false"
|
|
10
|
+
* effect <<<
|
|
11
|
+
* // useEffect body
|
|
12
|
+
* >>>
|
|
13
|
+
* render <<<
|
|
14
|
+
* <Box><Text>{title}</Text></Box>
|
|
15
|
+
* >>>
|
|
16
|
+
*
|
|
17
|
+
* Generates:
|
|
18
|
+
* import React, { useState, useEffect, useCallback, useRef } from 'react';
|
|
19
|
+
* import { Box, Text, useInput, useApp } from 'ink';
|
|
20
|
+
*
|
|
21
|
+
* export function MyComponent({ title, count }: { title: string; count?: number }) {
|
|
22
|
+
* const [value, setValue] = useState('');
|
|
23
|
+
* const [open, setOpen] = useState(false);
|
|
24
|
+
* useEffect(() => { ... }, []);
|
|
25
|
+
* return (<Box><Text>{title}</Text></Box>);
|
|
26
|
+
* }
|
|
27
|
+
*/
|
|
28
|
+
import type { IRNode } from '../types.js';
|
|
29
|
+
export declare function generateScreen(node: IRNode): string[];
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Screen codegen — generates React/Ink components from KERN `screen` nodes.
|
|
3
|
+
*
|
|
4
|
+
* KERN syntax:
|
|
5
|
+
* screen name=MyComponent target=ink
|
|
6
|
+
* prop name=title type=string
|
|
7
|
+
* prop name=count type=number optional=true
|
|
8
|
+
* state name=value type=string initial="''"
|
|
9
|
+
* state name=open type=boolean initial="false"
|
|
10
|
+
* effect <<<
|
|
11
|
+
* // useEffect body
|
|
12
|
+
* >>>
|
|
13
|
+
* render <<<
|
|
14
|
+
* <Box><Text>{title}</Text></Box>
|
|
15
|
+
* >>>
|
|
16
|
+
*
|
|
17
|
+
* Generates:
|
|
18
|
+
* import React, { useState, useEffect, useCallback, useRef } from 'react';
|
|
19
|
+
* import { Box, Text, useInput, useApp } from 'ink';
|
|
20
|
+
*
|
|
21
|
+
* export function MyComponent({ title, count }: { title: string; count?: number }) {
|
|
22
|
+
* const [value, setValue] = useState('');
|
|
23
|
+
* const [open, setOpen] = useState(false);
|
|
24
|
+
* useEffect(() => { ... }, []);
|
|
25
|
+
* return (<Box><Text>{title}</Text></Box>);
|
|
26
|
+
* }
|
|
27
|
+
*/
|
|
28
|
+
import { emitIdentifier } from './emitters.js';
|
|
29
|
+
import { exportPrefix, getChildren, getFirstChild, getProps } from './helpers.js';
|
|
30
|
+
function propsOf(node) {
|
|
31
|
+
return node.props || {};
|
|
32
|
+
}
|
|
33
|
+
function handlerContent(node) {
|
|
34
|
+
const handler = getChildren(node, 'handler')[0];
|
|
35
|
+
if (handler) {
|
|
36
|
+
const hp = propsOf(handler);
|
|
37
|
+
return hp.code || hp.body || '';
|
|
38
|
+
}
|
|
39
|
+
// Check for inline body/code prop
|
|
40
|
+
const p = propsOf(node);
|
|
41
|
+
return p.code || p.body || '';
|
|
42
|
+
}
|
|
43
|
+
export function generateScreen(node) {
|
|
44
|
+
const props = getProps(node);
|
|
45
|
+
const name = emitIdentifier(props.name, 'UnnamedScreen', node);
|
|
46
|
+
const _target = props.target || 'ink';
|
|
47
|
+
const exp = exportPrefix(node);
|
|
48
|
+
const lines = [];
|
|
49
|
+
// Collect children
|
|
50
|
+
const propNodes = getChildren(node, 'prop');
|
|
51
|
+
const stateNodes = getChildren(node, 'state');
|
|
52
|
+
const effectNodes = getChildren(node, 'effect');
|
|
53
|
+
const renderNode = getFirstChild(node, 'render');
|
|
54
|
+
const callbackNodes = getChildren(node, 'callback');
|
|
55
|
+
const memoNodes = getChildren(node, 'memo');
|
|
56
|
+
const refNodes = getChildren(node, 'ref');
|
|
57
|
+
const onInputNodes = getChildren(node, 'on').filter((n) => {
|
|
58
|
+
const p = propsOf(n);
|
|
59
|
+
return p.event === 'input';
|
|
60
|
+
});
|
|
61
|
+
// Determine which React hooks are needed
|
|
62
|
+
const needsState = stateNodes.length > 0;
|
|
63
|
+
const needsEffect = effectNodes.length > 0;
|
|
64
|
+
const needsCallback = callbackNodes.length > 0;
|
|
65
|
+
const needsMemo = memoNodes.length > 0;
|
|
66
|
+
const needsRef = refNodes.length > 0 || onInputNodes.length > 0;
|
|
67
|
+
// Imports
|
|
68
|
+
const reactImports = ['React'];
|
|
69
|
+
if (needsState)
|
|
70
|
+
reactImports.push('useState');
|
|
71
|
+
if (needsEffect)
|
|
72
|
+
reactImports.push('useEffect');
|
|
73
|
+
if (needsCallback)
|
|
74
|
+
reactImports.push('useCallback');
|
|
75
|
+
if (needsMemo)
|
|
76
|
+
reactImports.push('useMemo');
|
|
77
|
+
if (needsRef)
|
|
78
|
+
reactImports.push('useRef');
|
|
79
|
+
// Don't emit imports here — KERN import nodes at file level handle React/Ink imports.
|
|
80
|
+
// Screen codegen only emits the component function. This avoids duplicate imports
|
|
81
|
+
// when multiple screens are in one file.
|
|
82
|
+
//
|
|
83
|
+
// Files MUST have: import from="ink" names="Box,Text"
|
|
84
|
+
// If hooks are used, the file needs: import from="react" names="React,useState,useEffect,..."
|
|
85
|
+
lines.push('');
|
|
86
|
+
// Parse props
|
|
87
|
+
const componentProps = propNodes.map((n) => {
|
|
88
|
+
const p = propsOf(n);
|
|
89
|
+
return {
|
|
90
|
+
name: emitIdentifier(p.name, 'unknown', n),
|
|
91
|
+
type: p.type || 'any',
|
|
92
|
+
optional: p.optional === true || p.optional === 'true',
|
|
93
|
+
default: p.default,
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
// Props type
|
|
97
|
+
const propsTypeEntries = componentProps.map((p) => `${p.name}${p.optional ? '?' : ''}: ${p.type}`).join('; ');
|
|
98
|
+
// Destructure with defaults
|
|
99
|
+
const destructure = componentProps.map((p) => (p.default ? `${p.name} = ${p.default}` : p.name)).join(', ');
|
|
100
|
+
// Function signature
|
|
101
|
+
lines.push(`${exp}function ${name}({ ${destructure} }: { ${propsTypeEntries} }) {`);
|
|
102
|
+
// State declarations
|
|
103
|
+
for (const sn of stateNodes) {
|
|
104
|
+
const sp = propsOf(sn);
|
|
105
|
+
const sName = emitIdentifier(sp.name, 'state', sn);
|
|
106
|
+
const sType = sp.type || 'any';
|
|
107
|
+
const sInitial = sp.initial || 'undefined';
|
|
108
|
+
const setter = `set${sName.charAt(0).toUpperCase()}${sName.slice(1)}`;
|
|
109
|
+
lines.push(` const [${sName}, ${setter}] = useState<${sType}>(${sInitial});`);
|
|
110
|
+
}
|
|
111
|
+
// Ref declarations
|
|
112
|
+
for (const rn of refNodes) {
|
|
113
|
+
const rp = propsOf(rn);
|
|
114
|
+
const rName = emitIdentifier(rp.name, 'ref', rn);
|
|
115
|
+
const rType = rp.type || 'any';
|
|
116
|
+
const rInitial = rp.initial || 'null';
|
|
117
|
+
lines.push(` const ${rName} = useRef<${rType}>(${rInitial});`);
|
|
118
|
+
}
|
|
119
|
+
if (stateNodes.length > 0 || refNodes.length > 0)
|
|
120
|
+
lines.push('');
|
|
121
|
+
// Memos
|
|
122
|
+
for (const mn of memoNodes) {
|
|
123
|
+
const mp = propsOf(mn);
|
|
124
|
+
const mName = emitIdentifier(mp.name, 'memo', mn);
|
|
125
|
+
const mDeps = mp.deps || '';
|
|
126
|
+
const mDepsArr = mDeps && mDeps !== '[]' ? `[${mDeps}]` : '[]';
|
|
127
|
+
const body = handlerContent(mn);
|
|
128
|
+
lines.push(` const ${mName} = useMemo(() => {`);
|
|
129
|
+
for (const line of body.split('\n')) {
|
|
130
|
+
lines.push(` ${line}`);
|
|
131
|
+
}
|
|
132
|
+
lines.push(` }, ${mDepsArr});`);
|
|
133
|
+
lines.push('');
|
|
134
|
+
}
|
|
135
|
+
// Callbacks
|
|
136
|
+
for (const cn of callbackNodes) {
|
|
137
|
+
const cp = propsOf(cn);
|
|
138
|
+
const cName = emitIdentifier(cp.name, 'handler', cn);
|
|
139
|
+
const cParams = cp.params || '';
|
|
140
|
+
const cDeps = cp.deps || '';
|
|
141
|
+
const cDepsArr = cDeps && cDeps !== '[]' ? `[${cDeps}]` : '[]';
|
|
142
|
+
const isAsync = cp.async === true || cp.async === 'true';
|
|
143
|
+
const body = handlerContent(cn);
|
|
144
|
+
lines.push(` const ${cName} = useCallback(${isAsync ? 'async ' : ''}${cParams ? `(${cParams})` : '()'} => {`);
|
|
145
|
+
for (const line of body.split('\n')) {
|
|
146
|
+
lines.push(` ${line}`);
|
|
147
|
+
}
|
|
148
|
+
lines.push(` }, ${cDepsArr});`);
|
|
149
|
+
lines.push('');
|
|
150
|
+
}
|
|
151
|
+
// Effects
|
|
152
|
+
for (const en of effectNodes) {
|
|
153
|
+
const ep = propsOf(en);
|
|
154
|
+
const eDeps = ep.deps || '';
|
|
155
|
+
const eDepsArr = eDeps && eDeps !== '[]' ? `[${eDeps}]` : '[]';
|
|
156
|
+
const body = handlerContent(en);
|
|
157
|
+
lines.push(` useEffect(() => {`);
|
|
158
|
+
for (const line of body.split('\n')) {
|
|
159
|
+
lines.push(` ${line}`);
|
|
160
|
+
}
|
|
161
|
+
lines.push(` }, ${eDepsArr});`);
|
|
162
|
+
lines.push('');
|
|
163
|
+
}
|
|
164
|
+
// useInput handlers (on event=input) — uses ref pattern for fresh closures
|
|
165
|
+
for (const onNode of onInputNodes) {
|
|
166
|
+
const body = handlerContent(onNode);
|
|
167
|
+
lines.push(` const _inputHandlerRef = useRef<(input: string, key: any) => void>(() => {});`);
|
|
168
|
+
lines.push(` _inputHandlerRef.current = (input: string, key: any) => {`);
|
|
169
|
+
for (const line of body.split('\n')) {
|
|
170
|
+
lines.push(` ${line}`);
|
|
171
|
+
}
|
|
172
|
+
lines.push(` };`);
|
|
173
|
+
lines.push(` useInput((input: string, key: any) => _inputHandlerRef.current(input, key));`);
|
|
174
|
+
lines.push('');
|
|
175
|
+
}
|
|
176
|
+
// Render
|
|
177
|
+
if (renderNode) {
|
|
178
|
+
const body = handlerContent(renderNode);
|
|
179
|
+
const trimmed = body.trim();
|
|
180
|
+
// If handler body contains `return`, emit as-is (it manages its own return)
|
|
181
|
+
// Otherwise, wrap in return(...)
|
|
182
|
+
if (trimmed.includes('return ') || trimmed.includes('return(')) {
|
|
183
|
+
for (const line of body.split('\n')) {
|
|
184
|
+
lines.push(` ${line}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
lines.push(` return (`);
|
|
189
|
+
for (const line of body.split('\n')) {
|
|
190
|
+
lines.push(` ${line}`);
|
|
191
|
+
}
|
|
192
|
+
lines.push(` );`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
lines.push(` return null;`);
|
|
197
|
+
}
|
|
198
|
+
lines.push('}');
|
|
199
|
+
lines.push('');
|
|
200
|
+
return lines;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=screens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screens.js","sourceRoot":"","sources":["../../src/codegen/screens.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-types.js","sourceRoot":"","sources":["../../src/codegen/semantic-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,CAAC,MAAM,iBAAiB,GAAwC;IACpE,IAAI,
|
|
1
|
+
{"version":3,"file":"semantic-types.js","sourceRoot":"","sources":["../../src/codegen/semantic-types.ts"],"names":[],"mappings":"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"}
|
package/dist/codegen/test-gen.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { propsOf } from '../node-props.js';
|
|
7
7
|
import { emitTemplateSafe } from './emitters.js';
|
|
8
|
-
import {
|
|
8
|
+
import { getChildren, getProps, handlerCode } from './helpers.js';
|
|
9
9
|
const p = getProps;
|
|
10
10
|
const kids = getChildren;
|
|
11
11
|
// ── Test ─────────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-gen.js","sourceRoot":"","sources":["../../src/codegen/test-gen.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"test-gen.js","sourceRoot":"","sources":["../../src/codegen/test-gen.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { propsOf } from '../node-props.js';
|
|
7
7
|
import { emitIdentifier, emitTemplateSafe, emitTypeAnnotation } from './emitters.js';
|
|
8
|
-
import {
|
|
8
|
+
import { exportPrefix, getChildren, getFirstChild, getProps, handlerCode, parseParamList } from './helpers.js';
|
|
9
9
|
const p = getProps;
|
|
10
10
|
const kids = getChildren;
|
|
11
11
|
const firstChild = getFirstChild;
|
|
@@ -18,7 +18,10 @@ export function generateType(node) {
|
|
|
18
18
|
const { values, alias } = props;
|
|
19
19
|
const exp = exportPrefix(node);
|
|
20
20
|
if (values) {
|
|
21
|
-
const members = values
|
|
21
|
+
const members = values
|
|
22
|
+
.split('|')
|
|
23
|
+
.map((v) => `'${emitTemplateSafe(v.trim())}'`)
|
|
24
|
+
.join(' | ');
|
|
22
25
|
return [`${exp}type ${name} = ${members};`];
|
|
23
26
|
}
|
|
24
27
|
if (alias) {
|
|
@@ -56,7 +59,7 @@ export function generateUnion(node) {
|
|
|
56
59
|
const lines = [`${exp}type ${name} =`];
|
|
57
60
|
for (let i = 0; i < variants.length; i++) {
|
|
58
61
|
const vp = propsOf(variants[i]);
|
|
59
|
-
const vname =
|
|
62
|
+
const vname = emitTemplateSafe(vp.name ?? 'variant');
|
|
60
63
|
const fields = kids(variants[i], 'field');
|
|
61
64
|
const fieldParts = [`${discriminant}: '${emitTemplateSafe(vname)}'`];
|
|
62
65
|
for (const field of fields) {
|
|
@@ -83,7 +86,9 @@ export function generateService(node) {
|
|
|
83
86
|
const fp = propsOf(field);
|
|
84
87
|
const fieldName = emitIdentifier(fp.name, 'field', field);
|
|
85
88
|
const vis = fp.private === 'true' || fp.private === true ? 'private ' : '';
|
|
86
|
-
const readonly = fp.readonly === 'true' || fp.readonly === true
|
|
89
|
+
const readonly = fp.readonly === 'true' || fp.readonly === true
|
|
90
|
+
? 'readonly '
|
|
91
|
+
: '';
|
|
87
92
|
const typeAnnotation = fp.type ? `: ${emitTypeAnnotation(fp.type, 'unknown', field)}` : '';
|
|
88
93
|
const defaultVal = fp.default;
|
|
89
94
|
// default values are by-design raw code (escape hatch) — documented, not sanitized
|
|
@@ -113,15 +118,19 @@ export function generateService(node) {
|
|
|
113
118
|
const isAsync = mp.async === 'true' || mp.async === true;
|
|
114
119
|
const isStream = mp.stream === 'true' || mp.stream === true;
|
|
115
120
|
const isStatic = mp.static === 'true' || mp.static === true;
|
|
116
|
-
const vis = mp.private === 'true' || mp.private === true
|
|
121
|
+
const vis = mp.private === 'true' || mp.private === true
|
|
122
|
+
? 'private '
|
|
123
|
+
: '';
|
|
117
124
|
const staticKw = isStatic ? 'static ' : '';
|
|
118
125
|
const star = isStream ? '*' : '';
|
|
119
|
-
const asyncKw =
|
|
126
|
+
const asyncKw = isAsync || isStream ? 'async ' : '';
|
|
120
127
|
const mcode = handlerCode(method);
|
|
121
128
|
// stream=true → AsyncGenerator return type
|
|
122
129
|
const mreturns = isStream
|
|
123
130
|
? `: AsyncGenerator<${emitTypeAnnotation(mp.returns, 'unknown', method)}>`
|
|
124
|
-
: mp.returns
|
|
131
|
+
: mp.returns
|
|
132
|
+
? `: ${emitTypeAnnotation(mp.returns, 'unknown', method)}`
|
|
133
|
+
: '';
|
|
125
134
|
lines.push('');
|
|
126
135
|
lines.push(` ${vis}${staticKw}${asyncKw}${star}${mname}(${mparams})${mreturns} {`);
|
|
127
136
|
if (mcode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-system.js","sourceRoot":"","sources":["../../src/codegen/type-system.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"type-system.js","sourceRoot":"","sources":["../../src/codegen/type-system.ts"],"names":[],"mappings":"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"}
|
package/dist/codegen-core.d.ts
CHANGED
|
@@ -10,20 +10,21 @@
|
|
|
10
10
|
* This file is the thin dispatcher: imports, re-exports, and generateCoreNode switch.
|
|
11
11
|
* Generators that call generateCoreNode recursively remain here to avoid circular imports.
|
|
12
12
|
*/
|
|
13
|
-
import type { IRNode } from './types.js';
|
|
14
13
|
import { type KernRuntime } from './runtime.js';
|
|
15
|
-
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
18
|
-
export { generateFunction, generateError } from './codegen/functions.js';
|
|
19
|
-
export { generateMachine, generateMachineReducer } from './codegen/machines.js';
|
|
20
|
-
export { generateConfig, generateStore, generateRepository, generateCache, generateDependency, generateModel } from './codegen/data-layer.js';
|
|
21
|
-
export { generateDerive, generateTransform, generateAction, generateGuard, generateAssume, generateInvariant, generateCollect, generateResolve, generateExpect, generateRecover, generatePattern, generateApply } from './codegen/ground-layer.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';
|
|
22
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';
|
|
23
22
|
export { generateImport } from './codegen/modules.js';
|
|
24
|
-
export {
|
|
25
|
-
export { mapSemanticType, SEMANTIC_TYPE_MAP } from './codegen/semantic-types.js';
|
|
23
|
+
export { generateScreen } from './codegen/screens.js';
|
|
26
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';
|
|
27
28
|
/** Register an evolved generator (called at startup). */
|
|
28
29
|
export declare function registerEvolvedGenerator(keyword: string, fn: (node: IRNode) => string[]): void;
|
|
29
30
|
/** Register a target-specific evolved generator (called at startup). */
|