62 lines
1.7 KiB
Plaintext
62 lines
1.7 KiB
Plaintext
"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
|