@tanstack/react-router 1.97.14 → 1.97.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/cjs/Match.cjs +8 -24
- package/dist/cjs/Match.cjs.map +1 -1
- package/dist/cjs/Matches.cjs +1 -1
- package/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/RouterProvider.cjs.map +1 -1
- package/dist/cjs/RouterProvider.d.cts +0 -1
- package/dist/cjs/ScriptOnce.cjs +1 -8
- package/dist/cjs/ScriptOnce.cjs.map +1 -1
- package/dist/cjs/ScriptOnce.d.cts +1 -1
- package/dist/cjs/Transitioner.cjs +1 -2
- package/dist/cjs/Transitioner.cjs.map +1 -1
- package/dist/cjs/awaited.cjs +1 -22
- package/dist/cjs/awaited.cjs.map +1 -1
- package/dist/cjs/index.cjs +2 -7
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +4 -6
- package/dist/cjs/router.cjs +11 -129
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/router.d.cts +33 -93
- package/dist/cjs/routerContext.cjs.map +1 -1
- package/dist/cjs/routerContext.d.cts +7 -2
- package/dist/cjs/serializer.d.cts +15 -0
- package/dist/esm/Match.js +9 -25
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/Matches.js +1 -1
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.d.ts +0 -1
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/ScriptOnce.d.ts +1 -1
- package/dist/esm/ScriptOnce.js +1 -8
- package/dist/esm/ScriptOnce.js.map +1 -1
- package/dist/esm/Transitioner.js +1 -2
- package/dist/esm/Transitioner.js.map +1 -1
- package/dist/esm/awaited.js +1 -22
- package/dist/esm/awaited.js.map +1 -1
- package/dist/esm/index.d.ts +4 -6
- package/dist/esm/index.js +1 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/router.d.ts +33 -93
- package/dist/esm/router.js +11 -129
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/routerContext.d.ts +7 -2
- package/dist/esm/routerContext.js.map +1 -1
- package/dist/esm/serializer.d.ts +15 -0
- package/package.json +1 -1
- package/src/Match.tsx +4 -29
- package/src/Matches.tsx +1 -1
- package/src/RouterProvider.tsx +3 -3
- package/src/ScriptOnce.tsx +0 -8
- package/src/Transitioner.tsx +1 -1
- package/src/awaited.tsx +3 -25
- package/src/index.tsx +12 -34
- package/src/router.ts +44 -271
- package/src/routerContext.tsx +7 -1
- package/src/serializer.ts +24 -0
- package/dist/cjs/isServerSideError.cjs +0 -22
- package/dist/cjs/isServerSideError.cjs.map +0 -1
- package/dist/cjs/isServerSideError.d.cts +0 -5
- package/dist/cjs/transformer.cjs +0 -137
- package/dist/cjs/transformer.cjs.map +0 -1
- package/dist/cjs/transformer.d.cts +0 -16
- package/dist/esm/isServerSideError.d.ts +0 -5
- package/dist/esm/isServerSideError.js +0 -22
- package/dist/esm/isServerSideError.js.map +0 -1
- package/dist/esm/transformer.d.ts +0 -16
- package/dist/esm/transformer.js +0 -137
- package/dist/esm/transformer.js.map +0 -1
- package/src/isServerSideError.tsx +0 -23
- package/src/transformer.ts +0 -192
package/dist/cjs/router.cjs
CHANGED
|
@@ -3,15 +3,12 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const history = require("@tanstack/history");
|
|
4
4
|
const reactStore = require("@tanstack/react-store");
|
|
5
5
|
const invariant = require("tiny-invariant");
|
|
6
|
-
const warning = require("tiny-warning");
|
|
7
|
-
const jsesc = require("jsesc");
|
|
8
6
|
const root = require("./root.cjs");
|
|
9
7
|
const searchParams = require("./searchParams.cjs");
|
|
10
8
|
const utils = require("./utils.cjs");
|
|
11
9
|
const path = require("./path.cjs");
|
|
12
10
|
const redirects = require("./redirects.cjs");
|
|
13
11
|
const notFound = require("./not-found.cjs");
|
|
14
|
-
const transformer = require("./transformer.cjs");
|
|
15
12
|
const componentTypes = [
|
|
16
13
|
"component",
|
|
17
14
|
"errorComponent",
|
|
@@ -376,7 +373,7 @@ class Router {
|
|
|
376
373
|
}) ?? {}
|
|
377
374
|
};
|
|
378
375
|
}
|
|
379
|
-
} catch
|
|
376
|
+
} catch {
|
|
380
377
|
}
|
|
381
378
|
});
|
|
382
379
|
search = validatedSearch;
|
|
@@ -425,7 +422,7 @@ class Router {
|
|
|
425
422
|
) ?? {}
|
|
426
423
|
};
|
|
427
424
|
return validatedSearch;
|
|
428
|
-
} catch
|
|
425
|
+
} catch {
|
|
429
426
|
}
|
|
430
427
|
};
|
|
431
428
|
middlewares.push(validate);
|
|
@@ -966,17 +963,7 @@ class Router {
|
|
|
966
963
|
cause: preload ? "preload" : cause,
|
|
967
964
|
matches
|
|
968
965
|
};
|
|
969
|
-
|
|
970
|
-
if (this.serializeLoaderData) {
|
|
971
|
-
beforeLoadContext = this.serializeLoaderData(
|
|
972
|
-
"__beforeLoadContext",
|
|
973
|
-
beforeLoadContext,
|
|
974
|
-
{
|
|
975
|
-
router: this,
|
|
976
|
-
match: this.getMatch(matchId)
|
|
977
|
-
}
|
|
978
|
-
);
|
|
979
|
-
}
|
|
966
|
+
const beforeLoadContext = await ((_c = (_b = route.options).beforeLoad) == null ? void 0 : _c.call(_b, beforeLoadFnContext)) ?? {};
|
|
980
967
|
if (redirects.isRedirect(beforeLoadContext) || notFound.isNotFound(beforeLoadContext)) {
|
|
981
968
|
handleSerialError(index, beforeLoadContext, "BEFORE_LOAD");
|
|
982
969
|
}
|
|
@@ -1056,7 +1043,7 @@ class Router {
|
|
|
1056
1043
|
preload: !!preload && !this.state.matches.find((d) => d.id === matchId)
|
|
1057
1044
|
}));
|
|
1058
1045
|
const runLoader = async () => {
|
|
1059
|
-
var _a2, _b2, _c2, _d, _e, _f, _g, _h;
|
|
1046
|
+
var _a2, _b2, _c2, _d, _e, _f, _g, _h, _i;
|
|
1060
1047
|
try {
|
|
1061
1048
|
const potentialPendingMinPromise = async () => {
|
|
1062
1049
|
const latestMatch = this.getMatch(matchId);
|
|
@@ -1070,17 +1057,7 @@ class Router {
|
|
|
1070
1057
|
...prev,
|
|
1071
1058
|
isFetching: "loader"
|
|
1072
1059
|
}));
|
|
1073
|
-
|
|
1074
|
-
if (this.serializeLoaderData) {
|
|
1075
|
-
loaderData = this.serializeLoaderData(
|
|
1076
|
-
"loaderData",
|
|
1077
|
-
loaderData,
|
|
1078
|
-
{
|
|
1079
|
-
router: this,
|
|
1080
|
-
match: this.getMatch(matchId)
|
|
1081
|
-
}
|
|
1082
|
-
);
|
|
1083
|
-
}
|
|
1060
|
+
const loaderData = await ((_b2 = (_a2 = route.options).loader) == null ? void 0 : _b2.call(_a2, getLoaderContext()));
|
|
1084
1061
|
handleRedirectAndNotFound(
|
|
1085
1062
|
this.getMatch(matchId),
|
|
1086
1063
|
loaderData
|
|
@@ -1131,6 +1108,10 @@ class Router {
|
|
|
1131
1108
|
isFetching: false
|
|
1132
1109
|
}));
|
|
1133
1110
|
}
|
|
1111
|
+
(_i = this.serverSsr) == null ? void 0 : _i.onMatchSettled({
|
|
1112
|
+
router: this,
|
|
1113
|
+
match: this.getMatch(matchId)
|
|
1114
|
+
});
|
|
1134
1115
|
await route._componentsPromise;
|
|
1135
1116
|
} catch (err) {
|
|
1136
1117
|
updateMatch(matchId, (prev) => ({
|
|
@@ -1371,104 +1352,6 @@ class Router {
|
|
|
1371
1352
|
}
|
|
1372
1353
|
return match;
|
|
1373
1354
|
};
|
|
1374
|
-
this.dehydrate = () => {
|
|
1375
|
-
var _a;
|
|
1376
|
-
const pickError = ((_a = this.options.errorSerializer) == null ? void 0 : _a.serialize) ?? defaultSerializeError;
|
|
1377
|
-
return {
|
|
1378
|
-
state: {
|
|
1379
|
-
dehydratedMatches: this.state.matches.map((d) => {
|
|
1380
|
-
return {
|
|
1381
|
-
...utils.pick(d, ["id", "status", "updatedAt"]),
|
|
1382
|
-
// If an error occurs server-side during SSRing,
|
|
1383
|
-
// send a small subset of the error to the client
|
|
1384
|
-
error: d.error ? {
|
|
1385
|
-
data: pickError(d.error),
|
|
1386
|
-
__isServerError: true
|
|
1387
|
-
} : void 0
|
|
1388
|
-
// NOTE: We don't send the loader data here, because
|
|
1389
|
-
// there is a potential that it needs to be streamed.
|
|
1390
|
-
// Instead, we render it next to the route match in the HTML
|
|
1391
|
-
// which gives us the potential to stream it via suspense.
|
|
1392
|
-
};
|
|
1393
|
-
})
|
|
1394
|
-
},
|
|
1395
|
-
manifest: this.manifest
|
|
1396
|
-
};
|
|
1397
|
-
};
|
|
1398
|
-
this.hydrate = () => {
|
|
1399
|
-
var _a, _b, _c;
|
|
1400
|
-
let ctx;
|
|
1401
|
-
if (typeof document !== "undefined") {
|
|
1402
|
-
ctx = this.options.transformer.parse((_a = window.__TSR__) == null ? void 0 : _a.dehydrated);
|
|
1403
|
-
}
|
|
1404
|
-
invariant(
|
|
1405
|
-
ctx,
|
|
1406
|
-
"Expected to find a dehydrated data on window.__TSR__.dehydrated... but we did not. Please file an issue!"
|
|
1407
|
-
);
|
|
1408
|
-
this.dehydratedData = ctx.payload;
|
|
1409
|
-
(_c = (_b = this.options).hydrate) == null ? void 0 : _c.call(_b, ctx.payload);
|
|
1410
|
-
const dehydratedState = ctx.router.state;
|
|
1411
|
-
const matches = this.matchRoutes(this.state.location).map((match) => {
|
|
1412
|
-
const dehydratedMatch = dehydratedState.dehydratedMatches.find(
|
|
1413
|
-
(d) => d.id === match.id
|
|
1414
|
-
);
|
|
1415
|
-
invariant(
|
|
1416
|
-
dehydratedMatch,
|
|
1417
|
-
`Could not find a client-side match for dehydrated match with id: ${match.id}!`
|
|
1418
|
-
);
|
|
1419
|
-
return {
|
|
1420
|
-
...match,
|
|
1421
|
-
...dehydratedMatch
|
|
1422
|
-
};
|
|
1423
|
-
});
|
|
1424
|
-
this.__store.setState((s) => {
|
|
1425
|
-
return {
|
|
1426
|
-
...s,
|
|
1427
|
-
matches
|
|
1428
|
-
};
|
|
1429
|
-
});
|
|
1430
|
-
this.manifest = ctx.router.manifest;
|
|
1431
|
-
};
|
|
1432
|
-
this.injectedHtml = [];
|
|
1433
|
-
this.injectHtml = (html) => {
|
|
1434
|
-
const cb = () => {
|
|
1435
|
-
this.injectedHtml = this.injectedHtml.filter((d) => d !== cb);
|
|
1436
|
-
return html;
|
|
1437
|
-
};
|
|
1438
|
-
this.injectedHtml.push(cb);
|
|
1439
|
-
};
|
|
1440
|
-
this.injectScript = (script, opts) => {
|
|
1441
|
-
this.injectHtml(
|
|
1442
|
-
`<script class='tsr-once'>${script}${process.env.NODE_ENV === "development" && ((opts == null ? void 0 : opts.logScript) ?? true) ? `; console.info(\`Injected From Server:
|
|
1443
|
-
${jsesc(script, { quotes: "backtick" })}\`)` : ""}; if (typeof __TSR__ !== 'undefined') __TSR__.cleanScripts()<\/script>`
|
|
1444
|
-
);
|
|
1445
|
-
};
|
|
1446
|
-
this.streamedKeys = /* @__PURE__ */ new Set();
|
|
1447
|
-
this.getStreamedValue = (key) => {
|
|
1448
|
-
var _a;
|
|
1449
|
-
if (this.isServer) {
|
|
1450
|
-
return void 0;
|
|
1451
|
-
}
|
|
1452
|
-
const streamedValue = (_a = window.__TSR__) == null ? void 0 : _a.streamedValues[key];
|
|
1453
|
-
if (!streamedValue) {
|
|
1454
|
-
return;
|
|
1455
|
-
}
|
|
1456
|
-
if (!streamedValue.parsed) {
|
|
1457
|
-
streamedValue.parsed = this.options.transformer.parse(streamedValue.value);
|
|
1458
|
-
}
|
|
1459
|
-
return streamedValue.parsed;
|
|
1460
|
-
};
|
|
1461
|
-
this.streamValue = (key, value) => {
|
|
1462
|
-
var _a;
|
|
1463
|
-
warning(
|
|
1464
|
-
!this.streamedKeys.has(key),
|
|
1465
|
-
"Key has already been streamed: " + key
|
|
1466
|
-
);
|
|
1467
|
-
this.streamedKeys.add(key);
|
|
1468
|
-
this.injectScript(
|
|
1469
|
-
`__TSR__.streamedValues['${key}'] = { value: ${(_a = this.serializer) == null ? void 0 : _a.call(this, this.options.transformer.stringify(value))}}`
|
|
1470
|
-
);
|
|
1471
|
-
};
|
|
1472
1355
|
this._handleNotFound = (matches, err, {
|
|
1473
1356
|
updateMatch = this.updateMatch
|
|
1474
1357
|
} = {}) => {
|
|
@@ -1512,11 +1395,10 @@ ${jsesc(script, { quotes: "backtick" })}\`)` : ""}; if (typeof __TSR__ !== 'unde
|
|
|
1512
1395
|
caseSensitive: options.caseSensitive ?? false,
|
|
1513
1396
|
notFoundMode: options.notFoundMode ?? "fuzzy",
|
|
1514
1397
|
stringifySearch: options.stringifySearch ?? searchParams.defaultStringifySearch,
|
|
1515
|
-
parseSearch: options.parseSearch ?? searchParams.defaultParseSearch
|
|
1516
|
-
transformer: options.transformer ?? transformer.defaultTransformer
|
|
1398
|
+
parseSearch: options.parseSearch ?? searchParams.defaultParseSearch
|
|
1517
1399
|
});
|
|
1518
1400
|
if (typeof document !== "undefined") {
|
|
1519
|
-
window.
|
|
1401
|
+
window.__TSR_ROUTER__ = this;
|
|
1520
1402
|
}
|
|
1521
1403
|
}
|
|
1522
1404
|
get state() {
|