UNPKG

vike

Version:

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

69 lines (68 loc) 2.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getConfigValueBuildTime = getConfigValueBuildTime; const utils_js_1 = require("../utils.js"); const assertSetup_js_1 = require("../../utils/assertSetup.js"); const getConfigValueTyped_js_1 = require("./getConfigValueTyped.js"); (0, assertSetup_js_1.assertIsNotProductionRuntime)(); function getConfigValueBuildTime(pageConfig, configName, type) { const configValue = getConfigValue(pageConfig, configName); if (!configValue) return null; return (0, getConfigValueTyped_js_1.getConfigValueTyped)(configValue, configName, type); } function getConfigValue(pageConfig, configName) { const { configValueSources, configValuesComputed, configDefinitions } = pageConfig; const configValueComputed = configValuesComputed[configName]; if (configValueComputed) { return { type: 'computed', value: configValueComputed.value, definedAtData: null, }; } const sources = configValueSources[configName]; if (!sources) return null; const configDef = configDefinitions[configName]; (0, utils_js_1.assert)(configDef); if (!configDef.cumulative) { const configValueSource = sources[0]; (0, utils_js_1.assert)(configValueSource); (0, utils_js_1.assert)(configValueSource.valueIsLoaded); return { type: 'standard', value: configValueSource.value, definedAtData: getDefinedAt(configValueSource), }; } else { const { value, definedAtData } = mergeCumulative(sources); (0, utils_js_1.assert)(value.length === definedAtData.length); return { type: 'cumulative', value, definedAtData, }; } } function mergeCumulative(configValueSources) { const value = []; const definedAtData = []; configValueSources.forEach((configValueSource) => { (0, utils_js_1.assert)(configValueSource.configEnv.config === true); (0, utils_js_1.assert)(configValueSource.valueIsLoaded); value.push(configValueSource.value); definedAtData.push(getDefinedAt(configValueSource)); }); return { value, definedAtData }; } function getDefinedAt(configValueSource) { const { definedAt } = configValueSource; if (definedAt.definedBy) return definedAt; return { filePathToShowToUser: definedAt.filePathToShowToUser, fileExportPathToShowToUser: definedAt.fileExportPathToShowToUser, }; }