@tanstack/react-router 1.30.1 → 1.31.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 +10 -10
- package/dist/cjs/RouterProvider.cjs.map +1 -1
- package/dist/cjs/RouterProvider.d.cts +7 -7
- package/dist/cjs/fileRoute.d.cts +1 -1
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/link.d.cts +42 -42
- package/dist/cjs/redirects.cjs.map +1 -1
- package/dist/cjs/redirects.d.cts +5 -6
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +6 -6
- package/dist/cjs/routeInfo.d.cts +19 -2
- package/dist/cjs/router.cjs +69 -52
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/router.d.cts +15 -15
- package/dist/cjs/routerContext.cjs.map +1 -1
- package/dist/cjs/routerContext.d.cts +1 -1
- package/dist/cjs/useNavigate.cjs.map +1 -1
- package/dist/cjs/useNavigate.d.cts +3 -4
- package/dist/cjs/useRouter.cjs.map +1 -1
- package/dist/cjs/useRouter.d.cts +3 -4
- package/dist/cjs/useRouterState.cjs.map +1 -1
- package/dist/cjs/useRouterState.d.cts +3 -4
- package/dist/esm/Matches.d.ts +10 -10
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.d.ts +7 -7
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/fileRoute.d.ts +1 -1
- package/dist/esm/link.d.ts +42 -42
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/redirects.d.ts +5 -6
- package/dist/esm/redirects.js.map +1 -1
- package/dist/esm/route.d.ts +6 -6
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/routeInfo.d.ts +19 -2
- package/dist/esm/router.d.ts +15 -15
- package/dist/esm/router.js +69 -52
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/routerContext.d.ts +1 -1
- package/dist/esm/routerContext.js.map +1 -1
- package/dist/esm/useNavigate.d.ts +3 -4
- package/dist/esm/useNavigate.js.map +1 -1
- package/dist/esm/useRouter.d.ts +3 -4
- package/dist/esm/useRouter.js.map +1 -1
- package/dist/esm/useRouterState.d.ts +3 -4
- package/dist/esm/useRouterState.js.map +1 -1
- package/package.json +1 -1
- package/src/Matches.tsx +40 -22
- package/src/RouterProvider.tsx +34 -11
- package/src/link.tsx +124 -139
- package/src/redirects.ts +14 -14
- package/src/route.ts +3 -3
- package/src/routeInfo.ts +72 -4
- package/src/router.ts +132 -68
- package/src/routerContext.tsx +1 -1
- package/src/useNavigate.tsx +9 -10
- package/src/useRouter.tsx +4 -5
- package/src/useRouterState.tsx +5 -6
package/src/link.tsx
CHANGED
|
@@ -4,20 +4,20 @@ import { useMatch } from './Matches'
|
|
|
4
4
|
import { useRouterState } from './useRouterState'
|
|
5
5
|
import { useRouter } from './useRouter'
|
|
6
6
|
import { deepEqual, exactPathTest, functionalUpdate } from './utils'
|
|
7
|
-
import type { ParsedLocation } from '.'
|
|
7
|
+
import type { AnyRouter, ParsedLocation } from '.'
|
|
8
8
|
import type { HistoryState } from '@tanstack/history'
|
|
9
9
|
import type { Trim } from './fileRoute'
|
|
10
10
|
import type { AnyRoute, RootSearchSchema } from './route'
|
|
11
11
|
import type {
|
|
12
12
|
RouteByPath,
|
|
13
|
-
|
|
13
|
+
RouteByToPath,
|
|
14
14
|
RoutePaths,
|
|
15
15
|
RoutePathsAutoComplete,
|
|
16
|
+
RouteToPath,
|
|
16
17
|
} from './routeInfo'
|
|
17
18
|
import type { RegisteredRouter } from './router'
|
|
18
19
|
import type {
|
|
19
20
|
Expand,
|
|
20
|
-
IsUnion,
|
|
21
21
|
MakeDifferenceOptional,
|
|
22
22
|
NoInfer,
|
|
23
23
|
NonNullableUpdater,
|
|
@@ -79,94 +79,96 @@ export type Last<T extends Array<any>> = T extends [...infer _, infer L]
|
|
|
79
79
|
? L
|
|
80
80
|
: never
|
|
81
81
|
|
|
82
|
-
export type RemoveTrailingSlashes<T> = T extends `${infer R}/`
|
|
83
|
-
? RemoveTrailingSlashes<R>
|
|
84
|
-
: T
|
|
82
|
+
export type RemoveTrailingSlashes<T> = T extends `${infer R}/` ? R : T
|
|
85
83
|
|
|
86
|
-
export type RemoveLeadingSlashes<T> = T extends `/${infer R}`
|
|
87
|
-
? RemoveLeadingSlashes<R>
|
|
88
|
-
: T
|
|
84
|
+
export type RemoveLeadingSlashes<T> = T extends `/${infer R}` ? R : T
|
|
89
85
|
|
|
90
|
-
export type ResolvePaths<
|
|
91
|
-
RouteByPath<
|
|
92
|
-
|
|
93
|
-
|
|
86
|
+
export type ResolvePaths<TRouter extends AnyRouter, TSearchPath> =
|
|
87
|
+
RouteByPath<
|
|
88
|
+
TRouter['routeTree'],
|
|
89
|
+
RemoveTrailingSlashes<TSearchPath>
|
|
90
|
+
> extends never
|
|
91
|
+
? RouteToPath<TRouter, TRouter['routeTree']>
|
|
92
|
+
: RouteToPath<
|
|
93
|
+
TRouter,
|
|
94
|
+
RouteByPath<TRouter['routeTree'], RemoveTrailingSlashes<TSearchPath>>
|
|
95
|
+
>
|
|
94
96
|
|
|
95
97
|
export type SearchPaths<
|
|
96
|
-
|
|
98
|
+
TRouter extends AnyRouter,
|
|
97
99
|
TSearchPath extends string,
|
|
98
|
-
TPaths = ResolvePaths<
|
|
99
|
-
> = TPaths extends `${RemoveTrailingSlashes<TSearchPath>}
|
|
100
|
+
TPaths = ResolvePaths<TRouter, TSearchPath>,
|
|
101
|
+
> = TPaths extends `${RemoveTrailingSlashes<TSearchPath>}${infer TRest}`
|
|
100
102
|
? TRest
|
|
101
103
|
: never
|
|
102
104
|
|
|
103
105
|
export type SearchRelativePathAutoComplete<
|
|
104
|
-
|
|
106
|
+
TRouter extends AnyRouter,
|
|
105
107
|
TTo extends string,
|
|
106
108
|
TSearchPath extends string,
|
|
107
|
-
> = `${TTo}/${SearchPaths<
|
|
109
|
+
> = `${TTo}/${RemoveLeadingSlashes<SearchPaths<TRouter, TSearchPath>>}`
|
|
108
110
|
|
|
109
111
|
export type RelativeToParentPathAutoComplete<
|
|
110
|
-
|
|
112
|
+
TRouter extends AnyRouter,
|
|
111
113
|
TFrom extends string,
|
|
112
114
|
TTo extends string,
|
|
113
115
|
TResolvedPath extends string = RemoveTrailingSlashes<
|
|
114
116
|
ResolveRelativePath<TFrom, TTo>
|
|
115
117
|
>,
|
|
116
118
|
> =
|
|
117
|
-
| SearchRelativePathAutoComplete<
|
|
119
|
+
| SearchRelativePathAutoComplete<TRouter, TTo, TResolvedPath>
|
|
118
120
|
| (TResolvedPath extends '' ? never : `${TTo}/../`)
|
|
119
121
|
|
|
120
122
|
export type RelativeToCurrentPathAutoComplete<
|
|
121
|
-
|
|
123
|
+
TRouter extends AnyRouter,
|
|
122
124
|
TFrom extends string,
|
|
123
125
|
TTo extends string,
|
|
124
126
|
TRestTo extends string,
|
|
125
127
|
TResolvedPath extends
|
|
126
128
|
string = RemoveTrailingSlashes<`${RemoveTrailingSlashes<TFrom>}/${RemoveLeadingSlashes<TRestTo>}`>,
|
|
127
|
-
> = SearchRelativePathAutoComplete<
|
|
129
|
+
> = SearchRelativePathAutoComplete<TRouter, TTo, TResolvedPath>
|
|
128
130
|
|
|
129
131
|
export type AbsolutePathAutoComplete<
|
|
130
|
-
|
|
132
|
+
TRouter extends AnyRouter,
|
|
131
133
|
TFrom extends string,
|
|
132
134
|
> =
|
|
133
135
|
| (string extends TFrom
|
|
134
136
|
? './'
|
|
135
137
|
: TFrom extends `/`
|
|
136
138
|
? never
|
|
137
|
-
: SearchPaths<
|
|
139
|
+
: SearchPaths<TRouter, TFrom> extends ''
|
|
138
140
|
? never
|
|
139
141
|
: './')
|
|
140
142
|
| (string extends TFrom ? '../' : TFrom extends `/` ? never : '../')
|
|
141
|
-
|
|
|
142
|
-
| (TFrom extends '/'
|
|
143
|
+
| RouteToPath<TRouter, TRouter['routeTree']>
|
|
144
|
+
| (TFrom extends '/'
|
|
145
|
+
? never
|
|
146
|
+
: string extends TFrom
|
|
147
|
+
? RemoveLeadingSlashes<RouteToPath<TRouter, TRouter['routeTree']>>
|
|
148
|
+
: RemoveLeadingSlashes<SearchPaths<TRouter, TFrom>>)
|
|
143
149
|
|
|
144
150
|
export type RelativeToPathAutoComplete<
|
|
145
|
-
|
|
151
|
+
TRouter extends AnyRouter,
|
|
146
152
|
TFrom extends string,
|
|
147
153
|
TTo extends string,
|
|
148
154
|
> = TTo extends `..${string}`
|
|
149
|
-
? RelativeToParentPathAutoComplete<
|
|
150
|
-
TRouteTree,
|
|
151
|
-
TFrom,
|
|
152
|
-
RemoveTrailingSlashes<TTo>
|
|
153
|
-
>
|
|
155
|
+
? RelativeToParentPathAutoComplete<TRouter, TFrom, RemoveTrailingSlashes<TTo>>
|
|
154
156
|
: TTo extends `./${infer TRestTTo}`
|
|
155
157
|
? RelativeToCurrentPathAutoComplete<
|
|
156
|
-
|
|
158
|
+
TRouter,
|
|
157
159
|
TFrom,
|
|
158
160
|
RemoveTrailingSlashes<TTo>,
|
|
159
161
|
TRestTTo
|
|
160
162
|
>
|
|
161
|
-
: AbsolutePathAutoComplete<
|
|
163
|
+
: AbsolutePathAutoComplete<TRouter, TFrom>
|
|
162
164
|
|
|
163
165
|
export type NavigateOptions<
|
|
164
|
-
|
|
165
|
-
TFrom extends RoutePaths<
|
|
166
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
167
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
166
168
|
TTo extends string = '',
|
|
167
|
-
TMaskFrom extends RoutePaths<
|
|
169
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
|
|
168
170
|
TMaskTo extends string = '',
|
|
169
|
-
> = ToOptions<
|
|
171
|
+
> = ToOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {
|
|
170
172
|
// `replace` is a boolean that determines whether the navigation should replace the current history entry or push a new one.
|
|
171
173
|
replace?: boolean
|
|
172
174
|
resetScroll?: boolean
|
|
@@ -177,37 +179,37 @@ export type NavigateOptions<
|
|
|
177
179
|
}
|
|
178
180
|
|
|
179
181
|
export type ToOptions<
|
|
180
|
-
|
|
181
|
-
TFrom extends RoutePaths<
|
|
182
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
183
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
182
184
|
TTo extends string = '',
|
|
183
|
-
TMaskFrom extends RoutePaths<
|
|
185
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
|
|
184
186
|
TMaskTo extends string = '',
|
|
185
|
-
> = ToSubOptions<
|
|
187
|
+
> = ToSubOptions<TRouter, TFrom, TTo> & {
|
|
186
188
|
_fromLocation?: ParsedLocation
|
|
187
|
-
mask?: ToMaskOptions<
|
|
189
|
+
mask?: ToMaskOptions<TRouter, TMaskFrom, TMaskTo>
|
|
188
190
|
}
|
|
189
191
|
|
|
190
192
|
export type ToMaskOptions<
|
|
191
|
-
TRouteTree extends
|
|
192
|
-
TMaskFrom extends RoutePaths<TRouteTree> | string = string,
|
|
193
|
+
TRouteTree extends AnyRouter = RegisteredRouter,
|
|
194
|
+
TMaskFrom extends RoutePaths<TRouteTree['routeTree']> | string = string,
|
|
193
195
|
TMaskTo extends string = '',
|
|
194
196
|
> = ToSubOptions<TRouteTree, TMaskFrom, TMaskTo> & {
|
|
195
197
|
unmaskOnReload?: boolean
|
|
196
198
|
}
|
|
197
199
|
|
|
198
200
|
export type ToSubOptions<
|
|
199
|
-
|
|
200
|
-
TFrom extends RoutePaths<
|
|
201
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
202
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
201
203
|
TTo extends string = '',
|
|
202
204
|
> = {
|
|
203
|
-
to?: ToPathOption<
|
|
205
|
+
to?: ToPathOption<TRouter, TFrom, TTo> & {}
|
|
204
206
|
hash?: true | Updater<string>
|
|
205
207
|
state?: true | NonNullableUpdater<HistoryState>
|
|
206
208
|
// The source route path. This is automatically set when using route-level APIs, but for type-safe relative routing on the router itself, this is required
|
|
207
|
-
from?: RoutePathsAutoComplete<
|
|
209
|
+
from?: RoutePathsAutoComplete<TRouter['routeTree'], TFrom> & {}
|
|
208
210
|
// // When using relative route paths, this option forces resolution from the current path, instead of the route API's path or `from` path
|
|
209
|
-
} & SearchParamOptions<
|
|
210
|
-
PathParamOptions<
|
|
211
|
+
} & SearchParamOptions<TRouter, TFrom, TTo> &
|
|
212
|
+
PathParamOptions<TRouter, TFrom, TTo>
|
|
211
213
|
|
|
212
214
|
type ParamsReducer<TFrom, TTo> = TTo | ((current: TFrom) => TTo)
|
|
213
215
|
|
|
@@ -220,20 +222,18 @@ type ExcludeRootSearchSchema<T, TExcluded = Exclude<T, RootSearchSchema>> = [
|
|
|
220
222
|
: TExcluded
|
|
221
223
|
|
|
222
224
|
export type ResolveRoute<
|
|
223
|
-
|
|
225
|
+
TRouter extends AnyRouter,
|
|
224
226
|
TFrom,
|
|
225
227
|
TTo,
|
|
226
|
-
TPath =
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
: ResolveRelativePath<TFrom, TTo>
|
|
232
|
-
>,
|
|
228
|
+
TPath = string extends TFrom
|
|
229
|
+
? TTo
|
|
230
|
+
: string extends TTo
|
|
231
|
+
? TFrom
|
|
232
|
+
: ResolveRelativePath<TFrom, TTo>,
|
|
233
233
|
> = TPath extends string
|
|
234
|
-
?
|
|
235
|
-
? RouteByPath<
|
|
236
|
-
:
|
|
234
|
+
? string extends TTo
|
|
235
|
+
? RouteByPath<TRouter['routeTree'], TPath>
|
|
236
|
+
: RouteByToPath<TRouter, TPath>
|
|
237
237
|
: never
|
|
238
238
|
|
|
239
239
|
type PostProcessParams<
|
|
@@ -242,25 +242,22 @@ type PostProcessParams<
|
|
|
242
242
|
> = TParamVariant extends 'SEARCH' ? ExcludeRootSearchSchema<T> : T
|
|
243
243
|
|
|
244
244
|
type ResolveFromParams<
|
|
245
|
-
|
|
245
|
+
TRouter extends AnyRouter,
|
|
246
246
|
TParamVariant extends ParamVariant,
|
|
247
247
|
TFrom,
|
|
248
|
-
TFromRouteType extends
|
|
249
|
-
| 'allParams'
|
|
250
|
-
| 'fullSearchSchema' = TParamVariant extends 'PATH'
|
|
251
|
-
? 'allParams'
|
|
252
|
-
: 'fullSearchSchema',
|
|
253
248
|
> = PostProcessParams<
|
|
254
|
-
RouteByPath<
|
|
249
|
+
RouteByPath<TRouter['routeTree'], TFrom>['types'][TParamVariant extends 'PATH'
|
|
250
|
+
? 'allParams'
|
|
251
|
+
: 'fullSearchSchema'],
|
|
255
252
|
TParamVariant
|
|
256
253
|
>
|
|
257
254
|
|
|
258
255
|
type ResolveToParams<
|
|
259
|
-
|
|
256
|
+
TRouter extends AnyRouter,
|
|
260
257
|
TParamVariant extends ParamVariant,
|
|
261
258
|
TFrom,
|
|
262
259
|
TTo,
|
|
263
|
-
TRoute extends AnyRoute = ResolveRoute<
|
|
260
|
+
TRoute extends AnyRoute = ResolveRoute<TRouter, TFrom, TTo>,
|
|
264
261
|
> = PostProcessParams<
|
|
265
262
|
TRoute['types'][TParamVariant extends 'PATH'
|
|
266
263
|
? 'allParams'
|
|
@@ -269,22 +266,22 @@ type ResolveToParams<
|
|
|
269
266
|
>
|
|
270
267
|
|
|
271
268
|
type ResolveRelativeToParams<
|
|
272
|
-
|
|
269
|
+
TRouter extends AnyRouter,
|
|
273
270
|
TParamVariant extends ParamVariant,
|
|
274
271
|
TFrom,
|
|
275
272
|
TTo,
|
|
276
|
-
TToParams = ResolveToParams<
|
|
273
|
+
TToParams = ResolveToParams<TRouter, TParamVariant, TFrom, TTo>,
|
|
277
274
|
> = TParamVariant extends 'SEARCH'
|
|
278
275
|
? TToParams
|
|
279
276
|
: string extends TFrom
|
|
280
277
|
? TToParams
|
|
281
278
|
: MakeDifferenceOptional<
|
|
282
|
-
ResolveFromParams<
|
|
279
|
+
ResolveFromParams<TRouter, TParamVariant, TFrom>,
|
|
283
280
|
TToParams
|
|
284
281
|
>
|
|
285
282
|
|
|
286
283
|
type MakeOptionalParams<
|
|
287
|
-
|
|
284
|
+
TRouter extends AnyRouter,
|
|
288
285
|
TParamVariant extends ParamVariant,
|
|
289
286
|
TFrom,
|
|
290
287
|
TTo,
|
|
@@ -293,29 +290,25 @@ type MakeOptionalParams<
|
|
|
293
290
|
search?:
|
|
294
291
|
| true
|
|
295
292
|
| (ParamsReducer<
|
|
296
|
-
Expand<ResolveFromParams<
|
|
297
|
-
Expand<
|
|
298
|
-
ResolveRelativeToParams<TRouteTree, TParamVariant, TFrom, TTo>
|
|
299
|
-
>
|
|
293
|
+
Expand<ResolveFromParams<TRouter, TParamVariant, TFrom>>,
|
|
294
|
+
Expand<ResolveRelativeToParams<TRouter, TParamVariant, TFrom, TTo>>
|
|
300
295
|
> & {})
|
|
301
296
|
}
|
|
302
297
|
: {
|
|
303
298
|
params?:
|
|
304
299
|
| true
|
|
305
300
|
| (ParamsReducer<
|
|
306
|
-
Expand<ResolveFromParams<
|
|
307
|
-
Expand<
|
|
308
|
-
ResolveRelativeToParams<TRouteTree, TParamVariant, TFrom, TTo>
|
|
309
|
-
>
|
|
301
|
+
Expand<ResolveFromParams<TRouter, TParamVariant, TFrom>>,
|
|
302
|
+
Expand<ResolveRelativeToParams<TRouter, TParamVariant, TFrom, TTo>>
|
|
310
303
|
> & {})
|
|
311
304
|
}
|
|
312
305
|
|
|
313
306
|
type MakeRequiredParamsReducer<
|
|
314
|
-
|
|
307
|
+
TRouter extends AnyRouter,
|
|
315
308
|
TParamVariant extends ParamVariant,
|
|
316
309
|
TFrom,
|
|
317
310
|
TToParams,
|
|
318
|
-
TFromParams = ResolveFromParams<
|
|
311
|
+
TFromParams = ResolveFromParams<TRouter, TParamVariant, TFrom>,
|
|
319
312
|
> =
|
|
320
313
|
| ([TFromParams] extends [WithoutEmpty<PickRequired<TToParams>>]
|
|
321
314
|
? true
|
|
@@ -323,7 +316,7 @@ type MakeRequiredParamsReducer<
|
|
|
323
316
|
| ParamsReducer<Expand<TFromParams>, TToParams>
|
|
324
317
|
|
|
325
318
|
export type MakeRequiredParams<
|
|
326
|
-
|
|
319
|
+
TRouter extends AnyRouter,
|
|
327
320
|
TParamVariant extends ParamVariant,
|
|
328
321
|
TFrom,
|
|
329
322
|
TTo,
|
|
@@ -331,20 +324,20 @@ export type MakeRequiredParams<
|
|
|
331
324
|
? {
|
|
332
325
|
search: Expand<
|
|
333
326
|
MakeRequiredParamsReducer<
|
|
334
|
-
|
|
327
|
+
TRouter,
|
|
335
328
|
TParamVariant,
|
|
336
329
|
TFrom,
|
|
337
|
-
Expand<ResolveRelativeToParams<
|
|
330
|
+
Expand<ResolveRelativeToParams<TRouter, TParamVariant, TFrom, TTo>>
|
|
338
331
|
>
|
|
339
332
|
> & {}
|
|
340
333
|
}
|
|
341
334
|
: {
|
|
342
335
|
params: Expand<
|
|
343
336
|
MakeRequiredParamsReducer<
|
|
344
|
-
|
|
337
|
+
TRouter,
|
|
345
338
|
TParamVariant,
|
|
346
339
|
TFrom,
|
|
347
|
-
Expand<ResolveRelativeToParams<
|
|
340
|
+
Expand<ResolveRelativeToParams<TRouter, TParamVariant, TFrom, TTo>>
|
|
348
341
|
>
|
|
349
342
|
> & {}
|
|
350
343
|
}
|
|
@@ -359,7 +352,7 @@ export type IsRequiredParams<TParams> = keyof TParams extends infer K extends
|
|
|
359
352
|
: never
|
|
360
353
|
|
|
361
354
|
export type IsRequired<
|
|
362
|
-
|
|
355
|
+
TRouter extends AnyRouter,
|
|
363
356
|
TParamVariant extends ParamVariant,
|
|
364
357
|
TFrom,
|
|
365
358
|
TTo,
|
|
@@ -367,42 +360,42 @@ export type IsRequired<
|
|
|
367
360
|
? string extends TFrom
|
|
368
361
|
? never
|
|
369
362
|
: IsRequiredParams<
|
|
370
|
-
ResolveRelativeToParams<
|
|
363
|
+
ResolveRelativeToParams<TRouter, TParamVariant, TFrom, TTo>
|
|
371
364
|
>
|
|
372
365
|
: IsRequiredParams<
|
|
373
|
-
ResolveRelativeToParams<
|
|
366
|
+
ResolveRelativeToParams<TRouter, TParamVariant, TFrom, TTo>
|
|
374
367
|
>
|
|
375
368
|
|
|
376
369
|
export type ParamOptions<
|
|
377
|
-
|
|
370
|
+
TRouter extends AnyRouter,
|
|
378
371
|
TFrom,
|
|
379
372
|
TTo extends string,
|
|
380
373
|
TParamVariant extends ParamVariant,
|
|
381
374
|
> =
|
|
382
|
-
IsRequired<
|
|
383
|
-
? MakeOptionalParams<
|
|
384
|
-
: MakeRequiredParams<
|
|
375
|
+
IsRequired<TRouter, TParamVariant, TFrom, TTo> extends never
|
|
376
|
+
? MakeOptionalParams<TRouter, TParamVariant, TFrom, TTo>
|
|
377
|
+
: MakeRequiredParams<TRouter, TParamVariant, TFrom, TTo>
|
|
385
378
|
|
|
386
379
|
export type SearchParamOptions<
|
|
387
|
-
|
|
380
|
+
TRouter extends AnyRouter,
|
|
388
381
|
TFrom,
|
|
389
382
|
TTo extends string,
|
|
390
|
-
> = ParamOptions<
|
|
383
|
+
> = ParamOptions<TRouter, TFrom, TTo, 'SEARCH'>
|
|
391
384
|
|
|
392
385
|
export type PathParamOptions<
|
|
393
|
-
|
|
386
|
+
TRouter extends AnyRouter,
|
|
394
387
|
TFrom,
|
|
395
388
|
TTo extends string,
|
|
396
|
-
> = ParamOptions<
|
|
389
|
+
> = ParamOptions<TRouter, TFrom, TTo, 'PATH'>
|
|
397
390
|
|
|
398
391
|
export type ToPathOption<
|
|
399
|
-
|
|
400
|
-
TFrom extends RoutePaths<
|
|
392
|
+
TRouter extends AnyRouter = AnyRouter,
|
|
393
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
401
394
|
TTo extends string = string,
|
|
402
395
|
> =
|
|
403
|
-
| CheckPath<
|
|
396
|
+
| CheckPath<TRouter, TTo, never, TFrom, TTo>
|
|
404
397
|
| RelativeToPathAutoComplete<
|
|
405
|
-
|
|
398
|
+
TRouter,
|
|
406
399
|
NoInfer<TFrom> extends string ? NoInfer<TFrom> : '',
|
|
407
400
|
NoInfer<TTo> & string
|
|
408
401
|
>
|
|
@@ -414,12 +407,12 @@ export interface ActiveOptions {
|
|
|
414
407
|
}
|
|
415
408
|
|
|
416
409
|
export type LinkOptions<
|
|
417
|
-
|
|
418
|
-
TFrom extends RoutePaths<
|
|
410
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
411
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
419
412
|
TTo extends string = '',
|
|
420
|
-
TMaskFrom extends RoutePaths<
|
|
413
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
|
|
421
414
|
TMaskTo extends string = '',
|
|
422
|
-
> = NavigateOptions<
|
|
415
|
+
> = NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {
|
|
423
416
|
// The standard anchor tag target attribute
|
|
424
417
|
target?: HTMLAnchorElement['target']
|
|
425
418
|
// Defaults to `{ exact: false, includeHash: false }`
|
|
@@ -432,16 +425,8 @@ export type LinkOptions<
|
|
|
432
425
|
disabled?: boolean
|
|
433
426
|
}
|
|
434
427
|
|
|
435
|
-
export type CheckPath<
|
|
436
|
-
ResolveRoute<
|
|
437
|
-
? [TRoute] extends [never]
|
|
438
|
-
? TFail
|
|
439
|
-
: string extends TTo
|
|
440
|
-
? TPass
|
|
441
|
-
: unknown extends TRoute['children']
|
|
442
|
-
? TPass
|
|
443
|
-
: TFail
|
|
444
|
-
: TFail
|
|
428
|
+
export type CheckPath<TRouter extends AnyRouter, TPass, TFail, TFrom, TTo> =
|
|
429
|
+
ResolveRoute<TRouter, TFrom, TTo> extends never ? TFail : TPass
|
|
445
430
|
|
|
446
431
|
export type ResolveRelativePath<TFrom, TTo = '.'> = TFrom extends string
|
|
447
432
|
? TTo extends string
|
|
@@ -493,13 +478,13 @@ type LinkCurrentTargetElement = {
|
|
|
493
478
|
const preloadWarning = 'Error preloading route! ☝️'
|
|
494
479
|
|
|
495
480
|
export function useLinkProps<
|
|
496
|
-
|
|
497
|
-
TFrom extends RoutePaths<
|
|
481
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
482
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
498
483
|
TTo extends string = '',
|
|
499
|
-
TMaskFrom extends RoutePaths<
|
|
484
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
|
|
500
485
|
TMaskTo extends string = '',
|
|
501
486
|
>(
|
|
502
|
-
options: UseLinkPropsOptions<
|
|
487
|
+
options: UseLinkPropsOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
|
|
503
488
|
): React.AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
504
489
|
const router = useRouter()
|
|
505
490
|
const matchPathname = useMatch({
|
|
@@ -739,21 +724,21 @@ export function useLinkProps<
|
|
|
739
724
|
}
|
|
740
725
|
|
|
741
726
|
export type UseLinkPropsOptions<
|
|
742
|
-
|
|
743
|
-
TFrom extends RoutePaths<
|
|
727
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
728
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
744
729
|
TTo extends string = '',
|
|
745
|
-
TMaskFrom extends RoutePaths<
|
|
730
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
|
|
746
731
|
TMaskTo extends string = '',
|
|
747
|
-
> = ActiveLinkOptions<
|
|
732
|
+
> = ActiveLinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &
|
|
748
733
|
React.AnchorHTMLAttributes<HTMLAnchorElement>
|
|
749
734
|
|
|
750
735
|
export type ActiveLinkOptions<
|
|
751
|
-
|
|
752
|
-
TFrom extends RoutePaths<
|
|
736
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
737
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
753
738
|
TTo extends string = '',
|
|
754
|
-
TMaskFrom extends RoutePaths<
|
|
739
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
|
|
755
740
|
TMaskTo extends string = '',
|
|
756
|
-
> = LinkOptions<
|
|
741
|
+
> = LinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {
|
|
757
742
|
// A function that returns additional props for the `active` state of this link. These props override other props passed to the link (`style`'s are merged, `className`'s are concatenated)
|
|
758
743
|
activeProps?:
|
|
759
744
|
| React.AnchorHTMLAttributes<HTMLAnchorElement>
|
|
@@ -765,12 +750,12 @@ export type ActiveLinkOptions<
|
|
|
765
750
|
}
|
|
766
751
|
|
|
767
752
|
export type LinkProps<
|
|
768
|
-
|
|
769
|
-
TFrom extends RoutePaths<
|
|
753
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
754
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
770
755
|
TTo extends string = string,
|
|
771
|
-
TMaskFrom extends RoutePaths<
|
|
756
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
|
|
772
757
|
TMaskTo extends string = '',
|
|
773
|
-
> = ActiveLinkOptions<
|
|
758
|
+
> = ActiveLinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {
|
|
774
759
|
// If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns
|
|
775
760
|
children?:
|
|
776
761
|
| React.ReactNode
|
|
@@ -798,13 +783,13 @@ type LinkComponentProps<TComp> = React.PropsWithoutRef<
|
|
|
798
783
|
>
|
|
799
784
|
|
|
800
785
|
export type LinkComponent<TComp> = <
|
|
801
|
-
|
|
802
|
-
TFrom extends RoutePaths<
|
|
786
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
787
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
803
788
|
TTo extends string = '',
|
|
804
|
-
TMaskFrom extends RoutePaths<
|
|
789
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
|
|
805
790
|
TMaskTo extends string = '',
|
|
806
791
|
>(
|
|
807
|
-
props: LinkProps<
|
|
792
|
+
props: LinkProps<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &
|
|
808
793
|
LinkComponentProps<TComp>,
|
|
809
794
|
) => React.ReactElement
|
|
810
795
|
|
package/src/redirects.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { NavigateOptions } from './link'
|
|
2
2
|
import type { AnyRoute } from './route'
|
|
3
3
|
import type { RoutePaths } from './routeInfo'
|
|
4
|
-
import type { RegisteredRouter } from './router'
|
|
4
|
+
import type { AnyRouter, RegisteredRouter } from './router'
|
|
5
5
|
import type { PickAsRequired } from './utils'
|
|
6
6
|
|
|
7
7
|
export type AnyRedirect = Redirect<any, any, any, any, any>
|
|
8
8
|
|
|
9
9
|
export type Redirect<
|
|
10
|
-
|
|
11
|
-
TFrom extends RoutePaths<
|
|
10
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
11
|
+
TFrom extends RoutePaths<TRouter['routeTree']> = '/',
|
|
12
12
|
TTo extends string = '',
|
|
13
|
-
TMaskFrom extends RoutePaths<
|
|
13
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom,
|
|
14
14
|
TMaskTo extends string = '',
|
|
15
15
|
> = {
|
|
16
16
|
/**
|
|
@@ -21,30 +21,30 @@ export type Redirect<
|
|
|
21
21
|
statusCode?: number
|
|
22
22
|
throw?: any
|
|
23
23
|
headers?: HeadersInit
|
|
24
|
-
} & NavigateOptions<
|
|
24
|
+
} & NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>
|
|
25
25
|
|
|
26
26
|
export type ResolvedRedirect<
|
|
27
|
-
|
|
28
|
-
TFrom extends RoutePaths<
|
|
27
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
28
|
+
TFrom extends RoutePaths<TRouter['routeTree']> = '/',
|
|
29
29
|
TTo extends string = '',
|
|
30
|
-
TMaskFrom extends RoutePaths<
|
|
30
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom,
|
|
31
31
|
TMaskTo extends string = '',
|
|
32
32
|
> = PickAsRequired<
|
|
33
|
-
Redirect<
|
|
33
|
+
Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
|
|
34
34
|
'code' | 'statusCode' | 'headers'
|
|
35
35
|
> & {
|
|
36
36
|
href: string
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
export function redirect<
|
|
40
|
-
|
|
41
|
-
TFrom extends RoutePaths<
|
|
40
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
41
|
+
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
|
|
42
42
|
TTo extends string = '',
|
|
43
|
-
TMaskFrom extends RoutePaths<
|
|
43
|
+
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
|
|
44
44
|
TMaskTo extends string = '',
|
|
45
45
|
>(
|
|
46
|
-
opts: Redirect<
|
|
47
|
-
): Redirect<
|
|
46
|
+
opts: Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
|
|
47
|
+
): Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> {
|
|
48
48
|
;(opts as any).isRedirect = true
|
|
49
49
|
opts.statusCode = opts.statusCode || opts.code || 301
|
|
50
50
|
opts.headers = opts.headers || {}
|
package/src/route.ts
CHANGED
|
@@ -11,7 +11,7 @@ import type { MakeRouteMatch, RouteMatch } from './Matches'
|
|
|
11
11
|
import type { NavigateOptions, ParsePathParams, ToSubOptions } from './link'
|
|
12
12
|
import type { ParsedLocation } from './location'
|
|
13
13
|
import type { RouteById, RouteIds, RoutePaths } from './routeInfo'
|
|
14
|
-
import type { AnyRouter, RegisteredRouter } from './router'
|
|
14
|
+
import type { AnyRouter, RegisteredRouter, Router } from './router'
|
|
15
15
|
import type {
|
|
16
16
|
Assign,
|
|
17
17
|
Expand,
|
|
@@ -360,7 +360,7 @@ export interface LoaderFnContext<
|
|
|
360
360
|
/**
|
|
361
361
|
* @deprecated Use `throw redirect({ to: '/somewhere' })` instead
|
|
362
362
|
**/
|
|
363
|
-
navigate: (opts: NavigateOptions<
|
|
363
|
+
navigate: (opts: NavigateOptions<AnyRouter>) => Promise<void>
|
|
364
364
|
parentMatchPromise?: Promise<void>
|
|
365
365
|
cause: 'preload' | 'enter' | 'stay'
|
|
366
366
|
route: Route
|
|
@@ -1230,7 +1230,7 @@ export function createRouteMask<
|
|
|
1230
1230
|
>(
|
|
1231
1231
|
opts: {
|
|
1232
1232
|
routeTree: TRouteTree
|
|
1233
|
-
} & ToSubOptions<TRouteTree, TFrom, TTo>,
|
|
1233
|
+
} & ToSubOptions<Router<TRouteTree, 'never'>, TFrom, TTo>,
|
|
1234
1234
|
): RouteMask<TRouteTree> {
|
|
1235
1235
|
return opts as any
|
|
1236
1236
|
}
|