require("dotenv").config({ path: `.env.${process.env.NODE_ENV || "development"}`, }); // Add warning if .env file doesn't exist for current environment const fs = require("fs"); const currentEnvFile = `.env.${process.env.NODE_ENV || "development"}`; if (!fs.existsSync(currentEnvFile)) { console.warn( `⚠️ Warning: Environment file ${currentEnvFile} not found. Using default values.` ); } module.exports = { env: process.env.NODE_ENV || "development", email: { user: process.env.EMAIL_USER, pass: process.env.EMAIL_PASS, testMode: process.env.EMAIL_TEST_MODE === "true", testLimit: process.env.EMAIL_TEST_LIMIT ? parseInt(process.env.EMAIL_TEST_LIMIT, 10) : null, }, campaigns: { testMode: process.env.CAMPAIGN_TEST_MODE === "true", testDataFile: process.env.CAMPAIGN_TEST_DATA || "tests/test-campaigns.json", }, attachments: { enabled: process.env.ATTACHMENT_ENABLED === "true", files: process.env.ATTACHMENT_FILES ? process.env.ATTACHMENT_FILES.split(",").map((f) => f.trim()) : [], }, gif: { enabled: process.env.GIF_ENABLED === "true", url: process.env.GIF_URL || "https://media.giphy.com/media/3o7abKhOpu0NwenH3O/giphy.gif", alt: process.env.GIF_ALT || "Professional handshake", }, app: { delayMinutes: parseInt(process.env.DELAY_MINUTES || "5", 10), batchSize: parseInt(process.env.BATCH_SIZE || "10", 10), }, rateLimiting: { enabled: process.env.RATE_LIMITING_ENABLED !== "false", // Default true maxPerHour: parseInt(process.env.MAX_EMAILS_PER_HOUR || "15", 10), pauseEvery: parseInt(process.env.PAUSE_EVERY_N_EMAILS || "50", 10), pauseDuration: parseInt(process.env.PAUSE_DURATION_MINUTES || "30", 10), }, errorHandling: { enabled: process.env.ERROR_HANDLING_ENABLED !== "false", // Default true maxRetries: parseInt(process.env.MAX_RETRIES || "3", 10), retryDelay: parseInt(process.env.RETRY_BASE_DELAY || "60", 10), // seconds logFailures: process.env.LOG_FAILURES !== "false", // Default true }, logging: { level: process.env.LOG_LEVEL || "info", debug: process.env.DEBUG === "true", }, tracking: { enabled: process.env.TRACKING_ENABLED === "true", skipTracking: process.env.SKIP_TRACKING === "true", port: parseInt(process.env.TRACKING_PORT || "3000", 10), domain: process.env.TRACKING_DOMAIN || "http://localhost:3000", }, smtp: { host: process.env.SMTP_HOST, port: parseInt(process.env.SMTP_PORT || "587", 10), secure: process.env.SMTP_SECURE === "true", user: process.env.SMTP_USER, pass: process.env.SMTP_PASS, }, isDevelopment: process.env.NODE_ENV === "development", isProduction: process.env.NODE_ENV === "production", };