kern-lang 1.0.0

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 (67) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +304 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +244 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/config.d.ts +46 -0
  7. package/dist/config.js +54 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/context-export.d.ts +11 -0
  10. package/dist/context-export.js +121 -0
  11. package/dist/context-export.js.map +1 -0
  12. package/dist/decompiler.d.ts +2 -0
  13. package/dist/decompiler.js +44 -0
  14. package/dist/decompiler.js.map +1 -0
  15. package/dist/draft-protocol.d.ts +27 -0
  16. package/dist/draft-protocol.js +135 -0
  17. package/dist/draft-protocol.js.map +1 -0
  18. package/dist/errors.d.ts +12 -0
  19. package/dist/errors.js +40 -0
  20. package/dist/errors.js.map +1 -0
  21. package/dist/index.d.ts +28 -0
  22. package/dist/index.js +33 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/metrics.d.ts +30 -0
  25. package/dist/metrics.js +182 -0
  26. package/dist/metrics.js.map +1 -0
  27. package/dist/parser.d.ts +4 -0
  28. package/dist/parser.js +361 -0
  29. package/dist/parser.js.map +1 -0
  30. package/dist/spec.d.ts +17 -0
  31. package/dist/spec.js +86 -0
  32. package/dist/spec.js.map +1 -0
  33. package/dist/styles-react.d.ts +3 -0
  34. package/dist/styles-react.js +20 -0
  35. package/dist/styles-react.js.map +1 -0
  36. package/dist/styles-tailwind.d.ts +8 -0
  37. package/dist/styles-tailwind.js +197 -0
  38. package/dist/styles-tailwind.js.map +1 -0
  39. package/dist/transpiler-cli.d.ts +3 -0
  40. package/dist/transpiler-cli.js +279 -0
  41. package/dist/transpiler-cli.js.map +1 -0
  42. package/dist/transpiler-express.d.ts +3 -0
  43. package/dist/transpiler-express.js +612 -0
  44. package/dist/transpiler-express.js.map +1 -0
  45. package/dist/transpiler-nextjs.d.ts +21 -0
  46. package/dist/transpiler-nextjs.js +400 -0
  47. package/dist/transpiler-nextjs.js.map +1 -0
  48. package/dist/transpiler-tailwind.d.ts +3 -0
  49. package/dist/transpiler-tailwind.js +594 -0
  50. package/dist/transpiler-tailwind.js.map +1 -0
  51. package/dist/transpiler-terminal.d.ts +3 -0
  52. package/dist/transpiler-terminal.js +522 -0
  53. package/dist/transpiler-terminal.js.map +1 -0
  54. package/dist/transpiler-web.d.ts +3 -0
  55. package/dist/transpiler-web.js +218 -0
  56. package/dist/transpiler-web.js.map +1 -0
  57. package/dist/transpiler.d.ts +3 -0
  58. package/dist/transpiler.js +218 -0
  59. package/dist/transpiler.js.map +1 -0
  60. package/dist/types.d.ts +76 -0
  61. package/dist/types.js +11 -0
  62. package/dist/types.js.map +1 -0
  63. package/dist/utils.d.ts +5 -0
  64. package/dist/utils.js +36 -0
  65. package/dist/utils.js.map +1 -0
  66. package/kern.config.ts +61 -0
  67. package/package.json +64 -0
