@withl5e/l5e 1.1.0-alpha.0 → 1.1.0-alpha.1

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.
@@ -62,51 +62,79 @@ function E(e) {
62
62
  }
63
63
  };
64
64
  }
65
- async function D(e, t) {
66
- let n = e.map((e) => t.fileForScript(e)), r = t.inlineableRoots(n), i = new Map(n.flatMap((e, n) => !t.isPreserved(e) && !r.has(e) ? [[e, `entry-${n}`]] : [])), a = {
65
+ function D(e, t, n) {
66
+ return {
67
+ name: "compact-build-graph",
68
+ resolveId(r, i) {
69
+ if (!i || r === w) return null;
70
+ let a = u.isAbsolute(r) ? u.normalize(r) : r.startsWith("/") ? e.fileForAssetUrl(r) : r.startsWith(".") ? u.resolve(u.dirname(i), r) : null;
71
+ return a ? e.isShared(a) && t ? {
72
+ id: t,
73
+ external: "absolute"
74
+ } : e.isGlobalOwned(a) && n ? {
75
+ id: n,
76
+ external: "absolute"
77
+ } : { id: a } : null;
78
+ }
79
+ };
80
+ }
81
+ async function O(e, t, n = {}) {
82
+ let r = e.map((e) => t.fileForScript(e)), i = n.compact && t.compact, a = t.inlineableRoots(r), o = new Map(r.flatMap((e, n) => !t.isPreserved(e) && !a.has(e) ? [[e, `entry-${n}`]] : [])), s = (n.islands || []).map(({ key: e, script: n }) => ({
83
+ key: e,
84
+ file: t.fileForScript(n)
85
+ })), c = n.renderer ? t.fileForScript(n.renderer) : void 0, l = (n.exportScripts || []).map((e) => t.fileForScript(e)), d = {
67
86
  input: w,
68
- plugins: [T(n.map((e) => `import ${JSON.stringify(e)};`).join("\n")), E(t)],
87
+ plugins: [T([
88
+ ...r.map((e) => n.name === "shared" ? `export * from ${JSON.stringify(e)};` : `import ${JSON.stringify(e)};`),
89
+ ...l.map((e) => `export * from ${JSON.stringify(e)};`),
90
+ ...s.length ? [
91
+ "globalThis.__L5E_ISLANDS__ ||= {};",
92
+ ...s.map(({ key: e, file: t }) => `globalThis.__L5E_ISLANDS__[${JSON.stringify(e)}] = async () => { const [renderer, module] = await Promise.all([import(${JSON.stringify(c)}), import(${JSON.stringify(t)})]); return { reactDomClient: renderer.reactDomClient, createElement: renderer.createElement, module }; };`),
93
+ "globalThis.__L5E_BOOT_ISLANDS__?.();"
94
+ ] : []
95
+ ].join("\n")), i ? D(t, n.sharedUrl, n.globalUrl) : E(t)],
69
96
  platform: "neutral",
70
97
  tsconfig: !1,
71
98
  treeshake: { moduleSideEffects: () => !0 },
72
99
  external: (e) => !e.startsWith(".") && !u.isAbsolute(e) && e !== w
73
- }, o = {
100
+ }, f = {
74
101
  format: "es",
75
- codeSplitting: { groups: [{ name: (e) => i.get(e) ?? null }] },
102
+ codeSplitting: !i && { groups: [{ name: (e) => o.get(e) ?? null }] },
76
103
  minify: !1,
77
- entryFileNames: "bundle-[hash].js",
78
- chunkFileNames: `bundle-${C(JSON.stringify(n))}-[hash].js`
79
- }, { rolldown: s } = await v(), c = await s(a), l;
104
+ entryFileNames: `${n.name || "bundle"}-[hash].js`,
105
+ strictExecutionOrder: i,
106
+ chunkFileNames: `bundle-${C(JSON.stringify(r))}-[hash].js`
107
+ }, { rolldown: p } = await v(), m = await p(d), h;
80
108
  try {
81
- ({output: l} = await c.generate(o));
109
+ ({output: h} = await m.generate(f));
82
110
  } finally {
83
- await c.close();
111
+ await m.close();
84
112
  }
85
- for (let e of l) e.type === "chunk" && b.set(e.fileName, {
113
+ for (let e of h) e.type === "chunk" && b.set(e.fileName, {
86
114
  content: e.code || "",
87
115
  hash: C(e.code || ""),
88
116
  filename: e.fileName,
89
117
  mimeType: "application/javascript"
90
118
  });
91
- let d = l.find((e) => e.type === "chunk" && e.isEntry && e.facadeModuleId === w);
92
- if (!d) throw Error("[bundler] rolldown produced no entry chunk");
119
+ let g = h.find((e) => e.type === "chunk" && e.isEntry && e.facadeModuleId === w);
120
+ if (!g) throw Error("[bundler] rolldown produced no entry chunk");
93
121
  return {
94
- hash: C(d.code || ""),
95
- filename: d.fileName,
96
- content: d.code || ""
122
+ hash: C(g.code || ""),
123
+ filename: g.fileName,
124
+ content: g.code || ""
97
125
  };
98
126
  }
99
- async function O(e, t, n) {
127
+ async function k(e, t, n, r = {}) {
100
128
  if (e.length === 0) return y;
101
129
  if (!n || n.directory !== u.resolve(t)) return console.warn("[bundler] No matching build manifest; serving original script entries."), y;
102
- let r = [...new Set(e)], i = `scripts:${n.cacheKey}:${JSON.stringify(r)}`;
130
+ let i = [...new Set(e)], a = `scripts:${n.cacheKey}:${JSON.stringify([i, r])}`;
103
131
  try {
104
- return await S(i, () => D(r, n));
132
+ return await S(a, () => O(i, n, r));
105
133
  } catch (e) {
106
134
  return console.error("[bundler] Error bundling scripts:", e), y;
107
135
  }
108
136
  }
109
- async function k(e, t) {
137
+ async function A(e, t) {
110
138
  let n = [];
111
139
  for (let r of e) {
112
140
  let e = r.startsWith("/") ? u.join(t, r.substring(1)) : u.join(t, r);
@@ -129,95 +157,113 @@ async function k(e, t) {
129
157
  content: r
130
158
  };
131
159
  }
132
- async function A(e, t) {
160
+ async function j(e, t) {
133
161
  if (e.length === 0) return y;
134
162
  let n = [...new Set(e)].sort(), r = `css:${JSON.stringify([u.resolve(t), n])}`;
135
163
  try {
136
- return await S(r, () => k(n, t));
164
+ return await S(r, () => A(n, t));
137
165
  } catch (e) {
138
166
  return console.error("[bundler] Error bundling CSS:", e), y;
139
167
  }
140
168
  }
141
- function j(e) {
169
+ function M(e) {
142
170
  return b.get(e);
143
171
  }
144
172
  //#endregion
145
173
  //#region src/core/script-bundle-policy.ts
146
- function M(e, t, n = "/") {
147
- let r = u.resolve(t), i = h(r), a = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Map(), l = Object.entries(e).filter(([, e]) => /\.[cm]?js$/.test(e.file));
148
- function d(e) {
149
- let t = u.resolve(i, e), n = u.relative(i, t);
174
+ function N(e, t, n = "/", r) {
175
+ let i = u.resolve(t), a = h(i), o = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map(), d = Object.entries(e).filter(([, e]) => /\.[cm]?js$/.test(e.file));
176
+ function f(e) {
177
+ let t = u.resolve(a, e), n = u.relative(a, t);
150
178
  if (!n || n === ".." || n.startsWith(`..${u.sep}`) || u.isAbsolute(n)) throw Error(`[bundler] Asset is outside the client output: ${e}`);
151
179
  return t;
152
180
  }
153
- for (let [e, t] of l) {
154
- let n = d(t.file);
155
- a.add(n), (!t.isEntry || t.isDynamicEntry || e === "src/client.global.ts" || /(?:^|\/)react\//.test(t.src || e)) && o.add(n);
181
+ let m = new Set((r?.chunks || []).filter((e) => r?.mode === "compact" && e.canonicalShared).map((e) => f(e.file))), g = new Set((r?.chunks || []).filter((e) => r?.mode === "compact" && e.canonicalGlobal).map((e) => f(e.file)));
182
+ for (let [e, t] of d) {
183
+ let n = f(t.file);
184
+ o.add(n), (!t.isEntry || t.isDynamicEntry || e === "src/client.global.ts" || /(?:^|\/)react\//.test(t.src || e)) && c.add(n);
156
185
  }
157
- for (let [, t] of l) {
186
+ for (let [, t] of d) {
158
187
  for (let n of [...t.imports || [], ...t.dynamicImports || []]) {
159
188
  let t = e[n];
160
- if (!t || !a.has(d(t.file))) throw Error(`[bundler] Missing JavaScript manifest dependency: ${n}`);
161
- o.add(d(t.file));
189
+ if (!t || !o.has(f(t.file))) throw Error(`[bundler] Missing JavaScript manifest dependency: ${n}`);
190
+ c.add(f(t.file));
162
191
  }
163
- c.set(d(t.file), (t.imports || []).map((t) => d(e[t].file)));
192
+ l.set(f(t.file), (t.imports || []).map((t) => f(e[t].file)));
164
193
  }
165
194
  return {
166
195
  cacheKey: p("sha256").update(JSON.stringify([
167
- r,
168
196
  i,
197
+ a,
169
198
  n,
170
199
  e
171
200
  ])).digest("hex"),
172
- directory: r,
201
+ compact: r?.mode === "compact",
202
+ directory: i,
173
203
  fileForScript(e) {
174
- let t = d(e.replace(/^\/+/, ""));
175
- if (!a.has(t)) throw Error(`[bundler] Script is missing from manifest: ${e}`);
176
- return t;
204
+ let t = n === "/" ? "/" : `/${n.replace(/^\/+|\/+$/g, "")}/`, r = f(e.startsWith(t) ? e.slice(t.length) : e.replace(/^\/+/, ""));
205
+ if (!o.has(r)) throw Error(`[bundler] Script is missing from manifest: ${e}`);
206
+ return r;
207
+ },
208
+ fileForAssetUrl(e) {
209
+ let t = n === "/" ? "/" : `/${n.replace(/^\/+|\/+$/g, "")}/`, r = f(e.startsWith(t) ? e.slice(t.length) : e.replace(/^\/+/, ""));
210
+ return o.has(r) ? r : void 0;
177
211
  },
178
212
  isPreserved(e) {
179
- return o.has(e);
213
+ return c.has(e);
214
+ },
215
+ isShared(e) {
216
+ return m.has(e);
217
+ },
218
+ isGlobalOwned(e) {
219
+ return g.has(e);
220
+ },
221
+ sharedScripts() {
222
+ return [...m].map((e) => s(n, u.relative(a, e).replace(/\\/g, "/")));
223
+ },
224
+ globalOwnedScripts() {
225
+ return [...g].map((e) => s(n, u.relative(a, e).replace(/\\/g, "/")));
180
226
  },
181
227
  inlineableRoots(e) {
182
228
  let t = /* @__PURE__ */ new Set(), n = 0;
183
229
  function r(e, i) {
184
230
  if (!t.has(e)) {
185
231
  t.add(e);
186
- for (let t of c.get(e) || []) r(t, i);
187
- o.has(e) && (n = i);
232
+ for (let t of l.get(e) || []) r(t, i);
233
+ c.has(e) && (n = i);
188
234
  }
189
235
  }
190
236
  return e.forEach((e, t) => {
191
- r(e, t), o.has(e) && (n = t + 1);
192
- }), new Set(e.slice(n).filter((e) => !o.has(e)));
237
+ r(e, t), c.has(e) && (n = t + 1);
238
+ }), new Set(e.slice(n).filter((e) => !c.has(e)));
193
239
  },
194
240
  assetUrl(e) {
195
- if (!a.has(e)) throw Error(`[bundler] Import is missing from manifest: ${e}`);
196
- return s(n, u.relative(i, e).replace(/\\/g, "/"));
241
+ if (!o.has(e)) throw Error(`[bundler] Import is missing from manifest: ${e}`);
242
+ return s(n, u.relative(a, e).replace(/\\/g, "/"));
197
243
  }
198
244
  };
199
245
  }
200
246
  //#endregion
201
247
  //#region src/core/server.ts
202
- function N(e, t) {
248
+ function P(e, t) {
203
249
  let r = n(t);
204
250
  return e.replace(/<html\b([^>]*)>/i, (e, t) => /\blang\s*=/i.test(t) ? e.replace(/lang\s*=\s*"[^"]*"/i, () => `lang="${r}"`) : `<html lang="${r}"${t}>`);
205
251
  }
206
- function P(e) {
252
+ function F(e) {
207
253
  return new URL(`${e.protocol}://${e.get("host")}${e.originalUrl}`);
208
254
  }
209
- function F(e, t) {
255
+ function I(e, t) {
210
256
  return `${e.pathname}${e.search}`.replace(t, "") || "/";
211
257
  }
212
- function I(e) {
258
+ function L(e) {
213
259
  let t = {
214
260
  method: e.method,
215
261
  headers: i(e)
216
262
  };
217
- return e.method !== "GET" && e.method !== "HEAD" && (t.body = e, t.duplex = "half"), new globalThis.Request(P(e).href, t);
263
+ return e.method !== "GET" && e.method !== "HEAD" && (t.body = e, t.duplex = "half"), new globalThis.Request(F(e).href, t);
218
264
  }
219
- function L(e, t, n, i) {
220
- let a = new URL(t.url), o = F(a, n), s = o.startsWith("/") ? o : `/${o}`, c = {};
265
+ function R(e, t, n, i) {
266
+ let a = new URL(t.url), o = I(a, n), s = o.startsWith("/") ? o : `/${o}`, c = {};
221
267
  return t.headers.forEach((e, t) => {
222
268
  c[t] = e;
223
269
  }), {
@@ -232,12 +278,12 @@ function L(e, t, n, i) {
232
278
  locals: i
233
279
  };
234
280
  }
235
- function R(e, t, n) {
281
+ function z(e, t, n) {
236
282
  return e ? e instanceof globalThis.Request ? e : e instanceof URL ? new globalThis.Request(e.href, t.clone()) : new globalThis.Request(new URL(e, n).href, t.clone()) : t;
237
283
  }
238
- async function z(e, t, n) {
284
+ async function B(e, t, n) {
239
285
  t.status(n.status);
240
- let r = B(n.headers);
286
+ let r = V(n.headers);
241
287
  if (n.headers.forEach((e, n) => {
242
288
  n.toLowerCase() !== "set-cookie" && t.setHeader(n, e);
243
289
  }), r.length > 0 && t.setHeader("Set-Cookie", r), e.method === "HEAD") {
@@ -247,15 +293,15 @@ async function z(e, t, n) {
247
293
  let i = Buffer.from(await n.arrayBuffer());
248
294
  t.send(i);
249
295
  }
250
- function B(e) {
296
+ function V(e) {
251
297
  let t = e.getSetCookie;
252
298
  if (typeof t == "function") return t.call(e);
253
299
  let n = e.raw?.();
254
300
  if (n?.["set-cookie"]) return n["set-cookie"];
255
301
  let r = e.get("set-cookie");
256
- return r ? V(r) : [];
302
+ return r ? H(r) : [];
257
303
  }
258
- function V(e) {
304
+ function H(e) {
259
305
  let t = [], n = 0;
260
306
  for (let r = 0; r < e.length; r++) {
261
307
  if (e[r] !== ",") continue;
@@ -264,7 +310,7 @@ function V(e) {
264
310
  }
265
311
  return t.push(e.slice(n).trim()), t.filter(Boolean);
266
312
  }
267
- function H(e) {
313
+ function U(e) {
268
314
  if (!e.rawResponse) return null;
269
315
  let { body: t, contentType: n, statusCode: r, headers: i } = e.rawResponse, a = new Headers(i);
270
316
  return a.set("Content-Type", n), new globalThis.Response(t, {
@@ -272,8 +318,8 @@ function H(e) {
272
318
  headers: a
273
319
  });
274
320
  }
275
- async function U({ rendered: e, template: t, manifest: r, root: i, distClientDir: a, isProduction: l, assetBase: d, scriptPolicy: f }) {
276
- let p = H(e);
321
+ async function W({ rendered: e, template: t, manifest: r, root: i, distClientDir: a, isProduction: l, assetBase: d, scriptPolicy: f }) {
322
+ let p = U(e);
277
323
  if (p) return p;
278
324
  if (e.redirect) return new globalThis.Response(null, {
279
325
  status: e.redirect.statusCode,
@@ -288,50 +334,89 @@ async function U({ rendered: e, template: t, manifest: r, root: i, distClientDir
288
334
  base: d
289
335
  });
290
336
  D && w(D, l);
291
- let k = "";
292
- if (e.islandData && e.islandData.length > 0 && (k = `<script type="application/json" id="_l5e_data_">${(0, g.default)(e.islandData, { isJSON: !0 })}<\/script>`), l && r) {
337
+ let O = "";
338
+ if (e.islandData && e.islandData.length > 0 && (O = `<script type="application/json" id="_l5e_data_">${(0, g.default)(e.islandData, { isJSON: !0 })}<\/script>`), l && r) {
339
+ let e, t;
340
+ if (f?.compact) {
341
+ let n = f.sharedScripts();
342
+ if (n.length > 1) throw Error("[l5e chunking] Compact build has more than one canonical shared root.");
343
+ if (n.length === 1) {
344
+ let t = await k(n, a, f, {
345
+ compact: !0,
346
+ name: "shared"
347
+ });
348
+ if (!t.filename) throw Error("[l5e chunking] Compact shared bundle failed.");
349
+ e = s(d, t.filename);
350
+ }
351
+ let i = r["src/client.global.ts"];
352
+ if (i?.file) {
353
+ let n = await k([`/${i.file}`], a, f, {
354
+ compact: !0,
355
+ name: "global",
356
+ sharedUrl: e,
357
+ exportScripts: f.globalOwnedScripts()
358
+ });
359
+ if (!n.filename) throw Error("[l5e chunking] Compact global bundle failed.");
360
+ t = s(d, n.filename), T.push(t);
361
+ }
362
+ }
293
363
  m = m.filter((e) => e.replace(/^\//, "") !== "src/client.global.ts"), h = h.filter((e) => !e.includes(".global."));
294
- let e = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set();
295
- function o(n) {
296
- let a = r[n];
297
- if (!a) return { file: null };
298
- if (!i.has(n)) {
299
- i.add(n);
300
- for (let t of a.css || []) e.add(t);
301
- for (let e of a.imports || []) {
302
- let n = o(e);
303
- n.file && t.add(n.file);
364
+ let i = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set();
365
+ function l(e) {
366
+ let t = r[e];
367
+ if (!t) return { file: null };
368
+ if (!c.has(e)) {
369
+ c.add(e);
370
+ for (let e of t.css || []) i.add(e);
371
+ for (let e of t.imports || []) {
372
+ let t = l(e);
373
+ t.file && o.add(t.file);
304
374
  }
305
375
  }
306
- return { file: a.file };
376
+ return { file: t.file };
307
377
  }
308
- let c = [];
378
+ let u = [];
309
379
  for (let e of m) {
310
- let { file: t } = o(e.replace(/^\//, ""));
311
- t && c.push(`/${t}`);
380
+ let { file: t } = l(e.replace(/^\//, ""));
381
+ t && u.push(`/${t}`);
312
382
  }
313
- let l = [];
314
- for (let t of h) {
315
- let { file: n } = o(t.replace(/^\//, ""));
316
- n && (l.push(`/${n}`), e.add(n));
383
+ let p = [];
384
+ for (let e of h) {
385
+ let { file: t } = l(e.replace(/^\//, ""));
386
+ t && (p.push(`/${t}`), i.add(t));
317
387
  }
318
- if (c.length > 0) {
319
- let e = await O(c, a, f);
320
- m = e.filename ? [s(d, e.filename)] : c.map((e) => s(d, e));
388
+ if (u.length > 0 || f?.compact && _.length > 0) {
389
+ let n = f?.compact ? _.flatMap((e) => {
390
+ let t = r[e.src];
391
+ return t?.file ? [{
392
+ key: e.key,
393
+ script: `/${t.file}`
394
+ }] : [];
395
+ }) : [], i = f?.compact ? Object.entries(r).find(([e]) => e.includes("l5e-compact-renderer"))?.[1]?.file : void 0;
396
+ if (f?.compact && n.length > 0 && !i) throw Error("[l5e chunking] Compact renderer entry is missing from the manifest.");
397
+ let o = await k(u, a, f, {
398
+ compact: f?.compact,
399
+ islands: n,
400
+ name: "bundle",
401
+ sharedUrl: e,
402
+ renderer: i ? `/${i}` : void 0,
403
+ globalUrl: t
404
+ });
405
+ m = o.filename ? [s(d, o.filename)] : u.map((e) => s(d, e));
321
406
  }
322
- if (e.size > 0) {
323
- let t = await A([...e].map((e) => `/${e}`), a);
324
- t.filename && (h = [s(d, t.filename)]);
407
+ if (i.size > 0) {
408
+ let e = await j([...i].map((e) => `/${e}`), a);
409
+ e.filename && (h = [s(d, e.filename)]);
325
410
  }
326
- e.clear();
327
- let u = r["src/client.global.ts"];
328
- o("src/client.global.ts");
329
- for (let t of e) w(s(d, t), !0);
330
- u && (u.css && u.css.length > 0 && u.css.forEach((e) => {
411
+ i.clear();
412
+ let v = r["src/client.global.ts"];
413
+ l("src/client.global.ts");
414
+ for (let e of i) w(s(d, e), !0);
415
+ v && (v.css && v.css.length > 0 && v.css.forEach((e) => {
331
416
  w(s(d, e), !0);
332
- }), u.file && T.push(s(d, u.file)));
333
- for (let e of t) S += `<link rel="modulepreload" crossorigin href="${n(s(d, e))}">`;
334
- if (_.length > 0) {
417
+ }), v.file && (f?.compact || T.push(s(d, v.file))));
418
+ for (let e of f?.compact ? [] : o) S += `<link rel="modulepreload" crossorigin href="${n(s(d, e))}">`;
419
+ if (_.length > 0 && !f?.compact) {
335
420
  let e = {};
336
421
  for (let t of _) {
337
422
  let n = r[t.src];
@@ -342,22 +427,22 @@ async function U({ rendered: e, template: t, manifest: r, root: i, distClientDir
342
427
  h.length > 0 && h.forEach((e) => w(e, !0));
343
428
  }
344
429
  l || [...new Set(h)].forEach((e) => w(e));
345
- let j = [...T, ...m];
430
+ let A = [...T, ...m];
346
431
  if (!l) {
347
432
  let e = u.join(i, "src", "client.global.ts");
348
- if (c(e) && (j = ["/src/client.global.ts", ...j]), j = [...new Set(j)], _.length > 0) {
433
+ if (c(e) && (A = ["/src/client.global.ts", ...A]), A = [...new Set(A)], _.length > 0) {
349
434
  let e = {};
350
435
  for (let t of _) e[t.key] = `/${t.src}`;
351
436
  E = `<script>window.__L5E_ISLANDS__=${(0, g.default)(e)}<\/script>`;
352
437
  }
353
438
  }
354
- let M = k + E + j.map((e) => `<script type="module" src="${e}"><\/script>`).join(""), P = e.lang ? N(t, e.lang) : t, F = e.rawHtml ? e.html || "" : P.replace("<!--app-head-->", () => (e.head ?? "") + S).replace("<!--app-html-->", () => e.html ?? "").replace("<!--app-scripts-->", () => M), I = new Headers({ "Content-Type": "text/html" }), L = [], R = [];
355
- return y !== void 0 && (L.push(`max-age=${y}`), R.push(`max-age=${y}`)), b !== void 0 && R.push(`s-maxage=${b}`), x !== void 0 && R.push(`stale-while-revalidate=${x}`), (L.length > 0 || R.length > 0) && l && (L.push("public"), L.push("must-revalidate"), R.push("public"), I.set("Cache-Control", L.join(", ")), I.set("CDN-Cache-Control", R.join(", "))), process.env.NODE_ENV === "production" && (v = J(v)), I.set("Cache-Tag", ["global", ...v].join(",")), new globalThis.Response(F, {
439
+ let M = O + E + A.map((e) => `<script type="module" src="${e}"><\/script>`).join(""), N = e.lang ? P(t, e.lang) : t, F = e.rawHtml ? e.html || "" : N.replace("<!--app-head-->", () => (e.head ?? "") + S).replace("<!--app-html-->", () => e.html ?? "").replace("<!--app-scripts-->", () => M), I = new Headers({ "Content-Type": "text/html" }), L = [], R = [];
440
+ return y !== void 0 && (L.push(`max-age=${y}`), R.push(`max-age=${y}`)), b !== void 0 && R.push(`s-maxage=${b}`), x !== void 0 && R.push(`stale-while-revalidate=${x}`), (L.length > 0 || R.length > 0) && l && (L.push("public"), L.push("must-revalidate"), R.push("public"), I.set("Cache-Control", L.join(", ")), I.set("CDN-Cache-Control", R.join(", "))), process.env.NODE_ENV === "production" && (v = Y(v)), I.set("Cache-Tag", ["global", ...v].join(",")), new globalThis.Response(F, {
356
441
  status: e.statusCode || 200,
357
442
  headers: I
358
443
  });
359
444
  }
360
- async function W(e = {}) {
445
+ async function G(e = {}) {
361
446
  let t = e.root || process.cwd(), n = e.base || "/", i = process.env.NODE_ENV === "production", o = e.externalizeIslandProps ?? !0, p = i ? await l.readFile(u.join(t, "./index.html"), "utf-8") : "", m = (await import("express")).default, h = e.app || m();
362
447
  if (e.publicDir) {
363
448
  let n = u.isAbsolute(e.publicDir) ? e.publicDir : u.join(t, e.publicDir);
@@ -365,15 +450,20 @@ async function W(e = {}) {
365
450
  }
366
451
  let g, _ = u.join(t, "./dist/client"), v = i ? JSON.parse(await l.readFile(u.join(_, ".vite/manifest.json"), "utf-8")) : void 0, y;
367
452
  if (v) try {
368
- y = M(v, _, n);
453
+ let e, t = u.join(_, ".vite/l5e-chunks.json");
454
+ c(t) && (e = JSON.parse(await l.readFile(t, "utf-8"))), y = N(v, _, n, e);
369
455
  } catch (e) {
370
456
  console.warn("[bundler] Invalid build manifest; serving original script entries.", e);
371
457
  }
372
458
  if (i) {
373
459
  let e = (await import("compression")).default, t = (await import("sirv")).default;
374
- h.use(e()), h.use(n, t(_, { extensions: [] })), h.get(s(n, "bundle-:hash.:ext"), async (e, t) => {
460
+ h.use(e()), h.use(n, t(_, { extensions: [] })), h.get([
461
+ s(n, "global-:hash.:ext"),
462
+ s(n, "bundle-:hash.:ext"),
463
+ s(n, "shared-:hash.:ext")
464
+ ], async (e, t) => {
375
465
  try {
376
- let { hash: n, ext: r } = e.params, i = j(`bundle-${n}.${r}`);
466
+ let { hash: n, ext: r } = e.params, i = M(`${u.basename(e.path).split("-", 1)[0]}-${n}.${r}`);
377
467
  if (!i) return t.status(404).send("Bundled file not found");
378
468
  t.set({
379
469
  "Content-Type": i.mimeType,
@@ -435,14 +525,14 @@ async function W(e = {}) {
435
525
  if (!m || !m.handler) return r.status(404).send("Action not found");
436
526
  let h = (m.method || "GET").toUpperCase();
437
527
  if (e.method.toUpperCase() !== h) return r.status(405).set("Allow", h).send("Method Not Allowed");
438
- let _ = u.join(t, "./dist/server/entry-server.js"), v = i ? await import(d(_).href) : await g.ssrLoadModule("@withl5e/l5e/entry-server"), { runInRenderContext: y } = await (i ? import(d(_).href) : g.ssrLoadModule("@withl5e/l5e/jsx-runtime")), { renderJsxToHtmlString: x } = await (i ? import(d(_).href) : g.ssrLoadModule("@withl5e/l5e")), S = {}, T = I(e), E = a({
528
+ let _ = u.join(t, "./dist/server/entry-server.js"), v = i ? await import(d(_).href) : await g.ssrLoadModule("@withl5e/l5e/entry-server"), { runInRenderContext: y } = await (i ? import(d(_).href) : g.ssrLoadModule("@withl5e/l5e/jsx-runtime")), { renderJsxToHtmlString: x } = await (i ? import(d(_).href) : g.ssrLoadModule("@withl5e/l5e")), S = {}, T = L(e), E = a({
439
529
  request: T,
440
530
  locals: S,
441
531
  clientAddress: f.getClientIp(e) ?? void 0
442
532
  }), D = await v.loadMiddleware?.();
443
- await z(e, r, await (typeof D == "function" ? D : (e, t) => t())(E, async (t) => {
533
+ await B(e, r, await (typeof D == "function" ? D : (e, t) => t())(E, async (t) => {
444
534
  let r = {
445
- ...L(e, R(t, E.request, E.url), n, S),
535
+ ...R(e, z(t, E.request, E.url), n, S),
446
536
  path: e.originalUrl,
447
537
  body: e.body
448
538
  }, i = await y(async () => {
@@ -466,14 +556,14 @@ async function W(e = {}) {
466
556
  let e = await g.ssrLoadModule("@withl5e/l5e/entry-server");
467
557
  h = e.render, b = e.loadMiddleware;
468
558
  }
469
- let S = await b?.(), C = typeof S == "function" ? S : (e, t) => t(), w = {}, T = I(e), E = a({
559
+ let S = await b?.(), C = typeof S == "function" ? S : (e, t) => t(), w = {}, T = L(e), E = a({
470
560
  request: T,
471
- requestInfo: L(e, T, n, w),
561
+ requestInfo: R(e, T, n, w),
472
562
  locals: w,
473
563
  clientAddress: f.getClientIp(e)
474
564
  }), D = async (r) => {
475
- let a = L(e, r, n, w), s = F(a.url, n);
476
- return U({
565
+ let a = R(e, r, n, w), s = I(a.url, n);
566
+ return W({
477
567
  rendered: await h(s, a, { externalizeIslandProps: o }),
478
568
  template: m,
479
569
  manifest: x,
@@ -484,10 +574,10 @@ async function W(e = {}) {
484
574
  scriptPolicy: y
485
575
  });
486
576
  }, O = async (t) => {
487
- let i = R(t, E.request, E.url);
488
- return E.request = i, E.url = new URL(i.url), E.cookies = r(i.headers.get("cookie") ?? void 0), E.requestInfo = L(e, i, n, w), D(i);
577
+ let i = z(t, E.request, E.url);
578
+ return E.request = i, E.url = new URL(i.url), E.cookies = r(i.headers.get("cookie") ?? void 0), E.requestInfo = R(e, i, n, w), D(i);
489
579
  };
490
- E.rewrite = (e) => O(e), await z(e, s, await C(E, O));
580
+ E.rewrite = (e) => O(e), await B(e, s, await C(E, O));
491
581
  } catch (e) {
492
582
  g?.ssrFixStacktrace?.(e), console.error(e.stack), s.status(500).end(i ? "Internal Server Error" : e.stack);
493
583
  }
@@ -496,10 +586,10 @@ async function W(e = {}) {
496
586
  vite: g
497
587
  };
498
588
  }
499
- async function G(e = {}) {
589
+ async function K(e = {}) {
500
590
  let t = e.port || 5173, n = (await import("express")).default, r = n();
501
591
  e.setupApp && (console.log("setupApp"), await e.setupApp(r));
502
- let { app: i } = await W({
592
+ let { app: i } = await G({
503
593
  ...e,
504
594
  app: r
505
595
  });
@@ -507,8 +597,8 @@ async function G(e = {}) {
507
597
  console.log(`Server started at http://localhost:${t}`);
508
598
  });
509
599
  }
510
- var K = 1e3;
511
- function q(e) {
600
+ var q = 1e3;
601
+ function J(e) {
512
602
  if (e === "global") return "global";
513
603
  let t = 0;
514
604
  for (let n = 0; n < e.length; n++) {
@@ -517,10 +607,10 @@ function q(e) {
517
607
  }
518
608
  return Math.abs(t).toString(36).substring(0, 8);
519
609
  }
520
- function J(e) {
521
- return (Array.isArray(e) ? e : [...e]).slice(0, K).map(q);
610
+ function Y(e) {
611
+ return (Array.isArray(e) ? e : [...e]).slice(0, q).map(J);
522
612
  }
523
613
  //#endregion
524
- export { G as a, J as i, W as n, q as r, N as t };
614
+ export { K as a, Y as i, G as n, J as r, P as t };
525
615
 
526
- //# sourceMappingURL=server-CvsOU9cg.js.map
616
+ //# sourceMappingURL=server-BOdEiJoN.js.map