@tanstack/react-router 1.90.0 → 1.91.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.
@@ -27,7 +27,7 @@ export type RouteByPath<TRouteTree extends AnyRoute, TPath> = Extract<RoutesByPa
27
27
  export type CodeRoutePaths<TRouteTree extends AnyRoute> = ParseRoute<TRouteTree> extends infer TRoutes extends AnyRoute ? TRoutes['fullPath'] : never;
28
28
  export type RoutePaths<TRouteTree extends AnyRoute> = unknown extends TRouteTree ? string : (InferFileRouteTypes<TRouteTree> extends never ? CodeRoutePaths<TRouteTree> : InferFileRouteTypes<TRouteTree>['fullPaths']) | '/';
29
29
  export type RouteToPathAlwaysTrailingSlash<TRoute extends AnyRoute> = TRoute['path'] extends '/' ? TRoute['fullPath'] : TRoute['fullPath'] extends '/' ? TRoute['fullPath'] : `${TRoute['fullPath']}/`;
30
- export type RouteToPathNeverTrailingSlash<TRoute extends AnyRoute> = TRoute['path'] extends '/' ? TRoute['fullPath'] extends '/' ? TRoute['fullPath'] : TRoute['fullPath'] extends `${infer TRest}/` ? TRest : TRoute['fullPath'] : TRoute['fullPath'];
30
+ export type RouteToPathNeverTrailingSlash<TRoute extends AnyRoute> = TRoute['path'] extends '/' ? TRoute['fullPath'] extends '/' ? TRoute['fullPath'] : RemoveTrailingSlashes<TRoute['fullPath']> : TRoute['fullPath'];
31
31
  export type RouteToPathPreserveTrailingSlash<TRoute extends AnyRoute> = RouteToPathNeverTrailingSlash<TRoute> | RouteToPathAlwaysTrailingSlash<TRoute>;
32
32
  export type RouteToPathByTrailingSlashOption<TRoute extends AnyRoute> = {
33
33
  always: RouteToPathAlwaysTrailingSlash<TRoute>;
@@ -36,9 +36,9 @@ export type RouteToPathByTrailingSlashOption<TRoute extends AnyRoute> = {
36
36
  };
37
37
  export type TrailingSlashOptionByRouter<TRouter extends AnyRouter> = TrailingSlashOption extends TRouter['options']['trailingSlash'] ? 'never' : NonNullable<TRouter['options']['trailingSlash']>;
38
38
  export type RouteToByRouter<TRouter extends AnyRouter, TRoute extends AnyRoute> = RouteToPathByTrailingSlashOption<TRoute>[TrailingSlashOptionByRouter<TRouter>];
39
- export type CodeRouteToPath<TRouter extends AnyRouter, TRouteTree extends AnyRoute> = ParseRouteWithoutBranches<TRouteTree> extends infer TRoute extends AnyRoute ? TRoute extends any ? RouteToByRouter<TRouter, TRoute> : never : never;
39
+ export type CodeRouteToPath<TRouter extends AnyRouter> = ParseRouteWithoutBranches<TRouter['routeTree']> extends infer TRoute extends AnyRoute ? TRoute extends any ? RouteToByRouter<TRouter, TRoute> : never : never;
40
40
  export type FileRouteToPath<TRouter extends AnyRouter, TTo = InferFileRouteTypes<TRouter['routeTree']>['to'], TTrailingSlashOption = TrailingSlashOptionByRouter<TRouter>> = 'never' extends TTrailingSlashOption ? TTo : 'always' extends TTrailingSlashOption ? AddTrailingSlash<TTo> : TTo | AddTrailingSlash<TTo>;
41
- export type RouteToPath<TRouter extends AnyRouter, TRouteTree extends AnyRoute> = unknown extends TRouter ? string : InferFileRouteTypes<TRouter['routeTree']> extends never ? CodeRouteToPath<TRouter, TRouteTree> : FileRouteToPath<TRouter>;
41
+ export type RouteToPath<TRouter extends AnyRouter> = unknown extends TRouter ? string : InferFileRouteTypes<TRouter['routeTree']> extends never ? CodeRouteToPath<TRouter> : FileRouteToPath<TRouter>;
42
42
  export type CodeRoutesByToPath<TRouter extends AnyRouter> = ParseRouteWithoutBranches<TRouter['routeTree']> extends infer TRoutes extends AnyRoute ? {
43
43
  [TRoute in TRoutes as RouteToByRouter<TRouter, TRoute>]: TRoute;
44
44
  } : never;
@@ -1052,28 +1052,7 @@ class Router {
1052
1052
  }
1053
1053
  };
1054
1054
  try {
1055
- if (route._lazyPromise === void 0) {
1056
- if (route.lazyFn) {
1057
- route._lazyPromise = route.lazyFn().then((lazyRoute) => {
1058
- const { id: _id, ...options2 } = lazyRoute.options;
1059
- Object.assign(route.options, options2);
1060
- });
1061
- } else {
1062
- route._lazyPromise = Promise.resolve();
1063
- }
1064
- }
1065
- if (route._componentsPromise === void 0) {
1066
- route._componentsPromise = route._lazyPromise.then(
1067
- () => Promise.all(
1068
- componentTypes.map(async (type) => {
1069
- const component = route.options[type];
1070
- if (component == null ? void 0 : component.preload) {
1071
- await component.preload();
1072
- }
1073
- })
1074
- )
1075
- );
1076
- }
1055
+ this.loadRouteChunk(route);
1077
1056
  updateMatch(matchId, (prev) => ({
1078
1057
  ...prev,
1079
1058
  isFetching: "loader"
@@ -1258,6 +1237,31 @@ class Router {
1258
1237
  };
1259
1238
  this.clearCache({ filter });
1260
1239
  };
1240
+ this.loadRouteChunk = (route) => {
1241
+ if (route._lazyPromise === void 0) {
1242
+ if (route.lazyFn) {
1243
+ route._lazyPromise = route.lazyFn().then((lazyRoute) => {
1244
+ const { id: _id, ...options2 } = lazyRoute.options;
1245
+ Object.assign(route.options, options2);
1246
+ });
1247
+ } else {
1248
+ route._lazyPromise = Promise.resolve();
1249
+ }
1250
+ }
1251
+ if (route._componentsPromise === void 0) {
1252
+ route._componentsPromise = route._lazyPromise.then(
1253
+ () => Promise.all(
1254
+ componentTypes.map(async (type) => {
1255
+ const component = route.options[type];
1256
+ if (component == null ? void 0 : component.preload) {
1257
+ await component.preload();
1258
+ }
1259
+ })
1260
+ )
1261
+ );
1262
+ }
1263
+ return route._componentsPromise;
1264
+ };
1261
1265
  this.preloadRoute = async (opts) => {
1262
1266
  const next = this.buildLocation(opts);
1263
1267
  let matches = this.matchRoutes(next, {