Files
TeleUploader/src/env.ts
T

55 lines
1.6 KiB
TypeScript
Raw Normal View History

2026-05-18 07:27:06 +07:00
import logger from './utils/logger';
interface AppConfig {
botToken: string;
additionalBotTokens: string[];
2026-05-18 07:27:06 +07:00
storageChatId: number;
baseUrl: string;
databaseUrl: string;
port: number;
nodeEnv: string;
logLevel: string;
rateLimitWindowMs: number;
rateLimitMaxRequests: number;
}
2026-05-18 06:58:55 +07:00
const requiredEnv = {
BOT_TOKEN: process.env.BOT_TOKEN,
STORAGE_CHANNEL_ID: process.env.STORAGE_CHANNEL_ID,
BASE_URL: process.env.BASE_URL,
DATABASE_URL: process.env.DATABASE_URL,
PORT: process.env.PORT,
2026-05-18 06:58:55 +07:00
};
const missing = Object.entries(requiredEnv)
.filter(([_, value]) => value === undefined || value === '')
.map(([key]) => key);
if (missing.length > 0) {
logger.error('Missing required environment variables:', missing);
throw new Error(`Missing environment variables: ${missing.join(', ')}`);
}
2026-05-18 07:27:06 +07:00
export const config: AppConfig = {
botToken: process.env.BOT_TOKEN!,
additionalBotTokens:
process.env.NODE_ENV === 'test'
? []
: (process.env.ADDITIONAL_BOT_TOKENS || '')
.split(',')
.map((t) => t.trim())
.filter((t) => t !== ''),
2026-05-18 07:27:06 +07:00
storageChatId: parseInt(process.env.STORAGE_CHANNEL_ID!, 10),
baseUrl: process.env.BASE_URL!,
databaseUrl: process.env.DATABASE_URL!,
port: parseInt(process.env.PORT!, 10) || 3000,
2026-05-18 06:58:55 +07:00
nodeEnv: process.env.NODE_ENV || 'development',
logLevel: process.env.LOG_LEVEL || 'info',
2026-05-18 07:27:06 +07:00
rateLimitWindowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS!, 10) || 60000,
rateLimitMaxRequests: parseInt(process.env.RATE_LIMIT_MAX_REQUESTS!, 10) || 30,
2026-05-18 06:58:55 +07:00
};
logger.info('Environment variables loaded', {
config: { ...config, botToken: `${config.botToken?.substring(0, 10)}...` },
});