alabjs 0.2.5 → 0.3.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.
Files changed (94) hide show
  1. package/dist/analytics/handler.d.ts +5 -1
  2. package/dist/analytics/handler.d.ts.map +1 -1
  3. package/dist/analytics/handler.js +14 -10
  4. package/dist/analytics/handler.js.map +1 -1
  5. package/dist/cli.js +7 -2
  6. package/dist/cli.js.map +1 -1
  7. package/dist/client/federation.d.ts +41 -0
  8. package/dist/client/federation.d.ts.map +1 -0
  9. package/dist/client/federation.js +48 -0
  10. package/dist/client/federation.js.map +1 -0
  11. package/dist/client/hooks.d.ts +9 -1
  12. package/dist/client/hooks.d.ts.map +1 -1
  13. package/dist/client/hooks.js +37 -4
  14. package/dist/client/hooks.js.map +1 -1
  15. package/dist/client/index.d.ts +1 -0
  16. package/dist/client/index.d.ts.map +1 -1
  17. package/dist/client/index.js +1 -0
  18. package/dist/client/index.js.map +1 -1
  19. package/dist/client/offline-sw.js +142 -0
  20. package/dist/commands/build.d.ts.map +1 -1
  21. package/dist/commands/build.js +279 -40
  22. package/dist/commands/build.js.map +1 -1
  23. package/dist/commands/dev.d.ts.map +1 -1
  24. package/dist/commands/dev.js +78 -2
  25. package/dist/commands/dev.js.map +1 -1
  26. package/dist/commands/start.js +1 -1
  27. package/dist/commands/start.js.map +1 -1
  28. package/dist/components/Image.d.ts +0 -12
  29. package/dist/components/Image.d.ts.map +1 -1
  30. package/dist/components/Image.js +2 -29
  31. package/dist/components/Image.js.map +1 -1
  32. package/dist/components/ImageServer.d.ts +20 -0
  33. package/dist/components/ImageServer.d.ts.map +1 -0
  34. package/dist/components/ImageServer.js +37 -0
  35. package/dist/components/ImageServer.js.map +1 -0
  36. package/dist/components/index.d.ts +1 -1
  37. package/dist/components/index.d.ts.map +1 -1
  38. package/dist/components/index.js +1 -1
  39. package/dist/components/index.js.map +1 -1
  40. package/dist/config.d.ts +66 -0
  41. package/dist/config.d.ts.map +1 -0
  42. package/dist/config.js +77 -0
  43. package/dist/config.js.map +1 -0
  44. package/dist/index.d.ts +2 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +1 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/server/app.d.ts.map +1 -1
  49. package/dist/server/app.js +251 -41
  50. package/dist/server/app.js.map +1 -1
  51. package/dist/server/cache.d.ts.map +1 -1
  52. package/dist/server/cache.js +26 -4
  53. package/dist/server/cache.js.map +1 -1
  54. package/dist/server/csrf.d.ts.map +1 -1
  55. package/dist/server/csrf.js +5 -0
  56. package/dist/server/csrf.js.map +1 -1
  57. package/dist/server/revalidate.d.ts.map +1 -1
  58. package/dist/server/revalidate.js +10 -3
  59. package/dist/server/revalidate.js.map +1 -1
  60. package/dist/ssr/html.d.ts +7 -0
  61. package/dist/ssr/html.d.ts.map +1 -1
  62. package/dist/ssr/html.js +24 -4
  63. package/dist/ssr/html.js.map +1 -1
  64. package/dist/ssr/ppr.d.ts.map +1 -1
  65. package/dist/ssr/ppr.js +2 -1
  66. package/dist/ssr/ppr.js.map +1 -1
  67. package/dist/ssr/render.d.ts +5 -0
  68. package/dist/ssr/render.d.ts.map +1 -1
  69. package/dist/ssr/render.js +2 -1
  70. package/dist/ssr/render.js.map +1 -1
  71. package/package.json +9 -4
  72. package/src/analytics/handler.ts +15 -10
  73. package/src/cli.ts +9 -2
  74. package/src/client/federation.ts +55 -0
  75. package/src/client/hooks.ts +42 -4
  76. package/src/client/index.ts +1 -0
  77. package/src/client/offline-sw.ts +7 -2
  78. package/src/commands/build.ts +335 -44
  79. package/src/commands/dev.ts +84 -2
  80. package/src/commands/start.ts +1 -1
  81. package/src/components/Image.tsx +2 -35
  82. package/src/components/ImageServer.ts +43 -0
  83. package/src/components/index.ts +1 -1
  84. package/src/config.ts +143 -0
  85. package/src/index.ts +2 -0
  86. package/src/server/app.ts +289 -35
  87. package/src/server/cache.ts +28 -4
  88. package/src/server/csrf.ts +5 -0
  89. package/src/server/revalidate.ts +14 -2
  90. package/src/ssr/html.ts +31 -3
  91. package/src/ssr/ppr.ts +2 -1
  92. package/src/ssr/render.ts +7 -0
  93. package/tsconfig.sw.json +18 -0
  94. package/tsconfig.tsbuildinfo +1 -1
