import path from "node:path"; export interface AppConfig { basePath: string; baseUrl: string; port: number; dataDir: string; htmlDir: string; screenshotDir: string; cacheDir: string; dbPath: string; adminToken: string; captureTimeoutMs: number; maxScreenshotHeight: number; } function intEnv(name: string, fallback: number): number { const raw = process.env[name]; if (!raw) return fallback; const parsed = Number.parseInt(raw, 10); return Number.isFinite(parsed) ? parsed : fallback; } const dataDir = process.env.AISHARE_DATA_DIR || path.resolve("data"); export const config: AppConfig = { basePath: "/aishare", baseUrl: (process.env.AISHARE_BASE_URL || "http://127.0.0.1:8088/aishare").replace(/\/$/, ""), port: intEnv("AISHARE_PORT", 8080), dataDir, htmlDir: path.join(dataDir, "html"), screenshotDir: path.join(dataDir, "screenshots"), cacheDir: path.join(dataDir, "cache"), dbPath: path.join(dataDir, "aishare.db"), adminToken: process.env.AISHARE_ADMIN_TOKEN || "", captureTimeoutMs: intEnv("AISHARE_CAPTURE_TIMEOUT_MS", 180_000), maxScreenshotHeight: intEnv("AISHARE_MAX_SCREENSHOT_HEIGHT", 60_000) };