vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
69 lines (68 loc) • 2.57 kB
JavaScript
;
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,
};
}