Initial commit
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
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",
|
||||
};
|
||||
Reference in New Issue
Block a user