@resolveio/server-lib 12.4.4 → 12.4.6

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.
@@ -181,50 +181,54 @@ var MethodManager = /** @class */ (function () {
181
181
  if (!_this._runningQueue) {
182
182
  if (_this._sendQueue.length) {
183
183
  _this._runningQueue = true;
184
- _this._debugSendQueueHits += 1;
185
- var sendQueue = _this._sendQueue[_this._sendQueue.length - 1];
186
- var ws_1 = _this._mainServer.getWS(sendQueue.id_ws);
187
- if (ws_1 && ws_1.readyState === ws_1.OPEN) {
188
- if (ws_1.bufferedAmount < 20480) {
189
- var sendItem = _this._sendQueue.pop();
190
- ws_1.send(JSON.stringify(sendItem.data), function (error) {
191
- if (error) {
192
- console.log('Error on WS: ', error);
193
- _this._mainServer.unsubscribeWS(ws_1);
184
+ var _loop_1 = function (i) {
185
+ _this._debugSendQueueHits += 1;
186
+ var ws = _this._mainServer.getWS(_this._sendQueue[i].id_ws);
187
+ if (ws && ws.readyState === ws.OPEN) {
188
+ if (ws.bufferedAmount < 20480) {
189
+ var sendItem = _this._sendQueue.pop();
190
+ ws.send(JSON.stringify(sendItem.data), function (error) {
191
+ if (error) {
192
+ console.log('Error on WS: ', error);
193
+ _this._mainServer.unsubscribeWS(ws);
194
+ }
195
+ });
196
+ if (sendItem.method !== 'reportBuilderGetResults' && sendItem.method !== 'reportBuilderGetDistinctValue' && sendItem.method !== 'reportBuilderBuildTree' && sendItem.method !== 'generatePDF' && sendItem.method !== 'getWOOfflineData' && sendItem.method !== 'countQuery' && sendItem.method !== 'countWithQuery' && sendItem.method !== 'countCollectionWithQuery' && sendItem.method !== 'find' && sendItem.method !== 'findOne' && sendItem.method !== 'findWithOptions' && sendItem.method !== 'uploadFileAndSave' && sendItem.method !== 'getDrivers') {
197
+ log_collection_1.Logs.insertOne({
198
+ _id: mongo_manager_1.objectIdHexString(),
199
+ type: 'client-response',
200
+ collection: '',
201
+ id_document: '',
202
+ payload: common_1.getBinarySize(JSON.stringify([sendItem.methodData, sendItem.data])) < 200000 ? JSON.stringify([sendItem.methodData, sendItem.data], null, 2) : 'Too Big',
203
+ method: sendItem.method,
204
+ id_user: ws['id_user'] || '',
205
+ user: ws['user'] || '',
206
+ messageId: sendItem.data.messageId,
207
+ route: ''
208
+ });
194
209
  }
195
- });
196
- if (sendItem.method !== 'reportBuilderGetResults' && sendItem.method !== 'reportBuilderGetDistinctValue' && sendItem.method !== 'reportBuilderBuildTree' && sendItem.method !== 'generatePDF' && sendItem.method !== 'getWOOfflineData' && sendItem.method !== 'countQuery' && sendItem.method !== 'countWithQuery' && sendItem.method !== 'countCollectionWithQuery' && sendItem.method !== 'find' && sendItem.method !== 'findOne' && sendItem.method !== 'findWithOptions' && sendItem.method !== 'uploadFileAndSave' && sendItem.method !== 'getDrivers') {
197
- log_collection_1.Logs.insertOne({
210
+ method_response_collection_1.MethodResponses.create({
198
211
  _id: mongo_manager_1.objectIdHexString(),
199
- type: 'client-response',
200
- collection: '',
201
- id_document: '',
202
- payload: common_1.getBinarySize(JSON.stringify([sendItem.methodData, sendItem.data])) < 200000 ? JSON.stringify([sendItem.methodData, sendItem.data], null, 2) : 'Too Big',
212
+ __v: 0,
213
+ id_user: ws['id_user'] || '',
214
+ message_id: sendItem.data.messageId,
215
+ response: common_1.getBinarySize(JSON.stringify(sendItem.data)) < 200000 ? sendItem.data : { error: 'Too Big' },
203
216
  method: sendItem.method,
204
- id_user: ws_1['id_user'] || '',
205
- user: ws_1['user'] || '',
206
- messageId: sendItem.data.messageId,
207
- route: ''
217
+ date: sendItem.date
208
218
  });
209
219
  }
210
- method_response_collection_1.MethodResponses.create({
211
- _id: mongo_manager_1.objectIdHexString(),
212
- __v: 0,
213
- id_user: ws_1['id_user'] || '',
214
- message_id: sendItem.data.messageId,
215
- response: common_1.getBinarySize(JSON.stringify(sendItem.data)) < 200000 ? sendItem.data : { error: 'Too Big' },
216
- method: sendItem.method,
217
- date: sendItem.date
218
- });
219
220
  }
220
- }
221
- else {
222
- _this._sendQueue.splice(_this._sendQueue.length - 1, 1);
221
+ else {
222
+ _this._sendQueue.splice(i, 1);
223
+ }
224
+ };
225
+ for (var i = _this._sendQueue.length - 1; i >= 0; i--) {
226
+ _loop_1(i);
223
227
  }
224
228
  _this._runningQueue = false;
225
229
  }
226
230
  }
227
- }, 50);
231
+ }, 25);
228
232
  }
229
233
  MethodManager.prototype.getMainServer = function () {
230
234
  return this._mainServer;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/managers/method.manager.ts"],"names":[],"mappings":"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","file":"method.manager.js","sourcesContent":["import { ServerResponseModel } from '../models/server-response.model';\nimport { loadCollectionMethods } from '../methods/collections';\nimport { MethodModel } from '../models/method.model';\nimport { loadLogMethods } from '../methods/logs';\nimport { loadCounterMethods } from '../methods/counters';\nimport { loadPDFMethods } from '../methods/pdf';\nimport { loadAWSMethods } from '../methods/aws';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport * as nodemailer from 'nodemailer';\nimport * as sesTransport from 'nodemailer-ses-transport';\nimport { loadAccountMethods } from '../methods/accounts';\nimport { loadServerInit } from '../fixtures/init';\nimport { loadServerCronJobs } from '../fixtures/cron-jobs';\nimport { loadCronJobMethods } from '../methods/cron-jobs';\nimport { loadFlagMethods } from '../methods/flags';\nimport { MethodResponses } from '../collections/method-response.collection';\nimport { getBinarySize } from '../util/common';\nimport { Logs } from '../collections/log.collection';\nimport ResolveIOMainServer from '../server-app';\nimport { LogMethodLatencies } from '../collections/log-method-latency.collection';\nimport * as moment from 'moment';\nimport { loadReportBuilderMethods } from '../methods/report-builder';\nimport { loadSupportMethods } from '../methods/support';\nimport { loadMonitorMethods } from '../methods/monitor';\nimport { EmailHistories } from '../collections/email-history.collection';\nimport { objectIdHexString } from './mongo.manager';\nimport { MonitorManagerFunction } from './monitor.manager';\nimport { S3 } from '@aws-sdk/client-s3';\n\nexport class AWS {\n\tprivate _serverConfig = null;\n\tprivate _s3: S3 = null;\n\tprivate _s3USEast1: S3 = null;\n\n\tconstructor(serverConfig) {\n\t\tthis._serverConfig = serverConfig;\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 _mainServer: ResolveIOMainServer;\n\tpublic _methods: MethodModel = {};\n\tprivate _mailer: nodemailer.Transporter;\n\tprivate _aws: AWS;\n\tprivate serverConfig;\n\tprivate clientDir;\n\tprivate _sendQueue = [];\n\tprivate _runningQueue = false;\n\tprivate _monitorManagerFunction: MonitorManagerFunction;\n\n\tprivate _debugCallMethodInternalHits = 0;\n\tprivate _debugCallMethodHits = 0;\n\tprivate _debugCallMethodCronJobHits = 0;\n\tprivate _debugSendQueueHits = 0;\n\n\tconstructor(mainServer, serverConfig, clientDir, monitorManagerFunction: MonitorManagerFunction) {\n\t\tthis._mainServer = mainServer;\n\t\tthis.serverConfig = serverConfig;\n\t\tthis.clientDir = clientDir;\n\t\tthis._monitorManagerFunction = monitorManagerFunction;\n\n\t\t// Fixtures\n\t\tloadServerInit();\n\t\tloadServerCronJobs();\n\n\t\t// Methods\n\t\tloadAccountMethods(this);\n\t\tloadAWSMethods(this);\n\t\tloadCollectionMethods(this);\n\t\tloadCounterMethods(this);\n\t\tloadLogMethods(this);\n\t\tloadPDFMethods(this);\n\t\tloadCronJobMethods(this);\n\t\tloadFlagMethods(this);\n\t\tloadReportBuilderMethods(this);\n\t\tloadSupportMethods(this);\n\t\tloadMonitorMethods(this);\n\n\t\tthis._aws = new AWS(serverConfig);\t\t\n\n\t\tif (mainServer.sesMail) {\n\t\t\tthis._mailer = nodemailer.createTransport(sesTransport({\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\tregion: process.env.AWS_SES_REGION\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tthis._mailer = nodemailer.createTransport({\n\t\t\t\thost: this.serverConfig['MAIL_HOST'], // 'smtp.office365.com', // Office 365 server\n\t\t\t\tport: this.serverConfig['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: this.serverConfig['MAIL_USERNAME'],\n\t\t\t\t\tpass: this.serverConfig['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(() => {\n\t\t\tif (this._mainServer.getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Send Queue Length', this._sendQueue.length);\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._debugCallMethodInternalHits);\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\t\tthis._debugCallMethodInternalHits = 0;\n\t\t\t\tthis._debugCallMethodHits = 0;\n\t\t\t\tthis._debugCallMethodCronJobHits = 0;\n\t\t\t\tthis._debugSendQueueHits = 0;\n\t\t\t\tthis._debugSendQueueHits = 0;\n\t\t}, 60000);\n\n\t\tsetInterval(() => {\n\t\t\tif (!this._runningQueue) {\n\t\t\t\tif (this._sendQueue.length) {\n\t\t\t\t\tthis._runningQueue = true;\n\t\t\t\t\tthis._debugSendQueueHits += 1;\n\t\t\t\t\tlet sendQueue = this._sendQueue[this._sendQueue.length - 1];\n\n\t\t\t\t\tlet ws = this._mainServer.getWS(sendQueue.id_ws);\n\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\tif (ws.bufferedAmount < 20480) {\n\t\t\t\t\t\t\tlet sendItem = this._sendQueue.pop();\n\t\t\t\t\t\t\tws.send(JSON.stringify(sendItem.data), (error) => {\n\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\tthis._mainServer.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (sendItem.method !== 'reportBuilderGetResults' && sendItem.method !== 'reportBuilderGetDistinctValue' && sendItem.method !== 'reportBuilderBuildTree' && sendItem.method !== 'generatePDF' && sendItem.method !== 'getWOOfflineData' && sendItem.method !== 'countQuery' && sendItem.method !== 'countWithQuery' && sendItem.method !== 'countCollectionWithQuery' && sendItem.method !== 'find' && sendItem.method !== 'findOne' && sendItem.method !== 'findWithOptions' && sendItem.method !== 'uploadFileAndSave' && sendItem.method !== 'getDrivers') {\n\t\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\ttype: 'client-response',\n\t\t\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([sendItem.methodData, sendItem.data])) < 200000 ? JSON.stringify([sendItem.methodData, sendItem.data], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\tid_user: ws['id_user'] || '',\n\t\t\t\t\t\t\t\t\tuser: ws['user'] || '',\n\t\t\t\t\t\t\t\t\tmessageId: sendItem.data.messageId,\n\t\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tMethodResponses.create({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tid_user: ws['id_user'] || '',\n\t\t\t\t\t\t\t\tmessage_id: sendItem.data.messageId,\n\t\t\t\t\t\t\t\tresponse: getBinarySize(JSON.stringify(sendItem.data)) < 200000 ? sendItem.data : {error: 'Too Big'},\n\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\tdate: sendItem.date\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\telse {\n\t\t\t\t\t\tthis._sendQueue.splice(this._sendQueue.length - 1, 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._runningQueue = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}, 50);\n\t}\n\n\tpublic getMainServer() {\n\t\treturn this._mainServer;\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\tpublic callMethodCron(method: string, ...methodData: any[]) {\n\t\tthis._debugCallMethodCronJobHits += 1;\n\n\t\tif (!this._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\n\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Method: ' + method);\n\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif ((methodData.length > 1 || methodData[0]) && !this._methods[method].skipValidation) {\n\t\t\tif (!this._methods[method].check) {\n\t\t\t\tconsole.error(new Date(), 'No Check Function For Method ' + method);\n\n\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!this._methods[method].check._schema) {\n\t\t\t\tconsole.error(new Date(), 'No Check Schema For Method ' + method);\n\n\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet valObj = {};\n\t\t\t\tlet valKeys = Object.keys(this._methods[method].check._schema);\n\n\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\n\t\t\t\tfor (let i = 0; i < methodData.length; i++) {\n\t\t\t\t\tvalObj[rootKeys[i]] = methodData[i];\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tthis._methods[method].check.validate(valObj);\n\t\t\t\t}\n\t\t\t\tcatch (errors) {\n\t\t\t\t\tif (errors) {\n\t\t\t\t\t\tconsole.error(new Date(), 'Error in Method Check (' + method + ')', errors);\n\n\t\t\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'Match Error On Method ' + method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\t\t\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Cron Method', method, '', '', methodData);\n\t\tlet promise = this._methods[method].function.call(Object.assign({}, this, MethodManager.prototype, {id_user: '', user: '', id_ws: ''}), ...methodData)\n\t\t.then(res => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\treturn res;\n\t\t}, methodErrs => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'Error Detected During Method ' + method + ' - (callMethodCron)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(methodErrs, null, 2));\n\t\t\treturn methodErrs;\n\t\t});\n\n\t\treturn promise;\n\t}\n\n\t// Call/run method (Emit on Socket)\n\tpublic callMethod(id_methodLatency: string, ws: WebSocket, messageDate: Date, messageId: number, method: string, ...methodData: any[]) {\n\t\tthis._debugCallMethodHits += 1;\n\t\t\n\t\tif (!this._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\n\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Method: ' + method);\n\t\t\t\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: true,\n\t\t\t\tdata: 'Internal Error'\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tif (id_methodLatency) {\n\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ((methodData.length > 1 || methodData[0]) && !this._methods[method].skipValidation) {\n\t\t\tif (!this._methods[method].check) {\n\t\t\t\tconsole.error(new Date(), 'No Check Function For Method ' + method);\n\n\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\t\t\t\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t};\n\t\n\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\t\tif (id_methodLatency) {\n\t\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t\t}\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!this._methods[method].check._schema) {\n\t\t\t\tconsole.error(new Date(), 'No Check Schema For Method ' + method);\n\n\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\t\t\t\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t};\n\n\t\t\t\tif (id_methodLatency) {\n\t\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t\t}\n\t\n\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet valObj = {};\n\t\t\t\tlet valKeys = Object.keys(this._methods[method].check._schema);\n\n\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\n\t\t\t\tfor (let i = 0; i < methodData.length; i++) {\n\t\t\t\t\tvalObj[rootKeys[i]] = methodData[i];\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tthis._methods[method].check.validate(valObj);\n\t\t\t\t}\n\t\t\t\tcatch (errors) {\n\t\t\t\t\tif (errors) {\n\t\t\t\t\t\tconsole.error(new Date(), 'Error in Method Check (' + method + ')', errors);\n\n\t\t\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'Match Error On Method ' + method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t\t\t};\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\t\t\t\tif (id_methodLatency) {\n\t\t\t\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t\t\t\t}\n\t\t\t\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Method', method, ws['user'] || '', ws['id_socket'] || '', methodData);\n\t\tthis._methods[method].function.call(Object.assign({}, this, MethodManager.prototype, {id_user: ws['id_user'], user: ws['user'], id_ws: ws['id_socket']}), ...methodData)\n\t\t.then(async (res) => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: false,\n\t\t\t\tdata: res\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tif (id_methodLatency) {\n\t\t\t\tlet latency = await LogMethodLatencies.findById(id_methodLatency);\n\n\t\t\t\tif (latency) {\n\t\t\t\t\tLogMethodLatencies.updateOne({_id: id_methodLatency}, {$set: {date_end: new Date(), latency_ms: moment().diff(moment(latency.date_start), 'milliseconds', true)}});\n\t\t\t\t}\n\t\t\t}\n\t\t}, err => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: true,\n\t\t\t\tdata: err\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tif (id_methodLatency) {\n\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t}\n\n\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'Error Detected During Method ' + method + ' - (callMethod)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(err, null, 2));\n\t\t});\n\t}\n\n\t// Call/run method internal (No Emit on Socket)\n\tpublic callMethodInternal(method, ...methodData: any[]): Promise<any> {\n\t\tthis._debugCallMethodInternalHits += 1;\n\t\t\n\t\tif (!this._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\t\t\treturn null;\n\t\t}\n\n\t\tif ((methodData.length > 1 || (methodData[0] && typeof(methodData[0]) !== 'function')) && !this._methods[method].skipValidation) {\n\t\t\tif (!this._methods[method].check) {\n\t\t\t\tconsole.error(new Date(), 'No Check Function For Method ' + method);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\telse if (!this._methods[method].check._schema) {\n\t\t\t\tconsole.error(new Date(), 'No Check Schema For Method ' + method);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tif (method !== 'insertSubscriptionLog' && method !== 'getDataURIfromURL') {\n\t\t\tLogs.insertOne({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'callMethodInternal',\n\t\t\t\tcollection: '',\n\t\t\t\tid_document: '',\n\t\t\t\tpayload: getBinarySize(JSON.stringify([methodData])) < 200000 ? JSON.stringify([methodData], null, 2) : 'Too Big',\n\t\t\t\tmethod: method,\n\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\tuser: this['user'] || '',\n\t\t\t\tmessageId: 0,\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\tlet functionMethodData = typeof(methodData[methodData.length - 1]) === 'function' ? methodData.slice(0, -1) : methodData;\n\n\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Internal Method', method, this['user'] || '', '', functionMethodData);\n\t\tlet promise = this._methods[method].function.call(Object.assign({}, this, MethodManager.prototype), ...functionMethodData)\n\t\t.then(res => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\treturn res;\n\t\t}, methodErrs => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'Error Detected During Method ' + method + ' - (callMethodInternal)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(methodErrs, null, 2));\n\t\t\treturn methodErrs;\n\t\t});\n\n\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\tpromise.then(res => methodData[methodData.length - 1](null, res), err => methodData[methodData.length - 1](err, null));\n\t\t}\n\t\t\n\t\treturn promise;\n\t}\n\n\tprivate sendWS(ws: WebSocket, messageDate: Date, method: string, methodData: any[], data: ServerResponseModel) {\n\t\tthis._sendQueue.splice(0, 0, {\n\t\t\tid_ws: ws['id_socket'],\n\t\t\tmethod: method,\n\t\t\tmethodData: methodData,\n\t\t\tdata: data,\n\t\t\tdate: messageDate\n\t\t});\n\t}\n\n\tpublic sendEmail(sendTo: string, subject: string, text?: string, html?: string, attachments?: any[], send_from?: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif ((this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) || this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/www\\.dev\\./)) || this.serverConfig['ROOT_URL'] === 'http://localhost:4200') && !sendTo.match(new RegExp(/\\@resolveio\\.com/))) {\n\t\t\t\tsendTo = 'dev@resolveio.com';\n\t\t\t}\n\n\t\t\tif (sendTo) {\n\t\t\t\tif (this.serverConfig['ROOT_URL'] !== 'http://localhost:4200') {\n\t\t\t\t\tthis._mailer.sendMail({\n\t\t\t\t\t\treplyTo: this.serverConfig['MAIL_REPLY_TO'] || undefined, //orders@acefluids.com\n\t\t\t\t\t\tfrom: send_from ? send_from : this.serverConfig.MAIL_FROM,\n\t\t\t\t\t\tto: sendTo,\n\t\t\t\t\t\tsubject: (this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) || this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/www\\.dev\\./)) ? '(DEV SERVER) - ' : '') + subject,\n\t\t\t\t\t\ttext: text,\n\t\t\t\t\t\thtml: html,\n\t\t\t\t\t\tattachments: attachments\n\t\t\t\t\t}, (err, info) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\t\tEmailHistories.create({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tdate: new Date(),\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\temail: sendTo,\n\t\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\t\tverified: false\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\tEmailHistories.create({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tdate: new Date(),\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\temail: sendTo,\n\t\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\t\tverified: false\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\t\t\telse {\n\t\t\t\t\tconsole.log('Send email', sendTo, subject, text, html, attachments, send_from);\n\t\t\t\t}\n\n\t\t\t\tresolve(true);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic getAWS(): AWS {\n\t\treturn this._aws;\n\t}\n\n\tpublic readFile(fileName) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\t\tfs.readFile(path.join(__dirname, ('../private/' + fileName)), 'utf-8', (err, res) => { \n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/' + fileName)))) {\n\t\t\t\t\tfs.readFile(path.join(this.clientDir, ('./private/' + fileName)), 'utf-8', (err, res) => { \n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic readImage(fileName) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\t\tfs.readFile(path.join(__dirname, ('../private/' + fileName)), 'base64', (err, res) => { \n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/' + fileName)))) {\n\t\t\t\t\tfs.readFile(path.join(this.clientDir, ('./private/' + fileName)), 'base64', (err, res) => { \n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}"]}
1
+ {"version":3,"sources":["../../src/managers/method.manager.ts"],"names":[],"mappings":"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","file":"method.manager.js","sourcesContent":["import { ServerResponseModel } from '../models/server-response.model';\nimport { loadCollectionMethods } from '../methods/collections';\nimport { MethodModel } from '../models/method.model';\nimport { loadLogMethods } from '../methods/logs';\nimport { loadCounterMethods } from '../methods/counters';\nimport { loadPDFMethods } from '../methods/pdf';\nimport { loadAWSMethods } from '../methods/aws';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport * as nodemailer from 'nodemailer';\nimport * as sesTransport from 'nodemailer-ses-transport';\nimport { loadAccountMethods } from '../methods/accounts';\nimport { loadServerInit } from '../fixtures/init';\nimport { loadServerCronJobs } from '../fixtures/cron-jobs';\nimport { loadCronJobMethods } from '../methods/cron-jobs';\nimport { loadFlagMethods } from '../methods/flags';\nimport { MethodResponses } from '../collections/method-response.collection';\nimport { getBinarySize } from '../util/common';\nimport { Logs } from '../collections/log.collection';\nimport ResolveIOMainServer from '../server-app';\nimport { LogMethodLatencies } from '../collections/log-method-latency.collection';\nimport * as moment from 'moment';\nimport { loadReportBuilderMethods } from '../methods/report-builder';\nimport { loadSupportMethods } from '../methods/support';\nimport { loadMonitorMethods } from '../methods/monitor';\nimport { EmailHistories } from '../collections/email-history.collection';\nimport { objectIdHexString } from './mongo.manager';\nimport { MonitorManagerFunction } from './monitor.manager';\nimport { S3 } from '@aws-sdk/client-s3';\n\nexport class AWS {\n\tprivate _serverConfig = null;\n\tprivate _s3: S3 = null;\n\tprivate _s3USEast1: S3 = null;\n\n\tconstructor(serverConfig) {\n\t\tthis._serverConfig = serverConfig;\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 _mainServer: ResolveIOMainServer;\n\tpublic _methods: MethodModel = {};\n\tprivate _mailer: nodemailer.Transporter;\n\tprivate _aws: AWS;\n\tprivate serverConfig;\n\tprivate clientDir;\n\tprivate _sendQueue = [];\n\tprivate _runningQueue = false;\n\tprivate _monitorManagerFunction: MonitorManagerFunction;\n\n\tprivate _debugCallMethodInternalHits = 0;\n\tprivate _debugCallMethodHits = 0;\n\tprivate _debugCallMethodCronJobHits = 0;\n\tprivate _debugSendQueueHits = 0;\n\n\tconstructor(mainServer, serverConfig, clientDir, monitorManagerFunction: MonitorManagerFunction) {\n\t\tthis._mainServer = mainServer;\n\t\tthis.serverConfig = serverConfig;\n\t\tthis.clientDir = clientDir;\n\t\tthis._monitorManagerFunction = monitorManagerFunction;\n\n\t\t// Fixtures\n\t\tloadServerInit();\n\t\tloadServerCronJobs();\n\n\t\t// Methods\n\t\tloadAccountMethods(this);\n\t\tloadAWSMethods(this);\n\t\tloadCollectionMethods(this);\n\t\tloadCounterMethods(this);\n\t\tloadLogMethods(this);\n\t\tloadPDFMethods(this);\n\t\tloadCronJobMethods(this);\n\t\tloadFlagMethods(this);\n\t\tloadReportBuilderMethods(this);\n\t\tloadSupportMethods(this);\n\t\tloadMonitorMethods(this);\n\n\t\tthis._aws = new AWS(serverConfig);\t\t\n\n\t\tif (mainServer.sesMail) {\n\t\t\tthis._mailer = nodemailer.createTransport(sesTransport({\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\tregion: process.env.AWS_SES_REGION\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tthis._mailer = nodemailer.createTransport({\n\t\t\t\thost: this.serverConfig['MAIL_HOST'], // 'smtp.office365.com', // Office 365 server\n\t\t\t\tport: this.serverConfig['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: this.serverConfig['MAIL_USERNAME'],\n\t\t\t\t\tpass: this.serverConfig['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(() => {\n\t\t\tif (this._mainServer.getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Send Queue Length', this._sendQueue.length);\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._debugCallMethodInternalHits);\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\t\tthis._debugCallMethodInternalHits = 0;\n\t\t\t\tthis._debugCallMethodHits = 0;\n\t\t\t\tthis._debugCallMethodCronJobHits = 0;\n\t\t\t\tthis._debugSendQueueHits = 0;\n\t\t\t\tthis._debugSendQueueHits = 0;\n\t\t}, 60000);\n\n\t\tsetInterval(() => {\n\t\t\tif (!this._runningQueue) {\n\t\t\t\tif (this._sendQueue.length) {\n\t\t\t\t\tthis._runningQueue = true;\n\n\t\t\t\t\tfor (let i = this._sendQueue.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tthis._debugSendQueueHits += 1;\n\n\t\t\t\t\t\tlet ws = this._mainServer.getWS(this._sendQueue[i].id_ws);\n\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\tif (ws.bufferedAmount < 20480) {\n\t\t\t\t\t\t\t\tlet sendItem = this._sendQueue.pop();\n\t\t\t\t\t\t\t\tws.send(JSON.stringify(sendItem.data), (error) => {\n\t\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\t\tthis._mainServer.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (sendItem.method !== 'reportBuilderGetResults' && sendItem.method !== 'reportBuilderGetDistinctValue' && sendItem.method !== 'reportBuilderBuildTree' && sendItem.method !== 'generatePDF' && sendItem.method !== 'getWOOfflineData' && sendItem.method !== 'countQuery' && sendItem.method !== 'countWithQuery' && sendItem.method !== 'countCollectionWithQuery' && sendItem.method !== 'find' && sendItem.method !== 'findOne' && sendItem.method !== 'findWithOptions' && sendItem.method !== 'uploadFileAndSave' && sendItem.method !== 'getDrivers') {\n\t\t\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\t\ttype: 'client-response',\n\t\t\t\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([sendItem.methodData, sendItem.data])) < 200000 ? JSON.stringify([sendItem.methodData, sendItem.data], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\t\tid_user: ws['id_user'] || '',\n\t\t\t\t\t\t\t\t\t\tuser: ws['user'] || '',\n\t\t\t\t\t\t\t\t\t\tmessageId: sendItem.data.messageId,\n\t\t\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tMethodResponses.create({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\t\tid_user: ws['id_user'] || '',\n\t\t\t\t\t\t\t\t\tmessage_id: sendItem.data.messageId,\n\t\t\t\t\t\t\t\t\tresponse: getBinarySize(JSON.stringify(sendItem.data)) < 200000 ? sendItem.data : {error: 'Too Big'},\n\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\tdate: sendItem.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\telse {\n\t\t\t\t\t\t\tthis._sendQueue.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._runningQueue = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}, 25);\n\t}\n\n\tpublic getMainServer() {\n\t\treturn this._mainServer;\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\tpublic callMethodCron(method: string, ...methodData: any[]) {\n\t\tthis._debugCallMethodCronJobHits += 1;\n\n\t\tif (!this._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\n\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Method: ' + method);\n\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif ((methodData.length > 1 || methodData[0]) && !this._methods[method].skipValidation) {\n\t\t\tif (!this._methods[method].check) {\n\t\t\t\tconsole.error(new Date(), 'No Check Function For Method ' + method);\n\n\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!this._methods[method].check._schema) {\n\t\t\t\tconsole.error(new Date(), 'No Check Schema For Method ' + method);\n\n\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet valObj = {};\n\t\t\t\tlet valKeys = Object.keys(this._methods[method].check._schema);\n\n\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\n\t\t\t\tfor (let i = 0; i < methodData.length; i++) {\n\t\t\t\t\tvalObj[rootKeys[i]] = methodData[i];\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tthis._methods[method].check.validate(valObj);\n\t\t\t\t}\n\t\t\t\tcatch (errors) {\n\t\t\t\t\tif (errors) {\n\t\t\t\t\t\tconsole.error(new Date(), 'Error in Method Check (' + method + ')', errors);\n\n\t\t\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'Match Error On Method ' + method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\t\t\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Cron Method', method, '', '', methodData);\n\t\tlet promise = this._methods[method].function.call(Object.assign({}, this, MethodManager.prototype, {id_user: '', user: '', id_ws: ''}), ...methodData)\n\t\t.then(res => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\treturn res;\n\t\t}, methodErrs => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'Error Detected During Method ' + method + ' - (callMethodCron)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(methodErrs, null, 2));\n\t\t\treturn methodErrs;\n\t\t});\n\n\t\treturn promise;\n\t}\n\n\t// Call/run method (Emit on Socket)\n\tpublic callMethod(id_methodLatency: string, ws: WebSocket, messageDate: Date, messageId: number, method: string, ...methodData: any[]) {\n\t\tthis._debugCallMethodHits += 1;\n\t\t\n\t\tif (!this._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\n\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Method: ' + method);\n\t\t\t\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: true,\n\t\t\t\tdata: 'Internal Error'\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tif (id_methodLatency) {\n\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ((methodData.length > 1 || methodData[0]) && !this._methods[method].skipValidation) {\n\t\t\tif (!this._methods[method].check) {\n\t\t\t\tconsole.error(new Date(), 'No Check Function For Method ' + method);\n\n\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\t\t\t\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t};\n\t\n\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\t\tif (id_methodLatency) {\n\t\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t\t}\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!this._methods[method].check._schema) {\n\t\t\t\tconsole.error(new Date(), 'No Check Schema For Method ' + method);\n\n\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\t\t\t\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t};\n\n\t\t\t\tif (id_methodLatency) {\n\t\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t\t}\n\t\n\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet valObj = {};\n\t\t\t\tlet valKeys = Object.keys(this._methods[method].check._schema);\n\n\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\n\t\t\t\tfor (let i = 0; i < methodData.length; i++) {\n\t\t\t\t\tvalObj[rootKeys[i]] = methodData[i];\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tthis._methods[method].check.validate(valObj);\n\t\t\t\t}\n\t\t\t\tcatch (errors) {\n\t\t\t\t\tif (errors) {\n\t\t\t\t\t\tconsole.error(new Date(), 'Error in Method Check (' + method + ')', errors);\n\n\t\t\t\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'Match Error On Method ' + method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t\t\t};\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\t\t\t\tif (id_methodLatency) {\n\t\t\t\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t\t\t\t}\n\t\t\t\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Method', method, ws['user'] || '', ws['id_socket'] || '', methodData);\n\t\tthis._methods[method].function.call(Object.assign({}, this, MethodManager.prototype, {id_user: ws['id_user'], user: ws['user'], id_ws: ws['id_socket']}), ...methodData)\n\t\t.then(async (res) => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: false,\n\t\t\t\tdata: res\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tif (id_methodLatency) {\n\t\t\t\tlet latency = await LogMethodLatencies.findById(id_methodLatency);\n\n\t\t\t\tif (latency) {\n\t\t\t\t\tLogMethodLatencies.updateOne({_id: id_methodLatency}, {$set: {date_end: new Date(), latency_ms: moment().diff(moment(latency.date_start), 'milliseconds', true)}});\n\t\t\t\t}\n\t\t\t}\n\t\t}, err => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: true,\n\t\t\t\tdata: err\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tif (id_methodLatency) {\n\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t}\n\n\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'Error Detected During Method ' + method + ' - (callMethod)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(err, null, 2));\n\t\t});\n\t}\n\n\t// Call/run method internal (No Emit on Socket)\n\tpublic callMethodInternal(method, ...methodData: any[]): Promise<any> {\n\t\tthis._debugCallMethodInternalHits += 1;\n\t\t\n\t\tif (!this._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\t\t\treturn null;\n\t\t}\n\n\t\tif ((methodData.length > 1 || (methodData[0] && typeof(methodData[0]) !== 'function')) && !this._methods[method].skipValidation) {\n\t\t\tif (!this._methods[method].check) {\n\t\t\t\tconsole.error(new Date(), 'No Check Function For Method ' + method);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\telse if (!this._methods[method].check._schema) {\n\t\t\t\tconsole.error(new Date(), 'No Check Schema For Method ' + method);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tif (method !== 'insertSubscriptionLog' && method !== 'getDataURIfromURL') {\n\t\t\tLogs.insertOne({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'callMethodInternal',\n\t\t\t\tcollection: '',\n\t\t\t\tid_document: '',\n\t\t\t\tpayload: getBinarySize(JSON.stringify([methodData])) < 200000 ? JSON.stringify([methodData], null, 2) : 'Too Big',\n\t\t\t\tmethod: method,\n\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\tuser: this['user'] || '',\n\t\t\t\tmessageId: 0,\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\tlet functionMethodData = typeof(methodData[methodData.length - 1]) === 'function' ? methodData.slice(0, -1) : methodData;\n\n\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Internal Method', method, this['user'] || '', '', functionMethodData);\n\t\tlet promise = this._methods[method].function.call(Object.assign({}, this, MethodManager.prototype), ...functionMethodData)\n\t\t.then(res => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\treturn res;\n\t\t}, methodErrs => {\n\t\t\tthis._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\tthis.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'Error Detected During Method ' + method + ' - (callMethodInternal)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(methodErrs, null, 2));\n\t\t\treturn methodErrs;\n\t\t});\n\n\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\tpromise.then(res => methodData[methodData.length - 1](null, res), err => methodData[methodData.length - 1](err, null));\n\t\t}\n\t\t\n\t\treturn promise;\n\t}\n\n\tprivate sendWS(ws: WebSocket, messageDate: Date, method: string, methodData: any[], data: ServerResponseModel) {\n\t\tthis._sendQueue.splice(0, 0, {\n\t\t\tid_ws: ws['id_socket'],\n\t\t\tmethod: method,\n\t\t\tmethodData: methodData,\n\t\t\tdata: data,\n\t\t\tdate: messageDate\n\t\t});\n\t}\n\n\tpublic sendEmail(sendTo: string, subject: string, text?: string, html?: string, attachments?: any[], send_from?: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif ((this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) || this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/www\\.dev\\./)) || this.serverConfig['ROOT_URL'] === 'http://localhost:4200') && !sendTo.match(new RegExp(/\\@resolveio\\.com/))) {\n\t\t\t\tsendTo = 'dev@resolveio.com';\n\t\t\t}\n\n\t\t\tif (sendTo) {\n\t\t\t\tif (this.serverConfig['ROOT_URL'] !== 'http://localhost:4200') {\n\t\t\t\t\tthis._mailer.sendMail({\n\t\t\t\t\t\treplyTo: this.serverConfig['MAIL_REPLY_TO'] || undefined, //orders@acefluids.com\n\t\t\t\t\t\tfrom: send_from ? send_from : this.serverConfig.MAIL_FROM,\n\t\t\t\t\t\tto: sendTo,\n\t\t\t\t\t\tsubject: (this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) || this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/www\\.dev\\./)) ? '(DEV SERVER) - ' : '') + subject,\n\t\t\t\t\t\ttext: text,\n\t\t\t\t\t\thtml: html,\n\t\t\t\t\t\tattachments: attachments\n\t\t\t\t\t}, (err, info) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\t\tEmailHistories.create({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tdate: new Date(),\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\temail: sendTo,\n\t\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\t\tverified: false\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\tEmailHistories.create({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tdate: new Date(),\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\temail: sendTo,\n\t\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\t\tverified: false\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\t\t\telse {\n\t\t\t\t\tconsole.log('Send email', sendTo, subject, text, html, attachments, send_from);\n\t\t\t\t}\n\n\t\t\t\tresolve(true);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic getAWS(): AWS {\n\t\treturn this._aws;\n\t}\n\n\tpublic readFile(fileName) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\t\tfs.readFile(path.join(__dirname, ('../private/' + fileName)), 'utf-8', (err, res) => { \n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/' + fileName)))) {\n\t\t\t\t\tfs.readFile(path.join(this.clientDir, ('./private/' + fileName)), 'utf-8', (err, res) => { \n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic readImage(fileName) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\t\tfs.readFile(path.join(__dirname, ('../private/' + fileName)), 'base64', (err, res) => { \n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/' + fileName)))) {\n\t\t\t\t\tfs.readFile(path.join(this.clientDir, ('./private/' + fileName)), 'base64', (err, res) => { \n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}"]}
@@ -157,114 +157,119 @@ var MongoManager = /** @class */ (function () {
157
157
  var _this = this;
158
158
  return __generator(this, function (_a) {
159
159
  setInterval(function () {
160
- var _a, _b, _c;
161
160
  if (!_this._mongoQueueRunning) {
162
161
  var queueArr = _this._mongoQueue.filter(function (a) { return !a.running && a.cbs.length; });
163
162
  if (queueArr.length) {
164
163
  _this._mongoQueueRunning = true;
165
- _this._debugMongoQueueHits += 1;
166
- var mongoQueue_1 = queueArr[queueArr.length - 1];
167
- if (!_this._debugMongoQueueCollections.some(function (a) { return a.collection === mongoQueue_1.name_collection && a.function === mongoQueue_1.name_function; })) {
168
- _this._debugMongoQueueCollections.push({
169
- collection: mongoQueue_1.name_collection,
170
- function: mongoQueue_1.name_function,
171
- hits: 1
172
- });
173
- }
174
- else {
175
- _this._debugMongoQueueCollections.filter(function (a) { return a.collection === mongoQueue_1.name_collection && a.function === mongoQueue_1.name_function; })[0].hits += 1;
176
- }
177
- mongoQueue_1.running = true;
178
- mongoQueue_1.invalidateFlag = false;
179
- if (mongoQueue_1.cacheId) {
180
- var res_1 = JSON.parse(_this._nodeCache.get(mongoQueue_1.cacheId), common_1.dateReviver);
181
- mongoQueue_1.cbs.forEach(function (cb) {
182
- cb(null, res_1, true);
183
- });
184
- mongoQueue_1.cbs = [];
185
- mongoQueue_1.running = false;
186
- }
187
- else {
188
- if (!mongoQueue_1.name_function_addt) {
189
- var monitor_1 = new monitor_manager_1.MonitorMongo(mongoQueue_1.name_function, mongoQueue_1.name_collection, JSON.stringify(mongoQueue_1.data_function));
190
- (_a = index_1.ResolveIOServer.getMainDB().collection(mongoQueue_1.name_collection))[mongoQueue_1.name_function].apply(_a, mongoQueue_1.data_function).then(function (res) {
191
- monitor_1.finish();
192
- if (!mongoQueue_1.invalidateFlag) {
193
- mongoQueue_1.cacheId = _this._mongoQueueCacheId;
194
- _this._mongoQueueCacheId += 1;
195
- _this.addToCache(mongoQueue_1.cacheId, res);
196
- mongoQueue_1.cbs.forEach(function (cb) {
197
- cb(null, res, false);
198
- });
199
- if (mongoQueue_1.cbs_next.length) {
200
- mongoQueue_1.cbs = mongoQueue_1.cbs_next;
201
- mongoQueue_1.cbs_next = [];
202
- }
203
- else {
204
- mongoQueue_1.cbs = [];
205
- }
206
- }
207
- else {
208
- mongoQueue_1.cbs = mongoQueue_1.cbs.concat(mongoQueue_1.cbs_next);
209
- mongoQueue_1.cbs_next = [];
210
- }
211
- mongoQueue_1.running = false;
212
- }, function (err) {
213
- monitor_1.finish();
214
- console.log.apply(console, __spreadArrays([new Date(), 'Error ' + mongoQueue_1.name_function, mongoQueue_1.name_collection], mongoQueue_1.data_function, [err]));
215
- mongoQueue_1.cbs.forEach(function (cb) {
216
- cb(err, null, false);
217
- });
218
- mongoQueue_1.cbs_next.forEach(function (cb) {
219
- cb(err, null, false);
220
- });
221
- if (_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue_1._id) >= 0) {
222
- _this._mongoQueue.splice(_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue_1._id), 1);
223
- }
164
+ var _loop_1 = function (i) {
165
+ var _a, _b, _c;
166
+ _this._debugMongoQueueHits += 1;
167
+ var mongoQueue = queueArr[i];
168
+ if (!_this._debugMongoQueueCollections.some(function (a) { return a.collection === mongoQueue.name_collection && a.function === mongoQueue.name_function; })) {
169
+ _this._debugMongoQueueCollections.push({
170
+ collection: mongoQueue.name_collection,
171
+ function: mongoQueue.name_function,
172
+ hits: 1
224
173
  });
225
174
  }
226
175
  else {
227
- var monitor_2 = new monitor_manager_1.MonitorMongo(mongoQueue_1.name_function, mongoQueue_1.name_collection, JSON.stringify(__spreadArrays(mongoQueue_1.data_function, [mongoQueue_1.name_function_addt], mongoQueue_1.data_function_addt)));
228
- (_b = (_c = index_1.ResolveIOServer.getMainDB().collection(mongoQueue_1.name_collection))[mongoQueue_1.name_function].apply(_c, mongoQueue_1.data_function))[mongoQueue_1.name_function_addt].apply(_b, mongoQueue_1.data_function_addt).then(function (res) {
229
- monitor_2.finish();
230
- if (!mongoQueue_1.invalidateFlag) {
231
- mongoQueue_1.cacheId = _this._mongoQueueCacheId;
232
- _this._mongoQueueCacheId += 1;
233
- _this.addToCache(mongoQueue_1.cacheId, res);
234
- mongoQueue_1.cbs.forEach(function (cb) {
235
- cb(null, res, false);
236
- });
237
- if (mongoQueue_1.cbs_next.length) {
238
- mongoQueue_1.cbs = mongoQueue_1.cbs_next;
239
- mongoQueue_1.cbs_next = [];
176
+ _this._debugMongoQueueCollections.filter(function (a) { return a.collection === mongoQueue.name_collection && a.function === mongoQueue.name_function; })[0].hits += 1;
177
+ }
178
+ mongoQueue.running = true;
179
+ mongoQueue.invalidateFlag = false;
180
+ if (mongoQueue.cacheId) {
181
+ var res_1 = JSON.parse(_this._nodeCache.get(mongoQueue.cacheId), common_1.dateReviver);
182
+ mongoQueue.cbs.forEach(function (cb) {
183
+ cb(null, res_1, true);
184
+ });
185
+ mongoQueue.cbs = [];
186
+ mongoQueue.running = false;
187
+ }
188
+ else {
189
+ if (!mongoQueue.name_function_addt) {
190
+ var monitor_1 = new monitor_manager_1.MonitorMongo(mongoQueue.name_function, mongoQueue.name_collection, JSON.stringify(mongoQueue.data_function));
191
+ (_a = index_1.ResolveIOServer.getMainDB().collection(mongoQueue.name_collection))[mongoQueue.name_function].apply(_a, mongoQueue.data_function).then(function (res) {
192
+ monitor_1.finish();
193
+ if (!mongoQueue.invalidateFlag) {
194
+ mongoQueue.cacheId = _this._mongoQueueCacheId;
195
+ _this._mongoQueueCacheId += 1;
196
+ _this.addToCache(mongoQueue.cacheId, res);
197
+ mongoQueue.cbs.forEach(function (cb) {
198
+ cb(null, res, false);
199
+ });
200
+ if (mongoQueue.cbs_next.length) {
201
+ mongoQueue.cbs = mongoQueue.cbs_next;
202
+ mongoQueue.cbs_next = [];
203
+ }
204
+ else {
205
+ mongoQueue.cbs = [];
206
+ }
240
207
  }
241
208
  else {
242
- mongoQueue_1.cbs = [];
209
+ mongoQueue.cbs = mongoQueue.cbs.concat(mongoQueue.cbs_next);
210
+ mongoQueue.cbs_next = [];
211
+ }
212
+ mongoQueue.running = false;
213
+ }, function (err) {
214
+ monitor_1.finish();
215
+ console.log.apply(console, __spreadArrays([new Date(), 'Error ' + mongoQueue.name_function, mongoQueue.name_collection], mongoQueue.data_function, [err]));
216
+ mongoQueue.cbs.forEach(function (cb) {
217
+ cb(err, null, false);
218
+ });
219
+ mongoQueue.cbs_next.forEach(function (cb) {
220
+ cb(err, null, false);
221
+ });
222
+ if (_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue._id) >= 0) {
223
+ _this._mongoQueue.splice(_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue._id), 1);
243
224
  }
244
- }
245
- else {
246
- mongoQueue_1.cbs = mongoQueue_1.cbs.concat(mongoQueue_1.cbs_next);
247
- mongoQueue_1.cbs_next = [];
248
- }
249
- mongoQueue_1.running = false;
250
- }, function (err) {
251
- monitor_2.finish();
252
- mongoQueue_1.cbs.forEach(function (cb) {
253
- cb(err, null, false);
254
225
  });
255
- mongoQueue_1.cbs_next.forEach(function (cb) {
256
- cb(err, null, false);
226
+ }
227
+ else {
228
+ var monitor_2 = new monitor_manager_1.MonitorMongo(mongoQueue.name_function, mongoQueue.name_collection, JSON.stringify(__spreadArrays(mongoQueue.data_function, [mongoQueue.name_function_addt], mongoQueue.data_function_addt)));
229
+ (_b = (_c = index_1.ResolveIOServer.getMainDB().collection(mongoQueue.name_collection))[mongoQueue.name_function].apply(_c, mongoQueue.data_function))[mongoQueue.name_function_addt].apply(_b, mongoQueue.data_function_addt).then(function (res) {
230
+ monitor_2.finish();
231
+ if (!mongoQueue.invalidateFlag) {
232
+ mongoQueue.cacheId = _this._mongoQueueCacheId;
233
+ _this._mongoQueueCacheId += 1;
234
+ _this.addToCache(mongoQueue.cacheId, res);
235
+ mongoQueue.cbs.forEach(function (cb) {
236
+ cb(null, res, false);
237
+ });
238
+ if (mongoQueue.cbs_next.length) {
239
+ mongoQueue.cbs = mongoQueue.cbs_next;
240
+ mongoQueue.cbs_next = [];
241
+ }
242
+ else {
243
+ mongoQueue.cbs = [];
244
+ }
245
+ }
246
+ else {
247
+ mongoQueue.cbs = mongoQueue.cbs.concat(mongoQueue.cbs_next);
248
+ mongoQueue.cbs_next = [];
249
+ }
250
+ mongoQueue.running = false;
251
+ }, function (err) {
252
+ monitor_2.finish();
253
+ mongoQueue.cbs.forEach(function (cb) {
254
+ cb(err, null, false);
255
+ });
256
+ mongoQueue.cbs_next.forEach(function (cb) {
257
+ cb(err, null, false);
258
+ });
259
+ if (_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue._id) >= 0) {
260
+ _this._mongoQueue.splice(_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue._id), 1);
261
+ }
257
262
  });
258
- if (_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue_1._id) >= 0) {
259
- _this._mongoQueue.splice(_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue_1._id), 1);
260
- }
261
- });
263
+ }
262
264
  }
265
+ };
266
+ for (var i = queueArr.length - 1; i >= 0; i--) {
267
+ _loop_1(i);
263
268
  }
264
269
  _this._mongoQueueRunning = false;
265
270
  }
266
271
  }
267
- }, 50);
272
+ }, 25);
268
273
  return [2 /*return*/];
269
274
  });
270
275
  });