@tanstack/react-router 1.92.9 → 1.92.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-router",
3
- "version": "1.92.9",
3
+ "version": "1.92.13",
4
4
  "description": "Modern and scalable routing for React applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -67,13 +67,7 @@
67
67
  },
68
68
  "peerDependencies": {
69
69
  "react": ">=18",
70
- "react-dom": ">=18",
71
- "@tanstack/router-generator": "^1.87.7"
72
- },
73
- "peerDependenciesMeta": {
74
- "@tanstack/router-generator": {
75
- "optional": true
76
- }
70
+ "react-dom": ">=18"
77
71
  },
78
72
  "scripts": {}
79
73
  }
package/src/link.tsx CHANGED
@@ -26,6 +26,7 @@ import type {
26
26
  RouteByToPath,
27
27
  RoutePaths,
28
28
  RouteToPath,
29
+ ToPath,
29
30
  TrailingSlashOptionByRouter,
30
31
  } from './routeInfo'
31
32
  import type {
@@ -59,63 +60,70 @@ export type ParsePathParams<T extends string, TAcc = never> = T &
59
60
  : never
60
61
  : TAcc
61
62
 
62
- export type AddTrailingSlash<T> = T & `${string}/` extends never
63
- ? `${T & string}/`
64
- : T
63
+ export type AddTrailingSlash<T> = T extends `${string}/` ? T : `${T & string}/`
65
64
 
66
- export type RemoveTrailingSlashes<T> = T & `${string}/` extends never
67
- ? T
68
- : T extends `${infer R}/`
65
+ export type RemoveTrailingSlashes<T> = T extends `${string}/`
66
+ ? T extends `${infer R}/`
69
67
  ? R
70
68
  : T
71
-
72
- export type AddLeadingSlash<T> = T & `/${string}` extends never
73
- ? `/${T & string}`
74
69
  : T
75
70
 
76
- export type RemoveLeadingSlashes<T> = T & `/${string}` extends never
77
- ? T
78
- : T extends `/${infer R}`
71
+ export type AddLeadingSlash<T> = T extends `/${string}` ? T : `/${T & string}`
72
+
73
+ export type RemoveLeadingSlashes<T> = T extends `/${string}`
74
+ ? T extends `/${infer R}`
79
75
  ? R
80
76
  : T
77
+ : T
81
78
 
82
79
  export type FindDescendantPaths<
83
80
  TRouter extends AnyRouter,
84
81
  TPrefix extends string,
85
- > = `${TPrefix}${string}` & RouteToPath<TRouter>
82
+ > = `${TPrefix}/${string}` & RouteToPath<TRouter>
86
83
 
87
84
  export type SearchPaths<
88
85
  TRouter extends AnyRouter,
89
86
  TPrefix extends string,
90
87
  TPaths = FindDescendantPaths<TRouter, TPrefix>,
91
- > = TPaths extends `${TPrefix}${infer TRest}` ? TRest : never
88
+ > = TPaths extends `${TPrefix}/`
89
+ ? never
90
+ : TPaths extends `${TPrefix}/${infer TRest}`
91
+ ? TRest
92
+ : never
92
93
 
93
94
  export type SearchRelativePathAutoComplete<
94
95
  TRouter extends AnyRouter,
95
96
  TTo extends string,
96
97
  TSearchPath extends string,
97
- > = `${TTo}${SearchPaths<TRouter, TSearchPath>}`
98
+ > =
99
+ | (TSearchPath & RouteToPath<TRouter> extends never
100
+ ? never
101
+ : ToPath<TrailingSlashOptionByRouter<TRouter>, TTo>)
102
+ | `${TTo}/${SearchPaths<TRouter, RemoveTrailingSlashes<TSearchPath>>}`
98
103
 
99
104
  export type RelativeToParentPathAutoComplete<
100
105
  TRouter extends AnyRouter,
101
106
  TFrom extends string,
102
107
  TTo extends string,
103
- TResolvedPath extends string = RemoveTrailingSlashes<
104
- ResolveRelativePath<TFrom, TTo>
105
- >,
108
+ TResolvedPath extends string = ResolveRelativePath<TFrom, TTo>,
106
109
  > =
107
110
  | SearchRelativePathAutoComplete<TRouter, TTo, TResolvedPath>
108
- | (TResolvedPath extends ''
109
- ? never
110
- : `${TTo}/${ParentPath<TrailingSlashOptionByRouter<TRouter>>}`)
111
+ | (TTo extends `${string}..` | `${string}../`
112
+ ? TResolvedPath extends '/' | ''
113
+ ? never
114
+ : FindDescendantPaths<
115
+ TRouter,
116
+ RemoveTrailingSlashes<TResolvedPath>
117
+ > extends never
118
+ ? never
119
+ : `${TTo}/${ParentPath<TrailingSlashOptionByRouter<TRouter>>}`
120
+ : never)
111
121
 
112
122
  export type RelativeToCurrentPathAutoComplete<
113
123
  TRouter extends AnyRouter,
114
124
  TFrom extends string,
115
125
  TTo extends string,
116
- TResolvedPath extends string = RemoveTrailingSlashes<
117
- ResolveRelativePath<TFrom, TTo>
118
- >,
126
+ TResolvedPath extends string = ResolveRelativePath<TFrom, TTo>,
119
127
  > =
120
128
  | SearchRelativePathAutoComplete<TRouter, TTo, TResolvedPath>
121
129
  | CurrentPath<TrailingSlashOptionByRouter<TRouter>>
@@ -128,9 +136,7 @@ export type AbsolutePathAutoComplete<
128
136
  ? CurrentPath<TrailingSlashOptionByRouter<TRouter>>
129
137
  : TFrom extends `/`
130
138
  ? never
131
- : FindDescendantPaths<TRouter, TFrom> extends never
132
- ? never
133
- : CurrentPath<TrailingSlashOptionByRouter<TRouter>>)
139
+ : CurrentPath<TrailingSlashOptionByRouter<TRouter>>)
134
140
  | (string extends TFrom
135
141
  ? ParentPath<TrailingSlashOptionByRouter<TRouter>>
136
142
  : TFrom extends `/`
@@ -141,7 +147,7 @@ export type AbsolutePathAutoComplete<
141
147
  ? never
142
148
  : string extends TFrom
143
149
  ? never
144
- : RemoveLeadingSlashes<SearchPaths<TRouter, TFrom>>)
150
+ : SearchPaths<TRouter, RemoveTrailingSlashes<TFrom>>)
145
151
 
