@tanstack/router-core 1.171.8 → 1.171.10

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.
@@ -1104,62 +1104,59 @@ function applySearchMiddleware({ search, dest, destRoutes, _includeValidateSearc
1104
1104
  return buildMiddlewareChain(destRoutes)(search, dest, _includeValidateSearch ?? false);
1105
1105
  }
1106
1106
  function buildMiddlewareChain(destRoutes) {
1107
- const context = {
1108
- dest: null,
1109
- _includeValidateSearch: false,
1110
- middlewares: []
1111
- };
1107
+ let dest;
1108
+ let includeValidateSearch;
1109
+ const middlewares = [];
1112
1110
  for (const route of destRoutes) {
1113
- if ("search" in route.options) {
1114
- if (route.options.search?.middlewares) context.middlewares.push(...route.options.search.middlewares);
1115
- } else if (route.options.preSearchFilters || route.options.postSearchFilters) {
1111
+ const routeOptions = route.options;
1112
+ if ("search" in routeOptions) {
1113
+ if (routeOptions.search?.middlewares) middlewares.push(...routeOptions.search.middlewares);
1114
+ } else if (routeOptions.preSearchFilters || routeOptions.postSearchFilters) {
1116
1115
  const legacyMiddleware = ({ search, next }) => {
1117
- let nextSearch = search;
1118
- if ("preSearchFilters" in route.options && route.options.preSearchFilters) nextSearch = route.options.preSearchFilters.reduce((prev, next) => next(prev), search);
1119
- const result = next(nextSearch);
1120
- if ("postSearchFilters" in route.options && route.options.postSearchFilters) return route.options.postSearchFilters.reduce((prev, next) => next(prev), result);
1121
- return result;
1116
+ const result = next(routeOptions.preSearchFilters ? routeOptions.preSearchFilters.reduce((prev, next) => next(prev), search) : search);
1117
+ return routeOptions.postSearchFilters ? routeOptions.postSearchFilters.reduce((prev, next) => next(prev), result) : result;
1122
1118
  };
1123
- context.middlewares.push(legacyMiddleware);
1119
+ middlewares.push(legacyMiddleware);
1124
1120
  }
1125
- if (route.options.validateSearch) {
1126
- const validate = ({ search, next }) => {
1121
+ const routeValidateSearch = routeOptions.validateSearch;
1122
+ if (routeValidateSearch) {
1123
+ const validate = ({ search, next }, validations) => {
1127
1124
  const result = next(search);
1128
- if (!context._includeValidateSearch) return result;
1129
- try {
1125
+ if (includeValidateSearch) try {
1126
+ const validated = validateSearch(routeValidateSearch, result);
1127
+ if (validations && validated) validations.push(result, validated);
1130
1128
  return {
1131
1129
  ...result,
1132
- ...validateSearch(route.options.validateSearch, result) ?? void 0
1130
+ ...validated
1133
1131
  };
1134
- } catch {
1135
- return result;
1136
- }
1132
+ } catch {}
1133
+ return result;
1137
1134
  };
1138
- context.middlewares.push(validate);
1135
+ middlewares.push(validate);
1139
1136
  }
1140
1137
  }
1141
- const final = ({ search }) => {
1142
- const dest = context.dest;
1143
- if (!dest.search) return {};
1144
- if (dest.search === true) return search;
1145
- return functionalUpdate(dest.search, search);
1146
- };
1147
- context.middlewares.push(final);
1148
- const applyNext = (index, currentSearch, middlewares) => {
1149
- if (index >= middlewares.length) return currentSearch;
1150
- const middleware = middlewares[index];
1151
- const next = (newSearch) => {
1152
- return applyNext(index + 1, newSearch, middlewares);
1138
+ const applyNext = (index, currentSearch, validations) => {
1139
+ if (index >= middlewares.length) {
1140
+ if (!dest.search) return {};
1141
+ if (dest.search === true) return currentSearch;
1142
+ return functionalUpdate(dest.search, currentSearch);
1143
+ }
1144
+ const next = (newSearch, collectValidations) => {
1145
+ if (collectValidations) {
1146
+ const nextValidations = [];
1147
+ return [applyNext(index + 1, newSearch, nextValidations), nextValidations];
1148
+ }
1149
+ return applyNext(index + 1, newSearch, validations);
1153
1150
  };
1154
- return middleware({
1151
+ return middlewares[index]({
1155
1152
  search: currentSearch,
1156
1153
  next
1157
- });
1154
+ }, validations);
1158
1155
  };
1159
- return function middleware(search, dest, _includeValidateSearch) {
1160
- context.dest = dest;
1161
- context._includeValidateSearch = _includeValidateSearch;
1162
- return applyNext(0, search, context.middlewares);
1156
+ return function middleware(search, nextDest, _includeValidateSearch) {
1157
+ dest = nextDest;
1158
+ includeValidateSearch = _includeValidateSearch;
1159
+ return applyNext(0, search);
1163
1160
  };
1164
1161
  }
1165
1162
  function findGlobalNotFoundRouteId(notFoundMode, routes) {