@kernlang/cli 3.4.6-canary.46.1.19dcfc19 → 3.4.6-canary.53.1.ca3b242b

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.
@@ -1,12 +1,10 @@
1
- /** Slice 7 v2 — project-wide registry of exported Result/Option-returning
2
- * fns. Built once before the compile loop; consulted per-file via a
1
+ /** Project-wide registry of exported KERN module metadata. Built once before
2
+ * the compile loop; consulted per-file via a
3
3
  * caller-specific `ImportResolver` that resolves `use path="…"` strings
4
4
  * against the current module's directory.
5
5
  *
6
- * Scope: the registry only indexes fns whose `returns` is exactly
7
- * `Result<…>` or `Option<…>` (the same shape `parser-validate-propagation`
8
- * classifies as `result`/`option`). Imports of any other return shape
9
- * contribute nothing — the propagation pass leaves those calls alone. */
6
+ * Scope: records exported symbol kinds for target-aware import lowering, and
7
+ * still indexes Result/Option-returning fns for `?` / `!` propagation. */
10
8
  import { type ImportResolver, type ModuleExports } from '@kernlang/core';
11
9
  /** Walk every `.kern` file in the project once and produce a
12
10
  * `Map<absoluteFilePath, ModuleExports>`. Files that fail to parse are
@@ -1,13 +1,11 @@
1
- /** Slice 7 v2 — project-wide registry of exported Result/Option-returning
2
- * fns. Built once before the compile loop; consulted per-file via a
1
+ /** Project-wide registry of exported KERN module metadata. Built once before
2
+ * the compile loop; consulted per-file via a
3
3
  * caller-specific `ImportResolver` that resolves `use path="…"` strings
4
4
  * against the current module's directory.
5
5
  *
6
- * Scope: the registry only indexes fns whose `returns` is exactly
7
- * `Result<…>` or `Option<…>` (the same shape `parser-validate-propagation`
8
- * classifies as `result`/`option`). Imports of any other return shape
9
- * contribute nothing — the propagation pass leaves those calls alone. */
10
- import { parseDocument } from '@kernlang/core';
6
+ * Scope: records exported symbol kinds for target-aware import lowering, and
7
+ * still indexes Result/Option-returning fns for `?` / `!` propagation. */
8
+ import { parseDocument, } from '@kernlang/core';
11
9
  import { existsSync, readFileSync } from 'fs';
12
10
  import { dirname, resolve } from 'path';
13
11
  const RESULT_RETURN_RE = /^Result<[\s\S]*>$/;
@@ -22,29 +20,108 @@ function unwrapPromise(s) {
22
20
  }
23
21
  return { inner: t, wasPromise: false };
24
22
  }
