@tanstack/react-router 1.93.0 → 1.94.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/link.cjs.map +1 -1
- package/dist/cjs/link.d.cts +3 -1
- package/dist/cjs/router.cjs +4 -0
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/typePrimitives.d.cts +8 -4
- package/dist/esm/link.d.ts +3 -1
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/router.js +4 -0
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/typePrimitives.d.ts +8 -4
- package/package.json +1 -1
- package/src/link.tsx +16 -10
- package/src/router.ts +4 -0
- package/src/typePrimitives.ts +30 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FromPathOption, NavigateOptions, PathParamOptions, SearchParamOptions, ToPathOption } from './link.js';
|
|
1
|
+
import { FromPathOption, LinkComponentProps, NavigateOptions, PathParamOptions, SearchParamOptions, ToPathOption } from './link.js';
|
|
2
2
|
import { RouteIds } from './routeInfo.js';
|
|
3
3
|
import { AnyRouter, RegisteredRouter } from './router.js';
|
|
4
4
|
import { UseParamsOptions, UseParamsResult } from './useParams.js';
|
|
@@ -27,15 +27,19 @@ export type InferMaskTo<TOptions> = TOptions extends {
|
|
|
27
27
|
mask: {
|
|
28
28
|
to: infer TTo extends string;
|
|
29
29
|
};
|
|
30
|
-
} ? TTo :
|
|
30
|
+
} ? TTo : '';
|
|
31
31
|
export type InferMaskFrom<TOptions> = TOptions extends {
|
|
32
32
|
mask: {
|
|
33
33
|
from: infer TFrom extends string;
|
|
34
34
|
};
|
|
35
35
|
} ? TFrom : string;
|
|
36
36
|
export type ValidateNavigateOptions<TOptions, TRouter extends AnyRouter = RegisteredRouter> = Constrain<TOptions, NavigateOptions<TRouter, InferFrom<TOptions>, InferTo<TOptions>, InferMaskFrom<TOptions>, InferMaskTo<TOptions>>>;
|
|
37
|
-
export type ValidateNavigateOptionsArray<TOptions extends ReadonlyArray<any
|
|
38
|
-
[K in keyof TOptions]: ValidateNavigateOptions<TOptions[K]>;
|
|
37
|
+
export type ValidateNavigateOptionsArray<TOptions extends ReadonlyArray<any>, TRouter extends AnyRouter = RegisteredRouter> = {
|
|
38
|
+
[K in keyof TOptions]: ValidateNavigateOptions<TOptions[K], TRouter>;
|
|
39
|
+
};
|
|
40
|
+
export type ValidateLinkOptions<TOptions, TComp = 'a', TRouter extends AnyRouter = RegisteredRouter> = Constrain<TOptions, LinkComponentProps<TComp, TRouter, InferFrom<TOptions>, InferTo<TOptions>, InferMaskFrom<TOptions>, InferMaskTo<TOptions>>>;
|
|
41
|
+
export type ValidateLinkOptionsArray<TOptions extends ReadonlyArray<any>, TComp = 'a', TRouter extends AnyRouter = RegisteredRouter> = {
|
|
42
|
+
[K in keyof TOptions]: ValidateLinkOptions<TOptions[K], TComp, TRouter>;
|
|
39
43
|
};
|
|
40
44
|
export type ValidateId<TId extends string, TRouter extends AnyRouter = RegisteredRouter> = ConstrainLiteral<TId, RouteIds<TRouter['routeTree']>>;
|
|
41
45
|
/**
|
package/package.json
CHANGED
package/src/link.tsx
CHANGED
|
@@ -46,6 +46,10 @@ import type {
|
|
|
46
46
|
WithoutEmpty,
|
|
47
47
|
} from './utils'
|
|
48
48
|
import type { ReactNode } from 'react'
|
|
49
|
+
import type {
|
|
50
|
+
ValidateLinkOptions,
|
|
51
|
+
ValidateLinkOptionsArray,
|
|
52
|
+
} from './typePrimitives'
|
|
49
53
|
|
|
50
54
|
export type ParsePathParams<T extends string, TAcc = never> = T &
|
|
51
55
|
`${string}$${string}` extends never
|
|
@@ -1040,19 +1044,21 @@ function isCtrlEvent(e: MouseEvent) {
|
|
|
1040
1044
|
return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)
|
|
1041
1045
|
}
|
|
1042
1046
|
|
|
1047
|
+
export type LinkOptionsFnOptions<
|
|
1048
|
+
TOptions,
|
|
1049
|
+
TComp,
|
|
1050
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
1051
|
+
> =
|
|
1052
|
+
TOptions extends ReadonlyArray<any>
|
|
1053
|
+
? ValidateLinkOptionsArray<TOptions, TComp, TRouter>
|
|
1054
|
+
: ValidateLinkOptions<TOptions, TComp, TRouter>
|
|
1055
|
+
|
|
1043
1056
|
export type LinkOptionsFn<TComp> = <
|
|
1044
|
-
const
|
|
1057
|
+
const TOptions,
|
|
1045
1058
|
TRouter extends AnyRouter = RegisteredRouter,
|
|
1046
|
-
TFrom extends string = string,
|
|
1047
|
-
TTo extends string | undefined = undefined,
|
|
1048
|
-
TMaskFrom extends string = TFrom,
|
|
1049
|
-
TMaskTo extends string = '',
|
|
1050
1059
|
>(
|
|
1051
|
-
options:
|
|
1052
|
-
|
|
1053
|
-
LinkComponentProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>
|
|
1054
|
-
>,
|
|
1055
|
-
) => TProps
|
|
1060
|
+
options: LinkOptionsFnOptions<TOptions, TComp, TRouter>,
|
|
1061
|
+
) => TOptions
|
|
1056
1062
|
|
|
1057
1063
|
export const linkOptions: LinkOptionsFn<'a'> = (options) => {
|
|
1058
1064
|
return options as any
|
package/src/router.ts
CHANGED
|
@@ -2492,6 +2492,10 @@ export class Router<
|
|
|
2492
2492
|
|
|
2493
2493
|
if (prevLoaderPromise) {
|
|
2494
2494
|
await prevLoaderPromise
|
|
2495
|
+
const match = this.getMatch(matchId)!
|
|
2496
|
+
if (match.error) {
|
|
2497
|
+
handleRedirectAndNotFound(match, match.error)
|
|
2498
|
+
}
|
|
2495
2499
|
} else {
|
|
2496
2500
|
const parentMatchPromise = matchPromises[index - 1] as any
|
|
2497
2501
|
const route = this.looseRoutesById[routeId]!
|
package/src/typePrimitives.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
FromPathOption,
|
|
3
|
+
LinkComponentProps,
|
|
3
4
|
NavigateOptions,
|
|
4
5
|
PathParamOptions,
|
|
5
6
|
SearchParamOptions,
|
|
@@ -59,7 +60,7 @@ export type InferMaskTo<TOptions> = TOptions extends {
|
|
|
59
60
|
mask: { to: infer TTo extends string }
|
|
60
61
|
}
|
|
61
62
|
? TTo
|
|
62
|
-
:
|
|
63
|
+
: ''
|
|
63
64
|
|
|
64
65
|
export type InferMaskFrom<TOptions> = TOptions extends {
|
|
65
66
|
mask: { from: infer TFrom extends string }
|
|
@@ -81,8 +82,34 @@ export type ValidateNavigateOptions<
|
|
|
81
82
|
>
|
|
82
83
|
>
|
|
83
84
|
|
|
84
|
-
export type ValidateNavigateOptionsArray<
|
|
85
|
-
|
|
85
|
+
export type ValidateNavigateOptionsArray<
|
|
86
|
+
TOptions extends ReadonlyArray<any>,
|
|
87
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
88
|
+
> = { [K in keyof TOptions]: ValidateNavigateOptions<TOptions[K], TRouter> }
|
|
89
|
+
|
|
90
|
+
export type ValidateLinkOptions<
|
|
91
|
+
TOptions,
|
|
92
|
+
TComp = 'a',
|
|
93
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
94
|
+
> = Constrain<
|
|
95
|
+
TOptions,
|
|
96
|
+
LinkComponentProps<
|
|
97
|
+
TComp,
|
|
98
|
+
TRouter,
|
|
99
|
+
InferFrom<TOptions>,
|
|
100
|
+
InferTo<TOptions>,
|
|
101
|
+
InferMaskFrom<TOptions>,
|
|
102
|
+
InferMaskTo<TOptions>
|
|
103
|
+
>
|
|
104
|
+
>
|
|
105
|
+
|
|
106
|
+
export type ValidateLinkOptionsArray<
|
|
107
|
+
TOptions extends ReadonlyArray<any>,
|
|
108
|
+
TComp = 'a',
|
|
109
|
+
TRouter extends AnyRouter = RegisteredRouter,
|
|
110
|
+
> = {
|
|
111
|
+
[K in keyof TOptions]: ValidateLinkOptions<TOptions[K], TComp, TRouter>
|
|
112
|
+
}
|
|
86
113
|
|
|
87
114
|
export type ValidateId<
|
|
88
115
|
TId extends string,
|