@buzola/router 0.0.14 → 0.0.16
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.d.ts.map +1 -1
- package/dist/define/create-page.js +17 -2
- package/dist/define/create-page.js.map +1 -1
- package/dist/engine/navigation-adapter.d.ts +6 -1
- package/dist/engine/navigation-adapter.d.ts.map +1 -1
- package/dist/engine/navigation-adapter.js +17 -3
- package/dist/engine/navigation-adapter.js.map +1 -1
- package/dist/engine/router.d.ts +15 -0
- package/dist/engine/router.d.ts.map +1 -1
- package/dist/engine/router.js +29 -0
- package/dist/engine/router.js.map +1 -1
- package/dist/engine/types.d.ts +5 -0
- package/dist/engine/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/react.test.tsx +116 -0
- package/src/__tests__/router.test.ts +94 -0
- package/src/define/create-page.tsx +18 -2
- package/src/engine/navigation-adapter.ts +24 -1
- package/src/engine/router.ts +30 -0
- package/src/engine/types.ts +5 -0
- package/src/index.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-page.d.ts","sourceRoot":"","sources":["../../src/define/create-page.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAA8D,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"create-page.d.ts","sourceRoot":"","sources":["../../src/define/create-page.tsx"],"names":[],"mappings":"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"}
|
|
@@ -74,6 +74,21 @@ function combineLoaders(loaders) {
|
|
|
74
74
|
return Object.assign({}, ...results);
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Follow a loader redirect, unless it points at the URL the page is already on —
|
|
79
|
+
* that navigation re-runs the loader, which returns the same redirect, forever.
|
|
80
|
+
*/
|
|
81
|
+
function followRedirect(router, target) {
|
|
82
|
+
if (!router)
|
|
83
|
+
return;
|
|
84
|
+
const current = router.getState().location;
|
|
85
|
+
const href = new URL(router.buildPagePath(target.pageId, target.params), current).href;
|
|
86
|
+
if (href === current.href) {
|
|
87
|
+
console.warn(`[buzola] Loader redirected to "${target.pageId}", which is the page it is already on. Ignoring to avoid a redirect loop.`);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
router.navigateToPage(target.pageId, target.params, { replace: true });
|
|
91
|
+
}
|
|
77
92
|
// ─── Component factory ──────────────────────────────────────────────────────
|
|
78
93
|
function createPageComponent(schema, paramsMeta, loaderFn, routePattern, RenderComponent, catchHandler) {
|
|
79
94
|
const arrayParams = new Set(paramsMeta.filter(m => m.array).map(m => m.name));
|
|
@@ -146,7 +161,7 @@ function createPageComponent(schema, paramsMeta, loaderFn, routePattern, RenderC
|
|
|
146
161
|
onBackgroundSettled: (outcome) => {
|
|
147
162
|
if (outcome.ok) {
|
|
148
163
|
if (outcome.result instanceof BuzolaRedirect) {
|
|
149
|
-
router
|
|
164
|
+
followRedirect(router, outcome.result);
|
|
150
165
|
return;
|
|
151
166
|
}
|
|
152
167
|
loaderState.commitBackgroundResult(outcome.result);
|
|
@@ -164,7 +179,7 @@ function createPageComponent(schema, paramsMeta, loaderFn, routePattern, RenderC
|
|
|
164
179
|
else {
|
|
165
180
|
const result = use(instruction.promise);
|
|
166
181
|
if (result instanceof BuzolaRedirect) {
|
|
167
|
-
router
|
|
182
|
+
followRedirect(router, result);
|
|
168
183
|
shouldRedirect = true;
|
|
169
184
|
}
|
|
170
185
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-page.js","sourceRoot":"","sources":["../../src/define/create-page.tsx"],"names":[],"mappings":";AACA,OAAO,EAAsB,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACtG,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"create-page.js","sourceRoot":"","sources":["../../src/define/create-page.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,5 +9,10 @@ export interface MemoryNavigationAdapterOptions {
|
|
|
9
9
|
/**
|
|
10
10
|
* Create an in-memory NavigationAdapter for testing.
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
/** The memory adapter plus the record a test needs to see what was handed to the browser. */
|
|
13
|
+
export interface MemoryNavigationAdapter extends NavigationAdapter {
|
|
14
|
+
/** URLs passed to `leaveApp`, in order. */
|
|
15
|
+
leftApp(): readonly string[];
|
|
16
|
+
}
|
|
17
|
+
export declare function createMemoryNavigationAdapter(options?: MemoryNavigationAdapterOptions): MemoryNavigationAdapter;
|
|
13
18
|
//# sourceMappingURL=navigation-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-adapter.d.ts","sourceRoot":"","sources":["../../src/engine/navigation-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwC,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAIzF;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,iBAAiB,
|
|
1
|
+
{"version":3,"file":"navigation-adapter.d.ts","sourceRoot":"","sources":["../../src/engine/navigation-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwC,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAIzF;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,iBAAiB,CAmFlE;AAID,MAAM,WAAW,8BAA8B;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAOD;;GAEG;AACH,6FAA6F;AAC7F,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IACjE,2CAA2C;IAC3C,OAAO,IAAI,SAAS,MAAM,EAAE,CAAA;CAC5B;AAED,wBAAgB,6BAA6B,CAC5C,OAAO,GAAE,8BAAmC,GAC1C,uBAAuB,CAyGzB"}
|
|
@@ -48,6 +48,11 @@ export function createBrowserNavigationAdapter() {
|
|
|
48
48
|
state: options?.state,
|
|
49
49
|
});
|
|
50
50
|
},
|
|
51
|
+
leaveApp(url) {
|
|
52
|
+
// Deliberately NOT nav.navigate(): this is the one navigation the router hands to the
|
|
53
|
+
// browser, so it must go through the plain Location API and stay cross-document.
|
|
54
|
+
window.location.assign(url);
|
|
55
|
+
},
|
|
51
56
|
back() {
|
|
52
57
|
nav.back();
|
|
53
58
|
},
|
|
@@ -74,14 +79,12 @@ export function createBrowserNavigationAdapter() {
|
|
|
74
79
|
},
|
|
75
80
|
};
|
|
76
81
|
}
|
|
77
|
-
/**
|
|
78
|
-
* Create an in-memory NavigationAdapter for testing.
|
|
79
|
-
*/
|
|
80
82
|
export function createMemoryNavigationAdapter(options = {}) {
|
|
81
83
|
const { initialURL = 'http://localhost/' } = options;
|
|
82
84
|
const entries = [{ url: initialURL }];
|
|
83
85
|
let currentIndex = 0;
|
|
84
86
|
const listeners = new Set();
|
|
87
|
+
const left = [];
|
|
85
88
|
function emitNavigateEvent(url, navigationType, commitNavigation, viewTransition) {
|
|
86
89
|
let intercepted = false;
|
|
87
90
|
let interceptHandler;
|
|
@@ -119,6 +122,14 @@ export function createMemoryNavigationAdapter(options = {}) {
|
|
|
119
122
|
getCurrentURL() {
|
|
120
123
|
return new URL(entries[currentIndex].url);
|
|
121
124
|
},
|
|
125
|
+
leaveApp(url) {
|
|
126
|
+
// A real browser would replace the document here. The memory adapter cannot, so it records
|
|
127
|
+
// the destination and still raises the event, which is what lets a test assert that the
|
|
128
|
+
// router declined to intercept it.
|
|
129
|
+
const resolved = new URL(url, entries[currentIndex].url).href;
|
|
130
|
+
left.push(resolved);
|
|
131
|
+
emitNavigateEvent(resolved, 'push', () => { });
|
|
132
|
+
},
|
|
122
133
|
navigate(url, options) {
|
|
123
134
|
const resolved = new URL(url, entries[currentIndex].url).href;
|
|
124
135
|
const type = options?.replace ? 'replace' : 'push';
|
|
@@ -157,6 +168,9 @@ export function createMemoryNavigationAdapter(options = {}) {
|
|
|
157
168
|
getState() {
|
|
158
169
|
return entries[currentIndex].state;
|
|
159
170
|
},
|
|
171
|
+
leftApp() {
|
|
172
|
+
return left;
|
|
173
|
+
},
|
|
160
174
|
};
|
|
161
175
|
}
|
|
162
176
|
//# sourceMappingURL=navigation-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-adapter.js","sourceRoot":"","sources":["../../src/engine/navigation-adapter.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,8BAA8B;IAC7C,MAAM,GAAG,GAAI,MAAsC,CAAC,UAAU,CAAA;IAC9D,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACd,8FAA8F,CAC9F,CAAA;IACF,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwC,CAAA;IACjE,IAAI,qBAAqB,GAAG,KAAK,CAAA;IAEjC,MAAM,aAAa,GAAG,CAAC,KAAoB,EAAE,EAAE;QAC9C,MAAM,cAAc,GAAG,qBAAqB,CAAA;QAC5C,qBAAqB,GAAG,KAAK,CAAA;QAE7B,MAAM,WAAW,GAAwB;YACxC,WAAW,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YAC3C,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,cAAc,EAAE,KAAK,CAAC,cAAuD;YAC7E,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,cAAc;YACd,SAAS,CAAC,OAAO;gBAChB,KAAK,CAAC,SAAS,CAAC;oBACf,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;iBAC9B,CAAC,CAAA;YACH,CAAC;SACD,CAAA;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,WAAW,CAAC,CAAA;QACtB,CAAC;IACF,CAAC,CAAA;IAED,OAAO;QACN,aAAa;YACZ,4EAA4E;YAC5E,2EAA2E;YAC3E,6EAA6E;YAC7E,4EAA4E;YAC5E,qCAAqC;YACrC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC9D,CAAC;QACD,QAAQ,CAAC,GAAG,EAAE,OAAO;YACpB,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;gBAC7B,qBAAqB,GAAG,IAAI,CAAA;YAC7B,CAAC;YACD,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACjB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;gBAC9C,KAAK,EAAE,OAAO,EAAE,KAAK;aACrB,CAAC,CAAA;QACH,CAAC;QACD,IAAI;YACH,GAAG,CAAC,IAAI,EAAE,CAAA;QACX,CAAC;QACD,OAAO;YACN,GAAG,CAAC,OAAO,EAAE,CAAA;QACd,CAAC;QACD,gBAAgB,CAAC,KAAK,EAAE,OAAO;YAC9B,sEAAsE;YACtE,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,KAAK,CAAC,CAAA;YACrC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACtB,IAAI,QAAQ,EAAE,CAAC;gBACd,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;YAChD,CAAC;QACF,CAAC;QACD,mBAAmB,CAAC,KAAK,EAAE,OAAO;YACjC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACzB,6DAA6D;YAC7D,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;YACnD,CAAC;QACF,CAAC;QACD,QAAQ;YACP,OAAO,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAA;QACtC,CAAC;KACD,CAAA;AACF,CAAC;
|
|
1
|
+
{"version":3,"file":"navigation-adapter.js","sourceRoot":"","sources":["../../src/engine/navigation-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/router.d.ts
CHANGED
|
@@ -54,6 +54,7 @@ export declare class Router {
|
|
|
54
54
|
private state;
|
|
55
55
|
private navigationId;
|
|
56
56
|
private stopFn;
|
|
57
|
+
private releasedURL;
|
|
57
58
|
private blockers;
|
|
58
59
|
private pendingScrollBehavior;
|
|
59
60
|
private pendingFocusReset;
|
|
@@ -81,6 +82,20 @@ export declare class Router {
|
|
|
81
82
|
* Call this once when the router is initialized.
|
|
82
83
|
*/
|
|
83
84
|
start(): () => void;
|
|
85
|
+
/**
|
|
86
|
+
* Hand one navigation to the browser instead of intercepting it, for a URL the SERVER owns —
|
|
87
|
+
* an auth handoff, a file download, a server-rendered page that happens to share this origin.
|
|
88
|
+
*
|
|
89
|
+
* The Navigation API offers no way for a caller to mark a navigation un-interceptable:
|
|
90
|
+
* `location.assign`, `location.href`, a link click and a form submit all raise the same event
|
|
91
|
+
* with `canIntercept` true, so a router that matches the URL will swallow it. That is easy to hit
|
|
92
|
+
* by accident, because a catch-all 404 route matches every path on the origin.
|
|
93
|
+
*
|
|
94
|
+
* The release is recorded BEFORE the navigation is requested and is keyed to the resolved URL, so
|
|
95
|
+
* it cannot race the event or release some other navigation. Unlike `navigate`, the URL is passed
|
|
96
|
+
* to the browser as given — no base path is prepended, because the target is outside the app.
|
|
97
|
+
*/
|
|
98
|
+
leaveApp(url: string): void;
|
|
84
99
|
/**
|
|
85
100
|
* Navigate programmatically.
|
|
86
101
|
* The `to` path should not include the base path — it is prepended automatically.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/engine/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAGvG;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;;CAKhD;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;AAE3D,MAAM,WAAW,aAAa;IAC7B,iCAAiC;IACjC,MAAM,EAAE,SAAS,CAAA;IACjB,8CAA8C;IAC9C,OAAO,EAAE,iBAAiB,CAAA;IAC1B,mDAAmD;IACnD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,qBAAa,MAAM;IAClB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAA8B;IAClE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,qBAAqB,CAAoD;IACjF,OAAO,CAAC,iBAAiB,CAA2C;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;gBAE1C,OAAO,EAAE,aAAa;IA0BlC;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,WAAW,GAAG,SAAS,CAEzC;IAED;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAOnD;;;OAGG;IACH,KAAK,IAAI,MAAM,IAAI;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/engine/router.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/router.js
CHANGED
|
@@ -26,6 +26,7 @@ export class Router {
|
|
|
26
26
|
state;
|
|
27
27
|
navigationId = 0;
|
|
28
28
|
stopFn;
|
|
29
|
+
releasedURL;
|
|
29
30
|
blockers = new Set();
|
|
30
31
|
pendingScrollBehavior = 'after-transition';
|
|
31
32
|
pendingFocusReset;
|
|
@@ -92,6 +93,10 @@ export class Router {
|
|
|
92
93
|
const explicitFocusReset = this.pendingFocusReset;
|
|
93
94
|
this.pendingScrollBehavior = 'after-transition';
|
|
94
95
|
this.pendingFocusReset = undefined;
|
|
96
|
+
if (this.releasedURL !== undefined && event.destination.url === this.releasedURL) {
|
|
97
|
+
this.releasedURL = undefined;
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
95
100
|
if (!event.canIntercept)
|
|
96
101
|
return;
|
|
97
102
|
const url = new URL(event.destination.url);
|
|
@@ -132,6 +137,7 @@ export class Router {
|
|
|
132
137
|
return;
|
|
133
138
|
// Perform the DOM update
|
|
134
139
|
const doUpdate = () => {
|
|
140
|
+
const previousHref = this.state.location.href;
|
|
135
141
|
this.setState({
|
|
136
142
|
location: url,
|
|
137
143
|
matches,
|
|
@@ -139,6 +145,12 @@ export class Router {
|
|
|
139
145
|
pendingLocation: undefined,
|
|
140
146
|
navigationState: this.adapter.getState(),
|
|
141
147
|
});
|
|
148
|
+
// Going to the URL we are already on is still a navigation — a browser
|
|
149
|
+
// re-requests the document for it. Loader data is keyed by href, so it
|
|
150
|
+
// would silently keep serving stale data without an explicit invalidation.
|
|
151
|
+
if (previousHref === url.href) {
|
|
152
|
+
this.invalidateAll();
|
|
153
|
+
}
|
|
142
154
|
};
|
|
143
155
|
if (useViewTransition && typeof document !== 'undefined' && 'startViewTransition' in document) {
|
|
144
156
|
;
|
|
@@ -157,6 +169,23 @@ export class Router {
|
|
|
157
169
|
this.stopFn = stop;
|
|
158
170
|
return stop;
|
|
159
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Hand one navigation to the browser instead of intercepting it, for a URL the SERVER owns —
|
|
174
|
+
* an auth handoff, a file download, a server-rendered page that happens to share this origin.
|
|
175
|
+
*
|
|
176
|
+
* The Navigation API offers no way for a caller to mark a navigation un-interceptable:
|
|
177
|
+
* `location.assign`, `location.href`, a link click and a form submit all raise the same event
|
|
178
|
+
* with `canIntercept` true, so a router that matches the URL will swallow it. That is easy to hit
|
|
179
|
+
* by accident, because a catch-all 404 route matches every path on the origin.
|
|
180
|
+
*
|
|
181
|
+
* The release is recorded BEFORE the navigation is requested and is keyed to the resolved URL, so
|
|
182
|
+
* it cannot race the event or release some other navigation. Unlike `navigate`, the URL is passed
|
|
183
|
+
* to the browser as given — no base path is prepended, because the target is outside the app.
|
|
184
|
+
*/
|
|
185
|
+
leaveApp(url) {
|
|
186
|
+
this.releasedURL = new URL(url, this.adapter.getCurrentURL()).href;
|
|
187
|
+
this.adapter.leaveApp(url);
|
|
188
|
+
}
|
|
160
189
|
/**
|
|
161
190
|
* Navigate programmatically.
|
|
162
191
|
* The `to` path should not include the base path — it is prepended automatically.
|
|
@@ -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
|
@@ -189,6 +189,11 @@ export interface NavigationAdapter {
|
|
|
189
189
|
getCurrentURL(): URL;
|
|
190
190
|
/** Navigate to a URL. */
|
|
191
191
|
navigate(url: string, options?: NavigateOptions): void;
|
|
192
|
+
/**
|
|
193
|
+
* Ask the browser for a real cross-document navigation, as-is.
|
|
194
|
+
* The router pairs this with a release so its own listener does not intercept the result.
|
|
195
|
+
*/
|
|
196
|
+
leaveApp(url: string): void;
|
|
192
197
|
/** Go back. */
|
|
193
198
|
back(): void;
|
|
194
199
|
/** Go forward. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { buildRouteTree, createRouteNode } from './engine/route-tree.js';
|
|
|
5
5
|
export type { CreateRouteNodeOptions } from './engine/route-tree.js';
|
|
6
6
|
export { matchRoutes } from './engine/matcher.js';
|
|
7
7
|
export { createBrowserNavigationAdapter, createMemoryNavigationAdapter } from './engine/navigation-adapter.js';
|
|
8
|
-
export type { MemoryNavigationAdapterOptions } from './engine/navigation-adapter.js';
|
|
8
|
+
export type { MemoryNavigationAdapter, MemoryNavigationAdapterOptions } from './engine/navigation-adapter.js';
|
|
9
9
|
export type { BlockerFn, BuzolaNavigateEvent, BuzolaPageMap, BuzolaPersistentParams, EffectivePageParams, NavigateOptions, NavigationAdapter, PageParams, RegisteredPage, RouteComponent, RouteConfig, RouteMatch, RouteNode, RouterState, RouteTree, StandardSchema, } from './engine/types.js';
|
|
10
10
|
export { s } from './engine/schema.js';
|
|
11
11
|
export { BuzolaRedirect, createPage, redirect } from './define/create-page.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AACnE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAEzE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxE,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,OAAO,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAC9G,YAAY,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AACnE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAEzE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxE,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,OAAO,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAC9G,YAAY,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAA;AAG7G,YAAY,EACX,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,cAAc,GACd,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAA;AAGtC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAC9E,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGlG,OAAO,EACN,cAAc,EACd,aAAa,EACb,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,cAAc,EACd,eAAe,GACf,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA"}
|
package/package.json
CHANGED
|
@@ -2,6 +2,7 @@ import './setup-dom.js'
|
|
|
2
2
|
import { act, cleanup, fireEvent, render, renderHook } from '@testing-library/react'
|
|
3
3
|
import { afterEach, describe, expect, it, mock, spyOn } from 'bun:test'
|
|
4
4
|
import React from 'react'
|
|
5
|
+
import { BuzolaRedirect, createPage } from '../define/create-page.js'
|
|
5
6
|
import { createMemoryNavigationAdapter } from '../engine/navigation-adapter.js'
|
|
6
7
|
import { buildRouteTree } from '../engine/route-tree.js'
|
|
7
8
|
import { Router } from '../engine/router.js'
|
|
@@ -500,6 +501,121 @@ describe('useInvalidate', () => {
|
|
|
500
501
|
})
|
|
501
502
|
})
|
|
502
503
|
|
|
504
|
+
// ─── Page loaders ────────────────────────────────────────────────────────────
|
|
505
|
+
|
|
506
|
+
describe('Page loaders', () => {
|
|
507
|
+
/** A loader suspends on mount, so the first render has to be awaited inside act() to commit. */
|
|
508
|
+
async function renderRoutes(configs: RouteConfig[], url: string, pageRegistry?: Record<string, string>) {
|
|
509
|
+
const { router, adapter } = createTestRouter(configs, url, pageRegistry ? { pageRegistry } : undefined)
|
|
510
|
+
let container!: HTMLElement
|
|
511
|
+
await act(async () => {
|
|
512
|
+
container = render(
|
|
513
|
+
<BuzolaProvider router={router}>
|
|
514
|
+
<React.Suspense fallback={<div>loading</div>}>
|
|
515
|
+
<Outlet />
|
|
516
|
+
</React.Suspense>
|
|
517
|
+
</BuzolaProvider>,
|
|
518
|
+
).container
|
|
519
|
+
})
|
|
520
|
+
return { router, adapter, container }
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
function renderPage(page: { component: React.ComponentType }, url: string, pageRegistry?: Record<string, string>) {
|
|
524
|
+
return renderRoutes([{ path: new URL(url).pathname, component: page.component }], url, pageRegistry)
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
it('re-runs the loader when navigating to the URL the page is already on', async () => {
|
|
528
|
+
let loads = 0
|
|
529
|
+
const page = createPage()
|
|
530
|
+
.loader(async () => ({ n: ++loads }))
|
|
531
|
+
.render(({ data }) => <div>{`loads:${data.n}`}</div>)
|
|
532
|
+
|
|
533
|
+
const { router, container } = await renderPage(page, 'http://localhost/dashboard')
|
|
534
|
+
await flushNav()
|
|
535
|
+
expect(container.textContent).toBe('loads:1')
|
|
536
|
+
|
|
537
|
+
await act(async () => {
|
|
538
|
+
router.navigate('/dashboard')
|
|
539
|
+
})
|
|
540
|
+
await flushNav()
|
|
541
|
+
|
|
542
|
+
expect(container.textContent).toBe('loads:2')
|
|
543
|
+
})
|
|
544
|
+
|
|
545
|
+
it('serves the previous data while the same-URL reload is in flight', async () => {
|
|
546
|
+
let resolveSecond: ((value: { n: number }) => void) | undefined
|
|
547
|
+
let loads = 0
|
|
548
|
+
const page = createPage()
|
|
549
|
+
.loader(async () => {
|
|
550
|
+
loads++
|
|
551
|
+
if (loads === 1) return { n: 1 }
|
|
552
|
+
return new Promise<{ n: number }>(resolve => {
|
|
553
|
+
resolveSecond = resolve
|
|
554
|
+
})
|
|
555
|
+
})
|
|
556
|
+
.render(({ data }) => <div>{`loads:${data.n}`}</div>)
|
|
557
|
+
|
|
558
|
+
const { router, container } = await renderPage(page, 'http://localhost/dashboard')
|
|
559
|
+
await flushNav()
|
|
560
|
+
|
|
561
|
+
await act(async () => {
|
|
562
|
+
router.navigate('/dashboard')
|
|
563
|
+
})
|
|
564
|
+
await flushNav()
|
|
565
|
+
|
|
566
|
+
// No Suspense fallback — the stale render stays up until the reload lands
|
|
567
|
+
expect(container.textContent).toBe('loads:1')
|
|
568
|
+
|
|
569
|
+
await act(async () => {
|
|
570
|
+
resolveSecond?.({ n: 2 })
|
|
571
|
+
})
|
|
572
|
+
await flushNav()
|
|
573
|
+
|
|
574
|
+
expect(container.textContent).toBe('loads:2')
|
|
575
|
+
})
|
|
576
|
+
|
|
577
|
+
it('ignores a loader redirect that targets the page it is already on', async () => {
|
|
578
|
+
const warn = spyOn(console, 'warn').mockImplementation(() => {})
|
|
579
|
+
try {
|
|
580
|
+
let loads = 0
|
|
581
|
+
const page = createPage()
|
|
582
|
+
.loader(async () => {
|
|
583
|
+
loads++
|
|
584
|
+
return new BuzolaRedirect('dashboard')
|
|
585
|
+
})
|
|
586
|
+
.render(() => <div>never rendered</div>)
|
|
587
|
+
|
|
588
|
+
const { router } = await renderPage(page, 'http://localhost/dashboard', { dashboard: '/dashboard' })
|
|
589
|
+
await flushNav()
|
|
590
|
+
|
|
591
|
+
// Without the guard the refused navigation would re-run the loader forever
|
|
592
|
+
expect(loads).toBe(1)
|
|
593
|
+
expect(warn).toHaveBeenCalled()
|
|
594
|
+
expect(router.getState().location.pathname).toBe('/dashboard')
|
|
595
|
+
} finally {
|
|
596
|
+
warn.mockRestore()
|
|
597
|
+
}
|
|
598
|
+
})
|
|
599
|
+
|
|
600
|
+
it('still follows a loader redirect to a different page', async () => {
|
|
601
|
+
const page = createPage()
|
|
602
|
+
.loader(async () => new BuzolaRedirect('about'))
|
|
603
|
+
.render(() => <div>never rendered</div>)
|
|
604
|
+
|
|
605
|
+
const { router } = await renderRoutes(
|
|
606
|
+
[
|
|
607
|
+
{ path: '/dashboard', component: page.component },
|
|
608
|
+
{ path: '/about', component: About },
|
|
609
|
+
],
|
|
610
|
+
'http://localhost/dashboard',
|
|
611
|
+
{ about: '/about' },
|
|
612
|
+
)
|
|
613
|
+
await flushNav()
|
|
614
|
+
|
|
615
|
+
expect(router.getState().location.pathname).toBe('/about')
|
|
616
|
+
})
|
|
617
|
+
})
|
|
618
|
+
|
|
503
619
|
// ─── Outlet ──────────────────────────────────────────────────────────────────
|
|
504
620
|
|
|
505
621
|
describe('Outlet', () => {
|
|
@@ -277,6 +277,46 @@ describe('Router.preload', () => {
|
|
|
277
277
|
})
|
|
278
278
|
})
|
|
279
279
|
|
|
280
|
+
describe('Router same-URL navigation', () => {
|
|
281
|
+
function createCountingRouter(initialURL: string) {
|
|
282
|
+
const { router } = createRouter([
|
|
283
|
+
{ path: '/', component: dummyComponent, isIndex: true },
|
|
284
|
+
{ path: '/list', component: dummyComponent },
|
|
285
|
+
], initialURL)
|
|
286
|
+
|
|
287
|
+
let invalidations = 0
|
|
288
|
+
router.onInvalidate(() => invalidations++)
|
|
289
|
+
|
|
290
|
+
return { router, count: () => invalidations }
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
it('invalidates loaders when navigating to the URL it is already on', () => {
|
|
294
|
+
const { router, count } = createCountingRouter('http://localhost/list')
|
|
295
|
+
|
|
296
|
+
router.navigate('/list')
|
|
297
|
+
|
|
298
|
+
expect(count()).toBe(1)
|
|
299
|
+
expect(router.getState().location.pathname).toBe('/list')
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
it('invalidates on a same-URL replace too', () => {
|
|
303
|
+
const { router, count } = createCountingRouter('http://localhost/list?q=1')
|
|
304
|
+
|
|
305
|
+
router.navigate('/list?q=1', { replace: true })
|
|
306
|
+
|
|
307
|
+
expect(count()).toBe(1)
|
|
308
|
+
})
|
|
309
|
+
|
|
310
|
+
it('does not invalidate when the URL changes — the href-keyed loader reloads on its own', () => {
|
|
311
|
+
const { router, count } = createCountingRouter('http://localhost/')
|
|
312
|
+
|
|
313
|
+
router.navigate('/list')
|
|
314
|
+
router.navigate('/list?q=1')
|
|
315
|
+
|
|
316
|
+
expect(count()).toBe(0)
|
|
317
|
+
})
|
|
318
|
+
})
|
|
319
|
+
|
|
280
320
|
describe('Router focus reset', () => {
|
|
281
321
|
function createCapturingRouter(initialURL: string) {
|
|
282
322
|
const routes = buildRouteTree([
|
|
@@ -380,3 +420,57 @@ describe('Router focus reset', () => {
|
|
|
380
420
|
}
|
|
381
421
|
})
|
|
382
422
|
})
|
|
423
|
+
|
|
424
|
+
describe('Router.leaveApp', () => {
|
|
425
|
+
// A catch-all 404 route matches every path on the origin, so without a release the router
|
|
426
|
+
// swallows the server's own URLs and renders "Not found" with no request ever sent.
|
|
427
|
+
// Shaped like a codegen'd tree: the catch-all is a child of the root layout, not its sibling.
|
|
428
|
+
const withCatchAll: RouteConfig[] = [
|
|
429
|
+
{
|
|
430
|
+
path: '/',
|
|
431
|
+
component: dummyComponent,
|
|
432
|
+
isLayout: true,
|
|
433
|
+
children: [
|
|
434
|
+
{ path: '/', component: dummyComponent, isIndex: true },
|
|
435
|
+
{ path: '/about', component: dummyComponent },
|
|
436
|
+
{ path: '/:__notFound+', component: dummyComponent },
|
|
437
|
+
],
|
|
438
|
+
},
|
|
439
|
+
]
|
|
440
|
+
|
|
441
|
+
it('hands the URL to the browser instead of intercepting it', () => {
|
|
442
|
+
const { router, adapter } = createRouter(withCatchAll)
|
|
443
|
+
|
|
444
|
+
router.leaveApp('/api/source/github/manifest/abc')
|
|
445
|
+
|
|
446
|
+
expect(adapter.leftApp()).toEqual(['http://localhost/api/source/github/manifest/abc'])
|
|
447
|
+
// The router did not take it: state still points at the page the user was on.
|
|
448
|
+
expect(router.getState().location.pathname).toBe('/')
|
|
449
|
+
})
|
|
450
|
+
|
|
451
|
+
it('would otherwise intercept that same URL', () => {
|
|
452
|
+
const { router } = createRouter(withCatchAll)
|
|
453
|
+
|
|
454
|
+
router.navigate('/api/source/github/manifest/abc')
|
|
455
|
+
|
|
456
|
+
expect(router.getState().location.pathname).toBe('/api/source/github/manifest/abc')
|
|
457
|
+
})
|
|
458
|
+
|
|
459
|
+
it('releases exactly one navigation, and only the one it named', () => {
|
|
460
|
+
const { router } = createRouter(withCatchAll)
|
|
461
|
+
|
|
462
|
+
router.leaveApp('/api/one')
|
|
463
|
+
router.navigate('/api/two')
|
|
464
|
+
|
|
465
|
+
expect(router.getState().location.pathname).toBe('/api/two')
|
|
466
|
+
})
|
|
467
|
+
|
|
468
|
+
it('releases a URL the router does have a route for', () => {
|
|
469
|
+
const { router, adapter } = createRouter(withCatchAll)
|
|
470
|
+
|
|
471
|
+
router.leaveApp('/about')
|
|
472
|
+
|
|
473
|
+
expect(adapter.leftApp()).toEqual(['http://localhost/about'])
|
|
474
|
+
expect(router.getState().location.pathname).toBe('/')
|
|
475
|
+
})
|
|
476
|
+
})
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ReactElement } from 'react'
|
|
2
2
|
import { type ComponentType, use, useCallback, useEffect, useMemo, useReducer, useState } from 'react'
|
|
3
3
|
import { PageLoaderState } from '../engine/loader-state.js'
|
|
4
|
+
import type { Router } from '../engine/router.js'
|
|
4
5
|
import { isOptionalSchema, type ParamLiteral, resolveParamLiteral, validateSchema } from '../engine/schema.js'
|
|
5
6
|
import type { EffectivePageParams, RegisteredPage, RouteComponent, StandardSchema } from '../engine/types.js'
|
|
6
7
|
import { extractParamNames } from '../engine/utils.js'
|
|
@@ -154,6 +155,21 @@ function combineLoaders(loaders: LoaderFn[]): LoaderFn | undefined {
|
|
|
154
155
|
}
|
|
155
156
|
}
|
|
156
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Follow a loader redirect, unless it points at the URL the page is already on —
|
|
160
|
+
* that navigation re-runs the loader, which returns the same redirect, forever.
|
|
161
|
+
*/
|
|
162
|
+
function followRedirect(router: Router | null, target: BuzolaRedirect): void {
|
|
163
|
+
if (!router) return
|
|
164
|
+
const current = router.getState().location
|
|
165
|
+
const href = new URL(router.buildPagePath(target.pageId, target.params), current).href
|
|
166
|
+
if (href === current.href) {
|
|
167
|
+
console.warn(`[buzola] Loader redirected to "${target.pageId}", which is the page it is already on. Ignoring to avoid a redirect loop.`)
|
|
168
|
+
return
|
|
169
|
+
}
|
|
170
|
+
router.navigateToPage(target.pageId, target.params, { replace: true })
|
|
171
|
+
}
|
|
172
|
+
|
|
157
173
|
// ─── Component factory ──────────────────────────────────────────────────────
|
|
158
174
|
|
|
159
175
|
function createPageComponent<TParams>(
|
|
@@ -248,7 +264,7 @@ function createPageComponent<TParams>(
|
|
|
248
264
|
onBackgroundSettled: (outcome) => {
|
|
249
265
|
if (outcome.ok) {
|
|
250
266
|
if (outcome.result instanceof BuzolaRedirect) {
|
|
251
|
-
router
|
|
267
|
+
followRedirect(router, outcome.result)
|
|
252
268
|
return
|
|
253
269
|
}
|
|
254
270
|
loaderState.commitBackgroundResult(outcome.result)
|
|
@@ -265,7 +281,7 @@ function createPageComponent<TParams>(
|
|
|
265
281
|
} else {
|
|
266
282
|
const result = use(instruction.promise)
|
|
267
283
|
if (result instanceof BuzolaRedirect) {
|
|
268
|
-
router
|
|
284
|
+
followRedirect(router, result)
|
|
269
285
|
shouldRedirect = true
|
|
270
286
|
} else {
|
|
271
287
|
data = result
|
|
@@ -58,6 +58,11 @@ export function createBrowserNavigationAdapter(): NavigationAdapter {
|
|
|
58
58
|
state: options?.state,
|
|
59
59
|
})
|
|
60
60
|
},
|
|
61
|
+
leaveApp(url) {
|
|
62
|
+
// Deliberately NOT nav.navigate(): this is the one navigation the router hands to the
|
|
63
|
+
// browser, so it must go through the plain Location API and stay cross-document.
|
|
64
|
+
window.location.assign(url)
|
|
65
|
+
},
|
|
61
66
|
back() {
|
|
62
67
|
nav.back()
|
|
63
68
|
},
|
|
@@ -99,14 +104,21 @@ interface MemoryEntry {
|
|
|
99
104
|
/**
|
|
100
105
|
* Create an in-memory NavigationAdapter for testing.
|
|
101
106
|
*/
|
|
107
|
+
/** The memory adapter plus the record a test needs to see what was handed to the browser. */
|
|
108
|
+
export interface MemoryNavigationAdapter extends NavigationAdapter {
|
|
109
|
+
/** URLs passed to `leaveApp`, in order. */
|
|
110
|
+
leftApp(): readonly string[]
|
|
111
|
+
}
|
|
112
|
+
|
|
102
113
|
export function createMemoryNavigationAdapter(
|
|
103
114
|
options: MemoryNavigationAdapterOptions = {},
|
|
104
|
-
):
|
|
115
|
+
): MemoryNavigationAdapter {
|
|
105
116
|
const { initialURL = 'http://localhost/' } = options
|
|
106
117
|
|
|
107
118
|
const entries: MemoryEntry[] = [{ url: initialURL }]
|
|
108
119
|
let currentIndex = 0
|
|
109
120
|
const listeners = new Set<(event: BuzolaNavigateEvent) => void>()
|
|
121
|
+
const left: string[] = []
|
|
110
122
|
|
|
111
123
|
function emitNavigateEvent(
|
|
112
124
|
url: string,
|
|
@@ -155,6 +167,14 @@ export function createMemoryNavigationAdapter(
|
|
|
155
167
|
getCurrentURL() {
|
|
156
168
|
return new URL(entries[currentIndex].url)
|
|
157
169
|
},
|
|
170
|
+
leaveApp(url) {
|
|
171
|
+
// A real browser would replace the document here. The memory adapter cannot, so it records
|
|
172
|
+
// the destination and still raises the event, which is what lets a test assert that the
|
|
173
|
+
// router declined to intercept it.
|
|
174
|
+
const resolved = new URL(url, entries[currentIndex].url).href
|
|
175
|
+
left.push(resolved)
|
|
176
|
+
emitNavigateEvent(resolved, 'push', () => {})
|
|
177
|
+
},
|
|
158
178
|
navigate(url, options) {
|
|
159
179
|
const resolved = new URL(url, entries[currentIndex].url).href
|
|
160
180
|
const type = options?.replace ? 'replace' : 'push'
|
|
@@ -193,5 +213,8 @@ export function createMemoryNavigationAdapter(
|
|
|
193
213
|
getState() {
|
|
194
214
|
return entries[currentIndex].state
|
|
195
215
|
},
|
|
216
|
+
leftApp() {
|
|
217
|
+
return left
|
|
218
|
+
},
|
|
196
219
|
}
|
|
197
220
|
}
|
package/src/engine/router.ts
CHANGED
|
@@ -63,6 +63,7 @@ export class Router {
|
|
|
63
63
|
private state: RouterState
|
|
64
64
|
private navigationId = 0
|
|
65
65
|
private stopFn: (() => void) | undefined
|
|
66
|
+
private releasedURL: string | undefined
|
|
66
67
|
private blockers = new Set<BlockerFn>()
|
|
67
68
|
private pendingScrollBehavior: 'after-transition' | 'manual' = 'after-transition'
|
|
68
69
|
private pendingFocusReset: 'after-transition' | 'manual' | undefined
|
|
@@ -139,6 +140,10 @@ export class Router {
|
|
|
139
140
|
this.pendingScrollBehavior = 'after-transition'
|
|
140
141
|
this.pendingFocusReset = undefined
|
|
141
142
|
|
|
143
|
+
if (this.releasedURL !== undefined && event.destination.url === this.releasedURL) {
|
|
144
|
+
this.releasedURL = undefined
|
|
145
|
+
return
|
|
146
|
+
}
|
|
142
147
|
if (!event.canIntercept) return
|
|
143
148
|
|
|
144
149
|
const url = new URL(event.destination.url)
|
|
@@ -182,6 +187,7 @@ export class Router {
|
|
|
182
187
|
|
|
183
188
|
// Perform the DOM update
|
|
184
189
|
const doUpdate = () => {
|
|
190
|
+
const previousHref = this.state.location.href
|
|
185
191
|
this.setState({
|
|
186
192
|
location: url,
|
|
187
193
|
matches,
|
|
@@ -189,6 +195,12 @@ export class Router {
|
|
|
189
195
|
pendingLocation: undefined,
|
|
190
196
|
navigationState: this.adapter.getState(),
|
|
191
197
|
})
|
|
198
|
+
// Going to the URL we are already on is still a navigation — a browser
|
|
199
|
+
// re-requests the document for it. Loader data is keyed by href, so it
|
|
200
|
+
// would silently keep serving stale data without an explicit invalidation.
|
|
201
|
+
if (previousHref === url.href) {
|
|
202
|
+
this.invalidateAll()
|
|
203
|
+
}
|
|
192
204
|
}
|
|
193
205
|
|
|
194
206
|
if (useViewTransition && typeof document !== 'undefined' && 'startViewTransition' in document) {
|
|
@@ -210,6 +222,24 @@ export class Router {
|
|
|
210
222
|
return stop
|
|
211
223
|
}
|
|
212
224
|
|
|
225
|
+
/**
|
|
226
|
+
* Hand one navigation to the browser instead of intercepting it, for a URL the SERVER owns —
|
|
227
|
+
* an auth handoff, a file download, a server-rendered page that happens to share this origin.
|
|
228
|
+
*
|
|
229
|
+
* The Navigation API offers no way for a caller to mark a navigation un-interceptable:
|
|
230
|
+
* `location.assign`, `location.href`, a link click and a form submit all raise the same event
|
|
231
|
+
* with `canIntercept` true, so a router that matches the URL will swallow it. That is easy to hit
|
|
232
|
+
* by accident, because a catch-all 404 route matches every path on the origin.
|
|
233
|
+
*
|
|
234
|
+
* The release is recorded BEFORE the navigation is requested and is keyed to the resolved URL, so
|
|
235
|
+
* it cannot race the event or release some other navigation. Unlike `navigate`, the URL is passed
|
|
236
|
+
* to the browser as given — no base path is prepended, because the target is outside the app.
|
|
237
|
+
*/
|
|
238
|
+
leaveApp(url: string): void {
|
|
239
|
+
this.releasedURL = new URL(url, this.adapter.getCurrentURL()).href
|
|
240
|
+
this.adapter.leaveApp(url)
|
|
241
|
+
}
|
|
242
|
+
|
|
213
243
|
/**
|
|
214
244
|
* Navigate programmatically.
|
|
215
245
|
* The `to` path should not include the base path — it is prepended automatically.
|
package/src/engine/types.ts
CHANGED
|
@@ -207,6 +207,11 @@ export interface NavigationAdapter {
|
|
|
207
207
|
getCurrentURL(): URL
|
|
208
208
|
/** Navigate to a URL. */
|
|
209
209
|
navigate(url: string, options?: NavigateOptions): void
|
|
210
|
+
/**
|
|
211
|
+
* Ask the browser for a real cross-document navigation, as-is.
|
|
212
|
+
* The router pairs this with a release so its own listener does not intercept the result.
|
|
213
|
+
*/
|
|
214
|
+
leaveApp(url: string): void
|
|
210
215
|
/** Go back. */
|
|
211
216
|
back(): void
|
|
212
217
|
/** Go forward. */
|
package/src/index.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type { CreateRouteNodeOptions } from './engine/route-tree.js'
|
|
|
10
10
|
export { matchRoutes } from './engine/matcher.js'
|
|
11
11
|
|
|
12
12
|
export { createBrowserNavigationAdapter, createMemoryNavigationAdapter } from './engine/navigation-adapter.js'
|
|
13
|
-
export type { MemoryNavigationAdapterOptions } from './engine/navigation-adapter.js'
|
|
13
|
+
export type { MemoryNavigationAdapter, MemoryNavigationAdapterOptions } from './engine/navigation-adapter.js'
|
|
14
14
|
|
|
15
15
|
// ─── Types ──────────────────────────────────────────────────────────────────
|
|
16
16
|
export type {
|