vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
80 lines (71 loc) • 2.67 kB
text/typescript
import { DEFAULT_CONFIG } from "../config/defaults.js";
import { getNodeEnv } from "../config/getNodeEnv.js";
/**
* Standard environment variable keys that should be prefixed
*/
export const ENV_KEYS = {
MODE: "MODE",
DEV: "DEV",
PROD: "PROD",
SSR: "SSR",
BASE_URL: "BASE_URL",
PUBLIC_ORIGIN: "PUBLIC_ORIGIN"
} as const;
export type EnvKey = keyof typeof ENV_KEYS;
/**
* Gets the full environment variable name with the configured prefix
* @param key The environment variable key (e.g., "MODE", "DEV", "BASE_URL")
* @param prefix The environment prefix (defaults to user config or "VITE_")
* @returns The full environment variable name (e.g., "VITE_MODE", "CUSTOM_PREFIX_DEV")
*/
export function getEnvKey(key: EnvKey, prefix?: string): string {
return `${prefix ?? DEFAULT_CONFIG.ENV_PREFIX}${ENV_KEYS[key]}`;
}
/**
* Gets the environment variable value with the configured prefix
* @param key The environment variable key
* @param prefix The environment prefix (optional)
* @returns The environment variable value or undefined
*/
export function getEnvValue(key: EnvKey, prefix: string = DEFAULT_CONFIG.ENV_PREFIX): string | undefined {
const result = process.env[getEnvKey(key, prefix)];
if(result == null && prefix === DEFAULT_CONFIG.ENV_PREFIX) {
if(key === 'MODE') return getNodeEnv();
}
return result;
}
/**
* Sets an environment variable with the configured prefix
* @param key The environment variable key
* @param value The value to set
* @param prefix The environment prefix (optional)
*/
export function setEnvValue(key: EnvKey, value: string, prefix: string = DEFAULT_CONFIG.ENV_PREFIX): void {
process.env[getEnvKey(key, prefix)] = value;
}
/**
* Checks if the SSR environment variable is enabled
* @param prefix The environment prefix (optional)
* @returns true if SSR is enabled, false otherwise
*/
export function isSsrEnabled(prefix: string = DEFAULT_CONFIG.ENV_PREFIX): boolean {
const ssrValue = getEnvValue("SSR", prefix);
return typeof ssrValue === "string"
? ssrValue === "true" || ssrValue === "1"
: Boolean(ssrValue);
}
/**
* Creates an object with all standard environment variable keys for the given prefix
* @param prefix The environment prefix
* @returns Object with all environment variable names
*/
export function getEnvKeys(prefix: string = DEFAULT_CONFIG.ENV_PREFIX): Record<EnvKey, string> {
return {
MODE: getEnvKey("MODE", prefix),
DEV: getEnvKey("DEV", prefix),
PROD: getEnvKey("PROD", prefix),
SSR: getEnvKey("SSR", prefix),
BASE_URL: getEnvKey("BASE_URL", prefix),
PUBLIC_ORIGIN: getEnvKey("PUBLIC_ORIGIN", prefix)
};
}