@tanstack/react-router 1.40.0 → 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.
Files changed (123) hide show
  1. package/dist/cjs/CatchBoundary.d.cts +2 -2
  2. package/dist/cjs/Match.cjs +238 -0
  3. package/dist/cjs/Match.cjs.map +1 -0
  4. package/dist/cjs/Match.d.cts +5 -0
  5. package/dist/cjs/Matches.cjs +8 -249
  6. package/dist/cjs/Matches.cjs.map +1 -1
  7. package/dist/cjs/Matches.d.cts +2 -11
  8. package/dist/cjs/RouterProvider.cjs.map +1 -1
  9. package/dist/cjs/RouterProvider.d.cts +2 -2
  10. package/dist/cjs/SafeFragment.cjs +8 -0
  11. package/dist/cjs/SafeFragment.cjs.map +1 -0
  12. package/dist/cjs/SafeFragment.d.cts +1 -0
  13. package/dist/cjs/ScriptOnce.cjs +28 -0
  14. package/dist/cjs/ScriptOnce.cjs.map +1 -0
  15. package/dist/cjs/ScriptOnce.d.cts +5 -0
  16. package/dist/cjs/Transitioner.cjs +2 -1
  17. package/dist/cjs/Transitioner.cjs.map +1 -1
  18. package/dist/cjs/awaited.cjs +14 -71
  19. package/dist/cjs/awaited.cjs.map +1 -1
  20. package/dist/cjs/awaited.d.cts +3 -6
  21. package/dist/cjs/defer.cjs +7 -13
  22. package/dist/cjs/defer.cjs.map +1 -1
  23. package/dist/cjs/defer.d.cts +2 -6
  24. package/dist/cjs/index.cjs +11 -7
  25. package/dist/cjs/index.cjs.map +1 -1
  26. package/dist/cjs/index.d.cts +8 -3
  27. package/dist/cjs/isServerSideError.cjs +22 -0
  28. package/dist/cjs/isServerSideError.cjs.map +1 -0
  29. package/dist/cjs/isServerSideError.d.cts +5 -0
  30. package/dist/cjs/link.cjs +1 -0
  31. package/dist/cjs/link.cjs.map +1 -1
  32. package/dist/cjs/matchContext.cjs +23 -0
  33. package/dist/cjs/matchContext.cjs.map +1 -0
  34. package/dist/cjs/matchContext.d.cts +2 -0
  35. package/dist/cjs/not-found.cjs.map +1 -1
  36. package/dist/cjs/not-found.d.cts +2 -2
  37. package/dist/cjs/qss.cjs.map +1 -1
  38. package/dist/cjs/qss.d.cts +1 -1
  39. package/dist/cjs/redirects.cjs.map +1 -1
  40. package/dist/cjs/renderRouteNotFound.cjs +22 -0
  41. package/dist/cjs/renderRouteNotFound.cjs.map +1 -0
  42. package/dist/cjs/renderRouteNotFound.d.cts +4 -0
  43. package/dist/cjs/route.cjs.map +1 -1
  44. package/dist/cjs/router.cjs +26 -22
  45. package/dist/cjs/router.cjs.map +1 -1
  46. package/dist/cjs/router.d.cts +14 -9
  47. package/dist/cjs/useMatch.cjs +2 -2
  48. package/dist/cjs/useMatch.cjs.map +1 -1
  49. package/dist/cjs/utils.cjs +4 -3
  50. package/dist/cjs/utils.cjs.map +1 -1
  51. package/dist/cjs/utils.d.cts +3 -2
  52. package/dist/esm/CatchBoundary.d.ts +2 -2
  53. package/dist/esm/Match.d.ts +5 -0
  54. package/dist/esm/Match.js +221 -0
  55. package/dist/esm/Match.js.map +1 -0
  56. package/dist/esm/Matches.d.ts +2 -11
  57. package/dist/esm/Matches.js +5 -246
  58. package/dist/esm/Matches.js.map +1 -1
  59. package/dist/esm/RouterProvider.d.ts +2 -2
  60. package/dist/esm/RouterProvider.js.map +1 -1
  61. package/dist/esm/SafeFragment.d.ts +1 -0
  62. package/dist/esm/SafeFragment.js +8 -0
  63. package/dist/esm/SafeFragment.js.map +1 -0
  64. package/dist/esm/ScriptOnce.d.ts +5 -0
  65. package/dist/esm/ScriptOnce.js +28 -0
  66. package/dist/esm/ScriptOnce.js.map +1 -0
  67. package/dist/esm/Transitioner.js +2 -1
  68. package/dist/esm/Transitioner.js.map +1 -1
  69. package/dist/esm/awaited.d.ts +3 -6
  70. package/dist/esm/awaited.js +16 -73
  71. package/dist/esm/awaited.js.map +1 -1
  72. package/dist/esm/defer.d.ts +2 -6
  73. package/dist/esm/defer.js +8 -14
  74. package/dist/esm/defer.js.map +1 -1
  75. package/dist/esm/index.d.ts +8 -3
  76. package/dist/esm/index.js +9 -5
  77. package/dist/esm/index.js.map +1 -1
  78. package/dist/esm/isServerSideError.d.ts +5 -0
  79. package/dist/esm/isServerSideError.js +22 -0
  80. package/dist/esm/isServerSideError.js.map +1 -0
  81. package/dist/esm/link.js +1 -0
  82. package/dist/esm/link.js.map +1 -1
  83. package/dist/esm/matchContext.d.ts +2 -0
  84. package/dist/esm/matchContext.js +6 -0
  85. package/dist/esm/matchContext.js.map +1 -0
  86. package/dist/esm/not-found.d.ts +2 -2
  87. package/dist/esm/not-found.js.map +1 -1
  88. package/dist/esm/qss.d.ts +1 -1
  89. package/dist/esm/qss.js.map +1 -1
  90. package/dist/esm/redirects.js.map +1 -1
  91. package/dist/esm/renderRouteNotFound.d.ts +4 -0
  92. package/dist/esm/renderRouteNotFound.js +22 -0
  93. package/dist/esm/renderRouteNotFound.js.map +1 -0
  94. package/dist/esm/route.js.map +1 -1
  95. package/dist/esm/router.d.ts +14 -9
  96. package/dist/esm/router.js +26 -22
  97. package/dist/esm/router.js.map +1 -1
  98. package/dist/esm/useMatch.js +1 -1
  99. package/dist/esm/useMatch.js.map +1 -1
  100. package/dist/esm/utils.d.ts +3 -2
  101. package/dist/esm/utils.js +4 -3
  102. package/dist/esm/utils.js.map +1 -1
  103. package/package.json +4 -4
  104. package/src/Match.tsx +296 -0
  105. package/src/Matches.tsx +4 -333
  106. package/src/RouterProvider.tsx +1 -1
  107. package/src/SafeFragment.tsx +5 -0
  108. package/src/ScriptOnce.tsx +27 -0
  109. package/src/Transitioner.tsx +1 -1
  110. package/src/awaited.tsx +17 -89
  111. package/src/defer.ts +9 -26
  112. package/src/index.tsx +7 -13
  113. package/src/isServerSideError.tsx +23 -0
  114. package/src/link.tsx +2 -0
  115. package/src/matchContext.tsx +3 -0
  116. package/src/not-found.tsx +1 -1
  117. package/src/qss.ts +5 -6
  118. package/src/redirects.ts +0 -1
  119. package/src/renderRouteNotFound.tsx +28 -0
  120. package/src/route.ts +1 -1
  121. package/src/router.ts +50 -39
  122. package/src/useMatch.tsx +1 -1
  123. package/src/utils.ts +11 -9
