@takazudo/zfb-runtime 0.1.0-next.7 → 0.1.0-next.70
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/CHANGELOG.md +6 -0
- package/README.md +139 -6
- package/dist/client-router/events.d.ts.map +1 -1
- package/dist/client-router/events.js +2 -2
- package/dist/client-router/events.js.map +1 -1
- package/dist/client-router/index.js +0 -1
- package/dist/client-router/index.js.map +1 -1
- package/dist/client-router/prefetch.d.ts.map +1 -1
- package/dist/client-router/prefetch.js +107 -53
- package/dist/client-router/prefetch.js.map +1 -1
- package/dist/client-router/router.d.ts.map +1 -1
- package/dist/client-router/router.js +206 -19
- package/dist/client-router/router.js.map +1 -1
- package/dist/client-router/swap-functions.d.ts.map +1 -1
- package/dist/client-router/swap-functions.js +36 -4
- package/dist/client-router/swap-functions.js.map +1 -1
- package/dist/client-router.d.ts +21 -1
- package/dist/client-router.d.ts.map +1 -1
- package/dist/client-router.js +46 -20
- package/dist/client-router.js.map +1 -1
- package/dist/router.d.ts +17 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +171 -33
- package/dist/router.js.map +1 -1
- package/package.json +12 -4
- package/dist/client-router/cssesc.d.ts +0 -9
- package/dist/client-router/cssesc.d.ts.map +0 -1
- package/dist/client-router/cssesc.js +0 -95
- package/dist/client-router/cssesc.js.map +0 -1
package/dist/client-router.js
CHANGED
|
@@ -12,21 +12,29 @@
|
|
|
12
12
|
// via `init()`. The component calls `init()` as a side effect on first import.
|
|
13
13
|
// No inline <script> dangerouslySetInnerHTML is emitted.
|
|
14
14
|
//
|
|
15
|
-
//
|
|
16
|
-
// `@takazudo/zfb-runtime` does not depend on
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
15
|
+
// Framework-agnostic element minting (no JSX syntax):
|
|
16
|
+
// `@takazudo/zfb-runtime` does not depend on a framework runtime. Head nodes
|
|
17
|
+
// are minted by calling `jsx` from `react/jsx-runtime` directly — NOT JSX
|
|
18
|
+
// syntax, so this stays a plain `.ts` file with no tsconfig JSX changes. The
|
|
19
|
+
// engine alias-rewrites `react/jsx-runtime` → `preact/jsx-runtime` in Preact
|
|
20
|
+
// mode (bundler.rs ~2886) and resolves it natively in React mode, so the same
|
|
21
|
+
// call mints a real element for whichever framework the project configured.
|
|
22
|
+
// The previous approach (a hand-rolled `{ type, props, key, constructor:
|
|
23
|
+
// undefined }` object literal — the Preact diff-path sentinel) only worked for
|
|
24
|
+
// Preact: React's renderer rejects such an object as a child with React error
|
|
25
|
+
// #31 ("Objects are not valid as a React child"), because a real React element
|
|
26
|
+
// carries `$$typeof: Symbol.for("react.element")` a literal cannot fake. Same
|
|
27
|
+
// migration as `Island` in @takazudo/zfb.
|
|
22
28
|
//
|
|
23
|
-
// The component renders three sibling elements to <head
|
|
29
|
+
// The component renders three base sibling elements to <head> (plus optional
|
|
30
|
+
// metas emitted conditionally — see `prefetchDisabled` and `preserveHtmlAttrs`):
|
|
24
31
|
// 1. A <style> tag with the `.zfb-route-announcer` ARIA helper class.
|
|
25
32
|
// 2. <meta name="zfb-view-transitions-enabled" content="true" />
|
|
26
33
|
// 3. <meta name="zfb-view-transitions-fallback" content={fallback} />
|
|
27
34
|
//
|
|
28
35
|
// The route-announcer <div> is injected into <body> by `announce()` in
|
|
29
36
|
// `client-router/router.ts` on every navigation.
|
|
37
|
+
import { jsx } from "react/jsx-runtime";
|
|
30
38
|
import { init } from "./client-router/router.js";
|
|
31
39
|
import { init as prefetchInit } from "./client-router/prefetch.js";
|
|
32
40
|
// Side-effect: wire click + submit intercepts on first import of this component.
|
|
@@ -39,14 +47,23 @@ if (typeof document !== "undefined") {
|
|
|
39
47
|
// lifetime even if <ClientRouter prefetchAll /> is mounted multiple times (#276).
|
|
40
48
|
let prefetchBootstrapped = false;
|
|
41
49
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
50
|
+
* Mint a head element through the per-project JSX runtime.
|
|
51
|
+
*
|
|
52
|
+
* Calls `jsx` from `react/jsx-runtime` (alias-rewritten to
|
|
53
|
+
* `preact/jsx-runtime` in Preact mode by the engine, native in React mode)
|
|
54
|
+
* so the returned value is a real element for whichever framework the
|
|
55
|
+
* project configured — NOT a hand-rolled `{ type, props, key }` literal,
|
|
56
|
+
* which only Preact accepts and which makes React throw error #31. A stable
|
|
57
|
+
* `key` is passed because `ClientRouter()` returns these nodes in a plain
|
|
58
|
+
* array (React warns about keyless list children otherwise). Mirrors the
|
|
59
|
+
* `Island` migration in `@takazudo/zfb`.
|
|
45
60
|
*/
|
|
46
|
-
function makeVNode(type, props) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
61
|
+
function makeVNode(type, props, key) {
|
|
62
|
+
// `jsx`'s `type` param is typed `ElementType` (string-literal intrinsic
|
|
63
|
+
// tags or component types), which rejects an arbitrary runtime `string`.
|
|
64
|
+
// The tag is dynamic here, so cast to the factory's own first-param type —
|
|
65
|
+
// robust whether the engine aliases `jsx` to react or preact at build time.
|
|
66
|
+
return jsx(type, props, key);
|
|
50
67
|
}
|
|
51
68
|
// CSS for the route-announcer element. Ported verbatim from Astro's
|
|
52
69
|
// `<style is:global>` block in ClientRouter.astro (lines 11–23), renaming
|
|
@@ -81,7 +98,7 @@ const announcerCss = `
|
|
|
81
98
|
* <ClientRouter fallback="animate" />
|
|
82
99
|
* ```
|
|
83
100
|
*/
|
|
84
|
-
export function ClientRouter({ fallback = "animate", prefetchAll: prefetchAllProp = false, } = {}) {
|
|
101
|
+
export function ClientRouter({ fallback = "animate", prefetchAll: prefetchAllProp = false, preserveHtmlAttrs = [], } = {}) {
|
|
85
102
|
// Bootstrap prefetch exactly once on the client when prefetchAll is true.
|
|
86
103
|
// The initialized flag inside prefetchInit() provides a second safety layer
|
|
87
104
|
// in case of concurrent hydration or manual callers (#276).
|
|
@@ -91,11 +108,11 @@ export function ClientRouter({ fallback = "animate", prefetchAll: prefetchAllPro
|
|
|
91
108
|
}
|
|
92
109
|
const nodes = [
|
|
93
110
|
// Global styles for the ARIA route-announcer div injected into <body>.
|
|
94
|
-
makeVNode("style", { dangerouslySetInnerHTML: { __html: announcerCss } }),
|
|
111
|
+
makeVNode("style", { dangerouslySetInnerHTML: { __html: announcerCss } }, "zfb-vt-style"),
|
|
95
112
|
// Opt-in meta tag: router checks for this to decide whether to intercept navigations.
|
|
96
|
-
makeVNode("meta", { name: "zfb-view-transitions-enabled", content: "true" }),
|
|
113
|
+
makeVNode("meta", { name: "zfb-view-transitions-enabled", content: "true" }, "zfb-vt-enabled"),
|
|
97
114
|
// Fallback strategy meta tag: read by getFallback() in router.ts.
|
|
98
|
-
makeVNode("meta", { name: "zfb-view-transitions-fallback", content: fallback }),
|
|
115
|
+
makeVNode("meta", { name: "zfb-view-transitions-fallback", content: fallback }, "zfb-vt-fallback"),
|
|
99
116
|
];
|
|
100
117
|
// Prefetch-disabled meta tag (#277): emitted when the bundler set
|
|
101
118
|
// `globalThis.__zfb.prefetchDisabled = true` (from `zfb.config.ts`
|
|
@@ -110,7 +127,16 @@ export function ClientRouter({ fallback = "animate", prefetchAll: prefetchAllPro
|
|
|
110
127
|
// Pin the contract verbatim — the attribute names and content value are
|
|
111
128
|
// shared with the sibling prefetch-core sub-issue (#276).
|
|
112
129
|
if (globalThis.__zfb?.prefetchDisabled === true) {
|
|
113
|
-
nodes.push(makeVNode("meta", { name: "zfb-prefetch-disabled", content: "true" }));
|
|
130
|
+
nodes.push(makeVNode("meta", { name: "zfb-prefetch-disabled", content: "true" }, "zfb-prefetch-disabled"));
|
|
131
|
+
}
|
|
132
|
+
// Consumer-extensible <html> attribute preserve-list (#1103). swapRootAttributes
|
|
133
|
+
// reads this meta and re-applies the listed attributes' runtime values after each
|
|
134
|
+
// swap, so persisted-island state on <html> (data-theme, data-sidebar-hidden, …)
|
|
135
|
+
// survives navigation. Emitted only when non-empty, so non-opt-in output stays
|
|
136
|
+
// byte-identical. Same conditional-emission shape as the prefetch-disabled meta.
|
|
137
|
+
const preserveList = preserveHtmlAttrs.filter(Boolean);
|
|
138
|
+
if (preserveList.length > 0) {
|
|
139
|
+
nodes.push(makeVNode("meta", { name: "zfb-preserve-html-attrs", content: preserveList.join(" ") }, "zfb-preserve-html-attrs"));
|
|
114
140
|
}
|
|
115
141
|
return nodes;
|
|
116
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-router.js","sourceRoot":"","sources":["../src/client-router.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,wDAAwD;AACxD,uDAAuD;AACvD,yEAAyE;AACzE,EAAE;AACF,2DAA2D;AAC3D,2EAA2E;AAC3E,6EAA6E;AAC7E,2EAA2E;AAC3E,+EAA+E;AAC/E,iFAAiF;AACjF,2DAA2D;AAC3D,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"client-router.js","sourceRoot":"","sources":["../src/client-router.ts"],"names":[],"mappings":"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"}
|
package/dist/router.d.ts
CHANGED
|
@@ -30,6 +30,12 @@ export interface PageHeading {
|
|
|
30
30
|
* for this route template. May be async. Returns an array of
|
|
31
31
|
* `{ params, props? }` objects identical in shape to the Astro/zfb
|
|
32
32
|
* `paths()` contract.
|
|
33
|
+
* **Evaluated once per router instance** — the result is memoised and
|
|
34
|
+
* shared across the `/__paths__` handler and all per-page render
|
|
35
|
+
* requests. This matches the build-time-enumerator contract: every
|
|
36
|
+
* entry rendered within a single build sees the same paths() snapshot.
|
|
37
|
+
* Dev mode is safe because each file-save triggers a fresh bundle,
|
|
38
|
+
* which creates a new router instance with a clean memo.
|
|
33
39
|
* - `getStaticProps`: optional async function for static routes that need
|
|
34
40
|
* to fetch data at build/render time. Called once per request (before
|
|
35
41
|
* `default`). Must return `{ props: Record<string, unknown> }`. The
|
|
@@ -69,6 +75,17 @@ export interface CreatePageRouterOptions {
|
|
|
69
75
|
readonly contentSnapshot: ContentSnapshot;
|
|
70
76
|
/** Framework adapter pinning the SSR call. */
|
|
71
77
|
readonly framework: FrameworkAdapter;
|
|
78
|
+
/**
|
|
79
|
+
* When `true`, the 500 body for render errors includes the full JS stack
|
|
80
|
+
* trace. When `false`, only the message + route are included. When
|
|
81
|
+
* omitted, the runtime checks `globalThis.__zfb.ssrDebug` at request time:
|
|
82
|
+
* that flag is set by the embedded V8 build/dev host (`globals_shim.js`)
|
|
83
|
+
* and is absent on the production Cloudflare Workers runtime.
|
|
84
|
+
*
|
|
85
|
+
* Default is effectively OFF for production (no flag ⇒ message + route only).
|
|
86
|
+
* Useful for explicit injection in unit tests without global mutation.
|
|
87
|
+
*/
|
|
88
|
+
readonly includeErrorStack?: boolean;
|
|
72
89
|
}
|
|
73
90
|
/**
|
|
74
91
|
* Fetch-handler shape returned by [`createPageRouter`]. Shaped as a plain
|
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMrD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMrD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;CAC7E;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;CAC5C;AAED,gDAAgD;AAChD,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC;;;;;;;;;OASG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAwEjE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,UAAU,CAuT1E"}
|
package/dist/router.js
CHANGED
|
@@ -48,6 +48,55 @@ import { setContentSnapshot } from "@takazudo/zfb/content";
|
|
|
48
48
|
* verbatim because the embedded V8 host does NOT auto-set a charset.
|
|
49
49
|
*/
|
|
50
50
|
const DEFAULT_CONTENT_TYPE = "text/html; charset=utf-8";
|
|
51
|
+
/**
|
|
52
|
+
* Issue #530: prepend `<!doctype html>\n` to SSR-rendered HTML bodies that
|
|
53
|
+
* lack a doctype declaration, mirroring the guard in
|
|
54
|
+
* `crates/zfb-build/src/renderer.rs::render_one_inner` (issue #524).
|
|
55
|
+
*
|
|
56
|
+
* Gate conditions (all must hold to prepend):
|
|
57
|
+
* 1. `contentType` media-type (before `;`) is `text/html` (case-insensitive).
|
|
58
|
+
* 2. The body, after stripping an optional UTF-8 BOM (U+FEFF) and leading
|
|
59
|
+
* ASCII whitespace, starts with `<html` (case-insensitive) — i.e. it is
|
|
60
|
+
* an `<html>`-rooted document, not XML / JSON / a fragment.
|
|
61
|
+
* 3. The body (same stripped prefix) does NOT already begin with `<!doctype`
|
|
62
|
+
* (case-insensitive).
|
|
63
|
+
*
|
|
64
|
+
* Deliberately NOT shared with the Rust side — duplication of a 5-line guard
|
|
65
|
+
* is the right call rather than introducing a new cross-language boundary.
|
|
66
|
+
*/
|
|
67
|
+
function ensureHtml5Doctype(body, contentType) {
|
|
68
|
+
const mediaType = contentType.split(";")[0]?.trim().toLowerCase();
|
|
69
|
+
if (mediaType !== "text/html")
|
|
70
|
+
return body;
|
|
71
|
+
// Strip optional BOM and leading whitespace to inspect the root element.
|
|
72
|
+
const stripped = body.replace(/^/, "").trimStart();
|
|
73
|
+
if (!stripped.toLowerCase().startsWith("<!doctype")) {
|
|
74
|
+
if (stripped.toLowerCase().startsWith("<html")) {
|
|
75
|
+
return `<!doctype html>\n${body}`;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return body;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Evaluate `pathsFn` once per `routeKey`, sharing the result across all
|
|
82
|
+
* concurrent and subsequent callers via a Promise stored in `memo`.
|
|
83
|
+
*
|
|
84
|
+
* Rejections are evicted from the memo so that a transient paths() failure
|
|
85
|
+
* does not permanently poison the cache — the next request retries.
|
|
86
|
+
*/
|
|
87
|
+
async function getOrEvalPaths(memo, routeKey, pathsFn) {
|
|
88
|
+
const existing = memo.get(routeKey);
|
|
89
|
+
if (existing !== undefined) {
|
|
90
|
+
return existing;
|
|
91
|
+
}
|
|
92
|
+
const promise = Promise.resolve(pathsFn()).then((v) => v, (err) => {
|
|
93
|
+
// Evict on rejection so the next request retries.
|
|
94
|
+
memo.delete(routeKey);
|
|
95
|
+
return Promise.reject(err);
|
|
96
|
+
});
|
|
97
|
+
memo.set(routeKey, promise);
|
|
98
|
+
return promise;
|
|
99
|
+
}
|
|
51
100
|
/**
|
|
52
101
|
* Build a page router for the SSG-first architecture (ADR-005).
|
|
53
102
|
*
|
|
@@ -75,6 +124,21 @@ export function createPageRouter(opts) {
|
|
|
75
124
|
for (const page of opts.pages) {
|
|
76
125
|
pagesByRoute.set(page.route, page);
|
|
77
126
|
}
|
|
127
|
+
// Per-router-instance memo for paths() results.
|
|
128
|
+
//
|
|
129
|
+
// Keyed on page.route (e.g. "/blog/:slug"). Stores the in-flight or
|
|
130
|
+
// settled Promise so that concurrent requests share one evaluation.
|
|
131
|
+
// Rejections are NOT cached: if paths() throws the Promise is removed
|
|
132
|
+
// from the map so the next request retries rather than re-propagating
|
|
133
|
+
// the same error indefinitely.
|
|
134
|
+
//
|
|
135
|
+
// Production SSR isolates evaluate paths() once per isolate, which
|
|
136
|
+
// matches the documented build-time-enumerator contract. Dev mode is
|
|
137
|
+
// safe because each re-bundle creates a fresh router instance
|
|
138
|
+
// (dev.rs reload_renderer), so stale paths() results never persist
|
|
139
|
+
// across a file-save cycle. Watch-time invalidation is explicitly
|
|
140
|
+
// out of scope per issue #507.
|
|
141
|
+
const pathsMemo = new Map();
|
|
78
142
|
// Sanity check: a user-authored route that happens to start with
|
|
79
143
|
// `/__paths__` (or a top-level catchall like `/:slug{.+}`) would
|
|
80
144
|
// shadow the synthetic endpoint registered below if Hono dispatched
|
|
@@ -124,7 +188,7 @@ export function createPageRouter(opts) {
|
|
|
124
188
|
}
|
|
125
189
|
let result;
|
|
126
190
|
try {
|
|
127
|
-
result = await mod.paths
|
|
191
|
+
result = await getOrEvalPaths(pathsMemo, routeKey, mod.paths);
|
|
128
192
|
}
|
|
129
193
|
catch (err) {
|
|
130
194
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -164,14 +228,28 @@ export function createPageRouter(opts) {
|
|
|
164
228
|
// an empty object — the component signature has no required props.
|
|
165
229
|
// For dynamic routes whose URL params do not match any paths()
|
|
166
230
|
// entry, we return a 404 rather than rendering with empty props.
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
231
|
+
//
|
|
232
|
+
// Whether the route is dynamic is derived from the ROUTE PATTERN,
|
|
233
|
+
// not from the captured params: for an optional catchall
|
|
234
|
+
// (`/docs/:slug{.+}?`), Hono matches the bare `/docs` with NO
|
|
235
|
+
// params captured at all, so `Object.keys(c.req.param())` would
|
|
236
|
+
// be empty and the old gate skipped paths() entirely — rendering
|
|
237
|
+
// with `{}` instead of the entry whose `slug` is `[]`.
|
|
238
|
+
const declaredParams = routeParamSpecs(page.route);
|
|
239
|
+
const rawUrlParams = c.req.param() ?? {};
|
|
240
|
+
const urlParams = {};
|
|
241
|
+
for (const [k, v] of Object.entries(rawUrlParams)) {
|
|
242
|
+
// Unmatched optional params may surface as undefined — drop them
|
|
243
|
+
// so "param absent" is represented uniformly.
|
|
244
|
+
if (typeof v === "string")
|
|
245
|
+
urlParams[k] = v;
|
|
246
|
+
}
|
|
247
|
+
const isDynamicRoute = declaredParams.length > 0;
|
|
170
248
|
let componentInput = {};
|
|
171
|
-
if (
|
|
249
|
+
if (isDynamicRoute && typeof mod.paths === "function") {
|
|
172
250
|
let pathsResult;
|
|
173
251
|
try {
|
|
174
|
-
pathsResult = await mod.paths
|
|
252
|
+
pathsResult = await getOrEvalPaths(pathsMemo, page.route, mod.paths);
|
|
175
253
|
}
|
|
176
254
|
catch (err) {
|
|
177
255
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -197,15 +275,27 @@ export function createPageRouter(opts) {
|
|
|
197
275
|
// /docs/[...slug]), Hono returns a slash-joined string (e.g.
|
|
198
276
|
// "guides/install"), so we compare against the paths() entry's
|
|
199
277
|
// params.slug joined with "/".
|
|
278
|
+
//
|
|
279
|
+
// Matching iterates the params DECLARED by the route pattern so
|
|
280
|
+
// the zero-segment optional-catchall case is covered: when Hono
|
|
281
|
+
// matched `/docs` for `/docs/:slug{.+}?` no `slug` param exists
|
|
282
|
+
// in the URL, and the matching entry is the one whose param is
|
|
283
|
+
// the explicit empty array (`{ slug: [] }`).
|
|
200
284
|
const match = pathsResult.find((entry) => {
|
|
201
|
-
return
|
|
202
|
-
const
|
|
285
|
+
return declaredParams.every(({ name, optionalCatchall }) => {
|
|
286
|
+
const urlVal = urlParams[name];
|
|
287
|
+
const paramVal = entry.params[name];
|
|
288
|
+
if (urlVal === undefined) {
|
|
289
|
+
// Param absent from the URL: only valid for an optional
|
|
290
|
+
// catchall, and only against the explicit `[]` entry.
|
|
291
|
+
return optionalCatchall && Array.isArray(paramVal) && paramVal.length === 0;
|
|
292
|
+
}
|
|
203
293
|
if (Array.isArray(paramVal)) {
|
|
204
294
|
// catchall: paths() emits slug as string[] but Hono
|
|
205
295
|
// provides it as a "/"-joined string
|
|
206
|
-
return paramVal.join("/") ===
|
|
296
|
+
return paramVal.join("/") === urlVal;
|
|
207
297
|
}
|
|
208
|
-
return String(paramVal) ===
|
|
298
|
+
return String(paramVal) === urlVal;
|
|
209
299
|
});
|
|
210
300
|
});
|
|
211
301
|
if (!match) {
|
|
@@ -224,7 +314,7 @@ export function createPageRouter(opts) {
|
|
|
224
314
|
...(match.props ?? {}),
|
|
225
315
|
};
|
|
226
316
|
}
|
|
227
|
-
else if (!
|
|
317
|
+
else if (!isDynamicRoute && typeof mod.getStaticProps === "function") {
|
|
228
318
|
// Static route with `getStaticProps`: call it to fetch build-time
|
|
229
319
|
// data and pass the returned props to the default component. This
|
|
230
320
|
// supports the `export async function getStaticProps()` pattern
|
|
@@ -250,24 +340,44 @@ export function createPageRouter(opts) {
|
|
|
250
340
|
// `await` so async page modules (e.g. API routes typed as
|
|
251
341
|
// `(): Promise<Response>`) resolve before we inspect the value.
|
|
252
342
|
// For sync pages that return a VNode/string the await is a no-op.
|
|
253
|
-
|
|
254
|
-
//
|
|
255
|
-
//
|
|
256
|
-
//
|
|
257
|
-
//
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
343
|
+
//
|
|
344
|
+
// Wrapped in a try/catch so that any error thrown by the component
|
|
345
|
+
// or by renderToString surfaces as a descriptive 500 rather than
|
|
346
|
+
// escaping to Hono's generic error handler (which discards the real
|
|
347
|
+
// message). Mirrors the getStaticProps catch above.
|
|
348
|
+
try {
|
|
349
|
+
const result = await mod.default(componentInput);
|
|
350
|
+
// API route short-circuit: a page module that returns a Response
|
|
351
|
+
// directly (e.g. `pages/api/*.tsx` handlers that use Web Fetch
|
|
352
|
+
// primitives instead of returning JSX) is responsible for its own
|
|
353
|
+
// status, headers, and body — return it as-is rather than running
|
|
354
|
+
// it through the framework SSR path. A `return` from inside a
|
|
355
|
+
// `try` does not trigger the `catch`, so this passes through
|
|
356
|
+
// correctly without special-casing.
|
|
357
|
+
if (result instanceof Response) {
|
|
358
|
+
return result;
|
|
359
|
+
}
|
|
360
|
+
// Non-HTML routes (e.g. `sitemap.xml.tsx`, `feed.xml.tsx`) commonly
|
|
361
|
+
// return their body as a pre-serialised `string` instead of a
|
|
362
|
+
// VNode. Routing those through `framework.renderToString` would
|
|
363
|
+
// HTML-escape the angle brackets and ampersands, producing
|
|
364
|
+
// garbage XML. Pass strings through verbatim; only wrap actual
|
|
365
|
+
// VNodes.
|
|
366
|
+
const html = typeof result === "string" ? result : opts.framework.renderToString(result);
|
|
367
|
+
const contentType = mod.contentType ?? DEFAULT_CONTENT_TYPE;
|
|
368
|
+
return c.body(ensureHtml5Doctype(html, contentType), 200, { "Content-Type": contentType });
|
|
369
|
+
}
|
|
370
|
+
catch (err) {
|
|
371
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
372
|
+
// __zfb.ssrDebug is set only by the embedded V8 build/dev host
|
|
373
|
+
// (globals_shim.js), never by the production Workers runtime.
|
|
374
|
+
const includeStack = opts.includeErrorStack ??
|
|
375
|
+
globalThis.__zfb?.ssrDebug === true;
|
|
376
|
+
const stack = includeStack && err instanceof Error && err.stack ? `\n${err.stack}` : "";
|
|
377
|
+
return c.body(`[zfb-runtime] render threw for "${page.route}": ${msg}${stack}`, 500, {
|
|
378
|
+
"Content-Type": "text/plain; charset=utf-8",
|
|
379
|
+
});
|
|
261
380
|
}
|
|
262
|
-
// Non-HTML routes (e.g. `sitemap.xml.tsx`, `feed.xml.tsx`) commonly
|
|
263
|
-
// return their body as a pre-serialised `string` instead of a
|
|
264
|
-
// VNode. Routing those through `framework.renderToString` would
|
|
265
|
-
// HTML-escape the angle brackets and ampersands, producing
|
|
266
|
-
// garbage XML. Pass strings through verbatim; only wrap actual
|
|
267
|
-
// VNodes.
|
|
268
|
-
const html = typeof result === "string" ? result : opts.framework.renderToString(result);
|
|
269
|
-
const contentType = mod.contentType ?? DEFAULT_CONTENT_TYPE;
|
|
270
|
-
return c.body(html, 200, { "Content-Type": contentType });
|
|
271
381
|
});
|
|
272
382
|
}
|
|
273
383
|
// Hono's `app.fetch` returns `Response | Promise<Response>`. The
|
|
@@ -288,14 +398,39 @@ function isPathsEntry(x) {
|
|
|
288
398
|
const params = x.params;
|
|
289
399
|
return typeof params === "object" && params !== null;
|
|
290
400
|
}
|
|
401
|
+
/**
|
|
402
|
+
* Parse the params declared by a Hono route pattern (the `route` string
|
|
403
|
+
* the build pipeline registers, e.g. `/blog/:slug`, `/docs/:slug{.+}`,
|
|
404
|
+
* `/docs/:slug{.+}?`). Static routes return an empty list.
|
|
405
|
+
*
|
|
406
|
+
* Only the pattern shapes emitted by `bracket_to_hono` (zfb-build) are
|
|
407
|
+
* recognised — `:name`, `:name{.+}`, `:name{.+}?` — which is the entire
|
|
408
|
+
* grammar the file router produces.
|
|
409
|
+
*/
|
|
410
|
+
function routeParamSpecs(route) {
|
|
411
|
+
const specs = [];
|
|
412
|
+
for (const seg of route.split("/")) {
|
|
413
|
+
if (!seg.startsWith(":"))
|
|
414
|
+
continue;
|
|
415
|
+
const optionalCatchall = seg.endsWith("?");
|
|
416
|
+
const body = optionalCatchall ? seg.slice(1, -1) : seg.slice(1);
|
|
417
|
+
const braceIdx = body.indexOf("{");
|
|
418
|
+
const name = braceIdx === -1 ? body : body.slice(0, braceIdx);
|
|
419
|
+
if (name.length > 0) {
|
|
420
|
+
specs.push({ name, optionalCatchall });
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
return specs;
|
|
424
|
+
}
|
|
291
425
|
/**
|
|
292
426
|
* Heuristic check for user-authored routes that may shadow the
|
|
293
427
|
* synthetic `/__paths__/<encoded-route-key>` endpoint.
|
|
294
428
|
*
|
|
295
429
|
* Returns true when the route literal contains `/__paths__` (an
|
|
296
430
|
* obvious collision) or when its first segment is a Hono catchall
|
|
297
|
-
* (`:name{.+}
|
|
298
|
-
*
|
|
431
|
+
* (`:name{.+}`, optionally `:name{.+}?`) or a file-system catchall
|
|
432
|
+
* (`[...name]` / `[[...name]]`) at the root — those would match
|
|
433
|
+
* `/__paths__/...` once Hono dispatches to them.
|
|
299
434
|
*/
|
|
300
435
|
function routeShadowsPathsEndpoint(route) {
|
|
301
436
|
if (route.includes("/__paths__")) {
|
|
@@ -305,14 +440,17 @@ function routeShadowsPathsEndpoint(route) {
|
|
|
305
440
|
// anything deeper cannot match `/__paths__` because the literal
|
|
306
441
|
// first segment differs.
|
|
307
442
|
const firstSeg = route.replace(/^\/+/, "").split("/")[0] ?? "";
|
|
308
|
-
// Hono regex-quantifier catchall: `:name{.+}
|
|
309
|
-
if (/^:[A-Za-z_][\w]*\{\.[+*]\}
|
|
443
|
+
// Hono regex-quantifier catchall: `:name{.+}` / optional `:name{.+}?`.
|
|
444
|
+
if (/^:[A-Za-z_][\w]*\{\.[+*]\}\??$/.test(firstSeg)) {
|
|
310
445
|
return true;
|
|
311
446
|
}
|
|
312
|
-
// File-system catchall (pre-bracket-to-hono): `[...name]`.
|
|
447
|
+
// File-system catchall (pre-bracket-to-hono): `[...name]` / `[[...name]]`.
|
|
313
448
|
if (/^\[\.\.\.[A-Za-z_][\w]*\]$/.test(firstSeg)) {
|
|
314
449
|
return true;
|
|
315
450
|
}
|
|
451
|
+
if (/^\[\[\.\.\.[A-Za-z_][\w]*\]\]$/.test(firstSeg)) {
|
|
452
|
+
return true;
|
|
453
|
+
}
|
|
316
454
|
return false;
|
|
317
455
|
}
|
|
318
456
|
//# sourceMappingURL=router.js.map
|
package/dist/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@takazudo/zfb-runtime",
|
|
3
|
-
"version": "0.1.0-next.
|
|
3
|
+
"version": "0.1.0-next.70",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "JavaScript runtime for zfb static sites — Hono-backed page router, content snapshots, and client-side hydration.",
|
|
@@ -57,17 +57,25 @@
|
|
|
57
57
|
"pnpm": ">=10.0.0"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"hono": "^4.
|
|
60
|
+
"hono": "^4.12.25"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
|
-
"
|
|
63
|
+
"react": "^19.2.3",
|
|
64
|
+
"@takazudo/zfb": "0.1.0-next.70"
|
|
65
|
+
},
|
|
66
|
+
"peerDependenciesMeta": {
|
|
67
|
+
"react": {
|
|
68
|
+
"optional": true
|
|
69
|
+
}
|
|
64
70
|
},
|
|
65
71
|
"devDependencies": {
|
|
66
72
|
"@types/node": "^22.0.0",
|
|
73
|
+
"@types/react": "^19.0.0",
|
|
67
74
|
"happy-dom": "^15.7.4",
|
|
75
|
+
"react": "^19.2.3",
|
|
68
76
|
"typescript": "^5.9.0",
|
|
69
77
|
"vitest": "^2.1.9",
|
|
70
|
-
"@takazudo/zfb": "0.1.0-next.
|
|
78
|
+
"@takazudo/zfb": "0.1.0-next.70"
|
|
71
79
|
},
|
|
72
80
|
"scripts": {
|
|
73
81
|
"build": "tsc",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cssesc.d.ts","sourceRoot":"","sources":["../../src/client-router/cssesc.ts"],"names":[],"mappings":"AAYA,UAAU,OAAO;IACf,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf;AASD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,OAAO,CAAM,UA4E5E"}
|