File size: 1,107 Bytes
e43a4a9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import dotenv from "dotenv";

dotenv.config();

function numberFromEnv(env, key, fallback) {
  const value = env[key];
  if (value === undefined || value === "") {
    return fallback;
  }

  const parsed = Number(value);
  return Number.isFinite(parsed) ? parsed : fallback;
}

export function loadConfig(env = process.env) {
  return {
    openAiApiKey: env.OPENAI_API_KEY ?? "",
    openAiBaseUrl: (env.OPENAI_BASE_URL ?? "https://api.openai.com/v1").replace(/\/+$/, ""),
    port: numberFromEnv(env, "PORT", 3000),
    mediaTtlSeconds: numberFromEnv(env, "MEDIA_TTL_SECONDS", 3600),
    requestTimeoutMs: numberFromEnv(env, "REQUEST_TIMEOUT_MS", 60000),
    jsonLimit: env.JSON_LIMIT ?? "50mb",
    maxAudioDownloadMb: numberFromEnv(env, "MAX_AUDIO_DOWNLOAD_MB", 25)
  };
}

export function validateConfig(config) {
  const missing = [];

  if (!config.openAiApiKey) {
    missing.push("OPENAI_API_KEY");
  }

  if (!config.openAiBaseUrl) {
    missing.push("OPENAI_BASE_URL");
  }

  if (missing.length > 0) {
    throw new Error(`Missing required environment variables: ${missing.join(", ")}`);
  }
}