25 lines
1.1 KiB
JavaScript
25 lines
1.1 KiB
JavaScript
import { wellKnownProperties } from '../../shared/lib/utils/reflect-utils';
|
|
const CachedSearchParams = new WeakMap();
|
|
export function makeUntrackedExoticSearchParams(underlyingSearchParams) {
|
|
const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);
|
|
if (cachedSearchParams) {
|
|
return cachedSearchParams;
|
|
}
|
|
// We don't use makeResolvedReactPromise here because searchParams
|
|
// supports copying with spread and we don't want to unnecessarily
|
|
// instrument the promise with spreadable properties of ReactPromise.
|
|
const promise = Promise.resolve(underlyingSearchParams);
|
|
CachedSearchParams.set(underlyingSearchParams, promise);
|
|
Object.keys(underlyingSearchParams).forEach((prop)=>{
|
|
if (wellKnownProperties.has(prop)) {
|
|
// These properties cannot be shadowed because they need to be the
|
|
// true underlying value for Promises to work correctly at runtime
|
|
} else {
|
|
;
|
|
promise[prop] = underlyingSearchParams[prop];
|
|
}
|
|
});
|
|
return promise;
|
|
}
|
|
|
|
//# sourceMappingURL=search-params.browser.prod.js.map
|