@tanstack/react-router 1.108.0 → 1.109.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.
@@ -1,19 +1,20 @@
1
1
  import { FromPathOption, LinkComponentProps, NavigateOptions, PathParamOptions, SearchParamOptions, ToPathOption } from './link.js';
2
+ import { Redirect } from './redirects.js';
2
3
  import { RouteIds } from './routeInfo.js';
3
4
  import { AnyRouter, RegisteredRouter } from './router.js';
4
5
  import { UseParamsOptions, UseParamsResult } from './useParams.js';
5
6
  import { UseSearchOptions, UseSearchResult } from './useSearch.js';
6
7
  import { Constrain, ConstrainLiteral } from '@tanstack/router-core';
7
- export type ValidateFromPath<TFrom, TRouter extends AnyRouter = RegisteredRouter> = FromPathOption<TRouter, TFrom>;
8
- export type ValidateToPath<TTo extends string | undefined, TFrom extends string = string, TRouter extends AnyRouter = RegisteredRouter> = ToPathOption<TRouter, TFrom, TTo>;
9
- export type ValidateSearch<TTo extends string | undefined, TFrom extends string = string, TRouter extends AnyRouter = RegisteredRouter> = SearchParamOptions<TRouter, TFrom, TTo>;
10
- export type ValidateParams<TTo extends string | undefined, TFrom extends string = string, TRouter extends AnyRouter = RegisteredRouter> = PathParamOptions<TRouter, TFrom, TTo>;
8
+ export type ValidateFromPath<TRouter extends AnyRouter = RegisteredRouter, TFrom = string> = FromPathOption<TRouter, TFrom>;
9
+ export type ValidateToPath<TRouter extends AnyRouter = RegisteredRouter, TTo extends string | undefined = undefined, TFrom extends string = string> = ToPathOption<TRouter, TFrom, TTo>;
10
+ export type ValidateSearch<TRouter extends AnyRouter = RegisteredRouter, TTo extends string | undefined = undefined, TFrom extends string = string> = SearchParamOptions<TRouter, TFrom, TTo>;
11
+ export type ValidateParams<TRouter extends AnyRouter = RegisteredRouter, TTo extends string | undefined = undefined, TFrom extends string = string> = PathParamOptions<TRouter, TFrom, TTo>;
11
12
  /**
12
13
  * @internal
13
14
  */
14
- export type InferFrom<TOptions> = TOptions extends {
15
+ export type InferFrom<TOptions, TDefaultFrom extends string = string> = TOptions extends {
15
16
  from: infer TFrom extends string;
16
- } ? TFrom : string;
17
+ } ? TFrom : TDefaultFrom;
17
18
  /**
18
19
  * @internal
19
20
  */
@@ -33,15 +34,19 @@ export type InferMaskFrom<TOptions> = TOptions extends {
33
34
  from: infer TFrom extends string;
34
35
  };
