@tanstack/react-router 1.29.2 → 1.31.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.
Files changed (63) hide show
  1. package/dist/cjs/Matches.cjs.map +1 -1
  2. package/dist/cjs/Matches.d.cts +9 -9
  3. package/dist/cjs/RouterProvider.cjs.map +1 -1
  4. package/dist/cjs/RouterProvider.d.cts +7 -7
  5. package/dist/cjs/fileRoute.d.cts +1 -1
  6. package/dist/cjs/link.cjs.map +1 -1
  7. package/dist/cjs/link.d.cts +42 -42
  8. package/dist/cjs/path.cjs +1 -1
  9. package/dist/cjs/path.cjs.map +1 -1
  10. package/dist/cjs/redirects.cjs.map +1 -1
  11. package/dist/cjs/redirects.d.cts +5 -6
  12. package/dist/cjs/route.cjs.map +1 -1
  13. package/dist/cjs/route.d.cts +6 -6
  14. package/dist/cjs/routeInfo.d.cts +19 -2
  15. package/dist/cjs/router.cjs +5 -1
  16. package/dist/cjs/router.cjs.map +1 -1
  17. package/dist/cjs/router.d.cts +13 -12
  18. package/dist/cjs/routerContext.cjs.map +1 -1
  19. package/dist/cjs/routerContext.d.cts +1 -1
  20. package/dist/cjs/useNavigate.cjs.map +1 -1
  21. package/dist/cjs/useNavigate.d.cts +3 -4
  22. package/dist/cjs/useRouter.cjs.map +1 -1
  23. package/dist/cjs/useRouter.d.cts +3 -4
  24. package/dist/cjs/useRouterState.cjs.map +1 -1
  25. package/dist/cjs/useRouterState.d.cts +3 -4
  26. package/dist/esm/Matches.d.ts +9 -9
  27. package/dist/esm/Matches.js.map +1 -1
  28. package/dist/esm/RouterProvider.d.ts +7 -7
  29. package/dist/esm/RouterProvider.js.map +1 -1
  30. package/dist/esm/fileRoute.d.ts +1 -1
  31. package/dist/esm/link.d.ts +42 -42
  32. package/dist/esm/link.js.map +1 -1
  33. package/dist/esm/path.js +1 -1
  34. package/dist/esm/path.js.map +1 -1
  35. package/dist/esm/redirects.d.ts +5 -6
  36. package/dist/esm/redirects.js.map +1 -1
  37. package/dist/esm/route.d.ts +6 -6
  38. package/dist/esm/route.js.map +1 -1
  39. package/dist/esm/routeInfo.d.ts +19 -2
  40. package/dist/esm/router.d.ts +13 -12
  41. package/dist/esm/router.js +5 -1
  42. package/dist/esm/router.js.map +1 -1
  43. package/dist/esm/routerContext.d.ts +1 -1
  44. package/dist/esm/routerContext.js.map +1 -1
  45. package/dist/esm/useNavigate.d.ts +3 -4
  46. package/dist/esm/useNavigate.js.map +1 -1
  47. package/dist/esm/useRouter.d.ts +3 -4
  48. package/dist/esm/useRouter.js.map +1 -1
  49. package/dist/esm/useRouterState.d.ts +3 -4
  50. package/dist/esm/useRouterState.js.map +1 -1
  51. package/package.json +1 -1
  52. package/src/Matches.tsx +39 -21
  53. package/src/RouterProvider.tsx +34 -11
  54. package/src/link.tsx +124 -139
  55. package/src/path.ts +1 -1
  56. package/src/redirects.ts +14 -14
  57. package/src/route.ts +3 -3
  58. package/src/routeInfo.ts +72 -4
  59. package/src/router.ts +59 -13
  60. package/src/routerContext.tsx +1 -1
  61. package/src/useNavigate.tsx +9 -10
  62. package/src/useRouter.tsx +4 -5
  63. package/src/useRouterState.tsx +5 -6