@@ -52,7 +52,7 @@ class Router {
52
52
  }
53
53
  }
54
54
  if (
55
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
55
+ // eslint-disable-next-line ts/no-unnecessary-condition
56
56
  !this.history || this.options.history && this.options.history !== this.history
57
57
  ) {
58
58
  this.history = this.options.history ?? (typeof document !== "undefined" ? history.createBrowserHistory() : history.createMemoryHistory({
@@ -342,6 +342,7 @@ class Router {
342
342
  }
343
343
  match = {
344
344
  id: matchId,
345
+ index,
345
346
  routeId: route.id,
346
347
  params: routeParams,
347
348
  pathname: path.joinPaths([this.basepath, interpolatedPath]),
@@ -946,7 +947,13 @@ class Router {
946
947
  })
947
948
  );
948
949
  }
949
- const loaderData = await loaderPromise;
950
+ let loaderData = await loaderPromise;
951
+ if (this.serializeLoaderData) {
952
+ loaderData = this.serializeLoaderData(loaderData, {
953
+ router: this,
954
+ match
955
+ });
956
+ }
950
957
  checkLatest();
951
958
  handleRedirectAndNotFound(match, loaderData);
952
959
  await potentialPendingMinPromise();
@@ -1161,29 +1168,26 @@ class Router {
1161
1168
  }
1162
1169
  return match;
1163
1170
  };
1164
- this.registeredDeferredsIds = /* @__PURE__ */ new Map();
1165
- this.registeredDeferreds = /* @__PURE__ */ new WeakMap();
1166
- this.getDeferred = (uid) => {
1167
- const token = this.registeredDeferredsIds.get(uid);
1168
- if (!token) {
1169
- return void 0;
1170
- }
1171
- return this.registeredDeferreds.get(token);
1172
- };
1173
1171
  this.dehydrate = () => {
1174
1172
  var _a;
1175
1173
  const pickError = ((_a = this.options.errorSerializer) == null ? void 0 : _a.serialize) ?? defaultSerializeError;
1176
1174
  return {
1177
1175
  state: {
1178
- dehydratedMatches: this.state.matches.map((d) => ({
1179
- ...utils.pick(d, ["id", "status", "updatedAt", "loaderData"]),
1180
- // If an error occurs server-side during SSRing,
1181
- // send a small subset of the error to the client
1182
- error: d.error ? {
1183
- data: pickError(d.error),
1184
- __isServerError: true
1185
- } : void 0
1186
- }))
1176
+ dehydratedMatches: this.state.matches.map((d) => {
1177
+ return {
1178
+ ...utils.pick(d, ["id", "status", "updatedAt"]),
1179
+ // If an error occurs server-side during SSRing,
1180
+ // send a small subset of the error to the client
1181
+ error: d.error ? {
1182
+ data: pickError(d.error),
1183
+ __isServerError: true
1184
+ } : void 0
1185
+ // NOTE: We don't send the loader data here, because
1186
+ // there is a potential that it needs to be streamed.
1187
+ // Instead, we render it next to the route match in the HTML
1188
+ // which gives us the potential to stream it via suspense.
1189
+ };
1190
+ })
1187
1191
  },
1188
1192
  manifest: this.manifest
1189
1193
  };
@@ -1192,11 +1196,11 @@ class Router {
1192
1196
  var _a, _b, _c;
1193
1197
  let _ctx = __do_not_use_server_ctx;
1194
1198
  if (typeof document !== "undefined") {
1195
- _ctx = (_a = window.__TSR_DEHYDRATED__) == null ? void 0 : _a.data;
1199
+ _ctx = (_a = window.__TSR__) == null ? void 0 : _a.dehydrated;
1196
1200
  }
1197
1201
  invariant(
1198
1202
  _ctx,
1199
- "Expected to find a __TSR_DEHYDRATED__ property on window... but we did not. Please file an issue!"
1203
+ "Expected to find a dehydrated data on window.__TSR__.dehydrated... but we did not. Please file an issue!"
1200
1204
  );
1201
1205
  const ctx = this.options.transformer.parse(_ctx);
1202
1206
  this.dehydratedData = ctx.payload;