@jasonshimmy/vite-plugin-cer-app 0.4.5 → 0.5.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 (120) hide show
  1. package/.github/copilot-instructions.md +4 -2
  2. package/CHANGELOG.md +8 -0
  3. package/IMPLEMENTATION_PLAN.md +52 -10
  4. package/commits.txt +1 -1
  5. package/dist/cli/commands/preview-isr.d.ts +51 -0
  6. package/dist/cli/commands/preview-isr.d.ts.map +1 -0
  7. package/dist/cli/commands/preview-isr.js +104 -0
  8. package/dist/cli/commands/preview-isr.js.map +1 -0
  9. package/dist/cli/commands/preview.d.ts.map +1 -1
  10. package/dist/cli/commands/preview.js +65 -1
  11. package/dist/cli/commands/preview.js.map +1 -1
  12. package/dist/cli/create/index.js +22 -7
  13. package/dist/cli/create/index.js.map +1 -1
  14. package/dist/cli/create/templates/{ssr → shared}/app/pages/index.ts.tpl +1 -1
  15. package/dist/plugin/build-ssr.d.ts.map +1 -1
  16. package/dist/plugin/build-ssr.js +2 -205
  17. package/dist/plugin/build-ssr.js.map +1 -1
  18. package/dist/plugin/dev-server.d.ts +3 -0
  19. package/dist/plugin/dev-server.d.ts.map +1 -1
  20. package/dist/plugin/dev-server.js.map +1 -1
  21. package/dist/plugin/dts-generator.d.ts.map +1 -1
  22. package/dist/plugin/dts-generator.js +8 -1
  23. package/dist/plugin/dts-generator.js.map +1 -1
  24. package/dist/plugin/index.d.ts.map +1 -1
  25. package/dist/plugin/index.js +9 -1
  26. package/dist/plugin/index.js.map +1 -1
  27. package/dist/plugin/transforms/auto-import.js +2 -2
  28. package/dist/plugin/transforms/auto-import.js.map +1 -1
  29. package/dist/plugin/virtual/routes.d.ts.map +1 -1
  30. package/dist/plugin/virtual/routes.js +95 -8
  31. package/dist/plugin/virtual/routes.js.map +1 -1
  32. package/dist/runtime/app-template.d.ts +1 -1
  33. package/dist/runtime/app-template.d.ts.map +1 -1
  34. package/dist/runtime/app-template.js +16 -4
  35. package/dist/runtime/app-template.js.map +1 -1
  36. package/dist/runtime/composables/index.d.ts +1 -0
  37. package/dist/runtime/composables/index.d.ts.map +1 -1
  38. package/dist/runtime/composables/index.js +1 -0
  39. package/dist/runtime/composables/index.js.map +1 -1
  40. package/dist/runtime/composables/use-runtime-config.d.ts +32 -0
  41. package/dist/runtime/composables/use-runtime-config.d.ts.map +1 -0
  42. package/dist/runtime/composables/use-runtime-config.js +41 -0
  43. package/dist/runtime/composables/use-runtime-config.js.map +1 -0
  44. package/dist/runtime/entry-server-template.d.ts +10 -4
  45. package/dist/runtime/entry-server-template.d.ts.map +1 -1
  46. package/dist/runtime/entry-server-template.js +67 -69
  47. package/dist/runtime/entry-server-template.js.map +1 -1
  48. package/dist/types/config.d.ts +24 -0
  49. package/dist/types/config.d.ts.map +1 -1
  50. package/dist/types/config.js.map +1 -1
  51. package/dist/types/index.d.ts +1 -1
  52. package/dist/types/index.d.ts.map +1 -1
  53. package/dist/types/page.d.ts +17 -0
  54. package/dist/types/page.d.ts.map +1 -1
  55. package/docs/composables.md +36 -0
  56. package/docs/configuration.md +52 -0
  57. package/docs/layouts.md +82 -0
  58. package/docs/rendering-modes.md +52 -11
  59. package/docs/routing.md +66 -0
  60. package/e2e/cypress/e2e/isr-nested-runtime.cy.ts +100 -0
  61. package/e2e/kitchen-sink/app/layouts/admin.ts +13 -0
  62. package/e2e/kitchen-sink/app/pages/admin/_layout.ts +1 -0
  63. package/e2e/kitchen-sink/app/pages/admin/dashboard.ts +11 -0
  64. package/e2e/kitchen-sink/app/pages/blog/[slug].ts +1 -0
  65. package/e2e/kitchen-sink/app/pages/isr-test.ts +17 -0
  66. package/e2e/kitchen-sink/cer.config.ts +5 -0
  67. package/package.json +1 -1
  68. package/src/__tests__/cli/preview-isr.test.ts +246 -0
  69. package/src/__tests__/plugin/build-ssr.test.ts +3 -120
  70. package/src/__tests__/plugin/dts-generator.test.ts +20 -0
  71. package/src/__tests__/plugin/entry-server-template.test.ts +106 -3
  72. package/src/__tests__/plugin/resolve-config.test.ts +15 -0
  73. package/src/__tests__/plugin/transforms/auto-import.test.ts +16 -0
  74. package/src/__tests__/plugin/virtual/routes.test.ts +195 -0
  75. package/src/__tests__/runtime/use-runtime-config.test.ts +59 -0
  76. package/src/cli/commands/preview-isr.ts +139 -0
  77. package/src/cli/commands/preview.ts +71 -2
  78. package/src/cli/create/index.ts +21 -7
  79. package/src/cli/create/templates/{spa → shared}/app/pages/index.ts.tpl +1 -1
  80. package/src/plugin/build-ssr.ts +2 -205
  81. package/src/plugin/dev-server.ts +1 -0
  82. package/src/plugin/dts-generator.ts +8 -1
  83. package/src/plugin/index.ts +11 -1
  84. package/src/plugin/transforms/auto-import.ts +2 -2
  85. package/src/plugin/virtual/routes.ts +106 -9
  86. package/src/runtime/app-template.ts +16 -4
  87. package/src/runtime/composables/index.ts +1 -0
  88. package/src/runtime/composables/use-runtime-config.ts +40 -0
  89. package/src/runtime/entry-server-template.ts +67 -69
  90. package/src/types/config.ts +26 -0
  91. package/src/types/index.ts +1 -1
  92. package/src/types/page.ts +17 -0
  93. package/dist/cli/create/templates/spa/app/pages/index.ts.tpl +0 -8
  94. package/dist/cli/create/templates/ssg/app/pages/index.ts.tpl +0 -8
  95. package/dist/cli/create/templates/ssr/.gitignore.tpl +0 -25
  96. package/dist/cli/create/templates/ssr/app/layouts/default.ts.tpl +0 -15
  97. package/dist/cli/create/templates/ssr/index.html.tpl +0 -12
  98. package/dist/cli/create/templates/ssr/tsconfig.json.tpl +0 -3
  99. package/src/cli/create/templates/spa/.gitignore.tpl +0 -25
  100. package/src/cli/create/templates/spa/app/layouts/default.ts.tpl +0 -15
  101. package/src/cli/create/templates/spa/index.html.tpl +0 -12
  102. package/src/cli/create/templates/spa/tsconfig.json.tpl +0 -3
  103. package/src/cli/create/templates/ssg/.gitignore.tpl +0 -25
  104. package/src/cli/create/templates/ssg/app/layouts/default.ts.tpl +0 -15
  105. package/src/cli/create/templates/ssg/app/pages/index.ts.tpl +0 -8
  106. package/src/cli/create/templates/ssg/index.html.tpl +0 -12
  107. package/src/cli/create/templates/ssg/tsconfig.json.tpl +0 -3
  108. package/src/cli/create/templates/ssr/.gitignore.tpl +0 -25
  109. package/src/cli/create/templates/ssr/app/layouts/default.ts.tpl +0 -15
  110. package/src/cli/create/templates/ssr/app/pages/index.ts.tpl +0 -8
  111. package/src/cli/create/templates/ssr/index.html.tpl +0 -12
  112. package/src/cli/create/templates/ssr/tsconfig.json.tpl +0 -3
  113. /package/dist/cli/create/templates/{spa → shared}/.gitignore.tpl +0 -0
  114. /package/dist/cli/create/templates/{spa → shared}/app/layouts/default.ts.tpl +0 -0
  115. /package/dist/cli/create/templates/{spa → shared}/index.html.tpl +0 -0
  116. /package/dist/cli/create/templates/{spa → shared}/tsconfig.json.tpl +0 -0
  117. /package/{dist/cli/create/templates/ssg → src/cli/create/templates/shared}/.gitignore.tpl +0 -0
  118. /package/{dist/cli/create/templates/ssg → src/cli/create/templates/shared}/app/layouts/default.ts.tpl +0 -0
  119. /package/{dist/cli/create/templates/ssg → src/cli/create/templates/shared}/index.html.tpl +0 -0
  120. /package/{dist/cli/create/templates/ssg → src/cli/create/templates/shared}/tsconfig.json.tpl +0 -0
