UNPKG

vike

Version:

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

51 lines (50 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.analyzeExports = analyzeExports; const getExportNames_js_1 = require("./getExportNames.js"); const utils_js_1 = require("../../utils.js"); // TODO/v1-release: remove function analyzeExports({ pageFilesClientSide, pageFilesServerSide, pageId }) { return { isHtmlOnly: isHtmlOnly(), isClientRouting: isClientRouting() }; function isHtmlOnly() { { const hasPageIdIsmrphFile = pageFilesServerSide.some((p) => p.pageId === pageId && p.fileType === '.page'); if (hasPageIdIsmrphFile) { assertClientSideRenderHook(); return false; } } { const hasPageIdServerFile = pageFilesServerSide.some((p) => p.pageId === pageId && p.fileType === '.page.server'); if (!hasPageIdServerFile) { return false; } } { const definesClientRenderer = pageFilesClientSide.some((p) => p.pageId === pageId && p.fileType === '.page.client' && (0, getExportNames_js_1.getExportNames)(p).includes('render')); if (definesClientRenderer) { return false; } } return true; } function assertClientSideRenderHook() { const hasClientSideRenderHook = pageFilesClientSide.some((p) => { return (0, getExportNames_js_1.getExportNames)(p).includes('render'); }); (0, utils_js_1.assertUsage)(hasClientSideRenderHook, [ 'No client-side `render()` hook found.', 'See https://vike.dev/render-modes for more information.', [ 'Loaded client-side page files (none of them `export { render }`):', ...pageFilesClientSide.map((p, i) => ` (${i + 1}): ${p.filePath}`) ].join('\n') ].join(' ')); } function isClientRouting() { const hasClientRoutingExport = pageFilesClientSide.some((p) => { return (0, getExportNames_js_1.getExportNames)(p).includes('clientRouting'); }); return hasClientRoutingExport; } }