@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
@@ -4,7 +4,7 @@
4
4
  * Users define reusable code patterns in .kern files with typed slots.
5
5
  * Templates are registered at config/CLI time, then expanded during codegen.
6
6
  */
7
- import { generateCoreNode, emitIdentifier, emitTemplateSafe } from './codegen-core.js';
7
+ import { emitIdentifier, emitTemplateSafe, generateCoreNode } from './codegen-core.js';
8
8
  import { defaultRuntime } from './runtime.js';
9
9
  // ── Registry — now delegates to defaultRuntime ──────────────────────────
10
10
  const MAX_EXPANSION_DEPTH = 10;
@@ -41,7 +41,7 @@ function p(node) {
41
41
  }
42
42
  function kids(node, type) {
43
43
  const c = node.children || [];
44
- return type ? c.filter(n => n.type === type) : c;
44
+ return type ? c.filter((n) => n.type === type) : c;
45
45
  }
46
46
  /**
47
47
  * Register a template from a parsed 'template' IRNode.
@@ -105,20 +105,25 @@ export function templateCount() {
105
105
  /** Strip common leading whitespace from multiline body text. */
106
106
  function dedentBody(code) {
107
107
  const lines = code.split('\n');
108
- const nonEmpty = lines.filter(l => l.trim().length > 0);
108
+ const nonEmpty = lines.filter((l) => l.trim().length > 0);
109
109
  if (nonEmpty.length === 0)
110
110
  return code;
111
- const min = Math.min(...nonEmpty.map(l => l.match(/^(\s*)/)?.[1].length ?? 0));
112
- return lines.map(l => l.slice(min)).join('\n');
111
+ const min = Math.min(...nonEmpty.map((l) => l.match(/^(\s*)/)?.[1].length ?? 0));
112
+ return lines.map((l) => l.slice(min)).join('\n');
113
113
  }
114
114
  /**
115
115
  * Expand a template instance node into TypeScript lines.
116
116
  *
117
- * 1. Look up template definition
118
- * 2. Validate required slots against node.props
119
- * 3. Replace {{slotName}} placeholders in body
120
- * 4. Handle {{CHILDREN}}: iterate child nodes through codegen
121
- * 5. Prepend import lines
117
+ * Looks up the template definition by `node.type`, validates required slots against
118
+ * `node.props`, replaces `{{slotName}}` placeholders, handles `{{CHILDREN}}` recursion,
119
+ * and prepends import lines.
120
+ *
121
+ * @param node - IR node whose `type` matches a registered template name
122
+ * @param _depth - Internal recursion depth counter (do not set manually)
123
+ * @param runtime - Optional KernRuntime instance
124
+ * @returns Array of generated TypeScript source lines
125
+ * @throws {KernTemplateError} If expansion depth exceeds 10 (recursion guard)
126
+ * or required slots are missing
122
127
  */