package/src/Matches.tsx CHANGED
@@ -428,37 +428,39 @@ export interface MatchRouteOptions {
428
428
  }
429
429
 
430
430
  export type UseMatchRouteOptions<
431
- TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
432
- TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>,
431
+ TRouter extends AnyRouter = RegisteredRouter,
432
+ TFrom extends RoutePaths<TRouter['routeTree']> = RoutePaths<
433
+ TRouter['routeTree']
434
+ >,
433
435
  TTo extends string = '',
434
- TMaskFrom extends RoutePaths<TRouteTree> = TFrom,
436
+ TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom,
435
437
  TMaskTo extends string = '',
436
438
  TOptions extends ToOptions<
437
- TRouteTree,
439
+ TRouter,
438
440
  TFrom,
439
441
  TTo,
440
442
  TMaskFrom,
441
443
  TMaskTo
442
- > = ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,
444
+ > = ToOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
443
445
  TRelaxedOptions = Omit<TOptions, 'search' | 'params'> &
444
446
  DeepPartial<Pick<TOptions, 'search' | 'params'>>,
445
447
  > = TRelaxedOptions & MatchRouteOptions
446
448
 
447
- export function useMatchRoute<
448
- TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
449
- >() {
449
+ export function useMatchRoute<TRouter extends AnyRouter = RegisteredRouter>() {
450
450
  const router = useRouter()
451
451
 
452
452
  return React.useCallback(
453
453
  <
454
- TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>,
454
+ TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
455
455
  TTo extends string = '',
456
- TMaskFrom extends RoutePaths<TRouteTree> = TFrom,
456
+ TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
457
457
  TMaskTo extends string = '',
458
458
  TResolved extends string = ResolveRelativePath<TFrom, NoInfer<TTo>>,
459
459
  >(
460
- opts: UseMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,
461
- ): false | RouteById<TRouteTree, TResolved>['types']['allParams'] => {
460
+ opts: UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
461
+ ):
462
+ | false
463
+ | RouteById<TRouter['routeTree'], TResolved>['types']['allParams'] => {
462
464
  const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts
463
465
 
464
466
  return router.matchRoute(rest as any, {
@@ -473,17 +475,25 @@ export function useMatchRoute<
473
475
  }
474
476
 
475
477
  export type MakeMatchRouteOptions<
476
- TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
477
- TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>,
478
+ TRouter extends AnyRouter = RegisteredRouter,
479
+ TFrom extends RoutePaths<TRouter['routeTree']> = RoutePaths<
480
+ TRouter['routeTree']
481
+ >,
478
482
  TTo extends string = '',
479
- TMaskFrom extends RoutePaths<TRouteTree> = TFrom,
483
+ TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom,
480
484
  TMaskTo extends string = '',
481
- > = UseMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & {
485
+ > = UseMatchRouteOptions<
486
+ TRouter['routeTree'],
487
+ TFrom,
488
+ TTo,
489
+ TMaskFrom,
490
+ TMaskTo
491
+ > & {
482
492
  // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns
483
493
  children?:
484
494
  | ((
485
495
  params?: RouteByPath<
486
- TRouteTree,
496
+ TRouter['routeTree'],
487
497
  ResolveRelativePath<TFrom, NoInfer<TTo>>
488
498
  >['types']['allParams'],
489
499
  ) => ReactNode)
@@ -491,13 +501,21 @@ export type MakeMatchRouteOptions<
491
501
  }
492
502
 
493
503
  export function MatchRoute<
494
- TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
495
- TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>,
504
+ TRouter extends AnyRouter = RegisteredRouter,
505
+ TFrom extends RoutePaths<TRouter['routeTree']> = RoutePaths<
506
+ TRouter['routeTree']
507
+ >,
496
508
  TTo extends string = '',
497
- TMaskFrom extends RoutePaths<TRouteTree> = TFrom,
509
+ TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom,
498
510
  TMaskTo extends string = '',
499
511
  >(
500
- props: MakeMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,
512
+ props: MakeMatchRouteOptions<
513
+ TRouter['routeTree'],
514
+ TFrom,
515
+ TTo,
516
+ TMaskFrom,
517
+ TMaskTo
518
+ >,
501
519
  ): any {
502
520
  const matchRoute = useMatchRoute()
503
521
  const params = matchRoute(props as any)
@@ -10,6 +10,7 @@ import type { ParsedLocation } from './location'
10
10
  import type { AnyRoute } from './route'
11
11
  import type { RoutePaths } from './routeInfo'
12
12
  import type {
13
+ AnyRouter,
13
14
  RegisteredRouter,
14
15
  Router,
15
16
  RouterOptions,
@@ -37,12 +38,12 @@ export interface MatchLocation {
37
38
 
38
39
  export type NavigateFn = <
39
40
  TTo extends string,
40
- TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
41
- TFrom extends RoutePaths<TRouteTree> | string = string,
42
- TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom,
41
+ TRouter extends AnyRouter = RegisteredRouter,
42
+ TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
43
+ TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
43
44
  TMaskTo extends string = '',
44
45
  >(
45
- opts: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,
46
+ opts: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
46
47
  ) => Promise<void>
47
48
 
48
49
  export type BuildLocationFn<TRouteTree extends AnyRoute> = <
@@ -51,7 +52,13 @@ export type BuildLocationFn<TRouteTree extends AnyRoute> = <
51
52
  TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom,
52
53
  TMaskTo extends string = '',
53
54
  >(
54
- opts: ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & {
55
+ opts: ToOptions<
56
+ Router<TRouteTree, 'never'>,
57
+ TFrom,
58
+ TTo,
59
+ TMaskFrom,
60
+ TMaskTo
61
+ > & {
55
62
  leaveParams?: boolean
56
63
  },
57
64
  ) => ParsedLocation
@@ -59,9 +66,9 @@ export type BuildLocationFn<TRouteTree extends AnyRoute> = <
59
66
  export type InjectedHtmlEntry = string | (() => Promise<string> | string)
60
67
 
61
68
  export function RouterProvider<
62
- TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
69
+ TRouter extends AnyRouter = RegisteredRouter,
63
70
  TDehydrated extends Record<string, any> = Record<string, any>,
64
- >({ router, ...rest }: RouterProps<TRouteTree, TDehydrated>) {
71
+ >({ router, ...rest }: RouterProps<TRouter, TDehydrated>) {
65
72
  // Allow the router to update options on the router instance
66
73
  router.update({
67
74
  ...router.options,
@@ -238,11 +245,27 @@ export function getRouteMatch<TRouteTree extends AnyRoute>(
238
245
  }
239
246
 
240
247
  export type RouterProps<
241
- TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
248
+ TRouter extends AnyRouter = RegisteredRouter,
242
249
  TDehydrated extends Record<string, any> = Record<string, any>,
243
- > = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> & {
244
- router: Router<TRouteTree>
245
- context?: Partial<RouterOptions<TRouteTree, TDehydrated>['context']>
250
+ > = Omit<
251
+ RouterOptions<
252
+ TRouter['routeTree'],
253
+ NonNullable<TRouter['options']['trailingSlash']>,
254
+ TDehydrated
255
+ >,
256
+ 'context'
257
+ > & {
258
+ router: Router<
259
+ TRouter['routeTree'],
260
+ NonNullable<TRouter['options']['trailingSlash']>
261
+ >
262
+ context?: Partial<
263
+ RouterOptions<
264
+ TRouter['routeTree'],
265
+ NonNullable<TRouter['options']['trailingSlash']>,
266
+ TDehydrated
267
+ >['context']
268
+ >
246
269
  }
247
270
 
248
271
  function usePrevious<T>(value: T) {