@nifrajs/web 2.2.0 → 2.4.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/README.md +3 -3
- package/dist/build-vite.d.ts +4 -4
- package/dist/build-vite.d.ts.map +1 -1
- package/dist/build-vite.js +20 -74
- package/dist/build-vite.js.map +1 -1
- package/dist/build.d.ts +64 -42
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +100 -78
- package/dist/build.js.map +1 -1
- package/dist/bun-dev-entry.d.ts +1 -1
- package/dist/bun-dev-entry.js +1 -1
- package/dist/chunk-names.js +1 -1
- package/dist/client.d.ts +3 -9
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +201 -29
- package/dist/client.js.map +1 -1
- package/dist/conformance.d.ts +2 -2
- package/dist/conformance.js +3 -3
- package/dist/deferred.d.ts +11 -11
- package/dist/deferred.d.ts.map +1 -1
- package/dist/deferred.js +16 -16
- package/dist/dev-diagnostics.d.ts +20 -0
- package/dist/dev-diagnostics.d.ts.map +1 -0
- package/dist/dev-diagnostics.js +34 -0
- package/dist/dev-diagnostics.js.map +1 -0
- package/dist/dev-error.d.ts +10 -13
- package/dist/dev-error.d.ts.map +1 -1
- package/dist/dev-error.js +51 -37
- package/dist/dev-error.js.map +1 -1
- package/dist/dev-port.d.ts +3 -3
- package/dist/dev-port.d.ts.map +1 -1
- package/dist/dev-port.js +10 -4
- package/dist/dev-port.js.map +1 -1
- package/dist/dev.d.ts +4 -4
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +28 -12
- package/dist/dev.js.map +1 -1
- package/dist/diagnostic.d.ts +93 -0
- package/dist/diagnostic.d.ts.map +1 -0
- package/dist/diagnostic.js +205 -0
- package/dist/diagnostic.js.map +1 -0
- package/dist/draft.d.ts +12 -12
- package/dist/draft.js +11 -11
- package/dist/fn-state.d.ts +56 -0
- package/dist/fn-state.d.ts.map +1 -0
- package/dist/fn-state.js +77 -0
- package/dist/fn-state.js.map +1 -0
- package/dist/fn.d.ts +111 -0
- package/dist/fn.d.ts.map +1 -0
- package/dist/fn.js +125 -0
- package/dist/fn.js.map +1 -0
- package/dist/fonts-google.d.ts +9 -9
- package/dist/fonts-google.js +10 -10
- package/dist/fonts.d.ts +7 -7
- package/dist/fonts.js +1 -1
- package/dist/forms.d.ts +8 -8
- package/dist/fs.d.ts +1 -1
- package/dist/fs.js +1 -1
- package/dist/index.d.ts +151 -70
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +317 -139
- package/dist/index.js.map +1 -1
- package/dist/internal/head-attributes.d.ts +15 -0
- package/dist/internal/head-attributes.d.ts.map +1 -0
- package/dist/internal/head-attributes.js +99 -0
- package/dist/internal/head-attributes.js.map +1 -0
- package/dist/internal/script-types.d.ts +14 -0
- package/dist/internal/script-types.d.ts.map +1 -0
- package/dist/internal/script-types.js +17 -0
- package/dist/internal/script-types.js.map +1 -0
- package/dist/internal/server-boundary.d.ts +60 -0
- package/dist/internal/server-boundary.d.ts.map +1 -0
- package/dist/internal/server-boundary.js +174 -0
- package/dist/internal/server-boundary.js.map +1 -0
- package/dist/internal/timing-safe-equal.d.ts +1 -1
- package/dist/internal/timing-safe-equal.js +1 -1
- package/dist/internal/vite-import.d.ts +63 -0
- package/dist/internal/vite-import.d.ts.map +1 -0
- package/dist/internal/vite-import.js +94 -0
- package/dist/internal/vite-import.js.map +1 -0
- package/dist/islands.d.ts +5 -5
- package/dist/islands.js +5 -5
- package/dist/isr.d.ts +15 -15
- package/dist/isr.js +7 -7
- package/dist/manifest.d.ts +73 -35
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +10 -16
- package/dist/manifest.js.map +1 -1
- package/dist/module-graph.d.ts +5 -5
- package/dist/module-graph.js +4 -4
- package/dist/navigation.d.ts +120 -5
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +37 -5
- package/dist/navigation.js.map +1 -1
- package/dist/plugins/css-modules.d.ts +3 -3
- package/dist/plugins/css-modules.js +0 -0
- package/dist/plugins/kit.d.ts +8 -8
- package/dist/plugins/kit.js +9 -9
- package/dist/plugins/scss.js +3 -3
- package/dist/plugins/vite-leak-guard.d.ts +1 -1
- package/dist/plugins/vite-leak-guard.js +1 -1
- package/dist/plugins/vite-server-fn.d.ts +23 -0
- package/dist/plugins/vite-server-fn.d.ts.map +1 -0
- package/dist/plugins/vite-server-fn.js +51 -0
- package/dist/plugins/vite-server-fn.js.map +1 -0
- package/dist/plugins/vite-server-only.d.ts +49 -0
- package/dist/plugins/vite-server-only.d.ts.map +1 -0
- package/dist/plugins/vite-server-only.js +57 -0
- package/dist/plugins/vite-server-only.js.map +1 -0
- package/dist/prerender.d.ts +5 -5
- package/dist/prerender.js +7 -7
- package/dist/query.d.ts +10 -10
- package/dist/query.js +15 -15
- package/dist/route-manifest.d.ts +1 -1
- package/dist/route-manifest.js +2 -2
- package/dist/router.d.ts +30 -21
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +62 -32
- package/dist/router.js.map +1 -1
- package/dist/search.d.ts +94 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +232 -0
- package/dist/search.js.map +1 -0
- package/dist/server-only.d.ts +6 -6
- package/dist/server-only.js +7 -7
- package/dist/service-worker.d.ts +56 -0
- package/dist/service-worker.d.ts.map +1 -0
- package/dist/service-worker.js +127 -0
- package/dist/service-worker.js.map +1 -0
- package/dist/vite.d.ts +16 -14
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +51 -24
- package/dist/vite.js.map +1 -1
- package/package.json +38 -4
- package/server-manifest.d.ts +31 -0
- package/src/build-vite.ts +24 -77
- package/src/build.ts +137 -105
- package/src/bun-dev-entry.ts +1 -1
- package/src/chunk-names.ts +1 -1
- package/src/client.ts +215 -32
- package/src/conformance.ts +3 -3
- package/src/deferred.ts +17 -17
- package/src/dev-diagnostics.ts +47 -0
- package/src/dev-error.ts +64 -33
- package/src/dev-port.ts +17 -5
- package/src/dev.ts +36 -20
- package/src/diagnostic.ts +284 -0
- package/src/draft.ts +15 -15
- package/src/fn-state.ts +107 -0
- package/src/fn.ts +199 -0
- package/src/fonts-google.ts +13 -13
- package/src/fonts.ts +7 -7
- package/src/forms.ts +8 -8
- package/src/fs.ts +2 -2
- package/src/index.ts +460 -181
- package/src/internal/head-attributes.ts +109 -0
- package/src/internal/script-types.ts +18 -0
- package/src/internal/server-boundary.ts +187 -0
- package/src/internal/timing-safe-equal.ts +1 -1
- package/src/internal/vite-import.ts +92 -0
- package/src/islands.ts +7 -7
- package/src/isr.ts +17 -17
- package/src/manifest.ts +83 -42
- package/src/module-graph.ts +6 -6
- package/src/navigation.ts +151 -5
- package/src/plugins/css-modules.ts +0 -0
- package/src/plugins/kit.ts +11 -11
- package/src/plugins/scss.ts +3 -3
- package/src/plugins/vite-leak-guard.ts +2 -2
- package/src/plugins/vite-server-fn.ts +67 -0
- package/src/plugins/vite-server-only.ts +75 -0
- package/src/prerender.ts +10 -10
- package/src/query.ts +22 -22
- package/src/route-manifest.ts +3 -3
- package/src/router.ts +98 -45
- package/src/search.ts +297 -0
- package/src/server-only.ts +7 -7
- package/src/service-worker.ts +165 -0
- package/src/vite.ts +61 -32
package/dist/router.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The agnostic client-side router core
|
|
2
|
+
* The agnostic client-side router core - pure logic, no `window`, no framework. A per-adapter
|
|
3
3
|
* Router binding subscribes via `subscribe`/`snapshot` and renders the matched chain; a
|
|
4
4
|
* browser-only `installHistory` (history + link interception) wires on top. Kept DOM-free so it
|
|
5
5
|
* unit-tests without a browser and is safe to import from the SSR core's main entry.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { compileRoutePattern, matchRoutePattern, sortRoutesBySpecificity, } from "@nifrajs/core/pattern";
|
|
8
8
|
import { parseNdjsonData } from "./deferred.js";
|
|
9
|
+
import { isClientOnlySearchChange } from "./search.js";
|
|
9
10
|
/**
|
|
10
11
|
* Request header that asks a nifra route's GET to return just the loader data as JSON (instead of
|
|
11
12
|
* the full HTML document). Set by client-side navigation; read by `createWebApp`'s GET handler.
|
|
@@ -14,18 +15,18 @@ export const DATA_HEADER = "x-nifra-data";
|
|
|
14
15
|
/**
|
|
15
16
|
* Global the server injects (`createWebApp({ prerenderedPaths })`) listing the SSG-prerendered paths.
|
|
16
17
|
* The client's default data fetch reads it: a soft-nav INTO a prerendered route fetches its static
|
|
17
|
-
* `<path>/_data.json` (a CDN file
|
|
18
|
+
* `<path>/_data.json` (a CDN file - no worker round-trip) instead of the dynamic header-GET.
|
|
18
19
|
*/
|
|
19
20
|
export const PRERENDERED_GLOBAL = "__NIFRA_PRERENDERED__";
|
|
20
21
|
/**
|
|
21
22
|
* Response header a data-mode action POST uses to convey a redirect (`redirect(...)`) to the
|
|
22
|
-
* client
|
|
23
|
+
* client - fetch would otherwise silently follow a 3xx to its HTML, losing the target. The
|
|
23
24
|
* client reads this and performs a client-side navigation instead.
|
|
24
25
|
*/
|
|
25
26
|
export const REDIRECT_HEADER = "x-nifra-redirect";
|
|
26
27
|
/**
|
|
27
28
|
* Response header an action sets (via the `revalidate(paths, data)` helper) to tell the client which
|
|
28
|
-
* routes the mutation changed
|
|
29
|
+
* routes the mutation changed - a comma-separated list of paths. After the submit, the client marks
|
|
29
30
|
* those cached routes stale (refetching any that are mounted) so a mutation can refresh views beyond
|
|
30
31
|
* the active one. The client validates each path against the manifest matcher before acting on it.
|
|
31
32
|
*/
|
|
@@ -76,11 +77,12 @@ export function isRouteDataEnvelope(value) {
|
|
|
76
77
|
* query string is ignored for matching (it is not part of the route pattern).
|
|
77
78
|
*/
|
|
78
79
|
export function createMatcher(patterns) {
|
|
79
|
-
const compiled = patterns
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
const compiled = sortRoutesBySpecificity(patterns.map((pattern) => ({
|
|
81
|
+
routeId: pattern.routeId,
|
|
82
|
+
pattern: compileRoutePattern(pattern.pattern),
|
|
83
|
+
})));
|
|
82
84
|
return (path) => {
|
|
83
|
-
// Strip the query without allocating a `split("?")` array
|
|
85
|
+
// Strip the query without allocating a `split("?")` array - matcher runs per match.
|
|
84
86
|
const q = path.indexOf("?");
|
|
85
87
|
const clean = q === -1 ? path : path.slice(0, q);
|
|
86
88
|
for (const c of compiled) {
|
|
@@ -97,7 +99,7 @@ export function createMatcher(patterns) {
|
|
|
97
99
|
}
|
|
98
100
|
/** Read a nifra data response: a deferred loader/action streams NDJSON (parse line 1 + settle
|
|
99
101
|
* `<Await>` markers as resolution lines arrive); a non-deferred one returns a single JSON. Shared by
|
|
100
|
-
* navigation fetches and action submits
|
|
102
|
+
* navigation fetches and action submits - both transports are identical. */
|
|
101
103
|
const readResponseData = (res, signal) => (res.headers.get("content-type") ?? "").includes("application/x-ndjson") && res.body !== null
|
|
102
104
|
? parseNdjsonData(res.body, signal)
|
|
103
105
|
: res.json();
|
|
@@ -105,7 +107,7 @@ const readResponseData = (res, signal) => (res.headers.get("content-type") ?? ""
|
|
|
105
107
|
// `/users/7/_data.json` (mirrors the build's `dataFileFor`).
|
|
106
108
|
const dataUrlFor = (pathname) => pathname === "/" ? "/_data.json" : `${pathname.replace(/\/+$/, "")}/_data.json`;
|
|
107
109
|
const defaultFetchData = async (path, _match, signal, navigation) => {
|
|
108
|
-
// SSG fast path: if this path was prerendered, its loader data is a static file
|
|
110
|
+
// SSG fast path: if this path was prerendered, its loader data is a static file - fetch that (no
|
|
109
111
|
// worker). Falls through to the dynamic header-GET on any miss (file absent, e.g. a deferred route,
|
|
110
112
|
// or a stale set), so it's always safe. Non-SSG apps have no global → the dynamic path, unchanged.
|
|
111
113
|
const prerendered = globalThis[PRERENDERED_GLOBAL];
|
|
@@ -136,9 +138,22 @@ const defaultFetchData = async (path, _match, signal, navigation) => {
|
|
|
136
138
|
* navigations overlap, only the latest result is applied (rapid clicks don't flash stale data).
|
|
137
139
|
* A failed fetch clears `pending` and rethrows so the caller can fall back to a full-page load.
|
|
138
140
|
*/
|
|
141
|
+
// Split a `pathname + search` into its two parts. `rawSearchOf` keeps the leading `?` (what
|
|
142
|
+
// `parseSearch` accepts); an empty query yields `""`.
|
|
143
|
+
const pathnameOf = (path) => {
|
|
144
|
+
const q = path.indexOf("?");
|
|
145
|
+
return q === -1 ? path : path.slice(0, q);
|
|
146
|
+
};
|
|
147
|
+
const rawSearchOf = (path) => {
|
|
148
|
+
const q = path.indexOf("?");
|
|
149
|
+
return q === -1 ? "" : path.slice(q);
|
|
150
|
+
};
|
|
139
151
|
export function createClientRouter(options) {
|
|
140
152
|
const match = createMatcher(options.patterns);
|
|
141
153
|
const fetchData = options.fetchData ?? defaultFetchData;
|
|
154
|
+
// routeId → the route's client-only search keys. Read by reference (the generated entry keeps writing
|
|
155
|
+
// to it as routes load), so a same-route nav always sees the current route's keys.
|
|
156
|
+
const searchClientKeys = options.searchClientKeys ?? {};
|
|
142
157
|
const loadRouteData = async (path, match, signal, retainFrom) => {
|
|
143
158
|
const retain = retainFrom?.layoutData.map((_, index) => index) ?? [];
|
|
144
159
|
const payload = await fetchData(path, match, signal, retainFrom === undefined ? undefined : { from: retainFrom.path, retain });
|
|
@@ -178,9 +193,9 @@ export function createClientRouter(options) {
|
|
|
178
193
|
const inflight = new Set();
|
|
179
194
|
// Keyed data cache (path → latest loader data + freshness). Written on every published data
|
|
180
195
|
// (navigate/submit), read by `invalidate` (+ targeted revalidation and fetchers in later F16
|
|
181
|
-
// increments). Bounded
|
|
196
|
+
// increments). Bounded - evict the oldest-inserted past the cap (route data is small; this just
|
|
182
197
|
// caps memory). `status` is the staleness ledger: `invalidate` flips entries to `stale`; readers
|
|
183
|
-
// refetch stale ones. Client-only
|
|
198
|
+
// refetch stale ones. Client-only - never serialized/hydrated.
|
|
184
199
|
const MAX_CACHE = 50;
|
|
185
200
|
const cache = new Map();
|
|
186
201
|
const cachePut = (path, loaded) => {
|
|
@@ -203,7 +218,7 @@ export function createClientRouter(options) {
|
|
|
203
218
|
}
|
|
204
219
|
};
|
|
205
220
|
// Parse the `X-Nifra-Revalidate` response header into validated paths. The header is response data
|
|
206
|
-
// (a trust boundary), so each path must match a real manifest pattern
|
|
221
|
+
// (a trust boundary), so each path must match a real manifest pattern - unknown/garbage is dropped
|
|
207
222
|
// and never triggers a fetch.
|
|
208
223
|
const parseRevalidate = (header) => header === null
|
|
209
224
|
? []
|
|
@@ -226,7 +241,7 @@ export function createClientRouter(options) {
|
|
|
226
241
|
try {
|
|
227
242
|
const loaded = await loadRouteData(state.path, { routeId: state.routeId, params: state.params }, ac.signal);
|
|
228
243
|
if (mine !== token)
|
|
229
|
-
return; // superseded
|
|
244
|
+
return; // superseded - drop the stale result
|
|
230
245
|
cachePut(state.path, loaded);
|
|
231
246
|
state = { ...state, data: loaded.data, layoutData: loaded.layoutData, pending: false };
|
|
232
247
|
emit();
|
|
@@ -254,7 +269,7 @@ export function createClientRouter(options) {
|
|
|
254
269
|
};
|
|
255
270
|
// Best-effort refresh of every MOUNTED reader of `paths`: the active route (unless `skipActive`,
|
|
256
271
|
// when the caller already refetched it) + any fetcher that loaded one of these paths. Errors are
|
|
257
|
-
// swallowed
|
|
272
|
+
// swallowed - a failed targeted refresh must not fail the mutation that triggered it.
|
|
258
273
|
const refreshMounted = async (paths, skipActive) => {
|
|
259
274
|
const jobs = [];
|
|
260
275
|
if (!skipActive && paths.includes(state.path))
|
|
@@ -292,7 +307,7 @@ export function createClientRouter(options) {
|
|
|
292
307
|
]);
|
|
293
308
|
if (mine !== fToken)
|
|
294
309
|
return; // a newer load/submit on THIS fetcher superseded us
|
|
295
|
-
// Record the loaded path only on SUCCESS
|
|
310
|
+
// Record the loaded path only on SUCCESS - a thrown or superseded load must not
|
|
296
311
|
// leave `loadedPath` pointing at a path this fetcher never actually showed, or a later
|
|
297
312
|
// `X-Nifra-Revalidate` for it would spuriously refetch onto unexpected data.
|
|
298
313
|
loadedPath = path;
|
|
@@ -319,7 +334,7 @@ export function createClientRouter(options) {
|
|
|
319
334
|
load: runLoad,
|
|
320
335
|
submit: async (action, body) => {
|
|
321
336
|
const mine = ++fToken;
|
|
322
|
-
// Abort any prior in-flight load/submit on THIS fetcher (its fetch + NDJSON drain)
|
|
337
|
+
// Abort any prior in-flight load/submit on THIS fetcher (its fetch + NDJSON drain) - like
|
|
323
338
|
// `runLoad` does for a superseding load. The mutation POST is left to complete; the
|
|
324
339
|
// signal cancels the follow-up data drain if a newer op supersedes this one.
|
|
325
340
|
fAbort?.abort();
|
|
@@ -344,7 +359,7 @@ export function createClientRouter(options) {
|
|
|
344
359
|
// Publish the fetcher's actionData; clear `submission` (the optimistic window is over).
|
|
345
360
|
fState = { pending: false, data: fState.data, actionData };
|
|
346
361
|
fEmit();
|
|
347
|
-
// A fetcher has no loader of its own
|
|
362
|
+
// A fetcher has no loader of its own - its mutation's freshness flows through the cache:
|
|
348
363
|
// mark the changed routes stale + refresh every mounted reader (active route + fetchers).
|
|
349
364
|
if (changed.length > 0) {
|
|
350
365
|
markStale(changed);
|
|
@@ -382,6 +397,21 @@ export function createClientRouter(options) {
|
|
|
382
397
|
const matched = match(path);
|
|
383
398
|
if (matched === null)
|
|
384
399
|
return;
|
|
400
|
+
// Client-only search fast path: same route + same pathname, and every changed search key is
|
|
401
|
+
// declared client-only. Publish the new URL (so `useSearch`/`useLocation` update) WITHOUT a data
|
|
402
|
+
// fetch - the loader's inputs did not change. Any loader-affecting key change falls through to the
|
|
403
|
+
// normal match → fetch → publish below, so data is never stale. Abort an in-flight fetch first: a
|
|
404
|
+
// rapid `?tab` after a real nav must not let the older fetch overwrite this synchronous update.
|
|
405
|
+
if (matched.routeId === state.routeId &&
|
|
406
|
+
pathnameOf(path) === pathnameOf(state.path) &&
|
|
407
|
+
isClientOnlySearchChange(rawSearchOf(state.path), rawSearchOf(path), searchClientKeys[state.routeId] ?? [])) {
|
|
408
|
+
++token; // supersede any in-flight navigation so its late result is dropped
|
|
409
|
+
navAbort?.abort();
|
|
410
|
+
cachePut(path, { data: state.data, layoutData: state.layoutData });
|
|
411
|
+
state = { ...state, path, pending: false, pendingPath: undefined };
|
|
412
|
+
emit();
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
385
415
|
const mine = ++token;
|
|
386
416
|
navAbort?.abort(); // abandon any in-flight navigation's stream
|
|
387
417
|
const ac = new AbortController();
|
|
@@ -389,7 +419,7 @@ export function createClientRouter(options) {
|
|
|
389
419
|
state = { ...state, pending: true, pendingPath: path };
|
|
390
420
|
emit();
|
|
391
421
|
try {
|
|
392
|
-
// Use prefetched data when present (one-shot
|
|
422
|
+
// Use prefetched data when present (one-shot - drop it); else fetch. The chunk is loaded
|
|
393
423
|
// either way (cached + instant after a prefetch), so pending covers both.
|
|
394
424
|
const hit = prefetched.has(path);
|
|
395
425
|
const dataPromise = hit
|
|
@@ -403,7 +433,7 @@ export function createClientRouter(options) {
|
|
|
403
433
|
if (loaded.terminalRouteId !== undefined)
|
|
404
434
|
await loadModule?.(loaded.terminalRouteId);
|
|
405
435
|
if (mine !== token)
|
|
406
|
-
return; // a newer navigation superseded this one
|
|
436
|
+
return; // a newer navigation superseded this one - drop the stale result
|
|
407
437
|
cachePut(path, loaded); // keep the keyed cache coherent with what we publish
|
|
408
438
|
state = {
|
|
409
439
|
routeId: loaded.terminalRouteId ?? matched.routeId,
|
|
@@ -417,7 +447,7 @@ export function createClientRouter(options) {
|
|
|
417
447
|
emit();
|
|
418
448
|
}
|
|
419
449
|
catch (err) {
|
|
420
|
-
// Clear our pending flag + target (only if still current) and rethrow
|
|
450
|
+
// Clear our pending flag + target (only if still current) and rethrow - the caller decides how
|
|
421
451
|
// to recover (the history layer falls back to a full-page navigation).
|
|
422
452
|
if (mine === token) {
|
|
423
453
|
state = { ...state, pending: false, pendingPath: undefined };
|
|
@@ -429,7 +459,7 @@ export function createClientRouter(options) {
|
|
|
429
459
|
submit: async (action, body, opts) => {
|
|
430
460
|
const mine = ++token;
|
|
431
461
|
// A superseding navigation/submit aborts this submit's FOLLOW-UP reads (revalidation / redirect
|
|
432
|
-
// fetch + their NDJSON drains)
|
|
462
|
+
// fetch + their NDJSON drains) - not the mutation POST itself, which should complete.
|
|
433
463
|
// Wire into `navAbort` like `navigate`/`refetchActive`, so a later nav cancels the in-flight read.
|
|
434
464
|
navAbort?.abort();
|
|
435
465
|
const ac = new AbortController();
|
|
@@ -448,7 +478,7 @@ export function createClientRouter(options) {
|
|
|
448
478
|
throw new Error(`[nifra/web] action failed (${res.status}): ${action}`);
|
|
449
479
|
const redirectTo = res.headers.get(REDIRECT_HEADER);
|
|
450
480
|
if (redirectTo !== null) {
|
|
451
|
-
// The action redirected (Post/Redirect/Get)
|
|
481
|
+
// The action redirected (Post/Redirect/Get) - treat it as a client navigation.
|
|
452
482
|
const target = match(redirectTo);
|
|
453
483
|
if (target === null)
|
|
454
484
|
throw new Error(`[nifra/web] action redirect off-route: ${redirectTo}`);
|
|
@@ -475,14 +505,14 @@ export function createClientRouter(options) {
|
|
|
475
505
|
emit();
|
|
476
506
|
return;
|
|
477
507
|
}
|
|
478
|
-
// The action's data
|
|
508
|
+
// The action's data - streamed NDJSON if it `defer()`'d slow parts (markers settle as lines
|
|
479
509
|
// arrive, for `<Await actionData>`), else one JSON. Abortable so a superseding nav cancels the
|
|
480
510
|
// drain.
|
|
481
511
|
const actionData = res.status === 204 ? undefined : await readResponseData(res, ac.signal);
|
|
482
512
|
// Routes the action declared changed (via the `revalidate()` helper → `X-Nifra-Revalidate`),
|
|
483
513
|
// validated against the manifest.
|
|
484
514
|
const changed = parseRevalidate(res.headers.get(REVALIDATE_HEADER));
|
|
485
|
-
// Revalidate the active route's loader so the mutation is reflected
|
|
515
|
+
// Revalidate the active route's loader so the mutation is reflected - unless the caller opted
|
|
486
516
|
// out (`revalidate: false`). A server-declared revalidate of the active path overrides the
|
|
487
517
|
// opt-out (the server says it changed, so stale data would be wrong). Default is to revalidate.
|
|
488
518
|
const skipActive = opts?.revalidate === false && !changed.includes(state.path);
|
|
@@ -495,7 +525,7 @@ export function createClientRouter(options) {
|
|
|
495
525
|
// Mark the OTHER changed routes stale so the next access refetches.
|
|
496
526
|
markStale(changed.filter((p) => p !== state.path));
|
|
497
527
|
// Reconcile: publish the revalidated data + actionData; omit `submission` (the optimistic
|
|
498
|
-
// window is over
|
|
528
|
+
// window is over - the real data now drives the view).
|
|
499
529
|
state = {
|
|
500
530
|
routeId: state.routeId,
|
|
501
531
|
params: state.params,
|
|
@@ -507,7 +537,7 @@ export function createClientRouter(options) {
|
|
|
507
537
|
};
|
|
508
538
|
emit();
|
|
509
539
|
// Refresh any mounted fetcher showing one of the changed routes (the active route was just
|
|
510
|
-
// revalidated inline above, so skip it here). Best-effort
|
|
540
|
+
// revalidated inline above, so skip it here). Best-effort - never rejects the submit.
|
|
511
541
|
await refreshMounted(changed, true);
|
|
512
542
|
}
|
|
513
543
|
catch (err) {
|
|
@@ -528,11 +558,11 @@ export function createClientRouter(options) {
|
|
|
528
558
|
}
|
|
529
559
|
},
|
|
530
560
|
invalidate: async (paths) => {
|
|
531
|
-
// Mark targeted cache entries stale (all entries when no `paths`)
|
|
561
|
+
// Mark targeted cache entries stale (all entries when no `paths`) - unmounted ones refetch
|
|
532
562
|
// lazily on next access.
|
|
533
563
|
const targets = paths ?? [...cache.keys()];
|
|
534
564
|
markStale(targets);
|
|
535
|
-
// Refresh mounted readers now: the active route (when in scope
|
|
565
|
+
// Refresh mounted readers now: the active route (when in scope - an explicit list including it,
|
|
536
566
|
// or an invalidate-all) + any fetcher showing a targeted path. The active refetch rejects on
|
|
537
567
|
// failure (the caller asked to refresh); fetcher refreshes are best-effort (swallowed).
|
|
538
568
|
const jobs = [];
|
|
@@ -550,7 +580,7 @@ export function createClientRouter(options) {
|
|
|
550
580
|
return;
|
|
551
581
|
inflight.add(path);
|
|
552
582
|
try {
|
|
553
|
-
// Unwrapped here, so a prefetched entry is the same shape `navigate` builds state from
|
|
583
|
+
// Unwrapped here, so a prefetched entry is the same shape `navigate` builds state from -
|
|
554
584
|
// otherwise a prefetch hit would publish an envelope where a miss publishes loader data.
|
|
555
585
|
const [, loaded] = await Promise.all([
|
|
556
586
|
loadModule?.(matched.routeId),
|
|
@@ -576,7 +606,7 @@ export function createClientRouter(options) {
|
|
|
576
606
|
return existing.fetcher;
|
|
577
607
|
const entry = createFetcher();
|
|
578
608
|
fetchers.set(key, entry);
|
|
579
|
-
emitFetchers(); // a new fetcher appeared
|
|
609
|
+
emitFetchers(); // a new fetcher appeared - wake any `useFetchers` subscriber
|
|
580
610
|
return entry.fetcher;
|
|
581
611
|
},
|
|
582
612
|
fetchers: () => fetchersArr,
|
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/dist/search.d.ts
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@nifrajs/web` search-param engine - the agnostic core behind typed, validated search params. It parses
|
|
3
|
+
* a URL query into a structured object, validates it against a route's Standard Schema (failing CLOSED to
|
|
4
|
+
* defaults on hostile input), serializes it back, and structural-shares successive values so selector
|
|
5
|
+
* reads stay referentially stable. Pure: no DOM, no framework, no fs - it runs identically at server match
|
|
6
|
+
* time and on client navigation, so the two sides cannot drift. See SEARCH-PARAMS-PLAN.md.
|
|
7
|
+
*
|
|
8
|
+
* Not yet re-exported from the package entry: this is the engine the route/server/client wiring (later
|
|
9
|
+
* phases) build on. The public surface (`searchSchema` on a route, `useSearch`, typed `navigate`) lands
|
|
10
|
+
* with that wiring.
|
|
11
|
+
*/
|
|
12
|
+
import type { InferOutput, StandardSchemaV1 } from "@nifrajs/core/server";
|
|
13
|
+
/**
|
|
14
|
+
* Bounds applied while parsing a query string. A search string is attacker-controlled, so it is capped
|
|
15
|
+
* BEFORE an object graph is built from it - defense-in-depth alongside the route schema's own validation.
|
|
16
|
+
*/
|
|
17
|
+
export interface SearchLimits {
|
|
18
|
+
/** Longest raw query (with or without a leading `?`) that will be parsed; longer fails closed to `{}`. */
|
|
19
|
+
readonly maxLength: number;
|
|
20
|
+
/** Most top-level keys that will be kept; keys beyond the cap are dropped. */
|
|
21
|
+
readonly maxKeys: number;
|
|
22
|
+
/** Deepest nesting a decoded JSON value may have; deeper values are kept as their raw string instead. */
|
|
23
|
+
readonly maxDepth: number;
|
|
24
|
+
}
|
|
25
|
+
/** Conservative defaults: a 4 KB query, 64 keys, 6 levels of nesting. */
|
|
26
|
+
export declare const DEFAULT_SEARCH_LIMITS: SearchLimits;
|
|
27
|
+
/**
|
|
28
|
+
* A pluggable query <-> object codec. The default is JSON-first (numbers/booleans/arrays/nested objects
|
|
29
|
+
* survive the round-trip); an app can supply its own (compact, base64, comma-arrays) in a later phase.
|
|
30
|
+
*/
|
|
31
|
+
export interface SearchCodec {
|
|
32
|
+
/** Parse a raw query (`"?a=1&b=x"` or `"a=1&b=x"`) into a structured object, honoring `limits`. */
|
|
33
|
+
parse(raw: string, limits: SearchLimits): Record<string, unknown>;
|
|
34
|
+
/** Serialize a structured object to a query string, including a leading `?` (or `""` when empty). */
|
|
35
|
+
serialize(value: Record<string, unknown>): string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Parse a raw URL query into a structured object. Fails closed to `{}` when the raw string exceeds
|
|
39
|
+
* `limits.maxLength` (before any parsing work is done).
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseSearch(raw: string, codec?: SearchCodec, limits?: SearchLimits): Record<string, unknown>;
|
|
42
|
+
/** Serialize a structured search object back to a query string (leading `?`, or `""` when empty). */
|
|
43
|
+
export declare function serializeSearch(value: Record<string, unknown>, codec?: SearchCodec): string;
|
|
44
|
+
/**
|
|
45
|
+
* The search a route sees for a raw URL query: parsed, then validated against a single `searchSchema`
|
|
46
|
+
* when the route declares one (failing closed to its defaults), or the raw parsed query otherwise. A
|
|
47
|
+
* one-link {@link searchOfChain}; use that directly for a layout+page chain. Both the server (`renderPage`,
|
|
48
|
+
* loader ctx) and the client (the adapter mount) derive search this way, from the same URL + schema, so
|
|
49
|
+
* they produce the identical value - SSR-correct by construction, no serialization.
|
|
50
|
+
*/
|
|
51
|
+
export declare function searchOf(searchSchema: StandardSchemaV1 | undefined, rawSearch: string): Record<string, unknown>;
|
|
52
|
+
/**
|
|
53
|
+
* The search for a route whose effective schema is a CHAIN - a `_layout` may declare `searchSchema` for
|
|
54
|
+
* shared keys (`?org`, `?theme`) and each page declares its own. The raw query is validated against every
|
|
55
|
+
* schema in the chain (outermost layout first, page last) and their outputs are merged, page-wins on a key
|
|
56
|
+
* conflict (nearest-wins, like `mergeHeads`): validate-each-then-combine, since Standard Schema has no
|
|
57
|
+
* `.merge()`. `undefined` links (a layout with no `searchSchema`) contribute nothing; when the whole chain
|
|
58
|
+
* is empty, the raw parsed query is returned. Fails closed per schema, same as {@link searchOf} (which is
|
|
59
|
+
* this with a one-link chain). The server and the client build the identical chain, so the value matches.
|
|
60
|
+
*/
|
|
61
|
+
export declare function searchOfChain(schemas: readonly (StandardSchemaV1 | undefined)[], rawSearch: string): Record<string, unknown>;
|
|
62
|
+
/**
|
|
63
|
+
* The search OUTPUT type for a route MODULE - its `searchSchema`'s validated output, or the raw parsed
|
|
64
|
+
* query (`Record<string, unknown>`) when it declares none. The building block for typed cross-route
|
|
65
|
+
* navigation: generated route types (`nifra sync-routes`) map each path to
|
|
66
|
+
* `SearchOf<typeof import("./routes/<file>")>`, populating the augmentable `RouteSearch` interface.
|
|
67
|
+
*/
|
|
68
|
+
export type SearchOf<Module> = Module extends {
|
|
69
|
+
searchSchema: infer S;
|
|
70
|
+
} ? S extends StandardSchemaV1 ? InferOutput<S> extends Record<string, unknown> ? InferOutput<S> : never : Record<string, unknown> : Record<string, unknown>;
|
|
71
|
+
/**
|
|
72
|
+
* Validate a parsed search object against a route's Standard Schema, returning the typed output. Fails
|
|
73
|
+
* CLOSED: on validation issues it retries against an empty object so the schema's per-field defaults apply,
|
|
74
|
+
* and degrades to `{}` only if even that fails - it never throws on hostile input. An async validator is a
|
|
75
|
+
* configuration error (search must validate synchronously, in the render/nav path) and throws loudly.
|
|
76
|
+
*/
|
|
77
|
+
export declare function validateSearch<Schema extends StandardSchemaV1>(schema: Schema, parsed: Record<string, unknown>): InferOutput<Schema>;
|
|
78
|
+
/**
|
|
79
|
+
* Structural sharing (shallow-first): return `next`, but reuse `prev`'s reference for every top-level key
|
|
80
|
+
* whose value is deep-equal. When nothing changed, `prev` itself is returned (stable identity), so a
|
|
81
|
+
* selector like `useSearch(s => s.filters)` does not see a change - and a filters-only component does not
|
|
82
|
+
* re-render when an unrelated key (`page`) changes.
|
|
83
|
+
*/
|
|
84
|
+
export declare function shareSearch<T>(prev: T, next: T): T;
|
|
85
|
+
/**
|
|
86
|
+
* True when two raw queries differ ONLY in keys a route declared client-only (`searchClientKeys`) - the
|
|
87
|
+
* signal a client navigation can update search WITHOUT re-running the loader (re-render, not revalidate:
|
|
88
|
+
* `?tab`, a client-side `?sort` over already-loaded rows, `?modal`). Returns false when a key OUTSIDE the
|
|
89
|
+
* allow-list changed (that key drives data, so the nav must revalidate) and when nothing changed at all (a
|
|
90
|
+
* same-URL nav still revalidates). Fail-safe by construction: an empty allow-list can never return true,
|
|
91
|
+
* so a route that declares no client keys always revalidates - the correct, never-stale default.
|
|
92
|
+
*/
|
|
93
|
+
export declare function isClientOnlySearchChange(prevRaw: string, nextRaw: string, clientKeys: readonly string[]): boolean;
|
|
94
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEzE;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,0GAA0G;IAC1G,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,yGAAyG;IACzG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,EAAE,YAA4D,CAAA;AAEhG;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,mGAAmG;IACnG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjE,qGAAqG;IACrG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAA;CAClD;AAmGD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,WAAuB,EAC9B,MAAM,GAAE,YAAoC,GAC3C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB;AAED,qGAAqG;AACrG,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,GAAE,WAAuB,GAC7B,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,YAAY,EAAE,gBAAgB,GAAG,SAAS,EAC1C,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAAC,EAAE,EAClD,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,CAAC,MAAM,IAAI,MAAM,SAAS;IAAE,YAAY,EAAE,MAAM,CAAC,CAAA;CAAE,GACnE,CAAC,SAAS,gBAAgB,GACxB,WAAW,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5C,WAAW,CAAC,CAAC,CAAC,GACd,KAAK,GACP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE3B;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,SAAS,gBAAgB,EAC5D,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,WAAW,CAAC,MAAM,CAAC,CAWrB;AAiBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAclD;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,OAAO,CAYT"}
|