@tanstack/react-router 1.53.1 → 1.56.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.
Files changed (81) hide show
  1. package/dist/cjs/Matches.cjs.map +1 -1
  2. package/dist/cjs/Matches.d.cts +2 -2
  3. package/dist/cjs/RouterProvider.cjs.map +1 -1
  4. package/dist/cjs/RouterProvider.d.cts +2 -2
  5. package/dist/cjs/fileRoute.cjs.map +1 -1
  6. package/dist/cjs/fileRoute.d.cts +10 -1
  7. package/dist/cjs/index.d.cts +3 -3
  8. package/dist/cjs/link.cjs.map +1 -1
  9. package/dist/cjs/link.d.cts +22 -21
  10. package/dist/cjs/redirects.cjs.map +1 -1
  11. package/dist/cjs/redirects.d.cts +2 -2
  12. package/dist/cjs/route.cjs +18 -2
  13. package/dist/cjs/route.cjs.map +1 -1
  14. package/dist/cjs/route.d.cts +8 -5
  15. package/dist/cjs/routeInfo.d.cts +32 -21
  16. package/dist/cjs/router.cjs +4 -1
  17. package/dist/cjs/router.cjs.map +1 -1
  18. package/dist/cjs/router.d.cts +2 -2
  19. package/dist/cjs/useLoaderData.cjs.map +1 -1
  20. package/dist/cjs/useLoaderData.d.cts +3 -3
  21. package/dist/cjs/useLoaderDeps.cjs.map +1 -1
  22. package/dist/cjs/useLoaderDeps.d.cts +2 -2
  23. package/dist/cjs/useMatch.cjs.map +1 -1
  24. package/dist/cjs/useMatch.d.cts +2 -2
  25. package/dist/cjs/useNavigate.cjs.map +1 -1
  26. package/dist/cjs/useNavigate.d.cts +2 -2
  27. package/dist/cjs/useParams.cjs.map +1 -1
  28. package/dist/cjs/useParams.d.cts +2 -2
  29. package/dist/cjs/useRouteContext.cjs.map +1 -1
  30. package/dist/cjs/useRouteContext.d.cts +2 -2
  31. package/dist/cjs/useSearch.cjs.map +1 -1
  32. package/dist/cjs/useSearch.d.cts +2 -2
  33. package/dist/esm/Matches.d.ts +2 -2
  34. package/dist/esm/Matches.js.map +1 -1
  35. package/dist/esm/RouterProvider.d.ts +2 -2
  36. package/dist/esm/RouterProvider.js.map +1 -1
  37. package/dist/esm/fileRoute.d.ts +10 -1
  38. package/dist/esm/fileRoute.js.map +1 -1
  39. package/dist/esm/index.d.ts +3 -3
  40. package/dist/esm/link.d.ts +22 -21
  41. package/dist/esm/link.js.map +1 -1
  42. package/dist/esm/redirects.d.ts +2 -2
  43. package/dist/esm/redirects.js.map +1 -1
  44. package/dist/esm/route.d.ts +8 -5
  45. package/dist/esm/route.js +18 -2
  46. package/dist/esm/route.js.map +1 -1
  47. package/dist/esm/routeInfo.d.ts +32 -21
  48. package/dist/esm/router.d.ts +2 -2
  49. package/dist/esm/router.js +4 -1
  50. package/dist/esm/router.js.map +1 -1
  51. package/dist/esm/useLoaderData.d.ts +3 -3
  52. package/dist/esm/useLoaderData.js.map +1 -1
  53. package/dist/esm/useLoaderDeps.d.ts +2 -2
  54. package/dist/esm/useLoaderDeps.js.map +1 -1
  55. package/dist/esm/useMatch.d.ts +2 -2
  56. package/dist/esm/useMatch.js.map +1 -1
  57. package/dist/esm/useNavigate.d.ts +2 -2
  58. package/dist/esm/useNavigate.js.map +1 -1
  59. package/dist/esm/useParams.d.ts +2 -2
  60. package/dist/esm/useParams.js.map +1 -1
  61. package/dist/esm/useRouteContext.d.ts +2 -2
  62. package/dist/esm/useRouteContext.js.map +1 -1
  63. package/dist/esm/useSearch.d.ts +2 -2
  64. package/dist/esm/useSearch.js.map +1 -1
  65. package/package.json +1 -1
  66. package/src/Matches.tsx +15 -22
  67. package/src/RouterProvider.tsx +4 -4
  68. package/src/fileRoute.ts +25 -1
  69. package/src/index.tsx +10 -1
  70. package/src/link.tsx +81 -76
  71. package/src/redirects.ts +8 -8
  72. package/src/route.ts +98 -9
  73. package/src/routeInfo.ts +116 -38
  74. package/src/router.ts +9 -5
  75. package/src/useLoaderData.tsx +3 -3
  76. package/src/useLoaderDeps.tsx +3 -3
  77. package/src/useMatch.tsx +9 -3
  78. package/src/useNavigate.tsx +5 -5
  79. package/src/useParams.tsx +10 -3
  80. package/src/useRouteContext.ts +8 -3
  81. package/src/useSearch.tsx +11 -4
@@ -2,8 +2,8 @@ import { RegisteredRouter } from './router.js';
2
2
  import { AnyRoute } from './route.js';
3
3
  import { MakeRouteMatch } from './Matches.js';
4
4
  import { RouteIds } from './routeInfo.js';
