/** * Environment Utilities - Single Source of Truth * * This module provides environment utilities that use the unified config * as the single source of truth for all environment variables. * * Use this instead of directly accessing process.env or import.meta.env */ import { getAppConfig, getDatabaseConfig, getAuthConfig, getEmailConfig, getOAuthConfig, getFeatureFlags, getLoggingConfig, getSecurityConfig, unifiedConfig, } from '../config/unified.config'; /** * Get the current environment */ export function getEnvironment(): string { return getAppConfig().environment; } /** * Check if we're running in a browser environment */ export function isBrowser(): boolean { return typeof window !== 'undefined'; } /** * Check if we're running in a Node.js environment */ export function isNode(): boolean { return typeof process !== 'undefined' && Boolean(process.versions?.node); } /** * Check if we're running in a test environment */ export function isTest(): boolean { return getAppConfig().environment === 'test'; } /** * Check if we're running in development */ export function isDevelopment(): boolean { return getAppConfig().environment === 'development'; } /** * Check if we're running in production */ export function isProduction(): boolean { return getAppConfig().environment === 'production'; } /** * Check if we're running in staging */ export function isStaging(): boolean { return getAppConfig().environment === 'staging'; } /** * Get application configuration */ export { getAppConfig }; /** * Get database configuration */ export { getDatabaseConfig }; /** * Get authentication configuration */ export { getAuthConfig }; /** * Get email configuration */ export { getEmailConfig }; /** * Get OAuth configuration */ export { getOAuthConfig }; /** * Get feature flags */ export { getFeatureFlags }; /** * Get logging configuration */ export { getLoggingConfig }; /** * Get security configuration */ export { getSecurityConfig }; /** * Get the full unified configuration * Use this sparingly - prefer the specific getters above */ export function getUnifiedConfig() { return unifiedConfig; } /** * Legacy compatibility - get a specific environment variable * @deprecated Use the unified config getters instead */ export function getEnvVar(key: string, fallback?: string): string | undefined { console.warn( `getEnvVar('${key}') is deprecated. Use unified config instead.` ); // Try to map common environment variables to unified config switch (key) { case 'NODE_ENV': return getAppConfig().environment; case 'APP_NAME': case 'VITE_APP_NAME': return getAppConfig().name; case 'APP_BASE_URL': return getAppConfig().baseUrl; case 'VITE_COUCHDB_URL': case 'COUCHDB_URL': return getDatabaseConfig().url; case 'VITE_COUCHDB_USER': case 'COUCHDB_USER': return getDatabaseConfig().username; case 'VITE_COUCHDB_PASSWORD': case 'COUCHDB_PASSWORD': return getDatabaseConfig().password; case 'JWT_SECRET': return getAuthConfig().jwtSecret; case 'LOG_LEVEL': return getLoggingConfig().level; default: return fallback; } }