@tanstack/router-core 1.171.9 → 1.171.11

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,65 @@ 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, meta }) => {
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 (meta && validated) {
1128
+ for (const key in validated) if (!(key in result)) (meta.defaulted ||= /* @__PURE__ */ new Map()).set(key, validated[key]);
1129
+ }
1130
1130
  return {
1131
1131
  ...result,
1132
- ...validateSearch(route.options.validateSearch, result) ?? void 0
1132
+ ...validated
1133
1133
  };
1134
- } catch {
1135
- return result;
1136
- }
1134
+ } catch {}
1135
+ return result;
1137
1136
  };
1138
- context.middlewares.push(validate);
1137
+ middlewares.push(validate);
1139
1138
  }
1140
1139
  }
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);
1140
+ const applyNext = (index, currentSearch, meta) => {
1141
+ if (index >= middlewares.length) {
1142
+ if (!dest.search) return {};
1143
+ if (dest.search === true) return currentSearch;
1144
+ return functionalUpdate(dest.search, currentSearch);
1145
+ }
1146
+ const next = (newSearch, collectMeta) => {
1147
+ if (collectMeta) {
1148
+ const nextMeta = meta || {};
1149
+ return {
1150
+ search: applyNext(index + 1, newSearch, nextMeta),
1151
+ meta: nextMeta
1152
+ };
1153
+ }
1154
+ return applyNext(index + 1, newSearch, meta);
1153
1155
  };
1154
- return middleware({
1156
+ return middlewares[index]({
1155
1157
  search: currentSearch,
1156
- next
1158
+ next,
1159
+ meta
1157
1160
  });
1158
1161
  };
1159
- return function middleware(search, dest, _includeValidateSearch) {
1160
- context.dest = dest;
1161
- context._includeValidateSearch = _includeValidateSearch;
1162
- return applyNext(0, search, context.middlewares);
1162
+ return function middleware(search, nextDest, _includeValidateSearch) {
1163
+ dest = nextDest;
1164
+ includeValidateSearch = _includeValidateSearch;
1165
+ return applyNext(0, search);
1163
1166
  };
1164
1167
  }
1165
1168
  function findGlobalNotFoundRouteId(notFoundMode, routes) {