@tanstack/react-router 1.27.0 → 1.28.2
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 +45 -23
- package/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/Matches.d.cts +5 -6
- package/dist/cjs/fileRoute.cjs.map +1 -1
- package/dist/cjs/fileRoute.d.cts +13 -14
- package/dist/cjs/index.cjs +0 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +2 -2
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/link.d.cts +34 -24
- package/dist/cjs/redirects.cjs.map +1 -1
- package/dist/cjs/redirects.d.cts +3 -1
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +44 -47
- package/dist/cjs/routeInfo.d.cts +5 -7
- package/dist/cjs/router.cjs +374 -327
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/router.d.cts +3 -3
- package/dist/cjs/useParams.cjs.map +1 -1
- package/dist/cjs/utils.cjs +20 -2
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/cjs/utils.d.cts +11 -4
- package/dist/esm/Matches.d.ts +5 -6
- package/dist/esm/Matches.js +46 -24
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/fileRoute.d.ts +13 -14
- package/dist/esm/fileRoute.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +1 -2
- package/dist/esm/link.d.ts +34 -24
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/redirects.d.ts +3 -1
- package/dist/esm/redirects.js.map +1 -1
- package/dist/esm/route.d.ts +44 -47
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/routeInfo.d.ts +5 -7
- package/dist/esm/router.d.ts +3 -3
- package/dist/esm/router.js +375 -328
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/useParams.js.map +1 -1
- package/dist/esm/utils.d.ts +11 -4
- package/dist/esm/utils.js +20 -2
- package/dist/esm/utils.js.map +1 -1
- package/package.json +4 -2
- package/src/Matches.tsx +75 -37
- package/src/fileRoute.ts +17 -36
- package/src/index.tsx +0 -2
- package/src/link.tsx +189 -82
- package/src/redirects.ts +4 -2
- package/src/route.ts +149 -187
- package/src/routeInfo.ts +5 -7
- package/src/router.ts +501 -429
- package/src/useParams.tsx +2 -2
- package/src/utils.ts +41 -8
package/src/useParams.tsx
CHANGED
|
@@ -21,7 +21,7 @@ export function useParams<
|
|
|
21
21
|
return useMatch({
|
|
22
22
|
...opts,
|
|
23
23
|
select: (match) => {
|
|
24
|
-
return opts.select ? opts.select(match.params) : match.params
|
|
24
|
+
return opts.select ? opts.select(match.params as TParams) : match.params
|
|
25
25
|
},
|
|
26
|
-
})
|
|
26
|
+
}) as TSelected
|
|
27
27
|
}
|
package/src/utils.ts
CHANGED
|
@@ -15,12 +15,14 @@ export type PickRequired<T> = {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
// from https://stackoverflow.com/a/76458160
|
|
18
|
-
export type WithoutEmpty<T> = T extends
|
|
18
|
+
export type WithoutEmpty<T> = T extends any ? ({} extends T ? never : T) : never
|
|
19
19
|
|
|
20
20
|
// export type Expand<T> = T
|
|
21
21
|
export type Expand<T> = T extends object
|
|
22
22
|
? T extends infer O
|
|
23
|
-
?
|
|
23
|
+
? O extends Function
|
|
24
|
+
? O
|
|
25
|
+
: { [K in keyof O]: O[K] }
|
|
24
26
|
: never
|
|
25
27
|
: T
|
|
26
28
|
|
|
@@ -36,10 +38,12 @@ export type DeepPartial<T> = T extends object
|
|
|
36
38
|
}
|
|
37
39
|
: T
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
export type MakeDifferenceOptional<TLeft, TRight> = Omit<
|
|
42
|
+
TRight,
|
|
43
|
+
keyof TLeft
|
|
44
|
+
> & {
|
|
45
|
+
[K in keyof TLeft & keyof TRight]?: TRight[K]
|
|
46
|
+
}
|
|
43
47
|
|
|
44
48
|
// from https://stackoverflow.com/a/53955431
|
|
45
49
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
@@ -78,8 +82,6 @@ export type UnionToTuple<T, TLast = LastInUnion<T>> = [T] extends [never]
|
|
|
78
82
|
|
|
79
83
|
//
|
|
80
84
|
|
|
81
|
-
export const isServer = typeof document === 'undefined'
|
|
82
|
-
|
|
83
85
|
export function last<T>(arr: Array<T>) {
|
|
84
86
|
return arr[arr.length - 1]
|
|
85
87
|
}
|
|
@@ -306,3 +308,34 @@ export function removeTrailingSlash(value: string): string {
|
|
|
306
308
|
export function exactPathTest(pathName1: string, pathName2: string): boolean {
|
|
307
309
|
return removeTrailingSlash(pathName1) === removeTrailingSlash(pathName2)
|
|
308
310
|
}
|
|
311
|
+
|
|
312
|
+
export type ControlledPromise<T> = Promise<T> & {
|
|
313
|
+
resolve: (value: T) => void
|
|
314
|
+
reject: (value: any) => void
|
|
315
|
+
status: 'pending' | 'resolved' | 'rejected'
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
export function createControlledPromise<T>(onResolve?: () => void) {
|
|
319
|
+
let resolveLoadPromise!: () => void
|
|
320
|
+
let rejectLoadPromise!: (value: any) => void
|
|
321
|
+
|
|
322
|
+
const controlledPromise = new Promise<void>((resolve, reject) => {
|
|
323
|
+
resolveLoadPromise = resolve
|
|
324
|
+
rejectLoadPromise = reject
|
|
325
|
+
}) as ControlledPromise<T>
|
|
326
|
+
|
|
327
|
+
controlledPromise.status = 'pending'
|
|
328
|
+
|
|
329
|
+
controlledPromise.resolve = () => {
|
|
330
|
+
controlledPromise.status = 'resolved'
|
|
331
|
+
resolveLoadPromise()
|
|
332
|
+
onResolve?.()
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
controlledPromise.reject = (e) => {
|
|
336
|
+
controlledPromise.status = 'rejected'
|
|
337
|
+
rejectLoadPromise(e)
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
return controlledPromise
|
|
341
|
+
}
|