feat: initial commit at project root
This commit is contained in:
48
internal/config/config.js
Normal file
48
internal/config/config.js
Normal file
@@ -0,0 +1,48 @@
|
||||
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 || '',
|
||||
};
|
||||
Reference in New Issue
Block a user