UNPKG

vike

Version:

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

244 lines (243 loc) 7.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.configDefinitionsBuiltIn = void 0; const utils_js_1 = require("../../utils.js"); const getConfigDefinedAt_js_1 = require("../../../../shared/page-configs/getConfigDefinedAt.js"); const configDefinitionsBuiltIn = { onRenderHtml: { env: { server: true }, }, onRenderClient: { env: { client: true }, }, onHydrationEnd: { env: { client: true }, }, onPageTransitionStart: { env: { client: true }, }, onPageTransitionEnd: { env: { client: true }, }, onCreatePageContext: { env: { server: true, client: true }, cumulative: true, }, onCreateGlobalContext: { env: { server: true, client: true }, global: true, cumulative: true, }, onBeforeRender: { env: { server: true }, }, onBeforePrerenderStart: { env: { server: true, production: true }, }, Page: { env: { server: true, client: true }, }, passToClient: { env: { server: true }, cumulative: true, }, route: { env: { server: true, client: 'if-client-routing', // For vite-plugin-vercel config: true, }, eager: true, }, guard: { env: { server: true, client: 'if-client-routing' }, }, data: { env: { server: true }, }, onData: { env: { server: true, client: true }, cumulative: true, }, iKnowThePerformanceRisksOfAsyncRouteFunctions: { env: { server: true, client: 'if-client-routing' }, eager: true, }, filesystemRoutingRoot: { env: { config: true }, }, client: { // The value of the client config is merely the file path to the client entry file, which is only needed on the sever-side env: { server: true, config: true }, _valueIsFilePath: true, }, clientRouting: { // We could make it { client: false } but we don't yet because of some legacy V0.4 design code env: { server: true, client: true, config: true }, eager: true, }, clientHooks: { env: { config: true }, }, hydrationCanBeAborted: { env: { client: true }, }, prefetch: { env: { client: true }, eager: true, }, // TODO/v1-release: remove prefetchStaticAssets: { env: { client: true }, }, extends: { env: { config: true }, }, meta: { env: { config: true }, }, // Whether the page loads: // - Vike's client runtime // - User's client hooks // In other words, whether the page is "HTML-only" (https://vike.dev/render-modes). HTML-only pages shouldn't load the client runtime nor client hooks. isClientRuntimeLoaded: { env: { server: true, client: true }, eager: true, _computed: (configValueSources) => { { const source = getConfigValueSource(configValueSources, 'clientHooks'); if (source) { (0, utils_js_1.assert)(source.valueIsLoaded); if (source.value !== null) { const { value } = source; const definedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', 'clientHooks', source.definedAt); (0, utils_js_1.assertUsage)(typeof value === 'boolean', `${definedAt} should be a boolean`); return value; } } } return (isConfigSet(configValueSources, 'onRenderClient') && isConfigSet(configValueSources, 'Page') && !!getConfigEnv(configValueSources, 'Page')?.client); }, }, onBeforeRenderEnv: { env: { client: true }, eager: true, _computed: (configValueSources) => !isConfigSet(configValueSources, 'onBeforeRender') ? null : getConfigEnv(configValueSources, 'onBeforeRender'), }, dataEnv: { env: { client: true }, eager: true, _computed: (configValueSources) => !isConfigSet(configValueSources, 'data') ? null : getConfigEnv(configValueSources, 'data'), }, hooksTimeout: { env: { server: true, client: true }, }, cacheControl: { env: { server: true }, }, host: { env: { config: true }, global: true, }, port: { env: { config: true }, global: true, }, mode: { env: { config: true }, global: true, }, injectScriptsAt: { env: { server: true }, }, name: { env: { config: true }, }, require: { env: { config: true }, }, keepScrollPosition: { env: { client: true }, }, middleware: { env: { server: true }, cumulative: true, eager: true, global: true }, onPrerenderStart: { env: { server: true, production: true }, eager: true, global: true, }, onBeforeRoute: { env: { server: true, client: 'if-client-routing' }, eager: true, global: true, }, prerender: { env: { config: true }, global: (value, { isGlobalLocation }) => typeof value === 'object' || isGlobalLocation, cumulative: true, }, vite: { env: { config: true }, global: true, cumulative: true }, disableAutoFullBuild: { env: { config: true }, global: true, }, vite6BuilderApp: { env: { config: true }, global: true, }, includeAssetsImportedByServer: { env: { config: true }, global: true, }, baseAssets: { env: { config: true, server: true }, global: true, }, baseServer: { env: { config: true, server: true }, global: true, }, redirects: { env: { server: true }, global: true, cumulative: true, }, trailingSlash: { env: { server: true }, global: true, }, disableUrlNormalization: { env: { server: true }, global: true, }, }; exports.configDefinitionsBuiltIn = configDefinitionsBuiltIn; function getConfigEnv(configValueSources, configName) { const configValueSource = getConfigValueSource(configValueSources, configName); if (!configValueSource) return null; const { configEnv } = configValueSource; const env = {}; if (configEnv.client) env.client = true; if (configEnv.server) env.server = true; return env; } function isConfigSet(configValueSources, configName) { const source = getConfigValueSource(configValueSources, configName); return (!!source && !(source.valueIsLoaded && // Enable users to suppress inherited config by overriding it with `null` source.value === null)); } function getConfigValueSource(configValueSources, configName) { const sources = configValueSources[configName]; if (!sources) return null; const configValueSource = sources[0]; (0, utils_js_1.assert)(configValueSource); return configValueSource; }