import { resolve } from "node:path"; import { logger } from "@creations.works/logger"; 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"), }; const redisTtl: number = process.env.REDIS_TTL ? Number.parseInt(process.env.REDIS_TTL, 10) : 60 * 60 * 1; // 1 hour const lanyardConfig: LanyardConfig = { userId: process.env.LANYARD_USER_ID || "", instance: process.env.LANYARD_INSTANCE || "", }; const reviewDb = { enabled: process.env.REVIEW_DB === "true" || process.env.REVIEW_DB === "1", url: "https://manti.vendicated.dev/api/reviewdb", }; const badgeApi: string | null = process.env.BADGE_API_URL || null; const steamGridDbKey: string | undefined = process.env.STEAMGRIDDB_API_KEY; const plausibleScript: string | null = process.env.PLAUSIBLE_SCRIPT_HTML?.trim() || null; const robotstxtPath: string | null = process.env.ROBOTS_FILE ? resolve(process.env.ROBOTS_FILE) : null; function verifyRequiredVariables(): void { const requiredVariables = [ "HOST", "PORT", "LANYARD_USER_ID", "LANYARD_INSTANCE", ]; let hasError = false; for (const key of requiredVariables) { const value = process.env[key]; if (value === undefined || value.trim() === "") { logger.error(`Missing or empty environment variable: ${key}`); hasError = true; } } if (hasError) { process.exit(1); } } export { environment, lanyardConfig, redisTtl, reviewDb, badgeApi, steamGridDbKey, plausibleScript, robotstxtPath, verifyRequiredVariables, };