@resolveio/server-lib 20.12.6 → 20.12.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/managers/method.manager.js +2 -1
- package/managers/method.manager.js.map +1 -1
- package/managers/mongo.manager.js +18 -0
- package/managers/mongo.manager.js.map +1 -1
- package/methods/logs.js +4 -2
- package/methods/logs.js.map +1 -1
- package/package.json +1 -1
- package/server-app.js +6 -4
- package/server-app.js.map +1 -1
|
@@ -546,6 +546,7 @@ var MethodManager = /** @class */ (function () {
|
|
|
546
546
|
user: this['user'] || '',
|
|
547
547
|
messageId: 0,
|
|
548
548
|
route: '',
|
|
549
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
549
550
|
correlationId: correlationId
|
|
550
551
|
}
|
|
551
552
|
});
|
|
@@ -563,7 +564,7 @@ var MethodManager = /** @class */ (function () {
|
|
|
563
564
|
route: '',
|
|
564
565
|
client: 'ResolveIO',
|
|
565
566
|
instance: 'backend.resolveio.com',
|
|
566
|
-
instance_index: process.env.NODE_APP_INSTANCE || '',
|
|
567
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
567
568
|
correlationId: correlationId
|
|
568
569
|
})];
|
|
569
570
|
case 2:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/method.manager.ts"],"names":[],"mappings":"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","file":"method.manager.js","sourcesContent":["import { S3 } from '@aws-sdk/client-s3';\nimport * as fs from 'fs';\nimport * as nodemailer from 'nodemailer';\nimport * as sesTransport from 'nodemailer-ses-transport';\nimport * as path from 'path';\nimport { EmailHistories } from '../collections/email-history.collection';\nimport { Flags } from '../collections/flag.collection';\nimport { Logs } from '../collections/log.collection';\nimport { loadServerCronJobs } from '../fixtures/cron-jobs';\nimport { loadServerInit } from '../fixtures/init';\nimport { loadAccountMethods } from '../methods/accounts';\nimport { loadAWSMethods } from '../methods/aws';\nimport { loadCollectionMethods } from '../methods/collections';\nimport { loadCounterMethods } from '../methods/counters';\nimport { loadCronJobMethods } from '../methods/cron-jobs';\nimport { loadFlagUpdatesMethods } from '../methods/flag-updates';\nimport { loadFlagMethods } from '../methods/flags';\nimport { loadLogMethods } from '../methods/logs';\nimport { loadMonitorMethods } from '../methods/monitor';\nimport { loadPDFMethods } from '../methods/pdf';\nimport { loadReportBuilderMethods } from '../methods/report-builder';\nimport { loadSupportMethods } from '../methods/support';\nimport { EmailHistoryModel, EmailHistoryOccurrence } from '../models/email-history.model';\nimport { MethodAllModel, MethodModel } from '../models/method.model';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { getBinarySize, objectIdHexString } from '../util/common';\nimport { ErrorReporter } from '../util/error-reporter';\nimport { ensureErrorWithCorrelation, getCorrelationId, runWithCorrelationContext } from '../util/error-tracking';\nimport { MonitorManagerFunction } from './monitor.manager';\nimport { WebSocketManager } from './websocket.manager';\n\ninterface SendEmailOptions {\n\tcorrelationId?: string;\n\tmeta?: Record<string, any>;\n}\n\nfunction appendCorrelationIdToSubject(subject: string, correlationId?: string): string {\n\tif (!correlationId) {\n\t\treturn subject;\n\t}\n\n\tconst correlationTag = `[${correlationId}]`;\n\n\tif (subject && subject.includes(correlationTag)) {\n\t\treturn subject;\n\t}\n\n\treturn `${subject} ${correlationTag}`.trim();\n}\n\nfunction createEmailOccurrence(subject: string, text?: string, html?: string, meta?: Record<string, any>): EmailHistoryOccurrence {\n\treturn {\n\t\t_id: objectIdHexString(),\n\t\tcreatedAt: new Date(),\n\t\tsubject,\n\t\ttext,\n\t\thtml,\n\t\tmeta\n\t};\n}\n\nfunction formatGroupedEmailContent(correlationId: string, occurrences: EmailHistoryOccurrence[]): { text: string; html: string } {\n\tconst lines: string[] = [];\n\tlines.push(`Correlation ID: ${correlationId}`);\n\n\toccurrences.forEach((occurrence, index) => {\n\t\tconst timestamp = occurrence.createdAt instanceof Date ? occurrence.createdAt.toISOString() : new Date(occurrence.createdAt).toISOString();\n\t\tlines.push('');\n\t\tlines.push(`Occurrence #${index + 1} (${timestamp})`);\n\t\tlines.push(`Subject: ${occurrence.subject}`);\n\t\tif (occurrence.text) {\n\t\t\tlines.push(occurrence.text);\n\t\t}\n\t});\n\n\tconst htmlSections = occurrences.map((occurrence, index) => {\n\t\tconst timestamp = occurrence.createdAt instanceof Date ? occurrence.createdAt.toISOString() : new Date(occurrence.createdAt).toISOString();\n\t\tconst escapedText = occurrence.text ? occurrence.text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') : '';\n\t\treturn `<div><h4>Occurrence #${index + 1} (${timestamp})</h4><p><strong>Subject:</strong> ${occurrence.subject}</p>${escapedText ? `<pre>${escapedText}</pre>` : ''}</div>`;\n\t});\n\n\tconst html = [\n\t\t`<p><strong>Correlation ID:</strong> ${correlationId}</p>`,\n\t\t...htmlSections\n\t].join('');\n\n\treturn {\n\t\ttext: lines.join('\\n'),\n\t\thtml\n\t};\n}\n\nexport class AWS {\n\tprivate _s3: S3 = null;\n\tprivate _s3USEast1: S3 = null;\n\n\tconstructor() {}\n\n\tpublic create() {\n\t\tconst aws = new AWS();\n\t\taws.initialize();\n\t\treturn aws;\n\t}\n\n\tprivate initialize() {\n\n\t}\n\n\tpublic s3(): S3 {\n\t\tif (this._s3) {\n\t\t\treturn this._s3;\n\t\t}\n\n\t\tthis._s3 = new S3({\n\t\t\tcredentials: {\n\t\t\t\taccessKeyId: process.env.AWS_ACCESS_KEY,\n\t\t\t\tsecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n\t\t\t},\n\t\t\tregion: process.env.AWS_REGION,\n\t\t\tapiVersion: '2006-03-01'\n\t\t});\n\n\t\treturn this._s3;\n\t}\n\n\tpublic s3USEast1(): S3 {\n\t\tif (process.env.AWS_REGION === 'us-east-1') {\n\t\t\treturn this.s3();\n\t\t}\n\t\telse {\n\t\t\tif (this._s3USEast1) {\n\t\t\t\treturn this._s3USEast1;\n\t\t\t}\n\t\t\t\n\t\t\tthis._s3USEast1 = new S3({\n\t\t\t\tcredentials: {\n\t\t\t\t\taccessKeyId: process.env.AWS_ACCESS_KEY,\n\t\t\t\t\tsecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n\t\t\t\t},\n\t\t\t\tregion: 'us-east-1',\n\t\t\t\tapiVersion: '2006-03-01'\n\t\t\t});\n\t\n\t\t\treturn this._s3USEast1;\n\t\t}\n\t}\n}\n\nexport class MethodManager {\n\tprivate _websocketManager: WebSocketManager;\n\tpublic _methods: MethodModel = {};\n\tprivate _mailerSES: nodemailer.Transporter;\n\tprivate _mailerCustom: nodemailer.Transporter;\n\tprivate _aws: AWS;\n\tprivate _monitorManagerFunction: MonitorManagerFunction;\n\tprivate _isWorkersEnabled = false;\n\tprivate _isWorkerInstance = false;\n\n\tprivate emailQueue: Set<string> = new Set(); // Set to store pending email IDs\n\tprivate isEmailProcessing = false;\n\tprivate readonly _emailProcessingDelayMs = 5000;\n\n\tprivate _debugcallMethodHits = 0;\n\tprivate _debugCallMethodHits = 0;\n\tprivate _debugCallMethodCronJobHits = 0;\n\tprivate _debugSendQueueHits = 0;\n\tprivate _enableDebug = false;\n\n\tpublic clientDir = '';\n\tpublic serverConfig: Record<string, any> = {};\n\n\tconstructor() {}\n\n\tstatic create(websocketManager: WebSocketManager, monitorManagerFunction: MonitorManagerFunction, isWorkersEnabled, isWorkerInstance) {\n\t\tconst methodManager = new MethodManager();\n\t\tmethodManager.initialize(websocketManager, monitorManagerFunction, isWorkersEnabled, isWorkerInstance);\n\t\treturn methodManager;\n\t}\n\n\tprivate initialize(websocketManager: WebSocketManager, monitorManagerFunction: MonitorManagerFunction, isWorkersEnabled, isWorkerInstance) {\n\t\tthis._websocketManager = websocketManager;\n\t\tthis._monitorManagerFunction = monitorManagerFunction;\n\t\tthis._isWorkersEnabled = isWorkersEnabled;\n\t\tthis._isWorkerInstance = isWorkerInstance;\n\t\t\n\t\tthis.clientDir = ResolveIOServer.getClientDir();\n\t\tthis.serverConfig = ResolveIOServer.getServerConfig();\n\n\t\t// Fixtures\n\t\tif (!process.env.IS_WORKERS_ENABLED || process.env.IS_WORKERS_ENABLED === 'false' || (process.env.IS_WORKER_INSTANCE === 'true' && process.env.WORKER_INDEX === '0')) {\n\t\t\tif (!process.env.NODE_APP_INSTANCE || process.env.NODE_APP_INSTANCE === '0') {\n\t\t\t\tsetTimeout(async () => {\n\t\t\t\t\tconsole.log(new Date(), 'Start Server Fixture');\n\t\t\t\t\tawait loadServerInit();\n\t\t\t\t\tconsole.log(new Date(), 'End Server Fixture');\n\t\t\t\t}, 5000);\n\t\t\t}\n\t\t}\n\t\t\n\t\tsetImmediate(async () => {\n\t\t\t// Methods\n\t\t\tawait loadServerCronJobs();\n\n\t\t\tloadAccountMethods(this);\n\t\t\tloadAWSMethods(this);\n\t\t\tloadCollectionMethods(this);\n\t\t\tloadCounterMethods(this);\n\t\t\tloadLogMethods(this);\n\t\t\tloadPDFMethods(this);\n\t\t\tloadCronJobMethods(this);\n\t\t\tloadFlagMethods(this);\n\t\t\tloadFlagUpdatesMethods(this);\n\t\t\tloadReportBuilderMethods(this);\n\t\t\tloadSupportMethods(this);\n\t\t\tloadMonitorMethods(this);\n\n\t\t\tlet flag = await Flags.findOne({type: 'Enable Debug'});\n\t\n\t\t\tif (flag && flag.value) {\n\t\t\t\tthis._enableDebug = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._enableDebug = false;\n\t\t\t}\n\n\t\t\tawait this.loadPendingEmails();\n\t\t});\n\t\t\n\t\tthis._aws = new AWS();\n\n\t\tthis._mailerSES = nodemailer.createTransport(sesTransport({\n\t\t\taccessKeyId: process.env.AWS_ACCESS_KEY,\n\t\t\tsecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,\n\t\t\tregion: process.env.AWS_SES_REGION\n\t\t}));\n\t\t\n\t\tif (!ResolveIOServer.getSESMail()) {\n\t\t\tthis._mailerCustom = nodemailer.createTransport({\n\t\t\t\thost: ResolveIOServer.getServerConfig()['MAIL_HOST'], // 'smtp.office365.com', // Office 365 server\n\t\t\t\tport: ResolveIOServer.getServerConfig()['MAIL_PORT'], //587, // secure SMTP\n\t\t\t\tsecure: false, // false for TLS - as a boolean not string - but the default is false so just remove this completely\n\t\t\t\tauth: {\n\t\t\t\t\tuser: ResolveIOServer.getServerConfig()['MAIL_USERNAME'],\n\t\t\t\t\tpass: ResolveIOServer.getServerConfig()['MAIL_PASSWORD']\n\t\t\t\t},\n\t\t\t\ttls: {\n\t\t\t\t\tciphers: 'SSLv3'\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tsetInterval(async () => {\n\t\t\tlet flag = await Flags.findOne({type: 'Enable Debug'});\n\t\n\t\t\tif (flag && flag.value) {\n\t\t\t\tthis._enableDebug = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._enableDebug = false;\n\t\t\t}\n\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Send Queue Hits', this._debugSendQueueHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Internal Hits', this._debugcallMethodHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Hits', this._debugCallMethodHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Cron Hits', this._debugCallMethodCronJobHits);\n\t\t\t}\n\n\t\t\tthis._debugcallMethodHits = 0;\n\t\t\tthis._debugCallMethodHits = 0;\n\t\t\tthis._debugCallMethodCronJobHits = 0;\n\t\t\tthis._debugSendQueueHits = 0;\n\t\t}, 60000);\n\n\t\tif (!this._isWorkersEnabled || this._isWorkerInstance) {\n\t\t\tthis.setupEmailWatcher();\n\t\t}\n\t}\n\n\tpublic getMethod(methodName: string): MethodAllModel {\n\t\treturn this._methods[methodName];\n\t}\n\n\t// Add methods to private methods object\n\tpublic methods(method: MethodModel) {\n\t\tthis._methods = Object.assign(this._methods, method);\n\t}\n\n\tprivate async reportMethodError(\n\t\tsubject: string,\n\t\tcorrelationId: string,\n\t\tcontext: Record<string, any> | string,\n\t\tmeta: Record<string, any>,\n\t\tstack?: string\n\t) {\n\t\tconst metadata = Object.assign({}, meta || {});\n\t\tif (correlationId && !metadata.correlationId) {\n\t\t\tmetadata.correlationId = correlationId;\n\t\t}\n\n\t\tawait ErrorReporter.report({\n\t\t\tsourceApp: 'method-manager',\n\t\t\tmessage: subject,\n\t\t\tenvironment: this.serverConfig?.ROOT_URL,\n\t\t\tclientSlug: ResolveIOServer.getClientName(),\n\t\t\tclientName: this.serverConfig?.CLIENT_NAME,\n\t\t\tseverity: 'error',\n\t\t\tstack,\n\t\t\tcontext,\n\t\t\tmetadata,\n\t\t\tcorrelationId\n\t\t});\n\t}\n\n\tpublic async callMethodCron(method: string, ...methodData: any[]) {\n\t\tthis._debugCallMethodCronJobHits += 1;\n\n\t\tconst existingCorrelationId = getCorrelationId();\n\t\tconst correlationId = existingCorrelationId || objectIdHexString();\n\n\t\tconst execute = async () => {\n\t\t\tconst cronMethod = this._methods[method];\n\n\t\t\tif (!cronMethod) {\n\t\t\t\tconsole.log('No Method: ' + method);\n\n\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\tcorrelationId,\n\t\t\t\t\t{ message: 'No Method registered for cron execution', method },\n\t\t\t\t\t{ context: 'callMethodCron', method }\n\t\t\t\t);\n\n\t\t\t\tthrow new Error('No Method: ' + method);\n\t\t\t}\n\t\t\t\n\t\t\tif ((methodData.length > 1 || methodData[0]) && !cronMethod.skipValidation) {\n\t\t\t\tif (!cronMethod.check) {\n\t\t\t\t\tconsole.error(new Date(), 'No Check Function For Cron Method ' + method);\n\n\t\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\tcorrelationId,\n\t\t\t\t\t\t{ message: 'Missing check function for cron method', method },\n\t\t\t\t\t\t{ context: 'callMethodCron-validation', method }\n\t\t\t\t\t);\n\t\t\n\t\t\t\t\tthrow new Error('No Check Function For Cron Method ' + method);\n\t\t\t\t}\n\t\t\t\telse if (!cronMethod.check._schema) {\n\t\t\t\t\tconsole.error(new Date(), 'No Check Schema For Cron Method ' + method);\n\n\t\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\tcorrelationId,\n\t\t\t\t\t\t{ message: 'Missing check schema for cron method', method },\n\t\t\t\t\t\t{ context: 'callMethodCron-validation', method }\n\t\t\t\t\t);\n\t\t\n\t\t\t\t\tthrow new Error('No Check Schema For Cron Method ' + method);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst valObj = {};\n\t\t\t\t\tconst valKeys = Object.keys(cronMethod.check._schema);\n\n\t\t\t\t\tconst rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 0; i < methodData.length; i++) {\n\t\t\t\t\t\tvalObj[rootKeys[i]] = methodData[i];\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcronMethod.check.validate(valObj);\n\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tconsole.error(new Date(), 'Error in Cron Method Check (' + method + ')', err);\n\n\t\t\t\t\t\t\tconst { error: normalizedError, correlationId: resolvedCorrelationId } = ensureErrorWithCorrelation(err, correlationId);\n\n\t\t\t\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\t\t\tresolvedCorrelationId,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmessage: 'Match error on cron method',\n\t\t\t\t\t\t\t\t\tmethod,\n\t\t\t\t\t\t\t\t\tdata: valObj,\n\t\t\t\t\t\t\t\t\tvalidationError: normalizedError\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ context: 'callMethodCron-validation-error', method },\n\t\t\t\t\t\t\t\tnormalizedError.stack\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tnormalizedError.message = `${new Date().toISOString()} - Error in Cron Method Check (${method}): ${normalizedError.message}`;\n\n\t\t\t\t\t\t\tthrow normalizedError;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst monitor = this._monitorManagerFunction.startMonitorFunction('Cron Method', method, '', '', methodData);\n\n\t\t\ttry {\n\t\t\t\tconst res = await cronMethod.function.call(Object.assign({}, this, MethodManager.prototype, {id_user: '', user: '', id_ws: ''}), ...methodData);\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconst { error: normalizedError, correlationId: resolvedCorrelationId } = ensureErrorWithCorrelation(err, correlationId);\n\n\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\tresolvedCorrelationId,\n\t\t\t\t\t{\n\t\t\t\t\t\tmessage: 'Error detected during cron method execution',\n\t\t\t\t\t\tmethod,\n\t\t\t\t\t\tdata: methodData,\n\t\t\t\t\t\terror: normalizedError\n\t\t\t\t\t},\n\t\t\t\t\t{ context: 'callMethodCron-execution', method },\n\t\t\t\t\tnormalizedError.stack\n\t\t\t\t);\n\t\t\t\t\n\t\t\t\tnormalizedError.message = `${new Date().toISOString()} - Error in Cron Method (${method}): ${normalizedError.message}`;\n\t\t\t\t\n\t\t\t\tthrow normalizedError;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\t}\n\t\t};\n\n\t\treturn await runWithCorrelationContext(correlationId, execute);\n\t}\n\n\t// Call/run method internal (No Emit on Socket)\n\tpublic async callMethod(methodName: string, ...methodData: any[]): Promise<any> {\n\t\tthis._debugcallMethodHits += 1;\n\n\t\tconst existingCorrelationId = getCorrelationId();\n\t\tconst correlationId = existingCorrelationId || objectIdHexString();\n\n\t\treturn await runWithCorrelationContext(correlationId, async () => await this.callMethodInternal(correlationId, methodName, methodData));\n\t}\n\n\tprivate async callMethodInternal(correlationId: string, methodName: string, methodData: any[]): Promise<any> {\n\t\tconst method = this.getMethod(methodName);\n\n\t\tif (!method) {\n\t\t\tconsole.log('No Method: ' + methodName);\n\t\t\tthrow new Error(`No Method: ${methodName}`);\n\t\t}\n\n\t\tif ((methodData.length > 1 || (methodData[0] && typeof methodData[0] !== 'function')) && !method.skipValidation) {\n\t\t\tif (!method.check) {\n\t\t\t\tconsole.error(new Date(), 'No Check Function For Method ' + methodName);\n\t\t\t\tthrow new Error(`No Check Function For Method: ${methodName}`);\n\t\t\t}\n\t\t\telse if (!method.check._schema) {\n\t\t\t\tconsole.error(new Date(), 'No Check Schema For Method ' + methodName);\n\t\t\t\tthrow new Error(`No Check Schema For Method: ${methodName}`);\n\t\t\t}\n\t\t}\n\n\t\tif (methodName !== 'insertSubscriptionLog' && methodName !== 'getDataURIfromURL' && methodName !== 'processAirdropDistribution' && methodName !== 'incCounter' && methodName !== 'supportCreateBillingUser' && methodName !== 'countCollectionWithQuery') {\n\t\t\tif (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t\t) {\n\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\ttype: 'log',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\t\ttype: 'callMethod',\n\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([methodData])) < 1000000 ? JSON.stringify([methodData], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\t\tuser: this['user'] || '', \n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: '',\n\t\t\t\t\t\tcorrelationId\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tawait Logs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'callMethod',\n\t\t\t\t\tcollection: '',\n\t\t\t\t\tid_document: '',\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([methodData])) < 1000000 ? JSON.stringify([methodData], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: methodName,\n\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\tuser: this['user'] || '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: '',\n\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\tinstance: 'backend.resolveio.com',\n\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '',\n\t\t\t\t\tcorrelationId\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\n\t\tconst functionMethodData = typeof(methodData[methodData.length - 1]) === 'function' ? methodData.slice(0, -1) : methodData;\n\n\t\tconst session = ResolveIOServer.getMongoManager().getSession();\n\n\t\tif (!method.bypassSession &&\n\t\t\t!session && \n\t\t\t![\n\t\t\t\t'insertErrorLog', // CIRCULAR LOOP - DO NOT REMOVE\n\t\t\t\t'countWithQuery', // MONGO SESSIONS/TRANSACTIONS DONT WORK WITH COUNTS\n\t\t\t\t'sendEmail' // ALWAYS SEND SO ALWAYS HAVE RECORD - DONT ROLL BACK - BYPASS SESSION\n\t\t\t].includes(methodName) &&\n\t\t\t!methodName.startsWith('monitor-') &&\n\t\t\t!methodName.startsWith('log')\n\t\t) {\n\t\t\tlet monitor = null;\n\t\t\t\n\t\t\treturn ResolveIOServer.getMongoManager().oneTimeTransaction(async () => {\n\t\t\t\t// console.log(new Date(), 'Calling Method - New Session', methodName);\n\n\t\t\t\tmonitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await method.function.call(Object.assign({}, this, MethodManager.prototype), ...functionMethodData);\n\n\t\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\t\tmethodData[methodData.length - 1](null, res);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tif (err.code === 112 || err.codeName === 'WriteConflict' || err.code === 251 || err.codeName === 'NoSuchTransaction') {\n\t\t\t\t\t\tthrow err; // Write error, retry\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { error: normalizedError, correlationId: resolvedCorrelationId } = ensureErrorWithCorrelation(err, correlationId);\n\n\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Method Manager - Run Method - New Session', methodName, {\n\t\t\t\t\t\tcode: normalizedError.code,\n\t\t\t\t\t\tcodeName: normalizedError.codeName,\n\t\t\t\t\t\tmessage: normalizedError.message,\n\t\t\t\t\t\tstack: normalizedError.stack,\n\t\t\t\t\t\tcorrelationId: resolvedCorrelationId\n\t\t\t\t\t}], null, 2));\n\n\t\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\tresolvedCorrelationId,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessage: 'Error detected during method execution (new session)',\n\t\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\t\tdata: methodData,\n\t\t\t\t\t\t\terror: normalizedError\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ context: 'callMethod-new-session', methodName },\n\t\t\t\t\t\tnormalizedError.stack\n\t\t\t\t\t);\n\t\t\t\t\tnormalizedError.message = `${new Date().toISOString()} - Error in Method With Session (${methodName}) - New Session: ${normalizedError.message}`;\n\n\t\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\t\tmethodData[methodData.length - 1](normalizedError, null);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!process.env.IS_WORKER_INSTANCE) {\n\t\t\t\t\t\tawait this.callMethod(\n\t\t\t\t\t\t\t'insertErrorLog',\n\t\t\t\t\t\t\t`Error in Method: ${methodName}`,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\t\t\tmethodData,\n\t\t\t\t\t\t\t\terror: {\n\t\t\t\t\t\t\t\t\tmessage: normalizedError.message,\n\t\t\t\t\t\t\t\t\tstack: normalizedError.stack,\n\t\t\t\t\t\t\t\t\tcode: normalizedError.code,\n\t\t\t\t\t\t\t\t\tcodeName: normalizedError.codeName\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcorrelationId: resolvedCorrelationId\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow normalizedError;\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\t// console.log(new Date(), 'Calling Method - Existing Session', methodName);\n\n\t\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tlet res = await method.function.call(Object.assign({}, this, MethodManager.prototype), ...functionMethodData);\n\n\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\tmethodData[methodData.length - 1](null, res);\n\t\t\t\t}\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tif (err.code === 112 || err.codeName === 'WriteConflict' || err.code === 251 || err.codeName === 'NoSuchTransaction') {\n\t\t\t\t\tthrow err; // Write error, retry\n\t\t\t\t}\n\n\t\t\t\tconst { error: normalizedError, correlationId: resolvedCorrelationId } = ensureErrorWithCorrelation(err, correlationId);\n\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Method Manager - Run Method - Existing Session', methodName, {\n\t\t\t\t\tcode: normalizedError.code,\n\t\t\t\t\tcodeName: normalizedError.codeName,\n\t\t\t\t\tmessage: normalizedError.message,\n\t\t\t\t\tstack: normalizedError.stack,\n\t\t\t\t\tcorrelationId: resolvedCorrelationId\n\t\t\t\t}], null, 2));\n\n\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\tresolvedCorrelationId,\n\t\t\t\t\t{\n\t\t\t\t\t\tmessage: 'Error detected during method execution (existing session)',\n\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\tdata: methodData,\n\t\t\t\t\t\terror: normalizedError\n\t\t\t\t\t},\n\t\t\t\t\t{ context: 'callMethod-existing-session', methodName },\n\t\t\t\t\tnormalizedError.stack\n\t\t\t\t);\n\t\t\t\tnormalizedError.message = `${new Date().toISOString()} - Error in Method (${methodName}) - Existing Session: ${normalizedError.message}`;\n\t\t\t\t\n\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\tmethodData[methodData.length - 1](normalizedError, null);\n\t\t\t\t}\n\n\t\t\t\tif (!process.env.IS_WORKER_INSTANCE) {\n\t\t\t\t\tawait this.callMethod(\n\t\t\t\t\t\t'insertErrorLog',\n\t\t\t\t\t\t`Error in Method: ${methodName}`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\t\tmethodData,\n\t\t\t\t\t\t\terror: {\n\t\t\t\t\t\t\t\tmessage: normalizedError.message,\n\t\t\t\t\t\t\t\tstack: normalizedError.stack,\n\t\t\t\t\t\t\t\tcode: normalizedError.code,\n\t\t\t\t\t\t\t\tcodeName: normalizedError.codeName\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcorrelationId: resolvedCorrelationId\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthrow normalizedError;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\t}\n\t\t}\n\t}\n\n\tsetupEmailWatcher() {\n\t\tconst changeStream = EmailHistories.watchCollection([]);\n\n\t\tchangeStream.on('change', async (change) => {\n\t\t\tif (change.operationType === 'insert' && change.fullDocument && change.fullDocument.status === 'pending') {\n\t\t\t\tthis.emailQueue.add(change.fullDocument._id.toString());\n\t\t\t\tawait this.tryProcessEmail();\n\t\t\t}\n\t\t\telse if (change.operationType === 'update' || change.operationType === 'replace') {\n\t\t\t\tconst updatedEmail = change.fullDocument;\n\t\t\t\tif (updatedEmail && updatedEmail.status !== 'pending' && this.emailQueue.has(updatedEmail._id.toString())) {\n\t\t\t\t\tthis.emailQueue.delete(updatedEmail._id.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.on('error', async err => {\n\t\t\tconsole.error('Email history changestream error', err);\n\t\t\tawait changeStream.close();\n\t\t})\n\t\t.on('close', () => {\n\t\t\tthis.setupEmailWatcher();\n\t\t});\n\t}\n\n\tasync loadPendingEmails() {\n\t\t// Load any pending emails on startup\n\t\tconst pendingEmails = await EmailHistories.find({ status: 'pending' }, {sort: {_id: 1}});\n\t\tfor (const email of pendingEmails) {\n\t\t\tthis.emailQueue.add(email._id.toString());\n\t\t}\n\t\t// Try to process emails\n\t\tawait this.tryProcessEmail();\n\t}\n\n\tasync tryProcessEmail() {\n\t\tif (this.isEmailProcessing || this.emailQueue.size === 0) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tthis.isEmailProcessing = true;\n\t\n\t\ttry {\n\t\t\twhile (this.emailQueue.size > 0) {\n\t\t\t\tconst emailId = this.emailQueue.values().next().value;\n\t\t\t\tthis.emailQueue.delete(emailId);\n\t\n\t\t\t\tconst pendingEmail = await EmailHistories.findOne(\n\t\t\t\t\t{\n\t\t\t\t\t\t_id: emailId,\n\t\t\t\t\t\tstatus: 'pending',\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif (!pendingEmail) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet queuedAt: Date;\n\t\t\t\tif (pendingEmail.date instanceof Date) {\n\t\t\t\t\tqueuedAt = pendingEmail.date;\n\t\t\t\t}\n\t\t\t\telse if (pendingEmail.createdAt instanceof Date) {\n\t\t\t\t\tqueuedAt = pendingEmail.createdAt;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tqueuedAt = new Date();\n\t\t\t\t}\n\n\t\t\t\tconst timeSinceQueued = Date.now() - queuedAt.getTime();\n\t\t\t\tconst remainingDelay = this._emailProcessingDelayMs - timeSinceQueued;\n\n\t\t\t\tif (remainingDelay > 0) {\n\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\tawait new Promise(resolve => setTimeout(resolve, remainingDelay));\n\t\t\t\t}\n\n\t\t\t\tconst emailHistory = await EmailHistories.findOneAndUpdate(\n\t\t\t\t\t{\n\t\t\t\t\t\t_id: emailId,\n\t\t\t\t\t\tstatus: 'pending',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$set: { status: 'processing', processingAt: new Date() },\n\t\t\t\t\t}\n\t\t\t\t);\n\t\n\t\t\t\tif (!emailHistory) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\n\t\t\t\t// Fetch and process attachments\n if (emailHistory.attachments && emailHistory.attachments.length > 0) {\n\t\t\t\t\tconst validAttachments: any[] = [];\n\t\t\t\t\tlet attachmentError = false;\n\n\t\t\t\t\tfor (const att of emailHistory.attachments) {\n\t\t\t\t\t\tif (att.path && att.path.startsWith('http')) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst response = await fetch(att.path);\n\t\t\t\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\t\t\t\tattachmentError = true;\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst arrayBuffer = await response.arrayBuffer();\n\t\t\t\t\t\t\t\tconst buffer = Buffer.from(arrayBuffer);\n\n\t\t\t\t\t\t\t\t// Check the size of the attachment\n\t\t\t\t\t\t\t\tconst maxSize = 20 * 1024 * 1024; // 20MB in bytes\n\t\t\t\t\t\t\t\tif (buffer.length <= maxSize) {\n\t\t\t\t\t\t\t\t\t// Attachment is within size limits, include it\n\t\t\t\t\t\t\t\t\tatt.content = buffer;\n\t\t\t\t\t\t\t\t\tdelete att.path;\n\t\t\t\t\t\t\t\t\tvalidAttachments.push(att);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\t\tconsole.error('Failed to fetch attachment:', err);\n\t\t\t\t\t\t\t\tattachmentError = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvalidAttachments.push(att);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\temailHistory.attachments = validAttachments;\n\t\t\t\t\tif (attachmentError) {\n\t\t\t\t\t\t\temailHistory.text =\n\t\t\t\t\t\t\t\t\t(typeof emailHistory.text === 'string' ? emailHistory.text : '') +\n\t\t\t\t\t\t\t\t\t'\\n\\nCould not load attachments.';\n\t\t\t\t\t\t\temailHistory.html =\n\t\t\t\t\t\t\t\t\t(typeof emailHistory.html === 'string' ? emailHistory.html : '') +\n\t\t\t\t\t\t\t\t\t'<p>Could not load attachments.</p>';\n\t\t\t\t\t}\n }\n\t\n\t\t\t\t// Prepare email options\n\t\t\t\tconst mailOptions: any = {\n\t\t\t\t\treplyTo: emailHistory.reply_to || (ResolveIOServer.getServerConfig()['MAIL_REPLY_TO'] || undefined),\n\t\t\t\t\tfrom: emailHistory.send_from || ResolveIOServer.getServerConfig().MAIL_FROM,\n\t\t\t\t\tto: emailHistory.email,\n\t\t\t\t\tsubject:\n\t\t\t\t\t\t(ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/dev\\./) ||\n\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/www\\.dev\\./)\n\t\t\t\t\t\t\t? '(DEV SERVER) - '\n\t\t\t\t\t\t\t: '') + emailHistory.subject,\n\t\t\t\t\ttext: typeof emailHistory.text === 'string' ? emailHistory.text : '',\n\t\t\t\t\thtml: typeof emailHistory.html === 'string' ? emailHistory.html : '',\n\t\t\t\t\tattachments: emailHistory.attachments || [],\n\t\t\t\t\tforce_ses: emailHistory.force_ses\n\t\t\t\t};\n\t\n\t\t\t\t// Process attachments before sending\n\t\t\t\tif (mailOptions.attachments && mailOptions.attachments.length > 0) {\n\t\t\t\t\tmailOptions.attachments = mailOptions.attachments.map((att) => {\n\t\t\t\t\t\tconst newAtt = { ...att };\n\t\t\t\t\t\t// Handle attachments stored as BinData or Buffer\n\t\t\t\t\t\tif (newAtt.content && typeof newAtt.content === 'object' && !(newAtt.content instanceof Buffer)) {\n\t\t\t\t\t\t\t// Convert MongoDB's Binary data to Buffer\n\t\t\t\t\t\t\tif (newAtt.content._bsontype === 'Binary' && newAtt.content.sub_type === 0) {\n\t\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content.buffer);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t// Handle other types if necessary\n\t\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Handle attachments stored as Base64 strings\n\t\t\t\t\t\telse if (typeof newAtt.content === 'string' && newAtt.encoding === 'base64') {\n\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content, 'base64');\n\t\t\t\t\t\t\tdelete newAtt.encoding;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Ensure the content is a Buffer\n\t\t\t\t\t\telse if (typeof newAtt.content === 'string') {\n\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn newAtt;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\n\t\t\t\t// Send the email\n\t\t\t\t(!mailOptions.force_ses && this._mailerCustom ? this._mailerCustom : this._mailerSES).sendMail(mailOptions, async err => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tconsole.error('Failed to send email:', err);\n\t\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\t\t\t\terror: typeof err === 'string' ? err : this.safeStringify(err),\n\t\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (emailHistory.email === 'dev@resolveio.com') {\n\t\t\t\t\t\t\t\tawait EmailHistories.deleteOne({ _id: emailHistory._id });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\t\t\tstatus: 'completed',\n\t\t\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\tconsole.error('Error in sendMail callback:', error);\n\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\t\t\terror: typeof error === 'string' ? error : this.safeStringify(error),\n\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} \n\t\t\t\t});\n\t\n\t\t\t\t// Wait for at least one second before sending the next email\n\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 1000));\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.error('Error processing email queue:', err);\n\t\t}\n\t\tfinally {\n\t\t\tthis.isEmailProcessing = false;\n\t\t\t// Check if new emails arrived while processing\n\t\t\tif (this.emailQueue.size > 0) {\n\t\t\t\tawait this.tryProcessEmail();\n\t\t\t}\n\t\t}\n\t}\n\n\tsafeStringify(obj)\n\t{\n\t\ttry\n\t\t{\n\t\t\treturn JSON.stringify(obj, this.getCircularReplacer());\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\treturn `Error in JSON stringifying: ${e.message}`;\n\t\t}\n\t}\n\n\tgetCircularReplacer()\n\t{\n\t\tconst seen = new WeakSet();\n\t\treturn (key, value) =>\n\t\t{\n\t\t\tif (typeof value === \"object\" && value !== null)\n\t\t\t{\n\t\t\t\tif (seen.has(value))\n\t\t\t\t{\n\t\t\t\t\treturn \"[Circular]\";\n\t\t\t\t}\n\t\t\t\tseen.add(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t};\n\t}\n\n\tprivate async tryMergeEmailOccurrence(\n\t\temail: string,\n\t\tsubject: string,\n\t\tcorrelationId: string,\n\t\toccurrence: EmailHistoryOccurrence,\n\t\tmeta?: Record<string, any>\n\t): Promise<EmailHistoryModel | null> {\n\t\tconst existing = await EmailHistories.findOne(\n\t\t\t{\n\t\t\t\temail,\n\t\t\t\tcorrelationId,\n\t\t\t\tstatus: 'pending'\n\t\t\t},\n\t\t\t{ sort: { date: 1 } }\n\t\t);\n\n\t\tif (!existing) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst normalizedOccurrences: EmailHistoryOccurrence[] = Array.isArray(existing.occurrences) && existing.occurrences.length\n\t\t\t? existing.occurrences.map((item: EmailHistoryOccurrence) => ({\n\t\t\t\t_id: item._id || objectIdHexString(),\n\t\t\t\tcreatedAt: item.createdAt instanceof Date ? item.createdAt : new Date(item.createdAt),\n\t\t\t\tsubject: item.subject || existing.subject || '',\n\t\t\t\ttext: item.text,\n\t\t\t\thtml: item.html,\n\t\t\t\tmeta: item.meta\n\t\t\t}))\n\t\t\t: [createEmailOccurrence(\n\t\t\t\texisting.subject || '',\n\t\t\t\ttypeof existing.text === 'string' ? existing.text : undefined,\n\t\t\t\ttypeof existing.html === 'string' ? existing.html : undefined,\n\t\t\t\texisting.meta\n\t\t\t)];\n\n\t\tnormalizedOccurrences.push(occurrence);\n\n\t\tconst { text: aggregatedText, html: aggregatedHtml } = formatGroupedEmailContent(correlationId, normalizedOccurrences);\n\n\t\tconst updated = await EmailHistories.findOneAndUpdate(\n\t\t\t{\n\t\t\t\t_id: existing._id,\n\t\t\t\tstatus: 'pending'\n\t\t\t},\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\tsubject,\n\t\t\t\t\ttext: aggregatedText,\n\t\t\t\t\thtml: aggregatedHtml,\n\t\t\t\t\toccurrences: normalizedOccurrences,\n\t\t\t\t\tmeta: meta || existing.meta,\n\t\t\t\t\tupdatedAt: new Date()\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ returnDocument: 'after' }\n\t\t);\n\n\t\treturn updated || null;\n\t}\n\n\tpublic async sendEmail(\n\t\tsendTo: string,\n\t\tsubject: string,\n\t\ttext?: string | null,\n\t\thtml?: string | null,\n\t\tattachments?: any[] | null,\n\t\tsend_from?: string | null,\n\t\treply_to?: string | null,\n\t\tforce_ses = false,\n\t\tlocal_override = false,\n\t\toptions?: SendEmailOptions\n\t) {\n\t\t// Modify sendTo in development environments\n\t\tif (\n\t\t\t(ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/dev\\./) ||\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/www\\.dev\\./) ||\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200') &&\n\t\t\t!sendTo.match(/\\@resolveio\\.com/)\n\t\t) {\n\t\t\tsendTo = 'dev@resolveio.com';\n\t\t}\n\n\t\tconst normalizedSubject = subject || '';\n\t\tconst correlationId = options?.correlationId;\n\t\tconst finalSubject = appendCorrelationIdToSubject(normalizedSubject, correlationId);\n\t\tconst groupByCorrelationId = !!correlationId;\n\t\tconst normalizedText = typeof text === 'string' ? text : '';\n\t\tconst normalizedHtml = typeof html === 'string' ? html : '';\n\t\tconst occurrence = groupByCorrelationId\n\t\t\t? createEmailOccurrence(normalizedSubject, normalizedText, normalizedHtml, options?.meta)\n\t\t\t: null;\n\t\tlet allowGrouping = groupByCorrelationId;\n\n\t\tif (sendTo) {\n\t\t\tif (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200' ||\n\t\t\t\tlocal_override\n\t\t\t) {\n\t\t\t\tlet normalizedAttachments: any[] = [];\n\t\t\t\tif (Array.isArray(attachments)) {\n\t\t\t\t\tnormalizedAttachments = attachments.slice();\n\t\t\t\t}\n\t\t\t\telse if (attachments) {\n\t\t\t\t\tnormalizedAttachments = [attachments];\n\t\t\t\t}\n\n\t\t\t\tnormalizedAttachments = normalizedAttachments.map(att => {\n\t\t\t\t\tconst newAtt = { ...att };\n\t\t\t\t\tif (Buffer.isBuffer(newAtt.content)) {\n\t\t\t\t\t\tnewAtt.content = newAtt.content.toString('base64');\n\t\t\t\t\t\tnewAtt.encoding = 'base64';\n\t\t\t\t\t}\n\t\t\t\t\treturn newAtt;\n\t\t\t\t});\n\n\t\t\t\tif (normalizedAttachments.length > 0) {\n\t\t\t\t\tallowGrouping = false;\n\t\t\t\t}\n\n\t\t\t\tif (allowGrouping && occurrence && correlationId) {\n\t\t\t\t\tconst merged = await this.tryMergeEmailOccurrence(sendTo, finalSubject, correlationId, occurrence, options?.meta);\n\t\t\t\t\tif (merged) {\n\t\t\t\t\t\treturn merged;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst emailHistory: EmailHistoryModel = {\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t__v: 0,\n\t\t\t\t\tdate: new Date(),\n\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\tuser: this['user'] || '',\n\t\t\t\t\temail: sendTo,\n\t\t\t\t\tsubject: finalSubject,\n\t\t\t\t\ttext: normalizedText,\n\t\t\t\t\thtml: normalizedHtml,\n\t\t\t\t\tattachments: normalizedAttachments,\n\t\t\t\t\tsend_from: send_from || '',\n\t\t\t\t\treply_to: reply_to || '',\n\t\t\t\t\tstatus: 'pending',\n\t\t\t\t\terror: '',\n\t\t\t\t\tforce_ses\n\t\t\t\t};\n\n\t\t\t\tif (allowGrouping && occurrence && correlationId) {\n\t\t\t\t\tconst { text: aggregatedText, html: aggregatedHtml } = formatGroupedEmailContent(correlationId, [occurrence]);\n\t\t\t\t\temailHistory.text = aggregatedText;\n\t\t\t\t\temailHistory.html = aggregatedHtml;\n\t\t\t\t\temailHistory.occurrences = [occurrence];\n\t\t\t\t\temailHistory.correlationId = correlationId;\n\t\t\t\t\tif (options?.meta) {\n\t\t\t\t\t\temailHistory.meta = options.meta;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (correlationId) {\n\t\t\t\t\t\temailHistory.correlationId = correlationId;\n\t\t\t\t\t}\n\t\t\t\t\tif (options?.meta) {\n\t\t\t\t\t\temailHistory.meta = options.meta;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tlet history = await EmailHistories.insertOne(emailHistory);\n\t\t\t\t\treturn history;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.error('Failed to queue email:', err);\n\t\t\t\t\terr.message = `Failed to queue email: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconsole.log(\n\t\t\t\t\t'Send email',\n\t\t\t\t\tsendTo,\n\t\t\t\t\tfinalSubject,\n\t\t\t\t\tnormalizedText,\n\t\t\t\t\tnormalizedHtml,\n\t\t\t\t\tattachments,\n\t\t\t\t\tsend_from,\n\t\t\t\t\tforce_ses,\n\t\t\t\t\tcorrelationId\n\t\t\t\t);\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic getAWS(): AWS {\n\t\treturn this._aws;\n\t}\n\n\tpublic readFile(fileName) {\n\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\ttry {\n\t\t\t\treturn fs.readFileSync(path.join(__dirname, ('../private/' + fileName)), 'utf-8');\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\terr.message = `Error in readFile: ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (fs.existsSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)))) {\n\t\t\t\ttry {\n\t\t\t\t\treturn fs.readFileSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)), 'utf-8');\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in readFile: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error ('Error in readFile: File Not Found');\n\t}\n\n\tpublic readImage(fileName) {\n\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\ttry {\n\t\t\t\treturn fs.readFileSync(path.join(__dirname, ('../private/' + fileName)), 'base64');\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\terr.message = `Error in readImage: ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (fs.existsSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)))) {\n\t\t\t\ttry {\n\t\t\t\t\treturn fs.readFileSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)), 'base64');\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in readImage: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error ('Error in readImage: File Not Found');\n\t}\n\n\tpublic getEnableDebug() {\n\t\treturn this._enableDebug;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/method.manager.ts"],"names":[],"mappings":"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","file":"method.manager.js","sourcesContent":["import { S3 } from '@aws-sdk/client-s3';\nimport * as fs from 'fs';\nimport * as nodemailer from 'nodemailer';\nimport * as sesTransport from 'nodemailer-ses-transport';\nimport * as path from 'path';\nimport { EmailHistories } from '../collections/email-history.collection';\nimport { Flags } from '../collections/flag.collection';\nimport { Logs } from '../collections/log.collection';\nimport { loadServerCronJobs } from '../fixtures/cron-jobs';\nimport { loadServerInit } from '../fixtures/init';\nimport { loadAccountMethods } from '../methods/accounts';\nimport { loadAWSMethods } from '../methods/aws';\nimport { loadCollectionMethods } from '../methods/collections';\nimport { loadCounterMethods } from '../methods/counters';\nimport { loadCronJobMethods } from '../methods/cron-jobs';\nimport { loadFlagUpdatesMethods } from '../methods/flag-updates';\nimport { loadFlagMethods } from '../methods/flags';\nimport { loadLogMethods } from '../methods/logs';\nimport { loadMonitorMethods } from '../methods/monitor';\nimport { loadPDFMethods } from '../methods/pdf';\nimport { loadReportBuilderMethods } from '../methods/report-builder';\nimport { loadSupportMethods } from '../methods/support';\nimport { EmailHistoryModel, EmailHistoryOccurrence } from '../models/email-history.model';\nimport { MethodAllModel, MethodModel } from '../models/method.model';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { getBinarySize, objectIdHexString } from '../util/common';\nimport { ErrorReporter } from '../util/error-reporter';\nimport { ensureErrorWithCorrelation, getCorrelationId, runWithCorrelationContext } from '../util/error-tracking';\nimport { MonitorManagerFunction } from './monitor.manager';\nimport { WebSocketManager } from './websocket.manager';\n\ninterface SendEmailOptions {\n\tcorrelationId?: string;\n\tmeta?: Record<string, any>;\n}\n\nfunction appendCorrelationIdToSubject(subject: string, correlationId?: string): string {\n\tif (!correlationId) {\n\t\treturn subject;\n\t}\n\n\tconst correlationTag = `[${correlationId}]`;\n\n\tif (subject && subject.includes(correlationTag)) {\n\t\treturn subject;\n\t}\n\n\treturn `${subject} ${correlationTag}`.trim();\n}\n\nfunction createEmailOccurrence(subject: string, text?: string, html?: string, meta?: Record<string, any>): EmailHistoryOccurrence {\n\treturn {\n\t\t_id: objectIdHexString(),\n\t\tcreatedAt: new Date(),\n\t\tsubject,\n\t\ttext,\n\t\thtml,\n\t\tmeta\n\t};\n}\n\nfunction formatGroupedEmailContent(correlationId: string, occurrences: EmailHistoryOccurrence[]): { text: string; html: string } {\n\tconst lines: string[] = [];\n\tlines.push(`Correlation ID: ${correlationId}`);\n\n\toccurrences.forEach((occurrence, index) => {\n\t\tconst timestamp = occurrence.createdAt instanceof Date ? occurrence.createdAt.toISOString() : new Date(occurrence.createdAt).toISOString();\n\t\tlines.push('');\n\t\tlines.push(`Occurrence #${index + 1} (${timestamp})`);\n\t\tlines.push(`Subject: ${occurrence.subject}`);\n\t\tif (occurrence.text) {\n\t\t\tlines.push(occurrence.text);\n\t\t}\n\t});\n\n\tconst htmlSections = occurrences.map((occurrence, index) => {\n\t\tconst timestamp = occurrence.createdAt instanceof Date ? occurrence.createdAt.toISOString() : new Date(occurrence.createdAt).toISOString();\n\t\tconst escapedText = occurrence.text ? occurrence.text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') : '';\n\t\treturn `<div><h4>Occurrence #${index + 1} (${timestamp})</h4><p><strong>Subject:</strong> ${occurrence.subject}</p>${escapedText ? `<pre>${escapedText}</pre>` : ''}</div>`;\n\t});\n\n\tconst html = [\n\t\t`<p><strong>Correlation ID:</strong> ${correlationId}</p>`,\n\t\t...htmlSections\n\t].join('');\n\n\treturn {\n\t\ttext: lines.join('\\n'),\n\t\thtml\n\t};\n}\n\nexport class AWS {\n\tprivate _s3: S3 = null;\n\tprivate _s3USEast1: S3 = null;\n\n\tconstructor() {}\n\n\tpublic create() {\n\t\tconst aws = new AWS();\n\t\taws.initialize();\n\t\treturn aws;\n\t}\n\n\tprivate initialize() {\n\n\t}\n\n\tpublic s3(): S3 {\n\t\tif (this._s3) {\n\t\t\treturn this._s3;\n\t\t}\n\n\t\tthis._s3 = new S3({\n\t\t\tcredentials: {\n\t\t\t\taccessKeyId: process.env.AWS_ACCESS_KEY,\n\t\t\t\tsecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n\t\t\t},\n\t\t\tregion: process.env.AWS_REGION,\n\t\t\tapiVersion: '2006-03-01'\n\t\t});\n\n\t\treturn this._s3;\n\t}\n\n\tpublic s3USEast1(): S3 {\n\t\tif (process.env.AWS_REGION === 'us-east-1') {\n\t\t\treturn this.s3();\n\t\t}\n\t\telse {\n\t\t\tif (this._s3USEast1) {\n\t\t\t\treturn this._s3USEast1;\n\t\t\t}\n\t\t\t\n\t\t\tthis._s3USEast1 = new S3({\n\t\t\t\tcredentials: {\n\t\t\t\t\taccessKeyId: process.env.AWS_ACCESS_KEY,\n\t\t\t\t\tsecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n\t\t\t\t},\n\t\t\t\tregion: 'us-east-1',\n\t\t\t\tapiVersion: '2006-03-01'\n\t\t\t});\n\t\n\t\t\treturn this._s3USEast1;\n\t\t}\n\t}\n}\n\nexport class MethodManager {\n\tprivate _websocketManager: WebSocketManager;\n\tpublic _methods: MethodModel = {};\n\tprivate _mailerSES: nodemailer.Transporter;\n\tprivate _mailerCustom: nodemailer.Transporter;\n\tprivate _aws: AWS;\n\tprivate _monitorManagerFunction: MonitorManagerFunction;\n\tprivate _isWorkersEnabled = false;\n\tprivate _isWorkerInstance = false;\n\n\tprivate emailQueue: Set<string> = new Set(); // Set to store pending email IDs\n\tprivate isEmailProcessing = false;\n\tprivate readonly _emailProcessingDelayMs = 5000;\n\n\tprivate _debugcallMethodHits = 0;\n\tprivate _debugCallMethodHits = 0;\n\tprivate _debugCallMethodCronJobHits = 0;\n\tprivate _debugSendQueueHits = 0;\n\tprivate _enableDebug = false;\n\n\tpublic clientDir = '';\n\tpublic serverConfig: Record<string, any> = {};\n\n\tconstructor() {}\n\n\tstatic create(websocketManager: WebSocketManager, monitorManagerFunction: MonitorManagerFunction, isWorkersEnabled, isWorkerInstance) {\n\t\tconst methodManager = new MethodManager();\n\t\tmethodManager.initialize(websocketManager, monitorManagerFunction, isWorkersEnabled, isWorkerInstance);\n\t\treturn methodManager;\n\t}\n\n\tprivate initialize(websocketManager: WebSocketManager, monitorManagerFunction: MonitorManagerFunction, isWorkersEnabled, isWorkerInstance) {\n\t\tthis._websocketManager = websocketManager;\n\t\tthis._monitorManagerFunction = monitorManagerFunction;\n\t\tthis._isWorkersEnabled = isWorkersEnabled;\n\t\tthis._isWorkerInstance = isWorkerInstance;\n\t\t\n\t\tthis.clientDir = ResolveIOServer.getClientDir();\n\t\tthis.serverConfig = ResolveIOServer.getServerConfig();\n\n\t\t// Fixtures\n\t\tif (!process.env.IS_WORKERS_ENABLED || process.env.IS_WORKERS_ENABLED === 'false' || (process.env.IS_WORKER_INSTANCE === 'true' && process.env.WORKER_INDEX === '0')) {\n\t\t\tif (!process.env.NODE_APP_INSTANCE || process.env.NODE_APP_INSTANCE === '0') {\n\t\t\t\tsetTimeout(async () => {\n\t\t\t\t\tconsole.log(new Date(), 'Start Server Fixture');\n\t\t\t\t\tawait loadServerInit();\n\t\t\t\t\tconsole.log(new Date(), 'End Server Fixture');\n\t\t\t\t}, 5000);\n\t\t\t}\n\t\t}\n\t\t\n\t\tsetImmediate(async () => {\n\t\t\t// Methods\n\t\t\tawait loadServerCronJobs();\n\n\t\t\tloadAccountMethods(this);\n\t\t\tloadAWSMethods(this);\n\t\t\tloadCollectionMethods(this);\n\t\t\tloadCounterMethods(this);\n\t\t\tloadLogMethods(this);\n\t\t\tloadPDFMethods(this);\n\t\t\tloadCronJobMethods(this);\n\t\t\tloadFlagMethods(this);\n\t\t\tloadFlagUpdatesMethods(this);\n\t\t\tloadReportBuilderMethods(this);\n\t\t\tloadSupportMethods(this);\n\t\t\tloadMonitorMethods(this);\n\n\t\t\tlet flag = await Flags.findOne({type: 'Enable Debug'});\n\t\n\t\t\tif (flag && flag.value) {\n\t\t\t\tthis._enableDebug = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._enableDebug = false;\n\t\t\t}\n\n\t\t\tawait this.loadPendingEmails();\n\t\t});\n\t\t\n\t\tthis._aws = new AWS();\n\n\t\tthis._mailerSES = nodemailer.createTransport(sesTransport({\n\t\t\taccessKeyId: process.env.AWS_ACCESS_KEY,\n\t\t\tsecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,\n\t\t\tregion: process.env.AWS_SES_REGION\n\t\t}));\n\t\t\n\t\tif (!ResolveIOServer.getSESMail()) {\n\t\t\tthis._mailerCustom = nodemailer.createTransport({\n\t\t\t\thost: ResolveIOServer.getServerConfig()['MAIL_HOST'], // 'smtp.office365.com', // Office 365 server\n\t\t\t\tport: ResolveIOServer.getServerConfig()['MAIL_PORT'], //587, // secure SMTP\n\t\t\t\tsecure: false, // false for TLS - as a boolean not string - but the default is false so just remove this completely\n\t\t\t\tauth: {\n\t\t\t\t\tuser: ResolveIOServer.getServerConfig()['MAIL_USERNAME'],\n\t\t\t\t\tpass: ResolveIOServer.getServerConfig()['MAIL_PASSWORD']\n\t\t\t\t},\n\t\t\t\ttls: {\n\t\t\t\t\tciphers: 'SSLv3'\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tsetInterval(async () => {\n\t\t\tlet flag = await Flags.findOne({type: 'Enable Debug'});\n\t\n\t\t\tif (flag && flag.value) {\n\t\t\t\tthis._enableDebug = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._enableDebug = false;\n\t\t\t}\n\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Send Queue Hits', this._debugSendQueueHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Internal Hits', this._debugcallMethodHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Hits', this._debugCallMethodHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Cron Hits', this._debugCallMethodCronJobHits);\n\t\t\t}\n\n\t\t\tthis._debugcallMethodHits = 0;\n\t\t\tthis._debugCallMethodHits = 0;\n\t\t\tthis._debugCallMethodCronJobHits = 0;\n\t\t\tthis._debugSendQueueHits = 0;\n\t\t}, 60000);\n\n\t\tif (!this._isWorkersEnabled || this._isWorkerInstance) {\n\t\t\tthis.setupEmailWatcher();\n\t\t}\n\t}\n\n\tpublic getMethod(methodName: string): MethodAllModel {\n\t\treturn this._methods[methodName];\n\t}\n\n\t// Add methods to private methods object\n\tpublic methods(method: MethodModel) {\n\t\tthis._methods = Object.assign(this._methods, method);\n\t}\n\n\tprivate async reportMethodError(\n\t\tsubject: string,\n\t\tcorrelationId: string,\n\t\tcontext: Record<string, any> | string,\n\t\tmeta: Record<string, any>,\n\t\tstack?: string\n\t) {\n\t\tconst metadata = Object.assign({}, meta || {});\n\t\tif (correlationId && !metadata.correlationId) {\n\t\t\tmetadata.correlationId = correlationId;\n\t\t}\n\n\t\tawait ErrorReporter.report({\n\t\t\tsourceApp: 'method-manager',\n\t\t\tmessage: subject,\n\t\t\tenvironment: this.serverConfig?.ROOT_URL,\n\t\t\tclientSlug: ResolveIOServer.getClientName(),\n\t\t\tclientName: this.serverConfig?.CLIENT_NAME,\n\t\t\tseverity: 'error',\n\t\t\tstack,\n\t\t\tcontext,\n\t\t\tmetadata,\n\t\t\tcorrelationId\n\t\t});\n\t}\n\n\tpublic async callMethodCron(method: string, ...methodData: any[]) {\n\t\tthis._debugCallMethodCronJobHits += 1;\n\n\t\tconst existingCorrelationId = getCorrelationId();\n\t\tconst correlationId = existingCorrelationId || objectIdHexString();\n\n\t\tconst execute = async () => {\n\t\t\tconst cronMethod = this._methods[method];\n\n\t\t\tif (!cronMethod) {\n\t\t\t\tconsole.log('No Method: ' + method);\n\n\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\tcorrelationId,\n\t\t\t\t\t{ message: 'No Method registered for cron execution', method },\n\t\t\t\t\t{ context: 'callMethodCron', method }\n\t\t\t\t);\n\n\t\t\t\tthrow new Error('No Method: ' + method);\n\t\t\t}\n\t\t\t\n\t\t\tif ((methodData.length > 1 || methodData[0]) && !cronMethod.skipValidation) {\n\t\t\t\tif (!cronMethod.check) {\n\t\t\t\t\tconsole.error(new Date(), 'No Check Function For Cron Method ' + method);\n\n\t\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\tcorrelationId,\n\t\t\t\t\t\t{ message: 'Missing check function for cron method', method },\n\t\t\t\t\t\t{ context: 'callMethodCron-validation', method }\n\t\t\t\t\t);\n\t\t\n\t\t\t\t\tthrow new Error('No Check Function For Cron Method ' + method);\n\t\t\t\t}\n\t\t\t\telse if (!cronMethod.check._schema) {\n\t\t\t\t\tconsole.error(new Date(), 'No Check Schema For Cron Method ' + method);\n\n\t\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\tcorrelationId,\n\t\t\t\t\t\t{ message: 'Missing check schema for cron method', method },\n\t\t\t\t\t\t{ context: 'callMethodCron-validation', method }\n\t\t\t\t\t);\n\t\t\n\t\t\t\t\tthrow new Error('No Check Schema For Cron Method ' + method);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst valObj = {};\n\t\t\t\t\tconst valKeys = Object.keys(cronMethod.check._schema);\n\n\t\t\t\t\tconst rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 0; i < methodData.length; i++) {\n\t\t\t\t\t\tvalObj[rootKeys[i]] = methodData[i];\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcronMethod.check.validate(valObj);\n\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tconsole.error(new Date(), 'Error in Cron Method Check (' + method + ')', err);\n\n\t\t\t\t\t\t\tconst { error: normalizedError, correlationId: resolvedCorrelationId } = ensureErrorWithCorrelation(err, correlationId);\n\n\t\t\t\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\t\t\tresolvedCorrelationId,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmessage: 'Match error on cron method',\n\t\t\t\t\t\t\t\t\tmethod,\n\t\t\t\t\t\t\t\t\tdata: valObj,\n\t\t\t\t\t\t\t\t\tvalidationError: normalizedError\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ context: 'callMethodCron-validation-error', method },\n\t\t\t\t\t\t\t\tnormalizedError.stack\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tnormalizedError.message = `${new Date().toISOString()} - Error in Cron Method Check (${method}): ${normalizedError.message}`;\n\n\t\t\t\t\t\t\tthrow normalizedError;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst monitor = this._monitorManagerFunction.startMonitorFunction('Cron Method', method, '', '', methodData);\n\n\t\t\ttry {\n\t\t\t\tconst res = await cronMethod.function.call(Object.assign({}, this, MethodManager.prototype, {id_user: '', user: '', id_ws: ''}), ...methodData);\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconst { error: normalizedError, correlationId: resolvedCorrelationId } = ensureErrorWithCorrelation(err, correlationId);\n\n\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\tresolvedCorrelationId,\n\t\t\t\t\t{\n\t\t\t\t\t\tmessage: 'Error detected during cron method execution',\n\t\t\t\t\t\tmethod,\n\t\t\t\t\t\tdata: methodData,\n\t\t\t\t\t\terror: normalizedError\n\t\t\t\t\t},\n\t\t\t\t\t{ context: 'callMethodCron-execution', method },\n\t\t\t\t\tnormalizedError.stack\n\t\t\t\t);\n\t\t\t\t\n\t\t\t\tnormalizedError.message = `${new Date().toISOString()} - Error in Cron Method (${method}): ${normalizedError.message}`;\n\t\t\t\t\n\t\t\t\tthrow normalizedError;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\t}\n\t\t};\n\n\t\treturn await runWithCorrelationContext(correlationId, execute);\n\t}\n\n\t// Call/run method internal (No Emit on Socket)\n\tpublic async callMethod(methodName: string, ...methodData: any[]): Promise<any> {\n\t\tthis._debugcallMethodHits += 1;\n\n\t\tconst existingCorrelationId = getCorrelationId();\n\t\tconst correlationId = existingCorrelationId || objectIdHexString();\n\n\t\treturn await runWithCorrelationContext(correlationId, async () => await this.callMethodInternal(correlationId, methodName, methodData));\n\t}\n\n\tprivate async callMethodInternal(correlationId: string, methodName: string, methodData: any[]): Promise<any> {\n\t\tconst method = this.getMethod(methodName);\n\n\t\tif (!method) {\n\t\t\tconsole.log('No Method: ' + methodName);\n\t\t\tthrow new Error(`No Method: ${methodName}`);\n\t\t}\n\n\t\tif ((methodData.length > 1 || (methodData[0] && typeof methodData[0] !== 'function')) && !method.skipValidation) {\n\t\t\tif (!method.check) {\n\t\t\t\tconsole.error(new Date(), 'No Check Function For Method ' + methodName);\n\t\t\t\tthrow new Error(`No Check Function For Method: ${methodName}`);\n\t\t\t}\n\t\t\telse if (!method.check._schema) {\n\t\t\t\tconsole.error(new Date(), 'No Check Schema For Method ' + methodName);\n\t\t\t\tthrow new Error(`No Check Schema For Method: ${methodName}`);\n\t\t\t}\n\t\t}\n\n\t\tif (methodName !== 'insertSubscriptionLog' && methodName !== 'getDataURIfromURL' && methodName !== 'processAirdropDistribution' && methodName !== 'incCounter' && methodName !== 'supportCreateBillingUser' && methodName !== 'countCollectionWithQuery') {\n\t\t\tif (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\t\t\t\ttype: 'callMethod',\n\t\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([methodData])) < 1000000 ? JSON.stringify([methodData], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\t\t\t\tuser: this['user'] || '', \n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcorrelationId\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tawait Logs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'callMethod',\n\t\t\t\t\tcollection: '',\n\t\t\t\t\tid_document: '',\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([methodData])) < 1000000 ? JSON.stringify([methodData], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: methodName,\n\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\tuser: this['user'] || '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: '',\n\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\tinstance: 'backend.resolveio.com',\n\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\tcorrelationId\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\n\t\tconst functionMethodData = typeof(methodData[methodData.length - 1]) === 'function' ? methodData.slice(0, -1) : methodData;\n\n\t\tconst session = ResolveIOServer.getMongoManager().getSession();\n\n\t\tif (!method.bypassSession &&\n\t\t\t!session && \n\t\t\t![\n\t\t\t\t'insertErrorLog', // CIRCULAR LOOP - DO NOT REMOVE\n\t\t\t\t'countWithQuery', // MONGO SESSIONS/TRANSACTIONS DONT WORK WITH COUNTS\n\t\t\t\t'sendEmail' // ALWAYS SEND SO ALWAYS HAVE RECORD - DONT ROLL BACK - BYPASS SESSION\n\t\t\t].includes(methodName) &&\n\t\t\t!methodName.startsWith('monitor-') &&\n\t\t\t!methodName.startsWith('log')\n\t\t) {\n\t\t\tlet monitor = null;\n\t\t\t\n\t\t\treturn ResolveIOServer.getMongoManager().oneTimeTransaction(async () => {\n\t\t\t\t// console.log(new Date(), 'Calling Method - New Session', methodName);\n\n\t\t\t\tmonitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await method.function.call(Object.assign({}, this, MethodManager.prototype), ...functionMethodData);\n\n\t\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\t\tmethodData[methodData.length - 1](null, res);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tif (err.code === 112 || err.codeName === 'WriteConflict' || err.code === 251 || err.codeName === 'NoSuchTransaction') {\n\t\t\t\t\t\tthrow err; // Write error, retry\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { error: normalizedError, correlationId: resolvedCorrelationId } = ensureErrorWithCorrelation(err, correlationId);\n\n\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Method Manager - Run Method - New Session', methodName, {\n\t\t\t\t\t\tcode: normalizedError.code,\n\t\t\t\t\t\tcodeName: normalizedError.codeName,\n\t\t\t\t\t\tmessage: normalizedError.message,\n\t\t\t\t\t\tstack: normalizedError.stack,\n\t\t\t\t\t\tcorrelationId: resolvedCorrelationId\n\t\t\t\t\t}], null, 2));\n\n\t\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\tresolvedCorrelationId,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessage: 'Error detected during method execution (new session)',\n\t\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\t\tdata: methodData,\n\t\t\t\t\t\t\terror: normalizedError\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ context: 'callMethod-new-session', methodName },\n\t\t\t\t\t\tnormalizedError.stack\n\t\t\t\t\t);\n\t\t\t\t\tnormalizedError.message = `${new Date().toISOString()} - Error in Method With Session (${methodName}) - New Session: ${normalizedError.message}`;\n\n\t\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\t\tmethodData[methodData.length - 1](normalizedError, null);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!process.env.IS_WORKER_INSTANCE) {\n\t\t\t\t\t\tawait this.callMethod(\n\t\t\t\t\t\t\t'insertErrorLog',\n\t\t\t\t\t\t\t`Error in Method: ${methodName}`,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\t\t\tmethodData,\n\t\t\t\t\t\t\t\terror: {\n\t\t\t\t\t\t\t\t\tmessage: normalizedError.message,\n\t\t\t\t\t\t\t\t\tstack: normalizedError.stack,\n\t\t\t\t\t\t\t\t\tcode: normalizedError.code,\n\t\t\t\t\t\t\t\t\tcodeName: normalizedError.codeName\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcorrelationId: resolvedCorrelationId\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow normalizedError;\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\t// console.log(new Date(), 'Calling Method - Existing Session', methodName);\n\n\t\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tlet res = await method.function.call(Object.assign({}, this, MethodManager.prototype), ...functionMethodData);\n\n\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\tmethodData[methodData.length - 1](null, res);\n\t\t\t\t}\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tif (err.code === 112 || err.codeName === 'WriteConflict' || err.code === 251 || err.codeName === 'NoSuchTransaction') {\n\t\t\t\t\tthrow err; // Write error, retry\n\t\t\t\t}\n\n\t\t\t\tconst { error: normalizedError, correlationId: resolvedCorrelationId } = ensureErrorWithCorrelation(err, correlationId);\n\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Method Manager - Run Method - Existing Session', methodName, {\n\t\t\t\t\tcode: normalizedError.code,\n\t\t\t\t\tcodeName: normalizedError.codeName,\n\t\t\t\t\tmessage: normalizedError.message,\n\t\t\t\t\tstack: normalizedError.stack,\n\t\t\t\t\tcorrelationId: resolvedCorrelationId\n\t\t\t\t}], null, 2));\n\n\t\t\t\tawait this.reportMethodError(\n\t\t\t\t\t'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\tresolvedCorrelationId,\n\t\t\t\t\t{\n\t\t\t\t\t\tmessage: 'Error detected during method execution (existing session)',\n\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\tdata: methodData,\n\t\t\t\t\t\terror: normalizedError\n\t\t\t\t\t},\n\t\t\t\t\t{ context: 'callMethod-existing-session', methodName },\n\t\t\t\t\tnormalizedError.stack\n\t\t\t\t);\n\t\t\t\tnormalizedError.message = `${new Date().toISOString()} - Error in Method (${methodName}) - Existing Session: ${normalizedError.message}`;\n\t\t\t\t\n\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\tmethodData[methodData.length - 1](normalizedError, null);\n\t\t\t\t}\n\n\t\t\t\tif (!process.env.IS_WORKER_INSTANCE) {\n\t\t\t\t\tawait this.callMethod(\n\t\t\t\t\t\t'insertErrorLog',\n\t\t\t\t\t\t`Error in Method: ${methodName}`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\t\tmethodData,\n\t\t\t\t\t\t\terror: {\n\t\t\t\t\t\t\t\tmessage: normalizedError.message,\n\t\t\t\t\t\t\t\tstack: normalizedError.stack,\n\t\t\t\t\t\t\t\tcode: normalizedError.code,\n\t\t\t\t\t\t\t\tcodeName: normalizedError.codeName\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcorrelationId: resolvedCorrelationId\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthrow normalizedError;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\t}\n\t\t}\n\t}\n\n\tsetupEmailWatcher() {\n\t\tconst changeStream = EmailHistories.watchCollection([]);\n\n\t\tchangeStream.on('change', async (change) => {\n\t\t\tif (change.operationType === 'insert' && change.fullDocument && change.fullDocument.status === 'pending') {\n\t\t\t\tthis.emailQueue.add(change.fullDocument._id.toString());\n\t\t\t\tawait this.tryProcessEmail();\n\t\t\t}\n\t\t\telse if (change.operationType === 'update' || change.operationType === 'replace') {\n\t\t\t\tconst updatedEmail = change.fullDocument;\n\t\t\t\tif (updatedEmail && updatedEmail.status !== 'pending' && this.emailQueue.has(updatedEmail._id.toString())) {\n\t\t\t\t\tthis.emailQueue.delete(updatedEmail._id.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.on('error', async err => {\n\t\t\tconsole.error('Email history changestream error', err);\n\t\t\tawait changeStream.close();\n\t\t})\n\t\t.on('close', () => {\n\t\t\tthis.setupEmailWatcher();\n\t\t});\n\t}\n\n\tasync loadPendingEmails() {\n\t\t// Load any pending emails on startup\n\t\tconst pendingEmails = await EmailHistories.find({ status: 'pending' }, {sort: {_id: 1}});\n\t\tfor (const email of pendingEmails) {\n\t\t\tthis.emailQueue.add(email._id.toString());\n\t\t}\n\t\t// Try to process emails\n\t\tawait this.tryProcessEmail();\n\t}\n\n\tasync tryProcessEmail() {\n\t\tif (this.isEmailProcessing || this.emailQueue.size === 0) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tthis.isEmailProcessing = true;\n\t\n\t\ttry {\n\t\t\twhile (this.emailQueue.size > 0) {\n\t\t\t\tconst emailId = this.emailQueue.values().next().value;\n\t\t\t\tthis.emailQueue.delete(emailId);\n\t\n\t\t\t\tconst pendingEmail = await EmailHistories.findOne(\n\t\t\t\t\t{\n\t\t\t\t\t\t_id: emailId,\n\t\t\t\t\t\tstatus: 'pending',\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif (!pendingEmail) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet queuedAt: Date;\n\t\t\t\tif (pendingEmail.date instanceof Date) {\n\t\t\t\t\tqueuedAt = pendingEmail.date;\n\t\t\t\t}\n\t\t\t\telse if (pendingEmail.createdAt instanceof Date) {\n\t\t\t\t\tqueuedAt = pendingEmail.createdAt;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tqueuedAt = new Date();\n\t\t\t\t}\n\n\t\t\t\tconst timeSinceQueued = Date.now() - queuedAt.getTime();\n\t\t\t\tconst remainingDelay = this._emailProcessingDelayMs - timeSinceQueued;\n\n\t\t\t\tif (remainingDelay > 0) {\n\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\tawait new Promise(resolve => setTimeout(resolve, remainingDelay));\n\t\t\t\t}\n\n\t\t\t\tconst emailHistory = await EmailHistories.findOneAndUpdate(\n\t\t\t\t\t{\n\t\t\t\t\t\t_id: emailId,\n\t\t\t\t\t\tstatus: 'pending',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$set: { status: 'processing', processingAt: new Date() },\n\t\t\t\t\t}\n\t\t\t\t);\n\t\n\t\t\t\tif (!emailHistory) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\n\t\t\t\t// Fetch and process attachments\n if (emailHistory.attachments && emailHistory.attachments.length > 0) {\n\t\t\t\t\tconst validAttachments: any[] = [];\n\t\t\t\t\tlet attachmentError = false;\n\n\t\t\t\t\tfor (const att of emailHistory.attachments) {\n\t\t\t\t\t\tif (att.path && att.path.startsWith('http')) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst response = await fetch(att.path);\n\t\t\t\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\t\t\t\tattachmentError = true;\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst arrayBuffer = await response.arrayBuffer();\n\t\t\t\t\t\t\t\tconst buffer = Buffer.from(arrayBuffer);\n\n\t\t\t\t\t\t\t\t// Check the size of the attachment\n\t\t\t\t\t\t\t\tconst maxSize = 20 * 1024 * 1024; // 20MB in bytes\n\t\t\t\t\t\t\t\tif (buffer.length <= maxSize) {\n\t\t\t\t\t\t\t\t\t// Attachment is within size limits, include it\n\t\t\t\t\t\t\t\t\tatt.content = buffer;\n\t\t\t\t\t\t\t\t\tdelete att.path;\n\t\t\t\t\t\t\t\t\tvalidAttachments.push(att);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\t\tconsole.error('Failed to fetch attachment:', err);\n\t\t\t\t\t\t\t\tattachmentError = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvalidAttachments.push(att);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\temailHistory.attachments = validAttachments;\n\t\t\t\t\tif (attachmentError) {\n\t\t\t\t\t\t\temailHistory.text =\n\t\t\t\t\t\t\t\t\t(typeof emailHistory.text === 'string' ? emailHistory.text : '') +\n\t\t\t\t\t\t\t\t\t'\\n\\nCould not load attachments.';\n\t\t\t\t\t\t\temailHistory.html =\n\t\t\t\t\t\t\t\t\t(typeof emailHistory.html === 'string' ? emailHistory.html : '') +\n\t\t\t\t\t\t\t\t\t'<p>Could not load attachments.</p>';\n\t\t\t\t\t}\n }\n\t\n\t\t\t\t// Prepare email options\n\t\t\t\tconst mailOptions: any = {\n\t\t\t\t\treplyTo: emailHistory.reply_to || (ResolveIOServer.getServerConfig()['MAIL_REPLY_TO'] || undefined),\n\t\t\t\t\tfrom: emailHistory.send_from || ResolveIOServer.getServerConfig().MAIL_FROM,\n\t\t\t\t\tto: emailHistory.email,\n\t\t\t\t\tsubject:\n\t\t\t\t\t\t(ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/dev\\./) ||\n\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/www\\.dev\\./)\n\t\t\t\t\t\t\t? '(DEV SERVER) - '\n\t\t\t\t\t\t\t: '') + emailHistory.subject,\n\t\t\t\t\ttext: typeof emailHistory.text === 'string' ? emailHistory.text : '',\n\t\t\t\t\thtml: typeof emailHistory.html === 'string' ? emailHistory.html : '',\n\t\t\t\t\tattachments: emailHistory.attachments || [],\n\t\t\t\t\tforce_ses: emailHistory.force_ses\n\t\t\t\t};\n\t\n\t\t\t\t// Process attachments before sending\n\t\t\t\tif (mailOptions.attachments && mailOptions.attachments.length > 0) {\n\t\t\t\t\tmailOptions.attachments = mailOptions.attachments.map((att) => {\n\t\t\t\t\t\tconst newAtt = { ...att };\n\t\t\t\t\t\t// Handle attachments stored as BinData or Buffer\n\t\t\t\t\t\tif (newAtt.content && typeof newAtt.content === 'object' && !(newAtt.content instanceof Buffer)) {\n\t\t\t\t\t\t\t// Convert MongoDB's Binary data to Buffer\n\t\t\t\t\t\t\tif (newAtt.content._bsontype === 'Binary' && newAtt.content.sub_type === 0) {\n\t\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content.buffer);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t// Handle other types if necessary\n\t\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Handle attachments stored as Base64 strings\n\t\t\t\t\t\telse if (typeof newAtt.content === 'string' && newAtt.encoding === 'base64') {\n\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content, 'base64');\n\t\t\t\t\t\t\tdelete newAtt.encoding;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Ensure the content is a Buffer\n\t\t\t\t\t\telse if (typeof newAtt.content === 'string') {\n\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn newAtt;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\n\t\t\t\t// Send the email\n\t\t\t\t(!mailOptions.force_ses && this._mailerCustom ? this._mailerCustom : this._mailerSES).sendMail(mailOptions, async err => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tconsole.error('Failed to send email:', err);\n\t\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\t\t\t\terror: typeof err === 'string' ? err : this.safeStringify(err),\n\t\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (emailHistory.email === 'dev@resolveio.com') {\n\t\t\t\t\t\t\t\tawait EmailHistories.deleteOne({ _id: emailHistory._id });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\t\t\tstatus: 'completed',\n\t\t\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\tconsole.error('Error in sendMail callback:', error);\n\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\t\t\terror: typeof error === 'string' ? error : this.safeStringify(error),\n\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} \n\t\t\t\t});\n\t\n\t\t\t\t// Wait for at least one second before sending the next email\n\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 1000));\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.error('Error processing email queue:', err);\n\t\t}\n\t\tfinally {\n\t\t\tthis.isEmailProcessing = false;\n\t\t\t// Check if new emails arrived while processing\n\t\t\tif (this.emailQueue.size > 0) {\n\t\t\t\tawait this.tryProcessEmail();\n\t\t\t}\n\t\t}\n\t}\n\n\tsafeStringify(obj)\n\t{\n\t\ttry\n\t\t{\n\t\t\treturn JSON.stringify(obj, this.getCircularReplacer());\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\treturn `Error in JSON stringifying: ${e.message}`;\n\t\t}\n\t}\n\n\tgetCircularReplacer()\n\t{\n\t\tconst seen = new WeakSet();\n\t\treturn (key, value) =>\n\t\t{\n\t\t\tif (typeof value === \"object\" && value !== null)\n\t\t\t{\n\t\t\t\tif (seen.has(value))\n\t\t\t\t{\n\t\t\t\t\treturn \"[Circular]\";\n\t\t\t\t}\n\t\t\t\tseen.add(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t};\n\t}\n\n\tprivate async tryMergeEmailOccurrence(\n\t\temail: string,\n\t\tsubject: string,\n\t\tcorrelationId: string,\n\t\toccurrence: EmailHistoryOccurrence,\n\t\tmeta?: Record<string, any>\n\t): Promise<EmailHistoryModel | null> {\n\t\tconst existing = await EmailHistories.findOne(\n\t\t\t{\n\t\t\t\temail,\n\t\t\t\tcorrelationId,\n\t\t\t\tstatus: 'pending'\n\t\t\t},\n\t\t\t{ sort: { date: 1 } }\n\t\t);\n\n\t\tif (!existing) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst normalizedOccurrences: EmailHistoryOccurrence[] = Array.isArray(existing.occurrences) && existing.occurrences.length\n\t\t\t? existing.occurrences.map((item: EmailHistoryOccurrence) => ({\n\t\t\t\t_id: item._id || objectIdHexString(),\n\t\t\t\tcreatedAt: item.createdAt instanceof Date ? item.createdAt : new Date(item.createdAt),\n\t\t\t\tsubject: item.subject || existing.subject || '',\n\t\t\t\ttext: item.text,\n\t\t\t\thtml: item.html,\n\t\t\t\tmeta: item.meta\n\t\t\t}))\n\t\t\t: [createEmailOccurrence(\n\t\t\t\texisting.subject || '',\n\t\t\t\ttypeof existing.text === 'string' ? existing.text : undefined,\n\t\t\t\ttypeof existing.html === 'string' ? existing.html : undefined,\n\t\t\t\texisting.meta\n\t\t\t)];\n\n\t\tnormalizedOccurrences.push(occurrence);\n\n\t\tconst { text: aggregatedText, html: aggregatedHtml } = formatGroupedEmailContent(correlationId, normalizedOccurrences);\n\n\t\tconst updated = await EmailHistories.findOneAndUpdate(\n\t\t\t{\n\t\t\t\t_id: existing._id,\n\t\t\t\tstatus: 'pending'\n\t\t\t},\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\tsubject,\n\t\t\t\t\ttext: aggregatedText,\n\t\t\t\t\thtml: aggregatedHtml,\n\t\t\t\t\toccurrences: normalizedOccurrences,\n\t\t\t\t\tmeta: meta || existing.meta,\n\t\t\t\t\tupdatedAt: new Date()\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ returnDocument: 'after' }\n\t\t);\n\n\t\treturn updated || null;\n\t}\n\n\tpublic async sendEmail(\n\t\tsendTo: string,\n\t\tsubject: string,\n\t\ttext?: string | null,\n\t\thtml?: string | null,\n\t\tattachments?: any[] | null,\n\t\tsend_from?: string | null,\n\t\treply_to?: string | null,\n\t\tforce_ses = false,\n\t\tlocal_override = false,\n\t\toptions?: SendEmailOptions\n\t) {\n\t\t// Modify sendTo in development environments\n\t\tif (\n\t\t\t(ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/dev\\./) ||\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/www\\.dev\\./) ||\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200') &&\n\t\t\t!sendTo.match(/\\@resolveio\\.com/)\n\t\t) {\n\t\t\tsendTo = 'dev@resolveio.com';\n\t\t}\n\n\t\tconst normalizedSubject = subject || '';\n\t\tconst correlationId = options?.correlationId;\n\t\tconst finalSubject = appendCorrelationIdToSubject(normalizedSubject, correlationId);\n\t\tconst groupByCorrelationId = !!correlationId;\n\t\tconst normalizedText = typeof text === 'string' ? text : '';\n\t\tconst normalizedHtml = typeof html === 'string' ? html : '';\n\t\tconst occurrence = groupByCorrelationId\n\t\t\t? createEmailOccurrence(normalizedSubject, normalizedText, normalizedHtml, options?.meta)\n\t\t\t: null;\n\t\tlet allowGrouping = groupByCorrelationId;\n\n\t\tif (sendTo) {\n\t\t\tif (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200' ||\n\t\t\t\tlocal_override\n\t\t\t) {\n\t\t\t\tlet normalizedAttachments: any[] = [];\n\t\t\t\tif (Array.isArray(attachments)) {\n\t\t\t\t\tnormalizedAttachments = attachments.slice();\n\t\t\t\t}\n\t\t\t\telse if (attachments) {\n\t\t\t\t\tnormalizedAttachments = [attachments];\n\t\t\t\t}\n\n\t\t\t\tnormalizedAttachments = normalizedAttachments.map(att => {\n\t\t\t\t\tconst newAtt = { ...att };\n\t\t\t\t\tif (Buffer.isBuffer(newAtt.content)) {\n\t\t\t\t\t\tnewAtt.content = newAtt.content.toString('base64');\n\t\t\t\t\t\tnewAtt.encoding = 'base64';\n\t\t\t\t\t}\n\t\t\t\t\treturn newAtt;\n\t\t\t\t});\n\n\t\t\t\tif (normalizedAttachments.length > 0) {\n\t\t\t\t\tallowGrouping = false;\n\t\t\t\t}\n\n\t\t\t\tif (allowGrouping && occurrence && correlationId) {\n\t\t\t\t\tconst merged = await this.tryMergeEmailOccurrence(sendTo, finalSubject, correlationId, occurrence, options?.meta);\n\t\t\t\t\tif (merged) {\n\t\t\t\t\t\treturn merged;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst emailHistory: EmailHistoryModel = {\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t__v: 0,\n\t\t\t\t\tdate: new Date(),\n\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\tuser: this['user'] || '',\n\t\t\t\t\temail: sendTo,\n\t\t\t\t\tsubject: finalSubject,\n\t\t\t\t\ttext: normalizedText,\n\t\t\t\t\thtml: normalizedHtml,\n\t\t\t\t\tattachments: normalizedAttachments,\n\t\t\t\t\tsend_from: send_from || '',\n\t\t\t\t\treply_to: reply_to || '',\n\t\t\t\t\tstatus: 'pending',\n\t\t\t\t\terror: '',\n\t\t\t\t\tforce_ses\n\t\t\t\t};\n\n\t\t\t\tif (allowGrouping && occurrence && correlationId) {\n\t\t\t\t\tconst { text: aggregatedText, html: aggregatedHtml } = formatGroupedEmailContent(correlationId, [occurrence]);\n\t\t\t\t\temailHistory.text = aggregatedText;\n\t\t\t\t\temailHistory.html = aggregatedHtml;\n\t\t\t\t\temailHistory.occurrences = [occurrence];\n\t\t\t\t\temailHistory.correlationId = correlationId;\n\t\t\t\t\tif (options?.meta) {\n\t\t\t\t\t\temailHistory.meta = options.meta;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (correlationId) {\n\t\t\t\t\t\temailHistory.correlationId = correlationId;\n\t\t\t\t\t}\n\t\t\t\t\tif (options?.meta) {\n\t\t\t\t\t\temailHistory.meta = options.meta;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tlet history = await EmailHistories.insertOne(emailHistory);\n\t\t\t\t\treturn history;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.error('Failed to queue email:', err);\n\t\t\t\t\terr.message = `Failed to queue email: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconsole.log(\n\t\t\t\t\t'Send email',\n\t\t\t\t\tsendTo,\n\t\t\t\t\tfinalSubject,\n\t\t\t\t\tnormalizedText,\n\t\t\t\t\tnormalizedHtml,\n\t\t\t\t\tattachments,\n\t\t\t\t\tsend_from,\n\t\t\t\t\tforce_ses,\n\t\t\t\t\tcorrelationId\n\t\t\t\t);\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic getAWS(): AWS {\n\t\treturn this._aws;\n\t}\n\n\tpublic readFile(fileName) {\n\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\ttry {\n\t\t\t\treturn fs.readFileSync(path.join(__dirname, ('../private/' + fileName)), 'utf-8');\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\terr.message = `Error in readFile: ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (fs.existsSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)))) {\n\t\t\t\ttry {\n\t\t\t\t\treturn fs.readFileSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)), 'utf-8');\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in readFile: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error ('Error in readFile: File Not Found');\n\t}\n\n\tpublic readImage(fileName) {\n\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\ttry {\n\t\t\t\treturn fs.readFileSync(path.join(__dirname, ('../private/' + fileName)), 'base64');\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\terr.message = `Error in readImage: ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (fs.existsSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)))) {\n\t\t\t\ttry {\n\t\t\t\t\treturn fs.readFileSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)), 'base64');\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in readImage: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error ('Error in readImage: File Not Found');\n\t}\n\n\tpublic getEnableDebug() {\n\t\treturn this._enableDebug;\n\t}\n}\n"]}
|
|
@@ -1382,6 +1382,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
1382
1382
|
user: '',
|
|
1383
1383
|
messageId: 0,
|
|
1384
1384
|
route: '',
|
|
1385
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
1385
1386
|
createdAt: new Date()
|
|
1386
1387
|
});
|
|
1387
1388
|
}
|
|
@@ -1763,6 +1764,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
1763
1764
|
user: '',
|
|
1764
1765
|
messageId: 0,
|
|
1765
1766
|
route: '',
|
|
1767
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
1766
1768
|
createdAt: new Date()
|
|
1767
1769
|
}
|
|
1768
1770
|
});
|
|
@@ -1884,6 +1886,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
1884
1886
|
user: '',
|
|
1885
1887
|
messageId: 0,
|
|
1886
1888
|
route: '',
|
|
1889
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
1887
1890
|
createdAt: new Date()
|
|
1888
1891
|
}
|
|
1889
1892
|
});
|
|
@@ -2464,6 +2467,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
2464
2467
|
user: '',
|
|
2465
2468
|
messageId: 0,
|
|
2466
2469
|
route: '',
|
|
2470
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
2467
2471
|
createdAt: new Date()
|
|
2468
2472
|
}
|
|
2469
2473
|
});
|
|
@@ -2596,6 +2600,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
2596
2600
|
user: '',
|
|
2597
2601
|
messageId: 0,
|
|
2598
2602
|
route: '',
|
|
2603
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
2599
2604
|
createdAt: new Date()
|
|
2600
2605
|
}
|
|
2601
2606
|
});
|
|
@@ -2745,6 +2750,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
2745
2750
|
user: '',
|
|
2746
2751
|
messageId: 0,
|
|
2747
2752
|
route: '',
|
|
2753
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
2748
2754
|
createdAt: new Date()
|
|
2749
2755
|
}
|
|
2750
2756
|
});
|
|
@@ -2974,6 +2980,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
2974
2980
|
user: '',
|
|
2975
2981
|
messageId: 0,
|
|
2976
2982
|
route: '',
|
|
2983
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
2977
2984
|
createdAt: new Date()
|
|
2978
2985
|
}
|
|
2979
2986
|
});
|
|
@@ -3093,6 +3100,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
3093
3100
|
user: '',
|
|
3094
3101
|
messageId: 0,
|
|
3095
3102
|
route: '',
|
|
3103
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
3096
3104
|
createdAt: new Date()
|
|
3097
3105
|
}
|
|
3098
3106
|
});
|
|
@@ -3309,6 +3317,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
3309
3317
|
user: '',
|
|
3310
3318
|
messageId: 0,
|
|
3311
3319
|
route: '',
|
|
3320
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
3312
3321
|
createdAt: new Date()
|
|
3313
3322
|
}
|
|
3314
3323
|
});
|
|
@@ -3391,6 +3400,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
3391
3400
|
user: '',
|
|
3392
3401
|
messageId: 0,
|
|
3393
3402
|
route: '',
|
|
3403
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
3394
3404
|
createdAt: new Date()
|
|
3395
3405
|
}
|
|
3396
3406
|
});
|
|
@@ -3468,6 +3478,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
3468
3478
|
user: '',
|
|
3469
3479
|
messageId: 0,
|
|
3470
3480
|
route: '',
|
|
3481
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
3471
3482
|
createdAt: new Date()
|
|
3472
3483
|
}
|
|
3473
3484
|
});
|
|
@@ -3570,6 +3581,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
3570
3581
|
user: '',
|
|
3571
3582
|
messageId: 0,
|
|
3572
3583
|
route: '',
|
|
3584
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
3573
3585
|
createdAt: new Date()
|
|
3574
3586
|
}
|
|
3575
3587
|
});
|
|
@@ -3610,6 +3622,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
3610
3622
|
user: '',
|
|
3611
3623
|
messageId: 0,
|
|
3612
3624
|
route: '',
|
|
3625
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
3613
3626
|
createdAt: new Date()
|
|
3614
3627
|
}
|
|
3615
3628
|
});
|
|
@@ -3770,6 +3783,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
3770
3783
|
user: '',
|
|
3771
3784
|
messageId: 0,
|
|
3772
3785
|
route: '',
|
|
3786
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
3773
3787
|
createdAt: new Date()
|
|
3774
3788
|
}
|
|
3775
3789
|
});
|
|
@@ -3946,6 +3960,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
3946
3960
|
user: '',
|
|
3947
3961
|
messageId: 0,
|
|
3948
3962
|
route: '',
|
|
3963
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
3949
3964
|
createdAt: new Date()
|
|
3950
3965
|
}
|
|
3951
3966
|
});
|
|
@@ -4066,6 +4081,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
4066
4081
|
user: '',
|
|
4067
4082
|
messageId: 0,
|
|
4068
4083
|
route: '',
|
|
4084
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
4069
4085
|
createdAt: new Date()
|
|
4070
4086
|
}
|
|
4071
4087
|
});
|
|
@@ -4181,6 +4197,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
4181
4197
|
user: '',
|
|
4182
4198
|
messageId: 0,
|
|
4183
4199
|
route: '',
|
|
4200
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
4184
4201
|
createdAt: new Date()
|
|
4185
4202
|
}
|
|
4186
4203
|
});
|
|
@@ -4222,6 +4239,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
4222
4239
|
user: '',
|
|
4223
4240
|
messageId: 0,
|
|
4224
4241
|
route: '',
|
|
4242
|
+
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
4225
4243
|
createdAt: new Date()
|
|
4226
4244
|
}
|
|
4227
4245
|
});
|