@tanstack/react-router 1.71.0 → 1.72.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.
- package/dist/cjs/router.cjs +26 -25
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/searchMiddleware.cjs.map +1 -1
- package/dist/cjs/searchMiddleware.d.cts +1 -1
- package/dist/esm/router.js +26 -25
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/searchMiddleware.d.ts +1 -1
- package/dist/esm/searchMiddleware.js.map +1 -1
- package/package.json +1 -1
- package/src/router.ts +25 -23
- package/src/searchMiddleware.ts +3 -2
|
@@ -2,4 +2,4 @@ import { NoInfer, PickOptional } from './utils.js';
|
|
|
2
2
|
import { SearchMiddleware } from './route.js';
|
|
3
3
|
import { IsRequiredParams } from './link.js';
|
|
4
4
|
export declare function retainSearchParams<TSearchSchema extends object>(keys: Array<keyof TSearchSchema> | true): SearchMiddleware<TSearchSchema>;
|
|
5
|
-
export declare function stripSearchParams<TSearchSchema, const TValues = Partial<NoInfer<
|
|
5
|
+
export declare function stripSearchParams<TSearchSchema, TOptionalProps = PickOptional<NoInfer<TSearchSchema>>, const TValues = Partial<NoInfer<TOptionalProps>> | Array<keyof TOptionalProps>, const TInput = IsRequiredParams<TSearchSchema> extends never ? TValues | true : TValues>(input: NoInfer<TInput>): SearchMiddleware<TSearchSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchMiddleware.js","sources":["../../src/searchMiddleware.ts"],"sourcesContent":["import { deepEqual } from './utils'\nimport type { NoInfer, PickOptional } from './utils'\nimport type { SearchMiddleware } from './route'\nimport type { IsRequiredParams } from './link'\n\nexport function retainSearchParams<TSearchSchema extends object>(\n keys: Array<keyof TSearchSchema> | true,\n): SearchMiddleware<TSearchSchema> {\n return ({ search, next }) => {\n const result = next(search)\n if (keys === true) {\n return { ...search, ...result }\n }\n // add missing keys from search to result\n keys.forEach((key) => {\n if (!(key in result)) {\n result[key] = search[key]\n }\n })\n return result\n }\n}\n\nexport function stripSearchParams<\n TSearchSchema,\n const TValues =\n | Partial<NoInfer<
|
|
1
|
+
{"version":3,"file":"searchMiddleware.js","sources":["../../src/searchMiddleware.ts"],"sourcesContent":["import { deepEqual } from './utils'\nimport type { NoInfer, PickOptional } from './utils'\nimport type { SearchMiddleware } from './route'\nimport type { IsRequiredParams } from './link'\n\nexport function retainSearchParams<TSearchSchema extends object>(\n keys: Array<keyof TSearchSchema> | true,\n): SearchMiddleware<TSearchSchema> {\n return ({ search, next }) => {\n const result = next(search)\n if (keys === true) {\n return { ...search, ...result }\n }\n // add missing keys from search to result\n keys.forEach((key) => {\n if (!(key in result)) {\n result[key] = search[key]\n }\n })\n return result\n }\n}\n\nexport function stripSearchParams<\n TSearchSchema,\n TOptionalProps = PickOptional<NoInfer<TSearchSchema>>,\n const TValues =\n | Partial<NoInfer<TOptionalProps>>\n | Array<keyof TOptionalProps>,\n const TInput = IsRequiredParams<TSearchSchema> extends never\n ? TValues | true\n : TValues,\n>(input: NoInfer<TInput>): SearchMiddleware<TSearchSchema> {\n return ({ search, next }) => {\n if (input === true) {\n return {}\n }\n const result = next(search) as Record<string, unknown>\n if (Array.isArray(input)) {\n input.forEach((key) => {\n delete result[key]\n })\n } else {\n Object.entries(input as Record<string, unknown>).forEach(\n ([key, value]) => {\n if (deepEqual(result[key], value)) {\n delete result[key]\n }\n },\n )\n }\n return result as any\n }\n}\n"],"names":[],"mappings":";AAKO,SAAS,mBACd,MACiC;AACjC,SAAO,CAAC,EAAE,QAAQ,WAAW;AACrB,UAAA,SAAS,KAAK,MAAM;AAC1B,QAAI,SAAS,MAAM;AACjB,aAAO,EAAE,GAAG,QAAQ,GAAG;IACzB;AAEK,SAAA,QAAQ,CAAC,QAAQ;AAChB,UAAA,EAAE,OAAO,SAAS;AACb,eAAA,GAAG,IAAI,OAAO,GAAG;AAAA,MAC1B;AAAA,IAAA,CACD;AACM,WAAA;AAAA,EAAA;AAEX;AAEO,SAAS,kBASd,OAAyD;AACzD,SAAO,CAAC,EAAE,QAAQ,WAAW;AAC3B,QAAI,UAAU,MAAM;AAClB,aAAO;IACT;AACM,UAAA,SAAS,KAAK,MAAM;AACtB,QAAA,MAAM,QAAQ,KAAK,GAAG;AAClB,YAAA,QAAQ,CAAC,QAAQ;AACrB,eAAO,OAAO,GAAG;AAAA,MAAA,CAClB;AAAA,IAAA,OACI;AACE,aAAA,QAAQ,KAAgC,EAAE;AAAA,QAC/C,CAAC,CAAC,KAAK,KAAK,MAAM;AAChB,cAAI,UAAU,OAAO,GAAG,GAAG,KAAK,GAAG;AACjC,mBAAO,OAAO,GAAG;AAAA,UACnB;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ;AACO,WAAA;AAAA,EAAA;AAEX;"}
|
package/package.json
CHANGED
package/src/router.ts
CHANGED
|
@@ -1439,7 +1439,29 @@ export class Router<
|
|
|
1439
1439
|
leaveParams: opts.leaveParams,
|
|
1440
1440
|
})
|
|
1441
1441
|
|
|
1442
|
-
|
|
1442
|
+
let search = fromSearch
|
|
1443
|
+
if (opts._includeValidateSearch) {
|
|
1444
|
+
let validatedSearch = this.options.search?.strict ? {} : search
|
|
1445
|
+
matchedRoutesResult?.matchedRoutes.forEach((route) => {
|
|
1446
|
+
try {
|
|
1447
|
+
if (route.options.validateSearch) {
|
|
1448
|
+
const validator =
|
|
1449
|
+
typeof route.options.validateSearch === 'object'
|
|
1450
|
+
? route.options.validateSearch.parse
|
|
1451
|
+
: route.options.validateSearch
|
|
1452
|
+
validatedSearch = {
|
|
1453
|
+
...validatedSearch,
|
|
1454
|
+
...validator({ ...validatedSearch, ...search }),
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
} catch (e) {
|
|
1458
|
+
// ignore errors here because they are already handled in matchRoutes
|
|
1459
|
+
}
|
|
1460
|
+
})
|
|
1461
|
+
search = validatedSearch
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1464
|
+
const applyMiddlewares = (search: any) => {
|
|
1443
1465
|
const allMiddlewares =
|
|
1444
1466
|
stayingMatches?.reduce(
|
|
1445
1467
|
(acc, route) => {
|
|
@@ -1515,31 +1537,11 @@ export class Router<
|
|
|
1515
1537
|
}
|
|
1516
1538
|
|
|
1517
1539
|
// Start applying middlewares
|
|
1518
|
-
return applyNext(0,
|
|
1540
|
+
return applyNext(0, search)
|
|
1519
1541
|
}
|
|
1520
1542
|
|
|
1521
|
-
|
|
1543
|
+
search = applyMiddlewares(search)
|
|
1522
1544
|
|
|
1523
|
-
if (opts._includeValidateSearch) {
|
|
1524
|
-
let validatedSearch = this.options.search?.strict ? {} : search
|
|
1525
|
-
matchedRoutesResult?.matchedRoutes.forEach((route) => {
|
|
1526
|
-
try {
|
|
1527
|
-
if (route.options.validateSearch) {
|
|
1528
|
-
const validator =
|
|
1529
|
-
typeof route.options.validateSearch === 'object'
|
|
1530
|
-
? route.options.validateSearch.parse
|
|
1531
|
-
: route.options.validateSearch
|
|
1532
|
-
validatedSearch = {
|
|
1533
|
-
...validatedSearch,
|
|
1534
|
-
...validator({ ...validatedSearch, ...search }),
|
|
1535
|
-
}
|
|
1536
|
-
}
|
|
1537
|
-
} catch (e) {
|
|
1538
|
-
// ignore errors here because they are already handled in matchRoutes
|
|
1539
|
-
}
|
|
1540
|
-
})
|
|
1541
|
-
search = validatedSearch
|
|
1542
|
-
}
|
|
1543
1545
|
search = replaceEqualDeep(fromSearch, search)
|
|
1544
1546
|
const searchStr = this.options.stringifySearch(search)
|
|
1545
1547
|
|
package/src/searchMiddleware.ts
CHANGED
|
@@ -23,9 +23,10 @@ export function retainSearchParams<TSearchSchema extends object>(
|
|
|
23
23
|
|
|
24
24
|
export function stripSearchParams<
|
|
25
25
|
TSearchSchema,
|
|
26
|
+
TOptionalProps = PickOptional<NoInfer<TSearchSchema>>,
|
|
26
27
|
const TValues =
|
|
27
|
-
| Partial<NoInfer<
|
|
28
|
-
| Array<keyof
|
|
28
|
+
| Partial<NoInfer<TOptionalProps>>
|
|
29
|
+
| Array<keyof TOptionalProps>,
|
|
29
30
|
const TInput = IsRequiredParams<TSearchSchema> extends never
|
|
30
31
|
? TValues | true
|
|
31
32
|
: TValues,
|