alabjs 0.3.0-alpha.1 → 0.4.0

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 (51) hide show
  1. package/dist/commands/build.d.ts.map +1 -1
  2. package/dist/commands/build.js +122 -28
  3. package/dist/commands/build.js.map +1 -1
  4. package/dist/commands/dev.d.ts.map +1 -1
  5. package/dist/commands/dev.js +225 -2
  6. package/dist/commands/dev.js.map +1 -1
  7. package/dist/components/Link.d.ts +16 -0
  8. package/dist/components/Link.d.ts.map +1 -1
  9. package/dist/components/Link.js +10 -0
  10. package/dist/components/Link.js.map +1 -1
  11. package/dist/components/index.d.ts +2 -2
  12. package/dist/components/index.d.ts.map +1 -1
  13. package/dist/components/index.js +1 -1
  14. package/dist/components/index.js.map +1 -1
  15. package/dist/live/broadcaster.d.ts +64 -0
  16. package/dist/live/broadcaster.d.ts.map +1 -0
  17. package/dist/live/broadcaster.js +78 -0
  18. package/dist/live/broadcaster.js.map +1 -0
  19. package/dist/live/registry.d.ts +34 -0
  20. package/dist/live/registry.d.ts.map +1 -0
  21. package/dist/live/registry.js +33 -0
  22. package/dist/live/registry.js.map +1 -0
  23. package/dist/live/renderer.d.ts +22 -0
  24. package/dist/live/renderer.d.ts.map +1 -0
  25. package/dist/live/renderer.js +45 -0
  26. package/dist/live/renderer.js.map +1 -0
  27. package/dist/router/manifest.d.ts +1 -1
  28. package/dist/router/manifest.d.ts.map +1 -1
  29. package/dist/server/app.d.ts.map +1 -1
  30. package/dist/server/app.js +146 -0
  31. package/dist/server/app.js.map +1 -1
  32. package/dist/server/index.d.ts +1 -0
  33. package/dist/server/index.d.ts.map +1 -1
  34. package/dist/server/index.js +1 -0
  35. package/dist/server/index.js.map +1 -1
  36. package/dist/server/revalidate.d.ts.map +1 -1
  37. package/dist/server/revalidate.js +3 -0
  38. package/dist/server/revalidate.js.map +1 -1
  39. package/package.json +3 -3
  40. package/src/commands/build.ts +142 -30
  41. package/src/commands/dev.ts +246 -3
  42. package/src/components/Link.tsx +20 -0
  43. package/src/components/index.ts +2 -2
  44. package/src/live/broadcaster.ts +83 -0
  45. package/src/live/registry.ts +56 -0
  46. package/src/live/renderer.ts +54 -0
  47. package/src/router/manifest.ts +1 -1
  48. package/src/server/app.ts +159 -0
  49. package/src/server/index.ts +1 -0
  50. package/src/server/revalidate.ts +3 -0
  51. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAUA,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACrB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAsED,wBAAsB,KAAK,CAAC,EAAE,GAAG,EAAE,aAAqB,EAAE,IAAY,EAAE,OAAe,EAAE,EAAE,YAAY,iBA4GtG"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAUA,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACrB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAsED,wBAAsB,KAAK,CAAC,EAAE,GAAG,EAAE,aAAqB,EAAE,IAAY,EAAE,OAAe,EAAE,EAAE,YAAY,iBAiHtG"}
