@tanstack/solid-router 1.108.0 → 1.110.0

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/solid-router",
3
- "version": "1.108.0",
3
+ "version": "1.110.0",
4
4
  "description": "Modern and scalable routing for Solid applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
package/src/link.tsx CHANGED
@@ -987,8 +987,8 @@ export type LinkOptionsFnOptions<
987
987
  TRouter extends AnyRouter = RegisteredRouter,
988
988
  > =
989
989
  TOptions extends ReadonlyArray<any>
990
- ? ValidateLinkOptionsArray<TOptions, TComp, TRouter>
991
- : ValidateLinkOptions<TOptions, TComp, TRouter>
990
+ ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>
991
+ : ValidateLinkOptions<TRouter, TOptions, string, TComp>
992
992
 
993
993
  export type LinkOptionsFn<TComp> = <
994
994
  const TOptions,
package/src/router.ts CHANGED
@@ -1586,8 +1586,8 @@ export class Router<
1586
1586
  }
1587
1587
  if (opts._includeValidateSearch && route.options.validateSearch) {
1588
1588
  const validate: SearchMiddleware<any> = ({ search, next }) => {
1589
+ const result = next(search)
1589
1590
  try {
1590
- const result = next(search)
1591
1591
  const validatedSearch = {
1592
1592
  ...result,
1593
1593
  ...(validateSearch(
@@ -1598,6 +1598,7 @@ export class Router<
1598
1598
  return validatedSearch
1599
1599
  } catch {
1600
1600
  // ignore errors here because they are already handled in matchRoutes
1601
+ return result
1601
1602
  }
1602
1603
  }
1603
1604
  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,54 @@ 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
+ }
101
+ export type ValidateRedirectOptions<
102
+ TRouter extends AnyRouter = RegisteredRouter,
103
+ TOptions = unknown,
104
+ TDefaultFrom extends string = string,
105
+ > = Constrain<
106
+ TOptions,
107
+ Redirect<
108
+ TRouter,
109
+ InferFrom<TOptions, TDefaultFrom>,
110
+ InferTo<TOptions>,
111
+ InferMaskFrom<TOptions>,
112
+ InferMaskTo<TOptions>
113
+ >
114
+ >
115
+
116
+ export type ValidateRedirectOptionsArray<
117
+ TRouter extends AnyRouter = RegisteredRouter,
118
+ TOptions extends ReadonlyArray<any> = ReadonlyArray<unknown>,
119
+ TDefaultFrom extends string = string,
120
+ > = {
121
+ [K in keyof TOptions]: ValidateRedirectOptions<
122
+ TRouter,
123
+ TOptions[K],
124
+ TDefaultFrom
125
+ >
126
+ }
89
127
 
90
128
  export type ValidateLinkOptions<
91
- TOptions,
92
- TComp = 'a',
93
129
  TRouter extends AnyRouter = RegisteredRouter,
130
+ TOptions = unknown,
131
+ TDefaultFrom extends string = string,
132
+ TComp = 'a',
94
133
  > = Constrain<
95
134
  TOptions,
96
135
  LinkComponentProps<
97
136
  TComp,
98
137
  TRouter,
99
- InferFrom<TOptions>,
138
+ InferFrom<TOptions, TDefaultFrom>,
100
139
  InferTo<TOptions>,
101
140
  InferMaskFrom<TOptions>,
102
141
  InferMaskTo<TOptions>
@@ -104,16 +143,22 @@ export type ValidateLinkOptions<
104
143
  >
105
144
 
106
145
  export type ValidateLinkOptionsArray<
107
- TOptions extends ReadonlyArray<any>,
108
- TComp = 'a',
109
146
  TRouter extends AnyRouter = RegisteredRouter,
147
+ TOptions extends ReadonlyArray<any> = ReadonlyArray<unknown>,
148
+ TDefaultFrom extends string = string,
149
+ TComp = 'a',
110
150
  > = {
111
- [K in keyof TOptions]: ValidateLinkOptions<TOptions[K], TComp, TRouter>
151
+ [K in keyof TOptions]: ValidateLinkOptions<
152
+ TRouter,
153
+ TOptions[K],
154
+ TDefaultFrom,
155
+ TComp
156
+ >
112
157
  }
113
158
 
114
159
  export type ValidateId<
115
- TId extends string,
116
160
  TRouter extends AnyRouter = RegisteredRouter,
161
+ TId extends string = string,
117
162
  > = ConstrainLiteral<TId, RouteIds<TRouter['routeTree']>>
118
163
 
119
164
  /**