@tanstack/router-core 0.0.1-beta.8 → 1.20.3-alpha.1

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 (194) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/dist/cjs/Matches.cjs +13 -0
  4. package/dist/cjs/Matches.cjs.map +1 -0
  5. package/dist/cjs/Matches.d.cts +109 -0
  6. package/dist/cjs/RouterProvider.d.cts +26 -0
  7. package/dist/cjs/defer.cjs +25 -0
  8. package/dist/cjs/defer.cjs.map +1 -0
  9. package/dist/cjs/defer.d.cts +20 -0
  10. package/dist/cjs/fileRoute.d.cts +23 -0
  11. package/dist/cjs/history.d.cts +8 -0
  12. package/dist/cjs/index.cjs +80 -0
  13. package/dist/cjs/index.cjs.map +1 -0
  14. package/dist/cjs/index.d.cts +41 -0
  15. package/dist/cjs/link.cjs +5 -0
  16. package/dist/cjs/link.cjs.map +1 -0
  17. package/dist/cjs/link.d.cts +200 -0
  18. package/dist/cjs/location.d.cts +12 -0
  19. package/dist/cjs/manifest.d.cts +24 -0
  20. package/dist/cjs/not-found.cjs +13 -0
  21. package/dist/cjs/not-found.cjs.map +1 -0
  22. package/dist/cjs/not-found.d.cts +20 -0
  23. package/dist/cjs/path.cjs +412 -0
  24. package/dist/cjs/path.cjs.map +1 -0
  25. package/dist/cjs/path.d.cts +56 -0
  26. package/dist/cjs/qss.cjs +38 -0
  27. package/dist/cjs/qss.cjs.map +1 -0
  28. package/dist/cjs/qss.d.cts +22 -0
  29. package/dist/cjs/redirect.cjs +34 -0
  30. package/dist/cjs/redirect.cjs.map +1 -0
  31. package/dist/cjs/redirect.d.cts +38 -0
  32. package/dist/cjs/root.cjs +5 -0
  33. package/dist/cjs/root.cjs.map +1 -0
  34. package/dist/cjs/root.d.cts +2 -0
  35. package/dist/cjs/route.cjs +119 -0
  36. package/dist/cjs/route.cjs.map +1 -0
  37. package/dist/cjs/route.d.cts +422 -0
  38. package/dist/cjs/routeInfo.d.cts +54 -0
  39. package/dist/cjs/router.cjs +1800 -0
  40. package/dist/cjs/router.cjs.map +1 -0
  41. package/dist/cjs/router.d.cts +630 -0
  42. package/dist/cjs/scroll-restoration.cjs +196 -0
  43. package/dist/cjs/scroll-restoration.cjs.map +1 -0
  44. package/dist/cjs/scroll-restoration.d.cts +38 -0
  45. package/dist/cjs/searchMiddleware.cjs +42 -0
  46. package/dist/cjs/searchMiddleware.cjs.map +1 -0
  47. package/dist/cjs/searchMiddleware.d.cts +5 -0
  48. package/dist/cjs/searchParams.cjs +61 -0
  49. package/dist/cjs/searchParams.cjs.map +1 -0
  50. package/dist/cjs/searchParams.d.cts +7 -0
  51. package/dist/cjs/serializer.d.cts +22 -0
  52. package/dist/cjs/structuralSharing.d.cts +4 -0
  53. package/dist/cjs/typePrimitives.d.cts +65 -0
  54. package/dist/cjs/useLoaderData.d.cts +5 -0
  55. package/dist/cjs/useLoaderDeps.d.cts +5 -0
  56. package/dist/cjs/useNavigate.d.cts +3 -0
  57. package/dist/cjs/useParams.d.cts +5 -0
  58. package/dist/cjs/useRouteContext.d.cts +9 -0
  59. package/dist/cjs/useSearch.d.cts +5 -0
  60. package/dist/cjs/utils.cjs +160 -0
  61. package/dist/cjs/utils.cjs.map +1 -0
  62. package/dist/cjs/utils.d.cts +105 -0
  63. package/dist/cjs/validators.d.cts +51 -0
  64. package/dist/esm/Matches.d.ts +109 -0
  65. package/dist/esm/Matches.js +13 -0
  66. package/dist/esm/Matches.js.map +1 -0
  67. package/dist/esm/RouterProvider.d.ts +26 -0
  68. package/dist/esm/defer.d.ts +20 -0
  69. package/dist/esm/defer.js +25 -0
  70. package/dist/esm/defer.js.map +1 -0
  71. package/dist/esm/fileRoute.d.ts +23 -0
  72. package/dist/esm/history.d.ts +8 -0
  73. package/dist/esm/index.d.ts +41 -0
  74. package/dist/esm/index.js +80 -0
  75. package/dist/esm/index.js.map +1 -0
  76. package/dist/esm/link.d.ts +200 -0
  77. package/dist/esm/link.js +5 -0
  78. package/dist/esm/link.js.map +1 -0
  79. package/dist/esm/location.d.ts +12 -0
  80. package/dist/esm/manifest.d.ts +24 -0
  81. package/dist/esm/not-found.d.ts +20 -0
  82. package/dist/esm/not-found.js +13 -0
  83. package/dist/esm/not-found.js.map +1 -0
  84. package/dist/esm/path.d.ts +56 -0
  85. package/dist/esm/path.js +412 -0
  86. package/dist/esm/path.js.map +1 -0
  87. package/dist/esm/qss.d.ts +22 -0
  88. package/dist/esm/qss.js +38 -0
  89. package/dist/esm/qss.js.map +1 -0
  90. package/dist/esm/redirect.d.ts +38 -0
  91. package/dist/esm/redirect.js +34 -0
  92. package/dist/esm/redirect.js.map +1 -0
  93. package/dist/esm/root.d.ts +2 -0
  94. package/dist/esm/root.js +5 -0
  95. package/dist/esm/root.js.map +1 -0
  96. package/dist/esm/route.d.ts +422 -0
  97. package/dist/esm/route.js +119 -0
  98. package/dist/esm/route.js.map +1 -0
  99. package/dist/esm/routeInfo.d.ts +54 -0
  100. package/dist/esm/router.d.ts +630 -0
  101. package/dist/esm/router.js +1800 -0
  102. package/dist/esm/router.js.map +1 -0
  103. package/dist/esm/scroll-restoration.d.ts +38 -0
  104. package/dist/esm/scroll-restoration.js +196 -0
  105. package/dist/esm/scroll-restoration.js.map +1 -0
  106. package/dist/esm/searchMiddleware.d.ts +5 -0
  107. package/dist/esm/searchMiddleware.js +42 -0
  108. package/dist/esm/searchMiddleware.js.map +1 -0
  109. package/dist/esm/searchParams.d.ts +7 -0
  110. package/dist/esm/searchParams.js +61 -0
  111. package/dist/esm/searchParams.js.map +1 -0
  112. package/dist/esm/serializer.d.ts +22 -0
  113. package/dist/esm/structuralSharing.d.ts +4 -0
  114. package/dist/esm/typePrimitives.d.ts +65 -0
  115. package/dist/esm/useLoaderData.d.ts +5 -0
  116. package/dist/esm/useLoaderDeps.d.ts +5 -0
  117. package/dist/esm/useNavigate.d.ts +3 -0
  118. package/dist/esm/useParams.d.ts +5 -0
  119. package/dist/esm/useRouteContext.d.ts +9 -0
  120. package/dist/esm/useSearch.d.ts +5 -0
  121. package/dist/esm/utils.d.ts +105 -0
  122. package/dist/esm/utils.js +160 -0
  123. package/dist/esm/utils.js.map +1 -0
  124. package/dist/esm/validators.d.ts +51 -0
  125. package/package.json +36 -32
  126. package/src/Matches.ts +239 -0
  127. package/src/RouterProvider.ts +50 -0
  128. package/src/defer.ts +52 -0
  129. package/src/fileRoute.ts +140 -0
  130. package/src/history.ts +9 -0
  131. package/src/index.ts +421 -19
  132. package/src/link.ts +580 -286
  133. package/src/location.ts +13 -0
  134. package/src/manifest.ts +32 -0
  135. package/src/not-found.ts +29 -0
  136. package/src/path.ts +425 -49
  137. package/src/qss.ts +70 -41
  138. package/src/redirect.ts +100 -0
  139. package/src/root.ts +2 -0
  140. package/src/route.ts +1679 -228
  141. package/src/routeInfo.ts +224 -217
  142. package/src/router.ts +3073 -1033
  143. package/src/scroll-restoration.ts +340 -0
  144. package/src/searchMiddleware.ts +54 -0
  145. package/src/searchParams.ts +43 -20
  146. package/src/serializer.ts +32 -0
  147. package/src/structuralSharing.ts +7 -0
  148. package/src/typePrimitives.ts +181 -0
  149. package/src/useLoaderData.ts +20 -0
  150. package/src/useLoaderDeps.ts +13 -0
  151. package/src/useNavigate.ts +13 -0
  152. package/src/useParams.ts +20 -0
  153. package/src/useRouteContext.ts +39 -0
  154. package/src/useSearch.ts +20 -0
  155. package/src/utils.ts +369 -75
  156. package/src/validators.ts +121 -0
  157. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -33
  158. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  159. package/build/cjs/node_modules/@babel/runtime/helpers/esm/extends.js +0 -33
  160. package/build/cjs/node_modules/@babel/runtime/helpers/esm/extends.js.map +0 -1
  161. package/build/cjs/node_modules/history/index.js +0 -815
  162. package/build/cjs/node_modules/history/index.js.map +0 -1
  163. package/build/cjs/node_modules/tiny-invariant/dist/esm/tiny-invariant.js +0 -30
  164. package/build/cjs/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +0 -1
  165. package/build/cjs/packages/router-core/src/index.js +0 -59
  166. package/build/cjs/packages/router-core/src/index.js.map +0 -1
  167. package/build/cjs/packages/router-core/src/path.js +0 -222
  168. package/build/cjs/packages/router-core/src/path.js.map +0 -1
  169. package/build/cjs/packages/router-core/src/qss.js +0 -71
  170. package/build/cjs/packages/router-core/src/qss.js.map +0 -1
  171. package/build/cjs/packages/router-core/src/route.js +0 -161
  172. package/build/cjs/packages/router-core/src/route.js.map +0 -1
  173. package/build/cjs/packages/router-core/src/routeConfig.js +0 -69
  174. package/build/cjs/packages/router-core/src/routeConfig.js.map +0 -1
  175. package/build/cjs/packages/router-core/src/routeMatch.js +0 -266
  176. package/build/cjs/packages/router-core/src/routeMatch.js.map +0 -1
  177. package/build/cjs/packages/router-core/src/router.js +0 -812
  178. package/build/cjs/packages/router-core/src/router.js.map +0 -1
  179. package/build/cjs/packages/router-core/src/searchParams.js +0 -70
  180. package/build/cjs/packages/router-core/src/searchParams.js.map +0 -1
  181. package/build/cjs/packages/router-core/src/utils.js +0 -125
  182. package/build/cjs/packages/router-core/src/utils.js.map +0 -1
  183. package/build/esm/index.js +0 -2480
  184. package/build/esm/index.js.map +0 -1
  185. package/build/stats-html.html +0 -4034
  186. package/build/stats-react.json +0 -499
  187. package/build/types/index.d.ts +0 -619
  188. package/build/umd/index.development.js +0 -2514
  189. package/build/umd/index.development.js.map +0 -1
  190. package/build/umd/index.production.js +0 -12
  191. package/build/umd/index.production.js.map +0 -1
  192. package/src/frameworks.ts +0 -12
  193. package/src/routeConfig.ts +0 -495
  194. package/src/routeMatch.ts +0 -374