@@ -73,12 +73,13 @@ async function buildSpa(cwd) {
73
73
  export async function build({ cwd, skipTypecheck = false, mode = "ssr", analyze = false }) {
74
74
  if (mode === "spa") {
75
75
  console.log(" alab building SPA (client-only)...\n");
76
- const tasks = [buildSpa(cwd)];
76
+ await buildSpa(cwd);
77
+ // SPA has no route manifest, but still type-check after the build so any
78
+ // generated types from the Vite plugin are available to tsc.
77
79
  if (!skipTypecheck) {
78
80
  console.log(" alab type-checking...");
79
- tasks.push(runTypecheck(cwd));
81
+ await runTypecheck(cwd);
80
82
  }
81
- await Promise.all(tasks);
82
83
  return;
83
84
  }
84
85
  console.log(" alab building for production...\n");
@@ -117,36 +118,40 @@ export async function build({ cwd, skipTypecheck = false, mode = "ssr", analyze
117
118
  console.warn(" alab warning: install rolldown-plugin-visualizer or rollup-plugin-visualizer to enable --analyze.");
118
119
  }
119
120
  }
120
- const tasks = [
121
- viteBuild({
122
- root: cwd,
123
- plugins: [
124
- (await import("alabjs-vite-plugin")).alabPlugin({ mode: "build" }),
125
- ...(visualizerPlugin ? [visualizerPlugin] : []),
126
- ],
127
- build: {
128
- // Output client assets to .alabjs/dist/client/ so the production server's
129
- // static handler (which serves from distDir/client/) can find them.
130
- outDir: resolve(cwd, ".alabjs/dist/client"),
131
- manifest: true,
132
- ssrManifest: true,
133
- rolldownOptions: {
134
- // In SSR mode, we don't use an index.html as the entry point.
135
- // Instead, we bundle the virtual client module as the main browser asset.
136
- input: "/@alabjs/client",
137
- },
121
+ await viteBuild({
122
+ root: cwd,
123
+ plugins: [
124
+ (await import("alabjs-vite-plugin")).alabPlugin({ mode: "build" }),
125
+ ...(visualizerPlugin ? [visualizerPlugin] : []),
126
+ ],
127
+ build: {
128
+ // Output client assets to .alabjs/dist/client/ so the production server's
129
+ // static handler (which serves from distDir/client/) can find them.
130
+ outDir: resolve(cwd, ".alabjs/dist/client"),
131
+ manifest: true,
132
+ ssrManifest: true,
133
+ rolldownOptions: {
134
+ // In SSR mode, we don't use an index.html as the entry point.
135
+ // Instead, we bundle the virtual client module as the main browser asset.
136
+ input: "/@alabjs/client",
138
137
  },
139
- }),
140
- ];
141
- if (!skipTypecheck) {
142
- console.log(" alab type-checking...");
143
- tasks.push(runTypecheck(cwd));
144
- }
145
- await Promise.all(tasks);
138
+ },
139
+ });
146
140
  const distDir = resolve(cwd, ".alabjs/dist");
147
141
  // Scan the app/ directory with the Rust router, normalize paths, and write
148
142
  // route-manifest.json. Must run before writeBuildId (hash) and buildPPRShells.
143
+ // Also writes .alabjs/routes.d.ts — type-checking runs AFTER this so tsc can
144
+ // resolve the AlabRoutes union that routes.d.ts exports.
149
145
  const manifest = await buildRouteManifest(cwd, distDir);
146
+ // Type-check after route types are written so `AlabRoutes` is resolvable.
147
+ if (!skipTypecheck) {
148
+ console.log(" alab type-checking...");
149
+ await runTypecheck(cwd);
150
+ }
151
+ // Validate all RouteLink/Link/navigate path references against the manifest.
152
+ // Runs after manifest generation but before the SSR bundle so type-safe route
153
+ // errors abort the build early with clear file + offset info.
154
+ await checkRouteReferences(cwd, manifest);
150
155
  // Compile all app pages, layouts, and server functions to .alabjs/dist/server/.
151
156
  // Must run after buildRouteManifest so we have the entry list, and before
152
157
  // buildPPRShells which imports the compiled modules.
@@ -386,6 +391,47 @@ async function buildFederationExposes(cwd, distClientAlab, appName, exposes, sha
386
391
  };
387
392
  writeFileSync(resolve(distClientAlab, "federation-manifest.json"), JSON.stringify(manifest, null, 2), "utf8");
388
393
  }
394
+ /**
395
+ * Validate all `<RouteLink to>`, `<Link href>`, and `navigate()` path
396
+ * references in `app/` against the compiled route manifest.
397
+ *
398
+ * Fails the build with a formatted error list when unknown paths or literal
399
+ * bracket segments are found. Gracefully skips when the napi binary is absent.
400
+ */
401
+ async function checkRouteReferences(cwd, manifest) {
402
+ const appDir = resolve(cwd, "app");
403
+ let napi;
404
+ try {
405
+ const mod = await import("@alabjs/compiler");
406
+ napi = (mod.default ?? mod);
407
+ if (typeof napi.checkRouteRefs !== "function")
408
+ return; // napi binary predates route checker
409
+ }
410
+ catch {
411
+ return; // napi binary not available — skip silently
412
+ }
413
+ const manifestJson = JSON.stringify(manifest);
414
+ const violationsJson = napi.checkRouteRefs(appDir, manifestJson);
415
+ const violations = JSON.parse(violationsJson);
416
+ if (violations.length === 0)
417
+ return;
418
+ const lines = [
419
+ `\n alab ${violations.length} route violation${violations.length === 1 ? "" : "s"} found:\n`,
420
+ ];
421
+ for (const v of violations) {
422
+ const relFile = relative(cwd, v.file);
423
+ const kindLabel = v.kind === "unknown_path"
424
+ ? "unknown path"
425
+ : "literal bracket — use params prop";
426
+ lines.push(` ✗ ${relFile} "${v.path}" (${kindLabel})`);
427
+ if (v.suggestion) {
428
+ lines.push(` → suggestion: ${v.suggestion}`);
429
+ }
430
+ }
431
+ lines.push("");
432
+ console.error(lines.join("\n"));
433
+ throw new Error(`[alabjs] Build failed: ${violations.length} route violation(s). Fix the paths above.`);
434
+ }
389
435
  /**
390
436
  * Scan `app/` with the Rust router napi, normalize absolute file paths to
391
437
  * cwd-relative, and write `route-manifest.json` to `distDir`.
@@ -418,8 +464,56 @@ async function buildRouteManifest(cwd, distDir) {
418
464
  const pages = manifest.routes.filter((r) => r.kind === "page").length;
419
465
  const apis = manifest.routes.filter((r) => r.kind === "api").length;
420
466
  console.log(` alab routes → ${pages} page(s), ${apis} api route(s)`);
467
+ // Emit auto-generated route types so <RouteLink to="..."> and navigate() are
468
+ // type-safe without any manual setup. Written to .alabjs/routes.d.ts.
469
+ writeRouteTypes(manifest, distDir);
421
470
  return manifest;
422
471
  }
472
+ /**
473
+ * Write `.alabjs/routes.d.ts` containing the `AlabRoutes` union type and
474
+ * a typed `navigate` overload, auto-derived from the route manifest.
475
+ *
476
+ * Example output:
477
+ * ```ts
478
+ * export type AlabRoutes = "/" | "/about" | `/users/${string}`;
479
+ * ```
480
+ *
481
+ * Add `".alabjs/routes.d.ts"` to `tsconfig.json` `include` to enable
482
+ * type-checking on `<RouteLink to>`, `<Link href>`, and `navigate()`.
483
+ */
484
+ function writeRouteTypes(manifest, distDir) {
485
+ const pageRoutes = manifest.routes.filter((r) => r.kind === "page");
486
+ // Convert alab `[param]` syntax → TypeScript template literal `${string}`.
487
+ const routeTypes = pageRoutes.map((r) => {
488
+ const tsPath = r.path.replace(/\[([^\]]+)\]/g, "${string}");
489
+ // Static path → plain string literal; dynamic path → template literal.
490
+ return tsPath.includes("${") ? `\`${tsPath}\`` : JSON.stringify(tsPath);
491
+ });
492
+ const unionType = routeTypes.length > 0 ? routeTypes.join(" | ") : "string";
493
+ const content = [
494
+ "// AUTO-GENERATED by `alab build` — do not edit manually.",
495
+ "// Add \".alabjs/routes.d.ts\" to your tsconfig.json `include` array to enable",
496
+ "// type-checking on <RouteLink to>, <Link href>, and navigate().",
497
+ "",
498
+ `export type AlabRoutes = ${unionType};`,
499
+ "",
500
+ "declare module \"alabjs/router\" {",
501
+ " export function navigate(path: AlabRoutes, opts?: { replace?: boolean }): void;",
502
+ "}",
503
+ "",
504
+ "declare module \"alabjs/components\" {",
505
+ " import type { ComponentProps } from \"react\";",
506
+ " interface RouteLinkProps extends Omit<ComponentProps<\"a\">, \"href\"> {",
507
+ " to: AlabRoutes;",
508
+ " replace?: boolean;",
509
+ " }",
510
+ " export function RouteLink(props: RouteLinkProps): JSX.Element;",
511
+ " export function Link(props: RouteLinkProps): JSX.Element;",
512
+ "}",
513
+ "",
514
+ ].join("\n");
515
+ writeFileSync(resolve(distDir, "routes.d.ts"), content, "utf8");
516
+ }
423
517
  /**
424
518
  * Compile all SSR route files to `distDir/server/` using esbuild's per-file
425
519
  * transpilation mode.
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAuBA,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAoCD,wBAAsB,GAAG,CAAC,EAAE,GAAG,EAAE,IAAW,EAAE,IAAkB,EAAE,EAAE,UAAU,iBAkmB7E"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAiJA,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAoCD,wBAAsB,GAAG,CAAC,EAAE,GAAG,EAAE,IAAW,EAAE,IAAkB,EAAE,EAAE,UAAU,iBA2tB7E"}
@@ -1,6 +1,6 @@
1
1
  import { createServer } from "vite";
2
- import { resolve, join } from "node:path";
3
- import { readdirSync, existsSync as fsExistsSync, readFileSync as fsReadFileSync } from "node:fs";
2
+ import { resolve, join, relative } from "node:path";
3
+ import { readdirSync, existsSync as fsExistsSync, readFileSync as fsReadFileSync, writeFileSync, mkdirSync, openSync, readSync, closeSync } from "node:fs";
4
4
  import { loadUserConfig, buildImportMap } from "../config.js";
5
5
  import { Writable } from "node:stream";
6
6
  import { scanDevRoutes, matchDevRoute, findLayoutFiles, findErrorFile, findLoadingFile, scanDevApiRoutes, matchDevApiRoute, } from "../ssr/router-dev.js";
@@ -10,6 +10,123 @@ import { handleImageRequest } from "../server/image.js";
10
10
  import { runMiddleware } from "../server/middleware.js";
11
11
  import { getCachedPage, setCachedPage, markPageRevalidating, isPageRevalidating, } from "../server/cache.js";
12
12
  import { checkRevalidateAuth, applyRevalidate } from "../server/revalidate.js";
13
+ import { subscribeToTag } from "../live/broadcaster.js";
14
+ // ─── FNV-1a hash (mirrors the Rust napi hashBuildId) ─────────────────────────
15
+ // Must produce the same output as the Vite plugin so `/_alabjs/live/:id`
16
+ // endpoints match the IDs embedded in the client bundle.
17
+ function fnv1aHex(str) {
18
+ let hash = 0xcbf29ce484222325n;
19
+ for (const byte of Buffer.from(str, "utf-8")) {
20
+ hash ^= BigInt(byte);
21
+ hash = BigInt.asUintN(64, hash * 0x100000001b3n);
22
+ }
23
+ return hash.toString(16).padStart(16, "0");
24
+ }
25
+ // ─── Live component discovery ─────────────────────────────────────────────────
26
+ // Scans app/ for live component files and builds a hash → abs-path map so the
27
+ // dev SSE endpoint can locate components by the ID the client bundle embeds.
28
+ //
29
+ // Detection order (mirrors the Vite plugin transform hook):
30
+ // 1. *.live.tsx / *.live.ts filename convention — O(1), no file read needed
31
+ // 2. "use live" directive as first statement — reads first 200 bytes only
32
+ function buildLiveComponentMap(appDir) {
33
+ const map = new Map();
34
+ function hasUseLiveDirective(filePath) {
35
+ try {
36
+ // Read only the first 200 bytes to avoid loading large files.
37
+ const fd = openSync(filePath, "r");
38
+ const buf = Buffer.alloc(200);
39
+ const bytesRead = readSync(fd, buf, 0, 200, 0);
40
+ closeSync(fd);
41
+ return buf.subarray(0, bytesRead).toString("utf-8").includes('"use live"');
42
+ }
43
+ catch {
44
+ return false;
45
+ }
46
+ }
47
+ function scan(dir) {
48
+ try {
49
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
50
+ const full = join(dir, entry.name);
51
+ if (entry.isDirectory()) {
52
+ scan(full);
53
+ continue;
54
+ }
55
+ if (!/\.(tsx|ts)$/.test(entry.name))
56
+ continue;
57
+ // Convention-based detection (no file read).
58
+ if (/\.live\.(tsx|ts)$/.test(entry.name)) {
59
+ map.set(fnv1aHex(full), full);
60
+ continue;
61
+ }
62
+ // Directive-based detection (cheap partial read).
63
+ if (hasUseLiveDirective(full)) {
64
+ map.set(fnv1aHex(full), full);
65
+ }
66
+ }
67
+ }
68
+ catch { /* ignore ENOENT */ }
69
+ }
70
+ scan(appDir);
71
+ return map;
72
+ }
73
+ // ─── Dev-time route type generation ──────────────────────────────────────────
74
+ async function emitDevRouteTypes(cwd, appDir) {
75
+ try {
76
+ const mod = await import("@alabjs/compiler");
77
+ const napi = (mod.default ?? mod);
78
+ if (typeof napi.buildRoutes !== "function")
79
+ return;
80
+ const json = napi.buildRoutes(appDir);
81
+ const manifest = JSON.parse(json);
82
+ // Normalise absolute paths → cwd-relative
83
+ for (const r of manifest.routes) {
84
+ if (r.file.startsWith(cwd))
85
+ r.file = relative(cwd, r.file);
86
+ }
87
+ const pageRoutes = manifest.routes.filter((r) => r.kind === "page");
88
+ const routeTypes = pageRoutes.map((r) => {
89
+ const tsPath = r.path.replace(/\[([^\]]+)\]/g, "${string}");
90
+ return tsPath.includes("${") ? `\`${tsPath}\`` : JSON.stringify(tsPath);
91
+ });
92
+ const unionType = routeTypes.length > 0 ? routeTypes.join(" | ") : "string";
93
+ const content = [
94
+ "// AUTO-GENERATED by `alab dev` — do not edit manually.",
95
+ `export type AlabRoutes = ${unionType};`,
96
+ "declare module \"alabjs/router\" {",
97
+ " export function navigate(path: AlabRoutes, opts?: { replace?: boolean }): void;",
98
+ "}",
99
+ "declare module \"alabjs/components\" {",
100
+ " import type { ComponentProps } from \"react\";",
101
+ " interface RouteLinkProps extends Omit<ComponentProps<\"a\">, \"href\"> {",
102
+ " to: AlabRoutes;",
103
+ " replace?: boolean;",
104
+ " }",
105
+ " export function RouteLink(props: RouteLinkProps): JSX.Element;",
106
+ " export function Link(props: RouteLinkProps): JSX.Element;",
107
+ "}",
108
+ "",
109
+ ].join("\n");
110
+ const distDir = resolve(cwd, ".alabjs");
111
+ mkdirSync(distDir, { recursive: true });
112
+ writeFileSync(resolve(distDir, "routes.d.ts"), content, "utf8");
113
+ // Warn about route violations (non-fatal in dev)
114
+ if (typeof napi.checkRouteRefs === "function") {
115
+ const violations = JSON.parse(napi.checkRouteRefs(appDir, json));
116
+ if (violations.length > 0) {
117
+ console.warn(`\n alab ⚠ ${violations.length} route violation(s):`);
118
+ for (const v of violations) {
119
+ const rel = relative(cwd, v.file);
120
+ console.warn(` ✗ ${rel} "${v.path}" (${v.kind.replace("_", " ")})`);
121
+ if (v.suggestion)
122
+ console.warn(` → ${v.suggestion}`);
123
+ }
124
+ console.warn("");
125
+ }
126
+ }
127
+ }
128
+ catch { /* napi binary not available — skip silently */ }
129
+ }
13
130
  /** Recursively find all *.server.ts / *.server.tsx files under a directory. */