@@ -92,7 +92,7 @@ All documentation written in the docs directory should be:
92
92
  - Implement guard clauses to handle preconditions and invalid states early.
93
93
  - Use custom error types for consistent error handling.
94
94
 
95
- ## Key Conventions
95
+ ## Key Conventions - NON-NEGOTIABLE
96
96
 
97
97
  - NEVER GUESS OR ASSUME! Always make informed decisions based on available data in a project.
98
98
  - Always use strongly typed TypeScript.
@@ -106,7 +106,9 @@ All documentation written in the docs directory should be:
106
106
  - Always write tests for your code.
107
107
  - Always follow best practices in coding, security, and performance.
108
108
  - Always validate assumptions with actual data.
109
- - ALWAYS validate code with `npm run validate`.
109
+ - ALWAYS add new unit and e2e/integration tests for any new functionality.
110
+ - ALWAYS document new functionality in the project's documentation files.
111
+ - ALWAYS have the user validate all changes with `npm run validate` and report results back to you.
110
112
  - A change can only be considered complete when it meets all the above criteria and has been thoroughly tested and reviewed. THIS IS NON-NEGOTIABLE.
111
113
 
112
114
  ## Methodology
package/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
1
  # Changelog
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
+ ## [v0.5.0] - 2026-03-21
5
+
6
+ - feat: add runtime configuration support and ISR enhancements (847cd25)
7
+
8
+ ## [v0.4.6] - 2026-03-21
9
+
10
+ - fix: merge extraneous templates (7a859bd)
11
+
4
12
  ## [v0.4.5] - 2026-03-21
