feat: implement unified configuration as single source of truth
- Make unified config lazy-loaded to avoid initialization issues - Replace direct config exports with getter functions - Rewrite utils/env.ts to use unified config instead of scattered access - Add show-config.js helper script for configuration management - Type-safe configuration access throughout the app - Smart defaults for all environments with environment overrides - Eliminates scattered process.env and import.meta.env access
This commit is contained in:
@@ -809,24 +809,33 @@ export function createUnifiedConfigForEnvironment(
|
||||
}
|
||||
|
||||
/**
|
||||
* Singleton configuration instance
|
||||
* Lazy-loaded singleton configuration instance
|
||||
*/
|
||||
export const unifiedConfig = createUnifiedConfig();
|
||||
let _unifiedConfig: UnifiedConfig | null = null;
|
||||
|
||||
export const unifiedConfig: UnifiedConfig = new Proxy({} as UnifiedConfig, {
|
||||
get(target, prop) {
|
||||
if (!_unifiedConfig) {
|
||||
_unifiedConfig = createUnifiedConfig();
|
||||
}
|
||||
return _unifiedConfig[prop as keyof UnifiedConfig];
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* Export specific configuration sections for convenience
|
||||
*/
|
||||
export const appConfig = unifiedConfig.app;
|
||||
export const databaseConfig = unifiedConfig.database;
|
||||
export const containerConfig = unifiedConfig.container;
|
||||
export const kubernetesConfig = unifiedConfig.kubernetes;
|
||||
export const authConfig = unifiedConfig.auth;
|
||||
export const emailConfig = unifiedConfig.email;
|
||||
export const oauthConfig = unifiedConfig.oauth;
|
||||
export const featureFlags = unifiedConfig.features;
|
||||
export const performanceConfig = unifiedConfig.performance;
|
||||
export const loggingConfig = unifiedConfig.logging;
|
||||
export const securityConfig = unifiedConfig.security;
|
||||
export const getAppConfig = () => unifiedConfig.app;
|
||||
export const getDatabaseConfig = () => unifiedConfig.database;
|
||||
export const getContainerConfig = () => unifiedConfig.container;
|
||||
export const getKubernetesConfig = () => unifiedConfig.kubernetes;
|
||||
export const getAuthConfig = () => unifiedConfig.auth;
|
||||
export const getEmailConfig = () => unifiedConfig.email;
|
||||
export const getOAuthConfig = () => unifiedConfig.oauth;
|
||||
export const getFeatureFlags = () => unifiedConfig.features;
|
||||
export const getPerformanceConfig = () => unifiedConfig.performance;
|
||||
export const getLoggingConfig = () => unifiedConfig.logging;
|
||||
export const getSecurityConfig = () => unifiedConfig.security;
|
||||
|
||||
/**
|
||||
* Utility functions
|
||||
|
||||
Reference in New Issue
Block a user