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