34 lines · 1.0 KB
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"),
  };
}