package/src/routeInfo.ts CHANGED
@@ -1,228 +1,235 @@
1
- import { ParsePathParams } from './link'
2
- import { Route } from './route'
3
- import {
4
- AnyLoaderData,
5
- AnyPathParams,
6
- AnyRouteConfig,
7
- AnyRouteConfigWithChildren,
8
- AnySearchSchema,
9
- RootRouteId,
10
- RouteConfig,
11
- RouteOptions,
12
- } from './routeConfig'
13
- import { IsAny, Values } from './utils'
14
-
15
- export interface AnyAllRouteInfo {
16
- routeConfig: AnyRouteConfig
17
- routeInfo: AnyRouteInfo
18
- routeInfoById: Record<string, AnyRouteInfo>
19
- routeInfoByFullPath: Record<string, AnyRouteInfo>
20
- routeIds: any
21
- routePaths: any
22
- }
1
+ import type { InferFileRouteTypes } from './fileRoute'
2
+ import type { AddTrailingSlash, RemoveTrailingSlashes } from './link'
3
+ import type { AnyRoute } from './route'
4
+ import type { AnyRouter, TrailingSlashOption } from './router'
5
+ import type { PartialMergeAll } from './utils'
23
6
 
24
- export interface DefaultAllRouteInfo {
25
- routeConfig: RouteConfig
26
- routeInfo: RouteInfo
27
- routeInfoById: Record<string, RouteInfo>
28
- routeInfoByFullPath: Record<string, RouteInfo>
29
- routeIds: string
30
- routePaths: string
7
+ export type ParseRoute<TRouteTree, TAcc = TRouteTree> = TRouteTree extends {
8
+ types: { children: infer TChildren }
31
9
  }
10
+ ? unknown extends TChildren
11
+ ? TAcc
12
+ : TChildren extends ReadonlyArray<any>
13
+ ? ParseRoute<TChildren[number], TAcc | TChildren[number]>
14
+ : ParseRoute<
15
+ TChildren[keyof TChildren],
16
+ TAcc | TChildren[keyof TChildren]
17
+ >
18
+ : TAcc
32
19
 
33
- export interface AllRouteInfo<TRouteConfig extends AnyRouteConfig = RouteConfig>
34
- extends RoutesInfoInner<TRouteConfig, ParseRouteConfig<TRouteConfig>> {}
20
+ export type ParseRouteWithoutBranches<TRouteTree> =
21
+ ParseRoute<TRouteTree> extends infer TRoute extends AnyRoute
22
+ ? TRoute extends any
23
+ ? unknown extends TRoute['types']['children']
24
+ ? TRoute
25
+ : TRoute['types']['children'] extends ReadonlyArray<any>
26
+ ? '/' extends TRoute['types']['children'][number]['path']
27
+ ? never
28
+ : TRoute
29
+ : '/' extends TRoute['types']['children'][keyof TRoute['types']['children']]['path']
30
+ ? never
31
+ : TRoute
32
+ : never
33
+ : never
35
34
 
36
- export type ParseRouteConfig<TRouteConfig = AnyRouteConfig> =
37
- TRouteConfig extends AnyRouteConfig
38
- ? RouteConfigRoute<TRouteConfig> | ParseRouteChildren<TRouteConfig>
35
+ export type CodeRoutesById<TRouteTree extends AnyRoute> =
36
+ ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
37
+ ? {
38
+ [K in TRoutes as K['id']]: K
39
+ }
39
40
  : never
40
41
 
41
- type ParseRouteChildren<TRouteConfig> =
42
- TRouteConfig extends AnyRouteConfigWithChildren<infer TChildren>
43
- ? unknown extends TChildren
44
- ? never
45
- : TChildren extends AnyRouteConfig[]
46
- ? Values<{
47
- [TId in TChildren[number]['id']]: ParseRouteChild<
48
- TChildren[number],
49
- TId
50
- >
51
- }>
52
- : never // Children are not routes
53
- : never // No children
54
-
55
- type ParseRouteChild<TRouteConfig, TId> = TRouteConfig & {
56
- id: TId
57
- } extends AnyRouteConfig
58
- ? ParseRouteConfig<TRouteConfig>
59
- : never
60
-
61
- export type RouteConfigRoute<TRouteConfig> = TRouteConfig extends RouteConfig<
62
- infer TId,
63
- infer TRouteId,
64
- infer TPath,
65
- infer TFullPath,
66
- infer TRouteLoaderData,
67
- infer TLoaderData,
68
- infer TActionPayload,
69
- infer TActionResponse,
70
- infer TParentSearchSchema,
71
- infer TSearchSchema,
72
- infer TFullSearchSchema,
73
- infer TParentParams,
74
- infer TParams,
75
- infer TAllParams,
76
- any
42
+ export type RoutesById<TRouteTree extends AnyRoute> =
43
+ InferFileRouteTypes<TRouteTree> extends never
44
+ ? CodeRoutesById<TRouteTree>
45
+ : InferFileRouteTypes<TRouteTree>['fileRoutesById']
46
+
47
+ export type RouteById<TRouteTree extends AnyRoute, TId> = Extract<
48
+ RoutesById<TRouteTree>[TId & keyof RoutesById<TRouteTree>],
49
+ AnyRoute
77
50
  >
78
- ? string extends TRouteId
79
- ? never
80
- : RouteInfo<
81
- TId,
82
- TRouteId,
83
- TPath,
84
- TFullPath,
85
- TRouteLoaderData,
86
- TLoaderData,
87
- TActionPayload,
88
- TActionResponse,
89
- TParentSearchSchema,
90
- TSearchSchema,
91
- TFullSearchSchema,
92
- TParentParams,
93
- TParams,
94
- TAllParams
95
- >
96
- : never
97
-
98
- export interface RoutesInfoInner<
99
- TRouteConfig extends AnyRouteConfig,
100
- TRouteInfo extends RouteInfo<
101
- string,
102
- string,
103
- any,
104
- any,
105
- any,
106
- any,
107
- any,
108
- any,
109
- any,
110
- any,
111
- any,
112
- any,
113
- any,
114
- any
115
- > = RouteInfo,
116
- TRouteInfoById = {
117
- [TInfo in TRouteInfo as TInfo['id']]: TInfo
118
- },
119
- TRouteInfoByFullPath = {
120
- [TInfo in TRouteInfo as TInfo['fullPath'] extends RootRouteId
121
- ? never
122
- : string extends TInfo['fullPath']
123
- ? never
124
- : TInfo['fullPath']]: TInfo
125
- },
126
- > {
127
- routeConfig: TRouteConfig
128
- routeInfo: TRouteInfo
129
- routeInfoById: TRouteInfoById
130
- routeInfoByFullPath: TRouteInfoByFullPath
131
- routeIds: keyof TRouteInfoById
132
- routePaths: keyof TRouteInfoByFullPath
133
- }
134
51
 
135
- export interface AnyRouteInfo
136
- extends RouteInfo<
137
- any,
138
- any,
139
- any,
140
- any,
141
- any,
142
- any,
143
- any,
144
- any,
145
- any,
146
- any,
147
- any,
148
- any,
149
- any,
150
- any
151
- > {}
152
-
153
- export interface RouteInfo<
154
- TId extends string = string,
155
- TRouteId extends string = string,
156
- TPath extends string = string,
157
- TFullPath extends string = string,
158
- TRouteLoaderData extends AnyLoaderData = {},
159
- TLoaderData extends AnyLoaderData = {},
160
- TActionPayload = unknown,
161
- TActionResponse = unknown,
162
- TParentSearchSchema extends {} = {},
163
- TSearchSchema extends AnySearchSchema = {},
164
- TFullSearchSchema extends AnySearchSchema = {},
165
- TParentParams extends AnyPathParams = {},
166
- TParams extends Record<ParsePathParams<TPath>, unknown> = Record<
167
- ParsePathParams<TPath>,
168
- string
169
- >,
170
- TAllParams extends AnyPathParams = {},
171
- > {
172
- id: TId
173
- routeId: TRouteId
174
- path: TPath
175
- fullPath: TFullPath
176
- routeLoaderData: TRouteLoaderData
177
- loaderData: TLoaderData
178
- actionPayload: TActionPayload
179
- actionResponse: TActionResponse
180
- searchSchema: TSearchSchema
181
- fullSearchSchema: TFullSearchSchema
182
- parentParams: TParentParams
183
- params: TParams
184
- allParams: TAllParams
185
- options: RouteOptions<
186
- TRouteId,
187
- TPath,
188
- TRouteLoaderData,
189
- TLoaderData,
190
- TActionPayload,
191
- TActionResponse,
192
- TParentSearchSchema,
193
- TSearchSchema,
194
- TFullSearchSchema,
195
- TParentParams,
196
- TParams,
197
- TAllParams
198
- >
199
- }
52
+ export type CodeRouteIds<TRouteTree extends AnyRoute> =
53
+ ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
54
+ ? TRoutes['id']
55
+ : never
56
+
57
+ export type RouteIds<TRouteTree extends AnyRoute> =
58
+ InferFileRouteTypes<TRouteTree> extends never
59
+ ? CodeRouteIds<TRouteTree>
60
+ : InferFileRouteTypes<TRouteTree>['id']
61
+
62
+ export type ParentPath<TRouter extends AnyRouter> =
63
+ TrailingSlashOptionByRouter<TRouter> extends 'always'
64
+ ? '../'
65
+ : TrailingSlashOptionByRouter<TRouter> extends 'never'
66
+ ? '..'
67
+ : '../' | '..'
68
+
69
+ export type CurrentPath<TRouter extends AnyRouter> =
70
+ TrailingSlashOptionByRouter<TRouter> extends 'always'
71
+ ? './'
72
+ : TrailingSlashOptionByRouter<TRouter> extends 'never'
73
+ ? '.'
74
+ : './' | '.'
75
+
76
+ export type ToPath<TRouter extends AnyRouter, TTo extends string> =
77
+ TrailingSlashOptionByRouter<TRouter> extends 'always'
78
+ ? AddTrailingSlash<TTo>
79
+ : TrailingSlashOptionByRouter<TRouter> extends 'never'
80
+ ? RemoveTrailingSlashes<TTo>
81
+ : AddTrailingSlash<TTo> | RemoveTrailingSlashes<TTo>
82
+
83
+ export type CatchAllPaths<TRouter extends AnyRouter> =
84
+ | CurrentPath<TRouter>
85
+ | ParentPath<TRouter>
86
+
87
+ export type CodeRoutesByPath<TRouteTree extends AnyRoute> =
88
+ ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
89
+ ? {
90
+ [K in TRoutes as K['fullPath']]: K
91
+ }
92
+ : never
93
+
94
+ export type RoutesByPath<TRouteTree extends AnyRoute> =
95
+ InferFileRouteTypes<TRouteTree> extends never
96
+ ? CodeRoutesByPath<TRouteTree>
97
+ : InferFileRouteTypes<TRouteTree>['fileRoutesByFullPath']
98
+
99
+ export type RouteByPath<TRouteTree extends AnyRoute, TPath> = Extract<
100
+ RoutesByPath<TRouteTree>[TPath & keyof RoutesByPath<TRouteTree>],
101
+ AnyRoute
102
+ >
103
+
104
+ export type CodeRoutePaths<TRouteTree extends AnyRoute> =
105
+ ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
106
+ ? TRoutes['fullPath']
107
+ : never
108
+
109
+ export type RoutePaths<TRouteTree extends AnyRoute> = unknown extends TRouteTree
110
+ ? string
111
+ :
112
+ | (InferFileRouteTypes<TRouteTree> extends never
113
+ ? CodeRoutePaths<TRouteTree>
114
+ : InferFileRouteTypes<TRouteTree>['fullPaths'])
115
+ | '/'
116
+
117
+ export type RouteToPathAlwaysTrailingSlash<TRoute extends AnyRoute> =
118
+ TRoute['path'] extends '/'
119
+ ? TRoute['fullPath']
120
+ : TRoute['fullPath'] extends '/'
121
+ ? TRoute['fullPath']
122
+ : `${TRoute['fullPath']}/`
123
+
124
+ export type RouteToPathNeverTrailingSlash<TRoute extends AnyRoute> =
125
+ TRoute['path'] extends '/'
126
+ ? TRoute['fullPath'] extends '/'
127
+ ? TRoute['fullPath']
128
+ : RemoveTrailingSlashes<TRoute['fullPath']>
129
+ : TRoute['fullPath']
130
+
131
+ export type RouteToPathPreserveTrailingSlash<TRoute extends AnyRoute> =
132
+ | RouteToPathNeverTrailingSlash<TRoute>
133
+ | RouteToPathAlwaysTrailingSlash<TRoute>
200
134
 
201
- export type RoutesById<TAllRouteInfo extends AnyAllRouteInfo> = {
202
- [K in keyof TAllRouteInfo['routeInfoById']]: Route<
203
- TAllRouteInfo,
204
- TAllRouteInfo['routeInfoById'][K]
205
- >
135
+ export type RouteToPathByTrailingSlashOption<TRoute extends AnyRoute> = {
136
+ always: RouteToPathAlwaysTrailingSlash<TRoute>
137
+ preserve: RouteToPathPreserveTrailingSlash<TRoute>
138
+ never: RouteToPathNeverTrailingSlash<TRoute>
206
139
  }
207
140
 
208
- export type RouteInfoById<
209
- TAllRouteInfo extends AnyAllRouteInfo,
210
- TId,
211
- > = TId extends keyof TAllRouteInfo['routeInfoById']
212
- ? IsAny<
213
- TAllRouteInfo['routeInfoById'][TId]['id'],
214
- RouteInfo,
215
- TAllRouteInfo['routeInfoById'][TId]
216
- >
217
- : never
218
-
219
- export type RouteInfoByPath<
220
- TAllRouteInfo extends AnyAllRouteInfo,
221
- TPath,
222
- > = TPath extends keyof TAllRouteInfo['routeInfoByFullPath']
223
- ? IsAny<
224
- TAllRouteInfo['routeInfoByFullPath'][TPath]['id'],
225
- RouteInfo,
226
- TAllRouteInfo['routeInfoByFullPath'][TPath]
227
- >
228
- : never
141
+ export type TrailingSlashOptionByRouter<TRouter extends AnyRouter> =
142
+ TrailingSlashOption extends TRouter['options']['trailingSlash']
143
+ ? 'never'
144
+ : NonNullable<TRouter['options']['trailingSlash']>
145
+
146
+ export type RouteToByRouter<
147
+ TRouter extends AnyRouter,
148
+ TRoute extends AnyRoute,
149
+ > = RouteToPathByTrailingSlashOption<TRoute>[TrailingSlashOptionByRouter<TRouter>]
150
+
151
+ export type CodeRouteToPath<TRouter extends AnyRouter> =
152
+ ParseRouteWithoutBranches<TRouter['routeTree']> extends infer TRoute extends
153
+ AnyRoute
154
+ ? TRoute extends any
155
+ ? RouteToByRouter<TRouter, TRoute>
156
+ : never
157
+ : never
158
+
159
+ export type FileRouteToPath<
160
+ TRouter extends AnyRouter,
161
+ TTo = InferFileRouteTypes<TRouter['routeTree']>['to'],
162
+ TTrailingSlashOption = TrailingSlashOptionByRouter<TRouter>,
163
+ > = 'never' extends TTrailingSlashOption
164
+ ? TTo
165
+ : 'always' extends TTrailingSlashOption
166
+ ? AddTrailingSlash<TTo>
167
+ : TTo | AddTrailingSlash<TTo>
168
+
169
+ export type RouteToPath<TRouter extends AnyRouter> = unknown extends TRouter
170
+ ? string
171
+ : InferFileRouteTypes<TRouter['routeTree']> extends never
172
+ ? CodeRouteToPath<TRouter>
173
+ : FileRouteToPath<TRouter>
174
+
175
+ export type CodeRoutesByToPath<TRouter extends AnyRouter> =
176
+ ParseRouteWithoutBranches<TRouter['routeTree']> extends infer TRoutes extends
177
+ AnyRoute
178
+ ? {
179
+ [TRoute in TRoutes as RouteToByRouter<TRouter, TRoute>]: TRoute
180
+ }
181
+ : never
182
+
183
+ export type RoutesByToPath<TRouter extends AnyRouter> =
184
+ InferFileRouteTypes<TRouter['routeTree']> extends never
185
+ ? CodeRoutesByToPath<TRouter>
186
+ : InferFileRouteTypes<TRouter['routeTree']>['fileRoutesByTo']
187
+
188
+ export type CodeRouteByToPath<TRouter extends AnyRouter, TTo> = Extract<
189
+ RoutesByToPath<TRouter>[TTo & keyof RoutesByToPath<TRouter>],
190
+ AnyRoute
191
+ >
192
+
193
+ export type FileRouteByToPath<TRouter extends AnyRouter, TTo> =
194
+ 'never' extends TrailingSlashOptionByRouter<TRouter>
195
+ ? CodeRouteByToPath<TRouter, TTo>
196
+ : 'always' extends TrailingSlashOptionByRouter<TRouter>
197
+ ? TTo extends '/'
198
+ ? CodeRouteByToPath<TRouter, TTo>
199
+ : TTo extends `${infer TPath}/`
200
+ ? CodeRouteByToPath<TRouter, TPath>
201
+ : never
202
+ : CodeRouteByToPath<
203
+ TRouter,
204
+ TTo extends '/' ? TTo : RemoveTrailingSlashes<TTo>
205
+ >
206
+
207
+ export type RouteByToPath<TRouter extends AnyRouter, TTo> =
208
+ InferFileRouteTypes<TRouter['routeTree']> extends never
209
+ ? CodeRouteByToPath<TRouter, TTo>
210
+ : FileRouteByToPath<TRouter, TTo>
211
+
212
+ export type FullSearchSchema<TRouteTree extends AnyRoute> =
213
+ ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
214
+ ? PartialMergeAll<TRoutes['types']['fullSearchSchema']>
215
+ : never
216
+
217
+ export type FullSearchSchemaInput<TRouteTree extends AnyRoute> =
218
+ ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
219
+ ? PartialMergeAll<TRoutes['types']['fullSearchSchemaInput']>
220
+ : never
221
+
222
+ export type AllParams<TRouteTree extends AnyRoute> =
223
+ ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
224
+ ? PartialMergeAll<TRoutes['types']['allParams']>
225
+ : never
226
+
227
+ export type AllContext<TRouteTree extends AnyRoute> =
228
+ ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
229
+ ? PartialMergeAll<TRoutes['types']['allContext']>
230
+ : never
231
+
232
+ export type AllLoaderData<TRouteTree extends AnyRoute> =
233
+ ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
234
+ ? PartialMergeAll<TRoutes['types']['loaderData']>
235
+ : never