@urltools/modify-url
Version:
modify url based on serializable config
47 lines (46 loc) • 1.55 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
};
Object.defineProperty(exports, "__esModule", { value: true });
var url_1 = require("url");
var modifyPickOmitEntries = function (entries, type, value) {
switch (type) {
case 'pick':
return entries.filter(function (_a) {
var key = _a[0];
return value.includes(key);
});
case 'omit':
return entries.filter(function (_a) {
var key = _a[0];
return !value.includes(key);
});
}
};
var modifyReplaceAppendEntries = function (entries, type, value) {
switch (type) {
case 'replace':
return Object.entries(value);
case 'append':
return __spreadArray(__spreadArray([], entries), Object.entries(value));
}
};
var searchParams = function (url, config) {
var _a = config, type = _a.type, value = _a.value;
var entries = Array.from(new url_1.URLSearchParams(url.search).entries());
switch (type) {
case 'pick':
case 'omit':
entries = modifyPickOmitEntries(entries, type, value);
break;
case 'replace':
case 'append':
entries = modifyReplaceAppendEntries(entries, type, value);
}
url.search = new url_1.URLSearchParams(entries).toString();
return url;
};
exports.default = searchParams;