@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchMiddleware.cjs","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.cjs","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":["deepEqual"],"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,cAAIA,MAAU,UAAA,OAAO,GAAG,GAAG,KAAK,GAAG;AACjC,mBAAO,OAAO,GAAG;AAAA,UACnB;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ;AACO,WAAA;AAAA,EAAA;AAEX;;;"}
|
|
@@ -2,4 +2,4 @@ import { NoInfer, PickOptional } from './utils.cjs';
|
|
|
2
2
|
import { SearchMiddleware } from './route.cjs';
|
|
3
3
|
import { IsRequiredParams } from './link.cjs';
|
|
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>;
|
package/dist/esm/router.js
CHANGED
|
@@ -321,7 +321,24 @@ class Router {
|
|
|
321
321
|
leaveWildcards: false,
|
|
322
322
|
leaveParams: opts.leaveParams
|
|
323
323
|
});
|
|
324
|
-
|
|
324
|
+
let search = fromSearch;
|
|
325
|
+
if (opts._includeValidateSearch) {
|
|
326
|
+
let validatedSearch = ((_f = this.options.search) == null ? void 0 : _f.strict) ? {} : search;
|
|
327
|
+
matchedRoutesResult == null ? void 0 : matchedRoutesResult.matchedRoutes.forEach((route) => {
|
|
328
|
+
try {
|
|
329
|
+
if (route.options.validateSearch) {
|
|
330
|
+
const validator = typeof route.options.validateSearch === "object" ? route.options.validateSearch.parse : route.options.validateSearch;
|
|
331
|
+
validatedSearch = {
|
|
332
|
+
...validatedSearch,
|
|
333
|
+
...validator({ ...validatedSearch, ...search })
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
} catch (e) {
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
search = validatedSearch;
|
|
340
|
+
}
|
|
341
|
+
const applyMiddlewares = (search2) => {
|
|
325
342
|
const allMiddlewares = (stayingMatches == null ? void 0 : stayingMatches.reduce(
|
|
326
343
|
(acc, route) => {
|
|
327
344
|
var _a2;
|
|
@@ -332,14 +349,14 @@ class Router {
|
|
|
332
349
|
}
|
|
333
350
|
} else if (route.options.preSearchFilters || route.options.postSearchFilters) {
|
|
334
351
|
const legacyMiddleware = ({
|
|
335
|
-
search:
|
|
352
|
+
search: search3,
|
|
336
353
|
next
|
|
337
354
|
}) => {
|
|
338
|
-
let nextSearch =
|
|
355
|
+
let nextSearch = search3;
|
|
339
356
|
if ("preSearchFilters" in route.options && route.options.preSearchFilters) {
|
|
340
357
|
nextSearch = route.options.preSearchFilters.reduce(
|
|
341
358
|
(prev, next2) => next2(prev),
|
|
342
|
-
|
|
359
|
+
search3
|
|
343
360
|
);
|
|
344
361
|
}
|
|
345
362
|
const result = next(nextSearch);
|
|
@@ -357,14 +374,14 @@ class Router {
|
|
|
357
374
|
},
|
|
358
375
|
[]
|
|
359
376
|
)) ?? [];
|
|
360
|
-
const final = ({ search:
|
|
377
|
+
const final = ({ search: search3 }) => {
|
|
361
378
|
if (!dest.search) {
|
|
362
379
|
return {};
|
|
363
380
|
}
|
|
364
381
|
if (dest.search === true) {
|
|
365
|
-
return
|
|
382
|
+
return search3;
|
|
366
383
|
}
|
|
367
|
-
return functionalUpdate(dest.search,
|
|
384
|
+
return functionalUpdate(dest.search, search3);
|
|
368
385
|
};
|
|
369
386
|
allMiddlewares.push(final);
|
|
370
387
|
const applyNext = (index, currentSearch) => {
|
|
@@ -377,25 +394,9 @@ class Router {
|
|
|
377
394
|
};
|
|
378
395
|
return middleware({ search: currentSearch, next });
|
|
379
396
|
};
|
|
380
|
-
return applyNext(0,
|
|
397
|
+
return applyNext(0, search2);
|
|
381
398
|
};
|
|
382
|
-
|
|
383
|
-
if (opts._includeValidateSearch) {
|
|
384
|
-
let validatedSearch = ((_f = this.options.search) == null ? void 0 : _f.strict) ? {} : search;
|
|
385
|
-
matchedRoutesResult == null ? void 0 : matchedRoutesResult.matchedRoutes.forEach((route) => {
|
|
386
|
-
try {
|
|
387
|
-
if (route.options.validateSearch) {
|
|
388
|
-
const validator = typeof route.options.validateSearch === "object" ? route.options.validateSearch.parse : route.options.validateSearch;
|
|
389
|
-
validatedSearch = {
|
|
390
|
-
...validatedSearch,
|
|
391
|
-
...validator({ ...validatedSearch, ...search })
|
|
392
|
-
};
|
|
393
|
-
}
|
|
394
|
-
} catch (e) {
|
|
395
|
-
}
|
|
396
|
-
});
|
|
397
|
-
search = validatedSearch;
|
|
398
|
-
}
|
|
399
|
+
search = applyMiddlewares(search);
|
|
399
400
|
search = replaceEqualDeep(fromSearch, search);
|
|
400
401
|
const searchStr = this.options.stringifySearch(search);
|
|
401
402
|
const hash = dest.hash === true ? this.latestLocation.hash : dest.hash ? functionalUpdate(dest.hash, this.latestLocation.hash) : void 0;
|