vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
40 lines (39 loc) • 1.53 kB
JavaScript
export { getErrorPageId };
export { isErrorPageId };
export { isErrorPage };
// TO-DO/next-major-release: consider loading this file only for Client Routing
import { assert, assertUsage } from '../utils/assert.js';
import { unique } from '../utils/unique.js';
function getErrorPageId(pageFilesAll, pageConfigs) {
if (pageConfigs.length > 0) {
const errorPageConfigs = pageConfigs.filter((p) => p.isErrorPage);
if (errorPageConfigs.length === 0)
return null;
assertUsage(errorPageConfigs.length === 1, 'Only one error page can be defined');
return errorPageConfigs[0].pageId;
}
// TO-DO/next-major-release: remove
const errorPageIds = unique(pageFilesAll.map(({ pageId }) => pageId).filter((pageId) => isErrorPageId(pageId, false)));
assertUsage(errorPageIds.length <= 1, `Only one _error.page.js is allowed, but found several: ${errorPageIds.join(' ')}`);
if (errorPageIds.length > 0) {
const errorPageId = errorPageIds[0];
assert(errorPageId);
return errorPageId;
}
return null;
}
// TO-DO/next-major-release: remove
function isErrorPageId(pageId, _isV1Design) {
assert(!pageId.includes('\\'));
return pageId.includes('/_error');
}
function isErrorPage(pageId, pageConfigs) {
if (pageConfigs.length > 0) {
const pageConfig = pageConfigs.find((p) => p.pageId === pageId);
assert(pageConfig);
return !!pageConfig.isErrorPage;
}
else {
return isErrorPageId(pageId, false);
}
}