@@ -0,0 +1,21 @@
1
+ import type { IRNode, TranspileResult } from './types.js';
2
+ import type { ResolvedKernConfig } from './config.js';
3
+ /**
4
+ * Next.js App Router Transpiler
5
+ *
6
+ * Extends the Tailwind transpiler with Next.js-specific features:
7
+ * - page / layout / loading / error node types → file conventions
8
+ * - metadata node → generateMetadata export
9
+ * - Server vs client components (client=true flag)
10
+ * - next/link, next/image, next/navigation imports
11
+ * - Multi-file output via TranspileResult.files
12
+ */
13
+ interface NextFile {
14
+ path: string;
15
+ content: string;
16
+ }
17
+ interface NextTranspileResult extends TranspileResult {
18
+ files: NextFile[];
19
+ }
20
+ export declare function transpileNextjs(root: IRNode, config?: ResolvedKernConfig): NextTranspileResult;
21
+ export {};
@@ -0,0 +1,400 @@
1
+ import { stylesToTailwind, colorToTw } from './styles-tailwind.js';
2
+ import { countTokens, serializeIR, camelKey, escapeJsx } from './utils.js';
3
+ // ── Active config for current transpilation run ─────────────────────────
4
+ let _activeConfig;
5
+ function getProps(node) { return node.props || {}; }
6
+ function getStyles(node) { return getProps(node).styles || {}; }
7
+ function twClasses(node, extra = '') {
8
+ const tw = stylesToTailwind(getStyles(node), _activeConfig?.colors);
9
+ const parts = [tw, extra].filter(Boolean);
10
+ return parts.length > 0 ? ` className="${parts.join(' ')}"` : '';
11
+ }
12
+ // ── Node renderers ──────────────────────────────────────────────────────
13
+ function renderNode(node, ctx, indent) {
14
+ const p = getProps(node);
15
+ ctx.sourceMap.push({ irLine: node.loc?.line || 0, irCol: node.loc?.col || 1, outLine: ctx.lines.length + 1, outCol: 1 });
16
+ switch (node.type) {
17
+ case 'page':
18
+ case 'screen':
19
+ renderPage(node, ctx, indent);
20
+ break;
21
+ case 'layout':
22
+ renderLayout(node, ctx, indent);
23
+ break;
24
+ case 'loading':
25
+ renderLoading(node, ctx, indent);
26
+ break;
27
+ case 'error':
28
+ renderError(node, ctx, indent);
29
+ break;
30
+ case 'metadata':
31
+ renderMetadata(node, ctx);
32
+ break;
33
+ case 'section':
34
+ renderSection(node, ctx, indent);
35
+ break;
36
+ case 'card':
37
+ renderCard(node, ctx, indent);
38
+ break;
39
+ case 'row':
40
+ ctx.lines.push(`${indent}<div${twClasses(node, 'flex')}>`);
41
+ renderChildren(node, ctx, indent);
42
+ ctx.lines.push(`${indent}</div>`);
43
+ break;
44
+ case 'col':
45
+ ctx.lines.push(`${indent}<div${twClasses(node, 'flex flex-col')}>`);
46
+ renderChildren(node, ctx, indent);
47
+ ctx.lines.push(`${indent}</div>`);
48
+ break;
49
+ case 'text':
50
+ renderText(node, ctx, indent);
51
+ break;
52
+ case 'divider':
53
+ ctx.lines.push(`${indent}<div${twClasses(node, 'h-px')} />`);
54
+ break;
55
+ case 'button':
56
+ renderButton(node, ctx, indent);
57
+ break;
58
+ case 'link':
59
+ renderLink(node, ctx, indent);
60
+ break;
61
+ case 'image':
62
+ renderImage(node, ctx, indent);
63
+ break;
64
+ case 'input':
65
+ ctx.lines.push(`${indent}<input${twClasses(node)} />`);
66
+ break;
67
+ case 'slider':
68
+ renderSlider(node, ctx, indent);
69
+ break;
70
+ case 'toggle':
71
+ renderToggle(node, ctx, indent);
72
+ break;
73
+ case 'grid':
74
+ renderGrid(node, ctx, indent);
75
+ break;
76
+ case 'conditional':
77
+ renderConditional(node, ctx, indent);
78
+ break;
79
+ case 'component':
80
+ renderComponent(node, ctx, indent);
81
+ break;
82
+ case 'icon':
83
+ ctx.componentImports.add('Icon');
84
+ ctx.lines.push(`${indent}<Icon name="${p.name}" size="sm"${twClasses(node)} />`);
85
+ break;
86
+ case 'list':
87
+ ctx.lines.push(`${indent}<div${twClasses(node, 'space-y-2')}>`);
88
+ renderChildren(node, ctx, indent);
89
+ ctx.lines.push(`${indent}</div>`);
90
+ break;
91
+ case 'item':
92
+ ctx.lines.push(`${indent}<div${twClasses(node)}>`);
93
+ renderChildren(node, ctx, indent);
94
+ ctx.lines.push(`${indent}</div>`);
95
+ break;
96
+ case 'progress':
97
+ renderProgress(node, ctx, indent);
98
+ break;
99
+ case 'tabs':
100
+ ctx.lines.push(`${indent}<nav${twClasses(node, 'flex')}>`);
101
+ renderChildren(node, ctx, indent);
102
+ ctx.lines.push(`${indent}</nav>`);
103
+ break;
104
+ case 'tab':
105
+ ctx.lines.push(`${indent}<button${twClasses(node)}>${p.label}</button>`);
106
+ break;
107
+ case 'theme': break;
108
+ default:
109
+ ctx.lines.push(`${indent}<div${twClasses(node)}>`);
110
+ renderChildren(node, ctx, indent);
111
+ ctx.lines.push(`${indent}</div>`);
112
+ }
113
+ }
114
+ function renderChildren(node, ctx, indent) {
115
+ if (node.children)
116
+ for (const child of node.children)
117
+ renderNode(child, ctx, indent + ' ');
118
+ }
119
+ function renderPage(node, ctx, indent) {
120
+ const p = getProps(node);
121
+ if (p.client === 'true' || p.client === true)
122
+ ctx.isClient = true;
123
+ ctx.lines.push(`${indent}<div${twClasses(node)}>`);
124
+ renderChildren(node, ctx, indent);
125
+ ctx.lines.push(`${indent}</div>`);
126
+ }
127
+ function renderLayout(node, ctx, indent) {
128
+ const p = getProps(node);
129
+ ctx.lines.push(`${indent}<html lang="${p.lang || 'en'}">`);
130
+ ctx.lines.push(`${indent} <body${twClasses(node)}>`);
131
+ ctx.lines.push(`${indent} {children}`);
132
+ renderChildren(node, ctx, indent + ' ');
133
+ ctx.lines.push(`${indent} </body>`);
134
+ ctx.lines.push(`${indent}</html>`);
135
+ }
136
+ function renderLoading(node, ctx, indent) {
137
+ ctx.lines.push(`${indent}<div${twClasses(node, 'animate-pulse')}>`);
138
+ renderChildren(node, ctx, indent);
139
+ ctx.lines.push(`${indent}</div>`);
140
+ }
141
+ function renderError(node, ctx, indent) {
142
+ ctx.isClient = true;
143
+ ctx.lines.push(`${indent}<div${twClasses(node)}>`);
144
+ ctx.lines.push(`${indent} <h2>Something went wrong!</h2>`);
145
+ ctx.lines.push(`${indent} <button onClick={() => reset()}>Try again</button>`);
146
+ renderChildren(node, ctx, indent);
147
+ ctx.lines.push(`${indent}</div>`);
148
+ }
149
+ function renderMetadata(node, ctx) {
150
+ const p = getProps(node);
151
+ ctx.metadata = {};
152
+ if (p.title)
153
+ ctx.metadata.title = p.title;
154
+ if (p.description)
155
+ ctx.metadata.description = p.description;
156
+ if (p.keywords)
157
+ ctx.metadata.keywords = p.keywords;
158
+ if (p.ogImage)
159
+ ctx.metadata.ogImage = p.ogImage;
160
+ }
161
+ function renderSection(node, ctx, indent) {
162
+ const p = getProps(node);
163
+ const title = p.title || '';
164
+ const key = p.key || camelKey(title);
165
+ ctx.lines.push(`${indent}<section>`);
166
+ ctx.lines.push(`${indent} <h2 className="text-lg font-semibold mb-4">${title}</h2>`);
167
+ renderChildren(node, ctx, indent);
168
+ ctx.lines.push(`${indent}</section>`);
169
+ }
170
+ function renderCard(node, ctx, indent) {
171
+ const styles = getStyles(node);
172
+ const border = styles.border;
173
+ delete styles.border;
174
+ const extra = border ? `border ${colorToTw('border', border, _activeConfig?.colors)}` : '';
175
+ ctx.lines.push(`${indent}<div${twClasses(node, extra)}>`);
176
+ renderChildren(node, ctx, indent);
177
+ ctx.lines.push(`${indent}</div>`);
178
+ }
179
+ function renderText(node, ctx, indent) {
180
+ const p = getProps(node);
181
+ const value = p.value;
182
+ const bind = p.bind;
183
+ const el = p.tag === 'p' ? 'p' : p.tag === 'h1' ? 'h1' : p.tag === 'h2' ? 'h2' : p.tag === 'label' ? 'label' : 'span';
184
+ const tw = twClasses(node);
185
+ if (bind)
186
+ ctx.lines.push(`${indent}<${el}${tw}>{${bind}}</${el}>`);
187
+ else if (value)
188
+ ctx.lines.push(`${indent}<${el}${tw}>${value}</${el}>`);
189
+ }
190
+ function renderButton(node, ctx, indent) {
191
+ const p = getProps(node);
192
+ const text = p.text || '';
193
+ const to = p.to;
194
+ const onClick = p.onClick;
195
+ if (to) {
196
+ ctx.nextImports.add('Link');
197
+ ctx.lines.push(`${indent}<Link href="/${to.toLowerCase()}"${twClasses(node)}>${text}</Link>`);
198
+ }
199
+ else {
200
+ ctx.lines.push(`${indent}<button${twClasses(node)} onClick={${onClick || '() => {}'}}>${text}</button>`);
201
+ }
202
+ }
203
+ function renderLink(node, ctx, indent) {
204
+ const p = getProps(node);
205
+ ctx.nextImports.add('Link');
206
+ ctx.lines.push(`${indent}<Link href="${p.to || '/'}"${twClasses(node)}>`);
207
+ renderChildren(node, ctx, indent);
208
+ ctx.lines.push(`${indent}</Link>`);
209
+ }
210
+ function renderImage(node, ctx, indent) {
211
+ const p = getProps(node);
212
+ ctx.nextImports.add('Image');
213
+ const tw = twClasses(node);
214
+ const width = p.width || (getStyles(node).w) || '100';
215
+ const height = p.height || (getStyles(node).h) || '100';
216
+ ctx.lines.push(`${indent}<Image src="/${p.src}.png" alt="${p.alt || p.src}" width={${width}} height={${height}}${tw} />`);
217
+ }
218
+ function renderSlider(node, ctx, indent) {
219
+ const p = getProps(node);
220
+ const bind = p.bind;
221
+ const setter = bind ? `set${bind.charAt(0).toUpperCase() + bind.slice(1)}` : 'setValue';
222
+ ctx.lines.push(`${indent}<input type="range" min={${p.min || 0}} max={${p.max || 100}} step={${p.step || 1}} value={${bind || 'value'}} onChange={(e) => ${setter}(parseFloat(e.target.value))} className="w-full h-2 bg-zinc-700 rounded-lg appearance-none cursor-pointer accent-orange-500" />`);
223
+ }
224
+ function renderToggle(node, ctx, indent) {
225
+ const p = getProps(node);
226
+ const bind = p.bind;
227
+ const setter = bind ? `set${bind.charAt(0).toUpperCase() + bind.slice(1)}` : 'setValue';
228
+ ctx.lines.push(`${indent}<label className="relative inline-flex items-center cursor-pointer">`);
229
+ ctx.lines.push(`${indent} <input type="checkbox" className="sr-only peer" checked={${bind || 'value'}} onChange={(e) => ${setter}(e.target.checked)} />`);
230
+ ctx.lines.push(`${indent} <div className="w-11 h-6 bg-zinc-700 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-orange-600" />`);
231
+ ctx.lines.push(`${indent}</label>`);
232
+ }
233
+ function renderGrid(node, ctx, indent) {
234
+ const p = getProps(node);
235
+ ctx.lines.push(`${indent}<div className="grid grid-cols-1 md:grid-cols-${p.cols || 1} gap-${Math.round(Number(p.gap || 16) / 4)}">`);
236
+ renderChildren(node, ctx, indent);
237
+ ctx.lines.push(`${indent}</div>`);
238
+ }
239
+ function renderConditional(node, ctx, indent) {
240
+ const cond = (getProps(node).if || 'true').replace(/&/g, ' && ').replace(/([a-zA-Z_]+)=([a-zA-Z_]+)/g, "$1 === '$2'");
241
+ ctx.lines.push(`${indent}{${cond} && (`);
242
+ ctx.lines.push(`${indent} <>`);
243
+ renderChildren(node, ctx, indent + ' ');
244
+ ctx.lines.push(`${indent} </>`);
245
+ ctx.lines.push(`${indent})}`);
246
+ }
247
+ function renderComponent(node, ctx, indent) {
248
+ const p = getProps(node);
249
+ const ref = p.ref;
250
+ if (!ref)
251
+ return;
252
+ ctx.componentImports.add(ref);
253
+ const hasOnChange = 'onChange' in p;
254
+ const attrs = [];
255
+ for (const [k, v] of Object.entries(p)) {
256
+ if (['ref', 'styles', 'pseudoStyles', 'themeRefs'].includes(k))
257
+ continue;
258
+ if (k === 'bind') {
259
+ attrs.push(`value={${v}}`);
260
+ if (!hasOnChange)
261
+ attrs.push(`onChange={set${v.charAt(0).toUpperCase() + v.slice(1)}}`);
262
+ }
263
+ else if (k === 'onChange')
264
+ attrs.push(`onChange={${v}}`);
265
+ else if (k === 'props') {
266
+ for (const pn of v.split(','))
267
+ attrs.push(`${pn.trim()}={${pn.trim()}}`);
268
+ }
269
+ else if (k === 'disabled')
270
+ attrs.push(`disabled={${v.replace(/&/g, ' && ').replace(/([a-zA-Z_]+)=([a-zA-Z_]+)/g, "$1 === '$2'")}}`);
271
+ else if (k === 'default')
272
+ attrs.push(`defaultValue={${JSON.stringify(v)}}`);
273
+ else
274
+ attrs.push(`${k}={${JSON.stringify(v)}}`);
275
+ }
276
+ ctx.lines.push(`${indent}<${ref}${attrs.length ? ' ' + attrs.join(' ') : ''} />`);
277
+ }
278
+ function renderProgress(node, ctx, indent) {
279
+ const p = getProps(node);
280
+ const current = Number(p.current || 0), target = Number(p.target || 100);
281
+ const pct = Math.round((current / target) * 100);
282
+ ctx.lines.push(`${indent}<div className="mb-3">`);
283
+ ctx.lines.push(`${indent} <div className="flex justify-between text-sm mb-1"><span>${p.label}</span><span>${current}/${target} ${p.unit || ''}</span></div>`);
284
+ ctx.lines.push(`${indent} <div className="h-2 bg-zinc-700 rounded-full overflow-hidden"><div className="h-full rounded-full bg-[${p.color || '#007AFF'}]" style={{ width: '${pct}%' }} /></div>`);
285
+ ctx.lines.push(`${indent}</div>`);
286
+ }
287
+ // ── Main export ─────────────────────────────────────────────────────────
288
+ export function transpileNextjs(root, config) {
289
+ _activeConfig = config;
290
+ try {
291
+ return _transpileNextjsInner(root, config);
292
+ }
293
+ finally {
294
+ _activeConfig = undefined;
295
+ }
296
+ }
297
+ function _transpileNextjsInner(root, config) {
298
+ const ctx = {
299
+ lines: [],
300
+ sourceMap: [],
301
+ imports: new Set(),
302
+ nextImports: new Set(),
303
+ componentImports: new Set(),
304
+ isClient: false,
305
+ metadata: null,
306
+ };
307
+ // Check root for client flag
308
+ const rootProps = getProps(root);
309
+ if (rootProps.client === 'true' || rootProps.client === true)
310
+ ctx.isClient = true;
311
+ // Check for metadata child
312
+ if (root.children) {
313
+ for (const child of root.children) {
314
+ if (child.type === 'metadata')
315
+ renderMetadata(child, ctx);
316
+ }
317
+ }
318
+ renderNode(root, ctx, ' ');
319
+ const name = rootProps.name || 'Page';
320
+ const isLayout = root.type === 'layout';
321
+ const isLoading = root.type === 'loading';
322
+ const isError = root.type === 'error';
323
+ const code = [];
324
+ // 'use client' directive
325
+ if (ctx.isClient) {
326
+ code.push(`'use client';`);
327
+ code.push('');
328
+ }
329
+ // Next.js imports
330
+ if (ctx.nextImports.size > 0) {
331
+ const linkImport = ctx.nextImports.has('Link');
332
+ const imageImport = ctx.nextImports.has('Image');
333
+ if (linkImport)
334
+ code.push(`import Link from 'next/link';`);
335
+ if (imageImport)
336
+ code.push(`import Image from 'next/image';`);
337
+ }
338
+ // Component imports
339
+ const uiLib = config?.components?.uiLibrary ?? '@/components/ui';
340
+ const compRoot = config?.components?.componentRoot ?? '@/components';
341
+ if (ctx.componentImports.size > 0) {
342
+ const uiImports = [...ctx.componentImports].filter(c => ['Icon', 'Button'].includes(c));
343
+ const others = [...ctx.componentImports].filter(c => !['Icon', 'Button'].includes(c));
344
+ if (uiImports.length > 0)
345
+ code.push(`import { ${uiImports.join(', ')} } from '${uiLib}';`);
346
+ for (const imp of others)
347
+ code.push(`import { ${imp} } from '${compRoot}/${imp}';`);
348
+ }
349
+ if (code.length > 0 && code[code.length - 1] !== '')
350
+ code.push('');
351
+ // Metadata export (server components only)
352
+ if (ctx.metadata && !ctx.isClient) {
353
+ code.push(`import type { Metadata } from 'next';`);
354
+ code.push('');
355
+ code.push(`export const metadata: Metadata = {`);
356
+ for (const [k, v] of Object.entries(ctx.metadata)) {
357
+ code.push(` ${k}: '${escapeJsx(v)}',`);
358
+ }
359
+ code.push(`};`);
360
+ code.push('');
361
+ }
362
+ // Component
363
+ if (isLayout) {
364
+ code.push(`export default function ${name}({ children }: { children: React.ReactNode }) {`);
365
+ }
366
+ else if (isError) {
367
+ code.push(`export default function ${name}({ error, reset }: { error: Error; reset: () => void }) {`);
368
+ }
369
+ else {
370
+ code.push(`export default function ${name}() {`);
371
+ }
372
+ code.push(' return (');
373
+ code.push(...ctx.lines);
374
+ code.push(' );');
375
+ code.push('}');
376
+ const output = code.join('\n');
377
+ const irText = serializeIR(root);
378
+ const irTokenCount = countTokens(irText);
379
+ const tsTokenCount = countTokens(output);
380
+ const tokenReduction = Math.round((1 - irTokenCount / tsTokenCount) * 100);
381
+ // Determine output filename convention
382
+ const files = [];
383
+ if (isLayout)
384
+ files.push({ path: 'layout.tsx', content: output });
385
+ else if (isLoading)
386
+ files.push({ path: 'loading.tsx', content: output });
387
+ else if (isError)
388
+ files.push({ path: 'error.tsx', content: output });
389
+ else
390
+ files.push({ path: 'page.tsx', content: output });
391
+ return {
392
+ code: output,
393
+ sourceMap: ctx.sourceMap,
394
+ irTokenCount,
395
+ tsTokenCount,
396
+ tokenReduction,
397
+ files,
398
+ };
399
+ }
400
+ //# sourceMappingURL=transpiler-nextjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transpiler-nextjs.js","sourceRoot":"","sources":["../src/transpiler-nextjs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { IRNode, TranspileResult } from './types.js';
2
+ import type { ResolvedKernConfig } from './config.js';
3
+ export declare function transpileTailwind(root: IRNode, config?: ResolvedKernConfig): TranspileResult;