@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.
- 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-CvsOU9cg.js → server-BOdEiJoN.js} +212 -122
- package/dist/server-BOdEiJoN.js.map +1 -0
- package/dist/server.js +1 -1
- package/dist/{vite-plugin-D9qTnleZ.js → vite-plugin-R3LFxv9a.js} +148 -120
- package/dist/vite-plugin-R3LFxv9a.js.map +1 -0
- package/dist/vite-plugin.js +1 -1
- package/package.json +7 -1
- package/src/core/bundler.ts +76 -6
- package/src/core/chunking.ts +61 -4
- package/src/core/script-bundle-policy.ts +57 -2
- package/src/core/server.ts +90 -9
- package/src/core/vite-plugin.ts +25 -5
- package/src/island/compact-runtime.ts +121 -0
- package/src/island/runtime.ts +22 -8
- package/dist/server-CvsOU9cg.js.map +0 -1
- package/dist/vite-plugin-D9qTnleZ.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,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
|
|
292
|
-
if (e.islandData && e.islandData.length > 0 && (
|
|
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
|
|
295
|
-
function
|
|
296
|
-
let
|
|
297
|
-
if (!
|
|
298
|
-
if (!
|
|
299
|
-
|
|
300
|
-
for (let
|
|
301
|
-
for (let e of
|
|
302
|
-
let
|
|
303
|
-
|
|
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:
|
|
376
|
+
return { file: t.file };
|
|
307
377
|
}
|
|
308
|
-
let
|
|
378
|
+
let u = [];
|
|
309
379
|
for (let e of m) {
|
|
310
|
-
let { file: t } =
|
|
311
|
-
t &&
|
|
380
|
+
let { file: t } = l(e.replace(/^\//, ""));
|
|
381
|
+
t && u.push(`/${t}`);
|
|
312
382
|
}
|
|
313
|
-
let
|
|
314
|
-
for (let
|
|
315
|
-
let { file:
|
|
316
|
-
|
|
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 (
|
|
319
|
-
let
|
|
320
|
-
|
|
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 (
|
|
323
|
-
let
|
|
324
|
-
|
|
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
|
-
|
|
327
|
-
let
|
|
328
|
-
|
|
329
|
-
for (let
|
|
330
|
-
|
|
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
|
-
}),
|
|
333
|
-
for (let e of
|
|
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
|
|
430
|
+
let A = [...T, ...m];
|
|
346
431
|
if (!l) {
|
|
347
432
|
let e = u.join(i, "src", "client.global.ts");
|
|
348
|
-
if (c(e) && (
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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(
|
|
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 =
|
|
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 =
|
|
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
|
|
533
|
+
await B(e, r, await (typeof D == "function" ? D : (e, t) => t())(E, async (t) => {
|
|
444
534
|
let r = {
|
|
445
|
-
...
|
|
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 =
|
|
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:
|
|
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 =
|
|
476
|
-
return
|
|
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 =
|
|
488
|
-
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);
|
|
489
579
|
};
|
|
490
|
-
E.rewrite = (e) => O(e), await
|
|
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
|
|
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
|
|
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
|
|
511
|
-
function
|
|
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
|
|
521
|
-
return (Array.isArray(e) ? e : [...e]).slice(0,
|
|
610
|
+
function Y(e) {
|
|
611
|
+
return (Array.isArray(e) ? e : [...e]).slice(0, q).map(J);
|
|
522
612
|
}
|
|
523
613
|
//#endregion
|
|
524
|
-
export {
|
|
614
|
+
export { K as a, Y as i, G as n, J as r, P as t };
|
|
525
615
|
|
|
526
|
-
//# sourceMappingURL=server-
|
|
616
|
+
//# sourceMappingURL=server-BOdEiJoN.js.map
|