outreach/config/index.js
2025-08-15 01:03:38 -08:00

88 lines
2.7 KiB
JavaScript

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",
};