14
131
  function findServerFiles(dir) {
15
132
  const results = [];
@@ -94,6 +211,12 @@ export async function dev({ cwd, port = 3000, host = "localhost" }) {
94
211
  // rather than silently rendering with stale JS.
95
212
  const devBuildId = `dev-${Date.now().toString(36)}`;
96
213
  const appDir = resolve(cwd, "app");
214
+ // Generate .alabjs/routes.d.ts and warn about route violations (non-fatal in dev).
215
+ void emitDevRouteTypes(cwd, appDir);
216
+ // Build live component map: hash → absolute file path.
217
+ // Re-built lazily on each request so new *.live.tsx files are picked up
218
+ // without restarting the dev server.
219
+ let liveMap = buildLiveComponentMap(appDir);
97
220
  const vite = await createServer({
98
221
  root: cwd,
99
222
  appType: "custom",
@@ -355,6 +478,86 @@ export async function dev({ cwd, port = 3000, host = "localhost" }) {
355
478
  res.end(JSON.stringify("error" in result ? { error: result.error } : result));
356
479
  return;
357
480
  }
481
+ // ── /_alabjs/live/:id — SSE stream for "use live" components ─────────────
482
+ if (pathname.startsWith("/_alabjs/live/")) {
483
+ const liveId = pathname.slice("/_alabjs/live/".length).split("?")[0] ?? "";
484
+ // Rebuild map on each request so new *.live.tsx files appear without restart.
485
+ liveMap = buildLiveComponentMap(appDir);
486
+ const liveFile = liveMap.get(liveId);
487
+ if (!liveFile) {
488
+ res.statusCode = 404;
489
+ res.setHeader("content-type", "application/json");
490
+ res.end(JSON.stringify({ error: `[alabjs] live component not found: ${liveId}` }));
491
+ return;
492
+ }
493
+ // Decode props from query param: ?props=<base64-json>
494
+ const url = new URL(rawUrl, `http://${host}:${port}`);
495
+ let props = {};
496
+ try {
497
+ const propsParam = url.searchParams.get("props");
498
+ if (propsParam)
499
+ props = JSON.parse(Buffer.from(decodeURIComponent(propsParam), "base64").toString("utf-8"));
500
+ }
501
+ catch { /* malformed — use empty props */ }
502
+ res.statusCode = 200;
503
+ res.setHeader("content-type", "text/event-stream; charset=utf-8");
504
+ res.setHeader("cache-control", "no-store");
505
+ res.setHeader("connection", "keep-alive");
506
+ res.setHeader("x-accel-buffering", "no");
507
+ let dead = false;
508
+ let lastHash = "";
509
+ const send = async () => {
510
+ if (dead || res.destroyed)
511
+ return;
512
+ try {
513
+ const mod = await vite.ssrLoadModule(liveFile);
514
+ const Component = mod.default;
515
+ if (typeof Component !== "function")
516
+ return;
517
+ const { renderToStaticMarkup } = await import("react-dom/server");
518
+ const { createElement } = await import("react");
519
+ const html = renderToStaticMarkup(createElement(Component, props));
520
+ // FNV-1a no-op suppression: skip push when content unchanged.
521
+ const hash = fnv1aHex(html);
522
+ if (hash === lastHash)
523
+ return;
524
+ lastHash = hash;
525
+ res.write(`data: ${html}\n\n`);
526
+ }
527
+ catch (err) {
528
+ const msg = err instanceof Error ? err.message : String(err);
529
+ res.write(`event: error\ndata: ${JSON.stringify(msg)}\n\n`);
530
+ }
531
+ };
532
+ // Initial render.
533
+ await send();
534
+ // Interval-based polling (read liveInterval from module).
535
+ let intervalMs = 5000;
536
+ try {
537
+ const mod = await vite.ssrLoadModule(liveFile);
538
+ if (typeof mod.liveInterval === "number" && mod.liveInterval > 0) {
539
+ intervalMs = mod.liveInterval * 1000;
540
+ }
541
+ }
542
+ catch { /* use default */ }
543
+ const timer = setInterval(() => void send(), intervalMs);
544
+ // Tag-based invalidation.
545
+ let unsubTags = null;
546
+ try {
547
+ const mod = await vite.ssrLoadModule(liveFile);
548
+ if (Array.isArray(mod.liveTags) && mod.liveTags.length > 0) {
549
+ const unsubs = mod.liveTags.map((tag) => subscribeToTag(tag, () => void send()));
550
+ unsubTags = () => unsubs.forEach((u) => u());
551
+ }
552
+ }
553
+ catch { /* no tags */ }
554
+ req.on("close", () => {
555
+ dead = true;
556
+ clearInterval(timer);
557
+ unsubTags?.();
558
+ });
559
+ return;
560
+ }
358
561
  // ── API routes (route.ts) ─────────────────────────────────────────────────
359
562
  // Browser navigations (Accept: text/html) skip API routing so a path can
360
563
  // serve both a React page AND an API endpoint (e.g. /activity as a page
@@ -602,5 +805,25 @@ export async function dev({ cwd, port = 3000, host = "localhost" }) {
602
805
  });
603
806
  await vite.listen();
604
807
  vite.printUrls();
808
+ // ── Watch app/ for route file additions/deletions ──────────────────────────
809
+ // Re-emit .alabjs/routes.d.ts so TypeScript picks up new routes immediately
810
+ // without needing a dev server restart. Also rebuilds the live component map.
811
+ const ROUTE_FILE_RE = /\.(page|server|live|layout)\.(tsx|ts)$|^(page|layout|error|loading|route)\.(tsx|ts)$/;
812
+ vite.watcher.on("add", (filePath) => {
813
+ if (!filePath.startsWith(appDir))
814
+ return;
815
+ if (!ROUTE_FILE_RE.test(filePath))
816
+ return;
817
+ void emitDevRouteTypes(cwd, appDir);
818
+ liveMap = buildLiveComponentMap(appDir);
819
+ });
820
+ vite.watcher.on("unlink", (filePath) => {
821
+ if (!filePath.startsWith(appDir))
822
+ return;
823
+ if (!ROUTE_FILE_RE.test(filePath))
824
+ return;
825
+ void emitDevRouteTypes(cwd, appDir);
826
+ liveMap = buildLiveComponentMap(appDir);
827
+ });
605
828
  }
606
829
  //# sourceMappingURL=dev.js.map