vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
66 lines (65 loc) • 3.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolvePrerenderConfigGlobal = resolvePrerenderConfigGlobal;
exports.resolvePrerenderConfigLocal = resolvePrerenderConfigLocal;
const utils_js_1 = require("./utils.js");
const getConfigValueBuildTime_js_1 = require("../../shared/page-configs/getConfigValueBuildTime.js");
// When setting +prerender to an object => it also enables pre-rendering
const defaultValueForObject = true;
function resolvePrerenderConfigGlobal(vikeConfig) {
const prerenderConfigs = vikeConfig.config.prerender || [];
const prerenderSettings = prerenderConfigs.filter(isObject2);
const prerenderConfigGlobal = {
partial: pickFirst(prerenderSettings.map((c) => c.partial)) ?? false,
redirects: pickFirst(prerenderSettings.map((c) => c.redirects)) ?? null,
noExtraDir: pickFirst(prerenderSettings.map((c) => c.noExtraDir)) ?? null,
keepDistServer: pickFirst(prerenderSettings.map((c) => c.keepDistServer)) ?? false,
parallel: pickFirst(prerenderSettings.map((c) => c.parallel)) ?? true,
disableAutoRun: pickFirst(prerenderSettings.map((c) => c.disableAutoRun)) ?? false,
};
let defaultLocalValue = false;
{
const valueFirst = prerenderConfigs.filter((p) => !(0, utils_js_1.isObject)(p) || p.enable !== null)[0];
if (valueFirst === true || ((0, utils_js_1.isObject)(valueFirst) && (valueFirst.enable ?? defaultValueForObject))) {
defaultLocalValue = true;
}
}
// TODO/next-major: remove
// Backwards compatibility for `vike({prerender:true})` in vite.config.js
{
const valuesWithDefinedAt = vikeConfig._from.configsCumulative.prerender?.values ?? [];
if (valuesWithDefinedAt.some((v) => v.definedAt.includes('vite.config.js') && v.value)) {
defaultLocalValue = true;
}
}
(0, utils_js_1.objectAssign)(prerenderConfigGlobal, {
defaultLocalValue,
isPrerenderingEnabledForAllPages: vikeConfig._pageConfigs.length > 0 &&
vikeConfig._pageConfigs.every((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
isPrerenderingEnabled: vikeConfig._pageConfigs.length > 0 &&
vikeConfig._pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
});
// TODO/next-major remove
if (vikeConfig._pageConfigs.length === 0 && defaultLocalValue)
prerenderConfigGlobal.isPrerenderingEnabled = true;
return prerenderConfigGlobal;
}
function resolvePrerenderConfigLocal(pageConfig) {
const configValue = (0, getConfigValueBuildTime_js_1.getConfigValueBuildTime)(pageConfig, 'prerender');
if (!configValue)
return null;
const values = configValue.value;
(0, utils_js_1.assert)((0, utils_js_1.isArray)(values));
const value = values[0];
// If it's set to an object in a local config then Vike considers it a global config and it's skipped from local inheritance, thus we can assume the value to be a boolean.
(0, utils_js_1.assert)(typeof value === 'boolean');
(0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue.definedAtData));
const prerenderConfigLocal = { value };
return prerenderConfigLocal;
}
function isObject2(value) {
return typeof value === 'object' && value !== null;
}
function pickFirst(arr) {
return arr.filter((v) => v !== undefined)[0];
}