@tanstack/router-core 1.121.0-alpha.22 → 1.121.0-alpha.28

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 (170) hide show
  1. package/dist/cjs/Matches.cjs.map +1 -1
  2. package/dist/cjs/Matches.d.cts +31 -1
  3. package/dist/cjs/RouterProvider.d.cts +2 -1
  4. package/dist/cjs/defer.cjs +1 -1
  5. package/dist/cjs/defer.cjs.map +1 -1
  6. package/dist/cjs/global.d.cts +7 -0
  7. package/dist/cjs/index.cjs +1 -2
  8. package/dist/cjs/index.cjs.map +1 -1
  9. package/dist/cjs/index.d.cts +6 -6
  10. package/dist/cjs/link.cjs.map +1 -1
  11. package/dist/cjs/link.d.cts +12 -0
  12. package/dist/cjs/lru-cache.cjs +62 -0
  13. package/dist/cjs/lru-cache.cjs.map +1 -0
  14. package/dist/cjs/lru-cache.d.cts +5 -0
  15. package/dist/cjs/not-found.cjs +1 -1
  16. package/dist/cjs/not-found.cjs.map +1 -1
  17. package/dist/cjs/path.cjs +316 -148
  18. package/dist/cjs/path.cjs.map +1 -1
  19. package/dist/cjs/path.d.cts +18 -24
  20. package/dist/cjs/qss.cjs +2 -4
  21. package/dist/cjs/qss.cjs.map +1 -1
  22. package/dist/cjs/qss.d.cts +9 -0
  23. package/dist/cjs/redirect.cjs +3 -0
  24. package/dist/cjs/redirect.cjs.map +1 -1
  25. package/dist/cjs/route.cjs +6 -12
  26. package/dist/cjs/route.cjs.map +1 -1
  27. package/dist/cjs/route.d.cts +29 -9
  28. package/dist/cjs/router.cjs +454 -272
  29. package/dist/cjs/router.cjs.map +1 -1
  30. package/dist/cjs/router.d.cts +55 -85
  31. package/dist/cjs/scroll-restoration.cjs +20 -13
  32. package/dist/cjs/scroll-restoration.cjs.map +1 -1
  33. package/dist/cjs/scroll-restoration.d.cts +9 -1
  34. package/dist/cjs/searchMiddleware.cjs.map +1 -1
  35. package/dist/cjs/searchParams.cjs.map +1 -1
  36. package/dist/cjs/ssr/client.cjs +10 -0
  37. package/dist/cjs/ssr/client.cjs.map +1 -0
  38. package/dist/cjs/ssr/client.d.cts +5 -0
  39. package/dist/cjs/ssr/createRequestHandler.cjs +50 -0
  40. package/dist/cjs/ssr/createRequestHandler.cjs.map +1 -0
  41. package/dist/cjs/ssr/createRequestHandler.d.cts +9 -0
  42. package/dist/cjs/ssr/handlerCallback.cjs +7 -0
  43. package/dist/cjs/ssr/handlerCallback.cjs.map +1 -0
  44. package/dist/cjs/ssr/handlerCallback.d.cts +9 -0
  45. package/dist/cjs/ssr/headers.cjs +39 -0
  46. package/dist/cjs/ssr/headers.cjs.map +1 -0
  47. package/dist/cjs/ssr/headers.d.cts +5 -0
  48. package/dist/cjs/ssr/json.cjs +14 -0
  49. package/dist/cjs/ssr/json.cjs.map +1 -0
  50. package/dist/cjs/ssr/json.d.cts +4 -0
  51. package/dist/cjs/ssr/seroval-plugins.cjs +34 -0
  52. package/dist/cjs/ssr/seroval-plugins.cjs.map +1 -0
  53. package/dist/cjs/ssr/seroval-plugins.d.cts +10 -0
  54. package/dist/cjs/ssr/server.cjs +13 -0
  55. package/dist/cjs/ssr/server.cjs.map +1 -0
  56. package/dist/cjs/ssr/server.d.cts +6 -0
  57. package/dist/cjs/ssr/ssr-client.cjs +159 -0
  58. package/dist/cjs/ssr/ssr-client.cjs.map +1 -0
  59. package/dist/cjs/ssr/ssr-client.d.cts +29 -0
  60. package/dist/cjs/ssr/ssr-server.cjs +107 -0
  61. package/dist/cjs/ssr/ssr-server.cjs.map +1 -0
  62. package/dist/cjs/ssr/ssr-server.d.cts +18 -0
  63. package/dist/cjs/ssr/transformStreamWithRouter.cjs +183 -0
  64. package/dist/cjs/ssr/transformStreamWithRouter.cjs.map +1 -0
  65. package/dist/cjs/ssr/transformStreamWithRouter.d.cts +6 -0
  66. package/dist/cjs/ssr/tsrScript.cjs +4 -0
  67. package/dist/cjs/ssr/tsrScript.cjs.map +1 -0
  68. package/dist/cjs/ssr/tsrScript.d.cts +0 -0
  69. package/dist/cjs/utils.cjs +7 -30
  70. package/dist/cjs/utils.cjs.map +1 -1
  71. package/dist/cjs/utils.d.cts +1 -18
  72. package/dist/esm/Matches.d.ts +31 -1
  73. package/dist/esm/Matches.js.map +1 -1
  74. package/dist/esm/RouterProvider.d.ts +2 -1
  75. package/dist/esm/defer.js +1 -1
  76. package/dist/esm/defer.js.map +1 -1
  77. package/dist/esm/global.d.ts +7 -0
  78. package/dist/esm/index.d.ts +6 -6
  79. package/dist/esm/index.js +2 -3
  80. package/dist/esm/link.d.ts +12 -0
  81. package/dist/esm/link.js.map +1 -1
  82. package/dist/esm/lru-cache.d.ts +5 -0
  83. package/dist/esm/lru-cache.js +62 -0
  84. package/dist/esm/lru-cache.js.map +1 -0
  85. package/dist/esm/not-found.js +1 -1
  86. package/dist/esm/not-found.js.map +1 -1
  87. package/dist/esm/path.d.ts +18 -24
  88. package/dist/esm/path.js +316 -148
  89. package/dist/esm/path.js.map +1 -1
  90. package/dist/esm/qss.d.ts +9 -0
  91. package/dist/esm/qss.js +2 -4
  92. package/dist/esm/qss.js.map +1 -1
  93. package/dist/esm/redirect.js +3 -0
  94. package/dist/esm/redirect.js.map +1 -1
  95. package/dist/esm/route.d.ts +29 -9
  96. package/dist/esm/route.js +6 -12
  97. package/dist/esm/route.js.map +1 -1
  98. package/dist/esm/router.d.ts +55 -85
  99. package/dist/esm/router.js +463 -281
  100. package/dist/esm/router.js.map +1 -1
  101. package/dist/esm/scroll-restoration.d.ts +9 -1
  102. package/dist/esm/scroll-restoration.js +20 -13
  103. package/dist/esm/scroll-restoration.js.map +1 -1
  104. package/dist/esm/searchMiddleware.js.map +1 -1
  105. package/dist/esm/searchParams.js.map +1 -1
  106. package/dist/esm/ssr/client.d.ts +5 -0
  107. package/dist/esm/ssr/client.js +10 -0
  108. package/dist/esm/ssr/client.js.map +1 -0
  109. package/dist/esm/ssr/createRequestHandler.d.ts +9 -0
  110. package/dist/esm/ssr/createRequestHandler.js +50 -0
  111. package/dist/esm/ssr/createRequestHandler.js.map +1 -0
  112. package/dist/esm/ssr/handlerCallback.d.ts +9 -0
  113. package/dist/esm/ssr/handlerCallback.js +7 -0
  114. package/dist/esm/ssr/handlerCallback.js.map +1 -0
  115. package/dist/esm/ssr/headers.d.ts +5 -0
  116. package/dist/esm/ssr/headers.js +39 -0
  117. package/dist/esm/ssr/headers.js.map +1 -0
  118. package/dist/esm/ssr/json.d.ts +4 -0
  119. package/dist/esm/ssr/json.js +14 -0
  120. package/dist/esm/ssr/json.js.map +1 -0
  121. package/dist/esm/ssr/seroval-plugins.d.ts +10 -0
  122. package/dist/esm/ssr/seroval-plugins.js +34 -0
  123. package/dist/esm/ssr/seroval-plugins.js.map +1 -0
  124. package/dist/esm/ssr/server.d.ts +6 -0
  125. package/dist/esm/ssr/server.js +13 -0
  126. package/dist/esm/ssr/server.js.map +1 -0
  127. package/dist/esm/ssr/ssr-client.d.ts +29 -0
  128. package/dist/esm/ssr/ssr-client.js +159 -0
  129. package/dist/esm/ssr/ssr-client.js.map +1 -0
  130. package/dist/esm/ssr/ssr-server.d.ts +18 -0
  131. package/dist/esm/ssr/ssr-server.js +107 -0
  132. package/dist/esm/ssr/ssr-server.js.map +1 -0
  133. package/dist/esm/ssr/transformStreamWithRouter.d.ts +6 -0
  134. package/dist/esm/ssr/transformStreamWithRouter.js +183 -0
  135. package/dist/esm/ssr/transformStreamWithRouter.js.map +1 -0
  136. package/dist/esm/ssr/tsrScript.d.ts +0 -0
  137. package/dist/esm/ssr/tsrScript.js +5 -0
  138. package/dist/esm/ssr/tsrScript.js.map +1 -0
  139. package/dist/esm/utils.d.ts +1 -18
  140. package/dist/esm/utils.js +8 -31
  141. package/dist/esm/utils.js.map +1 -1
  142. package/package.json +29 -2
  143. package/src/Matches.ts +40 -1
  144. package/src/RouterProvider.ts +2 -1
  145. package/src/global.ts +9 -0
  146. package/src/index.ts +12 -20
  147. package/src/link.ts +12 -0
  148. package/src/lru-cache.ts +68 -0
  149. package/src/path.ts +424 -174
  150. package/src/qss.ts +2 -6
  151. package/src/redirect.ts +3 -0
  152. package/src/route.ts +44 -13
  153. package/src/router.ts +581 -312
  154. package/src/scroll-restoration.ts +30 -18
  155. package/src/ssr/client.ts +5 -0
  156. package/src/ssr/createRequestHandler.ts +74 -0
  157. package/src/ssr/handlerCallback.ts +15 -0
  158. package/src/ssr/headers.ts +51 -0
  159. package/src/ssr/json.ts +18 -0
  160. package/src/ssr/seroval-plugins.ts +43 -0
  161. package/src/ssr/server.ts +10 -0
  162. package/src/ssr/ssr-client.ts +242 -0
  163. package/src/ssr/ssr-server.ts +132 -0
  164. package/src/ssr/transformStreamWithRouter.ts +259 -0
  165. package/src/ssr/tsrScript.ts +7 -0
  166. package/src/utils.ts +10 -56
  167. package/src/vite-env.d.ts +4 -0
  168. package/dist/cjs/serializer.d.cts +0 -22
  169. package/dist/esm/serializer.d.ts +0 -22
  170. package/src/serializer.ts +0 -32
