diff --git a/editors/vscode/src/compiler.cjs b/editors/vscode/src/compiler.cjs
index 0f1cf93d..3f695cd8 100644
--- a/editors/vscode/src/compiler.cjs
+++ b/editors/vscode/src/compiler.cjs
@@ -1,6 +1,6 @@
"use strict";
// Generated by scripts/build-editor-compiler.mjs. Do not edit directly.
-// WRN editor compiler source hash: b5b5e076bca1aa1b5603d5b6caf5d5a3169a04e33da8b83ae94e952f8685ab3e
+// WRN editor compiler source hash: 59b39cb658ef79c3ee7deb2147a92ac8bbb6c4427d732bf1de63e489c2471df8
// WRN editor compiler generator hash: a54ca847c758bc98d8e353ad6d70088df31de1820f6cf9d1c3462505f563e6b8
// Generated with TypeScript: 6.0.3
const __nodeRequire = require;
@@ -844,8 +844,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.generate = generate;
exports.parseForExpr = parseForExpr;
const node_buffer_1 = require("node:buffer");
-const parser_ts_1 = require("./parser.js");
-const types_ts_1 = require("./types.js");
const syntax_1 = require("@wrnexus/syntax");
const store_codegen_ts_1 = require("./store-codegen.js");
const analysis_ts_1 = require("./analysis.js");
@@ -1245,7 +1243,7 @@ function renderLoopBody(node) {
inner +
escLit(""));
}
- if (parser_ts_1.VOID_ELEMENTS.has(node.tag.toLowerCase())) {
+ if (syntax_1.VOID_ELEMENTS.has(node.tag.toLowerCase())) {
return escLit(`<${node.tag}`) + attrs + escLit(">");
}
return escLit(`<${node.tag}`) + attrs + escLit(">") + inner + escLit(`${node.tag}>`);
@@ -1428,7 +1426,7 @@ function renderNode(node, ssrBindings, csrBindings, apiBindings, loops, reactive
})
: undefined;
// Void elements (
,
, …) have no closing tag and no children.
- if (parser_ts_1.VOID_ELEMENTS.has(node.tag.toLowerCase())) {
+ if (syntax_1.VOID_ELEMENTS.has(node.tag.toLowerCase())) {
return `<${node.tag}${renderAttrs(node.attrs, csrId, reactive, loops)}>`;
}
const inner = apiBinding?.mode === "ssr"
@@ -2407,7 +2405,7 @@ function escLit(s) {
return s.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
}
function componentBehavior(ast) {
- const functions = (0, types_ts_1.eraseFunctionTypes)(targetFunctions(ast, "browser"));
+ const functions = (0, syntax_1.eraseFunctionTypes)(targetFunctions(ast, "browser"));
const computed = ast.computed.map((entry) => ({ name: entry.name, expr: entry.expr.trim() }));
const effects = ast.effects.map((entry) => entry.body.trim()).filter(Boolean);
const lifecycle = {
@@ -2619,7 +2617,7 @@ function renderClientControlTemplate(nodes) {
return children;
if (componentTag)
return `
${children}
`;
- if (parser_ts_1.VOID_ELEMENTS.has(node.tag.toLowerCase()))
+ if (syntax_1.VOID_ELEMENTS.has(node.tag.toLowerCase()))
return `<${node.tag}${attrs}>`;
return `<${node.tag}${attrs}>${children}${node.tag}>`;
};
@@ -2904,7 +2902,7 @@ function renderComponentNode(node, ctx) {
`${classReactiveBinding}` +
`${classBindings}` +
`${attrs}`;
- if (parser_ts_1.VOID_ELEMENTS.has(node.tag.toLowerCase())) {
+ if (syntax_1.VOID_ELEMENTS.has(node.tag.toLowerCase())) {
return `<${node.tag}${allAttrs}>`;
}
const inner = node.children.map((child) => renderComponentNode(child, elementContext)).join("");
@@ -2992,7 +2990,7 @@ function generateComponent(ast) {
if (prop.required) {
decls.push(` if (__p[${JSON.stringify(prop.name)}] === undefined) throw new TypeError(${JSON.stringify(`${ast.name} requires prop '${prop.name}' (${prop.valueType ?? "unknown"})`)});`);
}
- decls.push(` const ${nameRefs.get(prop.name)}: ${prop.valueType ?? "unknown"} = __coerce(__p[${JSON.stringify(prop.name)}], (${resolveExpr(prop.default)}), ${JSON.stringify((0, types_ts_1.runtimeTypeOf)(prop.valueType))}, ${JSON.stringify(prop.name)}) as ${prop.valueType ?? "unknown"};`);
+ decls.push(` const ${nameRefs.get(prop.name)}: ${prop.valueType ?? "unknown"} = __coerce(__p[${JSON.stringify(prop.name)}], (${resolveExpr(prop.default)}), ${JSON.stringify((0, syntax_1.runtimeTypeOf)(prop.valueType))}, ${JSON.stringify(prop.name)}) as ${prop.valueType ?? "unknown"};`);
}
if (!effectiveProps.some((prop) => prop.name === "attrs")) {
decls.push(` const __attrs = __restProps(__p, new Set(${JSON.stringify(effectiveProps.map((prop) => prop.name))}));`);
@@ -4057,27 +4055,6 @@ function generateNative(ast) {
return `// generated from .wrn for Expo/React Native\nimport React, { useState } from "react";\nimport { ActivityIndicator, FlatList, Image, Pressable, SafeAreaView, ScrollView, StyleSheet, Text, TextInput, View } from "react-native";\nimport { useRouter } from "expo-router";\n${ast.imports.join("\n")}\n\n${typeSource}\n\nexport default function ${ast.name}() {\n const router = useRouter();\n${hooks}\n return <>${body}>;\n}\n\n${nativeStyles(ast.styles)}\n`;
}
-},
-"packages/compiler/src/parser.ts": function (module, exports, require, __filename, __dirname) {
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- var desc = Object.getOwnPropertyDescriptor(m, k);
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
- desc = { enumerable: true, get: function() { return m[k]; } };
- }
- Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
-}));
-var __exportStar = (this && this.__exportStar) || function(m, exports) {
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-/** @deprecated Import parser APIs from @wrnexus/syntax. */
-__exportStar(require("@wrnexus/syntax/parser"), exports);
-
},
"packages/compiler/src/runtime-capabilities.ts": function (module, exports, require, __filename, __dirname) {
"use strict";
@@ -4627,27 +4604,6 @@ function generateTargets(ast) {
};
}
-},
-"packages/compiler/src/tokenizer.ts": function (module, exports, require, __filename, __dirname) {
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- var desc = Object.getOwnPropertyDescriptor(m, k);
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
- desc = { enumerable: true, get: function() { return m[k]; } };
- }
- Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
-}));
-var __exportStar = (this && this.__exportStar) || function(m, exports) {
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-/** @deprecated Import tokenizer APIs from @wrnexus/syntax. */
-__exportStar(require("@wrnexus/syntax/tokenizer"), exports);
-
},
"packages/compiler/src/type-codegen.ts": function (module, exports, require, __filename, __dirname) {
"use strict";
@@ -4697,27 +4653,6 @@ function generateDeclarations(ast) {
return `${inline ? `${inline}\n\n` : ""}export interface ${ast.name}Props {\n${props}\n}\n\nexport interface ${ast.name}Outputs {\n${outputs}\n}\n\nexport interface ${ast.name}ClientFunctions {\n${clientFunctions}\n}\n\nexport interface ${ast.name}ServerCalls {\n${serverFunctions}\n}\n`;
}
-},
-"packages/compiler/src/types.ts": function (module, exports, require, __filename, __dirname) {
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- var desc = Object.getOwnPropertyDescriptor(m, k);
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
- desc = { enumerable: true, get: function() { return m[k]; } };
- }
- Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
-}));
-var __exportStar = (this && this.__exportStar) || function(m, exports) {
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-/** @deprecated Import language type utilities from @wrnexus/syntax. */
-__exportStar(require("@wrnexus/syntax/types"), exports);
-
},
"packages/syntax/src/api-sections.ts": function (module, exports, require, __filename, __dirname) {
"use strict";
diff --git a/editors/vscode/src/extension.bundle.cjs b/editors/vscode/src/extension.bundle.cjs
index 37257659..a235ecaf 100644
--- a/editors/vscode/src/extension.bundle.cjs
+++ b/editors/vscode/src/extension.bundle.cjs
@@ -1,4 +1,4 @@
-// WRN editor extension source hash: 791b7ed86b1d5958a71ee3886a8dbd26301171be0e0d4d01f747d20556d51aad
+// WRN editor extension source hash: 0192e263f6213e194dc903c4c4d6436e4ab05cbfe06d2d865a3de7ca1507d3d6
// WRN editor extension generator hash: 456d1d614e44e5fb1f19b784176c09cf2ade9b64ef73a17934c2698150b62728
"use strict";
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
diff --git a/packages/compiler/src/codegen.ts b/packages/compiler/src/codegen.ts
index 0776206e..6b8b940b 100644
--- a/packages/compiler/src/codegen.ts
+++ b/packages/compiler/src/codegen.ts
@@ -17,9 +17,16 @@
import { Buffer } from "node:buffer";
-import { VOID_ELEMENTS, type Attr, type DataMode, type PageAst, type ViewNode } from "./parser.ts";
-import { eraseFunctionTypes, runtimeTypeOf } from "./types.ts";
-import { stripRuntimeFunctionModifiers } from "@wrnexus/syntax";
+import {
+ VOID_ELEMENTS,
+ type Attr,
+ type DataMode,
+ type PageAst,
+ type ViewNode,
+ eraseFunctionTypes,
+ runtimeTypeOf,
+ stripRuntimeFunctionModifiers,
+} from "@wrnexus/syntax";
import { generateStoreModule } from "./store-codegen.ts";
import { optimizeAst } from "./analysis.ts";
import {
diff --git a/packages/compiler/src/native-codegen.ts b/packages/compiler/src/native-codegen.ts
index 1baf7768..ea0500c6 100644
--- a/packages/compiler/src/native-codegen.ts
+++ b/packages/compiler/src/native-codegen.ts
@@ -1,4 +1,4 @@
-import type { Attr, PageAst, ViewNode } from "./parser.ts";
+import type { Attr, PageAst, ViewNode } from "@wrnexus/syntax";
export class NativeCompileError extends Error {
constructor(message: string) {
diff --git a/packages/compiler/src/parser.ts b/packages/compiler/src/parser.ts
deleted file mode 100644
index aa708b46..00000000
--- a/packages/compiler/src/parser.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-/** @deprecated Import parser APIs from @wrnexus/syntax. */
-export * from "@wrnexus/syntax/parser";
diff --git a/packages/compiler/src/tokenizer.ts b/packages/compiler/src/tokenizer.ts
deleted file mode 100644
index d7cd0a92..00000000
--- a/packages/compiler/src/tokenizer.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-/** @deprecated Import tokenizer APIs from @wrnexus/syntax. */
-export * from "@wrnexus/syntax/tokenizer";
diff --git a/packages/compiler/src/types.ts b/packages/compiler/src/types.ts
deleted file mode 100644
index 8182f080..00000000
--- a/packages/compiler/src/types.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-/** @deprecated Import language type utilities from @wrnexus/syntax. */
-export * from "@wrnexus/syntax/types";
diff --git a/packages/compiler/test/inline-props.test.ts b/packages/compiler/test/inline-props.test.ts
index 5e91dd57..474cb439 100644
--- a/packages/compiler/test/inline-props.test.ts
+++ b/packages/compiler/test/inline-props.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test";
-import { parse, type PropDecl } from "../src/parser.ts";
+import { parse, type PropDecl } from "@wrnexus/syntax";
const compact = (source: string) =>
parse(source).props.map(({ name, default: value }: PropDecl) => ({ name, value }));