@withl5e/l5e 0.3.3-alpha.1 → 0.3.3-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.js CHANGED
@@ -1,35 +1,35 @@
1
- import { existsSync as nt } from "fs";
1
+ import { existsSync as st } from "fs";
2
2
  import D from "node:fs/promises";
3
- import d from "node:path";
3
+ import f from "node:path";
4
4
  import { pathToFileURL as N } from "node:url";
5
- import G from "request-ip";
6
- import { a as st, s as K } from "./render-CRag-5V7.js";
7
- import { c as Z, p as rt, a as ct } from "./index-CybB8Tdk.js";
8
- import { createHash as lt } from "node:crypto";
9
- import { createRequire as ut } from "node:module";
10
- import { r as dt } from "./global-style-DFvaBcuR.js";
11
- let V = null;
12
- function ft() {
13
- return V || (V = (async () => {
14
- const t = ut(import.meta.url), e = t.resolve("vite"), n = t.resolve("rollup", { paths: [d.dirname(e)] });
5
+ import Y from "request-ip";
6
+ import { a as rt, s as V } from "./render-CRag-5V7.js";
7
+ import { c as Q, p as ot, a as lt } from "./index-CybB8Tdk.js";
8
+ import { createHash as ut } from "node:crypto";
9
+ import { createRequire as dt } from "node:module";
10
+ import { r as ft } from "./global-style-DFvaBcuR.js";
11
+ let q = null;
12
+ function pt() {
13
+ return q || (q = (async () => {
14
+ const t = dt(import.meta.url), e = t.resolve("vite"), n = t.resolve("rollup", { paths: [f.dirname(e)] });
15
15
  return await import(N(n).href);
16
- })()), V;
16
+ })()), q;
17
17
  }
18
- const J = { hash: "", filename: "", content: "" }, X = /* @__PURE__ */ new Map(), q = /* @__PURE__ */ new Map();
19
- function ot(t, e) {
20
- const n = q.get(t);
18
+ const K = { hash: "", filename: "", content: "" }, Z = /* @__PURE__ */ new Map(), G = /* @__PURE__ */ new Map();
19
+ function at(t, e) {
20
+ const n = G.get(t);
21
21
  if (n)
22
22
  return n;
23
23
  const s = e().catch((r) => {
24
- throw q.delete(t), r;
24
+ throw G.delete(t), r;
25
25
  });
26
- return q.set(t, s), s;
26
+ return G.set(t, s), s;
27
27
  }
28
- function Y(t) {
29
- return lt("sha256").update(t).digest("hex").substring(0, 16);
28
+ function X(t) {
29
+ return ut("sha256").update(t).digest("hex").substring(0, 16);
30
30
  }
31
31
  const O = "\0l5e:bundle-entry";
32
- function pt(t) {
32
+ function ht(t) {
33
33
  return {
34
34
  name: "l5e-virtual-entry",
35
35
  resolveId(e) {
@@ -40,68 +40,68 @@ function pt(t) {
40
40
  }
41
41
  };
42
42
  }
43
- function ht(t) {
44
- const e = (n) => "/" + d.relative(t, n).replace(/\\/g, "/");
43
+ function mt(t) {
44
+ const e = (n) => "/" + f.relative(t, n).replace(/\\/g, "/");
45
45
  return {
46
46
  name: "vendor-path-rewriter",
47
47
  resolveId(n, s) {
48
- return !n.includes("vendor-") && !n.includes("chunk-") && !n.includes(".global") ? null : d.isAbsolute(n) ? { id: e(n), external: !0 } : s && n.startsWith(".") ? { id: e(d.resolve(d.dirname(s), n)), external: !0 } : null;
48
+ return !n.includes("vendor-") && !n.includes("chunk-") && !n.includes(".global") ? null : f.isAbsolute(n) ? { id: e(n), external: !0 } : s && n.startsWith(".") ? { id: e(f.resolve(f.dirname(s), n)), external: !0 } : null;
49
49
  }
50
50
  };
51
51
  }
52
- async function mt(t, e) {
53
- const n = t.map((a) => {
54
- const _ = a.startsWith("/") ? d.join(e, a.substring(1)) : d.join(e, a);
55
- return `import ${JSON.stringify(_)};`;
52
+ async function wt(t, e) {
53
+ const n = t.map((c) => {
54
+ const T = c.startsWith("/") ? f.join(e, c.substring(1)) : f.join(e, c);
55
+ return `import ${JSON.stringify(T)};`;
56
56
  }).join(`
57
57
  `), s = {
58
58
  input: O,
59
- plugins: [pt(n), ht(e)],
60
- external: (a) => !a.startsWith(".") && !d.isAbsolute(a) && a !== O
59
+ plugins: [ht(n), mt(e)],
60
+ external: (c) => !c.startsWith(".") && !f.isAbsolute(c) && c !== O
61
61
  }, r = {
62
62
  format: "es",
63
63
  inlineDynamicImports: !1,
64
64
  entryFileNames: "bundle-[hash].js",
65
65
  chunkFileNames: "bundle-[hash].js"
66
- }, { rollup: l } = await ft(), w = await l(s);
67
- let f;
66
+ }, { rollup: l } = await pt(), w = await l(s);
67
+ let p;
68
68
  try {
69
- ({ output: f } = await w.generate(r));
69
+ ({ output: p } = await w.generate(r));
70
70
  } finally {
71
71
  await w.close();
72
72
  }
73
- for (const a of f)
74
- a.type === "chunk" && X.set(a.fileName, {
75
- content: a.code || "",
76
- hash: Y(a.code || ""),
77
- filename: a.fileName,
73
+ for (const c of p)
74
+ c.type === "chunk" && Z.set(c.fileName, {
75
+ content: c.code || "",
76
+ hash: X(c.code || ""),
77
+ filename: c.fileName,
78
78
  mimeType: "application/javascript"
79
79
  });
80
- const o = f[0];
80
+ const o = p[0];
81
81
  if (o?.type !== "chunk")
82
82
  throw new Error("[bundler] rollup produced no entry chunk");
83
83
  return {
84
- hash: Y(o.code || ""),
84
+ hash: X(o.code || ""),
85
85
  filename: o.fileName,
86
86
  content: o.code || ""
87
87
  };
88
88
  }
89
- async function wt(t, e) {
89
+ async function gt(t, e) {
90
90
  if (t.length === 0)
91
- return J;
91
+ return K;
92
92
  const n = [...new Set(t)].sort(), s = `scripts:${n.join(",")}`;
93
93
  try {
94
- return await ot(s, () => mt(n, e));
94
+ return await at(s, () => wt(n, e));
95
95
  } catch (r) {
96
- return console.error("[bundler] Error bundling scripts:", r), J;
96
+ return console.error("[bundler] Error bundling scripts:", r), K;
97
97
  }
98
98
  }
99
- async function gt(t, e) {
99
+ async function yt(t, e) {
100
100
  const n = [];
101
101
  for (const w of t) {
102
- const f = w.startsWith("/") ? d.join(e, w.substring(1)) : d.join(e, w);
102
+ const p = w.startsWith("/") ? f.join(e, w.substring(1)) : f.join(e, w);
103
103
  try {
104
- const o = await D.readFile(f, "utf-8");
104
+ const o = await D.readFile(p, "utf-8");
105
105
  n.push(`/* ${w} */
106
106
  ${o}
107
107
  `);
@@ -111,66 +111,66 @@ ${o}
111
111
  }
112
112
  const s = n.join(`
113
113
 
114
- `), r = Y(s), l = `bundle-${r}.css`;
115
- return X.set(l, {
114
+ `), r = X(s), l = `bundle-${r}.css`;
115
+ return Z.set(l, {
116
116
  content: s,
117
117
  hash: r,
118
118
  filename: l,
119
119
  mimeType: "text/css"
120
120
  }), { hash: r, filename: l, content: s };
121
121
  }
122
- async function yt(t, e) {
122
+ async function bt(t, e) {
123
123
  if (t.length === 0)
124
- return J;
124
+ return K;
125
125
  const n = [...new Set(t)].sort(), s = `css:${n.join(",")}`;
126
126
  try {
127
- return await ot(s, () => gt(n, e));
127
+ return await at(s, () => yt(n, e));
128
128
  } catch (r) {
129
- return console.error("[bundler] Error bundling CSS:", r), J;
129
+ return console.error("[bundler] Error bundling CSS:", r), K;
130
130
  }
131
131
  }
132
- function bt(t) {
133
- return X.get(t);
132
+ function vt(t) {
133
+ return Z.get(t);
134
134
  }
135
- function vt(t, e) {
136
- const n = st(e);
135
+ function St(t, e) {
136
+ const n = rt(e);
137
137
  return t.replace(/<html\b([^>]*)>/i, (s, r) => /\blang\s*=/i.test(r) ? s.replace(/lang\s*=\s*"[^"]*"/i, () => `lang="${n}"`) : `<html lang="${n}"${r}>`);
138
138
  }
139
- function St(t) {
139
+ function xt(t) {
140
140
  return new URL(`${t.protocol}://${t.get("host")}${t.originalUrl}`);
141
141
  }
142
142
  function it(t, e) {
143
143
  return `${t.pathname}${t.search}`.replace(e, "") || "/";
144
144
  }
145
- function Q(t) {
145
+ function tt(t) {
146
146
  const e = {
147
147
  method: t.method,
148
- headers: ct(t)
148
+ headers: lt(t)
149
149
  };
150
- return t.method !== "GET" && t.method !== "HEAD" && (e.body = t, e.duplex = "half"), new globalThis.Request(St(t).href, e);
150
+ return t.method !== "GET" && t.method !== "HEAD" && (e.body = t, e.duplex = "half"), new globalThis.Request(xt(t).href, e);
151
151
  }
152
- function z(t, e, n, s) {
153
- const r = new URL(e.url), l = it(r, n), w = l.startsWith("/") ? l : `/${l}`, f = {};
154
- return e.headers.forEach((o, a) => {
155
- f[a] = o;
152
+ function J(t, e, n, s) {
153
+ const r = new URL(e.url), l = it(r, n), w = l.startsWith("/") ? l : `/${l}`, p = {};
154
+ return e.headers.forEach((o, c) => {
155
+ p[c] = o;
156
156
  }), {
157
157
  url: r,
158
158
  path: w,
159
159
  pathname: r.pathname,
160
160
  method: e.method,
161
- headers: f,
162
- cookies: rt(e.headers.get("cookie") ?? void 0),
161
+ headers: p,
162
+ cookies: ot(e.headers.get("cookie") ?? void 0),
163
163
  query: Object.fromEntries(r.searchParams.entries()),
164
- ip: G.getClientIp(t) ?? void 0,
164
+ ip: Y.getClientIp(t) ?? void 0,
165
165
  locals: s
166
166
  };
167
167
  }
168
- function tt(t, e, n) {
168
+ function et(t, e, n) {
169
169
  return t ? t instanceof globalThis.Request ? t : t instanceof URL ? new globalThis.Request(t.href, e.clone()) : new globalThis.Request(new URL(t, n).href, e.clone()) : e;
170
170
  }
171
- async function et(t, e, n) {
171
+ async function nt(t, e, n) {
172
172
  e.status(n.status);
173
- const s = xt(n.headers);
173
+ const s = Ct(n.headers);
174
174
  if (n.headers.forEach((l, w) => {
175
175
  w.toLowerCase() !== "set-cookie" && e.setHeader(w, l);
176
176
  }), s.length > 0 && e.setHeader("Set-Cookie", s), t.method === "HEAD") {
@@ -180,7 +180,7 @@ async function et(t, e, n) {
180
180
  const r = Buffer.from(await n.arrayBuffer());
181
181
  e.send(r);
182
182
  }
183
- function xt(t) {
183
+ function Ct(t) {
184
184
  const e = t.getSetCookie;
185
185
  if (typeof e == "function")
186
186
  return e.call(t);
@@ -209,7 +209,7 @@ function Rt(t) {
209
209
  headers: l
210
210
  });
211
211
  }
212
- async function Ct({
212
+ async function jt({
213
213
  rendered: t,
214
214
  template: e,
215
215
  manifest: n,
@@ -218,9 +218,9 @@ async function Ct({
218
218
  isProduction: l,
219
219
  assetBase: w
220
220
  }) {
221
- const f = Rt(t);
222
- if (f)
223
- return f;
221
+ const p = Rt(t);
222
+ if (p)
223
+ return p;
224
224
  if (t.redirect)
225
225
  return new globalThis.Response(null, {
226
226
  status: t.redirect.statusCode,
@@ -228,119 +228,119 @@ async function Ct({
228
228
  Location: t.redirect.url
229
229
  }
230
230
  });
231
- let o = t.scripts || [], a = t.styles || [];
232
- const _ = t.islands || [];
233
- let P = t.cacheTags || [];
231
+ let o = t.scripts || [], c = t.styles || [];
232
+ const T = t.islands || [];
233
+ let I = t.cacheTags || [];
234
234
  const H = t.maxAge, W = t.sMaxAge, B = t.swr;
235
- let i = "";
236
- const p = /* @__PURE__ */ new Set(), g = (S, C = !1) => {
237
- p.has(S) || (p.add(S), i += `<link rel="stylesheet"${C ? " crossorigin" : ""} href="${st(S)}">`);
235
+ let a = "";
236
+ const h = /* @__PURE__ */ new Set(), g = (v, u = !1) => {
237
+ h.has(v) || (h.add(v), a += `<link rel="stylesheet"${u ? " crossorigin" : ""} href="${rt(v)}">`);
238
238
  };
239
- let v = [], $ = "";
240
- const x = dt({
239
+ let b = [], $ = "";
240
+ const S = ft({
241
241
  root: s,
242
242
  manifest: n,
243
243
  isProduction: l,
244
244
  base: w
245
245
  });
246
- x && g(x, l);
247
- let j = "";
248
- if (t.islandData && t.islandData.length > 0 && (j = `<script type="application/json" id="_l5e_data_">${K(
246
+ S && g(S, l);
247
+ let A = "";
248
+ if (t.islandData && t.islandData.length > 0 && (A = `<script type="application/json" id="_l5e_data_">${V(
249
249
  t.islandData,
250
250
  { isJSON: !0 }
251
251
  )}<\/script>`), l && n) {
252
- let S = function(c) {
253
- const h = n[c];
254
- return h ? (h.css && h.css.forEach((m) => C.add(m)), h.imports && h.imports.forEach((m) => {
255
- const M = n[m];
256
- M?.file && y.add(M.file), M?.css && M.css.forEach((U) => C.add(U)), M?.imports && M.imports.forEach((U) => {
257
- const F = n[U];
258
- F?.file && y.add(F.file), F?.css && F.css.forEach((at) => C.add(at));
252
+ let v = function(i) {
253
+ const m = n[i];
254
+ return m ? (m.css && m.css.forEach((x) => u.add(x)), m.imports && m.imports.forEach((x) => {
255
+ const P = n[x];
256
+ P?.file && d.add(P.file), P?.css && P.css.forEach((U) => u.add(U)), P?.imports && P.imports.forEach((U) => {
257
+ const z = n[U];
258
+ z?.file && d.add(z.file), z?.css && z.css.forEach((ct) => u.add(ct));
259
259
  });
260
- }), { file: h.file }) : { file: null };
260
+ }), { file: m.file }) : { file: null };
261
261
  };
262
- o = o.filter((c) => !c.includes(".global.")), a = a.filter((c) => !c.includes(".global."));
263
- const C = /* @__PURE__ */ new Set(), y = /* @__PURE__ */ new Set(), u = [];
264
- for (const c of o) {
265
- const h = c.replace(/^\//, ""), { file: m } = S(h);
266
- m && u.push(`/${m}`);
262
+ o = o.filter((i) => !i.includes(".global.")), c = c.filter((i) => !i.includes(".global."));
263
+ const u = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Set(), j = [];
264
+ for (const i of o) {
265
+ const m = i.replace(/^\//, ""), { file: x } = v(m);
266
+ x && j.push(`/${x}`);
267
267
  }
268
- const A = [];
269
- for (const c of a) {
270
- const h = c.replace(/^\//, ""), { file: m } = S(h);
271
- m && (A.push(`/${m}`), C.add(m));
268
+ const F = [];
269
+ for (const i of c) {
270
+ const m = i.replace(/^\//, ""), { file: x } = v(m);
271
+ x && (F.push(`/${x}`), u.add(x));
272
272
  }
273
- if (u.length > 0) {
274
- const c = await wt(u, r);
275
- o = c.filename ? [`/${c.filename}`] : u;
273
+ if (j.length > 0) {
274
+ const i = await gt(j, r);
275
+ o = i.filename ? [`/${i.filename}`] : j;
276
276
  }
277
- if (A.length > 0) {
278
- const c = await yt(A, r);
279
- c.filename && (a = [`/${c.filename}`]);
277
+ if (F.length > 0) {
278
+ const i = await bt(F, r);
279
+ i.filename && (c = [`/${i.filename}`]);
280
280
  }
281
- const T = n["src/client.global.ts"];
282
- if (T && (T.css && T.css.length > 0 && T.css.forEach((c) => {
283
- g(`/${c}`, !0);
284
- }), T.file && v.push(`/${T.file}`)), _.length > 0) {
285
- const c = {};
286
- for (const h of _) {
287
- const m = n[h.src];
288
- m?.file && (c[h.key] = `/${m.file}`);
281
+ const L = n["src/client.global.ts"];
282
+ if (L && (L.css && L.css.length > 0 && L.css.forEach((i) => {
283
+ g(`/${i}`, !0);
284
+ }), L.file && b.push(`/${L.file}`)), T.length > 0) {
285
+ const i = {};
286
+ for (const m of T) {
287
+ const x = n[m.src];
288
+ x?.file && (i[m.key] = `/${x.file}`);
289
289
  }
290
- Object.keys(c).length > 0 && ($ = `<script>window.__L5E_ISLANDS__=${K(c)}<\/script>`);
290
+ Object.keys(i).length > 0 && ($ = `<script>window.__L5E_ISLANDS__=${V(i)}<\/script>`);
291
291
  }
292
- a.length > 0 && a.forEach((c) => g(c, !0));
292
+ c.length > 0 && c.forEach((i) => g(i, !0));
293
293
  }
294
- l || [...new Set(a)].forEach((S) => g(S));
295
- let b = [...v, ...o];
294
+ l || [...new Set(c)].forEach((v) => g(v));
295
+ let y = [...b, ...o];
296
296
  if (!l) {
297
- const S = d.join(s, "src", "client.global.ts");
298
- if (nt(S) && (b = ["/src/client.global.ts", ...b]), b = [...new Set(b)], _.length > 0) {
299
- const C = {};
300
- for (const y of _)
301
- C[y.key] = `/${y.src}`;
302
- $ = `<script>window.__L5E_ISLANDS__=${K(C)}<\/script>`;
297
+ const v = f.join(s, "src", "client.global.ts");
298
+ if (st(v) && (y = ["/src/client.global.ts", ...y]), y = [...new Set(y)], T.length > 0) {
299
+ const u = {};
300
+ for (const d of T)
301
+ u[d.key] = `/${d.src}`;
302
+ $ = `<script>window.__L5E_ISLANDS__=${V(u)}<\/script>`;
303
303
  }
304
304
  }
305
- const L = j + $ + b.map((S) => `<script type="module" src="${S}"><\/script>`).join(""), E = t.lang ? vt(e, t.lang) : e, I = t.rawHtml ? t.html || "" : E.replace("<!--app-head-->", () => (t.head ?? "") + i).replace("<!--app-html-->", () => t.html ?? "").replace("<!--app-scripts-->", () => L), R = new Headers({
305
+ const M = A + $ + y.map((v) => `<script type="module" src="${v}"><\/script>`).join(""), E = t.lang ? St(e, t.lang) : e, _ = t.rawHtml ? t.html || "" : E.replace("<!--app-head-->", () => (t.head ?? "") + a).replace("<!--app-html-->", () => t.html ?? "").replace("<!--app-scripts-->", () => M), C = new Headers({
306
306
  "Content-Type": "text/html"
307
- }), k = ["public"];
308
- return H !== void 0 && k.push(`max-age=${H}`), W !== void 0 && k.push(`s-maxage=${W}`), B !== void 0 && k.push(`stale-while-revalidate=${B}`), k.length > 1 && l && R.set("Cache-Control", k.join(", ")), process.env.NODE_ENV === "production" && (P = kt(P)), R.set("Cache-Tag", ["global", ...P].join(",")), new globalThis.Response(I, {
307
+ }), k = [], R = [];
308
+ return H !== void 0 && (k.push(`max-age=${H}`), R.push(`max-age=${H}`)), W !== void 0 && R.push(`s-maxage=${W}`), B !== void 0 && R.push(`stale-while-revalidate=${B}`), (k.length > 0 || R.length > 0) && l && (k.push("public"), k.push("must-revalidate"), R.push("public"), C.set("Cache-Control", k.join(", ")), C.set("CDN-Cache-Control", R.join(", "))), process.env.NODE_ENV === "production" && (I = Tt(I)), C.set("Cache-Tag", ["global", ...I].join(",")), new globalThis.Response(_, {
309
309
  status: t.statusCode || 200,
310
- headers: R
310
+ headers: C
311
311
  });
312
312
  }
313
- async function jt(t = {}) {
314
- const e = t.root || process.cwd(), n = t.base || "/", s = process.env.NODE_ENV === "production", r = t.externalizeIslandProps ?? !0, l = s ? await D.readFile(d.join(e, "./index.html"), "utf-8") : "", w = (await import("express")).default, f = t.app || w();
313
+ async function At(t = {}) {
314
+ const e = t.root || process.cwd(), n = t.base || "/", s = process.env.NODE_ENV === "production", r = t.externalizeIslandProps ?? !0, l = s ? await D.readFile(f.join(e, "./index.html"), "utf-8") : "", w = (await import("express")).default, p = t.app || w();
315
315
  if (t.publicDir) {
316
- const i = d.isAbsolute(t.publicDir) ? t.publicDir : d.join(e, t.publicDir);
317
- nt(i) && f.use(w.static(i));
316
+ const a = f.isAbsolute(t.publicDir) ? t.publicDir : f.join(e, t.publicDir);
317
+ st(a) && p.use(w.static(a));
318
318
  }
319
319
  let o;
320
- const a = d.join(e, "./dist/client");
320
+ const c = f.join(e, "./dist/client");
321
321
  if (s) {
322
- const i = (await import("compression")).default, p = (await import("sirv")).default;
323
- f.use(i()), f.use(n, p(a, { extensions: [] })), f.get(
322
+ const a = (await import("compression")).default, h = (await import("sirv")).default;
323
+ p.use(a()), p.use(n, h(c, { extensions: [] })), p.get(
324
324
  `${n === "/" ? "" : n}/bundle-:hash.:ext`,
325
- async (g, v) => {
325
+ async (g, b) => {
326
326
  try {
327
- const { hash: $, ext: x } = g.params, j = `bundle-${$}.${x}`, b = bt(j);
328
- if (!b)
329
- return v.status(404).send("Bundled file not found");
330
- v.set({
331
- "Content-Type": b.mimeType,
327
+ const { hash: $, ext: S } = g.params, A = `bundle-${$}.${S}`, y = vt(A);
328
+ if (!y)
329
+ return b.status(404).send("Bundled file not found");
330
+ b.set({
331
+ "Content-Type": y.mimeType,
332
332
  "Cache-Control": "public, max-age=31536000, immutable"
333
- }), v.send(b.content);
333
+ }), b.send(y.content);
334
334
  } catch ($) {
335
- console.error("[server] Error serving bundled file:", $), v.status(500).end("Internal server error");
335
+ console.error("[server] Error serving bundled file:", $), b.status(500).end("Internal server error");
336
336
  }
337
337
  }
338
338
  );
339
339
  } else {
340
- const { createServer: i } = await import("vite"), p = d.join(e, "vite.config.js");
341
- o = await i({
340
+ const { createServer: a } = await import("vite"), h = f.join(e, "vite.config.js");
341
+ o = await a({
342
342
  root: e,
343
- configFile: p,
343
+ configFile: h,
344
344
  server: { middlewareMode: !0 },
345
345
  appType: "custom",
346
346
  base: n,
@@ -355,144 +355,144 @@ async function jt(t = {}) {
355
355
  resolve: {
356
356
  conditions: ["development", "default"]
357
357
  }
358
- }), f.use(o.middlewares);
358
+ }), p.use(o.middlewares);
359
359
  }
360
- f.use("/_l5e/action", w.json({ limit: "100kb" }));
361
- const _ = /^[a-zA-Z]\w+_[0-9a-f]{1,4}$/;
362
- let P = null, H = null;
360
+ p.use("/_l5e/action", w.json({ limit: "100kb" }));
361
+ const T = /^[a-zA-Z]\w+_[0-9a-f]{1,4}$/;
362
+ let I = null, H = null;
363
363
  async function W() {
364
364
  if (!s)
365
365
  return (await o.ssrLoadModule("virtual:l5e-actions")).actionRegistry || {};
366
- if (!P) {
367
- const i = d.join(e, "./dist/server/action-registry.json"), p = await D.readFile(i, "utf-8");
368
- P = JSON.parse(p);
366
+ if (!I) {
367
+ const a = f.join(e, "./dist/server/action-registry.json"), h = await D.readFile(a, "utf-8");
368
+ I = JSON.parse(h);
369
369
  }
370
- return P;
370
+ return I;
371
371
  }
372
372
  async function B() {
373
373
  if (!s)
374
374
  return (await o.ssrLoadModule("virtual:l5e-actions")).viewActions || {};
375
375
  if (!H) {
376
- const i = d.join(e, "./dist/server/entry-server.js");
377
- H = (await import(N(i).href)).viewActions || {};
376
+ const a = f.join(e, "./dist/server/entry-server.js");
377
+ H = (await import(N(a).href)).viewActions || {};
378
378
  }
379
379
  return H;
380
380
  }
381
- return f.all("/_l5e/action/:actionKey", async (i, p) => {
381
+ return p.all("/_l5e/action/:actionKey", async (a, h) => {
382
382
  try {
383
- const { actionKey: g } = i.params;
384
- if (!_.test(g))
385
- return p.status(400).send("Invalid action key");
383
+ const { actionKey: g } = a.params;
384
+ if (!T.test(g))
385
+ return h.status(400).send("Invalid action key");
386
386
  const $ = (await W())[g];
387
387
  if (!$)
388
- return p.status(404).send("Action not found");
389
- const { modulePath: x, actionName: j } = $;
390
- let b;
388
+ return h.status(404).send("Action not found");
389
+ const { modulePath: S, actionName: A } = $;
390
+ let y;
391
391
  if (s) {
392
- const h = await B(), m = h[`/src/${x}/actions.tsx`] ? `/src/${x}/actions.tsx` : h[`/src/${x}/actions.ts`] ? `/src/${x}/actions.ts` : null;
392
+ const i = await B(), m = i[`/src/${S}/actions.tsx`] ? `/src/${S}/actions.tsx` : i[`/src/${S}/actions.ts`] ? `/src/${S}/actions.ts` : null;
393
393
  if (!m)
394
- return p.status(404).send("Action module not found");
395
- b = await h[m]();
394
+ return h.status(404).send("Action module not found");
395
+ y = await i[m]();
396
396
  } else
397
397
  try {
398
- b = await o.ssrLoadModule(`/src/${x}/actions.tsx`);
398
+ y = await o.ssrLoadModule(`/src/${S}/actions.tsx`);
399
399
  } catch {
400
- b = await o.ssrLoadModule(`/src/${x}/actions.ts`);
400
+ y = await o.ssrLoadModule(`/src/${S}/actions.ts`);
401
401
  }
402
- if (!Object.prototype.hasOwnProperty.call(b, j))
403
- return p.status(404).send("Action not found");
404
- const L = b[j];
405
- if (!L || !L.handler)
406
- return p.status(404).send("Action not found");
407
- const E = (L.method || "GET").toUpperCase();
408
- if (i.method.toUpperCase() !== E)
409
- return p.status(405).set("Allow", E).send("Method Not Allowed");
410
- const I = d.join(e, "./dist/server/entry-server.js"), R = s ? await import(N(I).href) : await o.ssrLoadModule("@withl5e/l5e/entry-server"), { runInRenderContext: k } = await (s ? import(N(I).href) : o.ssrLoadModule("@withl5e/l5e/jsx-runtime")), { renderJsxToHtmlString: S } = await (s ? import(N(I).href) : o.ssrLoadModule("@withl5e/l5e")), C = {}, y = Q(i), u = Z({
411
- request: y,
412
- locals: C,
413
- clientAddress: G.getClientIp(i) ?? void 0
414
- }), A = await R.loadMiddleware?.(), c = await (typeof A == "function" ? A : (h, m) => m())(u, async (h) => {
415
- const m = tt(h, u.request, u.url), M = {
416
- ...z(i, m, n, C),
417
- path: i.originalUrl,
418
- body: i.body
419
- }, U = await k(
402
+ if (!Object.prototype.hasOwnProperty.call(y, A))
403
+ return h.status(404).send("Action not found");
404
+ const M = y[A];
405
+ if (!M || !M.handler)
406
+ return h.status(404).send("Action not found");
407
+ const E = (M.method || "GET").toUpperCase();
408
+ if (a.method.toUpperCase() !== E)
409
+ return h.status(405).set("Allow", E).send("Method Not Allowed");
410
+ const _ = f.join(e, "./dist/server/entry-server.js"), C = s ? await import(N(_).href) : await o.ssrLoadModule("@withl5e/l5e/entry-server"), { runInRenderContext: k } = await (s ? import(N(_).href) : o.ssrLoadModule("@withl5e/l5e/jsx-runtime")), { renderJsxToHtmlString: R } = await (s ? import(N(_).href) : o.ssrLoadModule("@withl5e/l5e")), v = {}, u = tt(a), d = Q({
411
+ request: u,
412
+ locals: v,
413
+ clientAddress: Y.getClientIp(a) ?? void 0
414
+ }), j = await C.loadMiddleware?.(), L = await (typeof j == "function" ? j : (i, m) => m())(d, async (i) => {
415
+ const m = et(i, d.request, d.url), x = {
416
+ ...J(a, m, n, v),
417
+ path: a.originalUrl,
418
+ body: a.body
419
+ }, P = await k(
420
420
  async () => {
421
- const F = await L.handler(M);
422
- return S(F);
421
+ const U = await M.handler(x);
422
+ return R(U);
423
423
  },
424
- M,
425
- x
424
+ x,
425
+ S
426
426
  );
427
- return new Response(U, { headers: { "Content-Type": "text/html" } });
427
+ return new Response(P, { headers: { "Content-Type": "text/html" } });
428
428
  });
429
- await et(i, p, c);
429
+ await nt(a, h, L);
430
430
  } catch (g) {
431
- o?.ssrFixStacktrace?.(g), console.error("[l5e] Action error:", g.stack || g), p.status(500).send("Internal server error");
431
+ o?.ssrFixStacktrace?.(g), console.error("[l5e] Action error:", g.stack || g), h.status(500).send("Internal server error");
432
432
  }
433
- }), f.use(async (i, p) => {
433
+ }), p.use(async (a, h) => {
434
434
  try {
435
- const g = i.originalUrl.replace(n, "");
436
- let v, $, x, j;
435
+ const g = a.originalUrl.replace(n, "");
436
+ let b, $, S, A;
437
437
  if (s) {
438
- v = l;
439
- const y = d.join(e, "./dist/server/entry-server.js"), u = await import(N(y).href);
440
- $ = u.render, x = u.loadMiddleware;
441
- const A = await D.readFile(
442
- d.join(e, "./dist/client/.vite/manifest.json"),
438
+ b = l;
439
+ const u = f.join(e, "./dist/server/entry-server.js"), d = await import(N(u).href);
440
+ $ = d.render, S = d.loadMiddleware;
441
+ const j = await D.readFile(
442
+ f.join(e, "./dist/client/.vite/manifest.json"),
443
443
  "utf-8"
444
444
  );
445
- j = JSON.parse(A);
445
+ A = JSON.parse(j);
446
446
  } else {
447
- v = await D.readFile(d.join(e, "./index.html"), "utf-8"), v = await o.transformIndexHtml(g, v), v.includes("@vite/client") || (v = v.replace(
447
+ b = await D.readFile(f.join(e, "./index.html"), "utf-8"), b = await o.transformIndexHtml(g, b), b.includes("@vite/client") || (b = b.replace(
448
448
  "</head>",
449
449
  '<script type="module" src="/@vite/client"><\/script></head>'
450
450
  ));
451
- const y = await o.ssrLoadModule(
451
+ const u = await o.ssrLoadModule(
452
452
  "@withl5e/l5e/entry-server"
453
453
  );
454
- $ = y.render, x = y.loadMiddleware;
454
+ $ = u.render, S = u.loadMiddleware;
455
455
  }
456
- const b = await x?.(), L = typeof b == "function" ? b : (y, u) => u(), E = {}, I = Q(i), R = Z({
457
- request: I,
458
- requestInfo: z(i, I, n, E),
456
+ const y = await S?.(), M = typeof y == "function" ? y : (u, d) => d(), E = {}, _ = tt(a), C = Q({
457
+ request: _,
458
+ requestInfo: J(a, _, n, E),
459
459
  locals: E,
460
- clientAddress: G.getClientIp(i)
461
- }), k = async (y) => {
462
- const u = z(i, y, n, E), A = it(u.url, n), T = await $(A, u, {
460
+ clientAddress: Y.getClientIp(a)
461
+ }), k = async (u) => {
462
+ const d = J(a, u, n, E), j = it(d.url, n), F = await $(j, d, {
463
463
  externalizeIslandProps: r
464
464
  });
465
- return Ct({
466
- rendered: T,
467
- template: v,
468
- manifest: j,
465
+ return jt({
466
+ rendered: F,
467
+ template: b,
468
+ manifest: A,
469
469
  root: e,
470
- distClientDir: a,
470
+ distClientDir: c,
471
471
  isProduction: s,
472
472
  assetBase: s ? n : o.config.base
473
473
  });
474
- }, S = async (y) => {
475
- const u = tt(y, R.request, R.url);
476
- return R.request = u, R.url = new URL(u.url), R.cookies = rt(u.headers.get("cookie") ?? void 0), R.requestInfo = z(i, u, n, E), k(u);
474
+ }, R = async (u) => {
475
+ const d = et(u, C.request, C.url);
476
+ return C.request = d, C.url = new URL(d.url), C.cookies = ot(d.headers.get("cookie") ?? void 0), C.requestInfo = J(a, d, n, E), k(d);
477
477
  };
478
- R.rewrite = (y) => S(y);
479
- const C = await L(R, S);
480
- await et(i, p, C);
478
+ C.rewrite = (u) => R(u);
479
+ const v = await M(C, R);
480
+ await nt(a, h, v);
481
481
  } catch (g) {
482
- o?.ssrFixStacktrace?.(g), console.error(g.stack), p.status(500).end(s ? "Internal Server Error" : g.stack);
482
+ o?.ssrFixStacktrace?.(g), console.error(g.stack), h.status(500).end(s ? "Internal Server Error" : g.stack);
483
483
  }
484
- }), { app: f, vite: o };
484
+ }), { app: p, vite: o };
485
485
  }
486
- async function Dt(t = {}) {
486
+ async function Ot(t = {}) {
487
487
  const e = t.port || 5173, n = (await import("express")).default, s = n();
488
488
  t.setupApp && (console.log("setupApp"), await t.setupApp(s));
489
- const { app: r } = await jt({ ...t, app: s });
489
+ const { app: r } = await At({ ...t, app: s });
490
490
  r.listen(e, () => {
491
491
  console.log(`Server started at http://localhost:${e}`);
492
492
  });
493
493
  }
494
- const At = 1e3;
495
- function Et(t) {
494
+ const Et = 1e3;
495
+ function kt(t) {
496
496
  if (t === "global")
497
497
  return "global";
498
498
  let e = 0;
@@ -502,14 +502,14 @@ function Et(t) {
502
502
  }
503
503
  return Math.abs(e).toString(36).substring(0, 8);
504
504
  }
505
- function kt(t) {
506
- return (Array.isArray(t) ? t : [...t]).slice(0, At).map(Et);
505
+ function Tt(t) {
506
+ return (Array.isArray(t) ? t : [...t]).slice(0, Et).map(kt);
507
507
  }
508
508
  export {
509
- vt as applyHtmlLang,
510
- jt as createServer,
511
- Et as hashTag,
512
- kt as optimizeCacheTags,
513
- Dt as startServer
509
+ St as applyHtmlLang,
510
+ At as createServer,
511
+ kt as hashTag,
512
+ Tt as optimizeCacheTags,
513
+ Ot as startServer
514
514
  };
515
515
  //# sourceMappingURL=server.js.map