Files
voice-call-service/internal/config/config.js
2026-05-29 01:06:47 +03:00

49 lines
1.7 KiB
JavaScript

import process from 'process';
const apiKey = process.env.API_KEY || '';
if (apiKey.length < 32) {
console.error(`FATAL: API_KEY must be at least 32 characters long, current length: ${apiKey.length}`);
process.exit(1);
}
/**
* Parses duration strings like "20s", "1m" to milliseconds.
* @param {string|undefined} val
* @param {number} defaultMs
* @returns {number}
*/
const parseDuration = (val, defaultMs) => {
if (!val) return defaultMs;
const match = val.match(/^(\d+)(s|m|h|ms)$/);
if (!match) return defaultMs;
const num = parseInt(match[1], 10);
const unit = match[2];
switch (unit) {
case 'ms': return num;
case 's': return num * 1000;
case 'm': return num * 60 * 1000;
case 'h': return num * 60 * 60 * 1000;
default: return defaultMs;
}
};
export const config = {
serverAddr: process.env.SERVER_ADDR || '127.0.0.1:47880',
apiKey: apiKey,
logLevel: process.env.LOG_LEVEL || 'info',
maxMessageBytes: parseInt(process.env.MAX_MESSAGE_BYTES || '4096', 10),
heartbeatInterval: parseDuration(process.env.HEARTBEAT_INTERVAL, 20000), // 20s
heartbeatTimeout: parseDuration(process.env.HEARTBEAT_TIMEOUT, 30000), // 30s
sessionDuration: parseDuration(process.env.SESSION_DURATION, 60000), // 60s
rateLimitPerMin: parseInt(process.env.RATE_LIMIT_PER_MIN || '10', 10),
environment: process.env.ENVIRONMENT || 'production',
dbHost: process.env.DB_HOST || '127.0.0.1',
dbPort: parseInt(process.env.DB_PORT || '3306', 10),
dbDatabase: process.env.DB_DATABASE || 'callDB',
dbUsername: process.env.DB_USERNAME || '',
dbPassword: process.env.DB_PASSWORD || '',
turnUrl: process.env.TURN_URL || '',
turnUsername: process.env.TURN_USERNAME || '',
turnCredential: process.env.TURN_CREDENTIAL || '',
};