oapix / src /config.js
woiceatus's picture
init
e43a4a9
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(", ")}`);
}
}