UNPKG

vike

Version:

The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.

43 lines (42 loc) 1.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.modifyUrlSameOrigin = modifyUrlSameOrigin; const utils_js_1 = require("./utils.js"); function modifyUrlSameOrigin(url, modify) { const urlParsed = (0, utils_js_1.parseUrl)(url, '/'); // Pathname const pathname = modify.pathname ?? urlParsed.pathnameOriginal; (0, utils_js_1.assertUsageUrlPathnameAbsolute)(pathname, 'modify.pathname'); // Search let search = modify.search === null ? '' : !modify.search ? urlParsed.searchOriginal : resolveSearch(urlParsed, modify.search); if (search === '?') search = ''; // Hash let hash; if (modify.hash === null) { hash = ''; } else if (modify.hash === undefined) { hash = urlParsed.hashOriginal ?? ''; } else { hash = modify.hash; if (!hash.startsWith('#')) hash = '#' + hash; } const urlModified = (0, utils_js_1.createUrlFromComponents)(urlParsed.origin, pathname, search, hash); return urlModified; } function resolveSearch(urlParsed, search) { let searchParams; if (search instanceof URLSearchParams) { // Overwrite searchParams = search; } else { // Merge const searchMap = (0, utils_js_1.objectFilter)({ ...urlParsed.search, ...search }, (utils_js_1.isNotNullish_keyVal)); searchParams = new URLSearchParams(searchMap); } return '?' + searchParams.toString(); }