UNPKG

vike

Version:

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

45 lines (44 loc) 2.63 kB
export { getVirtualFilePageConfigValuesAll }; import { assert } from '../../../../utils.js'; import { getVirtualFileIdPageConfigValuesAll, isVirtualFileIdPageConfigValuesAll } from '../../../../../shared/virtual-files/virtualFilePageConfigValuesAll.js'; import { getVikeConfig } from '../getVikeConfig.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 '../../../build/handleAssetsManifest.js'; import { getConfigValueBuildTime } from '../../../../../../shared/page-configs/getConfigValueBuildTime.js'; async function getVirtualFilePageConfigValuesAll(id, isDev, config) { const result = isVirtualFileIdPageConfigValuesAll(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 getVikeConfig(config, { doNotRestartViteOnError: true }); const { pageConfigs } = vikeConfig; const pageConfig = pageConfigs.find((pageConfig) => pageConfig.pageId === pageId); assert(pageConfig, { id, pageId }); const code = getLoadConfigValuesAll(pageConfig, isForClientSide, pageId, // TODO/now: add meta.default vikeConfig.global.config.includeAssetsImportedByServer ?? true, config, isDev); debug(id, isForClientSide ? 'CLIENT-SIDE' : 'SERVER-SIDE', code); return code; } function getLoadConfigValuesAll(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(getVirtualFileIdPageConfigValuesAll(pageId, false))}'`); } const code = [...importStatements, ...lines].join('\n'); return code; }