import { Config } from '../types/index.js'; import path from 'path'; import { config as dotenvConfig } from 'dotenv'; import { fileURLToPath } from 'url'; import { dirname } from 'path'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // Load .env file from root directory dotenvConfig({ path: path.join(__dirname, '../../../.env') }); export const config: Config = { port: parseInt(process.env.PORT || '3000', 10), basePath: process.env.BASE_PATH || '/', maxmindDbPath: process.env.MAXMIND_DB_PATH || '/usr/share/GeoIP', seqUrl: process.env.SEQ_URL, seqApiKey: process.env.SEQ_API_KEY, apiKeys: { frontend: process.env.FRONTEND_API_KEY || 'frontend-default-key', external: (process.env.EXTERNAL_API_KEYS || 'external-default-key') .split(',') .map(key => key.trim()), }, frontendAllowedOrigins: ( process.env.FRONTEND_ALLOWED_ORIGINS || 'http://localhost:5173' ) .split(',') .map(origin => origin.trim()), rateLimits: { frontend: { windowMs: parseInt(process.env.FRONTEND_RATE_WINDOW_MS || '60000', 10), max: parseInt(process.env.FRONTEND_RATE_MAX || '30', 10), }, external: { windowMs: parseInt(process.env.EXTERNAL_RATE_WINDOW_MS || '60000', 10), max: parseInt(process.env.EXTERNAL_RATE_MAX || '1000', 10), }, }, batchLimit: parseInt(process.env.BATCH_LIMIT || '100', 10), debounceMs: parseInt(process.env.DEBOUNCE_MS || '2000', 10), }; export default config;