45 lines
1.5 KiB
TypeScript

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 || '5172', 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;