vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
33 lines (32 loc) • 2.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handlePageContextRequestUrl = handlePageContextRequestUrl;
const getPageContextRequestUrl_js_1 = require("../../../shared/getPageContextRequestUrl.js");
const utils_js_1 = require("../utils.js");
// See also shared/getPageContextRequestUrl.ts
function handlePageContextRequestUrl(url) {
if (!hasSuffix(url)) {
return { urlWithoutPageContextRequestSuffix: url, isPageContextRequest: false };
}
return { urlWithoutPageContextRequestSuffix: removePageContextUrlSuffix(url), isPageContextRequest: true };
}
function hasSuffix(url) {
const { pathnameOriginal, pathname } = (0, utils_js_1.parseUrl)(url, utils_js_1.baseServer);
(0, utils_js_1.assert)(pathnameOriginal.endsWith(getPageContextRequestUrl_js_1.pageContextJsonFileExtension) === pathname.endsWith(getPageContextRequestUrl_js_1.pageContextJsonFileExtension), {
url,
});
return pathnameOriginal.endsWith(getPageContextRequestUrl_js_1.pageContextJsonFileExtension);
}
function removePageContextUrlSuffix(url) {
const urlParsed = (0, utils_js_1.parseUrl)(url, utils_js_1.baseServer);
// We cannot use `urlParsed.pathname` because it would break the `urlParsed.pathnameOriginal` value of subsequent `parseUrl()` calls.
const { origin, pathnameOriginal, searchOriginal, hashOriginal } = urlParsed;
(0, utils_js_1.assert)(getPageContextRequestUrl_js_1.doNotCreateExtraDirectory === false);
const urlSuffix = `/index${getPageContextRequestUrl_js_1.pageContextJsonFileExtension}`;
(0, utils_js_1.assert)(pathnameOriginal.endsWith(urlSuffix), { url });
let pathnameModified = (0, utils_js_1.slice)(pathnameOriginal, 0, -1 * urlSuffix.length);
if (pathnameModified === '')
pathnameModified = '/';
(0, utils_js_1.assert)(url === `${origin || ''}${pathnameOriginal}${searchOriginal || ''}${hashOriginal || ''}`, { url });
return `${origin || ''}${pathnameModified}${searchOriginal || ''}${hashOriginal || ''}`;
}