import { decode, encode } from "./qss.js"; const defaultParseSearch = parseSearchWith(JSON.parse); const defaultStringifySearch = stringifySearchWith( JSON.stringify, JSON.parse ); function parseSearchWith(parser) { return (searchStr) => { if (searchStr.substring(0, 1) === "?") { searchStr = searchStr.substring(1); } const query = decode(searchStr); for (const key in query) { const value = query[key]; if (typeof value === "string") { try { query[key] = parser(value); } catch (err) { } } } return query; }; } function stringifySearchWith(stringify, parser) { function stringifyValue(val) { if (typeof val === "object" && val !== null) { try { return stringify(val); } catch (err) { } } else if (typeof val === "string" && typeof parser === "function") { try { parser(val); return stringify(val); } catch (err) { } } return val; } return (search) => { search = { ...search }; Object.keys(search).forEach((key) => { const val = search[key]; if (typeof val === "undefined" || val === void 0) { delete search[key]; } else { search[key] = stringifyValue(val); } }); const searchStr = encode(search).toString(); return searchStr ? `?${searchStr}` : ""; }; } export { defaultParseSearch, defaultStringifySearch, parseSearchWith, stringifySearchWith }; //# sourceMappingURL=searchParams.js.map