5
13
 
6
14
  - fix: remove the dsd config option since we always want it on anyway. (3698886)
@@ -271,7 +271,7 @@ handler and the SSG pipeline. Deferred to sprint 2.
271
271
 
272
272
  ## Phase 6 — Production Features (sprint 2–3)
273
273
 
274
- ### 6.1 ISR — Incremental Static Regeneration 🔜
274
+ ### 6.1 ISR — Incremental Static Regeneration
275
275
 
276
276
  **Problem:** `ssg.fallback: true` is in the config but not implemented.
277
277
  Without ISR, large sites must either SSR every request or rebuild on every
@@ -292,7 +292,7 @@ Requires a `revalidate` option per route (via `meta.ssg.revalidate: 60`).
292
292
 
293
293
  ---
294
294
 
295
- ### 6.2 Nested layouts 🔜
295
+ ### 6.2 Nested layouts
296
296
 
297
297
  **Problem:** All pages share a single layout level. A `/admin/*` section with
298
298
  its own sidebar inside the root layout requires copy-pasting layout structure
@@ -328,7 +328,7 @@ Build pipeline splits pages by strategy and applies the right renderer to each.
328
328
 
329
329
  ---
330
330
 
331
- ### 6.4 Link prefetching 🔜
331
+ ### 6.4 Link prefetching
332
332
 