25
- function classifyExports(root) {
26
- const resultFns = new Set();
27
- const optionFns = new Set();
28
- const asyncResultFns = new Set();
29
- const asyncOptionFns = new Set();
23
+ function emptyExports() {
24
+ return {
25
+ symbols: new Map(),
26
+ resultFns: new Set(),
27
+ optionFns: new Set(),
28
+ asyncResultFns: new Set(),
29
+ asyncOptionFns: new Set(),
30
+ };
31
+ }
32
+ function cloneExports(exports) {
33
+ return {
34
+ symbols: new Map(exports.symbols ?? []),
35
+ resultFns: new Set(exports.resultFns),
36
+ optionFns: new Set(exports.optionFns),
37
+ asyncResultFns: new Set(exports.asyncResultFns ?? []),
38
+ asyncOptionFns: new Set(exports.asyncOptionFns ?? []),
39
+ };
40
+ }
41
+ function copyExportSymbol(target, source, name) {
42
+ const symbol = source.symbols?.get(name);
43
+ if (symbol)
44
+ target.symbols?.set(name, symbol);
45
+ if (source.resultFns.has(name))
46
+ target.resultFns.add(name);
47
+ if (source.optionFns.has(name))
48
+ target.optionFns.add(name);
49
+ if (source.asyncResultFns?.has(name))
50
+ target.asyncResultFns?.add(name);
51
+ if (source.asyncOptionFns?.has(name))
52
+ target.asyncOptionFns?.add(name);
53
+ }
54
+ function mergeAllExports(target, source) {
55
+ for (const name of source.symbols?.keys() ?? []) {
56
+ copyExportSymbol(target, source, name);
57
+ }
58
+ }
59
+ function splitNames(value) {
60
+ return typeof value === 'string'
61
+ ? value
62
+ .split(',')
63
+ .map((part) => part.trim())
64
+ .filter(Boolean)
65
+ : [];
66
+ }
67
+ function resolveKernImportPath(currentFileAbs, rawPath) {
68
+ if (!rawPath.startsWith('./') && !rawPath.startsWith('../'))
69
+ return null;
70
+ const withExt = rawPath.endsWith('.kern') ? rawPath : `${rawPath}.kern`;
71
+ const abs = resolve(dirname(currentFileAbs), withExt);
72
+ return existsSync(abs) ? abs : null;
73
+ }
74
+ function classifyDirectExports(root) {
75
+ const moduleExports = emptyExports();
76
+ const symbols = new Map();
77
+ function exportedName(node) {
78
+ const props = node.props || {};
79
+ const name = props.name;
80
+ const exportProp = props.export;
81
+ if (typeof name !== 'string' || exportProp === 'false' || exportProp === false)
82
+ return null;
83
+ return name;
84
+ }
85
+ function symbolKind(node) {
86
+ switch (node.type) {
87
+ case 'fn':
88
+ case 'method':
89
+ return 'fn';
90
+ case 'type':
91
+ case 'interface':
92
+ case 'union':
93
+ case 'enum':
94
+ case 'class':
95
+ case 'service':
96
+ case 'model':
97
+ case 'derive':
98
+ case 'transform':
99
+ case 'action':
100
+ case 'expect':
101
+ case 'dependency':
102
+ return node.type;
103
+ default:
104
+ return null;
105
+ }
106
+ }
30
107
  function walk(node) {
108
+ const name = exportedName(node);
109
+ const kind = symbolKind(node);
110
+ if (name && kind) {
111
+ symbols.set(name, { name, kind });
112
+ }
31
113
  if (node.type === 'fn' || node.type === 'method') {
32
114
  const props = node.props || {};
33
- const name = typeof props.name === 'string' ? props.name : null;
34
115
  const returns = props.returns;
35
- // KERN fns are exported by default; `export=false` opts out. Only
36
- // exported names contribute to cross-module recognition.
37
- const exportProp = props.export;
38
- const isExported = !(exportProp === 'false' || exportProp === false);
39
116
  const isAsync = props.async === true || props.async === 'true';
40
- if (name && isExported && typeof returns === 'string') {
117
+ if (name && typeof returns === 'string') {
41
118
  const { inner, wasPromise } = unwrapPromise(returns);
42
119
  const effectivelyAsync = wasPromise || isAsync;
43
120
  if (RESULT_RETURN_RE.test(inner)) {
44
- (effectivelyAsync ? asyncResultFns : resultFns).add(name);
121
+ (effectivelyAsync ? moduleExports.asyncResultFns : moduleExports.resultFns)?.add(name);
45
122
  }
46
123
  else if (OPTION_RETURN_RE.test(inner)) {
47
- (effectivelyAsync ? asyncOptionFns : optionFns).add(name);
124
+ (effectivelyAsync ? moduleExports.asyncOptionFns : moduleExports.optionFns)?.add(name);
48
125
  }
49
126
  }
50
127
  }
@@ -53,25 +130,70 @@ function classifyExports(root) {
53
130
  walk(c);
54
131
  }
55
132
  walk(root);
56
- return { resultFns, optionFns, asyncResultFns, asyncOptionFns };
133
+ moduleExports.symbols = symbols;
134
+ return moduleExports;
135
+ }
136
+ function walkExportNodes(root, visit) {
137
+ if (root.type === 'export')
138
+ visit(root);
139
+ for (const child of root.children ?? []) {
140
+ walkExportNodes(child, visit);
141
+ }
142
+ }
143
+ function resolveExportsForFile(fileAbs, roots, direct, resolved, resolving) {
144
+ const cached = resolved.get(fileAbs);
145
+ if (cached)
146
+ return cached;
147
+ const base = cloneExports(direct.get(fileAbs) ?? emptyExports());
148
+ if (resolving.has(fileAbs))
149
+ return base;
150
+ resolving.add(fileAbs);
151
+ const root = roots.get(fileAbs);
152
+ if (root) {
153
+ walkExportNodes(root, (node) => {
154
+ const from = node.props?.from;
155
+ if (typeof from !== 'string')
156
+ return;
157
+ const targetAbs = resolveKernImportPath(fileAbs, from);
158
+ if (!targetAbs || !roots.has(targetAbs))
159
+ return;
160
+ const source = resolveExportsForFile(targetAbs, roots, direct, resolved, resolving);
161
+ const star = node.props?.star === true || node.props?.star === 'true';
162
+ if (star) {
163
+ mergeAllExports(base, source);
164
+ }
165
+ for (const name of [...splitNames(node.props?.names), ...splitNames(node.props?.types)]) {
166
+ copyExportSymbol(base, source, name);
167
+ }
168
+ });
169
+ }
170
+ resolving.delete(fileAbs);
171
+ resolved.set(fileAbs, base);
172
+ return base;
57
173
  }
58
174
  /** Walk every `.kern` file in the project once and produce a
59
175
  * `Map<absoluteFilePath, ModuleExports>`. Files that fail to parse are
60
176
  * skipped silently — their per-file compile will surface its own errors. */
61
177
  export function buildCrossModuleRegistry(kernFiles) {
62
- const registry = new Map();
178
+ const roots = new Map();
179
+ const direct = new Map();
63
180
  for (const file of kernFiles) {
64
181
  try {
65
182
  const abs = resolve(file);
66
183
  const source = readFileSync(abs, 'utf-8');
67
184
  const root = parseDocument(source);
68
- registry.set(abs, classifyExports(root));
185
+ roots.set(abs, root);
186
+ direct.set(abs, classifyDirectExports(root));
69
187
  }
70
188
  catch {
71
189
  // Parse failures aren't a registry concern — skip and let the
72
190
  // per-file compile surface its diagnostics.
73
191
  }
74
192
  }
193
+ const registry = new Map();
194
+ for (const abs of roots.keys()) {
195
+ registry.set(abs, resolveExportsForFile(abs, roots, direct, registry, new Set()));
196
+ }
75
197
  return registry;
76
198
  }
77
199
  /** Build a per-file `ImportResolver` that maps `use path="…"` strings to
@@ -81,13 +203,9 @@ export function buildCrossModuleRegistry(kernFiles) {
81
203
  * (`zod`, `react`, …) and unresolvable paths return `null`, leaving the
82
204
  * call to pass through propagation unchanged. */
83
205
  export function makeImportResolverForFile(currentFileAbs, registry) {
84
- const dir = dirname(currentFileAbs);
85
206
  return (path) => {
86
- if (!path.startsWith('./') && !path.startsWith('../'))
87
- return null;
88
- const withExt = path.endsWith('.kern') ? path : `${path}.kern`;
89
- const abs = resolve(dir, withExt);
90
- if (!existsSync(abs))
207
+ const abs = resolveKernImportPath(currentFileAbs, path);
208
+ if (!abs)
91
209
  return null;
92
210
  return registry.get(abs) ?? null;
93
211
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cross-module-registry.js","sourceRoot":"","sources":["../../src/lib/cross-module-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cross-module-registry.js","sourceRoot":"","sources":["../../src/lib/cross-module-registry.ts"],"names":[],"mappings":"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"}
package/dist/shared.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { IRNode, KernTarget, ParseDiagnostic, ResolvedKernConfig, SchemaViolation, ShadowDiagnostic } from '@kernlang/core';
2
- export declare const GENERATED_HEADER = "// @generated by kern v3.4.6-canary.46.1.19dcfc19 \u2014 DO NOT EDIT. Source: ";
2
+ export declare const GENERATED_HEADER = "// @generated by kern v3.4.6-canary.53.1.ca3b242b \u2014 DO NOT EDIT. Source: ";
3
3
  export declare function parseCompilerVersion(version: string): [number, number, number] | null;
4
4
  /**
5
5
  * Check the existing output file's @generated stamp against the current compiler version.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kernlang/cli",
3
- "version": "3.4.6-canary.46.1.19dcfc19",
3
+ "version": "3.4.6-canary.53.1.ca3b242b",
4
4
  "description": "KERN CLI — transpile, compile, minify, and analyze .kern files",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -29,20 +29,20 @@
29
29
  "chokidar": "^5.0.0",
30
30
  "jiti": "^2.6.1",
31
31
  "typescript": "^6.0.3",
32
- "@kernlang/codemod": "3.4.6-canary.46.1.19dcfc19",
33
- "@kernlang/core": "3.4.6-canary.46.1.19dcfc19",
34
- "@kernlang/evolve": "3.4.6-canary.46.1.19dcfc19",
35
- "@kernlang/express": "3.4.6-canary.46.1.19dcfc19",
36
- "@kernlang/fastapi": "3.4.6-canary.46.1.19dcfc19",
37
- "@kernlang/mcp": "3.4.6-canary.46.1.19dcfc19",
38
- "@kernlang/metrics": "3.4.6-canary.46.1.19dcfc19",
39
- "@kernlang/native": "3.4.6-canary.46.1.19dcfc19",
40
- "@kernlang/react": "3.4.6-canary.46.1.19dcfc19",
41
- "@kernlang/review": "3.4.6-canary.46.1.19dcfc19",
42
- "@kernlang/review-mcp": "3.4.6-canary.46.1.19dcfc19",
43
- "@kernlang/test": "3.4.6-canary.46.1.19dcfc19",
44
- "@kernlang/terminal": "3.4.6-canary.46.1.19dcfc19",
45
- "@kernlang/vue": "3.4.6-canary.46.1.19dcfc19"
32
+ "@kernlang/codemod": "3.4.6-canary.53.1.ca3b242b",
33
+ "@kernlang/core": "3.4.6-canary.53.1.ca3b242b",
34
+ "@kernlang/evolve": "3.4.6-canary.53.1.ca3b242b",
35
+ "@kernlang/express": "3.4.6-canary.53.1.ca3b242b",
36
+ "@kernlang/fastapi": "3.4.6-canary.53.1.ca3b242b",
37
+ "@kernlang/metrics": "3.4.6-canary.53.1.ca3b242b",
38
+ "@kernlang/native": "3.4.6-canary.53.1.ca3b242b",
39
+ "@kernlang/mcp": "3.4.6-canary.53.1.ca3b242b",
40
+ "@kernlang/react": "3.4.6-canary.53.1.ca3b242b",
41
+ "@kernlang/review": "3.4.6-canary.53.1.ca3b242b",
42
+ "@kernlang/review-mcp": "3.4.6-canary.53.1.ca3b242b",
43
+ "@kernlang/terminal": "3.4.6-canary.53.1.ca3b242b",
44
+ "@kernlang/test": "3.4.6-canary.53.1.ca3b242b",
45
+ "@kernlang/vue": "3.4.6-canary.53.1.ca3b242b"
46
46
  },
47
47
  "scripts": {
48
48
  "build": "tsc -b",