@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.
@@ -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
- // ../../node_modules/picocolors/picocolors.js
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 transformComponentScript(componentName, scriptContent, props) {
10921
- let transformed = scriptContent;
10922
- transformed = transformed.replace(/import\s+\w+\s+from\s+['"][^'"]*\.zen['"];?\s*/g, "");
10923
- transformed = transformed.replace(/import\s+{[^}]*}\s+from\s+['"][^'"]+['"];?\s*/g, "");
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 transformed.trim();
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 transformAllComponentScripts(componentScripts) {
10954
- if (!componentScripts || componentScripts.length === 0) {
10955
- return "";
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
- const factories = componentScripts.filter((comp) => comp.script && comp.script.trim().length > 0).map((comp) => {
10958
- const transformed = transformComponentScript(comp.name, comp.script, comp.props);
10959
- return generateComponentFactory(comp.name, transformed, comp.props);
10960
- });
10961
- return factories.join(`
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 componentScriptCode = transformAllComponentScripts(ir.componentScripts || []);
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 = /\u003cstyle[^\u003e]*\u003e([\s\S]*?)\u003c\/style\u003e/gi;
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 C = { exec: () => null };
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 Q = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/;
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(Q).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();
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: C, text: we };
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(Q).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() };
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: C, lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, paragraph: k(Q).replace("hr", I).replace("heading", ` *#{1,6} *[^
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: C, anyPunctuation: Ge, autolink: Ne, blockSkip: Be, br: oe, code: ze, del: C, emStrongLDelim: qe, emStrongRDelimAst: De, emStrongRDelimUnd: Ze, escape: Me, link: je, nolink: he, punctuation: Ce, reflink: ce, reflinkSearch: Ue, tag: Fe, text: Ae, url: C };
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 E = { normal: U, gfm: _e, pedantic: Le };
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 = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" };
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], A;
12865
- if (h = H, this.options.pedantic ? (h = h.replace(this.rules.other.listReplaceNesting, " "), A = h) : A = h.replace(this.rules.other.tabCharGlobal, " "), Y.test(h) || ee.test(h) || fe.test(h) || O.test(h) || V.test(h))
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 (A.search(this.rules.other.nonSpaceChar) >= f || !h.trim())
13015
+ if (A2.search(this.rules.other.nonSpaceChar) >= f || !h.trim())
12868
13016
  c += `
12869
- ` + A.slice(f);
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 = A.slice(f);
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: E.normal, inline: M.normal };
13099
- this.options.pedantic ? (t.block = E.pedantic, t.inline = M.pedantic) : this.options.gfm && (t.block = E.gfm, this.options.breaks ? t.inline = M.breaks : t.inline = M.gfm), this.tokenizer.rules = t;
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: E, inline: M };
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 B = class {
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 B;
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: result.finalized.js,
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)");