config fix
All checks were successful
Deploy Nyla Frontend to Production / deploy (push) Successful in 46s
All checks were successful
Deploy Nyla Frontend to Production / deploy (push) Successful in 46s
This commit is contained in:
parent
3cc2f4decf
commit
0331a59da3
2 changed files with 17 additions and 184 deletions
188
config/config.ts
188
config/config.ts
|
|
@ -1,178 +1,22 @@
|
||||||
/**
|
/**
|
||||||
* Simple Configuration Service
|
* Configuration — reads mandatory env vars set by .env (copied from config/env-*.env by CI).
|
||||||
* Centralized access to environment variables with fallbacks
|
*
|
||||||
|
* NO silent fallbacks for critical values.
|
||||||
|
* If VITE_API_BASE_URL is missing the app fails loudly at startup.
|
||||||
|
*
|
||||||
|
* Vite replaces import.meta.env.VITE_* statically at build time.
|
||||||
|
* Dynamic access via import.meta.env[key] does NOT work in production builds.
|
||||||
|
* Therefore each variable must be accessed with its literal property name.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// API Configuration
|
const _apiBaseUrl: string = import.meta.env.VITE_API_BASE_URL;
|
||||||
export const getApiBaseUrl = (): string => {
|
|
||||||
return import.meta.env.VITE_API_BASE_URL || 'http://localhost:8000';
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getApiTimeout = (): number => {
|
if (!_apiBaseUrl) {
|
||||||
return parseInt(import.meta.env.VITE_API_TIMEOUT || '10000');
|
throw new Error(
|
||||||
};
|
'Missing required env variable: VITE_API_BASE_URL. Ensure .env is present (cp config/env-<env>.env .env).'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// App Configuration
|
export const getApiBaseUrl = (): string => _apiBaseUrl;
|
||||||
export const getAppName = (): string => {
|
|
||||||
return import.meta.env.VITE_APP_NAME || 'PowerOn';
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getAppVersion = (): string => {
|
export const getAppName = (): string => import.meta.env.VITE_APP_NAME || 'PowerOn';
|
||||||
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,
|
|
||||||
};
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1 @@
|
||||||
// Export simple configuration service
|
export { getApiBaseUrl, getAppName } from './config';
|
||||||
export * from './config';
|
|
||||||
|
|
||||||
// Re-export commonly used functions
|
|
||||||
export {
|
|
||||||
getApiBaseUrl,
|
|
||||||
getAppName,
|
|
||||||
isDevelopment,
|
|
||||||
isProduction,
|
|
||||||
isDebugMode,
|
|
||||||
config
|
|
||||||
} from './config';
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue