@takazudo/zfb-runtime 0.1.0-next.5 → 0.1.0-next.50

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 CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  > **Newer releases:** see https://takazudomodular.com/pj/zudo-front-builder/docs/changelog/ for v0.1.0-next.5 and later. Entries below are historical (kept for npm readers).
4
4
 
5
+ ## Unreleased
6
+
7
+ ### Performance
8
+
9
+ - **paths() memo** — `createPageRouter` now evaluates each dynamic route's `paths()` export exactly once per router instance. Previously, both the `GET /__paths__/<route>` build-pipeline call and every subsequent page render request invoked `paths()` independently, producing O(N²) work for an N-page dynamic route. The memo is shared between the `/__paths__` handler and the per-page render handler; rejections are not cached so a transient paths() failure retries on the next request. Production SSR isolates evaluate `paths()` once per isolate, matching the build-time-enumerator contract; dev mode is safe because each file-save creates a fresh router instance with a clean memo. (#974)
10
+
5
11
  ## 0.1.0-next.4
6
12
 
7
13
  Version bump for lockstep release. No API changes in `zfb-runtime` itself. Note: the content-snapshot flow fix (#442) touched `packages/zfb/src/content.ts`, which affects how the CLI calls `setContentSnapshot` — but the `zfb-runtime` API surface is unchanged.
package/README.md CHANGED
@@ -39,7 +39,9 @@ user pages/ + content/ + layouts/ + components/
39
39
 
40
40
  This package supplies the page-router factory the Worker entry calls. It
41
41
  is built on [Hono][hono] but does not leak Hono types through the public
42
- surface — consumers only see the four types in `src/index.ts`.
42
+ surface — consumers import from `src/index.ts`, which re-exports the
43
+ page-router types, the client-router and prefetch API, lifecycle event
44
+ constants, and plugin types, none of which require Hono.
43
45
 
44
46
  [hono]: https://hono.dev/
45
47
 
@@ -64,6 +66,35 @@ import type {
64
66
  } from "@takazudo/zfb-runtime";
65
67
  ```
66
68
 
69
+ ### Client-router / view-transitions / prefetch
70
+
71
+ ```ts
72
+ import {
73
+ ClientRouter, // <ClientRouter /> Preact component — mounts view-transition intercepts
74
+ navigate, // imperative navigation
75
+ supportsViewTransitions, // browser capability check
76
+ transitionEnabledOnThisPage, // reads zfb-view-transitions-enabled meta
77
+ prefetch, // prefetch a URL on demand
78
+ prefetchInit, // bootstrap prefetch strategy (e.g. { prefetchAll: true })
79
+ TRANSITION_BEFORE_PREPARATION,
80
+ TRANSITION_AFTER_PREPARATION,
81
+ TRANSITION_BEFORE_SWAP,
82
+ TRANSITION_AFTER_SWAP,
83
+ TRANSITION_PAGE_LOAD,
84
+ TRANSITION_NAVIGATION_ABORTED,
85
+ swapFunctions, // swap step overrides for advanced consumers
86
+ swap,
87
+ } from "@takazudo/zfb-runtime";
88
+ ```
89
+
90
+ The `./snapshot` and `./client-router` subpath exports are also available for
91
+ consumers that only need part of the surface:
92
+
93
+ ```ts
94
+ import type { ContentSnapshot } from "@takazudo/zfb-runtime/snapshot";
95
+ import { ClientRouter } from "@takazudo/zfb-runtime/client-router";
96
+ ```
97
+
67
98
  ### `createPageRouter(options) → PageRouter`
68
99
 
69
100
  Build a fetch-handler that serves the supplied pages. The returned
@@ -108,8 +139,10 @@ The shape every page module must export:
108
139
  interface PageModule {
109
140
  readonly default: (props: Record<string, unknown>) => unknown;
110
141
  readonly prerender?: boolean; // literal `false` excludes from SSG
111
- readonly content_type?: string; // overrides Content-Type (e.g. "application/xml")
142
+ readonly contentType?: string; // overrides Content-Type (e.g. "application/xml")
112
143
  readonly headings?: readonly PageHeading[]; // MDX-emitted TOC data
144
+ readonly paths?: () => unknown[] | Promise<unknown[]>; // enumerates concrete URLs for dynamic routes (SSG)
145
+ readonly getStaticProps?: () => Promise<{ props: Record<string, unknown> }>; // fetches props at build/render time; result spread into default()
113
146
  }
114
147
 
115
148
  interface PageHeading {
@@ -126,12 +159,9 @@ Default `Content-Type` is `text/html; charset=utf-8`.
126
159
  ```ts
127
160
  interface FrameworkAdapter {
128
161
  renderToString: (vnode: unknown) => string;
129
- hydrate?: (...args: unknown[]) => unknown; // reserved for follow-up SSR-with-hydration
130
162
  }
131
163
  ```
132
164
 
133
- `hydrate` is reserved — the page router does not call it today.
134
-
135
165
  ### `ContentSnapshot` / `EntrySnapshot`
136
166
 
137
167
  Direct TypeScript mirror of the Rust contract in
@@ -200,7 +230,7 @@ enumerated route and writing the response body to `dist/{route}/index.html`.
200
230
  - The returned function is **always** `(request: Request) => Promise<Response>`,
201
231
  even if the underlying Hono path returns synchronously.
202
232
  - `Content-Type` defaults to `text/html; charset=utf-8`. Page modules
203
- with a `content_type` field override it.
233
+ with a `contentType` field override it.
204
234
  - Errors in page evaluation surface as 500 responses with a diagnostic
205
235
  text body; the host's source-map plumbing projects those back to the
206
236
  user's TSX line.
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/client-router/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/client-router/events.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElE,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AACtE,eAAO,MAAM,4BAA4B,0BAA0B,CAAC;AACpE,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AACxD,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AACtD,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AACpD,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AAEtE,KAAK,MAAM,GACP,uBAAuB,GACvB,gBAAgB,GAChB,eAAe,GACf,wBAAwB,CAAC;AAC7B,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,YAA4C,CAAC;AACtF,eAAO,MAAM,UAAU,eAAsC,CAAC;AAK9D,cAAM,WAAY,SAAQ,KAAK;IAC7B,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB,EAAE,EAAE,GAAG,CAAC;IACR,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB,WAAW,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAG3B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,SAAS,GAAG,SAAS,EACpC,IAAI,EAAE,GAAG,EACT,EAAE,EAAE,GAAG,EACP,SAAS,EAAE,SAAS,GAAG,MAAM,EAC7B,cAAc,EAAE,oBAAoB,EACpC,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,IAAI,EAAE,GAAG,EACT,WAAW,EAAE,QAAQ,EACrB,MAAM,EAAE,WAAW;CAuBtB;AAMD,eAAO,MAAM,kCAAkC,GAC7C,OAAO,GAAG,KACT,KAAK,IAAI,gCACiF,CAAC;AAC9F,qBAAa,gCAAiC,SAAQ,WAAW;IAC/D,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE1B,IAAI,EAAE,GAAG,EACT,EAAE,EAAE,GAAG,EACP,SAAS,EAAE,SAAS,GAAG,MAAM,EAC7B,cAAc,EAAE,oBAAoB,EACpC,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,IAAI,EAAE,GAAG,EACT,WAAW,EAAE,QAAQ,EACrB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,MAAM,EAAE,CAAC,KAAK,EAAE,gCAAgC,KAAK,OAAO,CAAC,IAAI,CAAC;CAqBrE;AAKD,eAAO,MAAM,2BAA2B,GAAI,OAAO,GAAG,KAAG,KAAK,IAAI,yBACoB,CAAC;AACvF,qBAAa,yBAA0B,SAAQ,WAAW;IACxD,SAAkB,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC;IAChD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,IAAI,EAAE,MAAM,IAAI,CAAC;gBAEL,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc;CAuB1E;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,GAAG,EACT,EAAE,EAAE,GAAG,EACP,SAAS,EAAE,SAAS,GAAG,MAAM,EAC7B,cAAc,EAAE,oBAAoB,EACpC,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,aAAa,EAAE,CAAC,KAAK,EAAE,gCAAgC,KAAK,OAAO,CAAC,IAAI,CAAC,6CAyB1E;AAID,eAAO,MAAM,oBAAoB,GAAI,WAAW;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,SAKnF,CAAC;AAEF,wBAAsB,MAAM,CAC1B,gBAAgB,EAAE,WAAW,EAC7B,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,sCASpC"}
@@ -46,7 +46,7 @@ class BeforeEvent extends Event {
46
46
  * TransitionBeforePreparationEvent
47
47
 
48
48
  */
49
- export const isTransitionBeforePreparationEvent = (value) => value.type === TRANSITION_BEFORE_PREPARATION;
49
+ export const isTransitionBeforePreparationEvent = (value) => typeof value === "object" && value !== null && value.type === TRANSITION_BEFORE_PREPARATION;
50
50
  export class TransitionBeforePreparationEvent extends BeforeEvent {
51
51
  formData;
52
52
  loader;
@@ -63,7 +63,7 @@ export class TransitionBeforePreparationEvent extends BeforeEvent {
63
63
  /*
64
64
  * TransitionBeforeSwapEvent
65
65
  */
66
- export const isTransitionBeforeSwapEvent = (value) => value.type === TRANSITION_BEFORE_SWAP;
66
+ export const isTransitionBeforeSwapEvent = (value) => typeof value === "object" && value !== null && value.type === TRANSITION_BEFORE_SWAP;
67
67
  export class TransitionBeforeSwapEvent extends BeforeEvent {
68
68
  direction;
69
69
  viewTransition;
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/client-router/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/client-router/events.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,4 @@ export { navigate, supportsViewTransitions, transitionEnabledOnThisPage, init }
14
14
  // `init` from prefetch.ts is re-exported as `prefetchInit` to avoid colliding
15
15
  // with the router's `init` above.
16
16
  export { prefetch, init as prefetchInit } from "./prefetch.js";
17
- // (cssesc is an internal helper, not part of the public surface — not re-exported.)
18
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client-router/index.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,4EAA4E;AAC5E,4EAA4E;AAE5E,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAA0B,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,gCAAgC,EAChC,yBAAyB,EACzB,kCAAkC,EAClC,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE1D,yBAAyB;AACzB,sEAAsE;AACtE,oDAAoD;AACpD,yFAAyF;AACzF,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGnG,kCAAkC;AAClC,8EAA8E;AAC9E,kCAAkC;AAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAG/D,oFAAoF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client-router/index.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,4EAA4E;AAC5E,4EAA4E;AAE5E,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAA0B,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,gCAAgC,EAChC,yBAAyB,EACzB,kCAAkC,EAClC,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE1D,yBAAyB;AACzB,sEAAsE;AACtE,oDAAoD;AACpD,yFAAyF;AACzF,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGnG,kCAAkC;AAClC,8EAA8E;AAC9E,kCAAkC;AAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prefetch.d.ts","sourceRoot":"","sources":["../../src/client-router/prefetch.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB;AAoBD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAWtC;AAqED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI,CAStE;AAyJD;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAgCxD"}
1
+ {"version":3,"file":"prefetch.d.ts","sourceRoot":"","sources":["../../src/client-router/prefetch.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB;AA4BD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAYtC;AAkGD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI,CAStE;AA4LD;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAkCxD"}
@@ -18,16 +18,22 @@
18
18
  let initialized = false;
19
19
  let prefetchAll = false;
20
20
  let defaultStrategy = "hover";
21
- // Set of hrefs that have been completed or are in-flight.
21
+ // Set of hrefs that have been successfully prefetched.
22
22
  const prefetched = new Set();
23
- // Map of in-flight prefetch promises for dedup.
23
+ // Map of in-flight prefetch promises for dedup (also used as the concurrent short-circuit guard).
24
24
  const inFlight = new Map();
25
+ // How long to wait for a <link rel=prefetch>'s load/error before treating
26
+ // the prefetch as settled anyway (see executePrefetch).
27
+ const LINK_SETTLE_TIMEOUT_MS = 10_000;
25
28
  // The viewport observer — retained across post-swap re-scans so new elements
26
29
  // can be observed without recreating the observer.
27
30
  let viewportObserver = null;
28
31
  // Hover cancel handle — set when a pointerenter idle-callback fires, cleared on
29
32
  // pointerleave before the callback executes.
30
33
  const hoverCancelHandles = new Map();
34
+ // Focus cancel handle — set when a focusin idle-callback fires, cleared on
35
+ // focusout before the callback executes.
36
+ const focusCancelHandles = new Map();
31
37
  /**
32
38
  * Reset all module-level state. Exported for test isolation only — not part of
33
39
  * the public API and not re-exported from any barrel.
@@ -43,6 +49,7 @@ export function __resetForTests() {
43
49
  viewportObserver = null;
44
50
  }
45
51
  hoverCancelHandles.clear();
52
+ focusCancelHandles.clear();
46
53
  }
47
54
  // ---------------------------------------------------------------------------
48
55
  // Feature detection
@@ -84,23 +91,45 @@ function executePrefetch(href, opts) {
84
91
  if (existing)
85
92
  return existing;
86
93
  const p = (async () => {
87
- const method = opts.with ?? (supportsLinkPrefetch() ? "link" : "fetch");
88
- if (method === "link") {
89
- const link = document.createElement("link");
90
- link.rel = "prefetch";
91
- link.href = href;
92
- document.head.appendChild(link);
94
+ try {
95
+ const method = opts.with ?? (supportsLinkPrefetch() ? "link" : "fetch");
96
+ if (method === "link") {
97
+ const link = document.createElement("link");
98
+ link.rel = "prefetch";
99
+ link.href = href;
100
+ // Wait for load/error so we only mark success on actual load and allow
101
+ // retry after error — inserting without waiting would mark success
102
+ // immediately even on failure. (Bug: Takazudo/zudo-front-builder#896)
103
+ // Some browsers (e.g. Safari) never fire load/error on rel=prefetch
104
+ // links; without the settle timeout the href would sit in inFlight
105
+ // forever and block every future retry. Timing out counts as
106
+ // success — the resource was requested, which is all prefetch needs.
107
+ await new Promise((resolve, reject) => {
108
+ const timer = setTimeout(() => resolve(), LINK_SETTLE_TIMEOUT_MS);
109
+ link.addEventListener("load", () => {
110
+ clearTimeout(timer);
111
+ resolve();
112
+ }, { once: true });
113
+ link.addEventListener("error", () => {
114
+ clearTimeout(timer);
115
+ // Remove the failed element so retries don't accumulate
116
+ // dead <link> nodes in <head>.
117
+ link.remove();
118
+ reject(new Error(`prefetch link error: ${href}`));
119
+ }, { once: true });
120
+ document.head.appendChild(link);
121
+ });
122
+ }
123
+ else {
124
+ await fetch(href, { priority: "low" });
125
+ }
126
+ prefetched.add(href);
93
127
  }
94
- else {
95
- await fetch(href, { priority: "low" });
128
+ finally {
129
+ inFlight.delete(href);
96
130
  }
97
- prefetched.add(href);
98
- inFlight.delete(href);
99
131
  })();
100
132
  inFlight.set(href, p);
101
- // Also add to prefetched immediately to prevent concurrent triggers from
102
- // queuing duplicate in-flight entries before the async operation resolves.
103
- prefetched.add(href);
104
133
  return p;
105
134
  }
106
135
  /**
@@ -112,49 +141,65 @@ export function prefetch(url, opts = {}) {
112
141
  return; // cross-origin — skip
113
142
  if (opts.ignoreSlowConnection !== true && isSlowConnection())
114
143
  return;
115
- if (prefetched.has(href))
116
- return;
117
- void executePrefetch(href, opts);
118
- }
119
- // ---------------------------------------------------------------------------
120
- // Trigger: hover (pointerenter / focusin with cancel on pointerleave)
121
- // ---------------------------------------------------------------------------
122
- function onPointerEnter(e) {
123
- const link = e.target.closest("a[href]");
124
- if (!link)
125
- return;
126
- if (!shouldPrefetchLink(link, "hover"))
144
+ if (prefetched.has(href) || inFlight.has(href))
127
145
  return;
128
- // Use requestIdleCallback if available, else a small timeout.
129
- const fire = () => {
130
- hoverCancelHandles.delete(link);
131
- prefetch(link.href);
132
- };
133
- if (typeof requestIdleCallback !== "undefined") {
134
- const handle = requestIdleCallback(fire);
135
- hoverCancelHandles.set(link, handle);
136
- }
137
- else {
138
- const handle = setTimeout(fire, 100);
139
- hoverCancelHandles.set(link, handle);
140
- }
146
+ executePrefetch(href, opts).catch(() => { });
141
147
  }
142
- function onPointerLeave(e) {
143
- const link = e.target.closest("a[href]");
144
- if (!link)
145
- return;
146
- const handle = hoverCancelHandles.get(link);
147
- if (handle === undefined)
148
- return;
149
- if (typeof cancelIdleCallback !== "undefined") {
150
- cancelIdleCallback(handle);
148
+ /**
149
+ * Returns a pair of [enterHandler, leaveHandler] that queue and cancel an idle
150
+ * prefetch callback, keyed on the supplied per-trigger cancel-handle map.
151
+ *
152
+ * Both the pointer (hover) and focus triggers use identical queue/cancel logic;
153
+ * the only difference between them is which map tracks their pending handles.
154
+ * Parameterising by the map eliminates that duplication.
155
+ */
156
+ function makeEnterLeaveHandlers(cancelHandles) {
157
+ function enterHandler(e) {
158
+ const link = e.target.closest("a[href]");
159
+ if (!link)
160
+ return;
161
+ if (!shouldPrefetchLink(link, "hover"))
162
+ return;
163
+ // Use requestIdleCallback if available, else a small timeout.
164
+ const fire = () => {
165
+ cancelHandles.delete(link);
166
+ prefetch(link.href);
167
+ };
168
+ if (typeof requestIdleCallback !== "undefined") {
169
+ const handle = requestIdleCallback(fire);
170
+ cancelHandles.set(link, handle);
171
+ }
172
+ else {
173
+ const handle = setTimeout(fire, 100);
174
+ cancelHandles.set(link, handle);
175
+ }
151
176
  }
152
- else {
153
- clearTimeout(handle);
177
+ function leaveHandler(e) {
178
+ const link = e.target.closest("a[href]");
179
+ if (!link)
180
+ return;
181
+ const handle = cancelHandles.get(link);
182
+ if (handle === undefined)
183
+ return;
184
+ if (typeof cancelIdleCallback !== "undefined") {
185
+ cancelIdleCallback(handle);
186
+ }
187
+ else {
188
+ clearTimeout(handle);
189
+ }
190
+ cancelHandles.delete(link);
154
191
  }
155
- hoverCancelHandles.delete(link);
192
+ return [enterHandler, leaveHandler];
156
193
  }
157
194
  // ---------------------------------------------------------------------------
195
+ // Trigger: hover (pointerenter / pointerleave)
196
+ // ---------------------------------------------------------------------------
197
+ const [onPointerEnter, onPointerLeave] = makeEnterLeaveHandlers(hoverCancelHandles);
198
+ // ---------------------------------------------------------------------------
199
+ // Trigger: focus (focusin / focusout with cancel on focusout)
200
+ // ---------------------------------------------------------------------------
201
+ const [onFocusIn, onFocusOut] = makeEnterLeaveHandlers(focusCancelHandles);
202
+ // ---------------------------------------------------------------------------
158
203
  // Trigger: tap (touchstart / mousedown)
159
204
  // ---------------------------------------------------------------------------
160
205
  function onTap(e) {
@@ -241,6 +286,13 @@ function shouldPrefetchLink(link, triggerStrategy) {
241
286
  // Post-swap re-scan
242
287
  // ---------------------------------------------------------------------------
243
288
  function onAfterSwap() {
289
+ // Disconnect the existing observer before re-scanning so detached anchors from
290
+ // the old body are unobserved and don't accumulate across SPA swaps.
291
+ // (Bug: Takazudo/zudo-front-builder#896 — observer leak across SPA swaps)
292
+ if (viewportObserver) {
293
+ viewportObserver.disconnect();
294
+ viewportObserver = null;
295
+ }
244
296
  observeViewportLinks();
245
297
  prefetchLoadLinks();
246
298
  }
@@ -268,8 +320,10 @@ export function init(options) {
268
320
  defaultStrategy = options?.defaultStrategy ?? "hover";
269
321
  // Hover + tap — document delegation, picks up SPA-inserted links automatically.
270
322
  document.addEventListener("pointerenter", onPointerEnter, { capture: true });
271
- document.addEventListener("focusin", onPointerEnter, { capture: true });
272
323
  document.addEventListener("pointerleave", onPointerLeave, { capture: true });
324
+ // Focus — separate cancel map so hover and focus don't share handles.
325
+ document.addEventListener("focusin", onFocusIn, { capture: true });
326
+ document.addEventListener("focusout", onFocusOut, { capture: true });
273
327
  document.addEventListener("touchstart", onTap, { capture: true, passive: true });
274
328
  document.addEventListener("mousedown", onTap, { capture: true });
275
329
  // Viewport — observe current links immediately.
@@ -1 +1 @@
1
- {"version":3,"file":"prefetch.js","sourceRoot":"","sources":["../../src/client-router/prefetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prefetch.js","sourceRoot":"","sources":["../../src/client-router/prefetch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/client-router/router.ts"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAAa,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAgC/D,eAAO,MAAM,uBAAuB,SAA8C,CAAC;AAEnF,eAAO,MAAM,2BAA2B,eACwC,CAAC;AAwFjF,wBAAgB,WAAW,IAAI,QAAQ,CAMtC;AA2dD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,iBAe7D;AAsND,MAAM,WAAW,WAAW;IAC1B,oFAAoF;IACpF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAMD;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAYjD"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/client-router/router.ts"],"names":[],"mappings":"AA6DA,OAAO,KAAK,EAAa,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAgC/D,eAAO,MAAM,uBAAuB,SAA8C,CAAC;AAEnF,eAAO,MAAM,2BAA2B,eACwC,CAAC;AAmHjF,wBAAgB,WAAW,IAAI,QAAQ,CAMtC;AA0gBD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,iBA0B7D;AAkRD,MAAM,WAAW,WAAW;IAC1B,oFAAoF;IACpF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAMD;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAYjD"}