vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
55 lines (54 loc) • 3.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getVirtualFilePageConfigsEager = getVirtualFilePageConfigsEager;
const virtualFilePageConfigLazy_js_1 = require("../../../shared/virtualFiles/virtualFilePageConfigLazy.js");
const debug_js_1 = require("./debug.js");
const resolveVikeConfigInternal_js_1 = require("../../shared/resolveVikeConfigInternal.js");
const isRuntimeEnvMatch_js_1 = require("./isRuntimeEnvMatch.js");
const serializeConfigValues_js_1 = require("../../../../shared/page-configs/serialize/serializeConfigValues.js");
async function getVirtualFilePageConfigsEager(isForClientSide, isDev, id, isClientRouting) {
const vikeConfig = await (0, resolveVikeConfigInternal_js_1.getVikeConfigInternal)(true);
const { _pageConfigs: pageConfigs, _pageConfigGlobal: pageConfigGlobal } = vikeConfig;
return getCode(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, isClientRouting);
}
function getCode(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, isClientRouting) {
const lines = [];
const importStatements = [];
const filesEnv = new Map();
lines.push('export const pageConfigsSerialized = [');
lines.push(getCodePageConfigsSerialized(pageConfigs, isForClientSide, isClientRouting, isDev, importStatements, filesEnv));
lines.push('];');
lines.push('export const pageConfigGlobalSerialized = {');
lines.push(getCodePageConfigGlobalSerialized(pageConfigGlobal, isForClientSide, isClientRouting, isDev, importStatements, filesEnv));
lines.push('};');
const code = [...importStatements, ...lines].join('\n');
(0, debug_js_1.debug)(id, isForClientSide ? 'CLIENT-SIDE' : 'SERVER-SIDE', code);
return code;
}
function getCodePageConfigsSerialized(pageConfigs, isForClientSide, isClientRouting, isDev, importStatements, filesEnv) {
const lines = [];
pageConfigs.forEach((pageConfig) => {
const { pageId, routeFilesystem, isErrorPage } = pageConfig;
lines.push(` {`);
lines.push(` pageId: ${JSON.stringify(pageId)},`);
lines.push(` isErrorPage: ${JSON.stringify(isErrorPage)},`);
lines.push(` routeFilesystem: ${JSON.stringify(routeFilesystem)},`);
const virtualFileId = JSON.stringify((0, virtualFilePageConfigLazy_js_1.getVirtualFileIdPageConfigLazy)(pageId, isForClientSide));
const load = `() => ({ moduleId: ${virtualFileId}, moduleExports: import(${virtualFileId}) })`;
lines.push(` loadConfigLazy: ${load},`);
lines.push(` configValuesSerialized: {`);
lines.push(...(0, serializeConfigValues_js_1.serializeConfigValues)(pageConfig, importStatements, filesEnv, (configEnv) => (0, isRuntimeEnvMatch_js_1.isRuntimeEnvMatch)(configEnv, { isForClientSide, isClientRouting, isDev }), ' ', true));
lines.push(` },`);
lines.push(` },`);
});
const code = lines.join('\n');
return code;
}
function getCodePageConfigGlobalSerialized(pageConfigGlobal, isForClientSide, isClientRouting, isDev, importStatements, filesEnv) {
const lines = [];
lines.push(` configValuesSerialized: {`);
lines.push(...(0, serializeConfigValues_js_1.serializeConfigValues)(pageConfigGlobal, importStatements, filesEnv, (configEnv) => (0, isRuntimeEnvMatch_js_1.isRuntimeEnvMatch)(configEnv, { isForClientSide, isClientRouting, isDev }), ' ', null));
lines.push(` },`);
const code = lines.join('\n');
return code;
}