UNPKG

vike

Version:

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

46 lines (45 loc) 1.74 kB
export { isViteServerBuild }; export { isViteClientBuild }; export { isViteServerBuild_options }; export { isViteServerBuild_safe }; export { isViteServerBuild_onlySsrEnv }; import { assert } from '../../../utils/assert.js'; function isViteServerBuild(configGlobal, viteEnv) { const configEnv = viteEnv?.config ?? configGlobal; return !!configEnv?.build?.ssr; } // Only `ssr` env: for example don't include `vercel_edge` nor `vercel_node`. function isViteServerBuild_onlySsrEnv(configGlobal, viteEnv) { return viteEnv ? viteEnv.name === 'ssr' : isViteServerBuild(configGlobal); } function isViteClientBuild(configGlobal, viteEnv) { const yes = !isViteServerBuild(configGlobal, viteEnv); const isVite5 = viteEnv === undefined; if (!isVite5) { const yes2 = viteEnv.name === 'client'; assert(yes === yes2); } return yes; } function isViteServerBuild_options(options) { return !!options?.ssr; } // Vite is quite messy about setting `ssr: boolean`, thus we use an extra safe implementation for security purposes. // It's used for .client.js and .server.js guarantee thus we use aggressive assert() calls for added safety. function isViteServerBuild_safe(config, options) { if (config.command === 'build') { assert(typeof config.build.ssr === 'boolean'); const val = config.build.ssr; if (options?.ssr !== undefined) assert(val === options.ssr); return val; } else { assert(typeof options?.ssr === 'boolean'); const val = options.ssr; /* This assert() fails (which is very unexpected). if (typeof config.build.ssr === 'boolean') assert(val === config.build.ssr) //*/ return val; } }