@tanstack/react-router 0.0.1-beta.283 → 0.0.1-beta.285
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/build/cjs/link.js.map +1 -1
- package/build/cjs/utils.js +2 -0
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +2 -0
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +351 -351
- package/build/types/link.d.ts +4 -2
- package/build/types/routeInfo.d.ts +11 -2
- package/build/types/utils.d.ts +3 -0
- package/build/umd/index.development.js +2 -0
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +2 -2
- package/src/link.tsx +15 -10
- package/src/routeInfo.ts +16 -2
- package/src/utils.ts +10 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/react-router",
|
|
3
3
|
"author": "Tanner Linsley",
|
|
4
|
-
"version": "0.0.1-beta.
|
|
4
|
+
"version": "0.0.1-beta.285",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "tanstack/router",
|
|
7
7
|
"homepage": "https://tanstack.com/router",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@tanstack/store": "^0.1.3",
|
|
45
45
|
"tiny-invariant": "^1.3.1",
|
|
46
46
|
"tiny-warning": "^1.0.3",
|
|
47
|
-
"@tanstack/history": "0.0.1-beta.
|
|
47
|
+
"@tanstack/history": "0.0.1-beta.285"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
50
|
"build": "rollup --config rollup.config.js"
|
package/src/link.tsx
CHANGED
|
@@ -172,13 +172,14 @@ export type SearchParamOptions<
|
|
|
172
172
|
TFromSearchEnsured = '/' extends TFrom
|
|
173
173
|
? FullSearchSchema<TRouteTree>
|
|
174
174
|
: Expand<
|
|
175
|
-
UnionToIntersection<
|
|
176
175
|
PickRequired<
|
|
177
176
|
RouteByPath<TRouteTree, TFrom>['types']['fullSearchSchema']
|
|
178
177
|
>
|
|
179
|
-
>
|
|
180
178
|
>,
|
|
181
|
-
TFromSearchOptional = Omit<
|
|
179
|
+
TFromSearchOptional = Omit<
|
|
180
|
+
FullSearchSchema<TRouteTree>,
|
|
181
|
+
keyof TFromSearchEnsured
|
|
182
|
+
>,
|
|
182
183
|
TFromSearch = Expand<TFromSearchEnsured & TFromSearchOptional>,
|
|
183
184
|
TToSearch = '' extends TTo
|
|
184
185
|
? FullSearchSchema<TRouteTree>
|
|
@@ -207,15 +208,19 @@ export type PathParamOptions<
|
|
|
207
208
|
TFromParamsOptional = Omit<AllParams<TRouteTree>, keyof TFromParamsEnsured>,
|
|
208
209
|
TFromParams = Expand<TFromParamsOptional & TFromParamsEnsured>,
|
|
209
210
|
TToParams = Expand<RouteByPath<TRouteTree, TTo>['types']['allParams']>,
|
|
210
|
-
> =
|
|
211
|
+
> = never extends TToParams
|
|
211
212
|
? {
|
|
212
|
-
params?: true | ParamsReducer<TFromParams
|
|
213
|
-
}
|
|
214
|
-
: {
|
|
215
|
-
params: TFromParamsEnsured extends PickRequired<TToParams>
|
|
216
|
-
? true | ParamsReducer<TFromParams, TToParams>
|
|
217
|
-
: ParamsReducer<TFromParams, TToParams>
|
|
213
|
+
params?: true | ParamsReducer<Partial<TFromParams>, Partial<TFromParams>>
|
|
218
214
|
}
|
|
215
|
+
: keyof PickRequired<TToParams> extends never
|
|
216
|
+
? {
|
|
217
|
+
params?: true | ParamsReducer<TFromParams, TToParams>
|
|
218
|
+
}
|
|
219
|
+
: {
|
|
220
|
+
params: TFromParamsEnsured extends PickRequired<TToParams>
|
|
221
|
+
? true | ParamsReducer<TFromParams, TToParams>
|
|
222
|
+
: ParamsReducer<TFromParams, TToParams>
|
|
223
|
+
}
|
|
219
224
|
|
|
220
225
|
type ParamsReducer<TFrom, TTo> = TTo | ((current: TFrom) => TTo)
|
|
221
226
|
|
package/src/routeInfo.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AnyRoute, Route } from './route'
|
|
2
|
-
import { Expand, UnionToIntersection } from './utils'
|
|
2
|
+
import { Expand, UnionToIntersection, UnionToTuple } from './utils'
|
|
3
3
|
|
|
4
4
|
export type ParseRoute<TRouteTree extends AnyRoute> =
|
|
5
5
|
| TRouteTree
|
|
@@ -59,9 +59,23 @@ export type RoutePaths<TRouteTree extends AnyRoute> =
|
|
|
59
59
|
| ParseRoute<TRouteTree>['fullPath']
|
|
60
60
|
| '/'
|
|
61
61
|
|
|
62
|
+
type UnionizeCollisions<T, U> = {
|
|
63
|
+
[P in keyof T & keyof U]: T[P] extends U[P] ? T[P] : T[P] | U[P]
|
|
64
|
+
}
|
|
65
|
+
type Reducer<T, U, C = UnionizeCollisions<T, U>> = C &
|
|
66
|
+
Omit<T, keyof C> &
|
|
67
|
+
Omit<U, keyof C>
|
|
68
|
+
|
|
69
|
+
type Reduce<T extends any[], Result = unknown> = T extends [
|
|
70
|
+
infer First,
|
|
71
|
+
...infer Rest,
|
|
72
|
+
]
|
|
73
|
+
? Reduce<Rest, Reducer<Result, First>>
|
|
74
|
+
: Result
|
|
75
|
+
|
|
62
76
|
export type FullSearchSchema<TRouteTree extends AnyRoute> = Partial<
|
|
63
77
|
Expand<
|
|
64
|
-
|
|
78
|
+
Reduce<UnionToTuple<ParseRoute<TRouteTree>['types']['fullSearchSchema']>>
|
|
65
79
|
>
|
|
66
80
|
>
|
|
67
81
|
|
package/src/utils.ts
CHANGED
|
@@ -133,6 +133,16 @@ export type PickExclude<T, U> = {
|
|
|
133
133
|
[K in keyof T as T[K] extends U ? never : K]: T[K]
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
+
// from https://github.com/type-challenges/type-challenges/issues/737
|
|
137
|
+
type LastInUnion<U> = UnionToIntersection<
|
|
138
|
+
U extends unknown ? (x: U) => 0 : never
|
|
139
|
+
> extends (x: infer L) => 0
|
|
140
|
+
? L
|
|
141
|
+
: never
|
|
142
|
+
export type UnionToTuple<U, Last = LastInUnion<U>> = [U] extends [never]
|
|
143
|
+
? []
|
|
144
|
+
: [...UnionToTuple<Exclude<U, Last>>, Last]
|
|
145
|
+
|
|
136
146
|
//
|
|
137
147
|
|
|
138
148
|
export const isServer = typeof document === 'undefined'
|