333
333
  **Problem:** `<router-link>` doesn't prefetch route chunks on hover/visible.
334
334
 
@@ -342,11 +342,52 @@ This is a runtime change, not a plugin change.
342
342
 
343
343
  ---
344
344
 
345
- ### 6.5 Route transitions
345
+ ### 6.5 Route transitions
346
346
 
347
347
  The runtime already has `transition-group-handler.ts` and `transition-utils.ts`.
348
- The framework just needs a convention for configuring them via `meta.transition`.
349
- Deferred until layout wrapping is stable.
348
+ `meta.transition` is now extracted at build time and available on `route.meta`.
349
+
350
+ **Convention:** `export const meta = { transition: 'fade' }` in any page file.
351
+ Set to `true` for the default `'page'` transition name.
352
+
353
+ **Files:**
354
+ - `src/types/page.ts` — added `transition?: string | boolean` to `PageMeta`
355
+ - `src/plugin/virtual/routes.ts` — added `extractTransition()`, included in meta
356
+
357
+ ---
358
+
359
+ ## Phase 6b — Public env vars / runtimeConfig ✅
360
+
361
+ **Problem:** No typed, centralized place to expose env vars to both server and
362
+ client. Users had to use `import.meta.env.VITE_*` directly everywhere.
363
+
364
+ **Design:** Add `runtimeConfig.public` to `CerAppConfig`. Values are serialized
365
+ into `virtual:cer-app-config` at build time and accessible via `useRuntimeConfig()`.
366
+
367
+ ```ts
368
+ // cer.config.ts
369
+ export default defineConfig({
370
+ runtimeConfig: {
371
+ public: {
372
+ apiBase: process.env.VITE_API_BASE ?? '/api',
373
+ },
374
+ },
375
+ })
376
+
377
+ // any page or composable
378
+ const config = useRuntimeConfig()
379
+ fetch(config.public.apiBase + '/posts')
380
+ ```
381
+
382
+ **Files:**
383
+ - `src/types/config.ts` — added `RuntimeConfig`, `RuntimePublicConfig`, `runtimeConfig` to `CerAppConfig`
384
+ - `src/plugin/dev-server.ts` — added `runtimeConfig` to `ResolvedCerConfig`
385
+ - `src/plugin/index.ts` — `resolveConfig` + `generateAppConfigModule` emit `runtimeConfig`
386
+ - `src/runtime/composables/use-runtime-config.ts` — new `useRuntimeConfig()` + `initRuntimeConfig()`
387
+ - `src/runtime/composables/index.ts` — re-export
388
+ - `src/runtime/app-template.ts` — calls `initRuntimeConfig(runtimeConfig)` on boot
389
+ - `src/runtime/entry-server-template.ts` — same on server boot
390
+ - `src/plugin/dts-generator.ts` — `useRuntimeConfig` global + `virtual:cer-app-config` module decl
350
391
 
351
392
  ---
352
393
 
@@ -381,11 +422,12 @@ Cloudflare Workers / Deno Deploy adapter. Requires replacing Node's
381
422
  | 3.2 | Error page — `app/error.ts` | 1 | ✅ |
382
423
  | 4.1 | TypeScript path aliases | 1 | ✅ |
383
424
  | 5.1 | Data loader hydration | 2 | ✅ |
384
- | 6.1 | ISR | 2–3 | 🔜 |
385
- | 6.2 | Nested layouts | 2–3 | 🔜 |
425
+ | 6.1 | ISR | 2–3 | |
426
+ | 6.2 | Nested layouts | 2–3 | |
386
427
  | 6.3 | Per-route render strategy | 3 | 🔜 |
387
- | 6.4 | Link prefetching | 3 | 🔜 |
388
- | 6.5 | Route transitions | 3 | |
428
+ | 6.4 | Link prefetching | 3 | |
429
+ | 6.5 | Route transitions | 3 | |
430
+ | 6b | runtimeConfig / public env vars | 2 | ✅ |
389
431
  | 7.1 | DevTools | 4+ | ❌ |
