astro
Version:
Astro is a modern site builder with web best practices, performance, and DX front-of-mind.
28 lines (27 loc) • 667 B
JavaScript
import { collapseDuplicateSlashes } from "@astrojs/internal-helpers/path";
import { validateAndDecodePathname } from "./pathname.js";
function createNormalizedUrl(requestUrl) {
return normalizeUrl(new URL(requestUrl));
}
function setPathname(url, pathname) {
if (url.pathname !== pathname) {
url.pathname = pathname;
}
}
function normalizeUrl(url) {
try {
setPathname(url, validateAndDecodePathname(url.pathname));
} catch {
try {
setPathname(url, decodeURI(url.pathname));
} catch {
}
}
setPathname(url, collapseDuplicateSlashes(url.pathname));
return url;
}
export {
createNormalizedUrl,
normalizeUrl,
setPathname
};