import { bool, cleanEnv, num, port, str } from 'envalid'; import { USER_ROLES } from '#shared/domain/models/authorizer-user.entity'; import { ensureEnvString } from './env-validators'; export const env = cleanEnv(process.env, { ENVIRONMENT: str({ choices: ['local', 'development', 'production'] }), USE_IN_MEMORY_REPOSITORIES: bool(), ALERTS_API_PORT: port(), COMPANIES_COMMAND_URL: ensureEnvString(), DEVICES_COMMAND_URL: ensureEnvString(), USERS_COMMAND_URL: ensureEnvString(), REDIS_PASSWORD: ensureEnvString(), REDIS_PORT: port(), REDIS_HOST: ensureEnvString(), POSTGRES_USER: ensureEnvString(), POSTGRES_PASSWORD: ensureEnvString(), POSTGRES_PORT: port(), POSTGRES_HOST: ensureEnvString(), POSTGRES_DATABASE: ensureEnvString(), RABBITMQ_HOST: ensureEnvString(), RABBITMQ_USER: ensureEnvString(), RABBITMQ_PASSWORD: ensureEnvString(), RABBITMQ_EXCHANGE: ensureEnvString(), RABBITMQ_PORT: port(), RABBITMQ_MODULENAME: ensureEnvString(), RABBITMQ_TTL: port(), RABBITMQ_SECURE: bool(), RABBITMQ_RETRY_INTERVAL: num(), SYSTEM_USER_ID: ensureEnvString(), SYSTEM_USER_EMAIL: ensureEnvString(), SYSTEM_USER_ROLE: str({ choices: [ USER_ROLES.ADMIN, USER_ROLES.CLIENT, USER_ROLES.DELEGATION_MANAGER, USER_ROLES.OPERATOR, USER_ROLES.ROOM_STAFF ], default: USER_ROLES.ADMIN }) });