35
36
  } ? TFrom : string;
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>, TRouter extends AnyRouter = RegisteredRouter> = {
38
- [K in keyof TOptions]: ValidateNavigateOptions<TOptions[K], TRouter>;
37
+ export type ValidateNavigateOptions<TRouter extends AnyRouter = RegisteredRouter, TOptions = unknown, TDefaultFrom extends string = string> = Constrain<TOptions, NavigateOptions<TRouter, InferFrom<TOptions, TDefaultFrom>, InferTo<TOptions>, InferMaskFrom<TOptions>, InferMaskTo<TOptions>>>;
38
+ export type ValidateNavigateOptionsArray<TRouter extends AnyRouter = RegisteredRouter, TOptions extends ReadonlyArray<any> = ReadonlyArray<unknown>, TDefaultFrom extends string = string> = {
39
+ [K in keyof TOptions]: ValidateNavigateOptions<TRouter, TOptions[K], TDefaultFrom>;
40
+ };
41
+ export type ValidateRedirectOptions<TRouter extends AnyRouter = RegisteredRouter, TOptions = unknown, TDefaultFrom extends string = string> = Constrain<TOptions, Redirect<TRouter, InferFrom<TOptions, TDefaultFrom>, InferTo<TOptions>, InferMaskFrom<TOptions>, InferMaskTo<TOptions>>>;
42
+ export type ValidateRedirectOptionsArray<TRouter extends AnyRouter = RegisteredRouter, TOptions extends ReadonlyArray<any> = ReadonlyArray<unknown>, TDefaultFrom extends string = string> = {
43
+ [K in keyof TOptions]: ValidateRedirectOptions<TRouter, TOptions[K], TDefaultFrom>;
39
44
  };
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>;
45
+ export type ValidateLinkOptions<TRouter extends AnyRouter = RegisteredRouter, TOptions = unknown, TDefaultFrom extends string = string, TComp = 'a'> = Constrain<TOptions, LinkComponentProps<TComp, TRouter, InferFrom<TOptions, TDefaultFrom>, InferTo<TOptions>, InferMaskFrom<TOptions>, InferMaskTo<TOptions>>>;
46
+ export type ValidateLinkOptionsArray<TRouter extends AnyRouter = RegisteredRouter, TOptions extends ReadonlyArray<any> = ReadonlyArray<unknown>, TDefaultFrom extends string = string, TComp = 'a'> = {
47
+ [K in keyof TOptions]: ValidateLinkOptions<TRouter, TOptions[K], TDefaultFrom, TComp>;
43
48
  };
44
- export type ValidateId<TId extends string, TRouter extends AnyRouter = RegisteredRouter> = ConstrainLiteral<TId, RouteIds<TRouter['routeTree']>>;
49
+ export type ValidateId<TRouter extends AnyRouter = RegisteredRouter, TId extends string = string> = ConstrainLiteral<TId, RouteIds<TRouter['routeTree']>>;
45
50
  /**
46
51
  * @internal
47
52
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-router",
3
- "version": "1.108.0",
3
+ "version": "1.109.2",
4
4
  "description": "Modern and scalable routing for React applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
package/src/link.tsx CHANGED
@@ -937,8 +937,8 @@ export type LinkOptionsFnOptions<
937
937
  TRouter extends AnyRouter = RegisteredRouter,
938
938
  > =
939
939
  TOptions extends ReadonlyArray<any>
940
- ? ValidateLinkOptionsArray<TOptions, TComp, TRouter>
941
- : ValidateLinkOptions<TOptions, TComp, TRouter>
940
+ ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>
941
+ : ValidateLinkOptions<TRouter, TOptions, string, TComp>
942
942
 
943
943
  export type LinkOptionsFn<TComp> = <
944
944
  const TOptions,
package/src/router.ts CHANGED
@@ -1611,8 +1611,8 @@ export class Router<
1611
1611
  }
1612
1612
  if (opts._includeValidateSearch && route.options.validateSearch) {
1613
1613
  const validate: SearchMiddleware<any> = ({ search, next }) => {
1614
+ const result = next(search)
1614
1615
  try {
1615
- const result = next(search)
1616
1616
  const validatedSearch = {
1617
1617
  ...result,
1618
1618
  ...(validateSearch(
@@ -1623,6 +1623,7 @@ export class Router<
1623
1623
  return validatedSearch
1624
1624
  } catch {
1625
1625
  // ignore errors here because they are already handled in matchRoutes
1626
+ return result
1626
1627
  }
1627
1628
  }
1628
1629
  middlewares.push(validate)
@@ -6,6 +6,7 @@ import type {
6
6
  SearchParamOptions,
7
7
  ToPathOption,
8
8
  } from './link'
9
+ import type { Redirect } from './redirects'
9
10
  import type { RouteIds } from './routeInfo'
10
11
  import type { AnyRouter, RegisteredRouter } from './router'
11
12
  import type { UseParamsOptions, UseParamsResult } from './useParams'
@@ -13,36 +14,39 @@ import type { UseSearchOptions, UseSearchResult } from './useSearch'
13
14
  import type { Constrain, ConstrainLiteral } from '@tanstack/router-core'
14
15
 
15
16
  export type ValidateFromPath<
16
- TFrom,
17
17
  TRouter extends AnyRouter = RegisteredRouter,
18
+ TFrom = string,
18
19
  > = FromPathOption<TRouter, TFrom>
19
20
 
20
21
  export type ValidateToPath<
21
- TTo extends string | undefined,
22
- TFrom extends string = string,
23
22
  TRouter extends AnyRouter = RegisteredRouter,
23
+ TTo extends string | undefined = undefined,
24
+ TFrom extends string = string,
24
25
  > = ToPathOption<TRouter, TFrom, TTo>
25
26
 
26
27
  export type ValidateSearch<
27
- TTo extends string | undefined,
28
- TFrom extends string = string,
29
28
  TRouter extends AnyRouter = RegisteredRouter,
29
+ TTo extends string | undefined = undefined,
30
+ TFrom extends string = string,
30
31
  > = SearchParamOptions<TRouter, TFrom, TTo>
31
32
 
32
33
  export type ValidateParams<
33
- TTo extends string | undefined,
34
- TFrom extends string = string,
35
34
  TRouter extends AnyRouter = RegisteredRouter,
35
+ TTo extends string | undefined = undefined,
36
+ TFrom extends string = string,
36
37
  > = PathParamOptions<TRouter, TFrom, TTo>
37
38
 
38
39
  /**
39
40
  * @internal
40
41
  */
41
- export type InferFrom<TOptions> = TOptions extends {
42
+ export type InferFrom<
43
+ TOptions,
44
+ TDefaultFrom extends string = string,
45
+ > = TOptions extends {
42
46
  from: infer TFrom extends string
43
47
  }
44
48
  ? TFrom
45
- : string
49
+ : TDefaultFrom
46
50
 
47
51
  /**
48
52
  * @internal
@@ -69,13 +73,14 @@ export type InferMaskFrom<TOptions> = TOptions extends {
69
73
  : string
70
74
 
71
75
  export type ValidateNavigateOptions<
72
- TOptions,
73
76
  TRouter extends AnyRouter = RegisteredRouter,
77
+ TOptions = unknown,
78
+ TDefaultFrom extends string = string,
74
79
  > = Constrain<
75
80
  TOptions,
76
81
  NavigateOptions<
77
82
  TRouter,
78
- InferFrom<TOptions>,
83
+ InferFrom<TOptions, TDefaultFrom>,
79
84
  InferTo<TOptions>,
80
85
  InferMaskFrom<TOptions>,
81
86
  InferMaskTo<TOptions>
@@ -83,20 +88,55 @@ export type ValidateNavigateOptions<
83
88
  >
84
89
 
85
90
  export type ValidateNavigateOptionsArray<
86
- TOptions extends ReadonlyArray<any>,
87
91
  TRouter extends AnyRouter = RegisteredRouter,
88
- > = { [K in keyof TOptions]: ValidateNavigateOptions<TOptions[K], TRouter> }
92
+ TOptions extends ReadonlyArray<any> = ReadonlyArray<unknown>,
93
+ TDefaultFrom extends string = string,
94
+ > = {
95
+ [K in keyof TOptions]: ValidateNavigateOptions<
96
+ TRouter,
97
+ TOptions[K],
98
+ TDefaultFrom
99
+ >
100
+ }
89
101
 
90
- export type ValidateLinkOptions<
102
+ export type ValidateRedirectOptions<
103
+ TRouter extends AnyRouter = RegisteredRouter,
104
+ TOptions = unknown,
105
+ TDefaultFrom extends string = string,
106
+ > = Constrain<
91
107
  TOptions,
92
- TComp = 'a',
108
+ Redirect<
109
+ TRouter,
110
+ InferFrom<TOptions, TDefaultFrom>,
111
+ InferTo<TOptions>,
112
+ InferMaskFrom<TOptions>,
113
+ InferMaskTo<TOptions>
114
+ >
115
+ >
116
+
117
+ export type ValidateRedirectOptionsArray<
93
118
  TRouter extends AnyRouter = RegisteredRouter,
119
+ TOptions extends ReadonlyArray<any> = ReadonlyArray<unknown>,
120
+ TDefaultFrom extends string = string,
121
+ > = {
122
+ [K in keyof TOptions]: ValidateRedirectOptions<
123
+ TRouter,
124
+ TOptions[K],
125
+ TDefaultFrom
126
+ >
127
+ }
128
+
129
+ export type ValidateLinkOptions<
130
+ TRouter extends AnyRouter = RegisteredRouter,
131
+ TOptions = unknown,
132
+ TDefaultFrom extends string = string,
133
+ TComp = 'a',
94
134
  > = Constrain<
95
135
  TOptions,
96
136
  LinkComponentProps<
97
137
  TComp,
98
138
  TRouter,
99
- InferFrom<TOptions>,
139
+ InferFrom<TOptions, TDefaultFrom>,
100
140
  InferTo<TOptions>,
101
141
  InferMaskFrom<TOptions>,
102
142
  InferMaskTo<TOptions>
@@ -104,16 +144,22 @@ export type ValidateLinkOptions<
104
144
  >
105
145
 
106
146
  export type ValidateLinkOptionsArray<
107
- TOptions extends ReadonlyArray<any>,
108
- TComp = 'a',
109
147
  TRouter extends AnyRouter = RegisteredRouter,
148
+ TOptions extends ReadonlyArray<any> = ReadonlyArray<unknown>,
149
+ TDefaultFrom extends string = string,
150
+ TComp = 'a',
110
151
  > = {
111
- [K in keyof TOptions]: ValidateLinkOptions<TOptions[K], TComp, TRouter>
152
+ [K in keyof TOptions]: ValidateLinkOptions<
153
+ TRouter,
154
+ TOptions[K],
155
+ TDefaultFrom,
156
+ TComp
157
+ >
112
158
  }
113
159
 
114
160
  export type ValidateId<
115
- TId extends string,
116
161
  TRouter extends AnyRouter = RegisteredRouter,
162
+ TId extends string = string,
117
163
  > = ConstrainLiteral<TId, RouteIds<TRouter['routeTree']>>
118
164
 
119
165
  /**