123
128
  export function expandTemplateNode(node, _depth = 0, runtime) {
124
129
  const rt = runtime ?? defaultRuntime;
@@ -176,7 +181,7 @@ export function expandTemplateNode(node, _depth = 0, runtime) {
176
181
  body = body.replace(/^([ \t]*)(\{\{CHILDREN\}\})/gm, (_match, indent) => {
177
182
  if (childrenLines.length === 0)
178
183
  return '';
179
- return childrenLines.map(l => indent + l).join('\n');
184
+ return childrenLines.map((l) => indent + l).join('\n');
180
185
  });
181
186
  }
182
187
  // Replace {{slotName}} placeholders — escape slot names for safe RegExp
@@ -190,7 +195,10 @@ export function expandTemplateNode(node, _depth = 0, runtime) {
190
195
  if (template.imports.length > 0) {
191
196
  const importLines = [];
192
197
  for (const imp of template.imports) {
193
- const nameList = imp.names.split(',').map(s => s.trim()).join(', ');
198
+ const nameList = imp.names
199
+ .split(',')
200
+ .map((s) => s.trim())
201
+ .join(', ');
194
202
  const safeFrom = emitTemplateSafe(imp.from);
195
203
  importLines.push(`import { ${nameList} } from '${safeFrom}';`);
196
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"template-engine.js","sourceRoot":"","sources":["../src/template-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template-engine.js","sourceRoot":"","sources":["../src/template-engine.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -7,10 +7,15 @@
7
7
  * 3. A decompiler that converts IRNode tree → human-readable TypeScript
8
8
  * 4. Source map generation for debugging
9
9
  */
10
+ /** Expression object produced by the parser for inline expressions */
11
+ export interface ExprObject {
12
+ __expr: true;
13
+ code: string;
14
+ }
10
15
  /** Base node in the IR tree */
11
16
  export interface IRNode {
12
- /** Node type identifier */
13
- type: string;
17
+ /** Node type identifier — known types have autocomplete, custom/evolved types accepted as string */
18
+ type: import('./spec.js').IRNodeType | (string & {});
14
19
  /** Source location for source maps */
15
20
  loc?: IRSourceLocation;
16
21
  /** Child nodes */
@@ -41,7 +46,7 @@ export interface GeneratedArtifact {
41
46
  /** Generated code */
42
47
  content: string;
43
48
  /** Artifact type */
44
- type: 'page' | 'layout' | 'route' | 'middleware' | 'component' | 'config' | 'entry' | 'command' | 'hook' | 'types' | 'barrel' | 'theme' | 'template' | 'websocket' | 'model' | 'service' | 'error' | 'lib';
49
+ type: 'page' | 'layout' | 'route' | 'middleware' | 'component' | 'config' | 'entry' | 'command' | 'hook' | 'types' | 'barrel' | 'theme' | 'template' | 'websocket' | 'model' | 'service' | 'error' | 'lib' | 'prisma' | 'repository';
45
50
  }
46
51
  /** Diagnostic outcome for an IR node during transpilation */
47
52
  export type DiagnosticOutcome = 'expressed' | 'consumed' | 'suppressed' | 'unsupported';
package/dist/utils.d.ts CHANGED
@@ -1,5 +1,25 @@
1
- import type { IRNode, DiagnosticOutcome, TranspileDiagnostic } from './types.js';
1
+ import type { DiagnosticOutcome, IRNode, TranspileDiagnostic } from './types.js';
2
+ /**
3
+ * Approximate token count using a punctuation/whitespace split heuristic.
4
+ *
5
+ * @remarks This is NOT aligned with any specific BPE tokenizer (GPT, Claude, etc.).
6
+ * Do not use for billing calculations or precise context-window budgeting.
7
+ * Intended for relative comparisons (IR vs generated output).
8
+ *
9
+ * @param text - The text to estimate tokens for
10
+ * @returns Approximate token count
11
+ */
2
12
  export declare function countTokens(text: string): number;
13
+ /**
14
+ * Serialize an IR tree to a compact KERN-like text format.
15
+ *
16
+ * Used for token-count comparisons and IR debugging. Outputs one line per node
17
+ * with props inline and children indented.
18
+ *
19
+ * @param node - The IR node to serialize
20
+ * @param indent - Current indentation prefix (used in recursion)
21
+ * @returns Compact string representation of the IR tree
22
+ */
3
23
  export declare function serializeIR(node: IRNode, indent?: string): string;
4
24
  export declare function camelKey(text: string): string;
5
25
  /** Escape text content for JSX — prevents XSS in rendered HTML */
package/dist/utils.js CHANGED
@@ -1,6 +1,26 @@
1
+ /**
2
+ * Approximate token count using a punctuation/whitespace split heuristic.
3
+ *
4
+ * @remarks This is NOT aligned with any specific BPE tokenizer (GPT, Claude, etc.).
5
+ * Do not use for billing calculations or precise context-window budgeting.
6
+ * Intended for relative comparisons (IR vs generated output).
7
+ *
8
+ * @param text - The text to estimate tokens for
9
+ * @returns Approximate token count
10
+ */
1
11
  export function countTokens(text) {
2
- return text.split(/[\s{}()\[\];,.<>:='"]+/).filter(Boolean).length;
12
+ return text.split(/[\s{}()[\];,.<>:='"]+/).filter(Boolean).length;
3
13
  }
14
+ /**
15
+ * Serialize an IR tree to a compact KERN-like text format.
16
+ *
17
+ * Used for token-count comparisons and IR debugging. Outputs one line per node
18
+ * with props inline and children indented.
19
+ *
20
+ * @param node - The IR node to serialize
21
+ * @param indent - Current indentation prefix (used in recursion)
22
+ * @returns Compact string representation of the IR tree
23
+ */
4
24
  export function serializeIR(node, indent = '') {
5
25
  let line = `${indent}${node.type}`;
6
26
  const props = node.props || {};
@@ -13,7 +33,8 @@ export function serializeIR(node, indent = '') {
13
33
  }
14
34
  if (props.styles) {
15
35
  const pairs = Object.entries(props.styles)
16
- .map(([k, v]) => `${k}:${v}`).join(',');
36
+ .map(([k, v]) => `${k}:${v}`)
37
+ .join(',');
17
38
  line += ` {${pairs}}`;
18
39
  }
19
40
  if (props.themeRefs) {
@@ -21,16 +42,19 @@ export function serializeIR(node, indent = '') {
21
42
  line += ` $${ref}`;
22
43
  }
23
44
  }
24
- let result = line + '\n';
45
+ let result = `${line}\n`;
25
46
  if (node.children) {
26
47
  for (const child of node.children) {
27
- result += serializeIR(child, indent + ' ');
48
+ result += serializeIR(child, `${indent} `);
28
49
  }
29
50
  }
30
51
  return result;
31
52
  }
32
53
  export function camelKey(text) {
33
- return text.toLowerCase().replace(/[^a-z0-9]+(.)/g, (_, c) => c.toUpperCase()).replace(/[^a-zA-Z0-9]/g, '');
54
+ return text
55
+ .toLowerCase()
56
+ .replace(/[^a-z0-9]+(.)/g, (_, c) => c.toUpperCase())
57
+ .replace(/[^a-zA-Z0-9]/g, '');
34
58
  }
35
59
  /** Escape text content for JSX — prevents XSS in rendered HTML */
36
60
  export function escapeJsxText(s) {
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * Stored as TypeScript modules so they can hold predicates and transforms.
9
9
  * Shared across all targets that use Tailwind (React, Vue, Svelte).
10
10
  */
11
- import { resolveTailwindMajor, resolveNextjsMajor } from './version-detect.js';
11
+ import { resolveNextjsMajor, resolveTailwindMajor } from './version-detect.js';
12
12
  // ── Token rules for Tailwind v3 -> v4 migration ────────────────────────
13
13
  const TW_V4_TOKEN_RULES = [
14
14
  {
@@ -149,7 +149,6 @@ export function buildNextjsProfile(versions) {
149
149
  linkNoAnchor: true,
150
150
  },
151
151
  };
152
- case 13:
153
152
  default:
154
153
  return {
155
154
  major: 13,
@@ -1 +1 @@
1
- {"version":3,"file":"version-adapters.js","sourceRoot":"","sources":["../src/version-adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version-adapters.js","sourceRoot":"","sources":["../src/version-adapters.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  export function parseMajorVersion(version) {
12
12
  const cleaned = version.replace(/^[\^~>=<]*/g, '').trim();
13
13
  const major = parseInt(cleaned.split('.')[0], 10);
14
- return isNaN(major) ? 0 : major;
14
+ return Number.isNaN(major) ? 0 : major;
15
15
  }
16
16
  /**
17
17
  * Detect framework versions from a parsed package.json object.
@@ -25,12 +25,12 @@ export function detectVersionsFromPackageJson(packageJson) {
25
25
  const deps = (packageJson.dependencies ?? {});
26
26
  const devDeps = (packageJson.devDependencies ?? {});
27
27
  // Tailwind CSS
28
- const twVersion = devDeps['tailwindcss'] ?? deps['tailwindcss'];
28
+ const twVersion = devDeps.tailwindcss ?? deps.tailwindcss;
29
29
  if (twVersion) {
30
30
  versions.tailwind = twVersion;
31
31
  }
32
32
  // Next.js
33
- const nextVersion = deps['next'] ?? devDeps['next'];
33
+ const nextVersion = deps.next ?? devDeps.next;
34
34
  if (nextVersion) {
35
35
  versions.nextjs = nextVersion;
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"version-detect.js","sourceRoot":"","sources":["../src/version-detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAC3C,WAAoC;IAEpC,MAAM,QAAQ,GAAsB,EAAE,CAAC;IAEvC,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAA2B,CAAC;IACxE,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAA2B,CAAC;IAE9E,eAAe;IACf,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;IAChE,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;IAChC,CAAC;IAED,UAAU;IACV,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,WAAW,EAAE,CAAC;QAChB,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;IAChC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA2B;IAC9D,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAA2B;IAC5D,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3B,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"version-detect.js","sourceRoot":"","sources":["../src/version-detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,WAAoC;IAChF,MAAM,QAAQ,GAAsB,EAAE,CAAC;IAEvC,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAA2B,CAAC;IACxE,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAA2B,CAAC;IAE9E,eAAe;IACf,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;IAC1D,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;IAChC,CAAC;IAED,UAAU;IACV,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;IAChC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA2B;IAC9D,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAA2B;IAC5D,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3B,OAAO,EAAE,CAAC;AACZ,CAAC"}
package/dist/walk.d.ts ADDED
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Tree walker for IRNode — ESLint-style type-keyed visitors with flow control.
3
+ */
4
+ import type { IRNode } from './types.js';
5
+ export interface WalkContext {
6
+ /** Skip visiting children of the current node */
7
+ skip(): void;
8
+ /** Stop the entire traversal */
9
+ stop(): void;
10
+ /** The parent node, if any */
11
+ parent: IRNode | undefined;
12
+ /** Depth from root (0 = root) */
13
+ depth: number;
14
+ }
15
+ /** Visitor callback function */
16
+ export type VisitorFn = (node: IRNode, ctx: WalkContext) => void;
17
+ /** A visitor can be a function (enter only) or { enter?, leave? } */
18
+ export type Visitor = VisitorFn | {
19
+ enter?: VisitorFn;
20
+ leave?: VisitorFn;
21
+ };
22
+ /** Visitor map keyed by node type, plus optional '*' wildcard */
23
+ export type VisitorMap = Record<string, Visitor>;
24
+ /**
25
+ * Walk an IR tree depth-first, calling visitors for matching node types.
26
+ * Supports type-keyed visitors and a '*' wildcard.
27
+ */
28
+ export declare function walkIR(root: IRNode, visitors: VisitorMap): void;
29
+ /**
30
+ * Find the deepest IR node whose source location contains the given position.
31
+ *
32
+ * Essential for LSP hover, completion, and go-to-definition.
33
+ * Requires nodes to have `loc` with `endLine`/`endCol` for accurate results.
34
+ *
35
+ * @param root - The root IR node to search
36
+ * @param line - 1-based line number
37
+ * @param col - 1-based column number
38
+ * @returns The deepest matching node, or `undefined` if no node spans the position
39
+ */
40
+ export declare function getNodeAtPosition(root: IRNode, line: number, col: number): IRNode | undefined;
package/dist/walk.js ADDED
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Tree walker for IRNode — ESLint-style type-keyed visitors with flow control.
3
+ */
4
+ // ── Helpers ──────────────────────────────────────────────────────────────
5
+ function getEnter(v) {
6
+ if (!v)
7
+ return undefined;
8
+ return typeof v === 'function' ? v : v.enter;
9
+ }
10
+ function getLeave(v) {
11
+ if (!v)
12
+ return undefined;
13
+ return typeof v === 'function' ? undefined : v.leave;
14
+ }
15
+ // ── Walk ─────────────────────────────────────────────────────────────────
16
+ /**
17
+ * Walk an IR tree depth-first, calling visitors for matching node types.
18
+ * Supports type-keyed visitors and a '*' wildcard.
19
+ */
20
+ export function walkIR(root, visitors) {
21
+ let stopped = false;
22
+ function visit(node, parent, depth) {
23
+ if (stopped)
24
+ return;
25
+ let skipped = false;
26
+ const ctx = {
27
+ skip() {
28
+ skipped = true;
29
+ },
30
+ stop() {
31
+ stopped = true;
32
+ },
33
+ parent,
34
+ depth,
35
+ };
36
+ // ── Enter: type-specific first, then wildcard ──
37
+ const typeVisitor = visitors[node.type];
38
+ const wildcard = visitors['*'];
39
+ const typeEnter = getEnter(typeVisitor);
40
+ if (typeEnter) {
41
+ typeEnter(node, ctx);
42
+ if (stopped)
43
+ return;
44
+ }
45
+ const wildcardEnter = getEnter(wildcard);
46
+ if (wildcardEnter) {
47
+ wildcardEnter(node, ctx);
48
+ if (stopped)
49
+ return;
50
+ }
51
+ // ── Recurse into children (unless skipped) ──
52
+ if (!skipped && node.children) {
53
+ for (const child of node.children) {
54
+ visit(child, node, depth + 1);
55
+ if (stopped)
56
+ return;
57
+ }
58
+ }
59
+ // ── Leave: type-specific first, then wildcard ──
60
+ const typeLeave = getLeave(typeVisitor);
61
+ if (typeLeave) {
62
+ typeLeave(node, ctx);
63
+ if (stopped)
64
+ return;
65
+ }
66
+ const wildcardLeave = getLeave(wildcard);
67
+ if (wildcardLeave) {
68
+ wildcardLeave(node, ctx);
69
+ }
70
+ }
71
+ visit(root, undefined, 0);
72
+ }
73
+ /**
74
+ * Find the deepest IR node whose source location contains the given position.
75
+ *
76
+ * Essential for LSP hover, completion, and go-to-definition.
77
+ * Requires nodes to have `loc` with `endLine`/`endCol` for accurate results.
78
+ *
79
+ * @param root - The root IR node to search
80
+ * @param line - 1-based line number
81
+ * @param col - 1-based column number
82
+ * @returns The deepest matching node, or `undefined` if no node spans the position
83
+ */
84
+ export function getNodeAtPosition(root, line, col) {
85
+ let best;
86
+ walkIR(root, {
87
+ '*': (node, ctx) => {
88
+ const loc = node.loc;
89
+ if (!loc)
90
+ return;
91
+ const startLine = loc.line;
92
+ const startCol = loc.col;
93
+ const endLine = loc.endLine ?? startLine;
94
+ const endCol = loc.endCol ?? startCol;
95
+ // Check if position falls within this node's span
96
+ const afterStart = line > startLine || (line === startLine && col >= startCol);
97
+ const beforeEnd = line < endLine || (line === endLine && col <= endCol);
98
+ if (afterStart && beforeEnd) {
99
+ // Deeper nodes overwrite shallower — walkIR visits pre-order,
100
+ // so children that match will be assigned after their parent
101
+ best = node;
102
+ }
103
+ else {
104
+ // Position is outside this node — skip all children
105
+ ctx.skip();
106
+ }
107
+ },
108
+ });
109
+ return best;
110
+ }
111
+ //# sourceMappingURL=walk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk.js","sourceRoot":"","sources":["../src/walk.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kernlang/core",
3
- "version": "3.1.5",
3
+ "version": "3.1.7",
4
4
  "description": "Kern core — parser, types, spec, config, style engines, codegen",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -52,6 +52,6 @@
52
52
  "dependencies": {},
53
53
  "scripts": {
54
54
  "build": "tsc -b",
55
- "test": "node --experimental-vm-modules ../../node_modules/jest/bin/jest.js --forceExit --config jest.config.js"
55
+ "test": "node --experimental-vm-modules ../../node_modules/jest/bin/jest.js --config jest.config.js"
56
56
  }
57
57
  }