"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const qss = require("./qss.cjs"); 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 = qss.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 = qss.encode(search).toString(); return searchStr ? `?${searchStr}` : ""; }; } exports.defaultParseSearch = defaultParseSearch; exports.defaultStringifySearch = defaultStringifySearch; exports.parseSearchWith = parseSearchWith; exports.stringifySearchWith = stringifySearchWith; //# sourceMappingURL=searchParams.cjs.map