390
432
  | 7.2 | i18n | 4+ | ❌ |
391
433
  | 7.3 | Edge runtime | 4+ | ❌ |
package/commits.txt CHANGED
@@ -1 +1 @@
1
- - fix: remove the dsd config option since we always want it on anyway. (3698886)
1
+ - feat: add runtime configuration support and ISR enhancements (847cd25)
@@ -0,0 +1,51 @@
1
+ /**
2
+ * ISR (Incremental Static Regeneration) helpers for the preview server.
3
+ *
4
+ * Extracted into their own module so they can be unit-tested independently
5
+ * from the HTTP server wiring in preview.ts.
6
+ */
7
+ import type { IncomingMessage, ServerResponse } from 'node:http';
8
+ export interface IsrCacheEntry {
9
+ html: string;
10
+ headers: Record<string, string>;
11
+ statusCode: number;
12
+ builtAt: number;
13
+ revalidate: number;
14
+ /** True while a background re-render is in flight (stale-while-revalidate). */
15
+ revalidating: boolean;
16
+ }
17
+ export type IsrCacheStatus = 'HIT' | 'STALE' | 'MISS';
18
+ export type SsrHandlerFn = (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
19
+ /**
20
+ * Tests whether a route path pattern matches a URL path string.
21
+ * Normalises trailing slashes and supports `:param` and `:param*` (catch-all)
22
+ * segments using a simple regex conversion — no external dependencies needed.
23
+ *
24
+ * @example
25
+ * matchRoutePattern('/blog/:slug', '/blog/hello') // true
26
+ * matchRoutePattern('/:all*', '/any/deep/path') // true
27
+ * matchRoutePattern('/about', '/contact') // false
28
+ */
29
+ export declare function matchRoutePattern(pattern: string, urlPath: string): boolean;
30
+ /**
31
+ * Looks up the `meta.ssg.revalidate` TTL (in seconds) for the route that best
32
+ * matches `urlPath`. Returns `null` when no route matches or none defines
33
+ * `revalidate`.
34
+ */
35
+ export declare function findRevalidate(routes: Array<{
36
+ path: string;
37
+ meta?: Record<string, unknown>;
38
+ }>, urlPath: string): number | null;
39
+ /**
40
+ * Renders a URL path through `handler` using a synthetic IncomingMessage and a
41
+ * fake ServerResponse that captures the output in memory.
42
+ *
43
+ * Returns an `IsrCacheEntry` on success, or `null` if the handler throws.
44
+ */
45
+ export declare function renderForIsr(urlPath: string, handler: SsrHandlerFn, revalidate: number): Promise<IsrCacheEntry | null>;
46
+ /**
47
+ * Writes a cached ISR entry to the real HTTP response, forwarding all captured
48
+ * headers and setting the `X-Cache` diagnostic header.
49
+ */
50
+ export declare function serveFromIsrCache(entry: IsrCacheEntry, res: ServerResponse, cacheStatus: IsrCacheStatus): void;
51
+ //# sourceMappingURL=preview-isr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-isr.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/preview-isr.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAIhE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,+EAA+E;IAC/E,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;AAErD,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAI9F;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAW3E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,EAC/D,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAQf;AAID;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAsC/B;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,cAAc,EACnB,WAAW,EAAE,cAAc,GAC1B,IAAI,CAON"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * ISR (Incremental Static Regeneration) helpers for the preview server.
3
+ *
4
+ * Extracted into their own module so they can be unit-tested independently
5
+ * from the HTTP server wiring in preview.ts.
6
+ */
7
+ import { Readable } from 'node:stream';
8
+ // ─── Route pattern matching ───────────────────────────────────────────────────
9
+ /**
10
+ * Tests whether a route path pattern matches a URL path string.
11
+ * Normalises trailing slashes and supports `:param` and `:param*` (catch-all)
12
+ * segments using a simple regex conversion — no external dependencies needed.
13
+ *
14
+ * @example
15
+ * matchRoutePattern('/blog/:slug', '/blog/hello') // true
16
+ * matchRoutePattern('/:all*', '/any/deep/path') // true
17
+ * matchRoutePattern('/about', '/contact') // false
18
+ */
19
+ export function matchRoutePattern(pattern, urlPath) {
20
+ const norm = (s) => s.replace(/\/+$/, '') || '/';
21
+ if (norm(pattern) === norm(urlPath))
22
+ return true;
23
+ const regexStr = '^' +
24
+ norm(pattern)
25
+ .replace(/[.+?^${}()|[\]\\]/g, '\\$&') // escape regex special chars in static segments
26
+ .replace(/:[^/]+\*/g, '.*')
27
+ .replace(/:[^/]+/g, '[^/]+') +
28
+ '$';
29
+ return new RegExp(regexStr).test(norm(urlPath));
30
+ }
31
+ /**
32
+ * Looks up the `meta.ssg.revalidate` TTL (in seconds) for the route that best
33
+ * matches `urlPath`. Returns `null` when no route matches or none defines
34
+ * `revalidate`.
35
+ */
36
+ export function findRevalidate(routes, urlPath) {
37
+ for (const route of routes) {
38
+ if (matchRoutePattern(route.path, urlPath)) {
39
+ const ssg = route.meta?.ssg;
40
+ if (typeof ssg?.revalidate === 'number')
41
+ return ssg.revalidate;
42
+ }
43
+ }
44
+ return null;
45
+ }
46
+ // ─── Response capture ─────────────────────────────────────────────────────────
47
+ /**
48
+ * Renders a URL path through `handler` using a synthetic IncomingMessage and a
49
+ * fake ServerResponse that captures the output in memory.
50
+ *
51
+ * Returns an `IsrCacheEntry` on success, or `null` if the handler throws.
52
+ */
53
+ export async function renderForIsr(urlPath, handler, revalidate) {
54
+ const req = Object.assign(new Readable({ read() { } }), {
55
+ url: urlPath,
56
+ method: 'GET',
57
+ headers: {},
58
+ socket: null,
59
+ });
60
+ return new Promise((resolve) => {
61
+ const chunks = [];
62
+ const headers = {};
63
+ let capturedStatus = 200;
64
+ const fakeRes = {
65
+ get statusCode() { return capturedStatus; },
66
+ set statusCode(v) { capturedStatus = v; },
67
+ headersSent: false,
68
+ setHeader(name, value) {
69
+ headers[name.toLowerCase()] = Array.isArray(value) ? value.join(', ') : String(value);
70
+ return this;
71
+ },
72
+ getHeader(name) { return headers[name.toLowerCase()]; },
73
+ write(chunk) {
74
+ if (chunk != null)
75
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));
76
+ return true;
77
+ },
78
+ end(chunk) {
79
+ if (chunk != null)
80
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));
81
+ const html = Buffer.concat(chunks).toString('utf-8');
82
+ resolve({ html, headers, statusCode: capturedStatus, builtAt: Date.now(), revalidate, revalidating: false });
83
+ return this;
84
+ },
85
+ };
86
+ // Use Promise.resolve().then() so synchronous throws in the handler are
87
+ // also caught by the .catch() handler.
88
+ Promise.resolve().then(() => handler(req, fakeRes)).catch(() => resolve(null));
89
+ });
90
+ }
91
+ // ─── Cache serving ────────────────────────────────────────────────────────────
92
+ /**
93
+ * Writes a cached ISR entry to the real HTTP response, forwarding all captured
94
+ * headers and setting the `X-Cache` diagnostic header.
95
+ */
96
+ export function serveFromIsrCache(entry, res, cacheStatus) {
97
+ for (const [name, value] of Object.entries(entry.headers)) {
98
+ res.setHeader(name, value);
99
+ }
100
+ res.setHeader('X-Cache', cacheStatus);
101
+ res.statusCode = entry.statusCode;
102
+ res.end(entry.html);
103
+ }
104
+ //# sourceMappingURL=preview-isr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-isr.js","sourceRoot":"","sources":["../../../src/cli/commands/preview-isr.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoFnC,wBAAgB,cAAc,IAAI,OAAO,CA0JxC"}
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6FnC,wBAAgB,cAAc,IAAI,OAAO,CAsNxC"}
@@ -3,6 +3,8 @@ import { createServer as createHttpServer } from 'node:http';
3
3
  import { createReadStream, existsSync, statSync } from 'node:fs';
