69 lines
1.6 KiB
TypeScript
69 lines
1.6 KiB
TypeScript
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 };
|