@@ -1,7 +1,8 @@
1
1
  import { createApp as createH3App, createRouter, defineEventHandler, getQuery, readBody } from "h3";
2
2
  import { createServer } from "node:http";
3
3
  import { resolve, dirname, join, extname } from "node:path";
4
- import { existsSync, createReadStream, statSync, readFileSync } from "node:fs";
4
+ import { existsSync, createReadStream, statSync, readFileSync, readdirSync } from "node:fs";
5
+ import { createGzip, createBrotliCompress } from "node:zlib";
5
6
  import { toNodeListener } from "h3";
6
7
  import { renderToResponse } from "../ssr/render.js";
7
8
  import { generateSitemap } from "./sitemap.js";
@@ -12,20 +13,49 @@ import { checkRevalidateAuth, applyRevalidate } from "./revalidate.js";
12
13
  import { applyCdnHeaders } from "./cdn.js";
13
14
  import { getPPRShell, injectBuildIdIntoPPRShell, PPR_CACHE_SUBDIR } from "../ssr/ppr.js";
14
15
  import { handleVitalsBeacon, handleAnalyticsDashboard } from "../analytics/handler.js";
16
+ import { buildImportMap } from "../config.js";
17
+ /** Walk dist/server recursively and collect all *.server.js paths (compiled server functions). */
18
+ function findDistServerFiles(distDir) {
19
+ const serverDir = join(distDir, "server");
20
+ const results = [];
21
+ function walk(dir) {
22
+ try {
23
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
24
+ const fullPath = join(dir, entry.name);
25
+ if (entry.isDirectory()) {
26
+ walk(fullPath);
27
+ }
28
+ else if (entry.isFile() && entry.name.endsWith(".server.js")) {
29
+ results.push(fullPath);
30
+ }
31
+ }
32
+ }
33
+ catch { /* not readable */ }
34
+ }
35
+ walk(serverDir);
36
+ return results;
37
+ }
15
38
  /**
16
39
  * Find layout file paths (relative to cwd root) for a given route.file, ordered outermost→innermost.
17
40
  * Checks the compiled dist directory for the existence of each layout.
18
41
  */