4
4
  import { resolve, join, extname } from 'pathe';
5
5
  import { pathToFileURL } from 'node:url';
6
+ import { findRevalidate, renderForIsr, serveFromIsrCache, } from './preview-isr.js';
7
+ // ─── API route matching ───────────────────────────────────────────────────────
6
8
  /**
7
9
  * Matches an API route pattern (e.g. '/api/items/:id') against a URL path.
8
10
  * Returns a params object on match, or null if the pattern does not match.
@@ -95,6 +97,7 @@ export function previewCommand() {
95
97
  const useSSR = options.ssr || (hasServerBundle && !hasSsgManifest);
96
98
  if (useSSR && hasServerBundle) {
97
99
  console.log('[cer-app] Starting SSR preview server...');
100
+ // Load the server bundle
98
101
  let serverMod;
99
102
  try {
100
103
  serverMod = await import(pathToFileURL(serverBundle).href);
@@ -110,6 +113,12 @@ export function previewCommand() {
110
113
  }
111
114
  // API route array exported by the server bundle: [{ path, handlers }]
112
115
  const apiRoutes = Array.isArray(serverMod.apiRoutes) ? serverMod.apiRoutes : [];
116
+ // Page routes exported by the server bundle (used for ISR revalidate lookup).
117
+ const pageRoutes = Array.isArray(serverMod.routes)
118
+ ? serverMod.routes
119
+ : [];
120
+ // ISR cache: path → cached render entry.
121
+ const isrCache = new Map();
113
122
  const server = createHttpServer(async (req, res) => {
114
123
  const url = req.url ?? '/';
115
124
  const urlPath = url.split('?')[0];
@@ -155,7 +164,62 @@ export function previewCommand() {
155
164
  if (served)
156
165
  return;
157
166
  }
158
- // Fall through to SSR handler
167
+ // ISR: check whether this route has a revalidate TTL.
168
+ const revalidate = findRevalidate(pageRoutes, urlPath);
169
+ if (revalidate !== null) {
170
+ const cached = isrCache.get(urlPath);
171
+ const now = Date.now();
172
+ if (cached) {
173
+ const ageSeconds = (now - cached.builtAt) / 1000;
174
+ if (ageSeconds < cached.revalidate) {
175
+ // Fresh — serve from cache.
176
+ serveFromIsrCache(cached, res, 'HIT');
177
+ return;
178
+ }
179
+ // Stale — serve stale immediately, revalidate in background.
180
+ if (!cached.revalidating) {
181
+ cached.revalidating = true;
182
+ serveFromIsrCache(cached, res, 'STALE');
183
+ const revalidateTimeout = setTimeout(() => {
184
+ if (cached)
185
+ cached.revalidating = false;
186
+ }, 30_000);
187
+ renderForIsr(urlPath, handler, revalidate).then((entry) => {
188
+ clearTimeout(revalidateTimeout);
189
+ if (entry)
190
+ isrCache.set(urlPath, entry);
191
+ else if (cached)
192
+ cached.revalidating = false;
193
+ }).catch(() => {
194
+ clearTimeout(revalidateTimeout);
195
+ if (cached)
196
+ cached.revalidating = false;
197
+ });
198
+ return;
199
+ }
200
+ // Already revalidating — serve stale without spawning another render.
201
+ serveFromIsrCache(cached, res, 'STALE');
202
+ return;
203
+ }
204
+ // Cache miss — render, cache, then serve.
205
+ try {
206
+ const entry = await renderForIsr(urlPath, handler, revalidate);
207
+ if (entry) {
208
+ isrCache.set(urlPath, entry);
209
+ serveFromIsrCache(entry, res, 'HIT');
210
+ }
211
+ else {
212
+ await handler(req, res);
213
+ }
214
+ }
215
+ catch (err) {
216
+ console.error('[cer-app] ISR render error:', err);
217
+ res.statusCode = 500;
218
+ res.end('Internal Server Error');
219
+ }
220
+ return;
221
+ }
222
+ // Non-ISR: fall through to SSR handler directly.
159
223
  try {
160
224
  await handler(req, res);
161
225
  }
@@ -1 +1 @@
1
- {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../src/cli/commands/preview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../src/cli/commands/preview.ts"],"names":[],"mappings":"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"}
@@ -92,10 +92,16 @@ async function writeTemplateFiles(files, targetDir, tokens) {
92
92
  }
93
93
  }
94
94
  /**
95
- * Returns the path to the template directory for the given mode.
95
+ * Returns the path to the shared template directory (files common to all modes).
96
+ */
97
+ function getSharedTemplateDir() {
98
+ return join(__dirname, 'templates', 'shared');
99
+ }
100
+ /**
101
+ * Returns the path to the mode-specific template directory.
96
102
  * Resolves relative to the compiled dist output.
97
103
  */
