@tanstack/react-router 1.81.4 → 1.81.5

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-router",
3
- "version": "1.81.4",
3
+ "version": "1.81.5",
4
4
  "description": "Modern and scalable routing for React applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
package/src/router.ts CHANGED
@@ -1514,8 +1514,8 @@ export class Router<
1514
1514
  })
1515
1515
 
1516
1516
  let search = fromSearch
1517
- if (opts._includeValidateSearch) {
1518
- let validatedSearch = this.options.search?.strict ? {} : search
1517
+ if (opts._includeValidateSearch && this.options.search?.strict) {
1518
+ let validatedSearch = {}
1519
1519
  matchedRoutesResult?.matchedRoutes.forEach((route) => {
1520
1520
  try {
1521
1521
  if (route.options.validateSearch) {
@@ -1538,10 +1538,10 @@ export class Router<
1538
1538
  const allMiddlewares =
1539
1539
  matchedRoutesResult?.matchedRoutes.reduce(
1540
1540
  (acc, route) => {
1541
- let middlewares: Array<SearchMiddleware<any>> = []
1541
+ const middlewares: Array<SearchMiddleware<any>> = []
1542
1542
  if ('search' in route.options) {
1543
1543
  if (route.options.search?.middlewares) {
1544
- middlewares = route.options.search.middlewares
1544
+ middlewares.push(...route.options.search.middlewares)
1545
1545
  }
1546
1546
  }
1547
1547
  // TODO remove preSearchFilters and postSearchFilters in v2
@@ -1575,7 +1575,25 @@ export class Router<
1575
1575
  }
1576
1576
  return result
1577
1577
  }
1578
- middlewares = [legacyMiddleware]
1578
+ middlewares.push(legacyMiddleware)
1579
+ }
1580
+ if (opts._includeValidateSearch && route.options.validateSearch) {
1581
+ const validate: SearchMiddleware<any> = ({ search, next }) => {
1582
+ try {
1583
+ const result = next(search)
1584
+ const validatedSearch = {
1585
+ ...result,
1586
+ ...(validateSearch(
1587
+ route.options.validateSearch,
1588
+ result,
1589
+ ) ?? {}),
1590
+ }
1591
+ return validatedSearch
1592
+ } catch (e) {
1593
+ // ignore errors here because they are already handled in matchRoutes
1594
+ }
1595
+ }
1596
+ middlewares.push(validate)
1579
1597
  }
1580
1598
  return acc.concat(middlewares)
1581
1599
  },