@paroicms/server
Version:
The ParoiCMS server
24 lines • 999 B
JavaScript
export function normalizeUrlForCache(logger, url) {
try {
const cleanedUrl = url.replace(/\/\/+/g, "/");
const isRelative = !URL.canParse(cleanedUrl);
const parsedUrl = new URL(cleanedUrl, isRelative ? "http://foo.bar" : undefined);
const params = new URLSearchParams(parsedUrl.search);
const paramEntries = [];
params.forEach((value, key) => {
paramEntries.push([key, value]);
});
paramEntries.sort(([keyA], [keyB]) => keyA.localeCompare(keyB));
const sortedParams = new URLSearchParams();
paramEntries.forEach(([key, value]) => {
sortedParams.append(key, value);
});
parsedUrl.search = sortedParams.toString();
return isRelative ? `${parsedUrl.pathname}${parsedUrl.search}` : parsedUrl.toString();
}
catch (error) {
logger.warn(`Failed to normalize URL '${url}' for cache`, error);
return url;
}
}
//# sourceMappingURL=url-helpers.js.map