package/src/qss.ts CHANGED
@@ -7,7 +7,6 @@
7
7
  * (namely URLSearchParams) and TypeScript while still
8
8
  * maintaining the original functionality and interface.
9
9
  */
10
- import { hasUriEncodedChars } from './utils'
11
10
 
12
11
  /**
13
12
  * Encodes an object into a query string.
@@ -42,11 +41,8 @@ export function encode(obj: any, pfx?: string) {
42
41
  * // Example input: toValue("123")
43
42
  * // Expected output: 123
44
43
  */
45
- function toValue(mix: any) {
46
- if (!mix) return ''
47
- const str = hasUriEncodedChars(mix)
48
- ? decodeURIComponent(mix)
49
- : decodeURIComponent(encodeURIComponent(mix))
44
+ function toValue(str: unknown) {
45
+ if (!str) return ''
50
46
 
51
47
  if (str === 'false') return false
52
48
  if (str === 'true') return true
package/src/redirect.ts CHANGED
@@ -73,6 +73,9 @@ export function redirect<
73
73
  }
74
74
 
75
75
  const headers = new Headers(opts.headers || {})
76
+ if (opts.href && headers.get('Location') === null) {
77
+ headers.set('Location', opts.href)
78
+ }
76
79
 
77
80
  const response = new Response(null, {
78
81
  status: opts.statusCode,
package/src/route.ts CHANGED
@@ -8,6 +8,7 @@ import type { NavigateOptions, ParsePathParams } from './link'
8
8
  import type { ParsedLocation } from './location'
9
9
  import type {
10
10
  AnyRouteMatch,
11
+ MakePreValidationErrorHandlingRouteMatchUnion,
11
12
  MakeRouteMatchFromRoute,
12
13
  MakeRouteMatchUnion,
13
14
  RouteMatch,
@@ -612,7 +613,7 @@ export interface Route<
612
613
  _lazyPromise?: Promise<void>
613
614
  rank: number
614
615
  to: TrimPathRight<TFullPath>
615
- init: (opts: { originalIndex: number; defaultSsr?: boolean }) => void
616
+ init: (opts: { originalIndex: number }) => void
616
617
  update: (
617
618
  options: UpdatableRouteOptions<
618
619
  TParentRoute,
@@ -823,6 +824,14 @@ export type FileBaseRouteOptions<
823
824
  ) => any
824
825
  >
825
826
 
827
+ ssr?:
828
+ | undefined
829
+ | boolean
830
+ | 'data-only'
831
+ | ((
832
+ ctx: SsrContextOptions<TParentRoute, TSearchValidator, TParams>,
833
+ ) => Awaitable<undefined | boolean | 'data-only'>)
834
+
826
835
  // This async function is called before a route is loaded.
827
836
  // If an error is thrown here, the route's loader will not be called.
828
837
  // If thrown during a navigation, the navigation will be cancelled and the error will be passed to the `onError` function.
@@ -927,6 +936,27 @@ export interface RouteContextOptions<
927
936
  context: Expand<RouteContextParameter<TParentRoute, TRouterContext>>
928
937
  }
929
938
 
939
+ export interface SsrContextOptions<
940
+ in out TParentRoute extends AnyRoute,
941
+ in out TSearchValidator,
942
+ in out TParams,
943
+ > {
944
+ params:
945
+ | {
946
+ status: 'success'
947
+ value: Expand<ResolveAllParamsFromParent<TParentRoute, TParams>>
948
+ }
949
+ | { status: 'error'; error: unknown }
950
+ search:
951
+ | {
952
+ status: 'success'
953
+ value: Expand<ResolveFullSearchSchema<TParentRoute, TSearchValidator>>
954
+ }
955
+ | { status: 'error'; error: unknown }
956
+ location: ParsedLocation
957
+ matches: Array<MakePreValidationErrorHandlingRouteMatchUnion>
958
+ }
959
+
930
960
  export interface BeforeLoadContextOptions<
931
961
  in out TParentRoute extends AnyRoute,
932
962
  in out TSearchValidator,
@@ -1124,6 +1154,7 @@ export interface UpdatableRouteOptions<
1124
1154
  links?: AnyRouteMatch['links']
1125
1155
  scripts?: AnyRouteMatch['headScripts']
1126
1156
  meta?: AnyRouteMatch['meta']
1157
+ styles?: AnyRouteMatch['styles']
1127
1158
  }>
1128
1159
  scripts?: (
1129
1160
  ctx: AssetFnContextOptions<
@@ -1139,7 +1170,6 @@ export interface UpdatableRouteOptions<
1139
1170
  TLoaderDeps
1140
1171
  >,
1141
1172
  ) => Awaitable<AnyRouteMatch['scripts']>
1142
- ssr?: boolean
1143
1173
  codeSplitGroupings?: Array<
1144
1174
  Array<
1145
1175
  | 'loader'
@@ -1205,6 +1235,13 @@ export interface LoaderFnContext<
1205
1235
  route: AnyRoute
1206
1236
  }
1207
1237
 
1238
+ export interface DefaultRootRouteOptionsExtensions {
1239
+ shellComponent?: unknown
1240
+ }
1241
+
1242
+ export interface RootRouteOptionsExtensions
1243
+ extends DefaultRootRouteOptionsExtensions {}
1244
+
1208
1245
  export type RootRouteOptions<
1209
1246
  TSearchValidator = undefined,
1210
1247
  TRouterContext = {},
@@ -1234,7 +1271,8 @@ export type RootRouteOptions<
1234
1271
  | 'parseParams'
1235
1272
  | 'stringifyParams'
1236
1273
  | 'params'
1237
- >
1274
+ > &
1275
+ RootRouteOptionsExtensions
1238
1276
 
1239
1277
  export type RouteConstraints = {
1240
1278
  TParentRoute: AnyRoute
@@ -1279,8 +1317,8 @@ export type ErrorRouteProps = {
1279
1317
  reset: () => void
1280
1318
  }
1281
1319
 
1282
- export type ErrorComponentProps = {
1283
- error: Error
1320
+ export type ErrorComponentProps<TError = Error> = {
1321
+ error: TError
1284
1322
  info?: { componentStack: string }
1285
1323
  reset: () => void
1286
1324
  }
@@ -1327,7 +1365,6 @@ export class BaseRoute<
1327
1365
  private _path!: TPath
1328
1366
  private _fullPath!: TFullPath
1329
1367
  private _to!: TrimPathRight<TFullPath>
1330
- private _ssr!: boolean
1331
1368
 
1332
1369
  public get to() {
1333
1370
  return this._to
@@ -1345,10 +1382,6 @@ export class BaseRoute<
1345
1382
  return this._fullPath
1346
1383
  }
1347
1384
 
1348
- public get ssr() {
1349
- return this._ssr
1350
- }
1351
-
1352
1385
  // Optional
1353
1386
  children?: TChildren
1354
1387
  originalIndex?: number
@@ -1417,7 +1450,7 @@ export class BaseRoute<
1417
1450
  TFileRouteTypes
1418
1451
  >
1419
1452
 
1420
- init = (opts: { originalIndex: number; defaultSsr?: boolean }): void => {
1453
+ init = (opts: { originalIndex: number }): void => {
1421
1454
  this.originalIndex = opts.originalIndex
1422
1455
 
1423
1456
  const options = this.options as
@@ -1483,7 +1516,6 @@ export class BaseRoute<
1483
1516
  this._id = id as TId
1484
1517
  this._fullPath = fullPath as TFullPath
1485
1518
  this._to = fullPath as TrimPathRight<TFullPath>
1486
- this._ssr = options?.ssr ?? opts.defaultSsr ?? true
1487
1519
  }
1488
1520
 
1489
1521
  clone = (other: typeof this) => {
@@ -1491,7 +1523,6 @@ export class BaseRoute<
1491
1523
  this._id = other._id
1492
1524
  this._fullPath = other._fullPath
1493
1525
  this._to = other._to
1494
- this._ssr = other._ssr
1495
1526
  this.options.getParentRoute = other.options.getParentRoute
1496
1527
  this.children = other.children
1497
1528
  }