48 lines
1.0 KiB
TypeScript
48 lines
1.0 KiB
TypeScript
import dotenv from 'dotenv';
|
|
|
|
dotenv.config();
|
|
|
|
function required(name: string): string {
|
|
const value = process.env[name];
|
|
|
|
if (!value) {
|
|
throw new Error(`Variable d'environnement manquante: ${name}`);
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
function numberFromEnv(name: string, defaultValue: number): number {
|
|
const value = process.env[name];
|
|
|
|
if (!value) {
|
|
return defaultValue;
|
|
}
|
|
|
|
const parsed = Number(value);
|
|
|
|
if (Number.isNaN(parsed)) {
|
|
throw new Error(`Variable d'environnement invalide: ${name}`);
|
|
}
|
|
|
|
return parsed;
|
|
}
|
|
|
|
export const env = {
|
|
port: numberFromEnv('PORT', 3000),
|
|
nodeEnv: process.env.NODE_ENV || 'development',
|
|
frontendUrl: required('FRONTEND_URL'),
|
|
databaseUrl: required('DATABASE_URL'),
|
|
db: {
|
|
server: required('DB_SERVER'),
|
|
port: numberFromEnv('DB_PORT', 1433),
|
|
name: required('DB_NAME'),
|
|
user: required('DB_USER'),
|
|
password: required('DB_PASSWORD'),
|
|
},
|
|
azure: {
|
|
tenantId: required('AZURE_TENANT_ID'),
|
|
clientId: required('AZURE_CLIENT_ID'),
|
|
},
|
|
};
|