0x-lang 0.1.27 → 0.1.29
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 +122 -3
- package/dist/cli.js.map +1 -1
- package/dist/compiler.d.ts +25 -1
- package/dist/compiler.js +66 -3
- package/dist/compiler.js.map +1 -1
- package/dist/generators/react.d.ts +3 -2
- package/dist/generators/react.js +20 -9
- package/dist/generators/react.js.map +1 -1
- package/dist/generators/svelte.d.ts +1 -1
- package/dist/generators/svelte.js +18 -9
- package/dist/generators/svelte.js.map +1 -1
- package/dist/generators/vue.d.ts +1 -1
- package/dist/generators/vue.js +19 -9
- package/dist/generators/vue.js.map +1 -1
- package/dist/react/counter.jsx +29 -17
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// 0x CLI
|
|
3
3
|
import { readFileSync, writeFileSync, mkdirSync, existsSync, watchFile } from 'fs';
|
|
4
4
|
import { resolve, basename, join } from 'path';
|
|
5
|
-
import { compile } from './compiler.js';
|
|
5
|
+
import { compile, compileDebug } from './compiler.js';
|
|
6
6
|
import { initProject } from './init.js';
|
|
7
7
|
import { getLanguageSpec } from './generators/ai-bridge.js';
|
|
8
8
|
const VALID_TARGETS = ['react', 'vue', 'svelte', 'backend', 'react-native', 'terraform'];
|
|
@@ -10,8 +10,10 @@ const HELP = `
|
|
|
10
10
|
0x Compiler CLI
|
|
11
11
|
|
|
12
12
|
Usage:
|
|
13
|
-
0x build <file.ai> --target <target> [--output <dir>] [--compact]
|
|
13
|
+
0x build <file.ai> --target <target> [--output <dir>] [--compact] [--debug]
|
|
14
14
|
0x dev <file.ai> --target <target>
|
|
15
|
+
0x debug <file.ai>
|
|
16
|
+
0x inspect <file.ai>
|
|
15
17
|
0x bench <file.ai>
|
|
16
18
|
0x spec
|
|
17
19
|
0x init [project-name]
|
|
@@ -19,6 +21,8 @@ Usage:
|
|
|
19
21
|
Commands:
|
|
20
22
|
build Compile .ai file to target framework code
|
|
21
23
|
dev Watch mode — recompile on file changes
|
|
24
|
+
debug Show full compilation pipeline (tokens, AST, validation, timing)
|
|
25
|
+
inspect Show generated code for all 3 targets (react, vue, svelte)
|
|
22
26
|
bench Show token efficiency benchmark
|
|
23
27
|
spec Print the 0x language specification (for AI/LLM agents)
|
|
24
28
|
init Create a new 0x project
|
|
@@ -35,15 +39,19 @@ Options:
|
|
|
35
39
|
--target <target> Target framework (comma-separated for multiple)
|
|
36
40
|
--output <dir> Output directory (default: ./dist/)
|
|
37
41
|
--compact AI-optimized compact output (strips comments, minimizes whitespace)
|
|
42
|
+
--debug Add runtime debug logging ([0x] console.log) to generated code
|
|
38
43
|
--no-sourcemap Disable source maps
|
|
39
44
|
--help Show this help message
|
|
40
45
|
|
|
41
46
|
Examples:
|
|
42
47
|
0x build todo.ai --target react
|
|
48
|
+
0x build todo.ai --target react --debug
|
|
43
49
|
0x build api.ai --target backend
|
|
44
50
|
0x build infra.ai --target terraform
|
|
45
51
|
0x build todo.ai --target react,vue,svelte --output ./dist/
|
|
46
52
|
0x build todo.ai --target react --compact
|
|
53
|
+
0x debug todo.ai
|
|
54
|
+
0x inspect todo.ai
|
|
47
55
|
0x dev todo.ai --target react
|
|
48
56
|
0x bench todo.ai
|
|
49
57
|
0x spec
|
|
@@ -63,6 +71,12 @@ function main() {
|
|
|
63
71
|
case 'dev':
|
|
64
72
|
devCommand(args.slice(1));
|
|
65
73
|
break;
|
|
74
|
+
case 'debug':
|
|
75
|
+
debugCommand(args.slice(1));
|
|
76
|
+
break;
|
|
77
|
+
case 'inspect':
|
|
78
|
+
inspectCommand(args.slice(1));
|
|
79
|
+
break;
|
|
66
80
|
case 'bench':
|
|
67
81
|
benchCommand(args.slice(1));
|
|
68
82
|
break;
|
|
@@ -120,7 +134,8 @@ function buildCommand(args) {
|
|
|
120
134
|
try {
|
|
121
135
|
const compact = process.argv.includes('--compact');
|
|
122
136
|
const noSourceMap = process.argv.includes('--no-sourcemap');
|
|
123
|
-
const
|
|
137
|
+
const debug = process.argv.includes('--debug');
|
|
138
|
+
const result = compile(source, { target: target, compact, sourceMap: noSourceMap ? false : undefined, debug });
|
|
124
139
|
const extMap = { react: 'jsx', vue: 'vue', svelte: 'svelte', backend: 'ts', 'react-native': 'tsx', terraform: 'tf' };
|
|
125
140
|
const ext = extMap[target] || 'js';
|
|
126
141
|
const outDir = resolve(output, target);
|
|
@@ -204,6 +219,110 @@ function benchCommand(args) {
|
|
|
204
219
|
}
|
|
205
220
|
}
|
|
206
221
|
}
|
|
222
|
+
function debugCommand(args) {
|
|
223
|
+
const file = args.find(a => !a.startsWith('-'));
|
|
224
|
+
if (!file) {
|
|
225
|
+
console.error('Error: No input file specified');
|
|
226
|
+
process.exit(1);
|
|
227
|
+
}
|
|
228
|
+
const filePath = resolve(file);
|
|
229
|
+
if (!existsSync(filePath)) {
|
|
230
|
+
console.error(`Error: File not found: ${filePath}`);
|
|
231
|
+
process.exit(1);
|
|
232
|
+
}
|
|
233
|
+
const source = readFileSync(filePath, 'utf-8');
|
|
234
|
+
console.log(`\n\x1b[36m━━━ 0x Debug: ${file} ━━━\x1b[0m\n`);
|
|
235
|
+
const info = compileDebug(source);
|
|
236
|
+
// 1. TOKENS (first 30)
|
|
237
|
+
console.log(`\x1b[33m▸ TOKENS\x1b[0m (${info.tokens.length} total, showing first 30)\n`);
|
|
238
|
+
const tokenSlice = info.tokens.slice(0, 30);
|
|
239
|
+
console.log(' Line Col Type Value');
|
|
240
|
+
console.log(' ──── ─── ────────────── ─────────────────────');
|
|
241
|
+
for (const t of tokenSlice) {
|
|
242
|
+
const val = t.value.replace(/\n/g, '\\n').slice(0, 24);
|
|
243
|
+
console.log(` ${String(t.line).padStart(4)} ${String(t.column).padStart(3)} ${t.type.padEnd(14)} ${val}`);
|
|
244
|
+
}
|
|
245
|
+
if (info.tokens.length > 30)
|
|
246
|
+
console.log(` ... +${info.tokens.length - 30} more tokens`);
|
|
247
|
+
// 2. AST (first 50 lines of JSON)
|
|
248
|
+
console.log(`\n\x1b[33m▸ AST\x1b[0m (${info.stats.nodeCount} nodes)\n`);
|
|
249
|
+
const astJson = JSON.stringify(info.ast, null, 2).split('\n');
|
|
250
|
+
const astSlice = astJson.slice(0, 50);
|
|
251
|
+
for (const line of astSlice) {
|
|
252
|
+
console.log(` ${line}`);
|
|
253
|
+
}
|
|
254
|
+
if (astJson.length > 50)
|
|
255
|
+
console.log(` ... +${astJson.length - 50} more lines`);
|
|
256
|
+
// 3. VALIDATION
|
|
257
|
+
console.log(`\n\x1b[33m▸ VALIDATION\x1b[0m`);
|
|
258
|
+
if (info.validation.errors.length === 0) {
|
|
259
|
+
console.log(` \x1b[32m✓ Passed\x1b[0m (no errors)`);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
console.log(` \x1b[31m✗ ${info.validation.errors.length} errors:\x1b[0m`);
|
|
263
|
+
for (const e of info.validation.errors) {
|
|
264
|
+
console.log(` Line ${e.line}, Col ${e.column}: ${e.message}`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// 4. GENERATED CODE
|
|
268
|
+
console.log(`\n\x1b[33m▸ GENERATED CODE\x1b[0m\n`);
|
|
269
|
+
for (const [target, gen] of Object.entries(info.generated)) {
|
|
270
|
+
const badge = target === 'react' ? '\x1b[36m' : target === 'vue' ? '\x1b[32m' : '\x1b[31m';
|
|
271
|
+
console.log(` ${badge}${target}\x1b[0m: ${gen.lineCount} lines / ${gen.tokenCount} tokens`);
|
|
272
|
+
const preview = gen.code.split('\n').slice(0, 20);
|
|
273
|
+
for (const line of preview) {
|
|
274
|
+
console.log(` ${line}`);
|
|
275
|
+
}
|
|
276
|
+
if (gen.code.split('\n').length > 20)
|
|
277
|
+
console.log(` ...`);
|
|
278
|
+
console.log('');
|
|
279
|
+
}
|
|
280
|
+
// 5. TIMING
|
|
281
|
+
console.log(`\x1b[33m▸ TIMING\x1b[0m\n`);
|
|
282
|
+
console.log(` Tokenize: ${info.timing.tokenize.toFixed(2)}ms`);
|
|
283
|
+
console.log(` Parse: ${info.timing.parse.toFixed(2)}ms`);
|
|
284
|
+
console.log(` Validate: ${info.timing.validate.toFixed(2)}ms`);
|
|
285
|
+
for (const [target, ms] of Object.entries(info.timing.generate)) {
|
|
286
|
+
console.log(` Generate (${target}): ${ms.toFixed(2)}ms`);
|
|
287
|
+
}
|
|
288
|
+
const totalMs = info.timing.tokenize + info.timing.parse + info.timing.validate + Object.values(info.timing.generate).reduce((a, b) => a + b, 0);
|
|
289
|
+
console.log(` \x1b[1mTotal: ${totalMs.toFixed(2)}ms\x1b[0m`);
|
|
290
|
+
// 6. SUMMARY
|
|
291
|
+
console.log(`\n\x1b[33m▸ SUMMARY\x1b[0m\n`);
|
|
292
|
+
console.log(` Source: ${info.stats.sourceLines} lines / ${info.stats.tokenCount} tokens / ${info.stats.nodeCount} AST nodes`);
|
|
293
|
+
for (const [target, gen] of Object.entries(info.generated)) {
|
|
294
|
+
const ratio = (gen.lineCount / info.stats.sourceLines).toFixed(1);
|
|
295
|
+
console.log(` → ${target}: ${gen.lineCount} lines (${ratio}x expansion)`);
|
|
296
|
+
}
|
|
297
|
+
console.log('');
|
|
298
|
+
}
|
|
299
|
+
function inspectCommand(args) {
|
|
300
|
+
const file = args.find(a => !a.startsWith('-'));
|
|
301
|
+
if (!file) {
|
|
302
|
+
console.error('Error: No input file specified');
|
|
303
|
+
process.exit(1);
|
|
304
|
+
}
|
|
305
|
+
const filePath = resolve(file);
|
|
306
|
+
if (!existsSync(filePath)) {
|
|
307
|
+
console.error(`Error: File not found: ${filePath}`);
|
|
308
|
+
process.exit(1);
|
|
309
|
+
}
|
|
310
|
+
const source = readFileSync(filePath, 'utf-8');
|
|
311
|
+
const targets = ['react', 'vue', 'svelte'];
|
|
312
|
+
console.log(`\n\x1b[36m━━━ 0x Inspect: ${file} ━━━\x1b[0m\n`);
|
|
313
|
+
for (const target of targets) {
|
|
314
|
+
const badge = target === 'react' ? '\x1b[36m' : target === 'vue' ? '\x1b[32m' : '\x1b[31m';
|
|
315
|
+
try {
|
|
316
|
+
const result = compile(source, { target, validate: false, sourceMap: false });
|
|
317
|
+
console.log(`${badge}── ${target.toUpperCase()} ──\x1b[0m (${result.lineCount} lines / ${result.tokenCount} tokens)\n`);
|
|
318
|
+
console.log(result.code);
|
|
319
|
+
console.log('');
|
|
320
|
+
}
|
|
321
|
+
catch (err) {
|
|
322
|
+
console.error(`${badge}── ${target.toUpperCase()} ──\x1b[0m \x1b[31mError: ${err.message}\x1b[0m\n`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
207
326
|
function countTokens(code) {
|
|
208
327
|
return code.split(/\s+/).filter(t => t.length > 0).length;
|
|
209
328
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/compiler.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Token } from './tokenizer.js';
|
|
2
|
+
import { type ValidationError } from './validator.js';
|
|
3
|
+
import type { ASTNode, GeneratedCode } from './ast.js';
|
|
2
4
|
export type CompileTarget = 'react' | 'vue' | 'svelte' | 'backend' | 'react-native' | 'terraform';
|
|
3
5
|
export interface CompileOptions {
|
|
4
6
|
target: CompileTarget;
|
|
@@ -6,5 +8,27 @@ export interface CompileOptions {
|
|
|
6
8
|
sourceMap?: boolean;
|
|
7
9
|
useClient?: boolean;
|
|
8
10
|
compact?: boolean;
|
|
11
|
+
debug?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface DebugInfo {
|
|
14
|
+
source: string;
|
|
15
|
+
tokens: Token[];
|
|
16
|
+
ast: ASTNode[];
|
|
17
|
+
validation: {
|
|
18
|
+
errors: ValidationError[];
|
|
19
|
+
};
|
|
20
|
+
generated: Record<string, GeneratedCode>;
|
|
21
|
+
timing: {
|
|
22
|
+
tokenize: number;
|
|
23
|
+
parse: number;
|
|
24
|
+
validate: number;
|
|
25
|
+
generate: Record<string, number>;
|
|
26
|
+
};
|
|
27
|
+
stats: {
|
|
28
|
+
sourceLines: number;
|
|
29
|
+
tokenCount: number;
|
|
30
|
+
nodeCount: number;
|
|
31
|
+
};
|
|
9
32
|
}
|
|
10
33
|
export declare function compile(source: string, options: CompileOptions): GeneratedCode;
|
|
34
|
+
export declare function compileDebug(source: string): DebugInfo;
|
package/dist/compiler.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// 0x Compiler Pipeline
|
|
2
|
+
import { tokenize } from './tokenizer.js';
|
|
2
3
|
import { parse } from './parser.js';
|
|
3
4
|
import { generateReact } from './generators/react.js';
|
|
4
5
|
import { generateVue } from './generators/vue.js';
|
|
@@ -17,16 +18,17 @@ export function compile(source, options) {
|
|
|
17
18
|
throw new Error(`Validation errors:\n${errMsg}`);
|
|
18
19
|
}
|
|
19
20
|
}
|
|
21
|
+
const debug = options.debug ?? false;
|
|
20
22
|
let result;
|
|
21
23
|
switch (options.target) {
|
|
22
24
|
case 'react':
|
|
23
|
-
result = generateReact(ast);
|
|
25
|
+
result = generateReact(ast, debug);
|
|
24
26
|
break;
|
|
25
27
|
case 'vue':
|
|
26
|
-
result = generateVue(ast);
|
|
28
|
+
result = generateVue(ast, debug);
|
|
27
29
|
break;
|
|
28
30
|
case 'svelte':
|
|
29
|
-
result = generateSvelte(ast);
|
|
31
|
+
result = generateSvelte(ast, debug);
|
|
30
32
|
break;
|
|
31
33
|
case 'backend':
|
|
32
34
|
result = generateBackend(ast);
|
|
@@ -59,6 +61,67 @@ export function compile(source, options) {
|
|
|
59
61
|
}
|
|
60
62
|
return result;
|
|
61
63
|
}
|
|
64
|
+
function countASTNodes(nodes) {
|
|
65
|
+
let count = 0;
|
|
66
|
+
function walk(node) {
|
|
67
|
+
if (!node || typeof node !== 'object')
|
|
68
|
+
return;
|
|
69
|
+
if (node.type)
|
|
70
|
+
count++;
|
|
71
|
+
if (Array.isArray(node.body))
|
|
72
|
+
node.body.forEach(walk);
|
|
73
|
+
if (Array.isArray(node.children))
|
|
74
|
+
node.children.forEach(walk);
|
|
75
|
+
if (node.elseBody)
|
|
76
|
+
walk(node.elseBody);
|
|
77
|
+
if (node.consequent)
|
|
78
|
+
walk(node.consequent);
|
|
79
|
+
if (node.alternate)
|
|
80
|
+
walk(node.alternate);
|
|
81
|
+
}
|
|
82
|
+
nodes.forEach(walk);
|
|
83
|
+
return count;
|
|
84
|
+
}
|
|
85
|
+
export function compileDebug(source) {
|
|
86
|
+
const t0 = performance.now();
|
|
87
|
+
const tokens = tokenize(source);
|
|
88
|
+
const t1 = performance.now();
|
|
89
|
+
const ast = parse(source);
|
|
90
|
+
const t2 = performance.now();
|
|
91
|
+
const validationResult = validate(ast);
|
|
92
|
+
const t3 = performance.now();
|
|
93
|
+
const targets = ['react', 'vue', 'svelte'];
|
|
94
|
+
const generated = {};
|
|
95
|
+
const genTiming = {};
|
|
96
|
+
for (const target of targets) {
|
|
97
|
+
const g0 = performance.now();
|
|
98
|
+
try {
|
|
99
|
+
generated[target] = compile(source, { target, validate: false, sourceMap: false });
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
generated[target] = { code: `// Error: ${err.message}`, filename: '', imports: [], lineCount: 0, tokenCount: 0 };
|
|
103
|
+
}
|
|
104
|
+
genTiming[target] = performance.now() - g0;
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
source,
|
|
108
|
+
tokens,
|
|
109
|
+
ast,
|
|
110
|
+
validation: { errors: validationResult.errors },
|
|
111
|
+
generated,
|
|
112
|
+
timing: {
|
|
113
|
+
tokenize: t1 - t0,
|
|
114
|
+
parse: t2 - t1,
|
|
115
|
+
validate: t3 - t2,
|
|
116
|
+
generate: genTiming,
|
|
117
|
+
},
|
|
118
|
+
stats: {
|
|
119
|
+
sourceLines: source.split('\n').filter(l => l.trim().length > 0).length,
|
|
120
|
+
tokenCount: tokens.length,
|
|
121
|
+
nodeCount: countASTNodes(ast),
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
62
125
|
function compactify(result) {
|
|
63
126
|
let code = result.code;
|
|
64
127
|
// Strip source map comments
|
package/dist/compiler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA,uBAAuB;AAEvB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,10 @@ export interface GenContext {
|
|
|
12
12
|
smb: SourceMapBuilder | null;
|
|
13
13
|
theme: ThemeName | null;
|
|
14
14
|
themeImports: Set<string>;
|
|
15
|
+
debug: boolean;
|
|
15
16
|
}
|
|
16
|
-
export declare function ctx(): GenContext;
|
|
17
|
-
export declare function generateReact(ast: ASTNode[]): GeneratedCode;
|
|
17
|
+
export declare function ctx(debug?: boolean): GenContext;
|
|
18
|
+
export declare function generateReact(ast: ASTNode[], debug?: boolean): GeneratedCode;
|
|
18
19
|
/** Generate framework-agnostic backend/infrastructure code for a non-UI node. Returns null if unrecognized. */
|
|
19
20
|
export declare function generateBackendCode(node: ASTNode): string | null;
|
|
20
21
|
export declare function genStatement(stmt: Statement, c: GenContext): string;
|
package/dist/generators/react.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { SIZE_MAP, unquote, capitalize, parseGradient, addPx, getPassthroughProps, typeExprToJs, getFieldDefault, KNOWN_LAYOUT_PROPS, KNOWN_TEXT_PROPS, KNOWN_BUTTON_PROPS, KNOWN_INPUT_PROPS, KNOWN_IMAGE_PROPS, KNOWN_LINK_PROPS, KNOWN_TOGGLE_PROPS, KNOWN_SELECT_PROPS } from './shared.js';
|
|
3
3
|
import { SourceMapBuilder } from './source-map.js';
|
|
4
4
|
import { getReactThemeRenderer } from './themes.js';
|
|
5
|
-
export function ctx() {
|
|
5
|
+
export function ctx(debug = false) {
|
|
6
6
|
return {
|
|
7
7
|
imports: new Set(),
|
|
8
8
|
states: new Map(),
|
|
@@ -14,12 +14,13 @@ export function ctx() {
|
|
|
14
14
|
smb: null,
|
|
15
15
|
theme: null,
|
|
16
16
|
themeImports: new Set(),
|
|
17
|
+
debug,
|
|
17
18
|
};
|
|
18
19
|
}
|
|
19
20
|
function ind(c) {
|
|
20
21
|
return ' '.repeat(c.indent);
|
|
21
22
|
}
|
|
22
|
-
export function generateReact(ast) {
|
|
23
|
+
export function generateReact(ast, debug = false) {
|
|
23
24
|
const parts = [];
|
|
24
25
|
// Detect theme declaration
|
|
25
26
|
const themeNode = ast.find(n => n.type === 'ThemeDecl');
|
|
@@ -123,7 +124,7 @@ export function generateReact(ast) {
|
|
|
123
124
|
parts.push(genRtlCode(node));
|
|
124
125
|
}
|
|
125
126
|
else if (node.type === 'Page' || node.type === 'Component' || node.type === 'App') {
|
|
126
|
-
parts.push(generateTopLevel(node, theme));
|
|
127
|
+
parts.push(generateTopLevel(node, theme, debug));
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
130
|
const code = parts.join('\n\n');
|
|
@@ -185,8 +186,8 @@ export function generateBackendCode(node) {
|
|
|
185
186
|
default: return null;
|
|
186
187
|
}
|
|
187
188
|
}
|
|
188
|
-
function generateTopLevel(node, theme = null) {
|
|
189
|
-
const c = ctx();
|
|
189
|
+
function generateTopLevel(node, theme = null, debug = false) {
|
|
190
|
+
const c = ctx(debug);
|
|
190
191
|
c.theme = theme;
|
|
191
192
|
// First pass: collect states, derived, props, styles
|
|
192
193
|
for (const child of node.body) {
|
|
@@ -381,6 +382,10 @@ function genState(node, c) {
|
|
|
381
382
|
c.imports.add('useState');
|
|
382
383
|
const setter = 'set' + capitalize(node.name);
|
|
383
384
|
const init = genExpr(node.initial, c);
|
|
385
|
+
if (c.debug) {
|
|
386
|
+
c.imports.add('useEffect');
|
|
387
|
+
return `const [${node.name}, ${setter}] = useState(${init});\n useEffect(() => { console.log('[0x] ${node.name} =', ${node.name}); }, [${node.name}]);`;
|
|
388
|
+
}
|
|
384
389
|
return `const [${node.name}, ${setter}] = useState(${init});`;
|
|
385
390
|
}
|
|
386
391
|
function genDerived(node, c) {
|
|
@@ -400,6 +405,9 @@ function genCheck(node, c) {
|
|
|
400
405
|
return `if (!(${cond})) console.error('0x check failed: ${node.message}');`;
|
|
401
406
|
}
|
|
402
407
|
function genApi(node, c) {
|
|
408
|
+
if (c.debug) {
|
|
409
|
+
return `const ${node.name} = async (params) => {\n console.log('[0x] ${node.method} ${node.url}', params);\n const res = await fetch('${node.url}' + (params ? '?' + new URLSearchParams(params).toString() : ''), { method: '${node.method}' });\n const data = await res.json();\n console.log('[0x] ${node.name} response:', data);\n return data;\n };`;
|
|
410
|
+
}
|
|
403
411
|
return `const ${node.name} = async (params) => {\n const res = await fetch('${node.url}' + (params ? '?' + new URLSearchParams(params).toString() : ''), { method: '${node.method}' });\n return res.json();\n };`;
|
|
404
412
|
}
|
|
405
413
|
function genStore(node, c) {
|
|
@@ -421,10 +429,11 @@ function genFunction(node, c) {
|
|
|
421
429
|
c.imports.add('useCallback');
|
|
422
430
|
const params = node.params.map(p => p.name).join(', ');
|
|
423
431
|
const asyncKw = node.isAsync ? 'async ' : '';
|
|
432
|
+
const debugLog = c.debug ? `console.log('[0x] ${node.name}()', ${params ? `{${params}}` : ''});\n ` : '';
|
|
424
433
|
const body = node.body.map(s => genStatement(s, c)).join('\n ');
|
|
425
434
|
// requires
|
|
426
435
|
const requireChecks = node.requires.map(r => `if (!(${genExpr(r, c)})) throw new Error('Precondition failed');`).join('\n ');
|
|
427
|
-
const allBody = [requireChecks, body].filter(Boolean).join('\n ');
|
|
436
|
+
const allBody = [requireChecks, debugLog + body].filter(Boolean).join('\n ');
|
|
428
437
|
const sc = node.loc?.line ? `// 0x:L${node.loc.line}\n ` : '';
|
|
429
438
|
// Extract deps from function body (exclude function params)
|
|
430
439
|
const paramNames = new Set(node.params.map(p => p.name));
|
|
@@ -435,19 +444,21 @@ function genFunction(node, c) {
|
|
|
435
444
|
// ── Lifecycle ───────────────────────────────────────
|
|
436
445
|
function genOnMount(node, c) {
|
|
437
446
|
c.imports.add('useEffect');
|
|
447
|
+
const debugLog = c.debug ? `console.log('[0x] mounted');\n ` : '';
|
|
438
448
|
const body = node.body.map(s => genStatement(s, c)).join('\n ');
|
|
439
449
|
const hasAwait = bodyContainsAwait(node.body);
|
|
440
450
|
const sc = node.loc?.line ? `// 0x:L${node.loc.line}\n ` : '';
|
|
441
451
|
if (hasAwait) {
|
|
442
|
-
return `${sc}useEffect(() => {\n (async () => {\n ${body}\n })();\n }, []);`;
|
|
452
|
+
return `${sc}useEffect(() => {\n ${debugLog}(async () => {\n ${body}\n })();\n }, []);`;
|
|
443
453
|
}
|
|
444
|
-
return `${sc}useEffect(() => {\n ${body}\n }, []);`;
|
|
454
|
+
return `${sc}useEffect(() => {\n ${debugLog}${body}\n }, []);`;
|
|
445
455
|
}
|
|
446
456
|
function genOnDestroy(node, c) {
|
|
447
457
|
c.imports.add('useEffect');
|
|
448
458
|
const body = node.body.map(s => genStatement(s, c)).join('\n ');
|
|
459
|
+
const debugLog = c.debug ? `console.log('[0x] unmounting');\n ` : '';
|
|
449
460
|
const sc = node.loc?.line ? `// 0x:L${node.loc.line}\n ` : '';
|
|
450
|
-
return `${sc}useEffect(() => {\n return () => {\n ${body}\n };\n }, []);`;
|
|
461
|
+
return `${sc}useEffect(() => {\n return () => {\n ${debugLog}${body}\n };\n }, []);`;
|
|
451
462
|
}
|
|
452
463
|
function genWatch(node, c) {
|
|
453
464
|
c.imports.add('useEffect');
|