@zenithbuild/core 0.4.7 → 0.5.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/cli/commands/dev.ts +58 -6
- package/compiler/finalize/finalizeOutput.ts +6 -6
- package/compiler/index.ts +8 -7
- package/compiler/ir/types.ts +12 -0
- package/compiler/runtime/transformIR.ts +14 -7
- package/compiler/spa-build.ts +5 -5
- package/compiler/ssg-build.ts +6 -6
- package/compiler/transform/componentScriptTransformer.ts +172 -36
- package/dist/cli.js +4 -0
- package/dist/zen-build.js +233 -54
- package/dist/zen-dev.js +233 -54
- package/dist/zen-preview.js +233 -54
- package/dist/zenith.js +233 -54
- package/package.json +4 -2
package/dist/zen-dev.js
CHANGED
|
@@ -43,7 +43,7 @@ var __export = (target, all) => {
|
|
|
43
43
|
};
|
|
44
44
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
45
45
|
|
|
46
|
-
//
|
|
46
|
+
// node_modules/picocolors/picocolors.js
|
|
47
47
|
var require_picocolors = __commonJS((exports, module) => {
|
|
48
48
|
var p = process || {};
|
|
49
49
|
var argv = p.argv || [];
|
|
@@ -9285,6 +9285,7 @@ import process2 from "process";
|
|
|
9285
9285
|
// cli/commands/dev.ts
|
|
9286
9286
|
import path8 from "path";
|
|
9287
9287
|
import fs8 from "fs";
|
|
9288
|
+
import os from "os";
|
|
9288
9289
|
var {serve } = globalThis.Bun;
|
|
9289
9290
|
|
|
9290
9291
|
// cli/utils/project.ts
|
|
@@ -10901,7 +10902,82 @@ function transformStateDeclarations(script) {
|
|
|
10901
10902
|
return transformed.trim();
|
|
10902
10903
|
}
|
|
10903
10904
|
|
|
10905
|
+
// node_modules/es-module-lexer/dist/lexer.js
|
|
10906
|
+
var ImportType;
|
|
10907
|
+
(function(A) {
|
|
10908
|
+
A[A.Static = 1] = "Static", A[A.Dynamic = 2] = "Dynamic", A[A.ImportMeta = 3] = "ImportMeta", A[A.StaticSourcePhase = 4] = "StaticSourcePhase", A[A.DynamicSourcePhase = 5] = "DynamicSourcePhase", A[A.StaticDeferPhase = 6] = "StaticDeferPhase", A[A.DynamicDeferPhase = 7] = "DynamicDeferPhase";
|
|
10909
|
+
})(ImportType || (ImportType = {}));
|
|
10910
|
+
var A = new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
|
|
10911
|
+
function parse2(E, g = "@") {
|
|
10912
|
+
if (!C)
|
|
10913
|
+
return init.then(() => parse2(E));
|
|
10914
|
+
const I = E.length + 1, o = (C.__heap_base.value || C.__heap_base) + 4 * I - C.memory.buffer.byteLength;
|
|
10915
|
+
o > 0 && C.memory.grow(Math.ceil(o / 65536));
|
|
10916
|
+
const D = C.sa(I - 1);
|
|
10917
|
+
if ((A ? B : Q)(E, new Uint16Array(C.memory.buffer, D, I)), !C.parse())
|
|
10918
|
+
throw Object.assign(new Error(`Parse error ${g}:${E.slice(0, C.e()).split(`
|
|
10919
|
+
`).length}:${C.e() - E.lastIndexOf(`
|
|
10920
|
+
`, C.e() - 1)}`), { idx: C.e() });
|
|
10921
|
+
const w = [], K = [];
|
|
10922
|
+
for (;C.ri(); ) {
|
|
10923
|
+
const A2 = C.is(), Q = C.ie(), B = C.it(), g2 = C.ai(), I2 = C.id(), o2 = C.ss(), D2 = C.se();
|
|
10924
|
+
let K2;
|
|
10925
|
+
C.ip() && (K2 = k(E.slice(I2 === -1 ? A2 - 1 : A2, I2 === -1 ? Q + 1 : Q)));
|
|
10926
|
+
const N = [];
|
|
10927
|
+
for (C.rsa();C.ra(); ) {
|
|
10928
|
+
const A3 = C.aks(), Q2 = C.ake(), B2 = C.avs(), g3 = C.ave();
|
|
10929
|
+
N.push([J(E.slice(A3, Q2)), J(E.slice(B2, g3))]);
|
|
10930
|
+
}
|
|
10931
|
+
w.push({ n: K2, t: B, s: A2, e: Q, ss: o2, se: D2, d: I2, a: g2, at: N.length > 0 ? N : null });
|
|
10932
|
+
}
|
|
10933
|
+
for (;C.re(); ) {
|
|
10934
|
+
const A2 = C.es(), Q = C.ee(), B = C.els(), g2 = C.ele(), I2 = J(E.slice(A2, Q)), o2 = B < 0 ? undefined : J(E.slice(B, g2));
|
|
10935
|
+
K.push({ s: A2, e: Q, ls: B, le: g2, n: I2, ln: o2 });
|
|
10936
|
+
}
|
|
10937
|
+
function k(A2) {
|
|
10938
|
+
try {
|
|
10939
|
+
return (0, eval)(A2);
|
|
10940
|
+
} catch (A3) {}
|
|
10941
|
+
}
|
|
10942
|
+
function J(A2) {
|
|
10943
|
+
if (!A2)
|
|
10944
|
+
return A2;
|
|
10945
|
+
const Q = A2[0];
|
|
10946
|
+
return (Q === '"' || Q === "'") && k(A2) || A2;
|
|
10947
|
+
}
|
|
10948
|
+
return [w, K, !!C.f(), !!C.ms()];
|
|
10949
|
+
}
|
|
10950
|
+
function Q(A2, Q2) {
|
|
10951
|
+
const B = A2.length;
|
|
10952
|
+
let C = 0;
|
|
10953
|
+
for (;C < B; ) {
|
|
10954
|
+
const B2 = A2.charCodeAt(C);
|
|
10955
|
+
Q2[C++] = (255 & B2) << 8 | B2 >>> 8;
|
|
10956
|
+
}
|
|
10957
|
+
}
|
|
10958
|
+
function B(A2, Q2) {
|
|
10959
|
+
const B2 = A2.length;
|
|
10960
|
+
let C = 0;
|
|
10961
|
+
for (;C < B2; )
|
|
10962
|
+
Q2[C] = A2.charCodeAt(C++);
|
|
10963
|
+
}
|
|
10964
|
+
var C;
|
|
10965
|
+
var E = () => {
|
|
10966
|
+
return A2 = "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", typeof Buffer != "undefined" ? Buffer.from(A2, "base64") : Uint8Array.from(atob(A2), (A3) => A3.charCodeAt(0));
|
|
10967
|
+
var A2;
|
|
10968
|
+
};
|
|
10969
|
+
var init = WebAssembly.compile(E()).then(WebAssembly.instantiate).then(({ exports: A2 }) => {
|
|
10970
|
+
C = A2;
|
|
10971
|
+
});
|
|
10972
|
+
|
|
10904
10973
|
// compiler/transform/componentScriptTransformer.ts
|
|
10974
|
+
var lexerInitialized = false;
|
|
10975
|
+
async function ensureLexerInit() {
|
|
10976
|
+
if (!lexerInitialized) {
|
|
10977
|
+
await init;
|
|
10978
|
+
lexerInitialized = true;
|
|
10979
|
+
}
|
|
10980
|
+
}
|
|
10905
10981
|
var NAMESPACE_BINDINGS = `const {
|
|
10906
10982
|
signal, state, memo, effect, ref,
|
|
10907
10983
|
batch, untrack, onMount, onUnmount
|
|
@@ -10917,15 +10993,56 @@ var ZEN_PREFIX_MAPPINGS = {
|
|
|
10917
10993
|
zenOnMount: "onMount",
|
|
10918
10994
|
zenOnUnmount: "onUnmount"
|
|
10919
10995
|
};
|
|
10920
|
-
function
|
|
10921
|
-
|
|
10922
|
-
|
|
10923
|
-
|
|
10996
|
+
async function parseAndExtractImports(scriptContent) {
|
|
10997
|
+
await ensureLexerInit();
|
|
10998
|
+
const imports = [];
|
|
10999
|
+
const [parsedImports] = parse2(scriptContent);
|
|
11000
|
+
const sortedImports = [...parsedImports].sort((a, b) => b.ss - a.ss);
|
|
11001
|
+
let strippedCode = scriptContent;
|
|
11002
|
+
for (const imp of sortedImports) {
|
|
11003
|
+
const source = imp.n || "";
|
|
11004
|
+
const importStatement = scriptContent.slice(imp.ss, imp.se);
|
|
11005
|
+
if (source.endsWith(".zen")) {
|
|
11006
|
+
strippedCode = strippedCode.slice(0, imp.ss) + strippedCode.slice(imp.se);
|
|
11007
|
+
continue;
|
|
11008
|
+
}
|
|
11009
|
+
if (source.startsWith("./") || source.startsWith("../")) {
|
|
11010
|
+
strippedCode = strippedCode.slice(0, imp.ss) + strippedCode.slice(imp.se);
|
|
11011
|
+
continue;
|
|
11012
|
+
}
|
|
11013
|
+
const isTypeOnly = importStatement.startsWith("import type");
|
|
11014
|
+
const isSideEffect = imp.ss === imp.se || !importStatement.includes(" from ");
|
|
11015
|
+
let specifiers = "";
|
|
11016
|
+
if (!isSideEffect) {
|
|
11017
|
+
const fromIndex = importStatement.indexOf(" from ");
|
|
11018
|
+
if (fromIndex !== -1) {
|
|
11019
|
+
const start = isTypeOnly ? "import type ".length : "import ".length;
|
|
11020
|
+
specifiers = importStatement.slice(start, fromIndex).trim();
|
|
11021
|
+
}
|
|
11022
|
+
}
|
|
11023
|
+
imports.push({
|
|
11024
|
+
source,
|
|
11025
|
+
specifiers,
|
|
11026
|
+
typeOnly: isTypeOnly,
|
|
11027
|
+
sideEffect: isSideEffect
|
|
11028
|
+
});
|
|
11029
|
+
strippedCode = strippedCode.slice(0, imp.ss) + strippedCode.slice(imp.se);
|
|
11030
|
+
}
|
|
11031
|
+
strippedCode = strippedCode.replace(/^\s*\n/gm, "");
|
|
11032
|
+
imports.reverse();
|
|
11033
|
+
return { imports, strippedCode };
|
|
11034
|
+
}
|
|
11035
|
+
async function transformComponentScript(componentName, scriptContent, props) {
|
|
11036
|
+
const { imports, strippedCode } = await parseAndExtractImports(scriptContent);
|
|
11037
|
+
let transformed = strippedCode;
|
|
10924
11038
|
for (const [zenName, unprefixedName] of Object.entries(ZEN_PREFIX_MAPPINGS)) {
|
|
10925
11039
|
const regex = new RegExp(`(?<!\\w)${zenName}\\s*\\(`, "g");
|
|
10926
11040
|
transformed = transformed.replace(regex, `${unprefixedName}(`);
|
|
10927
11041
|
}
|
|
10928
|
-
return
|
|
11042
|
+
return {
|
|
11043
|
+
script: transformed.trim(),
|
|
11044
|
+
imports
|
|
11045
|
+
};
|
|
10929
11046
|
}
|
|
10930
11047
|
function generateComponentFactory(componentName, transformedScript, propNames) {
|
|
10931
11048
|
const propsDestructure = propNames.length > 0 ? `const { ${propNames.join(", ")} } = props || {};` : "";
|
|
@@ -10950,20 +11067,46 @@ __zenith.defineComponent('${componentName}', function(props, rootElement) {
|
|
|
10950
11067
|
});
|
|
10951
11068
|
`;
|
|
10952
11069
|
}
|
|
10953
|
-
function
|
|
10954
|
-
|
|
10955
|
-
|
|
11070
|
+
function deduplicateImports(imports) {
|
|
11071
|
+
const seen = new Map;
|
|
11072
|
+
for (const imp of imports) {
|
|
11073
|
+
const key = `${imp.source}|${imp.specifiers}|${imp.typeOnly}`;
|
|
11074
|
+
if (!seen.has(key)) {
|
|
11075
|
+
seen.set(key, imp);
|
|
11076
|
+
}
|
|
10956
11077
|
}
|
|
10957
|
-
|
|
10958
|
-
|
|
10959
|
-
|
|
10960
|
-
|
|
10961
|
-
return
|
|
11078
|
+
return Array.from(seen.values()).sort((a, b) => a.source.localeCompare(b.source));
|
|
11079
|
+
}
|
|
11080
|
+
function emitImports(imports) {
|
|
11081
|
+
const deduplicated = deduplicateImports(imports);
|
|
11082
|
+
return deduplicated.map((imp) => {
|
|
11083
|
+
if (imp.sideEffect) {
|
|
11084
|
+
return `import '${imp.source}';`;
|
|
11085
|
+
}
|
|
11086
|
+
const typePrefix = imp.typeOnly ? "type " : "";
|
|
11087
|
+
return `import ${typePrefix}${imp.specifiers} from '${imp.source}';`;
|
|
11088
|
+
}).join(`
|
|
10962
11089
|
`);
|
|
10963
11090
|
}
|
|
11091
|
+
async function transformAllComponentScripts(componentScripts) {
|
|
11092
|
+
if (!componentScripts || componentScripts.length === 0) {
|
|
11093
|
+
return { code: "", imports: [] };
|
|
11094
|
+
}
|
|
11095
|
+
const allImports = [];
|
|
11096
|
+
const factories = await Promise.all(componentScripts.filter((comp) => comp.script && comp.script.trim().length > 0).map(async (comp) => {
|
|
11097
|
+
const result = await transformComponentScript(comp.name, comp.script, comp.props);
|
|
11098
|
+
allImports.push(...result.imports);
|
|
11099
|
+
return generateComponentFactory(comp.name, result.script, comp.props);
|
|
11100
|
+
}));
|
|
11101
|
+
return {
|
|
11102
|
+
code: factories.join(`
|
|
11103
|
+
`),
|
|
11104
|
+
imports: deduplicateImports(allImports)
|
|
11105
|
+
};
|
|
11106
|
+
}
|
|
10964
11107
|
|
|
10965
11108
|
// compiler/runtime/transformIR.ts
|
|
10966
|
-
function transformIR(ir) {
|
|
11109
|
+
async function transformIR(ir) {
|
|
10967
11110
|
const expressionDependencies = analyzeAllExpressions(ir.template.expressions, ir.filePath, [], ir.script?.attributes["props"] ? ir.script.attributes["props"].split(",") : [], []);
|
|
10968
11111
|
const expressions = generateExpressionWrappers(ir.template.expressions, expressionDependencies);
|
|
10969
11112
|
const renderFunction = generateDOMFunction(ir.template.nodes, ir.template.expressions, "renderDynamicPage");
|
|
@@ -10978,7 +11121,7 @@ function transformIR(ir) {
|
|
|
10978
11121
|
const propDeclarations = extractProps(scriptContent);
|
|
10979
11122
|
const stateInitCode = generateStateInitialization(stateDeclarations, [...propDeclarations, ...propKeys]);
|
|
10980
11123
|
const scriptCode = transformStateDeclarations(scriptContent);
|
|
10981
|
-
const
|
|
11124
|
+
const componentScriptResult = await transformAllComponentScripts(ir.componentScripts || []);
|
|
10982
11125
|
const bundle = generateRuntimeBundle({
|
|
10983
11126
|
expressions,
|
|
10984
11127
|
expressionRegistry,
|
|
@@ -10987,7 +11130,8 @@ function transformIR(ir) {
|
|
|
10987
11130
|
stylesCode,
|
|
10988
11131
|
scriptCode,
|
|
10989
11132
|
stateInitCode,
|
|
10990
|
-
componentScriptCode
|
|
11133
|
+
componentScriptCode: componentScriptResult.code,
|
|
11134
|
+
npmImports: componentScriptResult.imports
|
|
10991
11135
|
});
|
|
10992
11136
|
return {
|
|
10993
11137
|
expressions,
|
|
@@ -11001,10 +11145,14 @@ function transformIR(ir) {
|
|
|
11001
11145
|
}
|
|
11002
11146
|
function generateRuntimeBundle(parts) {
|
|
11003
11147
|
const functionRegistrations = extractFunctionRegistrations(parts.scriptCode);
|
|
11148
|
+
const npmImportsHeader = parts.npmImports.length > 0 ? `// NPM Imports (hoisted from component scripts)
|
|
11149
|
+
${emitImports(parts.npmImports)}
|
|
11150
|
+
|
|
11151
|
+
` : "";
|
|
11004
11152
|
return `// Zenith Runtime Bundle (Phase 5)
|
|
11005
11153
|
// Generated at compile time - no .zen parsing in browser
|
|
11006
11154
|
|
|
11007
|
-
${parts.expressions}
|
|
11155
|
+
${npmImportsHeader}${parts.expressions}
|
|
11008
11156
|
|
|
11009
11157
|
${parts.expressionRegistry}
|
|
11010
11158
|
|
|
@@ -11275,7 +11423,7 @@ function validateExpressionsOrThrow(expressions, filePath) {
|
|
|
11275
11423
|
}
|
|
11276
11424
|
|
|
11277
11425
|
// compiler/finalize/finalizeOutput.ts
|
|
11278
|
-
function finalizeOutput(ir, compiled) {
|
|
11426
|
+
async function finalizeOutput(ir, compiled) {
|
|
11279
11427
|
const errors = [];
|
|
11280
11428
|
try {
|
|
11281
11429
|
validateExpressionsOrThrow(ir.template.expressions, ir.filePath);
|
|
@@ -11304,7 +11452,7 @@ function finalizeOutput(ir, compiled) {
|
|
|
11304
11452
|
}
|
|
11305
11453
|
let runtimeCode;
|
|
11306
11454
|
try {
|
|
11307
|
-
runtimeCode = transformIR(ir);
|
|
11455
|
+
runtimeCode = await transformIR(ir);
|
|
11308
11456
|
} catch (error3) {
|
|
11309
11457
|
errors.push(`Runtime generation failed: ${error3.message}`);
|
|
11310
11458
|
return {
|
|
@@ -11360,8 +11508,8 @@ function verifyNoRawExpressions(html, filePath) {
|
|
|
11360
11508
|
}
|
|
11361
11509
|
return errors;
|
|
11362
11510
|
}
|
|
11363
|
-
function finalizeOutputOrThrow(ir, compiled) {
|
|
11364
|
-
const output = finalizeOutput(ir, compiled);
|
|
11511
|
+
async function finalizeOutputOrThrow(ir, compiled) {
|
|
11512
|
+
const output = await finalizeOutput(ir, compiled);
|
|
11365
11513
|
if (output.hasErrors) {
|
|
11366
11514
|
const errorMessage = output.errors.join(`
|
|
11367
11515
|
|
|
@@ -11375,10 +11523,10 @@ ${errorMessage}`);
|
|
|
11375
11523
|
|
|
11376
11524
|
// compiler/index.ts
|
|
11377
11525
|
init_invariants();
|
|
11378
|
-
function compileZenSource(source, filePath, options) {
|
|
11526
|
+
async function compileZenSource(source, filePath, options) {
|
|
11379
11527
|
const template = parseTemplate(source, filePath);
|
|
11380
11528
|
const script = parseScript(source);
|
|
11381
|
-
const styleRegex =
|
|
11529
|
+
const styleRegex = /<style[^>]*>([\s\S]*?)<\/style>/gi;
|
|
11382
11530
|
const styles = [];
|
|
11383
11531
|
let match;
|
|
11384
11532
|
while ((match = styleRegex.exec(source)) !== null) {
|
|
@@ -11400,7 +11548,7 @@ function compileZenSource(source, filePath, options) {
|
|
|
11400
11548
|
validateInvariants(ir, filePath);
|
|
11401
11549
|
const compiled = transformTemplate(ir);
|
|
11402
11550
|
try {
|
|
11403
|
-
const finalized = finalizeOutputOrThrow(ir, compiled);
|
|
11551
|
+
const finalized = await finalizeOutputOrThrow(ir, compiled);
|
|
11404
11552
|
return { ir, compiled, finalized };
|
|
11405
11553
|
} catch (error3) {
|
|
11406
11554
|
throw new Error(`Failed to finalize output for ${filePath}:\\n${error3.message}`);
|
|
@@ -12592,7 +12740,7 @@ var T = L();
|
|
|
12592
12740
|
function Z(u) {
|
|
12593
12741
|
T = u;
|
|
12594
12742
|
}
|
|
12595
|
-
var
|
|
12743
|
+
var C2 = { exec: () => null };
|
|
12596
12744
|
function k(u, e = "") {
|
|
12597
12745
|
let t = typeof u == "string" ? u : u.source, n = { replace: (r, i) => {
|
|
12598
12746
|
let s = typeof i == "string" ? i : i.source;
|
|
@@ -12617,7 +12765,7 @@ var N = /(?:[*+-]|\d{1,9}[.)])/;
|
|
|
12617
12765
|
var re = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/;
|
|
12618
12766
|
var se = k(re).replace(/bull/g, N).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex();
|
|
12619
12767
|
var Oe = k(re).replace(/bull/g, N).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex();
|
|
12620
|
-
var
|
|
12768
|
+
var Q2 = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/;
|
|
12621
12769
|
var we = /^[^\n]+/;
|
|
12622
12770
|
var F = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/;
|
|
12623
12771
|
var ye = k(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", F).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex();
|
|
@@ -12625,12 +12773,12 @@ var Pe = k(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, N).getRegex(
|
|
|
12625
12773
|
var v = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
|
|
12626
12774
|
var j = /<!--(?:-?>|[\s\S]*?(?:-->|$))/;
|
|
12627
12775
|
var Se = k("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))", "i").replace("comment", j).replace("tag", v).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
|
|
12628
|
-
var ie = k(
|
|
12776
|
+
var ie = k(Q2).replace("hr", I).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", v).getRegex();
|
|
12629
12777
|
var $e = k(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", ie).getRegex();
|
|
12630
|
-
var U = { blockquote: $e, code: be, def: ye, fences: Re, heading: Te, hr: I, html: Se, lheading: se, list: Pe, newline: xe, paragraph: ie, table:
|
|
12778
|
+
var U = { blockquote: $e, code: be, def: ye, fences: Re, heading: Te, hr: I, html: Se, lheading: se, list: Pe, newline: xe, paragraph: ie, table: C2, text: we };
|
|
12631
12779
|
var te = k("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", I).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3}\t)[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", v).getRegex();
|
|
12632
|
-
var _e = { ...U, lheading: Oe, table: te, paragraph: k(
|
|
12633
|
-
var Le = { ...U, html: k(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", j).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, heading: /^(#{1,6})(.*)(?:\n+|$)/, fences:
|
|
12780
|
+
var _e = { ...U, lheading: Oe, table: te, paragraph: k(Q2).replace("hr", I).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", te).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", v).getRegex() };
|
|
12781
|
+
var Le = { ...U, html: k(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", j).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, heading: /^(#{1,6})(.*)(?:\n+|$)/, fences: C2, lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, paragraph: k(Q2).replace("hr", I).replace("heading", ` *#{1,6} *[^
|
|
12634
12782
|
]`).replace("lheading", se).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() };
|
|
12635
12783
|
var Me = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/;
|
|
12636
12784
|
var ze = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/;
|
|
@@ -12661,11 +12809,11 @@ var ce = k(/^!?\[(label)\]\[(ref)\]/).replace("label", q).replace("ref", F).getR
|
|
|
12661
12809
|
var he = k(/^!?\[(ref)\](?:\[\])?/).replace("ref", F).getRegex();
|
|
12662
12810
|
var Ue = k("reflink|nolink(?!\\()", "g").replace("reflink", ce).replace("nolink", he).getRegex();
|
|
12663
12811
|
var ne = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;
|
|
12664
|
-
var W = { _backpedal:
|
|
12812
|
+
var W = { _backpedal: C2, anyPunctuation: Ge, autolink: Ne, blockSkip: Be, br: oe, code: ze, del: C2, emStrongLDelim: qe, emStrongRDelimAst: De, emStrongRDelimUnd: Ze, escape: Me, link: je, nolink: he, punctuation: Ce, reflink: ce, reflinkSearch: Ue, tag: Fe, text: Ae, url: C2 };
|
|
12665
12813
|
var Ke = { ...W, link: k(/^!?\[(label)\]\((.*?)\)/).replace("label", q).getRegex(), reflink: k(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", q).getRegex() };
|
|
12666
12814
|
var G = { ...W, emStrongRDelimAst: He, emStrongLDelim: ve, url: k(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol", ne).replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, del: /^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/, text: k(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol", ne).getRegex() };
|
|
12667
12815
|
var We = { ...G, br: k(oe).replace("{2,}", "*").getRegex(), text: k(G.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex() };
|
|
12668
|
-
var
|
|
12816
|
+
var E2 = { normal: U, gfm: _e, pedantic: Le };
|
|
12669
12817
|
var M = { normal: W, gfm: G, breaks: We, pedantic: Ke };
|
|
12670
12818
|
var Xe = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" };
|
|
12671
12819
|
var ke = (u) => Xe[u];
|
|
@@ -12861,12 +13009,12 @@ ${c}` : c;
|
|
|
12861
13009
|
let O = this.rules.other.nextBulletRegex(f), V = this.rules.other.hrRegex(f), Y = this.rules.other.fencesBeginRegex(f), ee = this.rules.other.headingBeginRegex(f), fe = this.rules.other.htmlBeginRegex(f);
|
|
12862
13010
|
for (;e; ) {
|
|
12863
13011
|
let H = e.split(`
|
|
12864
|
-
`, 1)[0],
|
|
12865
|
-
if (h = H, this.options.pedantic ? (h = h.replace(this.rules.other.listReplaceNesting, " "),
|
|
13012
|
+
`, 1)[0], A2;
|
|
13013
|
+
if (h = H, this.options.pedantic ? (h = h.replace(this.rules.other.listReplaceNesting, " "), A2 = h) : A2 = h.replace(this.rules.other.tabCharGlobal, " "), Y.test(h) || ee.test(h) || fe.test(h) || O.test(h) || V.test(h))
|
|
12866
13014
|
break;
|
|
12867
|
-
if (
|
|
13015
|
+
if (A2.search(this.rules.other.nonSpaceChar) >= f || !h.trim())
|
|
12868
13016
|
c += `
|
|
12869
|
-
` +
|
|
13017
|
+
` + A2.slice(f);
|
|
12870
13018
|
else {
|
|
12871
13019
|
if (R || g.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4 || Y.test(g) || ee.test(g) || V.test(g))
|
|
12872
13020
|
break;
|
|
@@ -12874,7 +13022,7 @@ ${c}` : c;
|
|
|
12874
13022
|
` + h;
|
|
12875
13023
|
}
|
|
12876
13024
|
!R && !h.trim() && (R = true), p += H + `
|
|
12877
|
-
`, e = e.substring(H.length + 1), g =
|
|
13025
|
+
`, e = e.substring(H.length + 1), g = A2.slice(f);
|
|
12878
13026
|
}
|
|
12879
13027
|
}
|
|
12880
13028
|
i.loose || (a ? i.loose = true : this.rules.other.doubleBlankLine.test(p) && (a = true)), i.items.push({ type: "list_item", raw: p, task: !!this.options.gfm && this.rules.other.listIsTask.test(c), loose: false, text: c, tokens: [] }), i.raw += p;
|
|
@@ -13095,11 +13243,11 @@ var x = class u {
|
|
|
13095
13243
|
tokenizer;
|
|
13096
13244
|
constructor(e) {
|
|
13097
13245
|
this.tokens = [], this.tokens.links = Object.create(null), this.options = e || T, this.options.tokenizer = this.options.tokenizer || new y, this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = { inLink: false, inRawBlock: false, top: true };
|
|
13098
|
-
let t = { other: m, block:
|
|
13099
|
-
this.options.pedantic ? (t.block =
|
|
13246
|
+
let t = { other: m, block: E2.normal, inline: M.normal };
|
|
13247
|
+
this.options.pedantic ? (t.block = E2.pedantic, t.inline = M.pedantic) : this.options.gfm && (t.block = E2.gfm, this.options.breaks ? t.inline = M.breaks : t.inline = M.gfm), this.tokenizer.rules = t;
|
|
13100
13248
|
}
|
|
13101
13249
|
static get rules() {
|
|
13102
|
-
return { block:
|
|
13250
|
+
return { block: E2, inline: M };
|
|
13103
13251
|
}
|
|
13104
13252
|
static lex(e, t) {
|
|
13105
13253
|
return new u(t).lex(e);
|
|
@@ -13636,7 +13784,7 @@ var S = class {
|
|
|
13636
13784
|
return this.block ? b.parse : b.parseInline;
|
|
13637
13785
|
}
|
|
13638
13786
|
};
|
|
13639
|
-
var
|
|
13787
|
+
var B2 = class {
|
|
13640
13788
|
defaults = L();
|
|
13641
13789
|
options = this.setOptions;
|
|
13642
13790
|
parse = this.parseMarkdown(true);
|
|
@@ -13816,7 +13964,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
13816
13964
|
};
|
|
13817
13965
|
}
|
|
13818
13966
|
};
|
|
13819
|
-
var _ = new
|
|
13967
|
+
var _ = new B2;
|
|
13820
13968
|
function d(u3, e) {
|
|
13821
13969
|
return _.parse(u3, e);
|
|
13822
13970
|
}
|
|
@@ -14161,6 +14309,36 @@ function resolveGlobalsCss(projectRoot) {
|
|
|
14161
14309
|
|
|
14162
14310
|
// cli/commands/dev.ts
|
|
14163
14311
|
var pageCache = new Map;
|
|
14312
|
+
async function bundlePageScript(script, projectRoot) {
|
|
14313
|
+
if (!script.includes("import ")) {
|
|
14314
|
+
return script;
|
|
14315
|
+
}
|
|
14316
|
+
const tempDir = os.tmpdir();
|
|
14317
|
+
const tempFile = path8.join(tempDir, `zenith-bundle-${Date.now()}.js`);
|
|
14318
|
+
try {
|
|
14319
|
+
fs8.writeFileSync(tempFile, script, "utf-8");
|
|
14320
|
+
const result = await Bun.build({
|
|
14321
|
+
entrypoints: [tempFile],
|
|
14322
|
+
target: "browser",
|
|
14323
|
+
format: "esm",
|
|
14324
|
+
minify: false,
|
|
14325
|
+
external: []
|
|
14326
|
+
});
|
|
14327
|
+
if (!result.success || !result.outputs[0]) {
|
|
14328
|
+
console.error("[Zenith] Bundle errors:", result.logs);
|
|
14329
|
+
return script;
|
|
14330
|
+
}
|
|
14331
|
+
const bundledCode = await result.outputs[0].text();
|
|
14332
|
+
return bundledCode;
|
|
14333
|
+
} catch (error3) {
|
|
14334
|
+
console.error("[Zenith] Failed to bundle page script:", error3.message);
|
|
14335
|
+
return script;
|
|
14336
|
+
} finally {
|
|
14337
|
+
try {
|
|
14338
|
+
fs8.unlinkSync(tempFile);
|
|
14339
|
+
} catch {}
|
|
14340
|
+
}
|
|
14341
|
+
}
|
|
14164
14342
|
async function dev(options = {}) {
|
|
14165
14343
|
const project = requireProject();
|
|
14166
14344
|
const port = options.port || parseInt(process.env.PORT || "3000", 10);
|
|
@@ -14224,7 +14402,7 @@ async function dev(options = {}) {
|
|
|
14224
14402
|
".json",
|
|
14225
14403
|
".map"
|
|
14226
14404
|
]);
|
|
14227
|
-
function compilePageInMemory(pagePath) {
|
|
14405
|
+
async function compilePageInMemory(pagePath) {
|
|
14228
14406
|
try {
|
|
14229
14407
|
const layoutsDir = path8.join(pagesDir, "../layouts");
|
|
14230
14408
|
const componentsDir = path8.join(pagesDir, "../components");
|
|
@@ -14234,15 +14412,16 @@ async function dev(options = {}) {
|
|
|
14234
14412
|
let layoutToUse = layouts.get("DefaultLayout");
|
|
14235
14413
|
if (layoutToUse)
|
|
14236
14414
|
processedSource = processLayout(source, layoutToUse);
|
|
14237
|
-
const result = compileZenSource(processedSource, pagePath, {
|
|
14415
|
+
const result = await compileZenSource(processedSource, pagePath, {
|
|
14238
14416
|
componentsDir: fs8.existsSync(componentsDir) ? componentsDir : undefined
|
|
14239
14417
|
});
|
|
14240
14418
|
if (!result.finalized)
|
|
14241
14419
|
throw new Error("Compilation failed");
|
|
14242
14420
|
const routeDef = generateRouteDefinition(pagePath, pagesDir);
|
|
14421
|
+
const bundledScript = await bundlePageScript(result.finalized.js, rootDir);
|
|
14243
14422
|
return {
|
|
14244
14423
|
html: result.finalized.html,
|
|
14245
|
-
script:
|
|
14424
|
+
script: bundledScript,
|
|
14246
14425
|
styles: result.finalized.styles,
|
|
14247
14426
|
route: routeDef.path,
|
|
14248
14427
|
lastModified: Date.now()
|
|
@@ -14294,7 +14473,7 @@ async function dev(options = {}) {
|
|
|
14294
14473
|
});
|
|
14295
14474
|
const server = serve({
|
|
14296
14475
|
port,
|
|
14297
|
-
fetch(req, server2) {
|
|
14476
|
+
async fetch(req, server2) {
|
|
14298
14477
|
const startTime = performance.now();
|
|
14299
14478
|
const url = new URL(req.url);
|
|
14300
14479
|
const pathname = url.pathname;
|
|
@@ -14339,7 +14518,7 @@ async function dev(options = {}) {
|
|
|
14339
14518
|
let cached = pageCache.get(pagePath);
|
|
14340
14519
|
const stat = fs8.statSync(pagePath);
|
|
14341
14520
|
if (!cached || stat.mtimeMs > cached.lastModified) {
|
|
14342
|
-
cached = compilePageInMemory(pagePath) || undefined;
|
|
14521
|
+
cached = await compilePageInMemory(pagePath) || undefined;
|
|
14343
14522
|
if (cached)
|
|
14344
14523
|
pageCache.set(pagePath, cached);
|
|
14345
14524
|
}
|
|
@@ -14402,7 +14581,7 @@ function generateDevHTML(page, contentData = {}) {
|
|
|
14402
14581
|
const runtimeTag = `<script src="/runtime.js"></script>`;
|
|
14403
14582
|
const contentJson = JSON.stringify(contentData).replace(/<\//g, "<\\/");
|
|
14404
14583
|
const contentTag = `<script>window.__ZENITH_CONTENT__ = ${contentJson};</script>`;
|
|
14405
|
-
const scriptTag = `<script>
|
|
14584
|
+
const scriptTag = `<script type="module">
|
|
14406
14585
|
${page.script}
|
|
14407
14586
|
</script>`;
|
|
14408
14587
|
const allScripts = `${runtimeTag}
|
|
@@ -14531,7 +14710,7 @@ function getBuildOutputType(analysis) {
|
|
|
14531
14710
|
}
|
|
14532
14711
|
|
|
14533
14712
|
// compiler/ssg-build.ts
|
|
14534
|
-
function compilePage(pagePath, pagesDir, baseDir = process.cwd()) {
|
|
14713
|
+
async function compilePage(pagePath, pagesDir, baseDir = process.cwd()) {
|
|
14535
14714
|
const source = fs9.readFileSync(pagePath, "utf-8");
|
|
14536
14715
|
const analysis = analyzePageSource(source);
|
|
14537
14716
|
const layoutsDir = path10.join(baseDir, "layouts");
|
|
@@ -14541,7 +14720,7 @@ function compilePage(pagePath, pagesDir, baseDir = process.cwd()) {
|
|
|
14541
14720
|
if (layoutToUse) {
|
|
14542
14721
|
processedSource = processLayout(source, layoutToUse);
|
|
14543
14722
|
}
|
|
14544
|
-
const result = compileZenSource(processedSource, pagePath);
|
|
14723
|
+
const result = await compileZenSource(processedSource, pagePath);
|
|
14545
14724
|
if (!result.finalized) {
|
|
14546
14725
|
throw new Error(`Compilation failed for ${pagePath}: No finalized output`);
|
|
14547
14726
|
}
|
|
@@ -14634,7 +14813,7 @@ ${page.pageScript}
|
|
|
14634
14813
|
})();
|
|
14635
14814
|
`;
|
|
14636
14815
|
}
|
|
14637
|
-
function buildSSG(options) {
|
|
14816
|
+
async function buildSSG(options) {
|
|
14638
14817
|
const { pagesDir, outDir, baseDir = path10.dirname(pagesDir) } = options;
|
|
14639
14818
|
const contentDir = path10.join(baseDir, "content");
|
|
14640
14819
|
const contentData = loadContent(contentDir);
|
|
@@ -14659,7 +14838,7 @@ function buildSSG(options) {
|
|
|
14659
14838
|
const relativePath = path10.relative(pagesDir, pageFile);
|
|
14660
14839
|
console.log(` Compiling: ${relativePath}`);
|
|
14661
14840
|
try {
|
|
14662
|
-
const compiled = compilePage(pageFile, pagesDir, baseDir);
|
|
14841
|
+
const compiled = await compilePage(pageFile, pagesDir, baseDir);
|
|
14663
14842
|
compiledPages.push(compiled);
|
|
14664
14843
|
if (compiled.analysis.needsHydration) {
|
|
14665
14844
|
hasHydratedPages = true;
|
|
@@ -14718,7 +14897,7 @@ function buildSSG(options) {
|
|
|
14718
14897
|
const custom404Path = path10.join(pagesDir, candidate);
|
|
14719
14898
|
if (fs9.existsSync(custom404Path)) {
|
|
14720
14899
|
try {
|
|
14721
|
-
const compiled = compilePage(custom404Path, pagesDir, baseDir);
|
|
14900
|
+
const compiled = await compilePage(custom404Path, pagesDir, baseDir);
|
|
14722
14901
|
const html = generatePageHTML(compiled, globalStyles, contentData);
|
|
14723
14902
|
fs9.writeFileSync(path10.join(outDir, "404.html"), html);
|
|
14724
14903
|
console.log("\uD83D\uDCE6 Generated 404.html (custom)");
|