whatsapp-crm-common
Version:
Componentes compartidos para servicios de WhatsApp CRM - Common utilities and types for WhatsApp CRM system
122 lines • 6.55 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.environment = void 0;
exports.configureWhatsAppCommon = configureWhatsAppCommon;
exports.getConfig = getConfig;
// filepath: src/config/environment.ts
const dotenv = __importStar(require("dotenv"));
dotenv.config();
// Configuración externa que puede ser establecida programáticamente
let externalConfig = {};
// Función para configurar el paquete externamente
function configureWhatsAppCommon(config) {
externalConfig = { ...externalConfig, ...config };
}
// Función para obtener configuración mezclada
function getConfig() {
return {
// Configuraciones de Redis
redis: {
url: externalConfig.redis?.url || process.env.REDIS_URL || 'redis://localhost:6379',
host: externalConfig.redis?.host || process.env.REDIS_HOST || 'localhost',
port: externalConfig.redis?.port || parseInt(process.env.REDIS_PORT || '6379', 10),
password: externalConfig.redis?.password || process.env.REDIS_PASSWORD || '',
db: externalConfig.redis?.db || parseInt(process.env.REDIS_DB || '0', 10),
},
// Configuraciones de Base de datos
database: {
url: externalConfig.database?.url || process.env.DATABASE_URL || '',
host: externalConfig.database?.host || process.env.DATABASE_HOST || 'localhost',
port: externalConfig.database?.port || parseInt(process.env.DATABASE_PORT || '5432', 10),
name: externalConfig.database?.name || process.env.DATABASE_NAME || 'whatsapp_crm',
user: externalConfig.database?.user || process.env.DATABASE_USER || 'postgres',
password: externalConfig.database?.password || process.env.DATABASE_PASSWORD || '',
ssl: externalConfig.database?.ssl ?? process.env.DATABASE_SSL === 'true',
},
// Configuraciones de Logging
logging: {
level: externalConfig.logging?.level || process.env.LOG_LEVEL || 'info',
nodeEnv: process.env.NODE_ENV || 'development',
},
// Configuraciones de Cola
queue: {
enabled: externalConfig.queue?.enabled ?? (process.env.ENABLE_MESSAGE_QUEUE === 'true'),
concurrency: externalConfig.queue?.concurrency || parseInt(process.env.QUEUE_CONCURRENCY || '5', 10),
workerEnabled: externalConfig.queue?.workerEnabled ?? (process.env.WORKER_ENABLED === 'true'),
},
// Configuraciones de Webhook
webhook: {
url: externalConfig.webhook?.url || process.env.WEBHOOK_URL || '',
},
// Configuraciones de WhatsApp
whatsapp: {
maxSessionsPerProcess: externalConfig.whatsapp?.maxSessionsPerProcess || parseInt(process.env.MAX_SESSIONS_PER_PROCESS || '100', 10),
maxReconnectAttempts: externalConfig.whatsapp?.maxReconnectAttempts || parseInt(process.env.MAX_RECONNECT_ATTEMPTS || '5', 10),
qrTimeoutMs: externalConfig.whatsapp?.qrTimeoutMs || parseInt(process.env.QR_TIMEOUT_MS || '60000', 10),
syncFullHistory: externalConfig.whatsapp?.syncFullHistory ?? (process.env.SYNC_FULL_HISTORY === 'true'),
},
// Configuraciones del Sistema Híbrido
hybridEvents: {
enabled: externalConfig.hybridEvents?.enabled ?? (process.env.ENABLE_HYBRID_EVENTS === 'true'),
enablePubSubNotifications: externalConfig.hybridEvents?.enablePubSubNotifications ?? (process.env.ENABLE_PUBSUB_NOTIFICATIONS === 'true'),
pubSubSubscriberPoolSize: externalConfig.hybridEvents?.pubSubSubscriberPoolSize || parseInt(process.env.PUBSUB_SUBSCRIBER_POOL_SIZE || '3', 10),
criticalEventsBothSystems: externalConfig.hybridEvents?.criticalEventsBothSystems ?? (process.env.CRITICAL_EVENTS_BOTH_SYSTEMS === 'true'),
},
// Configuración legacy para compatibilidad
port: process.env.PORT || "3000",
};
}
// Configuración original para compatibilidad con versiones anteriores
exports.environment = {
port: process.env.PORT || "3000",
webhookUrl: process.env.WEBHOOK_URL || "",
databaseUrl: process.env.DATABASE_URL || "",
redisUrl: process.env.REDIS_URL || "redis://localhost:6379",
redisHost: process.env.REDIS_HOST || "localhost",
redisPort: parseInt(process.env.REDIS_PORT || "6379", 10),
redisPassword: process.env.REDIS_PASSWORD || "",
redisDb: parseInt(process.env.REDIS_DB || "0", 10),
logLevel: process.env.LOG_LEVEL || "info",
maxSessionsPerProcess: parseInt(process.env.MAX_SESSIONS_PER_PROCESS || "100", 10),
enableMessageQueue: process.env.ENABLE_MESSAGE_QUEUE === "true",
workerEnabled: process.env.WORKER_ENABLED === "true",
queueConcurrency: parseInt(process.env.QUEUE_CONCURRENCY || "5", 10),
enableHybridEvents: process.env.ENABLE_HYBRID_EVENTS === "true",
enablePubSubNotifications: process.env.ENABLE_PUBSUB_NOTIFICATIONS === "true",
pubSubSubscriberPoolSize: parseInt(process.env.PUBSUB_SUBSCRIBER_POOL_SIZE || "3", 10),
criticalEventsBothSystems: process.env.CRITICAL_EVENTS_BOTH_SYSTEMS === "true",
};
//# sourceMappingURL=environment.js.map