function requireEnv(name: string): string { const value = process.env[name]; if (!value) { throw new Error(`Missing required environment variable: ${name}`); } return value; } export interface NodeHostConfig { disposableDomain: string; adapters: string[]; smtpPort: number; smtpHost: string; httpPort: number; sqlitePath: string; discordToken: string; discordPublicKey: string; discordApplicationId: string; } export function loadNodeHostConfig(): NodeHostConfig { return { disposableDomain: requireEnv("DISPOSABLE_DOMAIN"), adapters: (process.env.ADAPTERS ?? "discord").split(",").map((s) => s.trim()), smtpPort: Number.parseInt(process.env.SMTP_PORT ?? "25", 10), smtpHost: process.env.SMTP_HOST ?? "0.0.0.0", httpPort: Number.parseInt(process.env.HTTP_PORT ?? "8787", 10), sqlitePath: process.env.SQLITE_PATH ?? "./cinderbox.db", discordToken: requireEnv("DISCORD_TOKEN"), discordPublicKey: requireEnv("DISCORD_PUBLIC_KEY"), discordApplicationId: requireEnv("DISCORD_APPLICATION_ID"), }; }