98
- function getTemplateDir(mode) {
104
+ function getModeTemplateDir(mode) {
99
105
  // When running from compiled dist/, templates are in create/templates/
100
106
  // This file is at dist/cli/create/index.js, so templates are at dist/cli/create/templates/
101
107
  return join(__dirname, 'templates', mode);
@@ -123,15 +129,24 @@ async function main() {
123
129
  process.exit(0);
124
130
  }
125
131
  }
126
- // Load template files
127
- const templateDir = getTemplateDir(mode);
128
- if (!existsSync(templateDir)) {
132
+ // Load template files: shared first, then mode-specific (mode overrides shared)
133
+ const sharedDir = getSharedTemplateDir();
134
+ const modeDir = getModeTemplateDir(mode);
135
+ if (!existsSync(sharedDir) && !existsSync(modeDir)) {
129
136
  // Fallback: generate minimal template inline
130
- console.warn(`[create-cer-app] Template directory not found at ${templateDir}, using inline template.`);
137
+ console.warn(`[create-cer-app] Template directory not found at ${modeDir}, using inline template.`);
131
138
  await generateInlineTemplate(targetDir, projectName, mode);
132
139
  }
133
140
  else {
134
- const files = await readTemplateFiles(templateDir);
141
+ const files = new Map();
142
+ if (existsSync(sharedDir)) {
143
+ for (const [k, v] of await readTemplateFiles(sharedDir))
144
+ files.set(k, v);
145
+ }
146
+ if (existsSync(modeDir)) {
147
+ for (const [k, v] of await readTemplateFiles(modeDir))
148
+ files.set(k, v);
149
+ }
135
150
  await writeTemplateFiles(files, targetDir, { projectName });
136
151
  }
137
152
  console.log(`\nProject created! To get started:\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/create/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/create/index.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  component('page-index', () => {
2
2
  return html`
3
3
  <div>
4
- <h1>Welcome to {{projectName}}</h1>
4
+ <h1 class="text-2xl">Welcome to {{projectName}}</h1>
5
5
  <p>Edit <code>app/pages/index.ts</code> to get started.</p>
6
6
  </div>
7
7
  `
@@ -1 +1 @@
1
- {"version":3,"file":"build-ssr.d.ts","sourceRoot":"","sources":["../../src/plugin/build-ssr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAG7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGxD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAQpE;AAkND;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,iBAAiB,EACzB,cAAc,GAAE,UAAe,GAC9B,OAAO,CAAC,IAAI,CAAC,CA8Ef"}
1
+ {"version":3,"file":"build-ssr.d.ts","sourceRoot":"","sources":["../../src/plugin/build-ssr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAG7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAIxD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAQpE;AAMD;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,iBAAiB,EACzB,cAAc,GAAE,UAAe,GAC9B,OAAO,CAAC,IAAI,CAAC,CA8Ef"}