@kernlang/vue 2.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.
@@ -0,0 +1,469 @@
1
+ /**
2
+ * Nuxt 3 Transpiler — extends Vue 3 SFC output with Nuxt conventions.
3
+ *
4
+ * Differences from plain Vue:
5
+ * - Pages go in pages/ with file-based routing
6
+ * - Layouts go in layouts/
7
+ * - Middleware go in middleware/
8
+ * - Server routes go in server/api/
9
+ * - Auto-imports assumed (no explicit 'import { ref } from "vue"')
10
+ * - Uses Nuxt composables: useHead, useRoute, navigateTo
11
+ */
12
+ import { expandStyles, countTokens, serializeIR } from '@kernlang/core';
13
+ // ── Node → HTML Element Mapping (same as Vue) ───────────────────────────
14
+ const NODE_TO_ELEMENT = {
15
+ screen: 'div',
16
+ row: 'div',
17
+ col: 'div',
18
+ card: 'div',
19
+ scroll: 'div',
20
+ text: 'p',
21
+ image: 'img',
22
+ button: 'button',
23
+ input: 'input',
24
+ modal: 'dialog',
25
+ list: 'ul',
26
+ item: 'li',
27
+ tabs: 'div',
28
+ tab: 'button',
29
+ header: 'header',
30
+ divider: 'hr',
31
+ progress: 'progress',
32
+ section: 'section',
33
+ form: 'form',
34
+ grid: 'div',
35
+ };
36
+ function textElement(variant) {
37
+ if (!variant)
38
+ return 'p';
39
+ const map = { h1: 'h1', h2: 'h2', h3: 'h3', h4: 'h4', h5: 'h5', h6: 'h6', caption: 'small', small: 'small', code: 'code' };
40
+ return map[variant] || 'p';
41
+ }
42
+ function cssPropertyName(camel) {
43
+ return camel.replace(/([A-Z])/g, '-$1').toLowerCase();
44
+ }
45
+ function cssValue(key, value) {
46
+ if (typeof value === 'number') {
47
+ const unitless = ['flex', 'fontWeight', 'opacity', 'zIndex', 'lineHeight'];
48
+ if (unitless.some(u => key.toLowerCase().includes(u.toLowerCase())))
49
+ return String(value);
50
+ return `${value}px`;
51
+ }
52
+ return String(value);
53
+ }
54
+ function getProps(node) {
55
+ return node.props || {};
56
+ }
57
+ function getStyles(node) {
58
+ return getProps(node).styles || {};
59
+ }
60
+ function getThemeRefs(node) {
61
+ return getProps(node).themeRefs || [];
62
+ }
63
+ function createBuilder(config) {
64
+ return {
65
+ templateLines: [],
66
+ scriptLines: [],
67
+ stateDecls: [],
68
+ logicBlocks: [],
69
+ cssRules: new Map(),
70
+ sourceMap: [],
71
+ classIdx: 0,
72
+ themes: {},
73
+ hasHead: false,
74
+ headMeta: {},
75
+ config,
76
+ };
77
+ }
78
+ // ── Theme Collection ─────────────────────────────────────────────────────
79
+ function collectThemes(node, ctx) {
80
+ if (node.type === 'theme' && node.props?.styles) {
81
+ const keys = Object.keys(node.props).filter(k => k !== 'styles' && k !== 'pseudoStyles' && k !== 'themeRefs');
82
+ const name = keys[0] || `theme_${ctx.classIdx++}`;
83
+ ctx.themes[name] = node.props.styles;
84
+ }
85
+ if (node.children)
86
+ node.children.forEach(c => collectThemes(c, ctx));
87
+ }
88
+ // ── Style helpers ────────────────────────────────────────────────────────
89
+ function addClass(ctx, nodeType, styles) {
90
+ if (Object.keys(styles).length === 0)
91
+ return '';
92
+ const className = `${nodeType}-${ctx.classIdx++}`;
93
+ ctx.cssRules.set(className, styles);
94
+ return className;
95
+ }
96
+ function mergeNodeStyles(node, ctx) {
97
+ let merged = {};
98
+ for (const ref of getThemeRefs(node)) {
99
+ if (ctx.themes[ref])
100
+ merged = { ...merged, ...expandStyles(ctx.themes[ref]) };
101
+ }
102
+ const styles = getStyles(node);
103
+ if (Object.keys(styles).length > 0)
104
+ merged = { ...merged, ...expandStyles(styles) };
105
+ return merged;
106
+ }
107
+ function addLayoutDefaults(nodeType, styles) {
108
+ const s = { ...styles };
109
+ if (nodeType === 'screen') {
110
+ if (!s.display)
111
+ s.display = 'flex';
112
+ if (!s.flexDirection)
113
+ s.flexDirection = 'column';
114
+ if (!s.minHeight)
115
+ s.minHeight = '100vh';
116
+ }
117
+ if (nodeType === 'row') {
118
+ if (!s.display)
119
+ s.display = 'flex';
120
+ if (!s.flexDirection)
121
+ s.flexDirection = 'row';
122
+ }
123
+ if (nodeType === 'col') {
124
+ if (!s.display)
125
+ s.display = 'flex';
126
+ if (!s.flexDirection)
127
+ s.flexDirection = 'column';
128
+ }
129
+ if (nodeType === 'card') {
130
+ if (!s.boxShadow)
131
+ s.boxShadow = '0 2px 8px rgba(0,0,0,0.1)';
132
+ }
133
+ if (nodeType === 'grid') {
134
+ if (!s.display)
135
+ s.display = 'grid';
136
+ }
137
+ if (nodeType === 'scroll') {
138
+ if (!s.overflow)
139
+ s.overflow = 'auto';
140
+ }
141
+ return s;
142
+ }
143
+ // ── Template rendering ───────────────────────────────────────────────────
144
+ function renderNode(node, ctx, indent) {
145
+ const props = getProps(node);
146
+ switch (node.type) {
147
+ case 'state':
148
+ ctx.stateDecls.push({ name: props.name, initial: props.initial });
149
+ return;
150
+ case 'logic':
151
+ ctx.logicBlocks.push(props.code);
152
+ return;
153
+ case 'theme':
154
+ case 'handler':
155
+ return;
156
+ case 'metadata':
157
+ // Nuxt useHead
158
+ ctx.hasHead = true;
159
+ if (props.title)
160
+ ctx.headMeta.title = props.title;
161
+ if (props.description)
162
+ ctx.headMeta.description = props.description;
163
+ return;
164
+ default:
165
+ break;
166
+ }
167
+ let el;
168
+ if (node.type === 'text') {
169
+ el = textElement(props.variant);
170
+ }
171
+ else {
172
+ el = NODE_TO_ELEMENT[node.type] || 'div';
173
+ }
174
+ // Styles
175
+ let styles = mergeNodeStyles(node, ctx);
176
+ styles = addLayoutDefaults(node.type, styles);
177
+ const className = addClass(ctx, node.type, styles);
178
+ const attrs = [];
179
+ if (className)
180
+ attrs.push(`class="${className}"`);
181
+ // Nuxt-specific: use NuxtLink instead of button with to
182
+ if (node.type === 'button' && props.to) {
183
+ el = 'NuxtLink';
184
+ attrs.push(`:to="'/${props.to}'"`);
185
+ }
186
+ if (node.type === 'button' && props.action) {
187
+ attrs.push(`@click="${props.action}"`);
188
+ }
189
+ if (node.type === 'image' && props.src) {
190
+ attrs.push(`:src="'/${props.src}.png'"`);
191
+ attrs.push(`alt="${props.src}"`);
192
+ }
193
+ if (node.type === 'input') {
194
+ if (props.bind)
195
+ attrs.push(`v-model="${props.bind}"`);
196
+ if (props.placeholder)
197
+ attrs.push(`placeholder="${props.placeholder}"`);
198
+ if (props.type)
199
+ attrs.push(`type="${props.type}"`);
200
+ }
201
+ if (node.type === 'list' && props.items) {
202
+ const itemVar = props.itemVar || 'item';
203
+ attrs.push(`v-for="${itemVar} in ${props.items}" :key="${itemVar}.id || ${itemVar}"`);
204
+ }
205
+ if (node.type === 'progress') {
206
+ if (props.current)
207
+ attrs.push(`:value="${props.current}"`);
208
+ if (props.target)
209
+ attrs.push(`:max="${props.target}"`);
210
+ }
211
+ const attrStr = attrs.length > 0 ? ' ' + attrs.join(' ') : '';
212
+ const selfClosing = ['image', 'divider', 'input'].includes(node.type);
213
+ const hasContent = (node.children && node.children.some(c => c.type !== 'state' && c.type !== 'logic' && c.type !== 'theme' &&
214
+ c.type !== 'handler' && c.type !== 'metadata')) ||
215
+ (node.type === 'text' && props.value) ||
216
+ (node.type === 'button' && props.text) ||
217
+ (node.type === 'section' && props.title);
218
+ if (selfClosing && !hasContent) {
219
+ ctx.templateLines.push(`${indent}<${el}${attrStr} />`);
220
+ return;
221
+ }
222
+ ctx.templateLines.push(`${indent}<${el}${attrStr}>`);
223
+ if (node.type === 'text' && props.value) {
224
+ const val = props.value;
225
+ if (typeof val === 'string' && val.startsWith('{{') && val.endsWith('}}')) {
226
+ ctx.templateLines.push(`${indent} {{ ${val.slice(2, -2).trim()} }}`);
227
+ }
228
+ else {
229
+ ctx.templateLines.push(`${indent} ${val}`);
230
+ }
231
+ }
232
+ if (node.type === 'button' && props.text) {
233
+ ctx.templateLines.push(`${indent} ${props.text}`);
234
+ }
235
+ if (node.type === 'section' && props.title) {
236
+ ctx.templateLines.push(`${indent} <h2>${props.title}</h2>`);
237
+ }
238
+ // Tabs — same as Vue transpiler
239
+ if (node.type === 'tabs') {
240
+ const tabs = (node.children || []).filter(c => c.type === 'tab');
241
+ if (tabs.length === 0) {
242
+ ctx.templateLines.push(`${indent}</${el}>`);
243
+ return;
244
+ }
245
+ const tabVarName = `activeTab_${ctx.classIdx}`;
246
+ const firstTabName = getProps(tabs[0]).name || '0';
247
+ ctx.stateDecls.push({ name: tabVarName, initial: `'${firstTabName}'` });
248
+ ctx.templateLines.push(`${indent} <div class="tab-buttons">`);
249
+ for (const tab of tabs) {
250
+ const tp = getProps(tab);
251
+ const tabName = tp.name || 'tab';
252
+ const label = tp.label || tp.name || 'Tab';
253
+ ctx.templateLines.push(`${indent} <button @click="${tabVarName} = '${tabName}'" :class="{ active: ${tabVarName} === '${tabName}' }">${label}</button>`);
254
+ }
255
+ ctx.templateLines.push(`${indent} </div>`);
256
+ for (const tab of tabs) {
257
+ const tp = getProps(tab);
258
+ const tabName = tp.name || 'tab';
259
+ ctx.templateLines.push(`${indent} <div v-if="${tabVarName} === '${tabName}'">`);
260
+ if (tab.children) {
261
+ for (const child of tab.children) {
262
+ renderNode(child, ctx, indent + ' ');
263
+ }
264
+ }
265
+ ctx.templateLines.push(`${indent} </div>`);
266
+ }
267
+ }
268
+ else if (node.children) {
269
+ for (const child of node.children) {
270
+ renderNode(child, ctx, indent + ' ');
271
+ }
272
+ }
273
+ ctx.templateLines.push(`${indent}</${el}>`);
274
+ }
275
+ // ── CSS Generation ───────────────────────────────────────────────────────
276
+ function generateScopedCSS(ctx) {
277
+ if (ctx.cssRules.size === 0)
278
+ return '';
279
+ const lines = [];
280
+ for (const [className, styles] of ctx.cssRules) {
281
+ lines.push(`.${className} {`);
282
+ for (const [key, value] of Object.entries(styles)) {
283
+ lines.push(` ${cssPropertyName(key)}: ${cssValue(key, value)};`);
284
+ }
285
+ lines.push('}');
286
+ lines.push('');
287
+ }
288
+ return lines.join('\n');
289
+ }
290
+ // ── Route path from node name ────────────────────────────────────────────
291
+ function inferRoutePath(name) {
292
+ // PascalCase → kebab-case, "Index" or "Home" → index
293
+ if (name === 'Index' || name === 'Home')
294
+ return 'index';
295
+ return name.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
296
+ }
297
+ // ── Determine output structure (page vs layout vs middleware) ─────────────
298
+ function classifyNuxtNode(node) {
299
+ const props = getProps(node);
300
+ if (node.type === 'layout')
301
+ return 'layout';
302
+ if (node.type === 'middleware' || props.middleware === 'true')
303
+ return 'middleware';
304
+ if (node.type === 'route' || props.route === 'true')
305
+ return 'server';
306
+ if (node.type === 'page' || node.type === 'screen')
307
+ return 'page';
308
+ return 'component';
309
+ }
310
+ // ── Script setup (Nuxt: no explicit vue imports) ─────────────────────────
311
+ function generateScriptSetup(ctx) {
312
+ const lines = [];
313
+ // Nuxt: auto-imports ref, computed, watch — no explicit import needed
314
+ // useHead for metadata
315
+ if (ctx.hasHead) {
316
+ const headEntries = [];
317
+ if (ctx.headMeta.title)
318
+ headEntries.push(` title: '${ctx.headMeta.title}'`);
319
+ if (ctx.headMeta.description) {
320
+ headEntries.push(` meta: [{ name: 'description', content: '${ctx.headMeta.description}' }]`);
321
+ }
322
+ lines.push(`useHead({`);
323
+ lines.push(headEntries.join(',\n'));
324
+ lines.push(`});`);
325
+ lines.push('');
326
+ }
327
+ // State → ref() (auto-imported)
328
+ for (const s of ctx.stateDecls) {
329
+ const initial = s.initial;
330
+ if (initial === undefined || initial === 'undefined') {
331
+ lines.push(`const ${s.name} = ref();`);
332
+ }
333
+ else if (initial === 'true' || initial === 'false' || !isNaN(Number(initial))) {
334
+ lines.push(`const ${s.name} = ref(${initial});`);
335
+ }
336
+ else if (initial.startsWith("'") || initial.startsWith('"') || initial.startsWith('[') || initial.startsWith('{')) {
337
+ lines.push(`const ${s.name} = ref(${initial});`);
338
+ }
339
+ else {
340
+ lines.push(`const ${s.name} = ref('${initial}');`);
341
+ }
342
+ }
343
+ if (ctx.stateDecls.length > 0)
344
+ lines.push('');
345
+ // Logic blocks
346
+ for (const block of ctx.logicBlocks) {
347
+ lines.push(block);
348
+ lines.push('');
349
+ }
350
+ return lines.join('\n');
351
+ }
352
+ // ── Main Transpiler ──────────────────────────────────────────────────────
353
+ export function transpileNuxt(root, config) {
354
+ const ctx = createBuilder(config);
355
+ const rootProps = getProps(root);
356
+ const name = rootProps.name || 'Page';
357
+ collectThemes(root, ctx);
358
+ renderNode(root, ctx, ' ');
359
+ const scriptSetup = generateScriptSetup(ctx);
360
+ const scopedCSS = generateScopedCSS(ctx);
361
+ // Assemble SFC
362
+ const sfc = [];
363
+ // Nuxt script setup — no explicit vue imports
364
+ sfc.push('<script setup lang="ts">');
365
+ if (scriptSetup.trim()) {
366
+ sfc.push(scriptSetup.trimEnd());
367
+ }
368
+ sfc.push('</script>');
369
+ sfc.push('');
370
+ sfc.push('<template>');
371
+ sfc.push(...ctx.templateLines);
372
+ sfc.push('</template>');
373
+ if (scopedCSS.trim()) {
374
+ sfc.push('');
375
+ sfc.push('<style scoped>');
376
+ sfc.push(scopedCSS.trimEnd());
377
+ sfc.push('</style>');
378
+ }
379
+ const code = sfc.join('\n') + '\n';
380
+ // Generate artifacts for Nuxt file structure
381
+ const nodeType = classifyNuxtNode(root);
382
+ const artifacts = [];
383
+ const routePath = inferRoutePath(name);
384
+ if (nodeType === 'page') {
385
+ artifacts.push({
386
+ path: `pages/${routePath}.vue`,
387
+ content: code,
388
+ type: 'page',
389
+ });
390
+ }
391
+ else if (nodeType === 'layout') {
392
+ artifacts.push({
393
+ path: `layouts/${routePath}.vue`,
394
+ content: code,
395
+ type: 'layout',
396
+ });
397
+ }
398
+ else if (nodeType === 'middleware') {
399
+ // Middleware is a TS file, not SFC
400
+ const mwCode = generateMiddleware(root);
401
+ artifacts.push({
402
+ path: `middleware/${routePath}.ts`,
403
+ content: mwCode,
404
+ type: 'middleware',
405
+ });
406
+ }
407
+ else if (nodeType === 'server') {
408
+ // Server route — Nuxt convention: users.post.ts, users.get.ts
409
+ const method = (rootProps.method || 'get').toLowerCase();
410
+ const serverCode = generateServerRoute(root);
411
+ const methodSuffix = method !== 'get' ? `.${method}` : '';
412
+ artifacts.push({
413
+ path: `server/api/${routePath}${methodSuffix}.ts`,
414
+ content: serverCode,
415
+ type: 'route',
416
+ });
417
+ }
418
+ const irText = serializeIR(root);
419
+ const irTokenCount = countTokens(irText);
420
+ const tsTokenCount = countTokens(code);
421
+ const tokenReduction = tsTokenCount > 0 ? Math.round((1 - irTokenCount / tsTokenCount) * 100) : 0;
422
+ return {
423
+ code,
424
+ sourceMap: ctx.sourceMap,
425
+ irTokenCount,
426
+ tsTokenCount,
427
+ tokenReduction,
428
+ artifacts: artifacts.length > 0 ? artifacts : undefined,
429
+ };
430
+ }
431
+ // ── Middleware Generation ─────────────────────────────────────────────────
432
+ function generateMiddleware(node) {
433
+ const props = getProps(node);
434
+ const name = props.name || 'middleware';
435
+ const handler = (node.children || []).find(c => c.type === 'handler');
436
+ const code = handler ? (getProps(handler).code || '') : '';
437
+ const lines = [];
438
+ lines.push(`export default defineNuxtRouteMiddleware((to, from) => {`);
439
+ if (code) {
440
+ const dedented = code.split('\n');
441
+ const nonEmpty = dedented.filter(l => l.trim().length > 0);
442
+ const min = nonEmpty.length > 0 ? Math.min(...nonEmpty.map(l => l.match(/^(\s*)/)?.[1].length ?? 0)) : 0;
443
+ for (const line of dedented) {
444
+ lines.push(` ${line.slice(min)}`);
445
+ }
446
+ }
447
+ lines.push(`});`);
448
+ return lines.join('\n') + '\n';
449
+ }
450
+ // ── Server Route Generation ──────────────────────────────────────────────
451
+ function generateServerRoute(node) {
452
+ const props = getProps(node);
453
+ const method = (props.method || 'get').toLowerCase();
454
+ const handler = (node.children || []).find(c => c.type === 'handler');
455
+ const code = handler ? (getProps(handler).code || '') : '';
456
+ const lines = [];
457
+ lines.push(`export default defineEventHandler(async (event) => {`);
458
+ if (code) {
459
+ const dedented = code.split('\n');
460
+ const nonEmpty = dedented.filter(l => l.trim().length > 0);
461
+ const min = nonEmpty.length > 0 ? Math.min(...nonEmpty.map(l => l.match(/^(\s*)/)?.[1].length ?? 0)) : 0;
462
+ for (const line of dedented) {
463
+ lines.push(` ${line.slice(min)}`);
464
+ }
465
+ }
466
+ lines.push(`});`);
467
+ return lines.join('\n') + '\n';
468
+ }
469
+ //# sourceMappingURL=transpiler-nuxt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transpiler-nuxt.js","sourceRoot":"","sources":["../src/transpiler-nuxt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Vue 3 SFC Transpiler — generates <script setup> + <template> + <style scoped>
3
+ *
4
+ * Maps the same KERN IR nodes to Vue Single File Components instead of React TSX.
5
+ * Core language nodes (type, interface, fn, machine, etc.) already produce pure TS
6
+ * via @kernlang/core — this transpiler only handles UI nodes.
7
+ */
8
+ import type { IRNode, TranspileResult, ResolvedKernConfig } from '@kernlang/core';
9
+ export declare function transpileVue(root: IRNode, config?: ResolvedKernConfig): TranspileResult;