UNPKG

vike

Version:

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

56 lines (55 loc) 2.11 kB
// TO-DO/next-major-release: remove export { getPageFileObject }; import { determinePageIdOld } from '../determinePageIdOld.js'; import { isErrorPageId } from '../error-page.js'; import { assert } from '../../utils/assert.js'; import { slice } from '../../utils/slice.js'; import { determineFileType } from './fileTypes.js'; function getPageFileObject(filePath) { const isRelevant = (pageId) => pageFile.pageId === pageId || (pageFile.isDefaultPageFile && (isRendererFilePath(pageFile.filePath) || isAncestorDefaultPage(pageId, pageFile.filePath))); const fileType = determineFileType(filePath); const isEnv = (env) => { assert(fileType !== '.page.route'); // We can't determine `.page.route.js` if (env === 'CLIENT_ONLY') { return fileType === '.page.client' || fileType === '.css'; } if (env === 'SERVER_ONLY') { return fileType === '.page.server'; } if (env === 'CLIENT_AND_SERVER') { return fileType === '.page'; } assert(false); }; const pageFile = { filePath, fileType, isEnv, isRelevant, isDefaultPageFile: isDefaultFilePath(filePath), isRendererPageFile: fileType !== '.css' && isDefaultFilePath(filePath) && isRendererFilePath(filePath), isErrorPageFile: isErrorPageId(filePath, false), pageId: determinePageIdOld(filePath), }; return pageFile; } function isDefaultFilePath(filePath) { if (isErrorPageId(filePath, false)) { return false; } return filePath.includes('/_default'); } function isRendererFilePath(filePath) { return filePath.includes('/renderer/'); } function isAncestorDefaultPage(pageId, defaultPageFilePath) { assert(!pageId.endsWith('/')); assert(!defaultPageFilePath.endsWith('/')); assert(isDefaultFilePath(defaultPageFilePath)); const defaultPageDir = slice(defaultPageFilePath.split('/'), 0, -1) .filter((filePathSegment) => filePathSegment !== '_default') .join('/'); return pageId.startsWith(defaultPageDir); }