UNPKG

url-modify

Version:

Modify URL instances cleanly and safely. Works in any environment that supports the URL API.

59 lines 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.urlModify = void 0; const urlModify = (modifications, base, { pathBehavior = 'replace', searchBehavior = 'replace' } = {}) => { const url = new URL(base); if (undefined !== modifications.hash) { url.hash = modifications.hash; } if (undefined !== modifications.host) { url.hostname = modifications.host; } if (undefined !== modifications.password) { url.password = modifications.password; } if (undefined !== modifications.path) { switch (pathBehavior) { case 'append': url.pathname += modifications.path; break; case 'prepend': url.pathname = modifications.path + url.pathname.slice(1); break; case 'replace': default: url.pathname = modifications.path; break; } } if (undefined !== modifications.port) { url.port = modifications.port; } if (undefined !== modifications.protocol) { url.protocol = modifications.protocol; } if (undefined !== modifications.search) { const searchParams = new URLSearchParams(modifications.search); if ('clear' === searchBehavior) { url.search = searchParams.toString(); } else { if ('replace' === searchBehavior) { for (const key of searchParams.keys()) { if (url.searchParams.has(key)) { url.searchParams.delete(key); } } } searchParams.forEach((value, key) => { url.searchParams.append(key, value); }); } } if (undefined !== modifications.username) { url.username = modifications.username; } return url; }; exports.urlModify = urlModify; //# sourceMappingURL=urlModify.js.map