@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.
@@ -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 : string;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-router",
3
- "version": "1.93.0",
3
+ "version": "1.94.1",
4
4
  "description": "Modern and scalable routing for React applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
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 TProps,
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: Constrain<
1052
- TProps,
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]!
@@ -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
- : string
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<TOptions extends ReadonlyArray<any>> =
85
- { [K in keyof TOptions]: ValidateNavigateOptions<TOptions[K]> }
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,