@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.
- package/LICENSE +661 -0
- package/dist/codegen-vue.d.ts +12 -0
- package/dist/codegen-vue.js +347 -0
- package/dist/codegen-vue.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/transpiler-nuxt.d.ts +13 -0
- package/dist/transpiler-nuxt.js +469 -0
- package/dist/transpiler-nuxt.js.map +1 -0
- package/dist/transpiler-vue.d.ts +9 -0
- package/dist/transpiler-vue.js +450 -0
- package/dist/transpiler-vue.js.map +1 -0
- package/package.json +22 -0
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vue-specific codegen — generates Vue 3 Composition API code for
|
|
3
|
+
* provider (provide/inject), effect (onMounted/watch), and hook (composable) nodes.
|
|
4
|
+
*
|
|
5
|
+
* Mirrors @kernlang/react/codegen-react.ts but outputs Vue instead of React/JSX.
|
|
6
|
+
*/
|
|
7
|
+
import { parseParamList } from '@kernlang/core';
|
|
8
|
+
// ── Helpers ──────────────────────────────────────────────────────────────
|
|
9
|
+
function p(node) {
|
|
10
|
+
return node.props || {};
|
|
11
|
+
}
|
|
12
|
+
function kids(node, type) {
|
|
13
|
+
const c = node.children || [];
|
|
14
|
+
return type ? c.filter(n => n.type === type) : c;
|
|
15
|
+
}
|
|
16
|
+
function firstChild(node, type) {
|
|
17
|
+
return kids(node, type)[0];
|
|
18
|
+
}
|
|
19
|
+
function dedent(code) {
|
|
20
|
+
const lines = code.split('\n');
|
|
21
|
+
const nonEmpty = lines.filter(l => l.trim().length > 0);
|
|
22
|
+
if (nonEmpty.length === 0)
|
|
23
|
+
return code;
|
|
24
|
+
const min = Math.min(...nonEmpty.map(l => l.match(/^(\s*)/)?.[1].length ?? 0));
|
|
25
|
+
return lines.map(l => l.slice(min)).join('\n');
|
|
26
|
+
}
|
|
27
|
+
function handlerCode(node) {
|
|
28
|
+
const handler = firstChild(node, 'handler');
|
|
29
|
+
if (!handler)
|
|
30
|
+
return '';
|
|
31
|
+
const raw = p(handler).code || '';
|
|
32
|
+
return dedent(raw);
|
|
33
|
+
}
|
|
34
|
+
// ── Provider → provide/inject ────────────────────────────────────────────
|
|
35
|
+
// provider name=Search type=UseSearchResult
|
|
36
|
+
// prop name=initialQuery type=string
|
|
37
|
+
// handler <<<
|
|
38
|
+
// const value = useSearch({ query: initialQuery, category });
|
|
39
|
+
// >>>
|
|
40
|
+
//
|
|
41
|
+
// Generates:
|
|
42
|
+
// 1. InjectionKey<UseSearchResult>
|
|
43
|
+
// 2. provide() composable wrapper (provideSearch)
|
|
44
|
+
// 3. inject() consumer composable (useSearchContext)
|
|
45
|
+
export function generateVueProvider(node) {
|
|
46
|
+
const props = p(node);
|
|
47
|
+
const name = props.name;
|
|
48
|
+
const valueType = props.type;
|
|
49
|
+
const lines = [];
|
|
50
|
+
lines.push("import type { InjectionKey } from 'vue';");
|
|
51
|
+
lines.push("import { provide, inject } from 'vue';");
|
|
52
|
+
lines.push('');
|
|
53
|
+
// 1. Injection key
|
|
54
|
+
lines.push(`export const ${name}Key: InjectionKey<${valueType}> = Symbol('${name}');`);
|
|
55
|
+
lines.push('');
|
|
56
|
+
// 2. Provider composable
|
|
57
|
+
const propNodes = kids(node, 'prop');
|
|
58
|
+
const paramParts = [];
|
|
59
|
+
for (const prop of propNodes) {
|
|
60
|
+
const pp = p(prop);
|
|
61
|
+
const opt = pp.optional === 'true' || pp.optional === true ? '?' : '';
|
|
62
|
+
paramParts.push(`${pp.name}${opt}: ${pp.type}`);
|
|
63
|
+
}
|
|
64
|
+
const paramStr = paramParts.length > 0 ? paramParts.join(', ') : '';
|
|
65
|
+
lines.push(`export function provide${name}(${paramStr}): ${valueType} {`);
|
|
66
|
+
const code = handlerCode(node);
|
|
67
|
+
if (code) {
|
|
68
|
+
for (const line of code.split('\n')) {
|
|
69
|
+
lines.push(` ${line}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
lines.push(` provide(${name}Key, value);`);
|
|
73
|
+
lines.push(` return value;`);
|
|
74
|
+
lines.push('}');
|
|
75
|
+
lines.push('');
|
|
76
|
+
// 3. Consumer composable
|
|
77
|
+
lines.push(`export function use${name}Context(): ${valueType} {`);
|
|
78
|
+
lines.push(` const ctx = inject(${name}Key);`);
|
|
79
|
+
lines.push(` if (ctx === undefined) {`);
|
|
80
|
+
lines.push(` throw new Error('use${name}Context must be used within a component that calls provide${name}');`);
|
|
81
|
+
lines.push(` }`);
|
|
82
|
+
lines.push(` return ctx;`);
|
|
83
|
+
lines.push('}');
|
|
84
|
+
return lines;
|
|
85
|
+
}
|
|
86
|
+
// ── Effect → onMounted / watchEffect / watch ─────────────────────────────
|
|
87
|
+
// effect name=TrackingContainer once=true deps="entities,generator"
|
|
88
|
+
// prop name=entities type="T[]"
|
|
89
|
+
// handler <<<
|
|
90
|
+
// generator(entities).then(event => trackPageLoadEvent(event));
|
|
91
|
+
// >>>
|
|
92
|
+
// cleanup <<<
|
|
93
|
+
// abortCtrl.abort();
|
|
94
|
+
// >>>
|
|
95
|
+
//
|
|
96
|
+
// Generates a composable function that uses onMounted or watch
|
|
97
|
+
export function generateVueEffect(node) {
|
|
98
|
+
const props = p(node);
|
|
99
|
+
const name = props.name;
|
|
100
|
+
const generic = props.generic;
|
|
101
|
+
const once = props.once === 'true' || props.once === true;
|
|
102
|
+
const deps = props.deps || '';
|
|
103
|
+
const lines = [];
|
|
104
|
+
const cleanupNode = firstChild(node, 'cleanup');
|
|
105
|
+
// Collect all imports upfront (no post-hoc mutation)
|
|
106
|
+
const vueImports = new Set();
|
|
107
|
+
if (deps && !once) {
|
|
108
|
+
vueImports.add('watch');
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
vueImports.add('onMounted');
|
|
112
|
+
if (cleanupNode)
|
|
113
|
+
vueImports.add('onUnmounted');
|
|
114
|
+
}
|
|
115
|
+
lines.push(`import { ${[...vueImports].sort().join(', ')} } from 'vue';`);
|
|
116
|
+
lines.push('');
|
|
117
|
+
// Generic type parameter
|
|
118
|
+
const genericParam = generic ? `<${generic}>` : '';
|
|
119
|
+
// Props interface
|
|
120
|
+
const propNodes = kids(node, 'prop');
|
|
121
|
+
lines.push(`export interface ${name}Props${genericParam} {`);
|
|
122
|
+
for (const prop of propNodes) {
|
|
123
|
+
const pp = p(prop);
|
|
124
|
+
const opt = pp.optional === 'true' || pp.optional === true ? '?' : '';
|
|
125
|
+
lines.push(` ${pp.name}${opt}: ${pp.type};`);
|
|
126
|
+
}
|
|
127
|
+
lines.push('}');
|
|
128
|
+
lines.push('');
|
|
129
|
+
// Composable function
|
|
130
|
+
const propNames = propNodes.map(pn => p(pn).name);
|
|
131
|
+
const destructured = propNames.join(', ');
|
|
132
|
+
lines.push(`export function use${name}${genericParam}({ ${destructured} }: ${name}Props${genericParam}) {`);
|
|
133
|
+
const code = handlerCode(node);
|
|
134
|
+
if (deps && !once) {
|
|
135
|
+
// watch mode — immediate: true to match React useEffect behavior (run on mount)
|
|
136
|
+
const depsArr = deps.split(',').map(d => d.trim());
|
|
137
|
+
const watchSource = depsArr.length === 1 ? depsArr[0] : `[${depsArr.join(', ')}]`;
|
|
138
|
+
// Vue watch cleanup uses onCleanup param, not return value
|
|
139
|
+
const hasCleanup = !!cleanupNode;
|
|
140
|
+
const cbParams = hasCleanup ? '_value, _oldValue, onCleanup' : '';
|
|
141
|
+
lines.push(` watch(${watchSource}, (${cbParams}) => {`);
|
|
142
|
+
if (code) {
|
|
143
|
+
for (const line of code.split('\n')) {
|
|
144
|
+
lines.push(` ${line}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (hasCleanup) {
|
|
148
|
+
const cleanupCode = p(cleanupNode).code || '';
|
|
149
|
+
const cleanupDedented = dedent(cleanupCode);
|
|
150
|
+
lines.push(` onCleanup(() => {`);
|
|
151
|
+
for (const line of cleanupDedented.split('\n')) {
|
|
152
|
+
lines.push(` ${line}`);
|
|
153
|
+
}
|
|
154
|
+
lines.push(` });`);
|
|
155
|
+
}
|
|
156
|
+
lines.push(` }, { immediate: true });`);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// onMounted mode
|
|
160
|
+
lines.push(` onMounted(() => {`);
|
|
161
|
+
if (code) {
|
|
162
|
+
for (const line of code.split('\n')) {
|
|
163
|
+
lines.push(` ${line}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
lines.push(` });`);
|
|
167
|
+
if (cleanupNode) {
|
|
168
|
+
const cleanupCode = p(cleanupNode).code || '';
|
|
169
|
+
const cleanupDedented = dedent(cleanupCode);
|
|
170
|
+
lines.push(` onUnmounted(() => {`);
|
|
171
|
+
for (const line of cleanupDedented.split('\n')) {
|
|
172
|
+
lines.push(` ${line}`);
|
|
173
|
+
}
|
|
174
|
+
lines.push(` });`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
lines.push('}');
|
|
178
|
+
return lines;
|
|
179
|
+
}
|
|
180
|
+
// ── Hook → Composable ────────────────────────────────────────────────────
|
|
181
|
+
// hook name=useSearch params="initialState:SearchState" returns=UseSearchResult
|
|
182
|
+
// state name=query type=string init="initialState.query"
|
|
183
|
+
// ref name=abortCtrl type=AbortController init="new AbortController()"
|
|
184
|
+
// context name=env type=EnvConfig source=EnvContext
|
|
185
|
+
// handler <<<
|
|
186
|
+
// const { data } = useSWR(cacheKey, fetcher);
|
|
187
|
+
// >>>
|
|
188
|
+
// memo name=cacheKey deps="query,filters"
|
|
189
|
+
// callback name=handleFilter params="field:string,value:string" deps="query"
|
|
190
|
+
// effect deps="query"
|
|
191
|
+
// returns names="products:data?.products,isLoading,handleFilter,cacheKey"
|
|
192
|
+
//
|
|
193
|
+
// → Vue 3 composable with ref, computed, watch instead of useState, useMemo, useCallback, useEffect
|
|
194
|
+
export function generateVueHook(node) {
|
|
195
|
+
const props = p(node);
|
|
196
|
+
const name = props.name;
|
|
197
|
+
const params = props.params || '';
|
|
198
|
+
const returnsType = props.returns;
|
|
199
|
+
const lines = [];
|
|
200
|
+
const vueImports = new Set();
|
|
201
|
+
const paramList = parseParamList(params);
|
|
202
|
+
const retClause = returnsType ? `: ${returnsType}` : '';
|
|
203
|
+
lines.push(`export function ${name}(${paramList})${retClause} {`);
|
|
204
|
+
const children = kids(node);
|
|
205
|
+
const returnsNode = children.find(c => c.type === 'returns');
|
|
206
|
+
const ordered = children.filter(c => c.type !== 'returns');
|
|
207
|
+
for (const child of ordered) {
|
|
208
|
+
const cp = p(child);
|
|
209
|
+
switch (child.type) {
|
|
210
|
+
case 'state': {
|
|
211
|
+
vueImports.add('ref');
|
|
212
|
+
const sname = cp.name;
|
|
213
|
+
const stype = cp.type || 'unknown';
|
|
214
|
+
const sinit = cp.init || 'undefined';
|
|
215
|
+
lines.push(` const ${sname} = ref<${stype}>(${sinit});`);
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
case 'ref': {
|
|
219
|
+
vueImports.add('ref');
|
|
220
|
+
const rname = cp.name;
|
|
221
|
+
const rtype = cp.type || 'unknown';
|
|
222
|
+
const rinit = cp.init || 'null';
|
|
223
|
+
lines.push(` const ${rname} = ref<${rtype}>(${rinit});`);
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
case 'context': {
|
|
227
|
+
vueImports.add('inject');
|
|
228
|
+
const cname = cp.name;
|
|
229
|
+
const csource = cp.source;
|
|
230
|
+
lines.push(` const ${cname} = inject(${csource});`);
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
case 'handler': {
|
|
234
|
+
const hcode = cp.code || '';
|
|
235
|
+
const hDedented = dedent(hcode);
|
|
236
|
+
for (const line of hDedented.split('\n')) {
|
|
237
|
+
lines.push(` ${line}`);
|
|
238
|
+
}
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
case 'memo': {
|
|
242
|
+
vueImports.add('computed');
|
|
243
|
+
const mname = cp.name;
|
|
244
|
+
const mcode = handlerCode(child);
|
|
245
|
+
lines.push(` const ${mname} = computed(() => {`);
|
|
246
|
+
if (mcode) {
|
|
247
|
+
for (const line of mcode.split('\n')) {
|
|
248
|
+
lines.push(` ${line}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
lines.push(` });`);
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
case 'callback': {
|
|
255
|
+
// Vue doesn't need useCallback — just a plain function
|
|
256
|
+
const cbname = cp.name;
|
|
257
|
+
const cbparams = cp.params || '';
|
|
258
|
+
const cbcode = handlerCode(child);
|
|
259
|
+
const cbParamList = parseParamList(cbparams);
|
|
260
|
+
lines.push(` function ${cbname}(${cbParamList}) {`);
|
|
261
|
+
if (cbcode) {
|
|
262
|
+
for (const line of cbcode.split('\n')) {
|
|
263
|
+
lines.push(` ${line}`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
lines.push(` }`);
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
case 'effect': {
|
|
270
|
+
const edeps = cp.deps || '';
|
|
271
|
+
const ecode = handlerCode(child);
|
|
272
|
+
const effectCleanup = firstChild(child, 'cleanup');
|
|
273
|
+
if (edeps) {
|
|
274
|
+
vueImports.add('watch');
|
|
275
|
+
const depsArr = edeps.split(',').map(d => d.trim());
|
|
276
|
+
const watchSource = depsArr.length === 1 ? depsArr[0] : `[${depsArr.join(', ')}]`;
|
|
277
|
+
const watchCbParams = effectCleanup ? '_value, _oldValue, onCleanup' : '';
|
|
278
|
+
lines.push(` watch(${watchSource}, (${watchCbParams}) => {`);
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
vueImports.add('onMounted');
|
|
282
|
+
lines.push(` onMounted(() => {`);
|
|
283
|
+
}
|
|
284
|
+
if (ecode) {
|
|
285
|
+
for (const line of ecode.split('\n')) {
|
|
286
|
+
lines.push(` ${line}`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// Cleanup — Vue watch uses onCleanup param, onMounted uses return
|
|
290
|
+
if (effectCleanup) {
|
|
291
|
+
const cleanupCode = p(effectCleanup).code || '';
|
|
292
|
+
const cleanupDedented = dedent(cleanupCode);
|
|
293
|
+
if (edeps) {
|
|
294
|
+
// watch: use onCleanup()
|
|
295
|
+
lines.push(` onCleanup(() => {`);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
// onMounted: use return
|
|
299
|
+
lines.push(` return () => {`);
|
|
300
|
+
}
|
|
301
|
+
for (const line of cleanupDedented.split('\n')) {
|
|
302
|
+
lines.push(` ${line}`);
|
|
303
|
+
}
|
|
304
|
+
lines.push(` ${edeps ? '});' : '};'}`);
|
|
305
|
+
}
|
|
306
|
+
if (edeps) {
|
|
307
|
+
lines.push(` }, { immediate: true });`);
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
lines.push(` });`);
|
|
311
|
+
}
|
|
312
|
+
break;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// Returns
|
|
317
|
+
if (returnsNode) {
|
|
318
|
+
const rnames = p(returnsNode).names || '';
|
|
319
|
+
const entries = rnames.split(',').map(e => {
|
|
320
|
+
const [key, ...valueParts] = e.split(':');
|
|
321
|
+
const value = valueParts.join(':').trim();
|
|
322
|
+
return value ? `${key.trim()}: ${value}` : key.trim();
|
|
323
|
+
});
|
|
324
|
+
lines.push(` return { ${entries.join(', ')} };`);
|
|
325
|
+
}
|
|
326
|
+
lines.push('}');
|
|
327
|
+
// Prepend Vue imports
|
|
328
|
+
if (vueImports.size > 0) {
|
|
329
|
+
const importLine = `import { ${[...vueImports].sort().join(', ')} } from 'vue';`;
|
|
330
|
+
lines.unshift('');
|
|
331
|
+
lines.unshift(importLine);
|
|
332
|
+
}
|
|
333
|
+
return lines;
|
|
334
|
+
}
|
|
335
|
+
// ── Dispatcher ───────────────────────────────────────────────────────────
|
|
336
|
+
export function isVueNode(type) {
|
|
337
|
+
return type === 'provider' || type === 'effect' || type === 'hook';
|
|
338
|
+
}
|
|
339
|
+
export function generateVueNode(node) {
|
|
340
|
+
switch (node.type) {
|
|
341
|
+
case 'provider': return generateVueProvider(node);
|
|
342
|
+
case 'effect': return generateVueEffect(node);
|
|
343
|
+
case 'hook': return generateVueHook(node);
|
|
344
|
+
default: return [];
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=codegen-vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen-vue.js","sourceRoot":"","sources":["../src/codegen-vue.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @kernlang/vue — Vue 3 SFC + Nuxt 3 transpilers + Vue codegen
|
|
3
|
+
*/
|
|
4
|
+
export { transpileVue } from './transpiler-vue.js';
|
|
5
|
+
export { transpileNuxt } from './transpiler-nuxt.js';
|
|
6
|
+
export { generateVueProvider, generateVueEffect, generateVueHook, generateVueNode, isVueNode, } from './codegen-vue.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @kernlang/vue — Vue 3 SFC + Nuxt 3 transpilers + Vue codegen
|
|
3
|
+
*/
|
|
4
|
+
export { transpileVue } from './transpiler-vue.js';
|
|
5
|
+
export { transpileNuxt } from './transpiler-nuxt.js';
|
|
6
|
+
export { generateVueProvider, generateVueEffect, generateVueHook, generateVueNode, isVueNode, } from './codegen-vue.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,SAAS,GACV,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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 type { IRNode, TranspileResult, ResolvedKernConfig } from '@kernlang/core';
|
|
13
|
+
export declare function transpileNuxt(root: IRNode, config?: ResolvedKernConfig): TranspileResult;
|