@kernlang/cli 3.1.7 → 3.1.9
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/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/compile.d.ts +1 -1
- package/dist/commands/compile.js +324 -149
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/dev.d.ts +6 -0
- package/dist/commands/dev.js +13 -119
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/evolve/backfill.js +9 -17
- package/dist/commands/evolve/backfill.js.map +1 -1
- package/dist/commands/evolve/discover.js +11 -18
- package/dist/commands/evolve/discover.js.map +1 -1
- package/dist/commands/import.d.ts +1 -0
- package/dist/commands/import.js +101 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.js +341 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/review.js +7 -6
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/schema.d.ts +1 -0
- package/dist/commands/schema.js +6 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/test.d.ts +1 -0
- package/dist/commands/test.js +184 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/transpile.js +12 -8
- package/dist/commands/transpile.js.map +1 -1
- package/dist/shared.d.ts +33 -2
- package/dist/shared.js +192 -3
- package/dist/shared.js.map +1 -1
- package/package.json +13 -13
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
2
|
+
import { basename, resolve } from 'path';
|
|
3
|
+
import { hasFlag, parseAndSurface, parseFlag } from '../shared.js';
|
|
4
|
+
// ── Helpers ─────────────────────────────────────────────────────────────
|
|
5
|
+
function getProps(node) {
|
|
6
|
+
return node.props || {};
|
|
7
|
+
}
|
|
8
|
+
function str(v) {
|
|
9
|
+
return typeof v === 'string' ? v : '';
|
|
10
|
+
}
|
|
11
|
+
function getChildren(node, type) {
|
|
12
|
+
return (node.children || []).filter((c) => c.type === type);
|
|
13
|
+
}
|
|
14
|
+
function _getFirstChild(node, type) {
|
|
15
|
+
return (node.children || []).find((c) => c.type === type);
|
|
16
|
+
}
|
|
17
|
+
// ── Guard violation payloads ────────────────────────────────────────────
|
|
18
|
+
function guardViolationPayloads(guardKind, paramName) {
|
|
19
|
+
switch (guardKind) {
|
|
20
|
+
case 'pathContainment':
|
|
21
|
+
return [
|
|
22
|
+
{ description: `rejects path traversal on ${paramName}`, value: `"../../../etc/passwd"` },
|
|
23
|
+
{ description: `rejects absolute path on ${paramName}`, value: `"/etc/shadow"` },
|
|
24
|
+
];
|
|
25
|
+
case 'sanitize':
|
|
26
|
+
return [
|
|
27
|
+
{ description: `sanitizes dangerous input on ${paramName}`, value: `"<script>alert(1)</script>"` },
|
|
28
|
+
{ description: `sanitizes shell metacharacters on ${paramName}`, value: `"; rm -rf /"` },
|
|
29
|
+
];
|
|
30
|
+
case 'validate':
|
|
31
|
+
return [{ description: `rejects out-of-range value on ${paramName}`, value: `-999` }];
|
|
32
|
+
case 'rateLimit':
|
|
33
|
+
return []; // Rate limiting is hard to unit test
|
|
34
|
+
case 'auth':
|
|
35
|
+
return []; // Auth tests need env setup
|
|
36
|
+
default:
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// ── Test generator ──────────────────────────────────────────────────────
|
|
41
|
+
function generateTestFile(ast, sourceFile) {
|
|
42
|
+
const mcpNode = ast.type === 'mcp' ? ast : (ast.children || []).find((c) => c.type === 'mcp');
|
|
43
|
+
if (!mcpNode) {
|
|
44
|
+
return `// No MCP server found in ${sourceFile}\n`;
|
|
45
|
+
}
|
|
46
|
+
const serverName = str(getProps(mcpNode).name) || 'MCPServer';
|
|
47
|
+
const tools = getChildren(mcpNode, 'tool');
|
|
48
|
+
const resources = getChildren(mcpNode, 'resource');
|
|
49
|
+
const lines = [
|
|
50
|
+
`/**`,
|
|
51
|
+
` * Generated tests for ${serverName} MCP server`,
|
|
52
|
+
` * Source: ${sourceFile}`,
|
|
53
|
+
` *`,
|
|
54
|
+
` * Run: npx jest ${basename(sourceFile, '.kern')}.test.ts`,
|
|
55
|
+
` */`,
|
|
56
|
+
``,
|
|
57
|
+
`import { describe, it, expect } from '@jest/globals';`,
|
|
58
|
+
``,
|
|
59
|
+
];
|
|
60
|
+
// Tool tests
|
|
61
|
+
for (const tool of tools) {
|
|
62
|
+
const toolName = str(getProps(tool).name) || 'unknown';
|
|
63
|
+
const params = getChildren(tool, 'param');
|
|
64
|
+
const guards = getChildren(tool, 'guard');
|
|
65
|
+
lines.push(`describe('tool: ${toolName}', () => {`);
|
|
66
|
+
// Happy path test
|
|
67
|
+
const happyArgs = [];
|
|
68
|
+
for (const param of params) {
|
|
69
|
+
const pp = getProps(param);
|
|
70
|
+
const name = str(pp.name) || 'input';
|
|
71
|
+
const type = str(pp.type) || 'string';
|
|
72
|
+
const defaultVal = str(pp.default);
|
|
73
|
+
let sampleValue;
|
|
74
|
+
if (defaultVal) {
|
|
75
|
+
sampleValue = JSON.stringify(defaultVal);
|
|
76
|
+
}
|
|
77
|
+
else if (type === 'number' || type === 'int' || type === 'float') {
|
|
78
|
+
sampleValue = '42';
|
|
79
|
+
}
|
|
80
|
+
else if (type === 'boolean' || type === 'bool') {
|
|
81
|
+
sampleValue = 'true';
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
sampleValue = `"test-${name}"`;
|
|
85
|
+
}
|
|
86
|
+
happyArgs.push(` ${name}: ${sampleValue},`);
|
|
87
|
+
}
|
|
88
|
+
lines.push(` it('accepts valid parameters', () => {`);
|
|
89
|
+
lines.push(` const params = {`);
|
|
90
|
+
lines.push(...happyArgs);
|
|
91
|
+
lines.push(` };`);
|
|
92
|
+
lines.push(` // Validate params match expected schema`);
|
|
93
|
+
for (const param of params) {
|
|
94
|
+
const pp = getProps(param);
|
|
95
|
+
const name = str(pp.name);
|
|
96
|
+
const required = str(pp.required) !== 'false' && !pp.default;
|
|
97
|
+
if (required && name) {
|
|
98
|
+
lines.push(` expect(params.${name}).toBeDefined();`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
lines.push(` });`);
|
|
102
|
+
lines.push(``);
|
|
103
|
+
// Required param tests
|
|
104
|
+
for (const param of params) {
|
|
105
|
+
const pp = getProps(param);
|
|
106
|
+
const name = str(pp.name);
|
|
107
|
+
const required = str(pp.required) !== 'false' && !pp.default;
|
|
108
|
+
if (required && name) {
|
|
109
|
+
lines.push(` it('requires param: ${name}', () => {`);
|
|
110
|
+
lines.push(` const params: Record<string, unknown> = {};`);
|
|
111
|
+
lines.push(` expect(params.${name}).toBeUndefined();`);
|
|
112
|
+
lines.push(` // Handler should reject missing required param`);
|
|
113
|
+
lines.push(` });`);
|
|
114
|
+
lines.push(``);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Guard violation tests
|
|
118
|
+
for (const guard of guards) {
|
|
119
|
+
const gp = getProps(guard);
|
|
120
|
+
const kind = str(gp.name) || str(gp.kind) || str(gp.type);
|
|
121
|
+
const target = str(gp.param) || str(gp.target) || str(gp.field);
|
|
122
|
+
const violations = guardViolationPayloads(kind, target);
|
|
123
|
+
for (const violation of violations) {
|
|
124
|
+
lines.push(` it('${violation.description}', () => {`);
|
|
125
|
+
lines.push(` const maliciousInput = ${violation.value};`);
|
|
126
|
+
lines.push(` // Guard '${kind}' on '${target}' should block this input`);
|
|
127
|
+
lines.push(` expect(typeof maliciousInput).toBeDefined();`);
|
|
128
|
+
lines.push(` // TODO: Wire up actual tool handler invocation to verify guard blocks`);
|
|
129
|
+
lines.push(` });`);
|
|
130
|
+
lines.push(``);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
lines.push(`});`);
|
|
134
|
+
lines.push(``);
|
|
135
|
+
}
|
|
136
|
+
// Resource tests
|
|
137
|
+
for (const resource of resources) {
|
|
138
|
+
const name = str(getProps(resource).name) || 'unknown';
|
|
139
|
+
const uri = str(getProps(resource).uri) || 'unknown://';
|
|
140
|
+
lines.push(`describe('resource: ${name}', () => {`);
|
|
141
|
+
lines.push(` it('has valid URI pattern', () => {`);
|
|
142
|
+
lines.push(` const uri = ${JSON.stringify(uri)};`);
|
|
143
|
+
lines.push(` expect(uri).toBeTruthy();`);
|
|
144
|
+
if (uri.includes('{')) {
|
|
145
|
+
lines.push(` // Templated URI — should have matching param definitions`);
|
|
146
|
+
lines.push(` expect(uri).toMatch(/\\{\\w+\\}/);`);
|
|
147
|
+
}
|
|
148
|
+
lines.push(` });`);
|
|
149
|
+
lines.push(`});`);
|
|
150
|
+
lines.push(``);
|
|
151
|
+
}
|
|
152
|
+
return lines.join('\n');
|
|
153
|
+
}
|
|
154
|
+
// ── Command ─────────────────────────────────────────────────────────────
|
|
155
|
+
export function runTest(args) {
|
|
156
|
+
const testInput = args[1];
|
|
157
|
+
const outDir = parseFlag(args, '--outdir');
|
|
158
|
+
const dryRun = hasFlag(args, '--dry-run');
|
|
159
|
+
if (!testInput) {
|
|
160
|
+
console.error('Usage: kern test <file.kern> [--outdir=<dir>] [--dry-run]');
|
|
161
|
+
console.error('');
|
|
162
|
+
console.error('Generates test files for MCP server tools defined in .kern files.');
|
|
163
|
+
console.error('Tests include happy path + guard violation test cases.');
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
const inputPath = resolve(testInput);
|
|
167
|
+
if (!existsSync(inputPath)) {
|
|
168
|
+
console.error(`Not found: ${testInput}`);
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
const source = readFileSync(inputPath, 'utf-8');
|
|
172
|
+
const ast = parseAndSurface(source, inputPath);
|
|
173
|
+
const testCode = generateTestFile(ast, basename(inputPath));
|
|
174
|
+
if (dryRun) {
|
|
175
|
+
process.stdout.write(testCode);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const outName = `${basename(inputPath, '.kern')}.test.ts`;
|
|
179
|
+
const outPath = resolve(outDir || '.', outName);
|
|
180
|
+
writeFileSync(outPath, testCode);
|
|
181
|
+
console.log(` Generated ${outName}`);
|
|
182
|
+
console.log(` Run: npx jest ${outName}`);
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { collectLanguageMetrics } from '@kernlang/metrics';
|
|
|
4
4
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
5
5
|
import { createJiti } from 'jiti';
|
|
6
6
|
import { basename, dirname, resolve } from 'path';
|
|
7
|
-
import { hasFlag, loadTemplates, parseAndSurface, parseFlag, transpileForTarget } from '../shared.js';
|
|
7
|
+
import { getOutputExtension, hasFlag, loadTemplates, parseAndSurface, parseFlag, transpileForTarget, } from '../shared.js';
|
|
8
8
|
// ── Minify/Pretty implementations ───────────────────────────────────────
|
|
9
9
|
/** Serialize node props. pseudoFormat controls pseudo style output:
|
|
10
10
|
* 'minify' → ` {:state:key:value}` (space + braces)
|
|
@@ -176,13 +176,7 @@ export function runTranspile(args) {
|
|
|
176
176
|
console.log(`Transpiled: ${inputFile} → ${displayPath}`);
|
|
177
177
|
}
|
|
178
178
|
else {
|
|
179
|
-
const outExt = target
|
|
180
|
-
? '.py'
|
|
181
|
-
: target === 'vue' || target === 'nuxt'
|
|
182
|
-
? '.vue'
|
|
183
|
-
: target === 'express' || target === 'cli' || target === 'terminal' || target === 'mcp'
|
|
184
|
-
? '.ts'
|
|
185
|
-
: '.tsx';
|
|
179
|
+
const outExt = getOutputExtension(target);
|
|
186
180
|
const outFile = resolve(outDir, `${name}${outExt}`);
|
|
187
181
|
mkdirSync(dirname(outFile), { recursive: true });
|
|
188
182
|
writeFileSync(outFile, result.code);
|
|
@@ -238,6 +232,16 @@ export function runTranspile(args) {
|
|
|
238
232
|
console.log(` ⚠ ${d.nodeType}${loc} — unsupported in ${d.target}${lost}`);
|
|
239
233
|
}
|
|
240
234
|
}
|
|
235
|
+
// Surface severity-based diagnostics from transpiler
|
|
236
|
+
const sevDiags = result.diagnostics.filter((d) => d.severity);
|
|
237
|
+
for (const d of sevDiags) {
|
|
238
|
+
const loc = d.loc ? `:${d.loc.line}` : '';
|
|
239
|
+
const icon = d.severity === 'error' ? '✖' : d.severity === 'warning' ? '⚠' : 'ℹ';
|
|
240
|
+
console.log(` ${icon} ${d.severity}: ${d.message || d.reason || d.nodeType}${loc}`);
|
|
241
|
+
}
|
|
242
|
+
if (sevDiags.some((d) => d.severity === 'error')) {
|
|
243
|
+
process.exitCode = 1;
|
|
244
|
+
}
|
|
241
245
|
}
|
|
242
246
|
}
|
|
243
247
|
export function printHelp() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transpile.js","sourceRoot":"","sources":["../../src/commands/transpile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transpile.js","sourceRoot":"","sources":["../../src/commands/transpile.ts"],"names":[],"mappings":"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"}
|
package/dist/shared.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { IRNode, ParseDiagnostic, ResolvedKernConfig } from '@kernlang/core';
|
|
2
|
-
export declare const GENERATED_HEADER = "//
|
|
1
|
+
import type { IRNode, KernTarget, ParseDiagnostic, ResolvedKernConfig, SchemaViolation } from '@kernlang/core';
|
|
2
|
+
export declare const GENERATED_HEADER = "// @generated by kern v2.0.0 \u2014 DO NOT EDIT. Source: ";
|
|
3
3
|
/** Get value of --flag=value */
|
|
4
4
|
export declare function parseFlag(args: string[], flag: string): string | undefined;
|
|
5
5
|
/** Get value of --flag=value OR --flag <value> (next positional arg) */
|
|
@@ -11,6 +11,37 @@ export declare function surfaceParseDiagnostics(diagnostics: ParseDiagnostic[],
|
|
|
11
11
|
warnings: number;
|
|
12
12
|
};
|
|
13
13
|
export declare function parseAndSurface(source: string, file?: string): IRNode;
|
|
14
|
+
export interface FileDiagnosticsJSON {
|
|
15
|
+
file: string;
|
|
16
|
+
success: boolean;
|
|
17
|
+
diagnostics: ParseDiagnostic[];
|
|
18
|
+
schemaViolations: SchemaViolation[];
|
|
19
|
+
}
|
|
20
|
+
/** Parse a .kern file and return structured diagnostics as JSON-serializable object. */
|
|
21
|
+
export declare function parseWithJSONDiagnostics(source: string, file: string): {
|
|
22
|
+
root: IRNode;
|
|
23
|
+
json: FileDiagnosticsJSON;
|
|
24
|
+
};
|
|
25
|
+
/** Get the output file extension for a given target. Deduplicates the ternary chain. */
|
|
26
|
+
export declare function getOutputExtension(target: KernTarget): string;
|
|
27
|
+
/** Extract exported symbol names from generated TypeScript lines, distinguishing type-only exports. */
|
|
28
|
+
export declare function extractExportsFromLines(lines: string[]): {
|
|
29
|
+
name: string;
|
|
30
|
+
typeOnly: boolean;
|
|
31
|
+
}[];
|
|
32
|
+
export interface BarrelEntry {
|
|
33
|
+
moduleName: string;
|
|
34
|
+
exports: {
|
|
35
|
+
name: string;
|
|
36
|
+
typeOnly: boolean;
|
|
37
|
+
}[];
|
|
38
|
+
}
|
|
39
|
+
/** Scan output directory for .ts/.tsx files and build barrel entries from their exports. */
|
|
40
|
+
export declare function scanOutputForBarrelEntries(outDir: string): BarrelEntry[];
|
|
41
|
+
/** Generate a barrel index file that re-exports from all compiled modules. */
|
|
42
|
+
export declare function generateBarrelFile(outDir: string, entries: BarrelEntry[]): void;
|
|
43
|
+
/** Generate facade re-export files and an index.ts that re-exports from facades. */
|
|
44
|
+
export declare function generateFacadeFiles(outDir: string, facadesDirOverride: string | undefined, entries: BarrelEntry[]): void;
|
|
14
45
|
export declare function findNearestPackageJson(startDir: string): string | null;
|
|
15
46
|
export declare function findKernFiles(dir: string, singleFile?: string): string[];
|
|
16
47
|
export declare function collectTsFilesFlat(dirPath: string, recursive: boolean): string[];
|
package/dist/shared.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clearTemplates, collectCoverageGaps, parseWithDiagnostics, registerTemplate, resolveConfig, writeCoverageGaps, } from '@kernlang/core';
|
|
1
|
+
import { clearTemplates, collectCoverageGaps, KERN_VERSION, parseWithDiagnostics, registerTemplate, resolveConfig, validateSchema, validateSemantics, writeCoverageGaps, } from '@kernlang/core';
|
|
2
2
|
import { transpileExpress } from '@kernlang/express';
|
|
3
3
|
import { transpileFastAPI } from '@kernlang/fastapi';
|
|
4
4
|
import { transpileMCP } from '@kernlang/mcp';
|
|
@@ -11,7 +11,7 @@ import { createJiti } from 'jiti';
|
|
|
11
11
|
import { basename, dirname, relative, resolve } from 'path';
|
|
12
12
|
import { transpileCliApp } from './transpiler-cli.js';
|
|
13
13
|
// ── Constants ────────────────────────────────────────────────────────────
|
|
14
|
-
export const GENERATED_HEADER =
|
|
14
|
+
export const GENERATED_HEADER = `// @generated by kern v${KERN_VERSION} — DO NOT EDIT. Source: `;
|
|
15
15
|
// ── Arg parsing helpers ──────────────────────────────────────────────────
|
|
16
16
|
/** Get value of --flag=value */
|
|
17
17
|
export function parseFlag(args, flag) {
|
|
@@ -51,6 +51,153 @@ export function parseAndSurface(source, file) {
|
|
|
51
51
|
surfaceParseDiagnostics(result.diagnostics, file);
|
|
52
52
|
return result.root;
|
|
53
53
|
}
|
|
54
|
+
/** Parse a .kern file and return structured diagnostics as JSON-serializable object. */
|
|
55
|
+
export function parseWithJSONDiagnostics(source, file) {
|
|
56
|
+
const result = parseWithDiagnostics(source);
|
|
57
|
+
const schemaViolations = [
|
|
58
|
+
...validateSchema(result.root),
|
|
59
|
+
...validateSemantics(result.root).map((sv) => ({
|
|
60
|
+
nodeType: sv.nodeType,
|
|
61
|
+
message: `[${sv.rule}] ${sv.message}`,
|
|
62
|
+
line: sv.line,
|
|
63
|
+
col: sv.col,
|
|
64
|
+
})),
|
|
65
|
+
];
|
|
66
|
+
const hasErrors = result.diagnostics.some((d) => d.severity === 'error') || schemaViolations.length > 0;
|
|
67
|
+
return {
|
|
68
|
+
root: result.root,
|
|
69
|
+
json: {
|
|
70
|
+
file,
|
|
71
|
+
success: !hasErrors,
|
|
72
|
+
diagnostics: result.diagnostics,
|
|
73
|
+
schemaViolations,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// ── Output extension helper ─────────────────────────────────────────────
|
|
78
|
+
/** Get the output file extension for a given target. Deduplicates the ternary chain. */
|
|
79
|
+
export function getOutputExtension(target) {
|
|
80
|
+
switch (target) {
|
|
81
|
+
case 'fastapi':
|
|
82
|
+
return '.py';
|
|
83
|
+
case 'vue':
|
|
84
|
+
case 'nuxt':
|
|
85
|
+
return '.vue';
|
|
86
|
+
case 'express':
|
|
87
|
+
case 'cli':
|
|
88
|
+
case 'terminal':
|
|
89
|
+
case 'mcp':
|
|
90
|
+
return '.ts';
|
|
91
|
+
default:
|
|
92
|
+
return '.tsx';
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// ── Export extraction ───────────────────────────────────────────────────
|
|
96
|
+
/** Extract exported symbol names from generated TypeScript lines, distinguishing type-only exports. */
|
|
97
|
+
export function extractExportsFromLines(lines) {
|
|
98
|
+
const exports = [];
|
|
99
|
+
const re = /^export\s+(?:async\s+)?(?:function\*?|class|const|enum|abstract\s+class)\s+(\w+)/;
|
|
100
|
+
const typeRe = /^export\s+(?:interface|type)\s+(\w+)/;
|
|
101
|
+
for (const line of lines) {
|
|
102
|
+
const m = line.match(re);
|
|
103
|
+
if (m) {
|
|
104
|
+
exports.push({ name: m[1], typeOnly: false });
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const tm = line.match(typeRe);
|
|
108
|
+
if (tm)
|
|
109
|
+
exports.push({ name: tm[1], typeOnly: true });
|
|
110
|
+
}
|
|
111
|
+
return exports;
|
|
112
|
+
}
|
|
113
|
+
/** Scan output directory for .ts/.tsx files and build barrel entries from their exports. */
|
|
114
|
+
export function scanOutputForBarrelEntries(outDir) {
|
|
115
|
+
if (!existsSync(outDir))
|
|
116
|
+
return [];
|
|
117
|
+
const entries = [];
|
|
118
|
+
function scan(dir) {
|
|
119
|
+
for (const file of readdirSync(dir)) {
|
|
120
|
+
const full = resolve(dir, file);
|
|
121
|
+
if (statSync(full).isDirectory()) {
|
|
122
|
+
scan(full);
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (file === 'index.ts' || file === '_barrel.ts')
|
|
126
|
+
continue;
|
|
127
|
+
if (!file.endsWith('.ts') && !file.endsWith('.tsx'))
|
|
128
|
+
continue;
|
|
129
|
+
const content = readFileSync(full, 'utf-8');
|
|
130
|
+
const exports = extractExportsFromLines(content.split('\n'));
|
|
131
|
+
if (exports.length > 0) {
|
|
132
|
+
// Use path relative to outDir as module name so barrel imports resolve
|
|
133
|
+
const relPath = relative(outDir, full).replace(/\.tsx?$/, '');
|
|
134
|
+
entries.push({ moduleName: relPath, exports });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
scan(outDir);
|
|
139
|
+
return entries;
|
|
140
|
+
}
|
|
141
|
+
/** Generate a barrel index file that re-exports from all compiled modules. */
|
|
142
|
+
export function generateBarrelFile(outDir, entries) {
|
|
143
|
+
if (entries.length === 0)
|
|
144
|
+
return;
|
|
145
|
+
const hasIndexKern = entries.some((e) => e.moduleName === 'index');
|
|
146
|
+
const barrelName = hasIndexKern ? '_barrel.ts' : 'index.ts';
|
|
147
|
+
const barrelLines = ['// @generated by kern — DO NOT EDIT.', ''];
|
|
148
|
+
for (const entry of entries) {
|
|
149
|
+
const valueExports = entry.exports.filter((e) => !e.typeOnly).map((e) => e.name);
|
|
150
|
+
const typeExports = entry.exports.filter((e) => e.typeOnly).map((e) => e.name);
|
|
151
|
+
if (valueExports.length > 0) {
|
|
152
|
+
barrelLines.push(`export { ${valueExports.join(', ')} } from './${entry.moduleName}.js';`);
|
|
153
|
+
}
|
|
154
|
+
if (typeExports.length > 0) {
|
|
155
|
+
barrelLines.push(`export type { ${typeExports.join(', ')} } from './${entry.moduleName}.js';`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
barrelLines.push('');
|
|
159
|
+
const barrelFile = resolve(outDir, barrelName);
|
|
160
|
+
writeFileSync(barrelFile, barrelLines.join('\n'));
|
|
161
|
+
const totalExports = entries.reduce((n, e) => n + e.exports.length, 0);
|
|
162
|
+
console.log(` barrel → ${barrelName} (${totalExports} exports)`);
|
|
163
|
+
}
|
|
164
|
+
/** Generate facade re-export files and an index.ts that re-exports from facades. */
|
|
165
|
+
export function generateFacadeFiles(outDir, facadesDirOverride, entries) {
|
|
166
|
+
if (entries.length === 0)
|
|
167
|
+
return;
|
|
168
|
+
const facadesDirPath = resolve(facadesDirOverride || resolve(dirname(outDir), 'src'));
|
|
169
|
+
mkdirSync(facadesDirPath, { recursive: true });
|
|
170
|
+
const relToGenerated = relative(facadesDirPath, outDir);
|
|
171
|
+
const facadeFiles = [];
|
|
172
|
+
for (const entry of entries) {
|
|
173
|
+
const facadeFile = resolve(facadesDirPath, `${entry.moduleName}.ts`);
|
|
174
|
+
if (existsSync(facadeFile))
|
|
175
|
+
continue;
|
|
176
|
+
// Create parent directories for nested module paths (e.g. routes/get-users)
|
|
177
|
+
mkdirSync(dirname(facadeFile), { recursive: true });
|
|
178
|
+
const relPath = `${relToGenerated}/${entry.moduleName}.js`;
|
|
179
|
+
writeFileSync(facadeFile, `export * from '${relPath}';\n`);
|
|
180
|
+
facadeFiles.push(entry.moduleName);
|
|
181
|
+
}
|
|
182
|
+
if (facadeFiles.length > 0) {
|
|
183
|
+
console.log(` facades → ${facadesDirPath} (${facadeFiles.length} files)`);
|
|
184
|
+
}
|
|
185
|
+
const parentDir = dirname(outDir);
|
|
186
|
+
const relToFacades = relative(parentDir, facadesDirPath);
|
|
187
|
+
const indexLines = ['// @generated by kern — DO NOT EDIT.', ''];
|
|
188
|
+
for (const entry of entries) {
|
|
189
|
+
indexLines.push(`export * from './${relToFacades}/${entry.moduleName}.js';`);
|
|
190
|
+
}
|
|
191
|
+
indexLines.push('');
|
|
192
|
+
const indexFile = resolve(parentDir, 'index.ts');
|
|
193
|
+
if (!existsSync(indexFile) || readFileSync(indexFile, 'utf-8').startsWith('// @generated by kern')) {
|
|
194
|
+
writeFileSync(indexFile, indexLines.join('\n'));
|
|
195
|
+
console.log(` facades index → ${relative(process.cwd(), indexFile)}`);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
console.log(` facades index → skipped (${relative(process.cwd(), indexFile)} already exists)`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
54
201
|
// ── File helpers ─────────────────────────────────────────────────────────
|
|
55
202
|
export function findNearestPackageJson(startDir) {
|
|
56
203
|
let dir = startDir;
|
|
@@ -64,9 +211,49 @@ export function findNearestPackageJson(startDir) {
|
|
|
64
211
|
dir = parent;
|
|
65
212
|
}
|
|
66
213
|
}
|
|
214
|
+
/** Load .kernignore patterns from the given directory (or nearest parent). */
|
|
215
|
+
function loadKernIgnore(startDir) {
|
|
216
|
+
let dir = startDir;
|
|
217
|
+
while (true) {
|
|
218
|
+
const candidate = resolve(dir, '.kernignore');
|
|
219
|
+
if (existsSync(candidate)) {
|
|
220
|
+
return readFileSync(candidate, 'utf-8')
|
|
221
|
+
.split('\n')
|
|
222
|
+
.map((l) => l.trim())
|
|
223
|
+
.filter((l) => l && !l.startsWith('#'));
|
|
224
|
+
}
|
|
225
|
+
const parent = dirname(dir);
|
|
226
|
+
if (parent === dir)
|
|
227
|
+
return [];
|
|
228
|
+
dir = parent;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/** Escape regex special characters except * which is used as glob wildcard. */
|
|
232
|
+
function escapeRegexExceptStar(s) {
|
|
233
|
+
return s.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
|
|
234
|
+
}
|
|
235
|
+
/** Check if a path matches any of the ignore patterns (simple glob-like matching). */
|
|
236
|
+
function isIgnored(filePath, baseDir, patterns) {
|
|
237
|
+
const rel = relative(baseDir, filePath);
|
|
238
|
+
return patterns.some((pattern) => {
|
|
239
|
+
if (pattern.endsWith('/'))
|
|
240
|
+
return rel.startsWith(pattern) || rel.includes(`/${pattern}`);
|
|
241
|
+
if (pattern.includes('*')) {
|
|
242
|
+
// Escape regex chars, then convert * to .* and ** to match across directories
|
|
243
|
+
const escaped = escapeRegexExceptStar(pattern)
|
|
244
|
+
.replace(/\*\*/g, '@@GLOBSTAR@@')
|
|
245
|
+
.replace(/\*/g, '[^/]*')
|
|
246
|
+
.replace(/@@GLOBSTAR@@/g, '.*');
|
|
247
|
+
const regex = new RegExp(`^${escaped}$`);
|
|
248
|
+
return regex.test(rel) || regex.test(basename(filePath));
|
|
249
|
+
}
|
|
250
|
+
return rel === pattern || basename(filePath) === pattern;
|
|
251
|
+
});
|
|
252
|
+
}
|
|
67
253
|
export function findKernFiles(dir, singleFile) {
|
|
68
254
|
if (singleFile)
|
|
69
255
|
return [resolve(dir, singleFile)];
|
|
256
|
+
const ignorePatterns = loadKernIgnore(dir);
|
|
70
257
|
const files = [];
|
|
71
258
|
function walk(d) {
|
|
72
259
|
for (const entry of readdirSync(d)) {
|
|
@@ -76,7 +263,9 @@ export function findKernFiles(dir, singleFile) {
|
|
|
76
263
|
walk(full);
|
|
77
264
|
}
|
|
78
265
|
else if (entry.endsWith('.kern')) {
|
|
79
|
-
|
|
266
|
+
if (ignorePatterns.length === 0 || !isIgnored(full, dir, ignorePatterns)) {
|
|
267
|
+
files.push(full);
|
|
268
|
+
}
|
|
80
269
|
}
|
|
81
270
|
}
|
|
82
271
|
}
|