@tanstack/react-router 1.39.8 → 1.41.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/dist/cjs/CatchBoundary.d.cts +2 -2
- package/dist/cjs/Match.cjs +238 -0
- package/dist/cjs/Match.cjs.map +1 -0
- package/dist/cjs/Match.d.cts +5 -0
- package/dist/cjs/Matches.cjs +8 -253
- package/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/Matches.d.cts +2 -11
- package/dist/cjs/RouterProvider.cjs.map +1 -1
- package/dist/cjs/RouterProvider.d.cts +3 -2
- package/dist/cjs/SafeFragment.cjs +8 -0
- package/dist/cjs/SafeFragment.cjs.map +1 -0
- package/dist/cjs/SafeFragment.d.cts +1 -0
- package/dist/cjs/ScriptOnce.cjs +28 -0
- package/dist/cjs/ScriptOnce.cjs.map +1 -0
- package/dist/cjs/ScriptOnce.d.cts +5 -0
- package/dist/cjs/Transitioner.cjs +2 -1
- package/dist/cjs/Transitioner.cjs.map +1 -1
- package/dist/cjs/awaited.cjs +14 -71
- package/dist/cjs/awaited.cjs.map +1 -1
- package/dist/cjs/awaited.d.cts +3 -6
- package/dist/cjs/defer.cjs +7 -13
- package/dist/cjs/defer.cjs.map +1 -1
- package/dist/cjs/defer.d.cts +2 -6
- package/dist/cjs/index.cjs +11 -7
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +8 -3
- package/dist/cjs/isServerSideError.cjs +22 -0
- package/dist/cjs/isServerSideError.cjs.map +1 -0
- package/dist/cjs/isServerSideError.d.cts +5 -0
- package/dist/cjs/link.cjs +8 -9
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/link.d.cts +1 -0
- package/dist/cjs/matchContext.cjs +23 -0
- package/dist/cjs/matchContext.cjs.map +1 -0
- package/dist/cjs/matchContext.d.cts +2 -0
- package/dist/cjs/not-found.cjs +1 -2
- package/dist/cjs/not-found.cjs.map +1 -1
- package/dist/cjs/not-found.d.cts +2 -2
- package/dist/cjs/path.cjs +3 -6
- package/dist/cjs/path.cjs.map +1 -1
- package/dist/cjs/qss.cjs +3 -6
- package/dist/cjs/qss.cjs.map +1 -1
- package/dist/cjs/qss.d.cts +1 -1
- package/dist/cjs/redirects.cjs.map +1 -1
- package/dist/cjs/renderRouteNotFound.cjs +22 -0
- package/dist/cjs/renderRouteNotFound.cjs.map +1 -0
- package/dist/cjs/renderRouteNotFound.d.cts +4 -0
- package/dist/cjs/root.cjs.map +1 -1
- package/dist/cjs/root.d.cts +1 -1
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/router.cjs +33 -26
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/router.d.cts +16 -11
- package/dist/cjs/scroll-restoration.cjs +1 -2
- package/dist/cjs/scroll-restoration.cjs.map +1 -1
- package/dist/cjs/useMatch.cjs +2 -2
- package/dist/cjs/useMatch.cjs.map +1 -1
- package/dist/cjs/utils.cjs +4 -3
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/cjs/utils.d.cts +3 -2
- package/dist/esm/CatchBoundary.d.ts +2 -2
- package/dist/esm/Match.d.ts +5 -0
- package/dist/esm/Match.js +221 -0
- package/dist/esm/Match.js.map +1 -0
- package/dist/esm/Matches.d.ts +2 -11
- package/dist/esm/Matches.js +5 -250
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.d.ts +3 -2
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/SafeFragment.d.ts +1 -0
- package/dist/esm/SafeFragment.js +8 -0
- package/dist/esm/SafeFragment.js.map +1 -0
- package/dist/esm/ScriptOnce.d.ts +5 -0
- package/dist/esm/ScriptOnce.js +28 -0
- package/dist/esm/ScriptOnce.js.map +1 -0
- package/dist/esm/Transitioner.js +2 -1
- package/dist/esm/Transitioner.js.map +1 -1
- package/dist/esm/awaited.d.ts +3 -6
- package/dist/esm/awaited.js +16 -73
- package/dist/esm/awaited.js.map +1 -1
- package/dist/esm/defer.d.ts +2 -6
- package/dist/esm/defer.js +8 -14
- package/dist/esm/defer.js.map +1 -1
- package/dist/esm/index.d.ts +8 -3
- package/dist/esm/index.js +9 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/isServerSideError.d.ts +5 -0
- package/dist/esm/isServerSideError.js +22 -0
- package/dist/esm/isServerSideError.js.map +1 -0
- package/dist/esm/link.d.ts +1 -0
- package/dist/esm/link.js +8 -9
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/matchContext.d.ts +2 -0
- package/dist/esm/matchContext.js +6 -0
- package/dist/esm/matchContext.js.map +1 -0
- package/dist/esm/not-found.d.ts +2 -2
- package/dist/esm/not-found.js +1 -2
- package/dist/esm/not-found.js.map +1 -1
- package/dist/esm/path.js +3 -6
- package/dist/esm/path.js.map +1 -1
- package/dist/esm/qss.d.ts +1 -1
- package/dist/esm/qss.js +3 -6
- package/dist/esm/qss.js.map +1 -1
- package/dist/esm/redirects.js.map +1 -1
- package/dist/esm/renderRouteNotFound.d.ts +4 -0
- package/dist/esm/renderRouteNotFound.js +22 -0
- package/dist/esm/renderRouteNotFound.js.map +1 -0
- package/dist/esm/root.d.ts +1 -1
- package/dist/esm/root.js.map +1 -1
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/router.d.ts +16 -11
- package/dist/esm/router.js +33 -26
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/scroll-restoration.js +1 -2
- package/dist/esm/scroll-restoration.js.map +1 -1
- package/dist/esm/useMatch.js +1 -1
- package/dist/esm/useMatch.js.map +1 -1
- package/dist/esm/utils.d.ts +3 -2
- package/dist/esm/utils.js +4 -3
- package/dist/esm/utils.js.map +1 -1
- package/package.json +6 -5
- package/src/Match.tsx +296 -0
- package/src/Matches.tsx +4 -333
- package/src/RouterProvider.tsx +2 -1
- package/src/SafeFragment.tsx +5 -0
- package/src/ScriptOnce.tsx +27 -0
- package/src/Transitioner.tsx +1 -1
- package/src/awaited.tsx +17 -89
- package/src/defer.ts +9 -26
- package/src/index.tsx +7 -13
- package/src/isServerSideError.tsx +23 -0
- package/src/link.tsx +5 -0
- package/src/matchContext.tsx +3 -0
- package/src/not-found.tsx +1 -1
- package/src/qss.ts +5 -6
- package/src/redirects.ts +0 -1
- package/src/renderRouteNotFound.tsx +28 -0
- package/src/root.ts +1 -1
- package/src/route.ts +1 -1
- package/src/router.ts +54 -39
- package/src/useMatch.tsx +1 -1
- package/src/utils.ts +11 -9
package/dist/esm/router.js
CHANGED
|
@@ -50,7 +50,7 @@ class Router {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
if (
|
|
53
|
-
// eslint-disable-next-line
|
|
53
|
+
// eslint-disable-next-line ts/no-unnecessary-condition
|
|
54
54
|
!this.history || this.options.history && this.options.history !== this.history
|
|
55
55
|
) {
|
|
56
56
|
this.history = this.options.history ?? (typeof document !== "undefined" ? createBrowserHistory() : createMemoryHistory({
|
|
@@ -340,6 +340,7 @@ class Router {
|
|
|
340
340
|
}
|
|
341
341
|
match = {
|
|
342
342
|
id: matchId,
|
|
343
|
+
index,
|
|
343
344
|
routeId: route.id,
|
|
344
345
|
params: routeParams,
|
|
345
346
|
pathname: joinPaths([this.basepath, interpolatedPath]),
|
|
@@ -509,6 +510,7 @@ class Router {
|
|
|
509
510
|
this.commitLocation = async ({
|
|
510
511
|
startTransition,
|
|
511
512
|
viewTransition,
|
|
513
|
+
ignoreBlocker,
|
|
512
514
|
...next
|
|
513
515
|
}) => {
|
|
514
516
|
const isSameState = () => {
|
|
@@ -547,7 +549,8 @@ class Router {
|
|
|
547
549
|
this.shouldViewTransition = viewTransition;
|
|
548
550
|
this.history[next.replace ? "replace" : "push"](
|
|
549
551
|
nextHistory.href,
|
|
550
|
-
nextHistory.state
|
|
552
|
+
nextHistory.state,
|
|
553
|
+
{ ignoreBlocker }
|
|
551
554
|
);
|
|
552
555
|
}
|
|
553
556
|
this.resetNextScroll = next.resetScroll ?? true;
|
|
@@ -558,6 +561,7 @@ class Router {
|
|
|
558
561
|
resetScroll,
|
|
559
562
|
startTransition,
|
|
560
563
|
viewTransition,
|
|
564
|
+
ignoreBlocker,
|
|
561
565
|
...rest
|
|
562
566
|
} = {}) => {
|
|
563
567
|
const location = this.buildLocation(rest);
|
|
@@ -566,7 +570,8 @@ class Router {
|
|
|
566
570
|
startTransition,
|
|
567
571
|
viewTransition,
|
|
568
572
|
replace,
|
|
569
|
-
resetScroll
|
|
573
|
+
resetScroll,
|
|
574
|
+
ignoreBlocker
|
|
570
575
|
});
|
|
571
576
|
};
|
|
572
577
|
this.navigate = ({ from, to, __isRedirect, ...rest }) => {
|
|
@@ -741,8 +746,7 @@ class Router {
|
|
|
741
746
|
return updated;
|
|
742
747
|
};
|
|
743
748
|
const handleRedirectAndNotFound = (match, err) => {
|
|
744
|
-
if (isResolvedRedirect(err))
|
|
745
|
-
throw err;
|
|
749
|
+
if (isResolvedRedirect(err)) throw err;
|
|
746
750
|
if (isRedirect(err) || isNotFound(err)) {
|
|
747
751
|
updateMatch(match.id, (prev) => ({
|
|
748
752
|
...prev,
|
|
@@ -941,7 +945,13 @@ class Router {
|
|
|
941
945
|
})
|
|
942
946
|
);
|
|
943
947
|
}
|
|
944
|
-
|
|
948
|
+
let loaderData = await loaderPromise;
|
|
949
|
+
if (this.serializeLoaderData) {
|
|
950
|
+
loaderData = this.serializeLoaderData(loaderData, {
|
|
951
|
+
router: this,
|
|
952
|
+
match
|
|
953
|
+
});
|
|
954
|
+
}
|
|
945
955
|
checkLatest();
|
|
946
956
|
handleRedirectAndNotFound(match, loaderData);
|
|
947
957
|
await potentialPendingMinPromise();
|
|
@@ -1156,29 +1166,26 @@ class Router {
|
|
|
1156
1166
|
}
|
|
1157
1167
|
return match;
|
|
1158
1168
|
};
|
|
1159
|
-
this.registeredDeferredsIds = /* @__PURE__ */ new Map();
|
|
1160
|
-
this.registeredDeferreds = /* @__PURE__ */ new WeakMap();
|
|
1161
|
-
this.getDeferred = (uid) => {
|
|
1162
|
-
const token = this.registeredDeferredsIds.get(uid);
|
|
1163
|
-
if (!token) {
|
|
1164
|
-
return void 0;
|
|
1165
|
-
}
|
|
1166
|
-
return this.registeredDeferreds.get(token);
|
|
1167
|
-
};
|
|
1168
1169
|
this.dehydrate = () => {
|
|
1169
1170
|
var _a;
|
|
1170
1171
|
const pickError = ((_a = this.options.errorSerializer) == null ? void 0 : _a.serialize) ?? defaultSerializeError;
|
|
1171
1172
|
return {
|
|
1172
1173
|
state: {
|
|
1173
|
-
dehydratedMatches: this.state.matches.map((d) =>
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1174
|
+
dehydratedMatches: this.state.matches.map((d) => {
|
|
1175
|
+
return {
|
|
1176
|
+
...pick(d, ["id", "status", "updatedAt"]),
|
|
1177
|
+
// If an error occurs server-side during SSRing,
|
|
1178
|
+
// send a small subset of the error to the client
|
|
1179
|
+
error: d.error ? {
|
|
1180
|
+
data: pickError(d.error),
|
|
1181
|
+
__isServerError: true
|
|
1182
|
+
} : void 0
|
|
1183
|
+
// NOTE: We don't send the loader data here, because
|
|
1184
|
+
// there is a potential that it needs to be streamed.
|
|
1185
|
+
// Instead, we render it next to the route match in the HTML
|
|
1186
|
+
// which gives us the potential to stream it via suspense.
|
|
1187
|
+
};
|
|
1188
|
+
})
|
|
1182
1189
|
},
|
|
1183
1190
|
manifest: this.manifest
|
|
1184
1191
|
};
|
|
@@ -1187,11 +1194,11 @@ class Router {
|
|
|
1187
1194
|
var _a, _b, _c;
|
|
1188
1195
|
let _ctx = __do_not_use_server_ctx;
|
|
1189
1196
|
if (typeof document !== "undefined") {
|
|
1190
|
-
_ctx = (_a = window.
|
|
1197
|
+
_ctx = (_a = window.__TSR__) == null ? void 0 : _a.dehydrated;
|
|
1191
1198
|
}
|
|
1192
1199
|
invariant(
|
|
1193
1200
|
_ctx,
|
|
1194
|
-
"Expected to find a
|
|
1201
|
+
"Expected to find a dehydrated data on window.__TSR__.dehydrated... but we did not. Please file an issue!"
|
|
1195
1202
|
);
|
|
1196
1203
|
const ctx = this.options.transformer.parse(_ctx);
|
|
1197
1204
|
this.dehydratedData = ctx.payload;
|