@tanstack/react-router 1.53.1 → 1.56.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.
- package/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/Matches.d.cts +2 -2
- package/dist/cjs/RouterProvider.cjs.map +1 -1
- package/dist/cjs/RouterProvider.d.cts +2 -2
- package/dist/cjs/fileRoute.cjs.map +1 -1
- package/dist/cjs/fileRoute.d.cts +10 -1
- package/dist/cjs/index.d.cts +3 -3
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/link.d.cts +22 -21
- package/dist/cjs/redirects.cjs.map +1 -1
- package/dist/cjs/redirects.d.cts +2 -2
- package/dist/cjs/route.cjs +18 -2
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +8 -5
- package/dist/cjs/routeInfo.d.cts +32 -21
- package/dist/cjs/router.cjs +4 -1
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/router.d.cts +2 -2
- package/dist/cjs/useLoaderData.cjs.map +1 -1
- package/dist/cjs/useLoaderData.d.cts +3 -3
- package/dist/cjs/useLoaderDeps.cjs.map +1 -1
- package/dist/cjs/useLoaderDeps.d.cts +2 -2
- package/dist/cjs/useMatch.cjs.map +1 -1
- package/dist/cjs/useMatch.d.cts +2 -2
- package/dist/cjs/useNavigate.cjs.map +1 -1
- package/dist/cjs/useNavigate.d.cts +2 -2
- package/dist/cjs/useParams.cjs.map +1 -1
- package/dist/cjs/useParams.d.cts +2 -2
- package/dist/cjs/useRouteContext.cjs.map +1 -1
- package/dist/cjs/useRouteContext.d.cts +2 -2
- package/dist/cjs/useSearch.cjs.map +1 -1
- package/dist/cjs/useSearch.d.cts +2 -2
- package/dist/esm/Matches.d.ts +2 -2
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.d.ts +2 -2
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/fileRoute.d.ts +10 -1
- package/dist/esm/fileRoute.js.map +1 -1
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/link.d.ts +22 -21
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/redirects.d.ts +2 -2
- package/dist/esm/redirects.js.map +1 -1
- package/dist/esm/route.d.ts +8 -5
- package/dist/esm/route.js +18 -2
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/routeInfo.d.ts +32 -21
- package/dist/esm/router.d.ts +2 -2
- package/dist/esm/router.js +4 -1
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/useLoaderData.d.ts +3 -3
- package/dist/esm/useLoaderData.js.map +1 -1
- package/dist/esm/useLoaderDeps.d.ts +2 -2
- package/dist/esm/useLoaderDeps.js.map +1 -1
- package/dist/esm/useMatch.d.ts +2 -2
- package/dist/esm/useMatch.js.map +1 -1
- package/dist/esm/useNavigate.d.ts +2 -2
- package/dist/esm/useNavigate.js.map +1 -1
- package/dist/esm/useParams.d.ts +2 -2
- package/dist/esm/useParams.js.map +1 -1
- package/dist/esm/useRouteContext.d.ts +2 -2
- package/dist/esm/useRouteContext.js.map +1 -1
- package/dist/esm/useSearch.d.ts +2 -2
- package/dist/esm/useSearch.js.map +1 -1
- package/package.json +1 -1
- package/src/Matches.tsx +15 -22
- package/src/RouterProvider.tsx +4 -4
- package/src/fileRoute.ts +25 -1
- package/src/index.tsx +10 -1
- package/src/link.tsx +81 -76
- package/src/redirects.ts +8 -8
- package/src/route.ts +98 -9
- package/src/routeInfo.ts +116 -38
- package/src/router.ts +9 -5
- package/src/useLoaderData.tsx +3 -3
- package/src/useLoaderDeps.tsx +3 -3
- package/src/useMatch.tsx +9 -3
- package/src/useNavigate.tsx +5 -5
- package/src/useParams.tsx +10 -3
- package/src/useRouteContext.ts +8 -3
- package/src/useSearch.tsx +11 -4
package/src/link.tsx
CHANGED
|
@@ -97,6 +97,8 @@ export type Last<T extends Array<any>> = T extends [...infer _, infer L]
|
|
|
97
97
|
? L
|
|
98
98
|
: never
|
|
99
99
|
|
|
100
|
+
export type AddTrailingSlash<T> = T extends `${string}/` ? T : `${T & string}/`
|
|
101
|
+
|
|
100
102
|
export type RemoveTrailingSlashes<T> = T extends `${infer R}/` ? R : T
|
|
101
103
|
|
|
102
104
|
export type RemoveLeadingSlashes<T> = T extends `/${infer R}` ? R : T
|
|
@@ -116,15 +118,14 @@ export type SearchPaths<
|
|
|
116
118
|
TRouter extends AnyRouter,
|
|
117
119
|
TSearchPath extends string,
|
|
118
120
|
TPaths = ResolvePaths<TRouter, TSearchPath>,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
: never
|
|
121
|
+
TPrefix extends string = `${RemoveTrailingSlashes<TSearchPath>}/`,
|
|
122
|
+
> = TPaths extends `${TPrefix}${infer TRest}` ? TRest : never
|
|
122
123
|
|
|
123
124
|
export type SearchRelativePathAutoComplete<
|
|
124
125
|
TRouter extends AnyRouter,
|
|
125
126
|
TTo extends string,
|
|
126
127
|
TSearchPath extends string,
|
|
127
|
-
> = `${TTo}
|
|
128
|
+
> = `${TTo}/${SearchPaths<TRouter, TSearchPath>}`
|
|
128
129
|
|
|
129
130
|
export type RelativeToParentPathAutoComplete<
|
|
130
131
|
TRouter extends AnyRouter,
|
|
@@ -144,7 +145,9 @@ export type RelativeToCurrentPathAutoComplete<
|
|
|
144
145
|
TFrom extends string,
|
|
145
146
|
TTo extends string,
|
|
146
147
|
TResolvedPath extends string = ResolveRelativePath<TFrom, TTo>,
|
|
147
|
-
> =
|
|
148
|
+
> =
|
|
149
|
+
| SearchRelativePathAutoComplete<TRouter, TTo, TResolvedPath>
|
|
150
|
+
| CurrentPath<TrailingSlashOptionByRouter<TRouter>>
|
|
148
151
|
|
|
149
152
|
export type AbsolutePathAutoComplete<
|
|
150
153
|
TRouter extends AnyRouter,
|
|
@@ -173,22 +176,28 @@ export type RelativeToPathAutoComplete<
|
|
|
173
176
|
TRouter extends AnyRouter,
|
|
174
177
|
TFrom extends string,
|
|
175
178
|
TTo extends string,
|
|
176
|
-
> =
|
|
177
|
-
?
|
|
178
|
-
: TTo extends
|
|
179
|
-
?
|
|
179
|
+
> = string extends TFrom
|
|
180
|
+
? AbsolutePathAutoComplete<TRouter, TFrom>
|
|
181
|
+
: TTo extends `..${string}`
|
|
182
|
+
? RelativeToParentPathAutoComplete<
|
|
180
183
|
TRouter,
|
|
181
184
|
TFrom,
|
|
182
185
|
RemoveTrailingSlashes<TTo>
|
|
183
186
|
>
|
|
184
|
-
:
|
|
187
|
+
: TTo extends `.${string}`
|
|
188
|
+
? RelativeToCurrentPathAutoComplete<
|
|
189
|
+
TRouter,
|
|
190
|
+
TFrom,
|
|
191
|
+
RemoveTrailingSlashes<TTo>
|
|
192
|
+
>
|
|
193
|
+
: AbsolutePathAutoComplete<TRouter, TFrom>
|
|
185
194
|
|
|
186
195
|
export type NavigateOptions<
|
|
187
196
|
TRouter extends AnyRouter = RegisteredRouter,
|
|
188
|
-
TFrom extends
|
|
189
|
-
TTo extends string = '',
|
|
190
|
-
TMaskFrom extends
|
|
191
|
-
TMaskTo extends string = '',
|
|
197
|
+
TFrom extends string = string,
|
|
198
|
+
TTo extends string | undefined = '.',
|
|
199
|
+
TMaskFrom extends string = TFrom,
|
|
200
|
+
TMaskTo extends string = '.',
|
|
192
201
|
> = ToOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & NavigateOptionProps
|
|
193
202
|
|
|
194
203
|
export interface NavigateOptionProps {
|
|
@@ -204,15 +213,15 @@ export interface NavigateOptionProps {
|
|
|
204
213
|
|
|
205
214
|
export type ToOptions<
|
|
206
215
|
TRouter extends AnyRouter = RegisteredRouter,
|
|
207
|
-
TFrom extends
|
|
208
|
-
TTo extends string = '',
|
|
209
|
-
TMaskFrom extends
|
|
210
|
-
TMaskTo extends string = '',
|
|
216
|
+
TFrom extends string = string,
|
|
217
|
+
TTo extends string | undefined = '.',
|
|
218
|
+
TMaskFrom extends string = TFrom,
|
|
219
|
+
TMaskTo extends string = '.',
|
|
211
220
|
> = ToSubOptions<TRouter, TFrom, TTo> & MaskOptions<TRouter, TMaskFrom, TMaskTo>
|
|
212
221
|
|
|
213
222
|
export interface MaskOptions<
|
|
214
223
|
in out TRouter extends AnyRouter,
|
|
215
|
-
in out TMaskFrom extends
|
|
224
|
+
in out TMaskFrom extends string,
|
|
216
225
|
in out TMaskTo extends string,
|
|
217
226
|
> {
|
|
218
227
|
_fromLocation?: ParsedLocation
|
|
@@ -221,16 +230,16 @@ export interface MaskOptions<
|
|
|
221
230
|
|
|
222
231
|
export type ToMaskOptions<
|
|
223
232
|
TRouteTree extends AnyRouter = RegisteredRouter,
|
|
224
|
-
TMaskFrom extends
|
|
225
|
-
TMaskTo extends string = '',
|
|
233
|
+
TMaskFrom extends string = string,
|
|
234
|
+
TMaskTo extends string = '.',
|
|
226
235
|
> = ToSubOptions<TRouteTree, TMaskFrom, TMaskTo> & {
|
|
227
236
|
unmaskOnReload?: boolean
|
|
228
237
|
}
|
|
229
238
|
|
|
230
239
|
export type ToSubOptions<
|
|
231
240
|
TRouter extends AnyRouter = RegisteredRouter,
|
|
232
|
-
TFrom extends
|
|
233
|
-
TTo extends string = '',
|
|
241
|
+
TFrom extends string = string,
|
|
242
|
+
TTo extends string | undefined = '.',
|
|
234
243
|
> = ToSubOptionsProps<TRouter, TFrom, TTo> &
|
|
235
244
|
SearchParamOptions<TRouter, TFrom, TTo> &
|
|
236
245
|
PathParamOptions<TRouter, TFrom, TTo>
|
|
@@ -238,7 +247,7 @@ export type ToSubOptions<
|
|
|
238
247
|
export interface ToSubOptionsProps<
|
|
239
248
|
in out TRouter extends AnyRouter = RegisteredRouter,
|
|
240
249
|
in out TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
241
|
-
in out TTo extends string = '',
|
|
250
|
+
in out TTo extends string | undefined = '.',
|
|
242
251
|
> {
|
|
243
252
|
to?: ToPathOption<TRouter, TFrom, TTo> & {}
|
|
244
253
|
hash?: true | Updater<string>
|
|
@@ -316,15 +325,17 @@ export type ResolveToParams<
|
|
|
316
325
|
TTo,
|
|
317
326
|
> =
|
|
318
327
|
ResolveRelativePath<TFrom, TTo> extends infer TPath
|
|
319
|
-
?
|
|
320
|
-
?
|
|
321
|
-
:
|
|
328
|
+
? undefined extends TPath
|
|
329
|
+
? never
|
|
330
|
+
: string extends TPath
|
|
322
331
|
? ResolveAllToParams<TRouter, TParamVariant>
|
|
323
|
-
:
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
332
|
+
: TPath extends CatchAllPaths<TrailingSlashOptionByRouter<TRouter>>
|
|
333
|
+
? ResolveAllToParams<TRouter, TParamVariant>
|
|
334
|
+
: ResolveRoute<
|
|
335
|
+
TRouter,
|
|
336
|
+
TFrom,
|
|
337
|
+
TTo
|
|
338
|
+
>['types'][ResolveToParamType<TParamVariant>]
|
|
328
339
|
: never
|
|
329
340
|
|
|
330
341
|
type ResolveRelativeToParams<
|
|
@@ -410,20 +421,12 @@ export type IsRequired<
|
|
|
410
421
|
>
|
|
411
422
|
: never
|
|
412
423
|
|
|
413
|
-
export type SearchParamOptions<
|
|
414
|
-
TRouter extends AnyRouter,
|
|
415
|
-
TFrom,
|
|
416
|
-
TTo extends string,
|
|
417
|
-
> =
|
|
424
|
+
export type SearchParamOptions<TRouter extends AnyRouter, TFrom, TTo> =
|
|
418
425
|
IsRequired<TRouter, 'SEARCH', TFrom, TTo> extends never
|
|
419
426
|
? MakeOptionalSearchParams<TRouter, TFrom, TTo>
|
|
420
427
|
: MakeRequiredSearchParams<TRouter, TFrom, TTo>
|
|
421
428
|
|
|
422
|
-
export type PathParamOptions<
|
|
423
|
-
TRouter extends AnyRouter,
|
|
424
|
-
TFrom,
|
|
425
|
-
TTo extends string,
|
|
426
|
-
> =
|
|
429
|
+
export type PathParamOptions<TRouter extends AnyRouter, TFrom, TTo> =
|
|
427
430
|
IsRequired<TRouter, 'PATH', TFrom, TTo> extends never
|
|
428
431
|
? MakeOptionalPathParams<TRouter, TFrom, TTo>
|
|
429
432
|
: MakeRequiredPathParams<TRouter, TFrom, TTo>
|
|
@@ -431,7 +434,7 @@ export type PathParamOptions<
|
|
|
431
434
|
export type ToPathOption<
|
|
432
435
|
TRouter extends AnyRouter = AnyRouter,
|
|
433
436
|
TFrom extends string = string,
|
|
434
|
-
TTo extends string = string,
|
|
437
|
+
TTo extends string | undefined = string,
|
|
435
438
|
> =
|
|
436
439
|
| CheckPath<TRouter, TTo, never, TFrom, TTo>
|
|
437
440
|
| RelativeToPathAutoComplete<
|
|
@@ -469,9 +472,9 @@ export interface ActiveOptions {
|
|
|
469
472
|
export type LinkOptions<
|
|
470
473
|
TRouter extends AnyRouter = RegisteredRouter,
|
|
471
474
|
TFrom extends string = string,
|
|
472
|
-
TTo extends string = '',
|
|
475
|
+
TTo extends string | undefined = '.',
|
|
473
476
|
TMaskFrom extends string = TFrom,
|
|
474
|
-
TMaskTo extends string = '',
|
|
477
|
+
TMaskTo extends string = '.',
|
|
475
478
|
> = NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & LinkOptionsProps
|
|
476
479
|
|
|
477
480
|
export interface LinkOptionsProps {
|
|
@@ -519,29 +522,31 @@ export type ResolveRelativePath<TFrom, TTo = '.'> = string extends TFrom
|
|
|
519
522
|
? TTo
|
|
520
523
|
: string extends TTo
|
|
521
524
|
? TFrom
|
|
522
|
-
:
|
|
523
|
-
?
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
?
|
|
528
|
-
: TTo extends
|
|
529
|
-
?
|
|
530
|
-
: TTo extends
|
|
531
|
-
?
|
|
532
|
-
:
|
|
533
|
-
?
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
525
|
+
: undefined extends TTo
|
|
526
|
+
? TFrom
|
|
527
|
+
: TFrom extends string
|
|
528
|
+
? TTo extends string
|
|
529
|
+
? TTo extends '.'
|
|
530
|
+
? TFrom
|
|
531
|
+
: TTo extends `./`
|
|
532
|
+
? Join<[TFrom, '/']>
|
|
533
|
+
: TTo extends `./${infer TRest}`
|
|
534
|
+
? ResolveRelativePath<TFrom, TRest>
|
|
535
|
+
: TTo extends `/${infer TRest}`
|
|
536
|
+
? TTo
|
|
537
|
+
: Split<TTo> extends ['..', ...infer ToRest]
|
|
538
|
+
? Split<TFrom> extends [...infer FromRest, infer FromTail]
|
|
539
|
+
? ToRest extends ['/']
|
|
540
|
+
? Join<['/', ...FromRest, '/']>
|
|
541
|
+
: ResolveRelativePath<Join<FromRest>, Join<ToRest>>
|
|
542
|
+
: never
|
|
543
|
+
: Split<TTo> extends ['.', ...infer ToRest]
|
|
544
|
+
? ToRest extends ['/']
|
|
545
|
+
? Join<[TFrom, '/']>
|
|
546
|
+
: ResolveRelativePath<TFrom, Join<ToRest>>
|
|
547
|
+
: CleanPath<Join<['/', ...Split<TFrom>, ...Split<TTo>]>>
|
|
548
|
+
: never
|
|
543
549
|
: never
|
|
544
|
-
: never
|
|
545
550
|
|
|
546
551
|
// type Test1 = ResolveRelativePath<'/', '/posts'>
|
|
547
552
|
// // ^?
|
|
@@ -844,18 +849,18 @@ export function useLinkProps<
|
|
|
844
849
|
export type UseLinkPropsOptions<
|
|
845
850
|
TRouter extends AnyRouter = RegisteredRouter,
|
|
846
851
|
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
847
|
-
TTo extends string = '',
|
|
852
|
+
TTo extends string | undefined = '.',
|
|
848
853
|
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
|
|
849
|
-
TMaskTo extends string = '',
|
|
854
|
+
TMaskTo extends string = '.',
|
|
850
855
|
> = ActiveLinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &
|
|
851
856
|
React.AnchorHTMLAttributes<HTMLAnchorElement>
|
|
852
857
|
|
|
853
858
|
export type ActiveLinkOptions<
|
|
854
859
|
TRouter extends AnyRouter = RegisteredRouter,
|
|
855
860
|
TFrom extends string = string,
|
|
856
|
-
TTo extends string = '',
|
|
861
|
+
TTo extends string | undefined = '.',
|
|
857
862
|
TMaskFrom extends string = TFrom,
|
|
858
|
-
TMaskTo extends string = '',
|
|
863
|
+
TMaskTo extends string = '.',
|
|
859
864
|
> = LinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & ActiveLinkOptionProps
|
|
860
865
|
|
|
861
866
|
type ActiveLinkAnchorProps = Omit<
|
|
@@ -881,9 +886,9 @@ export interface ActiveLinkOptionProps {
|
|
|
881
886
|
export type LinkProps<
|
|
882
887
|
TRouter extends AnyRouter = RegisteredRouter,
|
|
883
888
|
TFrom extends string = string,
|
|
884
|
-
TTo extends string = '',
|
|
889
|
+
TTo extends string | undefined = '.',
|
|
885
890
|
TMaskFrom extends string = TFrom,
|
|
886
|
-
TMaskTo extends string = '',
|
|
891
|
+
TMaskTo extends string = '.',
|
|
887
892
|
> = ActiveLinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &
|
|
888
893
|
LinkPropsChildren
|
|
889
894
|
|
|
@@ -918,16 +923,16 @@ export type LinkComponentProps<
|
|
|
918
923
|
TComp,
|
|
919
924
|
TRouter extends AnyRouter = RegisteredRouter,
|
|
920
925
|
TFrom extends string = string,
|
|
921
|
-
TTo extends string = '',
|
|
926
|
+
TTo extends string | undefined = '.',
|
|
922
927
|
TMaskFrom extends string = TFrom,
|
|
923
|
-
TMaskTo extends string = '',
|
|
928
|
+
TMaskTo extends string = '.',
|
|
924
929
|
> = LinkComponentReactProps<TComp> &
|
|
925
930
|
LinkProps<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>
|
|
926
931
|
|
|
927
932
|
export type LinkComponent<TComp> = <
|
|
928
933
|
TRouter extends RegisteredRouter = RegisteredRouter,
|
|
929
934
|
TFrom extends string = string,
|
|
930
|
-
TTo extends string =
|
|
935
|
+
TTo extends string | undefined = undefined,
|
|
931
936
|
TMaskFrom extends string = TFrom,
|
|
932
937
|
TMaskTo extends string = '',
|
|
933
938
|
>(
|
package/src/redirects.ts
CHANGED
|
@@ -7,10 +7,10 @@ export type AnyRedirect = Redirect<any, any, any, any, any>
|
|
|
7
7
|
|
|
8
8
|
export type Redirect<
|
|
9
9
|
TRouter extends AnyRouter = RegisteredRouter,
|
|
10
|
-
TFrom extends RoutePaths<TRouter['routeTree']> = '/',
|
|
11
|
-
TTo extends string = '',
|
|
12
|
-
TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom,
|
|
13
|
-
TMaskTo extends string = '',
|
|
10
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = '/',
|
|
11
|
+
TTo extends string | undefined = '.',
|
|
12
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
|
|
13
|
+
TMaskTo extends string = '.',
|
|
14
14
|
> = {
|
|
15
15
|
/**
|
|
16
16
|
* @deprecated Use `statusCode` instead
|
|
@@ -36,10 +36,10 @@ export type ResolvedRedirect<
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
export function redirect<
|
|
39
|
-
TRouter extends
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
TMaskFrom extends
|
|
39
|
+
TRouter extends RegisteredRouter,
|
|
40
|
+
TTo extends string | undefined,
|
|
41
|
+
TFrom extends string = string,
|
|
42
|
+
TMaskFrom extends string = TFrom,
|
|
43
43
|
TMaskTo extends string = '',
|
|
44
44
|
>(
|
|
45
45
|
opts: Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
|
package/src/route.ts
CHANGED
|
@@ -1078,10 +1078,49 @@ export class Route<
|
|
|
1078
1078
|
TLoaderFn,
|
|
1079
1079
|
TNewChildren
|
|
1080
1080
|
> {
|
|
1081
|
-
this.children
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1081
|
+
return this._addFileChildren(children)
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
_addFileChildren<const TNewChildren>(
|
|
1085
|
+
children: TNewChildren,
|
|
1086
|
+
): Route<
|
|
1087
|
+
TParentRoute,
|
|
1088
|
+
TPath,
|
|
1089
|
+
TFullPath,
|
|
1090
|
+
TCustomId,
|
|
1091
|
+
TId,
|
|
1092
|
+
TSearchValidator,
|
|
1093
|
+
TParams,
|
|
1094
|
+
TRouterContext,
|
|
1095
|
+
TRouteContextFn,
|
|
1096
|
+
TBeforeLoadFn,
|
|
1097
|
+
TLoaderDeps,
|
|
1098
|
+
TLoaderFn,
|
|
1099
|
+
TNewChildren
|
|
1100
|
+
> {
|
|
1101
|
+
if (Array.isArray(children)) {
|
|
1102
|
+
this.children = children as TChildren
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
if (typeof children === 'object' && children !== null) {
|
|
1106
|
+
this.children = Object.values(children) as TChildren
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
return this as unknown as Route<
|
|
1110
|
+
TParentRoute,
|
|
1111
|
+
TPath,
|
|
1112
|
+
TFullPath,
|
|
1113
|
+
TCustomId,
|
|
1114
|
+
TId,
|
|
1115
|
+
TSearchValidator,
|
|
1116
|
+
TParams,
|
|
1117
|
+
TRouterContext,
|
|
1118
|
+
TRouteContextFn,
|
|
1119
|
+
TBeforeLoadFn,
|
|
1120
|
+
TLoaderDeps,
|
|
1121
|
+
TLoaderFn,
|
|
1122
|
+
TNewChildren
|
|
1123
|
+
>
|
|
1085
1124
|
}
|
|
1086
1125
|
|
|
1087
1126
|
updateLoader = <TNewLoaderFn>(options: {
|
|
@@ -1336,9 +1375,10 @@ export class RootRoute<
|
|
|
1336
1375
|
in out TRouterContext = {},
|
|
1337
1376
|
in out TRouteContextFn = AnyContext,
|
|
1338
1377
|
in out TBeforeLoadFn = AnyContext,
|
|
1339
|
-
TLoaderDeps extends Record<string, any> = {},
|
|
1378
|
+
in out TLoaderDeps extends Record<string, any> = {},
|
|
1340
1379
|
in out TLoaderFn = undefined,
|
|
1341
|
-
TChildren = unknown,
|
|
1380
|
+
in out TChildren = unknown,
|
|
1381
|
+
in out TFileRouteTypes = unknown,
|
|
1342
1382
|
> extends Route<
|
|
1343
1383
|
any, // TParentRoute
|
|
1344
1384
|
'/', // TPath
|
|
@@ -1383,9 +1423,58 @@ export class RootRoute<
|
|
|
1383
1423
|
TBeforeLoadFn,
|
|
1384
1424
|
TLoaderDeps,
|
|
1385
1425
|
TLoaderFn,
|
|
1386
|
-
TNewChildren
|
|
1426
|
+
TNewChildren,
|
|
1427
|
+
TFileRouteTypes
|
|
1428
|
+
> {
|
|
1429
|
+
super.addChildren(children)
|
|
1430
|
+
return this as unknown as RootRoute<
|
|
1431
|
+
TSearchValidator,
|
|
1432
|
+
TRouterContext,
|
|
1433
|
+
TRouteContextFn,
|
|
1434
|
+
TBeforeLoadFn,
|
|
1435
|
+
TLoaderDeps,
|
|
1436
|
+
TLoaderFn,
|
|
1437
|
+
TNewChildren,
|
|
1438
|
+
TFileRouteTypes
|
|
1439
|
+
>
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
_addFileChildren<const TNewChildren>(
|
|
1443
|
+
children: TNewChildren,
|
|
1444
|
+
): RootRoute<
|
|
1445
|
+
TSearchValidator,
|
|
1446
|
+
TRouterContext,
|
|
1447
|
+
TRouteContextFn,
|
|
1448
|
+
TBeforeLoadFn,
|
|
1449
|
+
TLoaderDeps,
|
|
1450
|
+
TLoaderFn,
|
|
1451
|
+
TNewChildren,
|
|
1452
|
+
TFileRouteTypes
|
|
1387
1453
|
> {
|
|
1388
|
-
|
|
1454
|
+
super._addFileChildren(children)
|
|
1455
|
+
return this as unknown as RootRoute<
|
|
1456
|
+
TSearchValidator,
|
|
1457
|
+
TRouterContext,
|
|
1458
|
+
TRouteContextFn,
|
|
1459
|
+
TBeforeLoadFn,
|
|
1460
|
+
TLoaderDeps,
|
|
1461
|
+
TLoaderFn,
|
|
1462
|
+
TNewChildren,
|
|
1463
|
+
TFileRouteTypes
|
|
1464
|
+
>
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
_addFileTypes<TFileRouteTypes>(): RootRoute<
|
|
1468
|
+
TSearchValidator,
|
|
1469
|
+
TRouterContext,
|
|
1470
|
+
TRouteContextFn,
|
|
1471
|
+
TBeforeLoadFn,
|
|
1472
|
+
TLoaderDeps,
|
|
1473
|
+
TLoaderFn,
|
|
1474
|
+
TChildren,
|
|
1475
|
+
TFileRouteTypes
|
|
1476
|
+
> {
|
|
1477
|
+
return this as any
|
|
1389
1478
|
}
|
|
1390
1479
|
}
|
|
1391
1480
|
|
|
@@ -1466,7 +1555,7 @@ export type RouteMask<TRouteTree extends AnyRoute> = {
|
|
|
1466
1555
|
|
|
1467
1556
|
export function createRouteMask<
|
|
1468
1557
|
TRouteTree extends AnyRoute,
|
|
1469
|
-
TFrom extends RoutePaths<TRouteTree
|
|
1558
|
+
TFrom extends RoutePaths<TRouteTree> | string,
|
|
1470
1559
|
TTo extends string,
|
|
1471
1560
|
>(
|
|
1472
1561
|
opts: {
|
package/src/routeInfo.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { InferFileRouteTypes } from './fileRoute'
|
|
2
|
+
import type { AddTrailingSlash, RemoveTrailingSlashes } from './link'
|
|
1
3
|
import type { AnyRoute } from './route'
|
|
2
4
|
import type { AnyRouter, TrailingSlashOption } from './router'
|
|
3
5
|
import type { MergeUnion } from './utils'
|
|
@@ -30,16 +32,32 @@ export type ParseRouteWithoutBranches<TRouteTree> =
|
|
|
30
32
|
: never
|
|
31
33
|
: never
|
|
32
34
|
|
|
33
|
-
export type
|
|
34
|
-
|
|
35
|
-
|
|
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
|
+
}
|
|
40
|
+
: never
|
|
41
|
+
|
|
42
|
+
export type RoutesById<TRouteTree extends AnyRoute> =
|
|
43
|
+
InferFileRouteTypes<TRouteTree> extends never
|
|
44
|
+
? CodeRoutesById<TRouteTree>
|
|
45
|
+
: InferFileRouteTypes<TRouteTree>['fileRoutesById']
|
|
36
46
|
|
|
37
47
|
export type RouteById<TRouteTree extends AnyRoute, TId> = Extract<
|
|
38
|
-
RoutesById<TRouteTree>[TId],
|
|
48
|
+
RoutesById<TRouteTree>[TId & keyof RoutesById<TRouteTree>],
|
|
39
49
|
AnyRoute
|
|
40
50
|
>
|
|
41
51
|
|
|
42
|
-
export type
|
|
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']
|
|
43
61
|
|
|
44
62
|
export type ParentPath<TOption> = 'always' extends TOption
|
|
45
63
|
? '../'
|
|
@@ -53,22 +71,34 @@ export type CurrentPath<TOption> = 'always' extends TOption
|
|
|
53
71
|
? '.'
|
|
54
72
|
: './' | '.'
|
|
55
73
|
|
|
56
|
-
export type CatchAllPaths<TOption> =
|
|
57
|
-
| CurrentPath<TOption>
|
|
58
|
-
| ParentPath<TOption>
|
|
59
|
-
| ''
|
|
74
|
+
export type CatchAllPaths<TOption> = CurrentPath<TOption> | ParentPath<TOption>
|
|
60
75
|
|
|
61
|
-
export type
|
|
62
|
-
|
|
63
|
-
|
|
76
|
+
export type CodeRoutesByPath<TRouteTree extends AnyRoute> =
|
|
77
|
+
ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
|
|
78
|
+
? {
|
|
79
|
+
[K in TRoutes as K['fullPath']]: K
|
|
80
|
+
}
|
|
81
|
+
: never
|
|
82
|
+
|
|
83
|
+
export type RoutesByPath<TRouteTree extends AnyRoute> =
|
|
84
|
+
InferFileRouteTypes<TRouteTree> extends never
|
|
85
|
+
? CodeRoutesByPath<TRouteTree>
|
|
86
|
+
: InferFileRouteTypes<TRouteTree>['fileRoutesByFullPath']
|
|
64
87
|
|
|
65
88
|
export type RouteByPath<TRouteTree extends AnyRoute, TPath> = Extract<
|
|
66
|
-
RoutesByPath<TRouteTree>[TPath],
|
|
89
|
+
RoutesByPath<TRouteTree>[TPath & keyof RoutesByPath<TRouteTree>],
|
|
67
90
|
AnyRoute
|
|
68
91
|
>
|
|
69
92
|
|
|
93
|
+
export type CodeRoutePaths<TRouteTree extends AnyRoute> =
|
|
94
|
+
ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
|
|
95
|
+
? TRoutes['fullPath']
|
|
96
|
+
: never
|
|
97
|
+
|
|
70
98
|
export type RoutePaths<TRouteTree extends AnyRoute> =
|
|
71
|
-
|
|
|
99
|
+
| (InferFileRouteTypes<TRouteTree> extends never
|
|
100
|
+
? CodeRoutePaths<TRouteTree>
|
|
101
|
+
: InferFileRouteTypes<TRouteTree>['fullPaths'])
|
|
72
102
|
| '/'
|
|
73
103
|
|
|
74
104
|
export type RouteToPathAlwaysTrailingSlash<TRoute extends AnyRoute> =
|
|
@@ -107,7 +137,7 @@ export type RouteToByRouter<
|
|
|
107
137
|
TRoute extends AnyRoute,
|
|
108
138
|
> = RouteToPathByTrailingSlashOption<TRoute>[TrailingSlashOptionByRouter<TRouter>]
|
|
109
139
|
|
|
110
|
-
export type
|
|
140
|
+
export type CodeRouteToPath<
|
|
111
141
|
TRouter extends AnyRouter,
|
|
112
142
|
TRouteTree extends AnyRoute,
|
|
113
143
|
> =
|
|
@@ -117,34 +147,82 @@ export type RouteToPath<
|
|
|
117
147
|
: never
|
|
118
148
|
: never
|
|
119
149
|
|
|
120
|
-
export type
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
150
|
+
export type FileRouteToPath<
|
|
151
|
+
TRouter extends AnyRouter,
|
|
152
|
+
TTo = InferFileRouteTypes<TRouter['routeTree']>['to'],
|
|
153
|
+
TTrailingSlashOption = TrailingSlashOptionByRouter<TRouter>,
|
|
154
|
+
> = 'never' extends TTrailingSlashOption
|
|
155
|
+
? TTo
|
|
156
|
+
: 'always' extends TTrailingSlashOption
|
|
157
|
+
? AddTrailingSlash<TTo>
|
|
158
|
+
: TTo | AddTrailingSlash<TTo>
|
|
126
159
|
|
|
127
|
-
export type
|
|
128
|
-
|
|
160
|
+
export type RouteToPath<
|
|
161
|
+
TRouter extends AnyRouter,
|
|
162
|
+
TRouteTree extends AnyRoute,
|
|
163
|
+
> =
|
|
164
|
+
InferFileRouteTypes<TRouter['routeTree']> extends never
|
|
165
|
+
? CodeRouteToPath<TRouter, TRouteTree>
|
|
166
|
+
: FileRouteToPath<TRouter>
|
|
167
|
+
|
|
168
|
+
export type CodeRoutesByToPath<TRouter extends AnyRouter> =
|
|
169
|
+
ParseRouteWithoutBranches<TRouter['routeTree']> extends infer TRoutes extends
|
|
170
|
+
AnyRoute
|
|
171
|
+
? {
|
|
172
|
+
[TRoute in TRoutes as RouteToByRouter<TRouter, TRoute>]: TRoute
|
|
173
|
+
}
|
|
174
|
+
: never
|
|
175
|
+
|
|
176
|
+
export type RoutesByToPath<TRouter extends AnyRouter> =
|
|
177
|
+
InferFileRouteTypes<TRouter['routeTree']> extends never
|
|
178
|
+
? CodeRoutesByToPath<TRouter>
|
|
179
|
+
: InferFileRouteTypes<TRouter['routeTree']>['fileRoutesByTo']
|
|
180
|
+
|
|
181
|
+
export type CodeRouteByToPath<TRouter extends AnyRouter, TTo> = Extract<
|
|
182
|
+
RoutesByToPath<TRouter>[TTo & keyof RoutesByToPath<TRouter>],
|
|
129
183
|
AnyRoute
|
|
130
184
|
>
|
|
131
185
|
|
|
132
|
-
export type
|
|
133
|
-
|
|
134
|
-
>
|
|
186
|
+
export type FileRouteByToPath<TRouter extends AnyRouter, TTo> =
|
|
187
|
+
'never' extends TrailingSlashOptionByRouter<TRouter>
|
|
188
|
+
? CodeRouteByToPath<TRouter, TTo>
|
|
189
|
+
: 'always' extends TrailingSlashOptionByRouter<TRouter>
|
|
190
|
+
? TTo extends '/'
|
|
191
|
+
? CodeRouteByToPath<TRouter, TTo>
|
|
192
|
+
: TTo extends `${infer TPath}/`
|
|
193
|
+
? CodeRouteByToPath<TRouter, TPath>
|
|
194
|
+
: never
|
|
195
|
+
: CodeRouteByToPath<
|
|
196
|
+
TRouter,
|
|
197
|
+
TTo extends '/' ? TTo : RemoveTrailingSlashes<TTo>
|
|
198
|
+
>
|
|
135
199
|
|
|
136
|
-
export type
|
|
137
|
-
|
|
138
|
-
>
|
|
200
|
+
export type RouteByToPath<TRouter extends AnyRouter, TTo> =
|
|
201
|
+
InferFileRouteTypes<TRouter['routeTree']> extends never
|
|
202
|
+
? CodeRouteByToPath<TRouter, TTo>
|
|
203
|
+
: FileRouteByToPath<TRouter, TTo>
|
|
139
204
|
|
|
140
|
-
export type
|
|
141
|
-
ParseRoute<TRouteTree>
|
|
142
|
-
>
|
|
205
|
+
export type FullSearchSchema<TRouteTree extends AnyRoute> =
|
|
206
|
+
ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
|
|
207
|
+
? MergeUnion<TRoutes['types']['fullSearchSchema']>
|
|
208
|
+
: never
|
|
143
209
|
|
|
144
|
-
export type
|
|
145
|
-
ParseRoute<TRouteTree>
|
|
146
|
-
>
|
|
210
|
+
export type FullSearchSchemaInput<TRouteTree extends AnyRoute> =
|
|
211
|
+
ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
|
|
212
|
+
? MergeUnion<TRoutes['types']['fullSearchSchemaInput']>
|
|
213
|
+
: never
|
|
147
214
|
|
|
148
|
-
export type
|
|
149
|
-
ParseRoute<TRouteTree>
|
|
150
|
-
>
|
|
215
|
+
export type AllParams<TRouteTree extends AnyRoute> =
|
|
216
|
+
ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
|
|
217
|
+
? MergeUnion<TRoutes['types']['allParams']>
|
|
218
|
+
: never
|
|
219
|
+
|
|
220
|
+
export type AllContext<TRouteTree extends AnyRoute> =
|
|
221
|
+
ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
|
|
222
|
+
? MergeUnion<TRoutes['types']['allContext']>
|
|
223
|
+
: never
|
|
224
|
+
|
|
225
|
+
export type AllLoaderData<TRouteTree extends AnyRoute> =
|
|
226
|
+
ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute
|
|
227
|
+
? MergeUnion<TRoutes['types']['loaderData']>
|
|
228
|
+
: never
|