178 lines
4.3 KiB
TypeScript
178 lines
4.3 KiB
TypeScript
/**
|
|
* Simple Configuration Service
|
|
* Centralized access to environment variables with fallbacks
|
|
*/
|
|
|
|
// API Configuration
|
|
export const getApiBaseUrl = (): string => {
|
|
return import.meta.env.VITE_API_BASE_URL || 'http://localhost:8000';
|
|
};
|
|
|
|
export const getApiTimeout = (): number => {
|
|
return parseInt(import.meta.env.VITE_API_TIMEOUT || '10000');
|
|
};
|
|
|
|
// App Configuration
|
|
export const getAppName = (): string => {
|
|
return import.meta.env.VITE_APP_NAME || 'PowerOn';
|
|
};
|
|
|
|
export const getAppVersion = (): string => {
|
|
return import.meta.env.VITE_APP_VERSION || '0.0.0';
|
|
};
|
|
|
|
export const getAppEnvironment = (): string => {
|
|
return import.meta.env.VITE_APP_ENVIRONMENT || 'dev';
|
|
};
|
|
|
|
// Environment Detection
|
|
export const isDevelopment = (): boolean => {
|
|
return import.meta.env.MODE === 'development' || getAppEnvironment() === 'dev';
|
|
};
|
|
|
|
export const isProduction = (): boolean => {
|
|
return import.meta.env.MODE === 'production' || getAppEnvironment() === 'prod';
|
|
};
|
|
|
|
export const isIntegration = (): boolean => {
|
|
return getAppEnvironment() === 'int';
|
|
};
|
|
|
|
// Debug Configuration
|
|
export const isDebugMode = (): boolean => {
|
|
return import.meta.env.VITE_DEBUG === 'true';
|
|
};
|
|
|
|
export const getLogLevel = (): string => {
|
|
return import.meta.env.VITE_LOG_LEVEL || 'info';
|
|
};
|
|
|
|
export const isConsoleLogsEnabled = (): boolean => {
|
|
return import.meta.env.VITE_ENABLE_CONSOLE_LOGS === 'true';
|
|
};
|
|
|
|
// Microsoft Authentication
|
|
export const getMicrosoftClientId = (): string | undefined => {
|
|
return import.meta.env.VITE_MICROSOFT_CLIENT_ID;
|
|
};
|
|
|
|
export const getMicrosoftTenantId = (): string | undefined => {
|
|
return import.meta.env.VITE_MICROSOFT_TENANT_ID;
|
|
};
|
|
|
|
export const getEntraClientSecret = (): string | undefined => {
|
|
return import.meta.env.VITE_ENTRA_CLIENT_SECRET;
|
|
};
|
|
|
|
export const getEntraAuthority = (): string | undefined => {
|
|
return import.meta.env.VITE_ENTRA_AUTHORITY;
|
|
};
|
|
|
|
export const getEntraRedirectPath = (): string | undefined => {
|
|
return import.meta.env.VITE_ENTRA_REDIRECT_PATH;
|
|
};
|
|
|
|
export const getEntraRedirectUri = (): string | undefined => {
|
|
return import.meta.env.VITE_ENTRA_REDIRECT_URI;
|
|
};
|
|
|
|
// Feature Flags (if needed in the future)
|
|
export const isFeatureEnabled = (feature: string): boolean => {
|
|
const envKey = `VITE_ENABLE_${feature.toUpperCase()}`;
|
|
return import.meta.env[envKey] === 'true';
|
|
};
|
|
|
|
// Analytics and Monitoring
|
|
export const isAnalyticsEnabled = (): boolean => {
|
|
return import.meta.env.VITE_ENABLE_ANALYTICS === 'true';
|
|
};
|
|
|
|
export const isErrorReportingEnabled = (): boolean => {
|
|
return import.meta.env.VITE_ENABLE_ERROR_REPORTING === 'true';
|
|
};
|
|
|
|
export const isPerformanceMonitoringEnabled = (): boolean => {
|
|
return import.meta.env.VITE_ENABLE_PERFORMANCE_MONITORING === 'true';
|
|
};
|
|
|
|
// Development Server (for dev environment)
|
|
export const getDevServerPort = (): number => {
|
|
return parseInt(import.meta.env.VITE_DEV_SERVER_PORT || '5176');
|
|
};
|
|
|
|
export const getDevServerHost = (): string => {
|
|
return import.meta.env.VITE_DEV_SERVER_HOST || 'localhost';
|
|
};
|
|
|
|
export const isDevServerHttps = (): boolean => {
|
|
return import.meta.env.VITE_DEV_SERVER_HTTPS === 'true';
|
|
};
|
|
|
|
// Security Configuration
|
|
export const isHttpsEnabled = (): boolean => {
|
|
return import.meta.env.VITE_ENABLE_HTTPS === 'true';
|
|
};
|
|
|
|
export const isCspEnabled = (): boolean => {
|
|
return import.meta.env.VITE_ENABLE_CSP === 'true';
|
|
};
|
|
|
|
// Test Configuration
|
|
export const isMockDataEnabled = (): boolean => {
|
|
return import.meta.env.VITE_ENABLE_MOCK_DATA === 'true';
|
|
};
|
|
|
|
export const isTestMode = (): boolean => {
|
|
return import.meta.env.VITE_ENABLE_TEST_MODE === 'true';
|
|
};
|
|
|
|
// Convenience object for easy destructuring
|
|
export const config = {
|
|
// API
|
|
getApiBaseUrl,
|
|
getApiTimeout,
|
|
|
|
// App
|
|
getAppName,
|
|
getAppVersion,
|
|
getAppEnvironment,
|
|
|
|
// Environment
|
|
isDevelopment,
|
|
isProduction,
|
|
isIntegration,
|
|
|
|
// Debug
|
|
isDebugMode,
|
|
getLogLevel,
|
|
isConsoleLogsEnabled,
|
|
|
|
// Microsoft Auth
|
|
getMicrosoftClientId,
|
|
getMicrosoftTenantId,
|
|
getEntraClientSecret,
|
|
getEntraAuthority,
|
|
getEntraRedirectPath,
|
|
getEntraRedirectUri,
|
|
|
|
// Features
|
|
isFeatureEnabled,
|
|
|
|
// Analytics
|
|
isAnalyticsEnabled,
|
|
isErrorReportingEnabled,
|
|
isPerformanceMonitoringEnabled,
|
|
|
|
// Dev Server
|
|
getDevServerPort,
|
|
getDevServerHost,
|
|
isDevServerHttps,
|
|
|
|
// Security
|
|
isHttpsEnabled,
|
|
isCspEnabled,
|
|
|
|
// Test
|
|
isMockDataEnabled,
|
|
isTestMode,
|
|
};
|