@withl5e/l5e 1.0.1 → 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.
- package/dist/index.js +2 -2
- package/dist/island/compact-runtime.js +81 -0
- package/dist/island/compact-runtime.js.map +1 -0
- package/dist/island/runtime.js +7 -3
- package/dist/island/runtime.js.map +1 -1
- package/dist/{server-DXNRPyGJ.js → server-BOdEiJoN.js} +213 -115
- package/dist/server-BOdEiJoN.js.map +1 -0
- package/dist/server.js +1 -1
- package/dist/vite-plugin-R3LFxv9a.js +497 -0
- package/dist/vite-plugin-R3LFxv9a.js.map +1 -0
- package/dist/vite-plugin.js +2 -333
- package/package.json +7 -1
- package/src/core/bundler.ts +77 -7
- package/src/core/chunking.ts +256 -0
- package/src/core/script-bundle-policy.ts +57 -2
- package/src/core/server.ts +109 -28
- package/src/core/vite-plugin.ts +93 -8
- package/src/island/compact-runtime.ts +121 -0
- package/src/island/runtime.ts +22 -8
- package/dist/server-DXNRPyGJ.js.map +0 -1
- package/dist/vite-plugin.js.map +0 -1
|
@@ -62,51 +62,79 @@ function E(e) {
|
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
-
|
|
66
|
-
|
|
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(
|
|
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
|
-
},
|
|
100
|
+
}, f = {
|
|
74
101
|
format: "es",
|
|
75
|
-
codeSplitting: { groups: [{ name: (e) =>
|
|
102
|
+
codeSplitting: !i && { groups: [{ name: (e) => o.get(e) ?? null }] },
|
|
76
103
|
minify: !1,
|
|
77
|
-
entryFileNames: "bundle-[hash].js
|
|
78
|
-
|
|
79
|
-
|
|
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:
|
|
109
|
+
({output: h} = await m.generate(f));
|
|
82
110
|
} finally {
|
|
83
|
-
await
|
|
111
|
+
await m.close();
|
|
84
112
|
}
|
|
85
|
-
for (let e of
|
|
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
|
|
92
|
-
if (!
|
|
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(
|
|
95
|
-
filename:
|
|
96
|
-
content:
|
|
122
|
+
hash: C(g.code || ""),
|
|
123
|
+
filename: g.fileName,
|
|
124
|
+
content: g.code || ""
|
|
97
125
|
};
|
|
98
126
|
}
|
|
99
|
-
async function
|
|
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
|
|
130
|
+
let i = [...new Set(e)], a = `scripts:${n.cacheKey}:${JSON.stringify([i, r])}`;
|
|
103
131
|
try {
|
|
104
|
-
return await S(
|
|
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
|
|
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
|
|
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, () =>
|
|
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
|
|
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
|
|
147
|
-
let
|
|
148
|
-
function
|
|
149
|
-
let t = u.resolve(
|
|
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
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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
|
|
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 || !
|
|
161
|
-
|
|
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
|
-
|
|
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
|
-
|
|
201
|
+
compact: r?.mode === "compact",
|
|
202
|
+
directory: i,
|
|
173
203
|
fileForScript(e) {
|
|
174
|
-
let t =
|
|
175
|
-
if (!
|
|
176
|
-
return
|
|
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
|
|
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
|
|
187
|
-
|
|
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),
|
|
192
|
-
}), new Set(e.slice(n).filter((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 (!
|
|
196
|
-
return s(n, u.relative(
|
|
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
|
|
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
|
|
252
|
+
function F(e) {
|
|
207
253
|
return new URL(`${e.protocol}://${e.get("host")}${e.originalUrl}`);
|
|
208
254
|
}
|
|
209
|
-
function
|
|
255
|
+
function I(e, t) {
|
|
210
256
|
return `${e.pathname}${e.search}`.replace(t, "") || "/";
|
|
211
257
|
}
|
|
212
|
-
function
|
|
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(
|
|
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
|
|
220
|
-
let a = new URL(t.url), o =
|
|
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
|
|
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
|
|
284
|
+
async function B(e, t, n) {
|
|
239
285
|
t.status(n.status);
|
|
240
|
-
let r =
|
|
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
|
|
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 ?
|
|
302
|
+
return r ? H(r) : [];
|
|
257
303
|
}
|
|
258
|
-
function
|
|
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
|
|
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
|
|
276
|
-
let p =
|
|
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,42 +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
|
|
292
|
-
if (e.islandData && e.islandData.length > 0 && (
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
let
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
i?.file && t.add(i.file), i?.css && i.css.forEach((t) => e.add(t));
|
|
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"
|
|
302
347
|
});
|
|
303
|
-
|
|
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
|
+
}
|
|
363
|
+
m = m.filter((e) => e.replace(/^\//, "") !== "src/client.global.ts"), h = h.filter((e) => !e.includes(".global."));
|
|
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);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return { file: t.file };
|
|
304
377
|
}
|
|
305
|
-
let
|
|
378
|
+
let u = [];
|
|
306
379
|
for (let e of m) {
|
|
307
|
-
let { file: t } =
|
|
308
|
-
t &&
|
|
380
|
+
let { file: t } = l(e.replace(/^\//, ""));
|
|
381
|
+
t && u.push(`/${t}`);
|
|
309
382
|
}
|
|
310
|
-
let
|
|
311
|
-
for (let
|
|
312
|
-
let { file:
|
|
313
|
-
|
|
383
|
+
let p = [];
|
|
384
|
+
for (let e of h) {
|
|
385
|
+
let { file: t } = l(e.replace(/^\//, ""));
|
|
386
|
+
t && (p.push(`/${t}`), i.add(t));
|
|
314
387
|
}
|
|
315
|
-
if (
|
|
316
|
-
let
|
|
317
|
-
|
|
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));
|
|
318
406
|
}
|
|
319
|
-
if (
|
|
320
|
-
let e = await
|
|
407
|
+
if (i.size > 0) {
|
|
408
|
+
let e = await j([...i].map((e) => `/${e}`), a);
|
|
321
409
|
e.filename && (h = [s(d, e.filename)]);
|
|
322
410
|
}
|
|
323
|
-
|
|
324
|
-
|
|
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) => {
|
|
325
416
|
w(s(d, e), !0);
|
|
326
|
-
}),
|
|
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) {
|
|
327
420
|
let e = {};
|
|
328
421
|
for (let t of _) {
|
|
329
422
|
let n = r[t.src];
|
|
@@ -334,22 +427,22 @@ async function U({ rendered: e, template: t, manifest: r, root: i, distClientDir
|
|
|
334
427
|
h.length > 0 && h.forEach((e) => w(e, !0));
|
|
335
428
|
}
|
|
336
429
|
l || [...new Set(h)].forEach((e) => w(e));
|
|
337
|
-
let
|
|
430
|
+
let A = [...T, ...m];
|
|
338
431
|
if (!l) {
|
|
339
432
|
let e = u.join(i, "src", "client.global.ts");
|
|
340
|
-
if (c(e) && (
|
|
433
|
+
if (c(e) && (A = ["/src/client.global.ts", ...A]), A = [...new Set(A)], _.length > 0) {
|
|
341
434
|
let e = {};
|
|
342
435
|
for (let t of _) e[t.key] = `/${t.src}`;
|
|
343
436
|
E = `<script>window.__L5E_ISLANDS__=${(0, g.default)(e)}<\/script>`;
|
|
344
437
|
}
|
|
345
438
|
}
|
|
346
|
-
let M =
|
|
347
|
-
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 =
|
|
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, {
|
|
348
441
|
status: e.statusCode || 200,
|
|
349
442
|
headers: I
|
|
350
443
|
});
|
|
351
444
|
}
|
|
352
|
-
async function
|
|
445
|
+
async function G(e = {}) {
|
|
353
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();
|
|
354
447
|
if (e.publicDir) {
|
|
355
448
|
let n = u.isAbsolute(e.publicDir) ? e.publicDir : u.join(t, e.publicDir);
|
|
@@ -357,15 +450,20 @@ async function W(e = {}) {
|
|
|
357
450
|
}
|
|
358
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;
|
|
359
452
|
if (v) try {
|
|
360
|
-
|
|
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);
|
|
361
455
|
} catch (e) {
|
|
362
456
|
console.warn("[bundler] Invalid build manifest; serving original script entries.", e);
|
|
363
457
|
}
|
|
364
458
|
if (i) {
|
|
365
459
|
let e = (await import("compression")).default, t = (await import("sirv")).default;
|
|
366
|
-
h.use(e()), h.use(n, t(_, { extensions: [] })), h.get(
|
|
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) => {
|
|
367
465
|
try {
|
|
368
|
-
let { hash: n, ext: r } = e.params, i =
|
|
466
|
+
let { hash: n, ext: r } = e.params, i = M(`${u.basename(e.path).split("-", 1)[0]}-${n}.${r}`);
|
|
369
467
|
if (!i) return t.status(404).send("Bundled file not found");
|
|
370
468
|
t.set({
|
|
371
469
|
"Content-Type": i.mimeType,
|
|
@@ -427,14 +525,14 @@ async function W(e = {}) {
|
|
|
427
525
|
if (!m || !m.handler) return r.status(404).send("Action not found");
|
|
428
526
|
let h = (m.method || "GET").toUpperCase();
|
|
429
527
|
if (e.method.toUpperCase() !== h) return r.status(405).set("Allow", h).send("Method Not Allowed");
|
|
430
|
-
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 =
|
|
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({
|
|
431
529
|
request: T,
|
|
432
530
|
locals: S,
|
|
433
531
|
clientAddress: f.getClientIp(e) ?? void 0
|
|
434
532
|
}), D = await v.loadMiddleware?.();
|
|
435
|
-
await
|
|
533
|
+
await B(e, r, await (typeof D == "function" ? D : (e, t) => t())(E, async (t) => {
|
|
436
534
|
let r = {
|
|
437
|
-
...
|
|
535
|
+
...R(e, z(t, E.request, E.url), n, S),
|
|
438
536
|
path: e.originalUrl,
|
|
439
537
|
body: e.body
|
|
440
538
|
}, i = await y(async () => {
|
|
@@ -458,14 +556,14 @@ async function W(e = {}) {
|
|
|
458
556
|
let e = await g.ssrLoadModule("@withl5e/l5e/entry-server");
|
|
459
557
|
h = e.render, b = e.loadMiddleware;
|
|
460
558
|
}
|
|
461
|
-
let S = await b?.(), C = typeof S == "function" ? S : (e, t) => t(), w = {}, T =
|
|
559
|
+
let S = await b?.(), C = typeof S == "function" ? S : (e, t) => t(), w = {}, T = L(e), E = a({
|
|
462
560
|
request: T,
|
|
463
|
-
requestInfo:
|
|
561
|
+
requestInfo: R(e, T, n, w),
|
|
464
562
|
locals: w,
|
|
465
563
|
clientAddress: f.getClientIp(e)
|
|
466
564
|
}), D = async (r) => {
|
|
467
|
-
let a =
|
|
468
|
-
return
|
|
565
|
+
let a = R(e, r, n, w), s = I(a.url, n);
|
|
566
|
+
return W({
|
|
469
567
|
rendered: await h(s, a, { externalizeIslandProps: o }),
|
|
470
568
|
template: m,
|
|
471
569
|
manifest: x,
|
|
@@ -476,10 +574,10 @@ async function W(e = {}) {
|
|
|
476
574
|
scriptPolicy: y
|
|
477
575
|
});
|
|
478
576
|
}, O = async (t) => {
|
|
479
|
-
let i =
|
|
480
|
-
return E.request = i, E.url = new URL(i.url), E.cookies = r(i.headers.get("cookie") ?? void 0), E.requestInfo =
|
|
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);
|
|
481
579
|
};
|
|
482
|
-
E.rewrite = (e) => O(e), await
|
|
580
|
+
E.rewrite = (e) => O(e), await B(e, s, await C(E, O));
|
|
483
581
|
} catch (e) {
|
|
484
582
|
g?.ssrFixStacktrace?.(e), console.error(e.stack), s.status(500).end(i ? "Internal Server Error" : e.stack);
|
|
485
583
|
}
|
|
@@ -488,10 +586,10 @@ async function W(e = {}) {
|
|
|
488
586
|
vite: g
|
|
489
587
|
};
|
|
490
588
|
}
|
|
491
|
-
async function
|
|
589
|
+
async function K(e = {}) {
|
|
492
590
|
let t = e.port || 5173, n = (await import("express")).default, r = n();
|
|
493
591
|
e.setupApp && (console.log("setupApp"), await e.setupApp(r));
|
|
494
|
-
let { app: i } = await
|
|
592
|
+
let { app: i } = await G({
|
|
495
593
|
...e,
|
|
496
594
|
app: r
|
|
497
595
|
});
|
|
@@ -499,8 +597,8 @@ async function G(e = {}) {
|
|
|
499
597
|
console.log(`Server started at http://localhost:${t}`);
|
|
500
598
|
});
|
|
501
599
|
}
|
|
502
|
-
var
|
|
503
|
-
function
|
|
600
|
+
var q = 1e3;
|
|
601
|
+
function J(e) {
|
|
504
602
|
if (e === "global") return "global";
|
|
505
603
|
let t = 0;
|
|
506
604
|
for (let n = 0; n < e.length; n++) {
|
|
@@ -509,10 +607,10 @@ function q(e) {
|
|
|
509
607
|
}
|
|
510
608
|
return Math.abs(t).toString(36).substring(0, 8);
|
|
511
609
|
}
|
|
512
|
-
function
|
|
513
|
-
return (Array.isArray(e) ? e : [...e]).slice(0,
|
|
610
|
+
function Y(e) {
|
|
611
|
+
return (Array.isArray(e) ? e : [...e]).slice(0, q).map(J);
|
|
514
612
|
}
|
|
515
613
|
//#endregion
|
|
516
|
-
export {
|
|
614
|
+
export { K as a, Y as i, G as n, J as r, P as t };
|
|
517
615
|
|
|
518
|
-
//# sourceMappingURL=server-
|
|
616
|
+
//# sourceMappingURL=server-BOdEiJoN.js.map
|