UNPKG

vike

Version:

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

66 lines (65 loc) 3.47 kB
"use strict"; 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]; }