UNPKG

vike

Version:

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

40 lines (39 loc) 1.53 kB
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); } }