146
152
  export type RelativeToPathAutoComplete<
147
153
  TRouter extends AnyRouter,
@@ -485,30 +491,39 @@ type RemoveLastSegment<
485
491
  TAcc extends string = '',
486
492
  > = T extends `${infer TSegment}/${infer TRest}`
487
493
  ? TRest & `${string}/${string}` extends never
488
- ? `${TAcc}${TSegment}`
494
+ ? TRest extends ''
495
+ ? TAcc
496
+ : `${TAcc}${TSegment}`
489
497
  : RemoveLastSegment<TRest, `${TAcc}${TSegment}/`>
490
498
  : TAcc
491
499
 
492
- export type ResolveCurrentPath<TFrom, TTo> = TTo extends '.'
500
+ export type ResolveCurrentPath<
501
+ TFrom extends string,
502
+ TTo extends string,
503
+ > = TTo extends '.'
493
504
  ? TFrom
494
505
  : TTo extends './'
495
506
  ? AddTrailingSlash<TFrom>
496
507
  : TTo & `./${string}` extends never
497
508
  ? never
498
509
  : TTo extends `./${infer TRest}`
499
- ? ResolveRelativePath<TFrom, TRest>
510
+ ? AddLeadingSlash<JoinPath<TFrom, TRest>>
500
511
  : never
501
512
 
502
- export type ResolveParentPath<TFrom extends string, TTo> = TTo extends '../'
503
- ? RemoveLastSegment<TFrom>
504
- : TTo & `..${string}` extends never
513
+ export type ResolveParentPath<
514
+ TFrom extends string,
515
+ TTo extends string,
516
+ > = TTo extends '../' | '..'
517
+ ? TFrom extends '' | '/'
505
518
  ? never
506
- : TTo extends `..${infer ToRest}`
507
- ? ResolveRelativePath<
508
- RemoveLastSegment<TFrom>,
509
- RemoveLeadingSlashes<ToRest>
510
- >
511
- : never
519
+ : AddLeadingSlash<RemoveLastSegment<TFrom>>
520
+ : TTo & `../${string}` extends never
521
+ ? AddLeadingSlash<JoinPath<TFrom, TTo>>
522
+ : TFrom extends '' | '/'
523
+ ? never
524
+ : TTo extends `../${infer ToRest}`
525
+ ? ResolveParentPath<RemoveLastSegment<TFrom>, ToRest>
526
+ : AddLeadingSlash<JoinPath<TFrom, TTo>>
512
527
 
513
528
  export type ResolveRelativePath<TFrom, TTo = '.'> = string extends TFrom
514
529
  ? TTo
@@ -516,15 +531,15 @@ export type ResolveRelativePath<TFrom, TTo = '.'> = string extends TFrom
516
531
  ? TFrom
517
532
  : undefined extends TTo
518
533
  ? TFrom
519
- : TFrom extends string
520
- ? TTo extends string
521
- ? TTo & `..${string}` extends never
522
- ? TTo & `.${string}` extends never
523
- ? TTo & `/${string}` extends never
524
- ? AddLeadingSlash<JoinPath<TFrom, TTo>>
525
- : TTo
526
- : ResolveCurrentPath<TFrom, TTo>
527
- : ResolveParentPath<TFrom, TTo>
534
+ : TTo extends string
535
+ ? TFrom extends string
536
+ ? TTo extends `/${string}`
537
+ ? TTo
538
+ : TTo extends `..${string}`
539
+ ? ResolveParentPath<TFrom, TTo>
540
+ : TTo extends `.${string}`
541
+ ? ResolveCurrentPath<TFrom, TTo>
542
+ : AddLeadingSlash<JoinPath<TFrom, TTo>>
528
543
  : never
529
544
  : never
530
545
 
package/src/routeInfo.ts CHANGED
@@ -71,6 +71,12 @@ export type CurrentPath<TOption> = 'always' extends TOption
71
71
  ? '.'
72
72
  : './' | '.'
73
73
 
74
+ export type ToPath<TOption, TTo extends string> = 'always' extends TOption
75
+ ? `${TTo}/`
76
+ : 'never' extends TOption
77
+ ? TTo
78
+ : TTo | `${TTo}/`
79
+
74
80
  export type CatchAllPaths<TOption> = CurrentPath<TOption> | ParentPath<TOption>
75
81
 
76
82
  export type CodeRoutesByPath<TRouteTree extends AnyRoute> =
package/src/router.ts CHANGED
@@ -2397,7 +2397,6 @@ export class Router<
2397
2397
  context: {
2398
2398
  ...getParentMatchContext(),
2399
2399
  ...prev.__routeContext,
2400
- ...prev.__beforeLoadContext,
2401
2400
  },
2402
2401
  }))
2403
2402