@buzola/router 0.0.18 → 0.0.20
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/dist/define/create-page.js +1 -1
- package/dist/engine/loader-cache.d.ts +1 -1
- package/dist/engine/loader-cache.js +1 -1
- package/dist/engine/loader-state.d.ts +5 -5
- package/dist/engine/loader-state.d.ts.map +1 -1
- package/dist/engine/loader-state.js +8 -8
- package/dist/engine/loader-state.js.map +1 -1
- package/dist/engine/matcher.js +4 -4
- package/dist/engine/matcher.js.map +1 -1
- package/dist/engine/navigation-adapter.d.ts +3 -1
- package/dist/engine/navigation-adapter.d.ts.map +1 -1
- package/dist/engine/navigation-adapter.js +27 -2
- package/dist/engine/navigation-adapter.js.map +1 -1
- package/dist/engine/route-tree.js +2 -2
- package/dist/engine/route-tree.js.map +1 -1
- package/dist/engine/router.d.ts +7 -6
- package/dist/engine/router.d.ts.map +1 -1
- package/dist/engine/router.js +60 -26
- package/dist/engine/router.js.map +1 -1
- package/dist/engine/types.d.ts +15 -9
- package/dist/engine/types.d.ts.map +1 -1
- package/dist/engine/utils.d.ts +3 -3
- package/dist/engine/utils.js +3 -3
- package/dist/react/hooks.d.ts +2 -2
- package/dist/react/hooks.js +1 -1
- package/dist/react/link.d.ts +4 -4
- package/dist/react/link.js +1 -1
- package/dist/react/outlet.js +2 -2
- package/dist/react/outlet.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/create-page.test.ts +1 -1
- package/src/__tests__/loader-cache.test.ts +1 -1
- package/src/__tests__/loader-state.test.ts +12 -12
- package/src/__tests__/navigation-adapter.test.ts +76 -3
- package/src/__tests__/react.test.tsx +4 -4
- package/src/__tests__/router.test.ts +293 -4
- package/src/__tests__/setup-dom.ts +1 -1
- package/src/__tests__/type-safety.test.tsx +22 -22
- package/src/define/create-page.tsx +1 -1
- package/src/engine/loader-cache.ts +1 -1
- package/src/engine/loader-state.ts +9 -9
- package/src/engine/matcher.ts +4 -4
- package/src/engine/navigation-adapter.ts +27 -2
- package/src/engine/route-tree.ts +3 -3
- package/src/engine/router.ts +68 -27
- package/src/engine/types.ts +15 -9
- package/src/engine/utils.ts +3 -3
- package/src/env.d.ts +8 -0
- package/src/react/hooks.ts +2 -2
- package/src/react/link.tsx +5 -5
- package/src/react/outlet.tsx +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/engine/router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/engine/router.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/types.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export type RegisteredPage = keyof BuzolaPageMap & string;
|
|
|
22
22
|
*/
|
|
23
23
|
export type PageParams<P extends keyof BuzolaPageMap> = BuzolaPageMap[P];
|
|
24
24
|
/**
|
|
25
|
-
* Effective params for a page
|
|
25
|
+
* Effective params for a page: persistent params become optional.
|
|
26
26
|
* When BuzolaPersistentParams is empty (default), collapses to BuzolaPageMap[P].
|
|
27
27
|
*/
|
|
28
28
|
export type EffectivePageParams<P extends keyof BuzolaPageMap> = Omit<BuzolaPageMap[P], keyof BuzolaPersistentParams & string> & Partial<Pick<BuzolaPageMap[P], keyof BuzolaPersistentParams & string & keyof BuzolaPageMap[P]>>;
|
|
@@ -43,7 +43,7 @@ export interface StandardSchema<T = unknown> {
|
|
|
43
43
|
};
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
|
-
/** Route component
|
|
46
|
+
/** Route component: either a regular component or a lazy-loaded one. */
|
|
47
47
|
export type RouteComponent = ComponentType<Record<string, never>> | LazyExoticComponent<ComponentType<Record<string, never>>>;
|
|
48
48
|
/** Configuration for a single route. */
|
|
49
49
|
export interface RouteConfig {
|
|
@@ -55,7 +55,7 @@ export interface RouteConfig {
|
|
|
55
55
|
component?: RouteComponent;
|
|
56
56
|
/** Schema for validating search params (Standard Schema compatible). */
|
|
57
57
|
searchSchema?: StandardSchema;
|
|
58
|
-
/** Preload function
|
|
58
|
+
/** Preload function: triggers lazy component import ahead of navigation. */
|
|
59
59
|
preload?: () => void;
|
|
60
60
|
/** Child routes. */
|
|
61
61
|
children?: RouteConfig[];
|
|
@@ -63,7 +63,7 @@ export interface RouteConfig {
|
|
|
63
63
|
isLayout?: boolean;
|
|
64
64
|
/** Whether this is an index route (renders at parent's exact path). */
|
|
65
65
|
isIndex?: boolean;
|
|
66
|
-
/** Whether this is a pathless group (e.g., (auth)
|
|
66
|
+
/** Whether this is a pathless group (e.g., (auth), with no URL segment). */
|
|
67
67
|
isPathlessGroup?: boolean;
|
|
68
68
|
}
|
|
69
69
|
/** A matched route with extracted params. */
|
|
@@ -87,7 +87,7 @@ export interface RouteNode {
|
|
|
87
87
|
component?: RouteComponent;
|
|
88
88
|
/** Search params schema. */
|
|
89
89
|
searchSchema?: StandardSchema;
|
|
90
|
-
/** Preload function
|
|
90
|
+
/** Preload function: triggers lazy component import ahead of navigation. */
|
|
91
91
|
preload?: () => void;
|
|
92
92
|
/** Whether this is a layout node (renders children via Outlet). */
|
|
93
93
|
isLayout: boolean;
|
|
@@ -96,7 +96,7 @@ export interface RouteNode {
|
|
|
96
96
|
}
|
|
97
97
|
/** A node in the segment trie used for URL matching. */
|
|
98
98
|
export interface TrieNode {
|
|
99
|
-
/** Static children
|
|
99
|
+
/** Static children: exact segment match via Map lookup (O(1)). */
|
|
100
100
|
staticChildren: Map<string, TrieNode>;
|
|
101
101
|
/**
|
|
102
102
|
* Dynamic child: matches any single segment. It carries no param name, because routes sharing this
|
|
@@ -143,14 +143,14 @@ export interface NavigateOptions {
|
|
|
143
143
|
viewTransition?: boolean;
|
|
144
144
|
/**
|
|
145
145
|
* Whether to reset scroll position after navigation.
|
|
146
|
-
* Default is `true
|
|
146
|
+
* Default is `true`: scroll to the top (or to the `#fragment`) on push and replace, restore on traverse.
|
|
147
147
|
* Set to `false` to preserve current scroll position.
|
|
148
148
|
*/
|
|
149
149
|
resetScroll?: boolean;
|
|
150
150
|
/**
|
|
151
151
|
* Whether the browser moves focus after navigation.
|
|
152
|
-
* Defaults to `manual` when only the search string changes
|
|
153
|
-
* pagination controls keep the caret
|
|
152
|
+
* Defaults to `manual` when only the search string changes (so search boxes, filters and
|
|
153
|
+
* pagination controls keep the caret), and to `after-transition` when the path or the hash
|
|
154
154
|
* changes, so fragment links move focus to the section they target.
|
|
155
155
|
*/
|
|
156
156
|
focusReset?: 'after-transition' | 'manual';
|
|
@@ -195,6 +195,12 @@ export interface BuzolaNavigateEvent {
|
|
|
195
195
|
userInitiated: boolean;
|
|
196
196
|
/** Whether this navigation should use View Transitions API. */
|
|
197
197
|
viewTransition?: boolean;
|
|
198
|
+
/**
|
|
199
|
+
* Run `callback` once the browser has made the destination the current entry of a navigation nobody
|
|
200
|
+
* intercepted. It runs before the browser restores the scroll position, and not at all if the navigation
|
|
201
|
+
* is cancelled. An adapter that cannot tell leaves it out, and the router then intercepts traversals.
|
|
202
|
+
*/
|
|
203
|
+
whenCommitted?(callback: () => void): void;
|
|
198
204
|
/** Intercept the navigation and handle it client-side. */
|
|
199
205
|
intercept(options: {
|
|
200
206
|
handler: () => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAI/D;;;;GAIG;AAEH,MAAM,WAAW,aAAa;CAAG;AAEjC;;;;GAIG;AAEH,MAAM,WAAW,sBAAsB;CAAG;AAE1C;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,aAAa,GAAG,MAAM,CAAA;AAEzD;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,CAAA;AAExE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,aAAa,IAC1D,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAC7D,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,sBAAsB,GAAG,MAAM,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAIlG;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IAC1C,WAAW,EAAE;QACZ,OAAO,EAAE,CAAC,CAAA;QACV,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;YAAE,KAAK,EAAE,CAAC,CAAA;SAAE,GAAG;YAAE,MAAM,EAAE,SAAS;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE,EAAE,CAAA;SAAE,CAAA;KACvF,CAAA;CACD;AAED,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/utils.d.ts
CHANGED
|
@@ -13,12 +13,12 @@ export declare function parseParamSegment(segment: string): {
|
|
|
13
13
|
*/
|
|
14
14
|
export declare function extractParamNames(pattern: string): string[];
|
|
15
15
|
/**
|
|
16
|
-
* Whether two URLs address the same page
|
|
16
|
+
* Whether two URLs address the same page, i.e. only search/hash differ.
|
|
17
17
|
* Same-path navigations (filters, sorting, pagination, search) keep the page
|
|
18
18
|
* on screen and keep its loader data as stale; path changes do not.
|
|
19
19
|
*
|
|
20
|
-
* Note this ignores the hash. Callers that care about fragment changes
|
|
21
|
-
* handling, for one
|
|
20
|
+
* Note this ignores the hash. Callers that care about fragment changes (focus
|
|
21
|
+
* handling, for one) have to compare `hash` themselves.
|
|
22
22
|
*/
|
|
23
23
|
export declare function isSamePath(a: string | URL, b: string | URL): boolean;
|
|
24
24
|
/**
|
package/dist/engine/utils.js
CHANGED
|
@@ -22,12 +22,12 @@ export function extractParamNames(pattern) {
|
|
|
22
22
|
return names;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
* Whether two URLs address the same page
|
|
25
|
+
* Whether two URLs address the same page, i.e. only search/hash differ.
|
|
26
26
|
* Same-path navigations (filters, sorting, pagination, search) keep the page
|
|
27
27
|
* on screen and keep its loader data as stale; path changes do not.
|
|
28
28
|
*
|
|
29
|
-
* Note this ignores the hash. Callers that care about fragment changes
|
|
30
|
-
* handling, for one
|
|
29
|
+
* Note this ignores the hash. Callers that care about fragment changes (focus
|
|
30
|
+
* handling, for one) have to compare `hash` themselves.
|
|
31
31
|
*/
|
|
32
32
|
export function isSamePath(a, b) {
|
|
33
33
|
const urlA = typeof a === 'string' ? new URL(a) : a;
|
package/dist/react/hooks.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare function useRouter(): Router;
|
|
|
7
7
|
/**
|
|
8
8
|
* Type-safe navigation function.
|
|
9
9
|
* Uses page IDs instead of URL patterns.
|
|
10
|
-
* Persistent params are optional
|
|
10
|
+
* Persistent params are optional: resolved from current URL or fallback.
|
|
11
11
|
*/
|
|
12
12
|
type NavigateFn = <P extends RegisteredPage>(to: P, ...args: [keyof EffectivePageParams<P>] extends [never] ? [options?: NavigateOptions] : {} extends EffectivePageParams<P> ? [options?: NavigateOptions & {
|
|
13
13
|
params?: EffectivePageParams<P>;
|
|
@@ -16,7 +16,7 @@ type NavigateFn = <P extends RegisteredPage>(to: P, ...args: [keyof EffectivePag
|
|
|
16
16
|
}]) => void;
|
|
17
17
|
/**
|
|
18
18
|
* Hook to get a type-safe navigate function.
|
|
19
|
-
* Navigates using page IDs
|
|
19
|
+
* Navigates using page IDs: the router looks up the route pattern from the page registry.
|
|
20
20
|
*/
|
|
21
21
|
export declare function useNavigate(): NavigateFn;
|
|
22
22
|
/**
|
package/dist/react/hooks.js
CHANGED
|
@@ -23,7 +23,7 @@ function useRouteContext() {
|
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Hook to get a type-safe navigate function.
|
|
26
|
-
* Navigates using page IDs
|
|
26
|
+
* Navigates using page IDs: the router looks up the route pattern from the page registry.
|
|
27
27
|
*/
|
|
28
28
|
export function useNavigate() {
|
|
29
29
|
const router = useRouter();
|
package/dist/react/link.d.ts
CHANGED
|
@@ -25,9 +25,9 @@ type LinkPropsBase = Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'>
|
|
|
25
25
|
asChild?: boolean;
|
|
26
26
|
/**
|
|
27
27
|
* Prefetch strategy for lazy-loaded route code.
|
|
28
|
-
* - `'intent'
|
|
29
|
-
* - `'render'
|
|
30
|
-
* - `'none'
|
|
28
|
+
* - `'intent'`: preload on mouseEnter/focus (default)
|
|
29
|
+
* - `'render'`: preload as soon as the Link renders
|
|
30
|
+
* - `'none'`: disable prefetching
|
|
31
31
|
*/
|
|
32
32
|
prefetch?: 'intent' | 'render' | 'none';
|
|
33
33
|
};
|
|
@@ -43,7 +43,7 @@ export type LinkProps<P extends RegisteredPage = RegisteredPage> = [keyof Effect
|
|
|
43
43
|
};
|
|
44
44
|
/**
|
|
45
45
|
* Type-safe link component.
|
|
46
|
-
* Uses page IDs for navigation
|
|
46
|
+
* Uses page IDs for navigation: the router looks up the route pattern from the page registry.
|
|
47
47
|
* For simple navigations, renders a native <a> and lets the Navigation API handle it.
|
|
48
48
|
* Uses programmatic navigation when state, replace, resetScroll, or viewTransition is needed.
|
|
49
49
|
*
|
package/dist/react/link.js
CHANGED
|
@@ -3,7 +3,7 @@ import React, { useCallback, useEffect, useRef } from 'react';
|
|
|
3
3
|
import { useRouter, useRouterState } from './hooks.js';
|
|
4
4
|
/**
|
|
5
5
|
* Type-safe link component.
|
|
6
|
-
* Uses page IDs for navigation
|
|
6
|
+
* Uses page IDs for navigation: the router looks up the route pattern from the page registry.
|
|
7
7
|
* For simple navigations, renders a native <a> and lets the Navigation API handle it.
|
|
8
8
|
* Uses programmatic navigation when state, replace, resetScroll, or viewTransition is needed.
|
|
9
9
|
*
|
package/dist/react/outlet.js
CHANGED
|
@@ -8,7 +8,7 @@ function DefaultNotFound() {
|
|
|
8
8
|
style: { fontFamily: 'system-ui, sans-serif', padding: '2rem', maxWidth: '600px', margin: '0 auto' },
|
|
9
9
|
}, isDev
|
|
10
10
|
? [
|
|
11
|
-
React.createElement('h1', { key: 'h' }, '404
|
|
11
|
+
React.createElement('h1', { key: 'h' }, '404: Page Not Found'),
|
|
12
12
|
React.createElement('p', { key: 'p1' }, `No route matches "${typeof window !== 'undefined' ? window.location.pathname : ''}".`),
|
|
13
13
|
React.createElement('p', {
|
|
14
14
|
key: 'p2',
|
|
@@ -56,7 +56,7 @@ export function Outlet({ fallback, errorFallback, notFound }) {
|
|
|
56
56
|
};
|
|
57
57
|
}, [state, depth, effectiveDepth, matches, match, routeContext.params]);
|
|
58
58
|
if (!match) {
|
|
59
|
-
// At root depth with no matches
|
|
59
|
+
// At root depth with no matches: show 404
|
|
60
60
|
if (depth === 0 && matches.length === 0) {
|
|
61
61
|
if (notFound === null)
|
|
62
62
|
return null;
|
package/dist/react/outlet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outlet.js","sourceRoot":"","sources":["../../src/react/outlet.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACrD,OAAO,EAAE,YAAY,EAA0B,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAA;AAErF,SAAS,eAAe;IACvB,OAAO,KAAK,CAAC,aAAa,CACzB,KAAK,EACL;QACC,KAAK,EAAE,EAAE,UAAU,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;KACpG,EACD,KAAK;QACJ,CAAC,CAAC;YACD,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"outlet.js","sourceRoot":"","sources":["../../src/react/outlet.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -610,7 +610,7 @@ describe('redirect()', () => {
|
|
|
610
610
|
})
|
|
611
611
|
.render(() => null)
|
|
612
612
|
|
|
613
|
-
expect(typeof receivedRedirect).toBe('undefined') // not called yet
|
|
613
|
+
expect(typeof receivedRedirect).toBe('undefined') // not called yet: component not rendered
|
|
614
614
|
// Verify the type is correct by checking the function signature
|
|
615
615
|
expect(page.__buzolaPage).toBe(true)
|
|
616
616
|
})
|
|
@@ -74,7 +74,7 @@ describe('PageLoaderState', () => {
|
|
|
74
74
|
})
|
|
75
75
|
|
|
76
76
|
describe('invalidation (cache key change)', () => {
|
|
77
|
-
it('with stale data
|
|
77
|
+
it('with stale data: returns stale data with isLoading and starts background fetch', () => {
|
|
78
78
|
const state = createState()
|
|
79
79
|
resolveCtx(state, { cacheKey: 'k:0' })
|
|
80
80
|
state.commitResult('stale-data')
|
|
@@ -93,12 +93,12 @@ describe('PageLoaderState', () => {
|
|
|
93
93
|
expect(bgLoad).toBeDefined()
|
|
94
94
|
})
|
|
95
95
|
|
|
96
|
-
it('without stale data
|
|
96
|
+
it('without stale data: returns suspend instruction', () => {
|
|
97
97
|
const state = createState()
|
|
98
98
|
const promise = Promise.resolve('data')
|
|
99
99
|
const instruction = resolveCtx(state, { cacheKey: 'k:0', load: () => promise })
|
|
100
100
|
|
|
101
|
-
// No commitResult called
|
|
101
|
+
// No commitResult called: no stale data
|
|
102
102
|
const second = resolveCtx(state, { cacheKey: 'k:1', load: () => Promise.resolve('new') })
|
|
103
103
|
expect(second.action).toBe('suspend')
|
|
104
104
|
})
|
|
@@ -149,7 +149,7 @@ describe('PageLoaderState', () => {
|
|
|
149
149
|
onBackgroundSettled: settled1,
|
|
150
150
|
})
|
|
151
151
|
|
|
152
|
-
// Immediately invalidate again
|
|
152
|
+
// Immediately invalidate again: supersedes the first background fetch
|
|
153
153
|
state.commitBackgroundResult('stale') // commit so hasResolved stays true
|
|
154
154
|
const settled2 = mock(() => {})
|
|
155
155
|
resolveCtx(state, {
|
|
@@ -200,7 +200,7 @@ describe('PageLoaderState', () => {
|
|
|
200
200
|
resolveCtx(state, { url: 'http://localhost/a', cacheKey: 'a:0', loaderCache: cache })
|
|
201
201
|
state.commitResult('data-a')
|
|
202
202
|
|
|
203
|
-
// Navigate to B
|
|
203
|
+
// Navigate to B: should save A's data to cache
|
|
204
204
|
resolveCtx(state, { url: 'http://localhost/b', cacheKey: 'b:0', loaderCache: cache })
|
|
205
205
|
|
|
206
206
|
expect(cache.size).toBe(1)
|
|
@@ -218,7 +218,7 @@ describe('PageLoaderState', () => {
|
|
|
218
218
|
resolveCtx(state, { url: 'http://localhost/b', cacheKey: 'b:0', loaderCache: cache })
|
|
219
219
|
state.commitResult('data-b')
|
|
220
220
|
|
|
221
|
-
// Navigate back to A
|
|
221
|
+
// Navigate back to A: should restore from cache
|
|
222
222
|
const instruction = resolveCtx(state, {
|
|
223
223
|
url: 'http://localhost/a',
|
|
224
224
|
cacheKey: 'a:0',
|
|
@@ -229,11 +229,11 @@ describe('PageLoaderState', () => {
|
|
|
229
229
|
expect(instruction.action).toBe('render')
|
|
230
230
|
if (instruction.action === 'render') {
|
|
231
231
|
expect(instruction.data).toBe('data-a')
|
|
232
|
-
expect(instruction.isLoading).toBe(true) // SWR
|
|
232
|
+
expect(instruction.isLoading).toBe(true) // SWR: stale data + background reload
|
|
233
233
|
}
|
|
234
234
|
})
|
|
235
235
|
|
|
236
|
-
it('keeps data as stale when only the query changes
|
|
236
|
+
it('keeps data as stale when only the query changes: no suspend', () => {
|
|
237
237
|
const cache = new LoaderCache(10)
|
|
238
238
|
const state = createState()
|
|
239
239
|
|
|
@@ -301,7 +301,7 @@ describe('PageLoaderState', () => {
|
|
|
301
301
|
// Load A without committing (no stale data to cache)
|
|
302
302
|
resolveCtx(state, { url: 'http://localhost/a', cacheKey: 'a:0', loaderCache: cache })
|
|
303
303
|
|
|
304
|
-
// Navigate to B
|
|
304
|
+
// Navigate to B: no cache for B
|
|
305
305
|
const instruction = resolveCtx(state, {
|
|
306
306
|
url: 'http://localhost/b',
|
|
307
307
|
cacheKey: 'b:0',
|
|
@@ -317,7 +317,7 @@ describe('PageLoaderState', () => {
|
|
|
317
317
|
const cache = new LoaderCache(10)
|
|
318
318
|
const state1 = createState()
|
|
319
319
|
|
|
320
|
-
// First mount
|
|
320
|
+
// First mount: load and dispose
|
|
321
321
|
resolveCtx(state1, { url: 'http://localhost/a', cacheKey: 'a:0', loaderCache: cache })
|
|
322
322
|
state1.commitResult('cached-data')
|
|
323
323
|
state1.dispose(cache) // saves to cache
|
|
@@ -386,13 +386,13 @@ describe('PageLoaderState', () => {
|
|
|
386
386
|
})
|
|
387
387
|
|
|
388
388
|
describe('no loader cache', () => {
|
|
389
|
-
it('works without loaderCache
|
|
389
|
+
it('works without loaderCache: no stale caching', () => {
|
|
390
390
|
const state = createState()
|
|
391
391
|
|
|
392
392
|
resolveCtx(state, { url: 'http://localhost/a', cacheKey: 'a:0' })
|
|
393
393
|
state.commitResult('data-a')
|
|
394
394
|
|
|
395
|
-
// URL change without cache
|
|
395
|
+
// URL change without cache: no restore
|
|
396
396
|
const instruction = resolveCtx(state, { url: 'http://localhost/b', cacheKey: 'b:0' })
|
|
397
397
|
expect(instruction.action).toBe('suspend')
|
|
398
398
|
})
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import './setup-dom.js'
|
|
2
2
|
|
|
3
|
-
import { afterEach, describe, expect, it } from 'bun:test'
|
|
3
|
+
import { afterEach, describe, expect, it, mock } from 'bun:test'
|
|
4
4
|
import { createBrowserNavigationAdapter } from '../engine/navigation-adapter.js'
|
|
5
|
+
import type { BuzolaNavigateEvent } from '../engine/types.js'
|
|
5
6
|
|
|
6
7
|
/* The Navigation API is not implemented by happy-dom, and the parts of it this
|
|
7
8
|
adapter touches are small enough to stand in for directly. What matters here
|
|
@@ -39,7 +40,7 @@ describe('createBrowserNavigationAdapter', () => {
|
|
|
39
40
|
/* The case actually seen in the wild: the getter returns the empty string on a
|
|
40
41
|
document that is not fully active, which is what Safari handed us. `new
|
|
41
42
|
URL('')` throws just as `new URL(null)` does, and it throws out of the
|
|
42
|
-
`Router` constructor during render
|
|
43
|
+
`Router` constructor during render: a blank page, not a degraded route. An
|
|
43
44
|
empty string is falsy but not nullish, so this is the case `??` would miss. */
|
|
44
45
|
it('falls back to the document URL when the entry reports an empty URL', () => {
|
|
45
46
|
const adapter = withNavigation({ url: '' })
|
|
@@ -50,7 +51,7 @@ describe('createBrowserNavigationAdapter', () => {
|
|
|
50
51
|
/* `url` is also typed nullable: the getter returns null for entries whose
|
|
51
52
|
document is not the current one and was fetched under a `no-referrer` or
|
|
52
53
|
`origin` referrer policy. That branch needs `sameDocument` to be false, which
|
|
53
|
-
`currentEntry` never is, so it should not be reachable through this call
|
|
54
|
+
`currentEntry` never is, so it should not be reachable through this call,
|
|
54
55
|
but the type permits it and the fallback costs nothing. */
|
|
55
56
|
it('falls back to the document URL when the entry reports no URL', () => {
|
|
56
57
|
const adapter = withNavigation({ url: null })
|
|
@@ -67,3 +68,75 @@ describe('createBrowserNavigationAdapter', () => {
|
|
|
67
68
|
expect(adapter.getCurrentURL().href).toBe(window.location.href)
|
|
68
69
|
})
|
|
69
70
|
})
|
|
71
|
+
|
|
72
|
+
describe('createBrowserNavigationAdapter whenCommitted', () => {
|
|
73
|
+
/* A traversal the router does not intercept: the adapter has to spot the moment the browser
|
|
74
|
+
makes the destination the current entry, among every other entry change. */
|
|
75
|
+
function traverseTo(key: string) {
|
|
76
|
+
const listeners = new Map<string, Set<(event: unknown) => void>>()
|
|
77
|
+
const navigation = {
|
|
78
|
+
currentEntry: { url: 'https://example.test/users', key: 'users' },
|
|
79
|
+
addEventListener(type: string, listener: (event: unknown) => void) {
|
|
80
|
+
if (!listeners.has(type)) listeners.set(type, new Set())
|
|
81
|
+
listeners.get(type)?.add(listener)
|
|
82
|
+
},
|
|
83
|
+
removeEventListener(type: string, listener: (event: unknown) => void) {
|
|
84
|
+
listeners.get(type)?.delete(listener)
|
|
85
|
+
},
|
|
86
|
+
}
|
|
87
|
+
Object.defineProperty(window, 'navigation', { value: navigation, writable: true, configurable: true })
|
|
88
|
+
const fire = (type: string, event: unknown) => {
|
|
89
|
+
for (const listener of [...(listeners.get(type) ?? [])]) listener(event)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
let navigateEvent: BuzolaNavigateEvent | undefined
|
|
93
|
+
createBrowserNavigationAdapter().addEventListener('navigate', event => (navigateEvent = event))
|
|
94
|
+
fire('navigate', {
|
|
95
|
+
destination: { url: 'https://example.test/about', key, getState: () => undefined },
|
|
96
|
+
canIntercept: true,
|
|
97
|
+
navigationType: 'traverse',
|
|
98
|
+
userInitiated: true,
|
|
99
|
+
intercept() {},
|
|
100
|
+
})
|
|
101
|
+
const committed = mock(() => {})
|
|
102
|
+
navigateEvent?.whenCommitted?.(committed)
|
|
103
|
+
|
|
104
|
+
return {
|
|
105
|
+
committed,
|
|
106
|
+
/** The browser makes `entryKey` the current entry. */
|
|
107
|
+
change(entryKey: string, navigationType: string | null) {
|
|
108
|
+
if (navigationType !== null) navigation.currentEntry = { url: `https://example.test/${entryKey}`, key: entryKey }
|
|
109
|
+
fire('currententrychange', { navigationType })
|
|
110
|
+
},
|
|
111
|
+
pendingListeners: () => listeners.get('currententrychange')?.size ?? 0,
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
it('reports the commit once the destination becomes the current entry', () => {
|
|
116
|
+
const { committed, change, pendingListeners } = traverseTo('about')
|
|
117
|
+
|
|
118
|
+
change('about', 'traverse')
|
|
119
|
+
|
|
120
|
+
expect(committed).toHaveBeenCalledTimes(1)
|
|
121
|
+
expect(pendingListeners()).toBe(0)
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
it('is not fooled by updateCurrentEntry() on the entry being left', () => {
|
|
125
|
+
const { committed, change } = traverseTo('about')
|
|
126
|
+
|
|
127
|
+
change('users', null)
|
|
128
|
+
expect(committed).not.toHaveBeenCalled()
|
|
129
|
+
|
|
130
|
+
change('about', 'traverse')
|
|
131
|
+
expect(committed).toHaveBeenCalledTimes(1)
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
it('never reports a traversal that another navigation replaced, and stops listening', () => {
|
|
135
|
+
const { committed, change, pendingListeners } = traverseTo('about')
|
|
136
|
+
|
|
137
|
+
change('settings', 'push')
|
|
138
|
+
|
|
139
|
+
expect(committed).not.toHaveBeenCalled()
|
|
140
|
+
expect(pendingListeners()).toBe(0)
|
|
141
|
+
})
|
|
142
|
+
})
|
|
@@ -563,7 +563,7 @@ describe('Page loaders', () => {
|
|
|
563
563
|
})
|
|
564
564
|
await flushNav()
|
|
565
565
|
|
|
566
|
-
// No Suspense fallback
|
|
566
|
+
// No Suspense fallback: the stale render stays up until the reload lands
|
|
567
567
|
expect(container.textContent).toBe('loads:1')
|
|
568
568
|
|
|
569
569
|
await act(async () => {
|
|
@@ -672,7 +672,7 @@ describe('Outlet', () => {
|
|
|
672
672
|
{
|
|
673
673
|
path: '/admin',
|
|
674
674
|
isLayout: true,
|
|
675
|
-
// No component
|
|
675
|
+
// No component: should be skipped
|
|
676
676
|
children: [
|
|
677
677
|
{ path: '/dashboard', component: () => <div>Dashboard</div> },
|
|
678
678
|
],
|
|
@@ -952,7 +952,7 @@ describe('useBlocker', () => {
|
|
|
952
952
|
|
|
953
953
|
expect(getByTestId('state').textContent).toBe('idle')
|
|
954
954
|
|
|
955
|
-
// Try to navigate
|
|
955
|
+
// Try to navigate: should be blocked
|
|
956
956
|
router.navigate('/about')
|
|
957
957
|
await flushNav()
|
|
958
958
|
|
|
@@ -1123,7 +1123,7 @@ describe('ErrorBoundary', () => {
|
|
|
1123
1123
|
|
|
1124
1124
|
expect(container.textContent).toContain('Route error: boom')
|
|
1125
1125
|
|
|
1126
|
-
// Change resetKey and stop throwing
|
|
1126
|
+
// Change resetKey and stop throwing: should reset
|
|
1127
1127
|
rerender(
|
|
1128
1128
|
<ErrorBoundary resetKey="b">
|
|
1129
1129
|
<MaybeThrow shouldThrow={false} />
|