@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.
- package/.github/copilot-instructions.md +4 -2
- package/CHANGELOG.md +8 -0
- package/IMPLEMENTATION_PLAN.md +52 -10
- package/commits.txt +1 -1
- package/dist/cli/commands/preview-isr.d.ts +51 -0
- package/dist/cli/commands/preview-isr.d.ts.map +1 -0
- package/dist/cli/commands/preview-isr.js +104 -0
- package/dist/cli/commands/preview-isr.js.map +1 -0
- package/dist/cli/commands/preview.d.ts.map +1 -1
- package/dist/cli/commands/preview.js +65 -1
- package/dist/cli/commands/preview.js.map +1 -1
- package/dist/cli/create/index.js +22 -7
- package/dist/cli/create/index.js.map +1 -1
- package/dist/cli/create/templates/{ssr → shared}/app/pages/index.ts.tpl +1 -1
- package/dist/plugin/build-ssr.d.ts.map +1 -1
- package/dist/plugin/build-ssr.js +2 -205
- package/dist/plugin/build-ssr.js.map +1 -1
- package/dist/plugin/dev-server.d.ts +3 -0
- package/dist/plugin/dev-server.d.ts.map +1 -1
- package/dist/plugin/dev-server.js.map +1 -1
- package/dist/plugin/dts-generator.d.ts.map +1 -1
- package/dist/plugin/dts-generator.js +8 -1
- package/dist/plugin/dts-generator.js.map +1 -1
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +9 -1
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/transforms/auto-import.js +2 -2
- package/dist/plugin/transforms/auto-import.js.map +1 -1
- package/dist/plugin/virtual/routes.d.ts.map +1 -1
- package/dist/plugin/virtual/routes.js +95 -8
- package/dist/plugin/virtual/routes.js.map +1 -1
- package/dist/runtime/app-template.d.ts +1 -1
- package/dist/runtime/app-template.d.ts.map +1 -1
- package/dist/runtime/app-template.js +16 -4
- package/dist/runtime/app-template.js.map +1 -1
- package/dist/runtime/composables/index.d.ts +1 -0
- package/dist/runtime/composables/index.d.ts.map +1 -1
- package/dist/runtime/composables/index.js +1 -0
- package/dist/runtime/composables/index.js.map +1 -1
- package/dist/runtime/composables/use-runtime-config.d.ts +32 -0
- package/dist/runtime/composables/use-runtime-config.d.ts.map +1 -0
- package/dist/runtime/composables/use-runtime-config.js +41 -0
- package/dist/runtime/composables/use-runtime-config.js.map +1 -0
- package/dist/runtime/entry-server-template.d.ts +10 -4
- package/dist/runtime/entry-server-template.d.ts.map +1 -1
- package/dist/runtime/entry-server-template.js +67 -69
- package/dist/runtime/entry-server-template.js.map +1 -1
- package/dist/types/config.d.ts +24 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/page.d.ts +17 -0
- package/dist/types/page.d.ts.map +1 -1
- package/docs/composables.md +36 -0
- package/docs/configuration.md +52 -0
- package/docs/layouts.md +82 -0
- package/docs/rendering-modes.md +52 -11
- package/docs/routing.md +66 -0
- package/e2e/cypress/e2e/isr-nested-runtime.cy.ts +100 -0
- package/e2e/kitchen-sink/app/layouts/admin.ts +13 -0
- package/e2e/kitchen-sink/app/pages/admin/_layout.ts +1 -0
- package/e2e/kitchen-sink/app/pages/admin/dashboard.ts +11 -0
- package/e2e/kitchen-sink/app/pages/blog/[slug].ts +1 -0
- package/e2e/kitchen-sink/app/pages/isr-test.ts +17 -0
- package/e2e/kitchen-sink/cer.config.ts +5 -0
- package/package.json +1 -1
- package/src/__tests__/cli/preview-isr.test.ts +246 -0
- package/src/__tests__/plugin/build-ssr.test.ts +3 -120
- package/src/__tests__/plugin/dts-generator.test.ts +20 -0
- package/src/__tests__/plugin/entry-server-template.test.ts +106 -3
- package/src/__tests__/plugin/resolve-config.test.ts +15 -0
- package/src/__tests__/plugin/transforms/auto-import.test.ts +16 -0
- package/src/__tests__/plugin/virtual/routes.test.ts +195 -0
- package/src/__tests__/runtime/use-runtime-config.test.ts +59 -0
- package/src/cli/commands/preview-isr.ts +139 -0
- package/src/cli/commands/preview.ts +71 -2
- package/src/cli/create/index.ts +21 -7
- package/src/cli/create/templates/{spa → shared}/app/pages/index.ts.tpl +1 -1
- package/src/plugin/build-ssr.ts +2 -205
- package/src/plugin/dev-server.ts +1 -0
- package/src/plugin/dts-generator.ts +8 -1
- package/src/plugin/index.ts +11 -1
- package/src/plugin/transforms/auto-import.ts +2 -2
- package/src/plugin/virtual/routes.ts +106 -9
- package/src/runtime/app-template.ts +16 -4
- package/src/runtime/composables/index.ts +1 -0
- package/src/runtime/composables/use-runtime-config.ts +40 -0
- package/src/runtime/entry-server-template.ts +67 -69
- package/src/types/config.ts +26 -0
- package/src/types/index.ts +1 -1
- package/src/types/page.ts +17 -0
- package/dist/cli/create/templates/spa/app/pages/index.ts.tpl +0 -8
- package/dist/cli/create/templates/ssg/app/pages/index.ts.tpl +0 -8
- package/dist/cli/create/templates/ssr/.gitignore.tpl +0 -25
- package/dist/cli/create/templates/ssr/app/layouts/default.ts.tpl +0 -15
- package/dist/cli/create/templates/ssr/index.html.tpl +0 -12
- package/dist/cli/create/templates/ssr/tsconfig.json.tpl +0 -3
- package/src/cli/create/templates/spa/.gitignore.tpl +0 -25
- package/src/cli/create/templates/spa/app/layouts/default.ts.tpl +0 -15
- package/src/cli/create/templates/spa/index.html.tpl +0 -12
- package/src/cli/create/templates/spa/tsconfig.json.tpl +0 -3
- package/src/cli/create/templates/ssg/.gitignore.tpl +0 -25
- package/src/cli/create/templates/ssg/app/layouts/default.ts.tpl +0 -15
- package/src/cli/create/templates/ssg/app/pages/index.ts.tpl +0 -8
- package/src/cli/create/templates/ssg/index.html.tpl +0 -12
- package/src/cli/create/templates/ssg/tsconfig.json.tpl +0 -3
- package/src/cli/create/templates/ssr/.gitignore.tpl +0 -25
- package/src/cli/create/templates/ssr/app/layouts/default.ts.tpl +0 -15
- package/src/cli/create/templates/ssr/app/pages/index.ts.tpl +0 -8
- package/src/cli/create/templates/ssr/index.html.tpl +0 -12
- package/src/cli/create/templates/ssr/tsconfig.json.tpl +0 -3
- /package/dist/cli/create/templates/{spa → shared}/.gitignore.tpl +0 -0
- /package/dist/cli/create/templates/{spa → shared}/app/layouts/default.ts.tpl +0 -0
- /package/dist/cli/create/templates/{spa → shared}/index.html.tpl +0 -0
- /package/dist/cli/create/templates/{spa → shared}/tsconfig.json.tpl +0 -0
- /package/{dist/cli/create/templates/ssg → src/cli/create/templates/shared}/.gitignore.tpl +0 -0
- /package/{dist/cli/create/templates/ssg → src/cli/create/templates/shared}/app/layouts/default.ts.tpl +0 -0
- /package/{dist/cli/create/templates/ssg → src/cli/create/templates/shared}/index.html.tpl +0 -0
- /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
|
|
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)
|
package/IMPLEMENTATION_PLAN.md
CHANGED
|
@@ -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
|
-
|
|
349
|
-
|
|
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
|
-
-
|
|
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;
|
|
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
|
-
//
|
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAA6C,MAAM,WAAW,CAAA;AACvG,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../src/cli/commands/preview.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/create/index.js
CHANGED
|
@@ -92,10 +92,16 @@ async function writeTemplateFiles(files, targetDir, tokens) {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
|
-
* Returns the path to the template directory
|
|
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
|
|
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
|
|
128
|
-
|
|
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 ${
|
|
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 =
|
|
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 +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;
|
|
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"}
|