UNPKG

vike

Version:

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

54 lines (53 loc) 3.02 kB
export { getVirtualFilePageConfigLazy }; import { assert, getProjectError } from '../../utils.js'; import { getVirtualFileIdPageConfigLazy, isVirtualFileIdPageConfigLazy, } from '../../../shared/virtualFiles/virtualFilePageConfigLazy.js'; import { getVikeConfigInternal } from '../../shared/resolveVikeConfigInternal.js'; import { extractAssetsAddQuery } from '../../../shared/extractAssetsQuery.js'; import { debug } from './debug.js'; import { isRuntimeEnvMatch } from './isRuntimeEnvMatch.js'; import { serializeConfigValues } from '../../../../shared/page-configs/serialize/serializeConfigValues.js'; import { handleAssetsManifest_isFixEnabled } from '../pluginBuild/handleAssetsManifest.js'; import { getConfigValueBuildTime } from '../../../../shared/page-configs/getConfigValueBuildTime.js'; import { resolveIncludeAssetsImportedByServer } from '../../../runtime/renderPage/getPageAssets.js'; async function getVirtualFilePageConfigLazy(id, isDev, config) { const result = isVirtualFileIdPageConfigLazy(id); assert(result); /* This assertion fails when using includeAssetsImportedByServer { const isForClientSide = !config.build.ssr assert(result.isForClientSide === isForClientSide) } */ const { pageId, isForClientSide } = result; const vikeConfig = await getVikeConfigInternal(true); const { _pageConfigs: pageConfigs } = vikeConfig; const pageConfig = pageConfigs.find((pageConfig) => pageConfig.pageId === pageId); if (!isDev) { assert(pageConfig); } else { /* This assertion sometimes fail. It happens very seldom and I couldn't reproduce it (https://gist.github.com/brillout/9e212ce829f4d62a912ca163ffa8881a). I suspect some kind of HMR race condition. assert(pageConfig, { id, pageId }) /*/ if (!pageConfig) throw getProjectError('Outdated request'); //*/ } const code = getLoadConfigLazy(pageConfig, isForClientSide, pageId, resolveIncludeAssetsImportedByServer(vikeConfig.config), config, isDev); debug(id, isForClientSide ? 'CLIENT-SIDE' : 'SERVER-SIDE', code); return code; } function getLoadConfigLazy(pageConfig, isForClientSide, pageId, includeAssetsImportedByServer, config, isDev) { const lines = []; const importStatements = []; const filesEnv = new Map(); const isClientRouting = getConfigValueBuildTime(pageConfig, 'clientRouting', 'boolean')?.value ?? false; lines.push('export const configValuesSerialized = {'); lines.push(...serializeConfigValues(pageConfig, importStatements, filesEnv, (configEnv) => isRuntimeEnvMatch(configEnv, { isForClientSide, isClientRouting, isDev }), '', false)); lines.push('};'); if (!handleAssetsManifest_isFixEnabled(config) && includeAssetsImportedByServer && isForClientSide && !isDev) { importStatements.push(`import '${extractAssetsAddQuery(getVirtualFileIdPageConfigLazy(pageId, false))}'`); } const code = [...importStatements, ...lines].join('\n'); return code; }