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