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(", ")}`);
}
}
|