42
+ /** Convert a TypeScript source path to its compiled .js equivalent. */
43
+ function toJsPath(p) {
44
+ return p.replace(/\.(tsx?)$/, ".js");
45
+ }
19
46
  function findProdLayoutFiles(routeFile, distDir) {
20
47
  // routeFile is like "app/users/[id]/page.tsx"
48
+ // Returns source paths (e.g. "app/layout.tsx") so the client bootstrap can look
49
+ // them up in LAYOUT_MODS by their original source key. The import() call in
50
+ // app.ts uses toJsPath() to convert back to the compiled .js path.
21
51
  const pageDir = dirname(routeFile);
22
52
  const parts = pageDir.split("/");
23
53
  const layouts = [];
24
54
  for (let i = 1; i <= parts.length; i++) {
25
55
  const dir = parts.slice(0, i).join("/");
26
- const layoutRelPath = `${dir}/layout.tsx`;
27
- if (existsSync(join(distDir, "server", layoutRelPath))) {
28
- layouts.push(layoutRelPath);
56
+ const compiledPath = `${dir}/layout.js`;
57
+ if (existsSync(join(distDir, "server", compiledPath))) {
58
+ layouts.push(`${dir}/layout.tsx`);
29
59
  }
30
60
  }
31
61
  return layouts;
@@ -36,7 +66,7 @@ function findProdLayoutFiles(routeFile, distDir) {
36
66
  function findProdErrorFile(routeFile, distDir) {
37
67
  let dir = dirname(routeFile);
38
68
  while (dir.length > 0 && dir !== ".") {
39
- const candidate = `${dir}/error.tsx`;
69
+ const candidate = `${dir}/error.js`;
40
70
  if (existsSync(join(distDir, "server", candidate)))
41
71
  return candidate;
42
72
  const parent = dirname(dir);
@@ -49,9 +79,9 @@ function findProdErrorFile(routeFile, distDir) {
49
79
  function findProdLoadingFile(routeFile, distDir) {
50
80
  let dir = dirname(routeFile);
51
81
  while (dir.length > 0 && dir !== ".") {
52
- const candidate = `${dir}/loading.tsx`;
53
- if (existsSync(join(distDir, "server", candidate)))
54
- return candidate;
82
+ const compiled = `${dir}/loading.js`;
83
+ if (existsSync(join(distDir, "server", compiled)))
84
+ return `${dir}/loading.tsx`;
55
85
  const parent = dirname(dir);
56
86
  if (parent === dir)
57
87
  break;
@@ -78,6 +108,29 @@ export function createApp(manifest, distDir) {
78
108
  buildId = readFileSync(resolve(distDir, "BUILD_ID"), "utf8").trim() || undefined;
79
109
  }
80
110
  catch { /* no BUILD_ID file — skew protection disabled */ }
111
+ // Resolve the compiled client entry file path by reading the Vite manifest.
112
+ // /@alabjs/client is a virtual module at build time; at runtime the server
113
+ // must redirect requests for it to the hashed asset file.
114
+ // The manifest key is a relative path ending in "@alabjs/client" (not "/@alabjs/client").
115
+ let clientEntryPath = "";
116
+ try {
117
+ const viteManifest = JSON.parse(readFileSync(resolve(distDir, "client/.vite/manifest.json"), "utf8"));
118
+ const entry = Object.values(viteManifest).find((e) => e.isEntry && e.src?.endsWith("@alabjs/client"));
119
+ if (entry?.file)
120
+ clientEntryPath = "/" + entry.file;
121
+ }
122
+ catch { /* manifest absent — /@alabjs/client will 404 */ }
123
+ // Load federation config written by `alab build`. Used to:
124
+ // 1. Serve `/_alabjs/federation-manifest.json` (remote discovery)
125
+ // 2. Inject `<script type="importmap">` into every page (host → remote routing)
126
+ let federationConfig;
127
+ let importMapJson = null;
128
+ try {
129
+ const fedJson = readFileSync(resolve(distDir, "federation-config.json"), "utf8");
130
+ federationConfig = JSON.parse(fedJson);
131
+ importMapJson = buildImportMap(federationConfig, /* dev= */ false);
132
+ }
133
+ catch { /* no federation config — federation disabled */ }
81
134
  // Absolute path to the PPR shell cache directory.
82
135
  const pprCacheDir = resolve(distDir, "../../", PPR_CACHE_SUBDIR);
83
136
  // ─── Global middleware ───────────────────────────────────────────────────────
@@ -88,14 +141,43 @@ export function createApp(manifest, distDir) {
88
141
  res.setHeader("referrer-policy", "strict-origin-when-cross-origin");
89
142
  res.setHeader("permissions-policy", "camera=(), microphone=(), geolocation=()");
90
143
  res.setHeader("x-permitted-cross-domain-policies", "none");
144
+ // NOTE: 'unsafe-inline' is required by React's inline event delegation and
145
+ // Tailwind's runtime style injection. 'unsafe-eval' is required by some
146
+ // React dev-mode internals and dynamic import().
147
+ //
148
+ // ⚠️ Security implication: these directives weaken XSS protection.
149
+ // In production, override this header in your middleware with a nonce-based
150
+ // CSP: `script-src 'self' 'nonce-<random>'` and inject the same nonce into
151
+ // every <script> tag via renderToResponse's headExtra option. The CSRF
152
+ // double-submit pattern relies on XSS prevention — using 'unsafe-inline'
153
+ // without a nonce makes the CSRF token readable by injected scripts.
154
+ res.setHeader("content-security-policy", [
155
+ "default-src 'self'",
156
+ "script-src 'self' 'unsafe-inline' 'unsafe-eval'",
157
+ "style-src 'self' 'unsafe-inline'",
158
+ "img-src 'self' data: blob: https:",
159
+ "font-src 'self' data: https:",
160
+ "connect-src 'self'",
161
+ "media-src 'self'",
162
+ "object-src 'none'",
163
+ "base-uri 'self'",
164
+ "form-action 'self'",
165
+ "frame-ancestors 'self'",
166
+ ].join("; "));
91
167
  // HSTS — only meaningful over HTTPS; set in production only.
92
168
  res.setHeader("strict-transport-security", "max-age=31536000; includeSubDomains");
93
169
  }));
94
- // ─── User middleware (middleware.ts compiled to dist/server/middleware.ts) ───
95
- const middlewareModulePath = `${distDir}/server/middleware.ts`;
170
+ // ─── User middleware (middleware.ts compiled to dist/server/middleware.js) ───
171
+ const middlewareModulePath = `${distDir}/server/middleware.js`;
96
172
  if (existsSync(middlewareModulePath)) {
173
+ // Cache the module after first import — avoids redundant dynamic import()
174
+ // overhead on every request (each import() call re-resolves the module graph).
175
+ let _middlewareCache = null;
97
176
  app.use(defineEventHandler(async (event) => {
98
- const mod = await import(middlewareModulePath);
177
+ if (!_middlewareCache) {
178
+ _middlewareCache = await import(middlewareModulePath);
179
+ }
180
+ const mod = _middlewareCache;
99
181
  if (typeof mod.middleware !== "function")
100
182
  return;
101
183
  const req = event.node.req;
@@ -142,7 +224,7 @@ export function createApp(manifest, distDir) {
142
224
  ".xml": "application/xml; charset=utf-8",
143
225
  ".map": "application/json; charset=utf-8",
144
226
  };
145
- app.use(defineEventHandler((event) => {
227
+ app.use(defineEventHandler(async (event) => {
146
228
  const req = event.node.req;
147
229
  const res = event.node.res;
148
230
  if (req.method !== "GET" && req.method !== "HEAD")
@@ -158,28 +240,76 @@ export function createApp(manifest, distDir) {
158
240
  }
159
241
  if (relPath.includes(".."))
160
242
  return;
243
+ const acceptEncoding = (req.headers["accept-encoding"] ?? "");
244
+ const useBrotli = acceptEncoding.includes("br");
245
+ const useGzip = !useBrotli && acceptEncoding.includes("gzip");
246
+ // Virtual client entry — redirect to the hashed asset file resolved at startup.
247
+ // A 302 redirect (not direct serve) is critical: relative imports in the bundle
248
+ // (e.g. "./components-HASH.js") must resolve against the real asset URL
249
+ // (/assets/client-HASH.js), not the virtual path (/@alabjs/client).
250
+ if (relPath === "/@alabjs/client") {
251
+ if (clientEntryPath) {
252
+ res.writeHead(302, { Location: clientEntryPath });
253
+ }
254
+ else {
255
+ res.statusCode = 404;
256
+ }
257
+ res.end();
258
+ return;
259
+ }
161
260
  const ext = extname(relPath).toLowerCase();
162
261
  const contentType = MIME_TYPES[ext];
163
262
  if (!contentType)
164
263
  return; // skip extensionless paths (page routes)
264
+ /** Stream a file with optional brotli/gzip compression and ETag 304 support.
265
+ *
266
+ * Returns a Promise that resolves when the response is fully sent. The
267
+ * h3 handler awaits this promise so h3 knows the response is complete
268
+ * before considering the next middleware. This avoids h3 passing the
269
+ * request to the router (which would 404) while the async pipe is running.
270
+ */
271
+ function serveFile(filePath, fileSize, mtimeMs, cacheControl, mime) {
272
+ // ETag from file size + mtime — both already known from the caller's stat().
273
+ const etag = `"${fileSize.toString(36)}-${mtimeMs.toString(36)}"`;
274
+ res.setHeader("etag", etag);
275
+ res.setHeader("vary", "Accept-Encoding");
276
+ if (req.headers["if-none-match"] === etag) {
277
+ res.statusCode = 304;
278
+ res.end();
279
+ return Promise.resolve();
280
+ }
281
+ res.setHeader("content-type", mime);
282
+ res.setHeader("cache-control", cacheControl);
283
+ if (req.method === "HEAD") {
284
+ res.end();
285
+ return Promise.resolve();
286
+ }
287
+ return new Promise((resolve, reject) => {
288
+ const fileStream = createReadStream(filePath);
289
+ res.on("finish", resolve);
290
+ res.on("error", reject);
291
+ if (useBrotli) {
292
+ res.setHeader("content-encoding", "br");
293
+ fileStream.pipe(createBrotliCompress()).pipe(res);
294
+ }
295
+ else if (useGzip) {
296
+ res.setHeader("content-encoding", "gzip");
297
+ fileStream.pipe(createGzip()).pipe(res);
298
+ }
299
+ else {
300
+ res.setHeader("content-length", fileSize);
301
+ fileStream.pipe(res);
302
+ }
303
+ });
304
+ }
165
305
  // 1. Built client assets (JS chunks, CSS, source maps)
166
306
  const clientCandidate = join(clientDir, relPath);
167
307
  if (existsSync(clientCandidate)) {
168
308
  const stat = statSync(clientCandidate);
169
309
  if (stat.isFile()) {
170
- res.setHeader("content-type", contentType);
171
- res.setHeader("content-length", stat.size);
172
- // Immutable cache for hashed assets; short TTL for others
173
310
  const isHashed = /\.[a-f0-9]{8,}\.[a-z]+$/.test(relPath);
174
- res.setHeader("cache-control", isHashed
175
- ? "public, max-age=31536000, immutable"
176
- : "public, max-age=3600");
177
- if (req.method === "HEAD") {
178
- res.end();
179
- return null;
180
- }
181
- createReadStream(clientCandidate).pipe(res);
182
- return null;
311
+ await serveFile(clientCandidate, stat.size, stat.mtimeMs, isHashed ? "public, max-age=31536000, immutable" : "public, max-age=3600", contentType);
312
+ return;
183
313
  }
184
314
  }
185
315
  // 2. Public directory (favicons, fonts, open-graph images, etc.)
@@ -187,20 +317,26 @@ export function createApp(manifest, distDir) {
187
317
  if (existsSync(publicCandidate)) {
188
318
  const stat = statSync(publicCandidate);
189
319
  if (stat.isFile()) {
190
- res.setHeader("content-type", contentType);
191
- res.setHeader("content-length", stat.size);
192
- res.setHeader("cache-control", "public, max-age=3600");
193
- if (req.method === "HEAD") {
194
- res.end();
195
- return null;
196
- }
197
- createReadStream(publicCandidate).pipe(res);
198
- return null;
320
+ await serveFile(publicCandidate, stat.size, stat.mtimeMs, "public, max-age=3600", contentType);
321
+ return;
199
322
  }
200
323
  }
201
- return undefined;
202
324
  }));
203
325
  // ─── Built-in routes ────────────────────────────────────────────────────────
326
+ // Federation manifest — remote apps can advertise what they expose
327
+ router.get("/_alabjs/federation-manifest.json", defineEventHandler((event) => {
328
+ const res = event.node.res;
329
+ res.setHeader("content-type", "application/json; charset=utf-8");
330
+ res.setHeader("access-control-allow-origin", "*");
331
+ res.setHeader("cache-control", "no-store");
332
+ const manifestPath = resolve(distDir, "client/_alabjs/federation-manifest.json");
333
+ if (!existsSync(manifestPath)) {
334
+ res.statusCode = 404;
335
+ return JSON.stringify({ error: "No federation exposes configured." });
336
+ }
337
+ res.statusCode = 200;
338
+ return readFileSync(manifestPath, "utf8");
339
+ }));
204
340
  // Rust-powered image optimisation — resize + JPEG encode via `alab-napi`
205
341
  router.get("/_alabjs/image", defineEventHandler((event) => {
206
342
  return handleImageRequest(event.node.req, event.node.res, publicDir);
@@ -230,6 +366,74 @@ export function createApp(manifest, distDir) {
230
366
  handleAnalyticsDashboard(event.node.req, event.node.res);
231
367
  return null;
232
368
  }));
369
+ // ─── Server function endpoints ──────────────────────────────────────────────
370
+ // GET /_alabjs/data/:fn — used by useServerData (query params as input)
371
+ // POST /_alabjs/fn/:fn — used by useMutation (JSON body as input)
372
+ //
373
+ // Both scan all *.server.js files in dist/server for the named export.
374
+ // Module results are NOT cached — the module cache is Node's own require cache.
375
+ async function callServerFn(fnName, ctx, input, res) {
376
+ const serverFiles = findDistServerFiles(distDir);
377
+ for (const file of serverFiles) {
378
+ const mod = await import(file);
379
+ if (typeof mod[fnName] === "function") {
380
+ try {
381
+ const result = await mod[fnName](ctx, input);
382
+ res.statusCode = 200;
383
+ res.setHeader("content-type", "application/json");
384
+ res.end(JSON.stringify(result));
385
+ }
386
+ catch (err) {
387
+ const zodError = err?.["zodError"];
388
+ if (zodError) {
389
+ res.statusCode = 422;
390
+ res.setHeader("content-type", "application/json");
391
+ res.end(JSON.stringify({ zodError }));
392
+ }
393
+ else {
394
+ const msg = err instanceof Error ? err.message : String(err);
395
+ console.error(`[alabjs] server fn "${fnName}" threw:`, err);
396
+ res.statusCode = 500;
397
+ res.setHeader("content-type", "application/json");
398
+ res.end(JSON.stringify({ error: msg }));
399
+ }
400
+ }
401
+ return;
402
+ }
403
+ }
404
+ res.statusCode = 404;
405
+ res.setHeader("content-type", "application/json");
406
+ res.end(JSON.stringify({ error: `[alabjs] server function not found: ${fnName}` }));
407
+ }
408
+ router.get("/_alabjs/data/:fn", defineEventHandler(async (event) => {
409
+ const fnName = event.context.params?.["fn"] ?? "";
410
+ const req = event.node.req;
411
+ const url = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
412
+ const query = Object.fromEntries(url.searchParams.entries());
413
+ const ctx = {
414
+ params: query,
415
+ query,
416
+ headers: req.headers,
417
+ method: "GET",
418
+ url: req.url ?? "/",
419
+ };
420
+ await callServerFn(fnName, ctx, Object.keys(query).length ? query : undefined, event.node.res);
421
+ }));
422
+ router.post("/_alabjs/fn/:fn", defineEventHandler(async (event) => {
423
+ const fnName = event.context.params?.["fn"] ?? "";
424
+ const req = event.node.req;
425
+ const url = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
426
+ const query = Object.fromEntries(url.searchParams.entries());
427
+ const body = await readBody(event);
428
+ const ctx = {
429
+ params: query,
430
+ query,
431
+ headers: req.headers,
432
+ method: "POST",
433
+ url: req.url ?? "/",
434
+ };
435
+ await callServerFn(fnName, ctx, body, event.node.res);
436
+ }));
233
437
  // Auto sitemap.xml from route manifest
234
438
  router.get("/sitemap.xml", defineEventHandler((event) => {
235
439
  const baseUrl = process.env["PUBLIC_URL"] ??
@@ -244,7 +448,7 @@ export function createApp(manifest, distDir) {
244
448
  if (route.kind !== "api")
245
449
  continue;
246
450
  const h3ApiPath = route.path.replace(/\[([^\]]+)\]/g, ":$1");
247
- const apiModulePath = `${distDir}/server/${route.file}`;
451
+ const apiModulePath = `${distDir}/server/${toJsPath(route.file)}`;
248
452
  for (const method of ["get", "post", "put", "patch", "delete", "head"]) {
249
453
  router[method](h3ApiPath, defineEventHandler(async (event) => {
250
454
  const apiMod = await import(apiModulePath);
@@ -320,7 +524,7 @@ export function createApp(manifest, distDir) {
320
524
  searchParams[k] = Array.isArray(v) ? v[0] ?? "" : v;
321
525
  }
322
526
  // Dynamically import the compiled page module from the dist directory.
323
- const pageModulePath = `${distDir}/server/${route.file}`;
527
+ const pageModulePath = `${distDir}/server/${toJsPath(route.file)}`;
324
528
  const mod = await import(pageModulePath);
325
529
  const Page = mod.default;
326
530
  if (typeof Page !== "function") {
@@ -355,12 +559,12 @@ export function createApp(manifest, distDir) {
355
559
  }
356
560
  // Support both static metadata and dynamic generateMetadata (production fix)
357
561
  const metadata = typeof mod.generateMetadata === "function"
358
- ? await mod.generateMetadata(params)
562
+ ? await mod.generateMetadata({ params, searchParams })
359
563
  : (mod.metadata ?? {});
360
564
  const ssrEnabled = mod.ssr === true;
361
565
  // ── Layouts ──────────────────────────────────────────────────────────
362
566
  const layoutRelPaths = findProdLayoutFiles(route.file, distDir);
363
- const layoutMods = await Promise.all(layoutRelPaths.map((p) => import(`${distDir}/server/${p}`)));
567
+ const layoutMods = await Promise.all(layoutRelPaths.map((p) => import(`${distDir}/server/${toJsPath(p)}`)));
364
568
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
365
569
  const layouts = layoutMods.map((m) => m.default).filter((c) => typeof c === "function");
366
570
  const layoutsJson = JSON.stringify(layoutRelPaths);
@@ -393,6 +597,7 @@ export function createApp(manifest, distDir) {
393
597
  ssr: ssrEnabled,
394
598
  headExtra,
395
599
  ...(buildId ? { buildId } : {}),
600
+ ...(importMapJson ? { importMapJson } : {}),
396
601
  });
397
602
  }
398
603
  catch (err) {
@@ -401,7 +606,7 @@ export function createApp(manifest, distDir) {
401
606
  if (errorRelPath) {
402
607
  try {
403
608
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
404
- const errorMod = await import(`${distDir}/server/${errorRelPath}`);
609
+ const errorMod = await import(`${distDir}/server/${toJsPath(errorRelPath)}`);
405
610
  const ErrorPage = errorMod.default;
406
611
  if (typeof ErrorPage === "function") {
407
612
  renderToResponse(res, {
@@ -412,6 +617,7 @@ export function createApp(manifest, distDir) {
412
617
  routeFile: errorRelPath,
413
618
  ssr: true,
414
619
  headExtra,
620
+ ...(importMapJson ? { importMapJson } : {}),
415
621
  });
416
622
  return;
417
623
  }
@@ -430,7 +636,7 @@ export function createApp(manifest, distDir) {
430
636
  }
431
637
  app.use(router);
432
638
  // ─── 404 / not-found fallback ────────────────────────────────────────────────
433
- const notFoundPath = `${distDir}/server/app/not-found.tsx`;
639
+ const notFoundPath = `${distDir}/server/app/not-found.js`;
434
640
  app.use(defineEventHandler(async (event) => {
435
641
  const res = event.node.res;
436
642
  res.statusCode = 404;
@@ -447,6 +653,7 @@ export function createApp(manifest, distDir) {
447
653
  metadata: { title: "404 — Not Found" },
448
654
  routeFile: "app/not-found.tsx",
449
655
  ssr: true,
656
+ ...(importMapJson ? { importMapJson } : {}),
450
657
  });
451
658
  return;
452
659
  }
@@ -461,8 +668,11 @@ export function createApp(manifest, distDir) {
461
668
  }));
462
669
  return {
463
670
  listen(port = 3000) {
671
+ // Make the server's base URL available to useServerData during SSR so it
672
+ // can construct an absolute URL for its internal loop-back fetch.
673
+ process.env["ALAB_ORIGIN"] = `http://127.0.0.1:${port}`;
464
674
  const server = createServer(toNodeListener(app));
465
- server.listen(port, () => {
675
+ server.listen(port, "0.0.0.0", () => {
466
676
  console.log(` alab ready at http://localhost:${port}`);
467
677
  });
468
678
  },
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/server/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH,mEAAmE;AACnE,QAAA,MAAM,UAAU,EAAE,OAAO,MAAkC,CAAC;AAK5D,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,UAAU,CAQlE;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,EACb,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACrC,IAAI,CAMN;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAM9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpD;AAeD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAavF;AAED,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,IAAI,CAEpG;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAG3D;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAErD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAIzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAS5D;AAED,iFAAiF;AACjF,wBAAgB,YAAY,IAAI,KAAK,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CASD"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/server/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH,mEAAmE;AACnE,QAAA,MAAM,UAAU,EAAE,OAAO,MAAkC,CAAC;AAgB5D,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,UAAU,CAWlE;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,EACb,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACrC,IAAI,CAUN;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAM9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpD;AAkBD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAavF;AAED,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,IAAI,CAKpG;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAG3D;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAErD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAIzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAS5D;AAED,iFAAiF;AACjF,wBAAgB,YAAY,IAAI,KAAK,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CASD"}
@@ -19,7 +19,18 @@
19
19
  */
20
20
  /** Sentinel value returned when a cache key has no valid entry. */
21
21
  const CACHE_MISS = Symbol("alab:cache_miss");
22
- /** Global in-process LRU-style cache. Shared across all server function calls. */
22
+ /**
23
+ * Global in-process LRU cache. Shared across all server function calls.
24
+ *
25
+ * Max size is capped to prevent unbounded memory growth in long-running servers.
26
+ * When the cap is reached, the oldest entry (by insertion order) is evicted.
27
+ *
28
+ * ⚠️ Multi-tenant note: this cache is process-wide and shared across all
29
+ * requests. In multi-tenant deployments, cache keys MUST include a tenant
30
+ * identifier (e.g. `tenant:${tenantId}:posts`) to prevent data leakage
31
+ * between tenants.
32
+ */
33
+ const _STORE_MAX = 2048;
23
34
  const _store = new Map();
24
35
  export { CACHE_MISS };
25
36
  /** Retrieve a cached value. Returns `CACHE_MISS` if absent or expired. */
@@ -31,10 +42,17 @@ export function getCached(key) {
31
42
  _store.delete(key);
32
43
  return CACHE_MISS;
33
44
  }
45
+ // Move to end (LRU: mark as recently used)
46
+ _store.delete(key);
47
+ _store.set(key, entry);
34
48
  return entry.data;
35
49
  }
36
50
  /** Store a value in the cache with a TTL (seconds) and optional tags. */
37
51
  export function setCache(key, data, opts) {
52
+ // Evict oldest entry when at capacity
53
+ if (_store.size >= _STORE_MAX && !_store.has(key)) {
54
+ _store.delete(_store.keys().next().value);
55
+ }
38
56
  _store.set(key, {
39
57
  data,
40
58
  expires: Date.now() + opts.ttl * 1_000,
@@ -64,6 +82,7 @@ export function invalidateCache(opts) {
64
82
  export function invalidateCacheKey(key) {
65
83
  _store.delete(key);
66
84
  }
85
+ const _PAGE_STORE_MAX = 1024;
67
86
  const _pageStore = new Map();
68
87
  /**
69
88
  * Retrieve a cached HTML page. Returns `null` if absent or fully expired
@@ -78,8 +97,8 @@ export function getCachedPage(pathname) {
78
97
  if (now <= entry.expires)
79
98
  return { html: entry.html, stale: false };
80
99
  // Stale-while-revalidate: serve stale for up to 2× TTL, trigger background regen
81
- const ttl = entry.expires - (entry.expires - now); // rough TTL from stored data
82
- if (now <= entry.expires + Math.max(ttl * 2, 60_000)) {
100
+ const swrWindow = Math.max(entry.ttl * 2 * 1_000, 60_000);
101
+ if (now <= entry.expires + swrWindow) {
83
102
  return { html: entry.html, stale: true };
84
103
  }
85
104
  _pageStore.delete(pathname);
@@ -87,7 +106,10 @@ export function getCachedPage(pathname) {
87
106
  }
88
107
  /** Store a rendered HTML page with a TTL (seconds). */
89
108
  export function setCachedPage(pathname, html, ttl, tags = []) {
90
- _pageStore.set(pathname, { html, expires: Date.now() + ttl * 1_000, revalidating: false, tags });
109
+ if (_pageStore.size >= _PAGE_STORE_MAX && !_pageStore.has(pathname)) {
110
+ _pageStore.delete(_pageStore.keys().next().value);
111
+ }
112
+ _pageStore.set(pathname, { html, expires: Date.now() + ttl * 1_000, ttl, revalidating: false, tags });
91
113
  }
92
114
  /** Mark a page as currently being revalidated to prevent concurrent regen. */
93
115
  export function markPageRevalidating(pathname) {