import { echo } from "@atums/echo"; import { validateJWTConfig } from "#lib/validation"; import { cassandraConfig, validateCassandraConfig } from "./database/cassandra"; import { jwt } from "./jwt"; import type { Environment } from "#types/config"; const environment: Environment = { port: Number.parseInt(process.env.PORT || "8080", 10), host: process.env.HOST || "0.0.0.0", development: process.env.NODE_ENV === "development" || process.argv.includes("--dev"), }; function verifyRequiredVariables(): void { const requiredVariables = [ "HOST", "PORT", "REDIS_URL", "REDIS_TTL", "CASSANDRA_HOST", "CASSANDRA_PORT", "CASSANDRA_CONTACT_POINTS", "CASSANDRA_AUTH_ENABLED", "CASSANDRA_DATACENTER", "JWT_SECRET", "JWT_EXPIRATION", "JWT_ISSUER", "FRONTEND_FQDN", ]; let hasError = false; for (const key of requiredVariables) { const value = process.env[key]; if (value === undefined || value.trim() === "") { echo.error(`Missing or empty environment variable: ${key}`); hasError = true; } } const validateCassandra = validateCassandraConfig(cassandraConfig); if (!validateCassandra.isValid) { echo.error("Cassandra configuration validation failed:"); for (const error of validateCassandra.errors) { echo.error(`- ${error}`); } hasError = true; } const validateJWT = validateJWTConfig(jwt); if (!validateJWT.valid) { echo.error("JWT configuration validation failed:"); echo.error(`- ${validateJWT.error}`); hasError = true; } if (hasError) { process.exit(1); } } export { environment, verifyRequiredVariables };