@takazudo/zfb-runtime 0.1.0-next.2
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 +8 -0
- package/LICENSE +21 -0
- package/README.md +237 -0
- package/dist/client-router/cssesc.d.ts +9 -0
- package/dist/client-router/cssesc.d.ts.map +1 -0
- package/dist/client-router/cssesc.js +95 -0
- package/dist/client-router/cssesc.js.map +1 -0
- package/dist/client-router/events.d.ts +42 -0
- package/dist/client-router/events.d.ts.map +1 -0
- package/dist/client-router/events.js +114 -0
- package/dist/client-router/events.js.map +1 -0
- package/dist/client-router/index.d.ts +9 -0
- package/dist/client-router/index.d.ts.map +1 -0
- package/dist/client-router/index.js +18 -0
- package/dist/client-router/index.js.map +1 -0
- package/dist/client-router/prefetch.d.ts +29 -0
- package/dist/client-router/prefetch.d.ts.map +1 -0
- package/dist/client-router/prefetch.js +288 -0
- package/dist/client-router/prefetch.js.map +1 -0
- package/dist/client-router/router.d.ts +17 -0
- package/dist/client-router/router.d.ts.map +1 -0
- package/dist/client-router/router.js +739 -0
- package/dist/client-router/router.js.map +1 -0
- package/dist/client-router/swap-functions.d.ts +22 -0
- package/dist/client-router/swap-functions.d.ts.map +1 -0
- package/dist/client-router/swap-functions.js +252 -0
- package/dist/client-router/swap-functions.js.map +1 -0
- package/dist/client-router/types.d.ts +11 -0
- package/dist/client-router/types.d.ts.map +1 -0
- package/dist/client-router/types.js +3 -0
- package/dist/client-router/types.js.map +1 -0
- package/dist/client-router.d.ts +36 -0
- package/dist/client-router.d.ts.map +1 -0
- package/dist/client-router.js +117 -0
- package/dist/client-router.js.map +1 -0
- package/dist/framework.d.ts +17 -0
- package/dist/framework.d.ts.map +1 -0
- package/dist/framework.js +17 -0
- package/dist/framework.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/router.d.ts +97 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +318 -0
- package/dist/router.js.map +1 -0
- package/dist/snapshot.d.ts +38 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +16 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/view-transitions.d.ts +34 -0
- package/dist/view-transitions.d.ts.map +1 -0
- package/dist/view-transitions.js +54 -0
- package/dist/view-transitions.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
/// <reference lib="dom" />
|
|
2
|
+
/// <reference lib="dom.iterable" />
|
|
3
|
+
// `@takazudo/zfb-runtime` — prefetch module.
|
|
4
|
+
//
|
|
5
|
+
// Ported from Astro's prefetch module (packages/astro/src/prefetch/index.ts).
|
|
6
|
+
// Source: https://github.com/withastro/astro
|
|
7
|
+
// Issue: Takazudo/zudo-front-builder#276
|
|
8
|
+
//
|
|
9
|
+
// Mechanical renames per W1B §13.5:
|
|
10
|
+
// astro:* event names → zfb:*
|
|
11
|
+
// data-astro-prefetch → data-zfb-prefetch
|
|
12
|
+
// __PREFETCH_DISABLED__ → <meta name="zfb-prefetch-disabled" content="true">
|
|
13
|
+
//
|
|
14
|
+
// DISABLED-FLAG CONTRACT — exact meta tag name and content value are locked:
|
|
15
|
+
// meta[name="zfb-prefetch-disabled"][content="true"]
|
|
16
|
+
// Both this module and sibling sub-issue #272-config pin this verbatim.
|
|
17
|
+
// Module-level state — persists across SPA navigations within a session.
|
|
18
|
+
let initialized = false;
|
|
19
|
+
let prefetchAll = false;
|
|
20
|
+
let defaultStrategy = "hover";
|
|
21
|
+
// Set of hrefs that have been completed or are in-flight.
|
|
22
|
+
const prefetched = new Set();
|
|
23
|
+
// Map of in-flight prefetch promises for dedup.
|
|
24
|
+
const inFlight = new Map();
|
|
25
|
+
// The viewport observer — retained across post-swap re-scans so new elements
|
|
26
|
+
// can be observed without recreating the observer.
|
|
27
|
+
let viewportObserver = null;
|
|
28
|
+
// Hover cancel handle — set when a pointerenter idle-callback fires, cleared on
|
|
29
|
+
// pointerleave before the callback executes.
|
|
30
|
+
const hoverCancelHandles = new Map();
|
|
31
|
+
/**
|
|
32
|
+
* Reset all module-level state. Exported for test isolation only — not part of
|
|
33
|
+
* the public API and not re-exported from any barrel.
|
|
34
|
+
*/
|
|
35
|
+
export function __resetForTests() {
|
|
36
|
+
initialized = false;
|
|
37
|
+
prefetchAll = false;
|
|
38
|
+
defaultStrategy = "hover";
|
|
39
|
+
prefetched.clear();
|
|
40
|
+
inFlight.clear();
|
|
41
|
+
if (viewportObserver) {
|
|
42
|
+
viewportObserver.disconnect();
|
|
43
|
+
viewportObserver = null;
|
|
44
|
+
}
|
|
45
|
+
hoverCancelHandles.clear();
|
|
46
|
+
}
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// Feature detection
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
function supportsLinkPrefetch() {
|
|
51
|
+
const link = document.createElement("link");
|
|
52
|
+
return link.relList?.supports?.("prefetch") ?? false;
|
|
53
|
+
}
|
|
54
|
+
function isSlowConnection() {
|
|
55
|
+
const nav = navigator;
|
|
56
|
+
return (nav.connection?.saveData === true ||
|
|
57
|
+
nav.connection?.effectiveType === "2g" ||
|
|
58
|
+
nav.connection?.effectiveType === "slow-2g");
|
|
59
|
+
}
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Core prefetch logic
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
/**
|
|
64
|
+
* Resolve an href to an absolute URL string keyed against the current origin.
|
|
65
|
+
* Returns null for cross-origin hrefs (these are skipped entirely).
|
|
66
|
+
*/
|
|
67
|
+
function resolveHref(href) {
|
|
68
|
+
try {
|
|
69
|
+
const url = new URL(href, location.href);
|
|
70
|
+
if (url.origin !== location.origin)
|
|
71
|
+
return null;
|
|
72
|
+
return url.href;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Execute a single prefetch for the given absolute href.
|
|
80
|
+
* Uses <link rel="prefetch"> (preferred) or fetch() fallback.
|
|
81
|
+
*/
|
|
82
|
+
function executePrefetch(href, opts) {
|
|
83
|
+
const existing = inFlight.get(href);
|
|
84
|
+
if (existing)
|
|
85
|
+
return existing;
|
|
86
|
+
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);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
await fetch(href, { priority: "low" });
|
|
96
|
+
}
|
|
97
|
+
prefetched.add(href);
|
|
98
|
+
inFlight.delete(href);
|
|
99
|
+
})();
|
|
100
|
+
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
|
+
return p;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Public prefetch function. Idempotent per href.
|
|
108
|
+
*/
|
|
109
|
+
export function prefetch(url, opts = {}) {
|
|
110
|
+
const href = resolveHref(url);
|
|
111
|
+
if (!href)
|
|
112
|
+
return; // cross-origin — skip
|
|
113
|
+
if (opts.ignoreSlowConnection !== true && isSlowConnection())
|
|
114
|
+
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"))
|
|
127
|
+
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
|
+
}
|
|
141
|
+
}
|
|
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);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
clearTimeout(handle);
|
|
154
|
+
}
|
|
155
|
+
hoverCancelHandles.delete(link);
|
|
156
|
+
}
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
// Trigger: tap (touchstart / mousedown)
|
|
159
|
+
// ---------------------------------------------------------------------------
|
|
160
|
+
function onTap(e) {
|
|
161
|
+
const link = e.target.closest("a[href]");
|
|
162
|
+
if (!link)
|
|
163
|
+
return;
|
|
164
|
+
if (!shouldPrefetchLink(link, "tap"))
|
|
165
|
+
return;
|
|
166
|
+
prefetch(link.href);
|
|
167
|
+
}
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
// Trigger: viewport (IntersectionObserver)
|
|
170
|
+
// ---------------------------------------------------------------------------
|
|
171
|
+
function initViewportObserver() {
|
|
172
|
+
if (viewportObserver)
|
|
173
|
+
return viewportObserver;
|
|
174
|
+
viewportObserver = new IntersectionObserver((entries) => {
|
|
175
|
+
for (const entry of entries) {
|
|
176
|
+
if (entry.isIntersecting) {
|
|
177
|
+
const link = entry.target;
|
|
178
|
+
prefetch(link.href);
|
|
179
|
+
// Once observed and in-flight, no need to keep observing.
|
|
180
|
+
viewportObserver?.unobserve(link);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}, { threshold: 0 });
|
|
184
|
+
return viewportObserver;
|
|
185
|
+
}
|
|
186
|
+
function observeViewportLinks() {
|
|
187
|
+
const observer = initViewportObserver();
|
|
188
|
+
const selector = prefetchAll && defaultStrategy === "viewport"
|
|
189
|
+
? "a[href]:not([data-zfb-prefetch='false'])"
|
|
190
|
+
: "a[data-zfb-prefetch='viewport']";
|
|
191
|
+
document.querySelectorAll(selector).forEach((link) => {
|
|
192
|
+
const href = resolveHref(link.href);
|
|
193
|
+
if (href && !prefetched.has(href)) {
|
|
194
|
+
observer.observe(link);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
// Trigger: load (requestIdleCallback after DOMContentLoaded)
|
|
200
|
+
// ---------------------------------------------------------------------------
|
|
201
|
+
function prefetchLoadLinks() {
|
|
202
|
+
const selector = prefetchAll && defaultStrategy === "load"
|
|
203
|
+
? "a[href]:not([data-zfb-prefetch='false'])"
|
|
204
|
+
: "a[data-zfb-prefetch='load']";
|
|
205
|
+
document.querySelectorAll(selector).forEach((link) => {
|
|
206
|
+
const href = resolveHref(link.href);
|
|
207
|
+
if (!href || prefetched.has(href))
|
|
208
|
+
return;
|
|
209
|
+
if (typeof requestIdleCallback !== "undefined") {
|
|
210
|
+
requestIdleCallback(() => prefetch(link.href));
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
setTimeout(() => prefetch(link.href), 0);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
// ---------------------------------------------------------------------------
|
|
218
|
+
// Per-link strategy resolution
|
|
219
|
+
// ---------------------------------------------------------------------------
|
|
220
|
+
/**
|
|
221
|
+
* Determine whether a given link should be prefetched for the supplied trigger strategy.
|
|
222
|
+
* Returns false if:
|
|
223
|
+
* - data-zfb-prefetch="false" (always disabled)
|
|
224
|
+
* - The effective strategy for this link doesn't match the active trigger
|
|
225
|
+
*/
|
|
226
|
+
function shouldPrefetchLink(link, triggerStrategy) {
|
|
227
|
+
const attr = link.dataset["zfbPrefetch"];
|
|
228
|
+
// Explicitly disabled.
|
|
229
|
+
if (attr === "false")
|
|
230
|
+
return false;
|
|
231
|
+
// Per-link explicit strategy.
|
|
232
|
+
if (attr && attr !== "false") {
|
|
233
|
+
return attr === triggerStrategy;
|
|
234
|
+
}
|
|
235
|
+
// No explicit attribute — rely on prefetchAll + defaultStrategy.
|
|
236
|
+
if (!prefetchAll)
|
|
237
|
+
return false;
|
|
238
|
+
return defaultStrategy === triggerStrategy;
|
|
239
|
+
}
|
|
240
|
+
// ---------------------------------------------------------------------------
|
|
241
|
+
// Post-swap re-scan
|
|
242
|
+
// ---------------------------------------------------------------------------
|
|
243
|
+
function onAfterSwap() {
|
|
244
|
+
observeViewportLinks();
|
|
245
|
+
prefetchLoadLinks();
|
|
246
|
+
}
|
|
247
|
+
// ---------------------------------------------------------------------------
|
|
248
|
+
// init()
|
|
249
|
+
// ---------------------------------------------------------------------------
|
|
250
|
+
/**
|
|
251
|
+
* Initialize the prefetch module.
|
|
252
|
+
*
|
|
253
|
+
* Idempotent — multiple calls are safe. The module-level `initialized` flag
|
|
254
|
+
* ensures listeners are registered exactly once.
|
|
255
|
+
*
|
|
256
|
+
* DISABLED-FLAG CONTRACT: if `<meta name="zfb-prefetch-disabled" content="true">`
|
|
257
|
+
* is present in the document at init() time, this function is a no-op.
|
|
258
|
+
*/
|
|
259
|
+
export function init(options) {
|
|
260
|
+
// Disabled-flag check — exact selector is the contract with #272-config.
|
|
261
|
+
if (document.querySelector('meta[name="zfb-prefetch-disabled"][content="true"]')) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
if (initialized)
|
|
265
|
+
return;
|
|
266
|
+
initialized = true;
|
|
267
|
+
prefetchAll = options?.prefetchAll ?? false;
|
|
268
|
+
defaultStrategy = options?.defaultStrategy ?? "hover";
|
|
269
|
+
// Hover + tap — document delegation, picks up SPA-inserted links automatically.
|
|
270
|
+
document.addEventListener("pointerenter", onPointerEnter, { capture: true });
|
|
271
|
+
document.addEventListener("focusin", onPointerEnter, { capture: true });
|
|
272
|
+
document.addEventListener("pointerleave", onPointerLeave, { capture: true });
|
|
273
|
+
document.addEventListener("touchstart", onTap, { capture: true, passive: true });
|
|
274
|
+
document.addEventListener("mousedown", onTap, { capture: true });
|
|
275
|
+
// Viewport — observe current links immediately.
|
|
276
|
+
observeViewportLinks();
|
|
277
|
+
// Load — queue current links via idle callback.
|
|
278
|
+
const queueLoad = () => prefetchLoadLinks();
|
|
279
|
+
if (document.readyState === "loading") {
|
|
280
|
+
document.addEventListener("DOMContentLoaded", queueLoad, { once: true });
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
queueLoad();
|
|
284
|
+
}
|
|
285
|
+
// Post-swap re-scan — re-walk viewport + load links after each SPA navigation.
|
|
286
|
+
document.addEventListener("zfb:after-swap", onAfterSwap);
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=prefetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefetch.js","sourceRoot":"","sources":["../../src/client-router/prefetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Fallback, Options } from "./types.js";
|
|
2
|
+
export declare const supportsViewTransitions: boolean;
|
|
3
|
+
export declare const transitionEnabledOnThisPage: () => boolean;
|
|
4
|
+
export declare function getFallback(): Fallback;
|
|
5
|
+
export declare function navigate(href: string, options?: Options): Promise<void>;
|
|
6
|
+
export interface InitOptions {
|
|
7
|
+
/** Reserved for forward-compat with Astro's prefetch integration. Ignored in v1. */
|
|
8
|
+
prefetchAll?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Wire up the client-router's click and form-submit intercepts.
|
|
12
|
+
* Safe to call multiple times — subsequent calls are no-ops (idempotent).
|
|
13
|
+
*
|
|
14
|
+
* @param _options - Forward-compat hook matching Astro's init() signature. Ignored in v1.
|
|
15
|
+
*/
|
|
16
|
+
export declare function init(_options?: InitOptions): void;
|
|
17
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +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"}
|