Files
flow-nano-bananao/src/config.ts

52 lines
1.1 KiB
TypeScript

export type Config = {
apiKey: string;
baseURL: string;
model: string;
};
const DEFAULT_MODEL = "gemini-3.0-pro-image-landscape";
function getRequiredEnv(primaryName: string, fallbackName?: string): string {
const primaryValue = Bun.env[primaryName]?.trim();
if (primaryValue) {
return primaryValue;
}
if (fallbackName) {
const fallbackValue = Bun.env[fallbackName]?.trim();
if (fallbackValue) {
return fallbackValue;
}
}
throw new Error(
`Missing required environment variable: ${primaryName}${fallbackName ? ` (or ${fallbackName})` : ""}`,
);
}
export function normalizeBaseUrl(baseURL: string): string {
const url = new URL(baseURL);
if (url.pathname === "" || url.pathname === "/") {
url.pathname = "/v1";
}
return url.toString().replace(/\/$/, "");
}
export function loadConfig(): Config {
return {
apiKey: getRequiredEnv("FLOW2API_API_KEY", "OPENAI_API_KEY"),
baseURL: normalizeBaseUrl(
getRequiredEnv("FLOW2API_BASE_URL", "OPENAI_BASE_URL"),
),
model:
Bun.env.FLOW2API_MODEL?.trim() ||
Bun.env.GEMINI_MODEL?.trim() ||
Bun.env.OPENAI_MODEL?.trim() ||
DEFAULT_MODEL,
};
}