5
- import { StrictOrFrom } from './utils.js';
6
- export type UseLoaderDataOptions<TRouteTree extends AnyRoute, TFrom, TStrict extends boolean, TRouteMatch extends MakeRouteMatch<TRouteTree, TFrom, TStrict>, TSelected> = StrictOrFrom<TFrom, TStrict> & {
5
+ import { Constrain, StrictOrFrom } from './utils.js';
6
+ export type UseLoaderDataOptions<TRouteTree extends AnyRoute, TFrom, TStrict extends boolean, TRouteMatch extends MakeRouteMatch<TRouteTree, TFrom, TStrict>, TSelected> = StrictOrFrom<Constrain<TFrom, RouteIds<TRouteTree>>, TStrict> & {
7
7
  select?: (match: Required<TRouteMatch>['loaderData']) => TSelected;
8
8
  };
9
- export declare function useLoaderData<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TStrict extends boolean = true, TRouteMatch extends MakeRouteMatch<TRouteTree, TFrom, TStrict> = MakeRouteMatch<TRouteTree, TFrom, TStrict>, TSelected = Required<TRouteMatch>['loaderData']>(opts: UseLoaderDataOptions<TRouteTree, TFrom, TStrict, TRouteMatch, TSelected>): TSelected;
9
+ export declare function useLoaderData<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends string | undefined = undefined, TStrict extends boolean = true, TRouteMatch extends MakeRouteMatch<TRouteTree, TFrom, TStrict> = MakeRouteMatch<TRouteTree, TFrom, TStrict>, TSelected = Required<TRouteMatch>['loaderData']>(opts: UseLoaderDataOptions<TRouteTree, TFrom, TStrict, TRouteMatch, TSelected>): TSelected;
@@ -1 +1 @@
1
- {"version":3,"file":"useLoaderData.js","sources":["../../src/useLoaderData.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { RegisteredRouter } from './router'\nimport type { AnyRoute } from './route'\nimport type { MakeRouteMatch } from './Matches'\nimport type { RouteIds } from './routeInfo'\nimport type { StrictOrFrom } from './utils'\n\nexport type UseLoaderDataOptions<\n TRouteTree extends AnyRoute,\n TFrom,\n TStrict extends boolean,\n TRouteMatch extends MakeRouteMatch<TRouteTree, TFrom, TStrict>,\n TSelected,\n> = StrictOrFrom<TFrom, TStrict> & {\n select?: (match: Required<TRouteMatch>['loaderData']) => TSelected\n}\n\nexport function useLoaderData<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TRouteMatch extends MakeRouteMatch<\n TRouteTree,\n TFrom,\n TStrict\n > = MakeRouteMatch<TRouteTree, TFrom, TStrict>,\n TSelected = Required<TRouteMatch>['loaderData'],\n>(\n opts: UseLoaderDataOptions<\n TRouteTree,\n TFrom,\n TStrict,\n TRouteMatch,\n TSelected\n >,\n): TSelected {\n return useMatch<TRouteTree, TFrom, TStrict, TRouteMatch, TSelected>({\n ...opts,\n select: (s) => {\n return typeof opts.select === 'function'\n ? opts.select(s.loaderData)\n : (s.loaderData as TSelected)\n },\n })\n}\n"],"names":[],"mappings":";AAiBO,SAAS,cAWd,MAOW;AACX,SAAO,SAA6D;AAAA,IAClE,GAAG;AAAA,IACH,QAAQ,CAAC,MAAM;AACN,aAAA,OAAO,KAAK,WAAW,aAC1B,KAAK,OAAO,EAAE,UAAU,IACvB,EAAE;AAAA,IACT;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"useLoaderData.js","sources":["../../src/useLoaderData.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { RegisteredRouter } from './router'\nimport type { AnyRoute } from './route'\nimport type { MakeRouteMatch } from './Matches'\nimport type { RouteIds } from './routeInfo'\nimport type { Constrain, StrictOrFrom } from './utils'\n\nexport type UseLoaderDataOptions<\n TRouteTree extends AnyRoute,\n TFrom,\n TStrict extends boolean,\n TRouteMatch extends MakeRouteMatch<TRouteTree, TFrom, TStrict>,\n TSelected,\n> = StrictOrFrom<Constrain<TFrom, RouteIds<TRouteTree>>, TStrict> & {\n select?: (match: Required<TRouteMatch>['loaderData']) => TSelected\n}\n\nexport function useLoaderData<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TRouteMatch extends MakeRouteMatch<\n TRouteTree,\n TFrom,\n TStrict\n > = MakeRouteMatch<TRouteTree, TFrom, TStrict>,\n TSelected = Required<TRouteMatch>['loaderData'],\n>(\n opts: UseLoaderDataOptions<\n TRouteTree,\n TFrom,\n TStrict,\n TRouteMatch,\n TSelected\n >,\n): TSelected {\n return useMatch<TRouteTree, TFrom, TStrict, TRouteMatch, TSelected>({\n ...opts,\n select: (s) => {\n return typeof opts.select === 'function'\n ? opts.select(s.loaderData)\n : (s.loaderData as TSelected)\n },\n })\n}\n"],"names":[],"mappings":";AAiBO,SAAS,cAWd,MAOW;AACX,SAAO,SAA6D;AAAA,IAClE,GAAG;AAAA,IACH,QAAQ,CAAC,MAAM;AACN,aAAA,OAAO,KAAK,WAAW,aAC1B,KAAK,OAAO,EAAE,UAAU,IACvB,EAAE;AAAA,IACT;AAAA,EAAA,CACD;AACH;"}
@@ -2,7 +2,7 @@ import { RegisteredRouter } from './router.js';
2
2
  import { AnyRoute } from './route.js';
3
3
  import { MakeRouteMatch } from './Matches.js';
4
4
  import { RouteIds } from './routeInfo.js';
5
- import { StrictOrFrom } from './utils.js';
6
- export declare function useLoaderDeps<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TRouteMatch extends MakeRouteMatch<TRouteTree, TFrom> = MakeRouteMatch<TRouteTree, TFrom>, TSelected = Required<TRouteMatch>['loaderDeps']>(opts: StrictOrFrom<TFrom> & {
5
+ import { Constrain, StrictOrFrom } from './utils.js';
6
+ export declare function useLoaderDeps<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends string | undefined = undefined, TRouteMatch extends MakeRouteMatch<TRouteTree, TFrom> = MakeRouteMatch<TRouteTree, TFrom>, TSelected = Required<TRouteMatch>['loaderDeps']>(opts: StrictOrFrom<Constrain<TFrom, RouteIds<TRouteTree>>> & {
7
7
  select?: (match: TRouteMatch) => TSelected;
8
8
  }): TSelected;
@@ -1 +1 @@
1
- {"version":3,"file":"useLoaderDeps.js","sources":["../../src/useLoaderDeps.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { RegisteredRouter } from './router'\nimport type { AnyRoute } from './route'\nimport type { MakeRouteMatch } from './Matches'\nimport type { RouteIds } from './routeInfo'\nimport type { StrictOrFrom } from './utils'\n\nexport function useLoaderDeps<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TRouteMatch extends MakeRouteMatch<TRouteTree, TFrom> = MakeRouteMatch<\n TRouteTree,\n TFrom\n >,\n TSelected = Required<TRouteMatch>['loaderDeps'],\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (match: TRouteMatch) => TSelected\n },\n): TSelected {\n return useMatch({\n ...opts,\n select: (s) => {\n return typeof opts.select === 'function'\n ? opts.select(s.loaderDeps)\n : s.loaderDeps\n },\n })\n}\n"],"names":[],"mappings":";AAOO,SAAS,cASd,MAGW;AACX,SAAO,SAAS;AAAA,IACd,GAAG;AAAA,IACH,QAAQ,CAAC,MAAM;AACN,aAAA,OAAO,KAAK,WAAW,aAC1B,KAAK,OAAO,EAAE,UAAU,IACxB,EAAE;AAAA,IACR;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"useLoaderDeps.js","sources":["../../src/useLoaderDeps.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { RegisteredRouter } from './router'\nimport type { AnyRoute } from './route'\nimport type { MakeRouteMatch } from './Matches'\nimport type { RouteIds } from './routeInfo'\nimport type { Constrain, StrictOrFrom } from './utils'\n\nexport function useLoaderDeps<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends string | undefined = undefined,\n TRouteMatch extends MakeRouteMatch<TRouteTree, TFrom> = MakeRouteMatch<\n TRouteTree,\n TFrom\n >,\n TSelected = Required<TRouteMatch>['loaderDeps'],\n>(\n opts: StrictOrFrom<Constrain<TFrom, RouteIds<TRouteTree>>> & {\n select?: (match: TRouteMatch) => TSelected\n },\n): TSelected {\n return useMatch({\n ...opts,\n select: (s) => {\n return typeof opts.select === 'function'\n ? opts.select(s.loaderDeps)\n : s.loaderDeps\n },\n })\n}\n"],"names":[],"mappings":";AAOO,SAAS,cASd,MAGW;AACX,SAAO,SAAS;AAAA,IACd,GAAG;AAAA,IACH,QAAQ,CAAC,MAAM;AACN,aAAA,OAAO,KAAK,WAAW,aAC1B,KAAK,OAAO,EAAE,UAAU,IACxB,EAAE;AAAA,IACR;AAAA,EAAA,CACD;AACH;"}
@@ -2,9 +2,9 @@ import { RegisteredRouter } from './router.js';
2
2
  import { AnyRoute } from './route.js';
3
3
  import { MakeRouteMatch } from './Matches.js';
4
4
  import { RouteIds } from './routeInfo.js';
5
- import { StrictOrFrom } from './utils.js';
5
+ import { Constrain, StrictOrFrom } from './utils.js';
6
6
  export type UseMatchOptions<TFrom, TStrict extends boolean, TRouteMatch, TSelected, TThrow extends boolean> = StrictOrFrom<TFrom, TStrict> & {
7
7
  select?: (match: TRouteMatch) => TSelected;
8
8
  shouldThrow?: TThrow;
9
9
  };
10
- export declare function useMatch<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TStrict extends boolean = true, TRouteMatch = MakeRouteMatch<TRouteTree, TFrom, TStrict>, TSelected = TRouteMatch, TThrow extends boolean = true>(opts: UseMatchOptions<TFrom, TStrict, TRouteMatch, TSelected, TThrow>): TThrow extends true ? TSelected : TSelected | undefined;
10
+ export declare function useMatch<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends string | undefined = undefined, TStrict extends boolean = true, TRouteMatch = MakeRouteMatch<TRouteTree, TFrom, TStrict>, TSelected = TRouteMatch, TThrow extends boolean = true>(opts: UseMatchOptions<Constrain<TFrom, RouteIds<TRouteTree>>, TStrict, TRouteMatch, TSelected, TThrow>): TThrow extends true ? TSelected : TSelected | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"useMatch.js","sources":["../../src/useMatch.tsx"],"sourcesContent":["import * as React from 'react'\nimport invariant from 'tiny-invariant'\nimport { useRouterState } from './useRouterState'\nimport { matchContext } from './matchContext'\nimport type { RegisteredRouter } from './router'\nimport type { AnyRoute } from './route'\nimport type { MakeRouteMatch } from './Matches'\nimport type { RouteIds } from './routeInfo'\nimport type { StrictOrFrom } from './utils'\n\nexport type UseMatchOptions<\n TFrom,\n TStrict extends boolean,\n TRouteMatch,\n TSelected,\n TThrow extends boolean,\n> = StrictOrFrom<TFrom, TStrict> & {\n select?: (match: TRouteMatch) => TSelected\n shouldThrow?: TThrow\n}\n\nexport function useMatch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TRouteMatch = MakeRouteMatch<TRouteTree, TFrom, TStrict>,\n TSelected = TRouteMatch,\n TThrow extends boolean = true,\n>(\n opts: UseMatchOptions<TFrom, TStrict, TRouteMatch, TSelected, TThrow>,\n): TThrow extends true ? TSelected : TSelected | undefined {\n const nearestMatchId = React.useContext(matchContext)\n\n const matchSelection = useRouterState({\n select: (state) => {\n const match = state.matches.find((d) =>\n opts.from ? opts.from === d.routeId : d.id === nearestMatchId,\n )\n invariant(\n !((opts.shouldThrow ?? true) && !match),\n `Could not find ${opts.from ? `an active match from \"${opts.from}\"` : 'a nearest match!'}`,\n )\n\n if (match === undefined) {\n return undefined\n }\n\n return opts.select ? opts.select(match as any) : match\n },\n })\n\n return matchSelection as TSelected\n}\n"],"names":[],"mappings":";;;;AAqBO,SAAS,SAQd,MACyD;AACnD,QAAA,iBAAiB,MAAM,WAAW,YAAY;AAEpD,QAAM,iBAAiB,eAAe;AAAA,IACpC,QAAQ,CAAC,UAAU;AACX,YAAA,QAAQ,MAAM,QAAQ;AAAA,QAAK,CAAC,MAChC,KAAK,OAAO,KAAK,SAAS,EAAE,UAAU,EAAE,OAAO;AAAA,MAAA;AAEjD;AAAA,QACE,GAAG,KAAK,eAAe,SAAS,CAAC;AAAA,QACjC,kBAAkB,KAAK,OAAO,yBAAyB,KAAK,IAAI,MAAM,kBAAkB;AAAA,MAAA;AAG1F,UAAI,UAAU,QAAW;AAChB,eAAA;AAAA,MACT;AAEA,aAAO,KAAK,SAAS,KAAK,OAAO,KAAY,IAAI;AAAA,IACnD;AAAA,EAAA,CACD;AAEM,SAAA;AACT;"}
1
+ {"version":3,"file":"useMatch.js","sources":["../../src/useMatch.tsx"],"sourcesContent":["import * as React from 'react'\nimport invariant from 'tiny-invariant'\nimport { useRouterState } from './useRouterState'\nimport { matchContext } from './matchContext'\nimport type { RegisteredRouter } from './router'\nimport type { AnyRoute } from './route'\nimport type { MakeRouteMatch } from './Matches'\nimport type { RouteIds } from './routeInfo'\nimport type { Constrain, StrictOrFrom } from './utils'\n\nexport type UseMatchOptions<\n TFrom,\n TStrict extends boolean,\n TRouteMatch,\n TSelected,\n TThrow extends boolean,\n> = StrictOrFrom<TFrom, TStrict> & {\n select?: (match: TRouteMatch) => TSelected\n shouldThrow?: TThrow\n}\n\nexport function useMatch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TRouteMatch = MakeRouteMatch<TRouteTree, TFrom, TStrict>,\n TSelected = TRouteMatch,\n TThrow extends boolean = true,\n>(\n opts: UseMatchOptions<\n Constrain<TFrom, RouteIds<TRouteTree>>,\n TStrict,\n TRouteMatch,\n TSelected,\n TThrow\n >,\n): TThrow extends true ? TSelected : TSelected | undefined {\n const nearestMatchId = React.useContext(matchContext)\n\n const matchSelection = useRouterState({\n select: (state) => {\n const match = state.matches.find((d) =>\n opts.from ? opts.from === d.routeId : d.id === nearestMatchId,\n )\n invariant(\n !((opts.shouldThrow ?? true) && !match),\n `Could not find ${opts.from ? `an active match from \"${opts.from}\"` : 'a nearest match!'}`,\n )\n\n if (match === undefined) {\n return undefined\n }\n\n return opts.select ? opts.select(match as any) : match\n },\n })\n\n return matchSelection as TSelected\n}\n"],"names":[],"mappings":";;;;AAqBO,SAAS,SAQd,MAOyD;AACnD,QAAA,iBAAiB,MAAM,WAAW,YAAY;AAEpD,QAAM,iBAAiB,eAAe;AAAA,IACpC,QAAQ,CAAC,UAAU;AACX,YAAA,QAAQ,MAAM,QAAQ;AAAA,QAAK,CAAC,MAChC,KAAK,OAAO,KAAK,SAAS,EAAE,UAAU,EAAE,OAAO;AAAA,MAAA;AAEjD;AAAA,QACE,GAAG,KAAK,eAAe,SAAS,CAAC;AAAA,QACjC,kBAAkB,KAAK,OAAO,yBAAyB,KAAK,IAAI,MAAM,kBAAkB;AAAA,MAAA;AAG1F,UAAI,UAAU,QAAW;AAChB,eAAA;AAAA,MACT;AAEA,aAAO,KAAK,SAAS,KAAK,OAAO,KAAY,IAAI;AAAA,IACnD;AAAA,EAAA,CACD;AAEM,SAAA;AACT;"}
@@ -1,8 +1,8 @@
1
1
  import { FromPathOption, NavigateOptions } from './link.js';
2
2
  import { RoutePaths } from './routeInfo.js';
3
3
  import { AnyRouter, RegisteredRouter } from './router.js';
4
- export type UseNavigateResult<TDefaultFrom extends string> = <TTo extends string, TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths<TRouter['routeTree']> | string = TDefaultFrom, TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom, TMaskTo extends string = ''>({ from, ...rest }: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) => Promise<void>;
4
+ export type UseNavigateResult<TDefaultFrom extends string> = <TRouter extends RegisteredRouter, TTo extends string | undefined, TFrom extends string = TDefaultFrom, TMaskFrom extends string = TFrom, TMaskTo extends string = ''>({ from, ...rest }: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) => Promise<void>;
5
5
  export declare function useNavigate<TRouter extends AnyRouter = RegisteredRouter, TDefaultFrom extends string = string>(_defaultOpts?: {
6
6
  from?: FromPathOption<TRouter, TDefaultFrom>;
7
7
  }): UseNavigateResult<TDefaultFrom>;
8
- export declare function Navigate<TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths<TRouter['routeTree']> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom, TMaskTo extends string = ''>(props: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): null;
8
+ export declare function Navigate<TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths<TRouter['routeTree']> | string = string, TTo extends string | undefined = undefined, TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom, TMaskTo extends string = ''>(props: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): null;
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigate.js","sources":["../../src/useNavigate.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useRouter } from './useRouter'\nimport type { FromPathOption, NavigateOptions } from './link'\nimport type { RoutePaths } from './routeInfo'\nimport type { AnyRouter, RegisteredRouter } from './router'\n\nexport type UseNavigateResult<TDefaultFrom extends string> = <\n TTo extends string,\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = TDefaultFrom,\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '',\n>({\n from,\n ...rest\n}: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) => Promise<void>\n\nexport function useNavigate<\n TRouter extends AnyRouter = RegisteredRouter,\n TDefaultFrom extends string = string,\n>(_defaultOpts?: {\n from?: FromPathOption<TRouter, TDefaultFrom>\n}): UseNavigateResult<TDefaultFrom> {\n const { navigate } = useRouter()\n\n return React.useCallback(\n (options: NavigateOptions) => {\n return navigate({\n ...options,\n })\n },\n [navigate],\n ) as UseNavigateResult<TDefaultFrom>\n}\n\n// NOTE: I don't know of anyone using this. It's undocumented, so let's wait until someone needs it\n// export function typedNavigate<\n// TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n// TDefaultFrom extends RoutePaths<TRouteTree> = '/',\n// >(navigate: (opts: NavigateOptions<any>) => Promise<void>) {\n// return navigate as <\n// TFrom extends RoutePaths<TRouteTree> = TDefaultFrom,\n// TTo extends string = '',\n// TMaskFrom extends RoutePaths<TRouteTree> = '/',\n// TMaskTo extends string = '',\n// >(\n// opts?: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n// ) => Promise<void>\n// } //\n\nexport function Navigate<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '',\n>(props: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): null {\n const { navigate } = useRouter()\n\n React.useEffect(() => {\n navigate({\n ...props,\n } as any)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return null\n}\n"],"names":[],"mappings":";;AAiBO,SAAS,YAGd,cAEkC;AAC5B,QAAA,EAAE,aAAa;AAErB,SAAO,MAAM;AAAA,IACX,CAAC,YAA6B;AAC5B,aAAO,SAAS;AAAA,QACd,GAAG;AAAA,MAAA,CACJ;AAAA,IACH;AAAA,IACA,CAAC,QAAQ;AAAA,EAAA;AAEb;AAiBO,SAAS,SAMd,OAAuE;AACjE,QAAA,EAAE,aAAa;AAErB,QAAM,UAAU,MAAM;AACX,aAAA;AAAA,MACP,GAAG;AAAA,IAAA,CACG;AAAA,EAEV,GAAG,CAAE,CAAA;AAEE,SAAA;AACT;"}
1
+ {"version":3,"file":"useNavigate.js","sources":["../../src/useNavigate.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useRouter } from './useRouter'\nimport type { FromPathOption, NavigateOptions } from './link'\nimport type { RoutePaths } from './routeInfo'\nimport type { AnyRouter, RegisteredRouter } from './router'\n\nexport type UseNavigateResult<TDefaultFrom extends string> = <\n TRouter extends RegisteredRouter,\n TTo extends string | undefined,\n TFrom extends string = TDefaultFrom,\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '',\n>({\n from,\n ...rest\n}: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) => Promise<void>\n\nexport function useNavigate<\n TRouter extends AnyRouter = RegisteredRouter,\n TDefaultFrom extends string = string,\n>(_defaultOpts?: {\n from?: FromPathOption<TRouter, TDefaultFrom>\n}): UseNavigateResult<TDefaultFrom> {\n const { navigate } = useRouter()\n\n return React.useCallback(\n (options: NavigateOptions) => {\n return navigate({\n ...options,\n })\n },\n [navigate],\n ) as UseNavigateResult<TDefaultFrom>\n}\n\n// NOTE: I don't know of anyone using this. It's undocumented, so let's wait until someone needs it\n// export function typedNavigate<\n// TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n// TDefaultFrom extends RoutePaths<TRouteTree> = '/',\n// >(navigate: (opts: NavigateOptions<any>) => Promise<void>) {\n// return navigate as <\n// TFrom extends RoutePaths<TRouteTree> = TDefaultFrom,\n// TTo extends string = '',\n// TMaskFrom extends RoutePaths<TRouteTree> = '/',\n// TMaskTo extends string = '',\n// >(\n// opts?: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n// ) => Promise<void>\n// } //\n\nexport function Navigate<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string | undefined = undefined,\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '',\n>(props: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): null {\n const { navigate } = useRouter()\n\n React.useEffect(() => {\n navigate({\n ...props,\n } as any)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return null\n}\n"],"names":[],"mappings":";;AAiBO,SAAS,YAGd,cAEkC;AAC5B,QAAA,EAAE,aAAa;AAErB,SAAO,MAAM;AAAA,IACX,CAAC,YAA6B;AAC5B,aAAO,SAAS;AAAA,QACd,GAAG;AAAA,MAAA,CACJ;AAAA,IACH;AAAA,IACA,CAAC,QAAQ;AAAA,EAAA;AAEb;AAiBO,SAAS,SAMd,OAAuE;AACjE,QAAA,EAAE,aAAa;AAErB,QAAM,UAAU,MAAM;AACX,aAAA;AAAA,MACP,GAAG;AAAA,IAAA,CACG;AAAA,EAEV,GAAG,CAAE,CAAA;AAEE,SAAA;AACT;"}
@@ -1,8 +1,8 @@
1
1
  import { AnyRoute } from './route.js';
2
2
  import { AllParams, RouteById, RouteIds } from './routeInfo.js';
3
3
  import { RegisteredRouter } from './router.js';
4
- import { StrictOrFrom } from './utils.js';
4
+ import { Constrain, StrictOrFrom } from './utils.js';
5
5
  export type UseParamsOptions<TFrom, TStrict extends boolean, TParams, TSelected> = StrictOrFrom<TFrom, TStrict> & {
6
6
  select?: (params: TParams) => TSelected;
7
7
  };
8
- export declare function useParams<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TStrict extends boolean = true, TParams = TStrict extends false ? AllParams<TRouteTree> : RouteById<TRouteTree, TFrom>['types']['allParams'], TSelected = TParams>(opts: UseParamsOptions<TFrom, TStrict, TParams, TSelected>): TSelected;
8
+ export declare function useParams<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends string | undefined = undefined, TStrict extends boolean = true, TParams = TStrict extends false ? AllParams<TRouteTree> : RouteById<TRouteTree, TFrom>['types']['allParams'], TSelected = TParams>(opts: UseParamsOptions<Constrain<TFrom, RouteIds<TRouteTree>>, TStrict, TParams, TSelected>): TSelected;
@@ -1 +1 @@
1
- {"version":3,"file":"useParams.js","sources":["../../src/useParams.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { AnyRoute } from './route'\nimport type { AllParams, RouteById, RouteIds } from './routeInfo'\nimport type { RegisteredRouter } from './router'\nimport type { StrictOrFrom } from './utils'\n\nexport type UseParamsOptions<\n TFrom,\n TStrict extends boolean,\n TParams,\n TSelected,\n> = StrictOrFrom<TFrom, TStrict> & {\n select?: (params: TParams) => TSelected\n}\n\nexport function useParams<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TParams = TStrict extends false\n ? AllParams<TRouteTree>\n : RouteById<TRouteTree, TFrom>['types']['allParams'],\n TSelected = TParams,\n>(opts: UseParamsOptions<TFrom, TStrict, TParams, TSelected>): TSelected {\n return useMatch({\n ...opts,\n select: (match) => {\n return opts.select ? opts.select(match.params as TParams) : match.params\n },\n }) as TSelected\n}\n"],"names":[],"mappings":";AAeO,SAAS,UAQd,MAAuE;AACvE,SAAO,SAAS;AAAA,IACd,GAAG;AAAA,IACH,QAAQ,CAAC,UAAU;AACjB,aAAO,KAAK,SAAS,KAAK,OAAO,MAAM,MAAiB,IAAI,MAAM;AAAA,IACpE;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"useParams.js","sources":["../../src/useParams.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { AnyRoute } from './route'\nimport type { AllParams, RouteById, RouteIds } from './routeInfo'\nimport type { RegisteredRouter } from './router'\nimport type { Constrain, StrictOrFrom } from './utils'\n\nexport type UseParamsOptions<\n TFrom,\n TStrict extends boolean,\n TParams,\n TSelected,\n> = StrictOrFrom<TFrom, TStrict> & {\n select?: (params: TParams) => TSelected\n}\n\nexport function useParams<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TParams = TStrict extends false\n ? AllParams<TRouteTree>\n : RouteById<TRouteTree, TFrom>['types']['allParams'],\n TSelected = TParams,\n>(\n opts: UseParamsOptions<\n Constrain<TFrom, RouteIds<TRouteTree>>,\n TStrict,\n TParams,\n TSelected\n >,\n): TSelected {\n return useMatch({\n ...opts,\n select: (match) => {\n return opts.select ? opts.select(match.params as TParams) : match.params\n },\n }) as TSelected\n}\n"],"names":[],"mappings":";AAeO,SAAS,UASd,MAMW;AACX,SAAO,SAAS;AAAA,IACd,GAAG;AAAA,IACH,QAAQ,CAAC,UAAU;AACjB,aAAO,KAAK,SAAS,KAAK,OAAO,MAAM,MAAiB,IAAI,MAAM;AAAA,IACpE;AAAA,EAAA,CACD;AACH;"}
@@ -1,8 +1,8 @@
1
1
  import { AnyRoute } from './route.js';
2
2
  import { AllContext, RouteById, RouteIds } from './routeInfo.js';
3
3
  import { RegisteredRouter } from './router.js';
4
- import { Expand, StrictOrFrom } from './utils.js';
4
+ import { Constrain, Expand, StrictOrFrom } from './utils.js';
5
5
  export type UseRouteContextOptions<TFrom, TStrict extends boolean, TRouteContext, TSelected> = StrictOrFrom<TFrom, TStrict> & {
6
6
  select?: (search: TRouteContext) => TSelected;
7
7
  };
8
- export declare function useRouteContext<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TStrict extends boolean = true, TRouteContext = TStrict extends false ? AllContext<TRouteTree> : Expand<RouteById<TRouteTree, TFrom>['types']['allContext']>, TSelected = TRouteContext>(opts: UseRouteContextOptions<TFrom, TStrict, TRouteContext, TSelected>): TSelected;
8
+ export declare function useRouteContext<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends string | undefined = undefined, TStrict extends boolean = true, TRouteContext = TStrict extends false ? AllContext<TRouteTree> : Expand<RouteById<TRouteTree, TFrom>['types']['allContext']>, TSelected = TRouteContext>(opts: UseRouteContextOptions<Constrain<TFrom, RouteIds<TRouteTree>>, TStrict, TRouteContext, TSelected>): TSelected;
@@ -1 +1 @@
1
- {"version":3,"file":"useRouteContext.js","sources":["../../src/useRouteContext.ts"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { MakeRouteMatch } from './Matches'\nimport type { AnyRoute } from './route'\nimport type { AllContext, RouteById, RouteIds } from './routeInfo'\nimport type { RegisteredRouter } from './router'\nimport type { Expand, StrictOrFrom } from './utils'\n\nexport type UseRouteContextOptions<\n TFrom,\n TStrict extends boolean,\n TRouteContext,\n TSelected,\n> = StrictOrFrom<TFrom, TStrict> & {\n select?: (search: TRouteContext) => TSelected\n}\n\nexport function useRouteContext<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TRouteContext = TStrict extends false\n ? AllContext<TRouteTree>\n : Expand<RouteById<TRouteTree, TFrom>['types']['allContext']>,\n TSelected = TRouteContext,\n>(\n opts: UseRouteContextOptions<TFrom, TStrict, TRouteContext, TSelected>,\n): TSelected {\n return useMatch({\n ...(opts as any),\n select: (match: MakeRouteMatch<TRouteTree, TFrom>) =>\n opts.select ? opts.select(match.context) : match.context,\n })\n}\n"],"names":[],"mappings":";AAgBO,SAAS,gBASd,MACW;AACX,SAAO,SAAS;AAAA,IACd,GAAI;AAAA,IACJ,QAAQ,CAAC,UACP,KAAK,SAAS,KAAK,OAAO,MAAM,OAAO,IAAI,MAAM;AAAA,EAAA,CACpD;AACH;"}
1
+ {"version":3,"file":"useRouteContext.js","sources":["../../src/useRouteContext.ts"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { MakeRouteMatch } from './Matches'\nimport type { AnyRoute } from './route'\nimport type { AllContext, RouteById, RouteIds } from './routeInfo'\nimport type { RegisteredRouter } from './router'\nimport type { Constrain, Expand, StrictOrFrom } from './utils'\n\nexport type UseRouteContextOptions<\n TFrom,\n TStrict extends boolean,\n TRouteContext,\n TSelected,\n> = StrictOrFrom<TFrom, TStrict> & {\n select?: (search: TRouteContext) => TSelected\n}\n\nexport function useRouteContext<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TRouteContext = TStrict extends false\n ? AllContext<TRouteTree>\n : Expand<RouteById<TRouteTree, TFrom>['types']['allContext']>,\n TSelected = TRouteContext,\n>(\n opts: UseRouteContextOptions<\n Constrain<TFrom, RouteIds<TRouteTree>>,\n TStrict,\n TRouteContext,\n TSelected\n >,\n): TSelected {\n return useMatch({\n ...(opts as any),\n select: (match: MakeRouteMatch<TRouteTree, TFrom>) =>\n opts.select ? opts.select(match.context) : match.context,\n })\n}\n"],"names":[],"mappings":";AAgBO,SAAS,gBASd,MAMW;AACX,SAAO,SAAS;AAAA,IACd,GAAI;AAAA,IACJ,QAAQ,CAAC,UACP,KAAK,SAAS,KAAK,OAAO,MAAM,OAAO,IAAI,MAAM;AAAA,EAAA,CACpD;AACH;"}
@@ -1,8 +1,8 @@
1
1
  import { AnyRoute } from './route.js';
2
2
  import { FullSearchSchema, RouteById, RouteIds } from './routeInfo.js';
3
3
  import { RegisteredRouter } from './router.js';
4
- import { Expand, StrictOrFrom } from './utils.js';
4
+ import { Constrain, Expand, StrictOrFrom } from './utils.js';
5
5
  export type UseSearchOptions<TFrom, TStrict extends boolean, TSearch, TSelected> = StrictOrFrom<TFrom, TStrict> & {
6
6
  select?: (search: TSearch) => TSelected;
7
7
  };
8
- export declare function useSearch<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TStrict extends boolean = true, TSearch = TStrict extends false ? FullSearchSchema<TRouteTree> : Expand<RouteById<TRouteTree, TFrom>['types']['fullSearchSchema']>, TSelected = TSearch>(opts: UseSearchOptions<TFrom, TStrict, TSearch, TSelected>): TSelected;
8
+ export declare function useSearch<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends string | undefined = undefined, TStrict extends boolean = true, TSearch = TStrict extends false ? FullSearchSchema<TRouteTree> : Expand<RouteById<TRouteTree, TFrom>['types']['fullSearchSchema']>, TSelected = TSearch>(opts: UseSearchOptions<Constrain<TFrom, RouteIds<TRouteTree>>, TStrict, TSearch, TSelected>): TSelected;
@@ -1 +1 @@
1
- {"version":3,"file":"useSearch.js","sources":["../../src/useSearch.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { AnyRoute } from './route'\nimport type { FullSearchSchema, RouteById, RouteIds } from './routeInfo'\nimport type { RegisteredRouter } from './router'\nimport type { MakeRouteMatch } from './Matches'\nimport type { Expand, StrictOrFrom } from './utils'\n\nexport type UseSearchOptions<\n TFrom,\n TStrict extends boolean,\n TSearch,\n TSelected,\n> = StrictOrFrom<TFrom, TStrict> & {\n select?: (search: TSearch) => TSelected\n}\n\nexport function useSearch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TSearch = TStrict extends false\n ? FullSearchSchema<TRouteTree>\n : Expand<RouteById<TRouteTree, TFrom>['types']['fullSearchSchema']>,\n TSelected = TSearch,\n>(opts: UseSearchOptions<TFrom, TStrict, TSearch, TSelected>): TSelected {\n return useMatch({\n ...opts,\n select: (match: MakeRouteMatch<TRouteTree, TFrom>) => {\n return opts.select ? opts.select(match.search) : match.search\n },\n })\n}\n"],"names":[],"mappings":";AAgBO,SAAS,UAQd,MAAuE;AACvE,SAAO,SAAS;AAAA,IACd,GAAG;AAAA,IACH,QAAQ,CAAC,UAA6C;AACpD,aAAO,KAAK,SAAS,KAAK,OAAO,MAAM,MAAM,IAAI,MAAM;AAAA,IACzD;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"useSearch.js","sources":["../../src/useSearch.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { AnyRoute } from './route'\nimport type { FullSearchSchema, RouteById, RouteIds } from './routeInfo'\nimport type { RegisteredRouter } from './router'\nimport type { MakeRouteMatch } from './Matches'\nimport type { Constrain, Expand, StrictOrFrom } from './utils'\n\nexport type UseSearchOptions<\n TFrom,\n TStrict extends boolean,\n TSearch,\n TSelected,\n> = StrictOrFrom<TFrom, TStrict> & {\n select?: (search: TSearch) => TSelected\n}\n\nexport function useSearch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TSearch = TStrict extends false\n ? FullSearchSchema<TRouteTree>\n : Expand<RouteById<TRouteTree, TFrom>['types']['fullSearchSchema']>,\n TSelected = TSearch,\n>(\n opts: UseSearchOptions<\n Constrain<TFrom, RouteIds<TRouteTree>>,\n TStrict,\n TSearch,\n TSelected\n >,\n): TSelected {\n return useMatch({\n ...opts,\n select: (match) => {\n return opts.select ? opts.select(match.search) : match.search\n },\n })\n}\n"],"names":[],"mappings":";AAgBO,SAAS,UASd,MAMW;AACX,SAAO,SAAS;AAAA,IACd,GAAG;AAAA,IACH,QAAQ,CAAC,UAAU;AACjB,aAAO,KAAK,SAAS,KAAK,OAAO,MAAM,MAAM,IAAI,MAAM;AAAA,IACzD;AAAA,EAAA,CACD;AACH;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-router",
3
- "version": "1.53.1",
3
+ "version": "1.56.1",
4
4
  "description": "Modern and scalable routing for React applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
package/src/Matches.tsx CHANGED
@@ -169,31 +169,24 @@ export interface RouteMatch<
169
169
 
170
170
  export type MakeRouteMatch<
171
171
  TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
172
- TRouteId = ParseRoute<TRouteTree>['id'],
172
+ TRouteId = RouteIds<TRouteTree>,
173
173
  TStrict extends boolean = true,
174
- TTypes extends AnyRoute['types'] = RouteById<TRouteTree, TRouteId>['types'],
175
- TFullPath = TTypes['fullPath'],
176
- TAllParams = TStrict extends false
174
+ > = RouteMatch<
175
+ TRouteId,
176
+ RouteById<TRouteTree, TRouteId>['types']['fullPath'],
177
+ TStrict extends false
177
178
  ? AllParams<TRouteTree>
178
- : TTypes['allParams'],
179
- TFullSearchSchema = TStrict extends false
179
+ : RouteById<TRouteTree, TRouteId>['types']['allParams'],
180
+ TStrict extends false
180
181
  ? FullSearchSchema<TRouteTree>
181
- : TTypes['fullSearchSchema'],
182
- TLoaderData = TStrict extends false
182
+ : RouteById<TRouteTree, TRouteId>['types']['fullSearchSchema'],
183
+ TStrict extends false
183
184
  ? AllLoaderData<TRouteTree>
184
- : TTypes['loaderData'],
185
- TAllContext = TStrict extends false
185
+ : RouteById<TRouteTree, TRouteId>['types']['loaderData'],
186
+ TStrict extends false
186
187
  ? AllContext<TRouteTree>
187
- : TTypes['allContext'],
188
- TLoaderDeps = TTypes['loaderDeps'],
189
- > = RouteMatch<
190
- TRouteId,
191
- TFullPath,
192
- TAllParams,
193
- TFullSearchSchema,
194
- TLoaderData,
195
- TAllContext,
196
- TLoaderDeps
188
+ : RouteById<TRouteTree, TRouteId>['types']['allContext'],
189
+ RouteById<TRouteTree, TRouteId>['types']['loaderDeps']
197
190
  >
198
191
 
199
192
  export type AnyRouteMatch = RouteMatch<any, any, any, any, any, any, any>
@@ -264,11 +257,11 @@ export interface MatchRouteOptions {
264
257
 
265
258
  export type UseMatchRouteOptions<
266
259
  TRouter extends AnyRouter = RegisteredRouter,
267
- TFrom extends RoutePaths<TRouter['routeTree']> = RoutePaths<
260
+ TFrom extends RoutePaths<TRouter['routeTree']> | string = RoutePaths<
268
261
  TRouter['routeTree']
269
262
  >,
270
263
  TTo extends string = '',
271
- TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom,
264
+ TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
272
265
  TMaskTo extends string = '',
273
266
  TOptions extends ToOptions<
274
267
  TRouter,
@@ -30,8 +30,8 @@ export interface MatchLocation {
30
30
  }
31
31
 
32
32
  export type NavigateFn = <
33
- TTo extends string,
34
- TRouter extends AnyRouter = RegisteredRouter,
33
+ TRouter extends RegisteredRouter,
34
+ TTo extends string | undefined,
35
35
  TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
36
36
  TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
37
37
  TMaskTo extends string = '',
@@ -42,8 +42,8 @@ export type NavigateFn = <
42
42
  ) => Promise<void>
43
43
 
44
44
  export type BuildLocationFn = <
45
- TTo extends string,
46
- TRouter extends AnyRouter = RegisteredRouter,
45
+ TRouter extends RegisteredRouter,
46
+ TTo extends string | undefined,
47
47
  TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
48
48
  TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
49
49
  TMaskTo extends string = '',
package/src/fileRoute.ts CHANGED
@@ -14,13 +14,14 @@ import type {
14
14
  AnySearchValidator,
15
15
  FileBaseRouteOptions,
16
16
  ResolveParams,
17
+ RootRoute,
17
18
  Route,
18
19
  RouteConstraints,
19
20
  RouteLoaderFn,
20
21
  UpdatableRouteOptions,
21
22
  } from './route'
22
23
  import type { MakeRouteMatch } from './Matches'
23
- import type { RegisteredRouter } from './router'
24
+ import type { AnyRouter, RegisteredRouter } from './router'
24
25
  import type { RouteById, RouteIds } from './routeInfo'
25
26
 
26
27
  export interface FileRoutesByPath {
@@ -29,6 +30,29 @@ export interface FileRoutesByPath {
29
30
  // }
30
31
  }
31
32
 
33
+ export interface FileRouteTypes {
34
+ fileRoutesByFullPath: any
35
+ fullPaths: any
36
+ to: any
37
+ fileRoutesByTo: any
38
+ id: any
39
+ fileRoutesById: any
40
+ }
41
+
42
+ export type InferFileRouteTypes<TRouteTree extends AnyRoute> =
43
+ TRouteTree extends RootRoute<
44
+ any,
45
+ any,
46
+ any,
47
+ any,
48
+ any,
49
+ any,
50
+ any,
51
+ infer TFileRouteTypes extends FileRouteTypes
52
+ >
53
+ ? TFileRouteTypes
54
+ : never
55
+
32
56
  export function createFileRoute<
33
57
  TFilePath extends keyof FileRoutesByPath,
34
58
  TParentRoute extends AnyRoute = FileRoutesByPath[TFilePath]['parentRoute'],
package/src/index.tsx CHANGED
@@ -32,7 +32,11 @@ export {
32
32
  createLazyRoute,
33
33
  createLazyFileRoute,
34
34
  } from './fileRoute'
35
- export type { FileRoutesByPath, LazyRouteOptions } from './fileRoute'
35
+ export type {
36
+ FileRoutesByPath,
37
+ FileRouteTypes,
38
+ LazyRouteOptions,
39
+ } from './fileRoute'
36
40
 
37
41
  export * from './history'
38
42
 
@@ -88,6 +92,8 @@ export type {
88
92
  MatchRouteOptions,
89
93
  UseMatchRouteOptions,
90
94
  MakeMatchRouteOptions,
95
+ MakeRouteMatch,
96
+ MakeRouteMatchUnion,
91
97
  } from './Matches'
92
98
 
93
99
  export { matchContext } from './matchContext'
@@ -230,6 +236,9 @@ export type {
230
236
  RoutePaths,
231
237
  FullSearchSchema,
232
238
  AllParams,
239
+ AllLoaderData,
240
+ FullSearchSchemaInput,
241
+ AllContext,
233
242
  } from './routeInfo'
234
243
 
235
244
  export {