@resolveio/server-lib 20.0.28 → 20.1.0
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/client-server-app.js +1 -1
- package/client-server-app.js.map +1 -1
- package/cron/cron.js +1 -1
- package/cron/cron.js.map +1 -1
- package/fixtures/cron-jobs.js +1 -1
- package/fixtures/cron-jobs.js.map +1 -1
- package/fixtures/init.js +1 -1
- package/fixtures/init.js.map +1 -1
- package/http/auth.js +1 -1
- package/http/auth.js.map +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/managers/cron.manager.js +1 -1
- package/managers/cron.manager.js.map +1 -1
- package/managers/method.manager.js +1 -1
- package/managers/method.manager.js.map +1 -1
- package/managers/mongo.manager.js +1 -1
- package/managers/mongo.manager.js.map +1 -1
- package/managers/monitor.manager.js +1 -1
- package/managers/monitor.manager.js.map +1 -1
- package/managers/subscription.manager.js +1 -1
- package/managers/subscription.manager.js.map +1 -1
- package/methods/accounts.js +1 -1
- package/methods/accounts.js.map +1 -1
- package/methods/aws.js +1 -1
- package/methods/aws.js.map +1 -1
- package/methods/counters.js +1 -1
- package/methods/counters.js.map +1 -1
- package/methods/cron-jobs.js +1 -1
- package/methods/cron-jobs.js.map +1 -1
- package/methods/logs.js +1 -1
- package/methods/logs.js.map +1 -1
- package/methods/monitor.js +1 -1
- package/methods/monitor.js.map +1 -1
- package/methods/pdf.js +1 -1
- package/methods/pdf.js.map +1 -1
- package/methods/report-builder.js +1 -1
- package/methods/report-builder.js.map +1 -1
- package/methods/support.js +1 -1
- package/methods/support.js.map +1 -1
- package/methods.ts +34 -0
- package/package.json +1 -1
- package/publications/report-builder-libraries.js +1 -1
- package/publications/report-builder-libraries.js.map +1 -1
- package/publications.ts +31 -0
- package/server-app.js +1 -1
- package/server-app.js.map +1 -1
- package/util/schema-report-builder.js +1 -1
- package/util/schema-report-builder.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/cron.manager.ts"],"names":["cron_job_collection_1","require","cron_1","cron_job_history_collection_1","mongo_manager_1","CronManager","mainServer","this","_jobs","_mainServer","_cronManager","CronJobManager","watchCrons","prototype","_watchCrons$","closed","removeAllListeners","close","Promise","resolve","setTimeout","_a","sent","CronJobs","find","then","res","_this","forEach","job","addCronJob","running","updateOne","_id","$set","watchCollection","fullDocument","on","doc","__awaiter","operationType","some","a","documentKey","push","oldDoc","filter","splice","map","indexOf","name","removeCronJob","time_to_run","Date","getTime","timezone","updateCronJob","err","doesCronJobExist","cron","exists","doesCronJobNameExist","cron_name","add","runCronJob","nextDate","getJob","next_run","e","console","log","update","delete","startCronJob","start","stopCronJob","stop","stopAllCronJobs","stopAll","now","findOneAndUpdate","$and","$or","$exists","$lte","cronHistory_1","objectIdHexString","reoccuring","repeat","method_name","method_run","id_cronjob","server_restart","passed","error","date_scheduled","date_start","date_end","date_next","CronJobHistories","create","timeoutHandle","JSON","stringify","deleteOne","method_run_data","getMethodManager","callMethodCron","method_complete","method_complete_data","err_1","clearTimeout","exports"],"mappings":"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","file":"cron.manager.js","sourcesContent":["import { CronJobModel } from '../models/cron-job.model';\nimport { CronJobs } from '../collections/cron-job.collection';\nimport ResolveIOMainServer from '../server-app';\nimport { CronJobManager } from '../cron/cron';\nimport * as moment from 'moment-timezone';\nimport { ChangeStream, ChangeStreamDocument } from 'mongodb';\nimport { CronJobHistories } from '../collections/cron-job-history.collection';\nimport { objectIdHexString } from '../managers/mongo.manager';\nimport { CronJobHistoryModel } from '../models/cron-job-history.model';\n\nexport class CronManager {\n\tprivate _cronManager: CronJobManager;\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _watchCrons$: ChangeStream;\n\tprivate _jobs: CronJobModel[] = [];\n\n\tconstructor(mainServer) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._cronManager = new CronJobManager();\n\n\t\tthis.watchCrons();\n\t}\n\n\tpublic async watchCrons() {\n\t\tif (this._watchCrons$ && !this._watchCrons$.closed) {\n\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\tthis._watchCrons$.close();\n\t\t\tthis._watchCrons$ = null;\n\t\t}\n\t\n\t\tawait new Promise(resolve => setTimeout(resolve, 1000));\n\t\n\t\tif (!this._watchCrons$ || this._watchCrons$.closed) {\t\t\t\n\t\t\tCronJobs.find().then(res => {\n\t\t\t\tthis._jobs = res;\n\n\t\t\t\tthis._jobs.forEach(job => {\n\t\t\t\t\tthis.addCronJob(job);\n\t\t\t\t\tif (job.running) {\n\t\t\t\t\t\tCronJobs.updateOne({_id: job._id}, {$set: {running: false}});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis._watchCrons$ = CronJobs.watchCollection([], {fullDocument: 'updateLookup'});\n\n\t\t\tthis._watchCrons$.on('change', async (doc: ChangeStreamDocument<CronJobModel>) => {\n\t\t\t\tif (doc.operationType === 'insert') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tif (!this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tthis._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'replace' || doc.operationType === 'update') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tlet oldDoc = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\tif (oldDoc) {\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1, doc.fullDocument);\n\n\t\t\t\t\t\t\tif (oldDoc.name !== doc.fullDocument.name) {\n\t\t\t\t\t\t\t\tthis.removeCronJob(oldDoc.name);\n\t\t\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (typeof oldDoc.time_to_run !== typeof doc.fullDocument.time_to_run || (typeof oldDoc.time_to_run === 'string' && oldDoc.time_to_run !== doc.fullDocument.time_to_run) ||\n\t\t\t\t\t\t\t\t(oldDoc.time_to_run instanceof Date && oldDoc.time_to_run.getTime() !== (<Date>doc.fullDocument.time_to_run).getTime()) || \n\t\t\t\t\t\t\t\toldDoc.timezone !== doc.fullDocument.timezone\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tthis.updateCronJob(doc.fullDocument);\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._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\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\tif (this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'delete') {\n\t\t\t\t\tif (this._jobs.some(a => a._id === (<any>doc).documentKey['_id'])) {\n\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('error', (err) => {\n\t\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t})\n\t\t\t.on('end', () => {\n\t\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t})\n\t\t\t.on('close', () => {\n\t\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate doesCronJobExist(cron: CronJobModel) {\n\t\treturn this._cronManager.exists(cron.name);\n\t}\n\n\tprivate doesCronJobNameExist(cron_name: string) {\n\t\treturn this._cronManager.exists(cron_name);\n\t}\n\n\tprivate addCronJob(cron: CronJobModel) {\n\t\tif (!this.doesCronJobExist(cron)) {\n\t\t\ttry {\n\t\t\t\tthis._cronManager.add(\n\t\t\t\t\tcron.name,\n\t\t\t\t\tcron.time_to_run,\n\t\t\t\t\t() => this.runCronJob(cron),\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t\tcron.timezone,\n\t\t\t\t\tnull, \n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(cron.name).nextDate()['ts']);\n\n\t\t\t\tif (cron.running || (nextDate && !cron.next_run || nextDate.getTime() !== cron.next_run.getTime())) {\n\t\t\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {running: false, next_run: nextDate || null}});\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch(e) {\n\t\t\t\tconsole.log('Cron error', e);\n\n\t\t\t\tif (cron.time_to_run instanceof Date) {\n\t\t\t\t\tthis.runCronJob(cron);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate updateCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.update(cron.name, cron.time_to_run, () => this.runCronJob(cron), null, true, cron.timezone);\n\n\t\t\tlet nextDate = new Date(this._cronManager.getJob(cron.name).nextDate()['ts']);\n\n\t\t\tif (nextDate && (!cron.next_run || nextDate.getTime() !== cron.next_run.getTime())) {\n\t\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {next_run: nextDate}});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate removeCronJob(cron_name: string) {\n\t\tif (this.doesCronJobNameExist(cron_name)) {\n\t\t\tthis._cronManager.delete(cron_name);\n\t\t}\n\t}\n\n\tprivate startCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.start(cron.name);\n\t\t}\n\t}\n\n\tprivate stopCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.stop(cron.name);\n\t\t}\n\t}\n\n\tprivate stopAllCronJobs() {\n\t\tthis._cronManager.stopAll();\n\t}\n\n\tprivate runCronJob(cron: CronJobModel) {\n\t\tlet now = new Date();\n\n\t\tCronJobs.findOneAndUpdate({\n\t\t\t$and: [\n\t\t\t\t{_id: cron._id},\n\t\t\t\t{running: false},\n\t\t\t\t{\n\t\t\t\t\t$or: [\n\t\t\t\t\t\t{next_run: {$exists: false}},\n\t\t\t\t\t\t{next_run: null},\n\t\t\t\t\t\t{next_run: {$lte: now}}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}, {$set: {running: true}}).then(async res => {\n\t\t\tif (res) {\n\t\t\t\tlet cronHistory: CronJobHistoryModel = {\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tname: res.name,\n\t\t\t\t\treoccuring: res.repeat,\n\t\t\t\t\ttime_to_run: res.time_to_run,\n\t\t\t\t\tmethod_name: res.method_run,\n\t\t\t\t\tid_cronjob: res._id,\n\t\t\t\t\tserver_restart: true,\n\t\t\t\t\tpassed: true,\n\t\t\t\t\terror: '',\n\t\t\t\t\tdate_scheduled: res.next_run,\n\t\t\t\t\tdate_start: new Date(),\n\t\t\t\t\tdate_end: null,\n\t\t\t\t\tdate_next: null\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tawait CronJobHistories.create(cronHistory);\n\n\t\t\t\tlet timeoutHandle = setTimeout(async () => {\n\t\t\t\t\tconsole.log(new Date(), 'Cron Timeout', JSON.stringify(cron, null, 2));\n\n\t\t\t\t\tif (res.repeat) {\n\t\t\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(res.name).nextDate()['ts']);\n\t\t\t\t\t\tcronHistory.date_next = nextDate;\n\t\t\t\t\t\tCronJobs.updateOne({_id: res._id}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t\t}\n\t\t\t\t}, 5 * 60 * 1000); // 5 minutes in milliseconds\n\n\t\t\t\ttry {\n\t\t\t\t\tif (res.method_run_data) {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run, res.method_run_data);\t\n\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (res.method_complete) {\n\t\t\t\t\t\tif (res.method_complete_data) {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete, res.method_complete_data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.log(new Date(), 'Cron Error', JSON.stringify(err, null, 2));\n\t\t\t\t\tcronHistory.error = JSON.stringify(err, null, 2);\n\t\t\t\t\tcronHistory.passed = false;\n\n\t\t\t\t\tif (res.repeat) {\n\t\t\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(res.name).nextDate()['ts']);\n\t\t\t\t\t\tcronHistory.date_next = nextDate;\n\t\t\t\t\t\tCronJobs.updateOne({_id: res._id}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\t// Clear the timeout if the job completes or fails before the timeout\n\t\t\t\t\tclearTimeout(timeoutHandle);\n\t\t\t\t}\n\n\t\t\t\tif (res.repeat) {\n\t\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(res.name).nextDate()['ts']);\n\t\t\t\t\tcronHistory.date_next = nextDate;\n\t\t\t\t\tCronJobs.updateOne({_id: res._id}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t}\n\n\t\t\t\tCronJobHistories.updateOne({_id: cronHistory._id}, {$set: {\n\t\t\t\t\tserver_restart: false,\n\t\t\t\t\tpassed: cronHistory.passed,\n\t\t\t\t\terror: cronHistory.error,\n\t\t\t\t\tdate_end: new Date(),\n\t\t\t\t\tdate_next: cronHistory.date_next\n\t\t\t\t}});\n\t\t\t}\n\t\t}, () => {});\n\t}\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/cron.manager.ts"],"names":["cron_job_collection_1","require","cron_1","cron_job_history_collection_1","mongo_manager_1","CronManager","mainServer","this","_jobs","_mainServer","_cronManager","CronJobManager","watchCrons","prototype","_watchCrons$","closed","removeAllListeners","close","Promise","resolve","setTimeout","_a","sent","CronJobs","find","then","res","_this","forEach","job","addCronJob","running","updateOne","_id","$set","watchCollection","fullDocument","on","doc","__awaiter","operationType","some","a","documentKey","push","oldDoc","filter","splice","map","indexOf","name","removeCronJob","time_to_run","Date","getTime","timezone","updateCronJob","err","doesCronJobExist","cron","exists","doesCronJobNameExist","cron_name","add","runCronJob","nextDate","getJob","next_run","e","console","log","update","delete","startCronJob","start","stopCronJob","stop","stopAllCronJobs","stopAll","now","findOneAndUpdate","$and","$or","$exists","$lte","cronHistory_1","objectIdHexString","reoccuring","repeat","method_name","method_run","id_cronjob","server_restart","passed","error","date_scheduled","date_start","date_end","date_next","CronJobHistories","create","timeoutHandle","JSON","stringify","deleteOne","method_run_data","getMethodManager","callMethodCron","method_complete","method_complete_data","err_1","clearTimeout","exports"],"mappings":"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","file":"cron.manager.js","sourcesContent":["import { CronJobModel } from '../models/cron-job.model';\nimport { CronJobs } from '../collections/cron-job.collection';\nimport ResolveIOMainServer from '../server-app';\nimport { CronJobManager } from '../cron/cron';\nimport * as moment from 'moment-timezone';\nimport { ChangeStream, ChangeStreamDocument } from 'mongodb';\nimport { CronJobHistories } from '../collections/cron-job-history.collection';\nimport { objectIdHexString } from '../managers/mongo.manager';\nimport { CronJobHistoryModel } from '../models/cron-job-history.model';\n\nexport class CronManager {\n\tprivate _cronManager: CronJobManager;\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _watchCrons$: ChangeStream;\n\tprivate _jobs: CronJobModel[] = [];\n\n\tconstructor(mainServer) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._cronManager = new CronJobManager();\n\n\t\tthis.watchCrons();\n\t}\n\n\tpublic async watchCrons() {\n\t\tif (this._watchCrons$ && !this._watchCrons$.closed) {\n\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\tthis._watchCrons$.close();\n\t\t\tthis._watchCrons$ = null;\n\t\t}\n\t\n\t\tawait new Promise(resolve => setTimeout(resolve, 1000));\n\t\n\t\tif (!this._watchCrons$ || this._watchCrons$.closed) {\t\t\t\n\t\t\tCronJobs.find().then(res => {\n\t\t\t\tthis._jobs = res;\n\n\t\t\t\tthis._jobs.forEach(job => {\n\t\t\t\t\tthis.addCronJob(job);\n\t\t\t\t\tif (job.running) {\n\t\t\t\t\t\tCronJobs.updateOne({_id: job._id}, {$set: {running: false}});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis._watchCrons$ = CronJobs.watchCollection([], {fullDocument: 'updateLookup'});\n\n\t\t\tthis._watchCrons$.on('change', async (doc: ChangeStreamDocument<CronJobModel>) => {\n\t\t\t\tif (doc.operationType === 'insert') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tif (!this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tthis._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'replace' || doc.operationType === 'update') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tlet oldDoc = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\tif (oldDoc) {\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1, doc.fullDocument);\n\n\t\t\t\t\t\t\tif (oldDoc.name !== doc.fullDocument.name) {\n\t\t\t\t\t\t\t\tthis.removeCronJob(oldDoc.name);\n\t\t\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (typeof oldDoc.time_to_run !== typeof doc.fullDocument.time_to_run || (typeof oldDoc.time_to_run === 'string' && oldDoc.time_to_run !== doc.fullDocument.time_to_run) ||\n\t\t\t\t\t\t\t\t(oldDoc.time_to_run instanceof Date && oldDoc.time_to_run.getTime() !== (<Date>doc.fullDocument.time_to_run).getTime()) || \n\t\t\t\t\t\t\t\toldDoc.timezone !== doc.fullDocument.timezone\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tthis.updateCronJob(doc.fullDocument);\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._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\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\tif (this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'delete') {\n\t\t\t\t\tif (this._jobs.some(a => a._id === (<any>doc).documentKey['_id'])) {\n\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('error', (err) => {\n\t\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t})\n\t\t\t.on('end', () => {\n\t\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t})\n\t\t\t.on('close', () => {\n\t\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate doesCronJobExist(cron: CronJobModel) {\n\t\treturn this._cronManager.exists(cron.name);\n\t}\n\n\tprivate doesCronJobNameExist(cron_name: string) {\n\t\treturn this._cronManager.exists(cron_name);\n\t}\n\n\tprivate addCronJob(cron: CronJobModel) {\n\t\tif (!this.doesCronJobExist(cron)) {\n\t\t\ttry {\n\t\t\t\tthis._cronManager.add(\n\t\t\t\t\tcron.name,\n\t\t\t\t\tcron.time_to_run,\n\t\t\t\t\t() => this.runCronJob(cron),\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t\tcron.timezone,\n\t\t\t\t\tnull, \n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(cron.name).nextDate()['ts']);\n\n\t\t\t\tif (cron.running || (nextDate && !cron.next_run || nextDate.getTime() !== cron.next_run.getTime())) {\n\t\t\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {running: false, next_run: nextDate || null}});\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch(e) {\n\t\t\t\tconsole.log('Cron error', e);\n\n\t\t\t\tif (cron.time_to_run instanceof Date) {\n\t\t\t\t\tthis.runCronJob(cron);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate updateCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.update(cron.name, cron.time_to_run, () => this.runCronJob(cron), null, true, cron.timezone);\n\n\t\t\tlet nextDate = new Date(this._cronManager.getJob(cron.name).nextDate()['ts']);\n\n\t\t\tif (nextDate && (!cron.next_run || nextDate.getTime() !== cron.next_run.getTime())) {\n\t\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {next_run: nextDate}});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate removeCronJob(cron_name: string) {\n\t\tif (this.doesCronJobNameExist(cron_name)) {\n\t\t\tthis._cronManager.delete(cron_name);\n\t\t}\n\t}\n\n\tprivate startCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.start(cron.name);\n\t\t}\n\t}\n\n\tprivate stopCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.stop(cron.name);\n\t\t}\n\t}\n\n\tprivate stopAllCronJobs() {\n\t\tthis._cronManager.stopAll();\n\t}\n\n\tprivate runCronJob(cron: CronJobModel) {\n\t\tlet now = new Date();\n\n\t\tCronJobs.findOneAndUpdate({\n\t\t\t$and: [\n\t\t\t\t{_id: cron._id},\n\t\t\t\t{running: false},\n\t\t\t\t{\n\t\t\t\t\t$or: [\n\t\t\t\t\t\t{next_run: {$exists: false}},\n\t\t\t\t\t\t{next_run: null},\n\t\t\t\t\t\t{next_run: {$lte: now}}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}, {$set: {running: true}}).then(async res => {\n\t\t\tif (res) {\n\t\t\t\tlet cronHistory: CronJobHistoryModel = {\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tname: res.name,\n\t\t\t\t\treoccuring: res.repeat,\n\t\t\t\t\ttime_to_run: res.time_to_run,\n\t\t\t\t\tmethod_name: res.method_run,\n\t\t\t\t\tid_cronjob: res._id,\n\t\t\t\t\tserver_restart: true,\n\t\t\t\t\tpassed: true,\n\t\t\t\t\terror: '',\n\t\t\t\t\tdate_scheduled: res.next_run,\n\t\t\t\t\tdate_start: new Date(),\n\t\t\t\t\tdate_end: null,\n\t\t\t\t\tdate_next: null\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tawait CronJobHistories.create(cronHistory);\n\n\t\t\t\tlet timeoutHandle = setTimeout(async () => {\n\t\t\t\t\tconsole.log(new Date(), 'Cron Timeout', JSON.stringify(cron, null, 2));\n\n\t\t\t\t\tif (res.repeat) {\n\t\t\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(res.name).nextDate()['ts']);\n\t\t\t\t\t\tcronHistory.date_next = nextDate;\n\t\t\t\t\t\tCronJobs.updateOne({_id: res._id}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t\t}\n\t\t\t\t}, 5 * 60 * 1000); // 5 minutes in milliseconds\n\n\t\t\t\ttry {\n\t\t\t\t\tif (res.method_run_data) {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run, res.method_run_data);\t\n\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (res.method_complete) {\n\t\t\t\t\t\tif (res.method_complete_data) {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete, res.method_complete_data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.log(new Date(), 'Cron Error', JSON.stringify(err, null, 2));\n\t\t\t\t\tcronHistory.error = JSON.stringify(err, null, 2);\n\t\t\t\t\tcronHistory.passed = false;\n\n\t\t\t\t\tif (res.repeat) {\n\t\t\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(res.name).nextDate()['ts']);\n\t\t\t\t\t\tcronHistory.date_next = nextDate;\n\t\t\t\t\t\tCronJobs.updateOne({_id: res._id}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\t// Clear the timeout if the job completes or fails before the timeout\n\t\t\t\t\tclearTimeout(timeoutHandle);\n\t\t\t\t}\n\n\t\t\t\tif (res.repeat) {\n\t\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(res.name).nextDate()['ts']);\n\t\t\t\t\tcronHistory.date_next = nextDate;\n\t\t\t\t\tCronJobs.updateOne({_id: res._id}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t}\n\n\t\t\t\tCronJobHistories.updateOne({_id: cronHistory._id}, {$set: {\n\t\t\t\t\tserver_restart: false,\n\t\t\t\t\tpassed: cronHistory.passed,\n\t\t\t\t\terror: cronHistory.error,\n\t\t\t\t\tdate_end: new Date(),\n\t\t\t\t\tdate_next: cronHistory.date_next\n\t\t\t\t}});\n\t\t\t}\n\t\t}, () => {});\n\t}\n}"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(e,s,a,l){return new(a=a||Promise)(function(o,t){function n(e){try{i(l.next(e))}catch(e){t(e)}}function r(e){try{i(l.throw(e))}catch(e){t(e)}}function i(e){var t;e.done?o(e.value):((t=e.value)instanceof a?t:new a(function(e){e(t)})).then(n,r)}i((l=l.apply(e,s||[])).next())})},__generator=this&&this.__generator||function(n,r){var i,s,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},c={next:e(0),throw:e(1),return:e(2)};return"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function e(o){return function(e){var t=[o,e];if(i)throw new TypeError("Generator is already executing.");for(;l=c&&t[c=0]?0:l;)try{if(i=1,s&&(a=2&t[0]?s.return:t[0]?s.throw||((a=s.return)&&a.call(s),0):s.next)&&!(a=a.call(s,t[1])).done)return a;switch(s=0,(t=a?[2&t[0],a.value]:t)[0]){case 0:case 1:a=t;break;case 4:return l.label++,{value:t[1],done:!1};case 5:l.label++,s=t[1],t=[0];continue;case 7:t=l.ops.pop(),l.trys.pop();continue;default:if(!(a=0<(a=l.trys).length&&a[a.length-1])&&(6===t[0]||2===t[0])){l=0;continue}if(3===t[0]&&(!a||t[1]>a[0]&&t[1]<a[3]))l.label=t[1];else if(6===t[0]&&l.label<a[1])l.label=a[1],a=t;else{if(!(a&&l.label<a[2])){a[2]&&l.ops.pop(),l.trys.pop();continue}l.label=a[2],l.ops.push(t)}}t=r.call(n,l)}catch(e){t=[6,e],s=0}finally{i=a=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}}},__spreadArray=this&&this.__spreadArray||function(e,t,o){if(o||2===arguments.length)for(var n,r=0,i=t.length;r<i;r++)!n&&r in t||((n=n||Array.prototype.slice.call(t,0,r))[r]=t[r]);return e.concat(n||Array.prototype.slice.call(t))},collections_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.MethodManager=exports.AWS=void 0,require("../methods/collections")),logs_1=require("../methods/logs"),counters_1=require("../methods/counters"),pdf_1=require("../methods/pdf"),aws_1=require("../methods/aws"),path=require("path"),fs=require("fs"),nodemailer=require("nodemailer"),sesTransport=require("nodemailer-ses-transport"),accounts_1=require("../methods/accounts"),init_1=require("../fixtures/init"),cron_jobs_1=require("../fixtures/cron-jobs"),cron_jobs_2=require("../methods/cron-jobs"),flags_1=require("../methods/flags"),method_response_collection_1=require("../collections/method-response.collection"),common_1=require("../util/common"),log_collection_1=require("../collections/log.collection"),log_method_latency_collection_1=require("../collections/log-method-latency.collection"),moment=require("moment-timezone"),report_builder_1=require("../methods/report-builder"),support_1=require("../methods/support"),monitor_1=require("../methods/monitor"),email_history_collection_1=require("../collections/email-history.collection"),mongo_manager_1=require("./mongo.manager"),client_s3_1=require("@aws-sdk/client-s3"),AWS=function(){function e(e){this._serverConfig=null,this._s3=null,this._s3USEast1=null,this._serverConfig=e}return e.prototype.s3=function(){return this._s3||(this._s3=new client_s3_1.S3({credentials:{accessKeyId:process.env.AWS_ACCESS_KEY,secretAccessKey:process.env.AWS_SECRET_ACCESS_KEY},region:process.env.AWS_REGION,apiVersion:"2006-03-01"})),this._s3},e.prototype.s3USEast1=function(){return"us-east-1"===process.env.AWS_REGION?this.s3():(this._s3USEast1||(this._s3USEast1=new client_s3_1.S3({credentials:{accessKeyId:process.env.AWS_ACCESS_KEY,secretAccessKey:process.env.AWS_SECRET_ACCESS_KEY},region:"us-east-1",apiVersion:"2006-03-01"})),this._s3USEast1)},e}(),MethodManager=(exports.AWS=AWS,function(){function g(e,t,o,n){var r=this;this._methods={},this._sendQueue=[],this._runningQueue=!1,this._debugCallMethodInternalHits=0,this._debugCallMethodHits=0,this._debugCallMethodCronJobHits=0,this._debugSendQueueHits=0,this._mainServer=e,this.serverConfig=t,this.clientDir=o,this._monitorManagerFunction=n,(0,init_1.loadServerInit)(),(0,cron_jobs_1.loadServerCronJobs)(),(0,accounts_1.loadAccountMethods)(this),(0,aws_1.loadAWSMethods)(this),(0,collections_1.loadCollectionMethods)(this),(0,counters_1.loadCounterMethods)(this),(0,logs_1.loadLogMethods)(this),(0,pdf_1.loadPDFMethods)(this),(0,cron_jobs_2.loadCronJobMethods)(this),(0,flags_1.loadFlagMethods)(this),(0,report_builder_1.loadReportBuilderMethods)(this),(0,support_1.loadSupportMethods)(this),(0,monitor_1.loadMonitorMethods)(this),this._aws=new AWS(t),e.sesMail?this._mailer=nodemailer.createTransport(sesTransport({accessKeyId:process.env.AWS_ACCESS_KEY,secretAccessKey:process.env.AWS_SECRET_ACCESS_KEY,region:process.env.AWS_SES_REGION})):this._mailer=nodemailer.createTransport({host:this.serverConfig.MAIL_HOST,port:this.serverConfig.MAIL_PORT,secure:!1,auth:{user:this.serverConfig.MAIL_USERNAME,pass:this.serverConfig.MAIL_PASSWORD},tls:{ciphers:"SSLv3"}}),setInterval(function(){r._mainServer.getSubscriptionManager().getEnableDebug()&&(console.log(new Date,"Method Manager","Send Queue Length",r._sendQueue.length),console.log(new Date,"Method Manager","Send Queue Hits",r._debugSendQueueHits),console.log(new Date,"Method Manager","Call Method Internal Hits",r._debugCallMethodInternalHits),console.log(new Date,"Method Manager","Call Method Hits",r._debugCallMethodHits),console.log(new Date,"Method Manager","Call Method Cron Hits",r._debugCallMethodCronJobHits)),r._debugCallMethodInternalHits=0,r._debugCallMethodHits=0,r._debugCallMethodCronJobHits=0,r._debugSendQueueHits=0,r._debugSendQueueHits=0},6e4),setInterval(function(){if(!r._runningQueue&&r._sendQueue.length){r._runningQueue=!0;for(var e=r._sendQueue.length-1;0<=e;e--)!function(e){r._debugSendQueueHits+=1;var t,o=r._mainServer.getWS(r._sendQueue[e].id_ws);o&&o.readyState===o.OPEN?o.bufferedAmount<20480&&(t=r._sendQueue.pop(),o.send(JSON.stringify(t.data),function(e){e&&r._mainServer.unsubscribeWS(o)}),"reportBuilderGetResults"!==t.method&&"reportBuilderGetDistinctValue"!==t.method&&"reportBuilderBuildTree"!==t.method&&"generatePDF"!==t.method&&"getWOOfflineData"!==t.method&&"countQuery"!==t.method&&"countWithQuery"!==t.method&&"countCollectionWithQuery"!==t.method&&"find"!==t.method&&"findOne"!==t.method&&"findWithOptions"!==t.method&&"uploadFileAndSave"!==t.method&&"getDrivers"!==t.method&&"processAirdropDistribution"!==t.method&&log_collection_1.Logs.insertOne({_id:(0,mongo_manager_1.objectIdHexString)(),type:"client-response",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify([t.methodData,t.data]))<2e5?JSON.stringify([t.methodData,t.data],null,2):"Too Big",method:t.method,id_user:o.id_user||"",user:o.user||"",messageId:t.data.messageId,route:""}),method_response_collection_1.MethodResponses.create({_id:(0,mongo_manager_1.objectIdHexString)(),__v:0,id_user:o.id_user||"",message_id:t.data.messageId,response:(0,common_1.getBinarySize)(JSON.stringify(t.data))<2e5?t.data:{error:"Too Big"},method:t.method,date:t.date})):r._sendQueue.splice(e,1)}(e);r._runningQueue=!1}},25)}return g.prototype.getMainServer=function(){return this._mainServer},g.prototype.methods=function(e){this._methods=Object.assign(this._methods,e)},g.prototype.callMethodCron=function(t){for(var e,o=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];if(this._debugCallMethodCronJobHits+=1,this._methods[t]){if((1<n.length||n[0])&&!this._methods[t].skipValidation){if(!this._methods[t].check)return console.error(new Date,"No Check Function For Method "+t),void this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Check Function For Method "+t);if(!this._methods[t].check._schema)return console.error(new Date,"No Check Schema For Method "+t),void this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Check Function For Method "+t);for(var i={},s=Object.keys(this._methods[t].check._schema).filter(function(e){return!e.includes(".")}),a=0;a<n.length;a++)i[s[a]]=n[a];try{this._methods[t].check.validate(i)}catch(e){if(e)return console.error(new Date,"Error in Method Check ("+t+")",e),void this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"Match Error On Method "+t+"\n\nData Being Checked\n"+JSON.stringify(i,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2))}}var l=this._monitorManagerFunction.startMonitorFunction("Cron Method",t,"","",n);return(e=this._methods[t].function).call.apply(e,__spreadArray([Object.assign({},this,g.prototype,{id_user:"",user:"",id_ws:""})],n,!1)).then(function(e){return o._monitorManagerFunction.finishMonitorFunction(l),e},function(e){return o._monitorManagerFunction.finishMonitorFunction(l),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"Error Detected During Method "+t+" - (callMethodCron)\n\nData \n"+JSON.stringify(n,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),e})}console.log("No Method: "+t),this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Method: "+t)},g.prototype.callMethod=function(n,r,i,s,a){for(var e,t=this,l=[],o=5;o<arguments.length;o++)l[o-5]=arguments[o];if(this._debugCallMethodHits+=1,this._methods[a]){if((1<l.length||l[0])&&!this._methods[a].skipValidation){if(!this._methods[a].check)return console.error(new Date,"No Check Function For Method "+a),this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Check Function For Method "+a),this.sendWS(r,i,a,l,c={messageId:s,hasError:!0,data:"Internal Error"}),void(n&&log_method_latency_collection_1.LogMethodLatencies.deleteOne({_id:n}));if(!this._methods[a].check._schema)return console.error(new Date,"No Check Schema For Method "+a),this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Check Function For Method "+a),c={messageId:s,hasError:!0,data:"Internal Error"},n&&log_method_latency_collection_1.LogMethodLatencies.deleteOne({_id:n}),void this.sendWS(r,i,a,l,c);for(var c,d={},h=Object.keys(this._methods[a].check._schema).filter(function(e){return!e.includes(".")}),u=0;u<l.length;u++)d[h[u]]=l[u];try{this._methods[a].check.validate(d)}catch(e){if(e)return console.error(new Date,"Error in Method Check ("+a+")",e),"processAirdropDistribution"!==a&&this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"Match Error On Method "+a+"\n\nData Being Checked\n"+JSON.stringify(d,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),this.sendWS(r,i,a,l,c={messageId:s,hasError:!0,data:"Internal Error"}),void(n&&log_method_latency_collection_1.LogMethodLatencies.deleteOne({_id:n}))}}var _=this._monitorManagerFunction.startMonitorFunction("Method",a,r.user||"",r.id_socket||"",l);(e=this._methods[a].function).call.apply(e,__spreadArray([Object.assign({},this,g.prototype,{id_user:r.id_user,user:r.user,id_ws:r.id_socket})],l,!1)).then(function(o){return __awaiter(t,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return(this._monitorManagerFunction.finishMonitorFunction(_),t={messageId:s,hasError:!1,data:o},this.sendWS(r,i,a,l,t),n)?[4,log_method_latency_collection_1.LogMethodLatencies.findById(n)]:[3,2];case 1:(t=e.sent())&&log_method_latency_collection_1.LogMethodLatencies.updateOne({_id:n},{$set:{date_end:new Date,latency_ms:moment().diff(moment(t.date_start),"milliseconds",!0)}}),e.label=2;case 2:return[2]}})})},function(e){t._monitorManagerFunction.finishMonitorFunction(_),t.sendWS(r,i,a,l,{messageId:s,hasError:!0,data:e}),n&&log_method_latency_collection_1.LogMethodLatencies.deleteOne({_id:n}),"processAirdropDistribution"!==a&&t.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+t.serverConfig.CLIENT_NAME,"Error Detected During Method "+a+" - (callMethod)\n\nData \n"+JSON.stringify(l,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2))})}else console.log("No Method: "+a),this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Method: "+a),this.sendWS(r,i,a,l,c={messageId:s,hasError:!0,data:"Internal Error"}),n&&log_method_latency_collection_1.LogMethodLatencies.deleteOne({_id:n})},g.prototype.callMethodInternal=function(t){for(var o=this,n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];if(this._debugCallMethodInternalHits+=1,!this._methods[t])return console.log("No Method: "+t),null;if((1<n.length||n[0]&&"function"!=typeof n[0])&&!this._methods[t].skipValidation){if(!this._methods[t].check)return console.error(new Date,"No Check Function For Method "+t),null;if(!this._methods[t].check._schema)return console.error(new Date,"No Check Schema For Method "+t),null}"insertSubscriptionLog"!==t&&"getDataURIfromURL"!==t&&"processAirdropDistribution"!==t&&log_collection_1.Logs.insertOne({_id:(0,mongo_manager_1.objectIdHexString)(),type:"callMethodInternal",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify([n]))<2e5?JSON.stringify([n],null,2):"Too Big",method:t,id_user:this.id_user||"",user:this.user||"",messageId:0,route:""});var r="function"==typeof n[n.length-1]?n.slice(0,-1):n,i=this._monitorManagerFunction.startMonitorFunction("Internal Method",t,this.user||"","",r),s=(s=this._methods[t].function).call.apply(s,__spreadArray([Object.assign({},this,g.prototype)],r,!1)).then(function(e){return o._monitorManagerFunction.finishMonitorFunction(i),e},function(e){return o._monitorManagerFunction.finishMonitorFunction(i),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"Error Detected During Method "+t+" - (callMethodInternal)\n\nData \n"+JSON.stringify(n,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),e});return n[n.length-1]&&"function"==typeof n[n.length-1]&&s.then(function(e){return n[n.length-1](null,e)},function(e){return n[n.length-1](e,null)}),s},g.prototype.sendWS=function(e,t,o,n,r){this._sendQueue.splice(0,0,{id_ws:e.id_socket,method:o,methodData:n,data:r,date:t})},g.prototype.sendEmail=function(n,r,i,s,a,l,c){var o=this;return new Promise(function(t,e){return __awaiter(o,void 0,void 0,function(){var o=this;return __generator(this,function(e){return(n=!this.serverConfig.ROOT_URL.match(new RegExp(/https\:\/\/dev\./))&&!this.serverConfig.ROOT_URL.match(new RegExp(/https\:\/\/www\.dev\./))&&"http://localhost:4200"!==this.serverConfig.ROOT_URL||n.match(new RegExp(/\@resolveio\.com/))?n:"dev@resolveio.com")&&("http://localhost:4200"!==this.serverConfig.ROOT_URL?this._mailer.sendMail({replyTo:null!=c?c:this.serverConfig.MAIL_REPLY_TO||void 0,from:l||this.serverConfig.MAIL_FROM,to:n,subject:(this.serverConfig.ROOT_URL.match(new RegExp(/https\:\/\/dev\./))||this.serverConfig.ROOT_URL.match(new RegExp(/https\:\/\/www\.dev\./))?"(DEV SERVER) - ":"")+r,text:i,html:s,attachments:a},function(e,t){e?(console.log(e),email_history_collection_1.EmailHistories.create({_id:(0,mongo_manager_1.objectIdHexString)(),__v:0,date:new Date,id_user:o.id_user||"",user:o.user||"",email:n,success:!1,verified:!1})):email_history_collection_1.EmailHistories.create({_id:(0,mongo_manager_1.objectIdHexString)(),__v:0,date:new Date,id_user:o.id_user||"",user:o.user||"",email:n,success:!0,verified:!1})}):console.log("Send email",n,r,i,s,a,l),t(!0)),[2]})})})},g.prototype.getAWS=function(){return this._aws},g.prototype.readFile=function(e){var t=this;return new Promise(function(o,n){fs.existsSync(path.join(__dirname,"../private/"+e))?fs.readFile(path.join(__dirname,"../private/"+e),"utf-8",function(e,t){e?n(e):o(t)}):fs.existsSync(path.join(t.clientDir,"./private/"+e))&&fs.readFile(path.join(t.clientDir,"./private/"+e),"utf-8",function(e,t){e?n(e):o(t)})})},g.prototype.readImage=function(e){var t=this;return new Promise(function(o,n){fs.existsSync(path.join(__dirname,"../private/"+e))?fs.readFile(path.join(__dirname,"../private/"+e),"base64",function(e,t){e?n(e):o(t)}):fs.existsSync(path.join(t.clientDir,"./private/"+e))&&fs.readFile(path.join(t.clientDir,"./private/"+e),"base64",function(e,t){e?n(e):o(t)})})},g}());exports.MethodManager=MethodManager;
|
|
1
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(e,n,r,i){return new(r=r||Promise)(function(o,t){function fulfilled(e){try{step(i.next(e))}catch(e){t(e)}}function rejected(e){try{step(i.throw(e))}catch(e){t(e)}}function step(e){var t;e.done?o(e.value):((t=e.value)instanceof r?t:new r(function(e){e(t)})).then(fulfilled,rejected)}step((i=i.apply(e,n||[])).next())})},__generator=this&&this.__generator||function(n,r){var i,s,a,d={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function verb(o){return function(e){var t=[o,e];if(i)throw new TypeError("Generator is already executing.");for(;d=l&&t[l=0]?0:d;)try{if(i=1,s&&(a=2&t[0]?s.return:t[0]?s.throw||((a=s.return)&&a.call(s),0):s.next)&&!(a=a.call(s,t[1])).done)return a;switch(s=0,(t=a?[2&t[0],a.value]:t)[0]){case 0:case 1:a=t;break;case 4:return d.label++,{value:t[1],done:!1};case 5:d.label++,s=t[1],t=[0];continue;case 7:t=d.ops.pop(),d.trys.pop();continue;default:if(!(a=0<(a=d.trys).length&&a[a.length-1])&&(6===t[0]||2===t[0])){d=0;continue}if(3===t[0]&&(!a||t[1]>a[0]&&t[1]<a[3]))d.label=t[1];else if(6===t[0]&&d.label<a[1])d.label=a[1],a=t;else{if(!(a&&d.label<a[2])){a[2]&&d.ops.pop(),d.trys.pop();continue}d.label=a[2],d.ops.push(t)}}t=r.call(n,d)}catch(e){t=[6,e],s=0}finally{i=a=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}}},__spreadArray=this&&this.__spreadArray||function(e,t,o){if(o||2===arguments.length)for(var n,r=0,i=t.length;r<i;r++)!n&&r in t||((n=n||Array.prototype.slice.call(t,0,r))[r]=t[r]);return e.concat(n||Array.prototype.slice.call(t))},collections_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.MethodManager=exports.AWS=void 0,require("../methods/collections")),logs_1=require("../methods/logs"),counters_1=require("../methods/counters"),pdf_1=require("../methods/pdf"),aws_1=require("../methods/aws"),path=require("path"),fs=require("fs"),nodemailer=require("nodemailer"),sesTransport=require("nodemailer-ses-transport"),accounts_1=require("../methods/accounts"),init_1=require("../fixtures/init"),cron_jobs_1=require("../fixtures/cron-jobs"),cron_jobs_2=require("../methods/cron-jobs"),flags_1=require("../methods/flags"),method_response_collection_1=require("../collections/method-response.collection"),common_1=require("../util/common"),log_collection_1=require("../collections/log.collection"),log_method_latency_collection_1=require("../collections/log-method-latency.collection"),moment=require("moment-timezone"),report_builder_1=require("../methods/report-builder"),support_1=require("../methods/support"),monitor_1=require("../methods/monitor"),email_history_collection_1=require("../collections/email-history.collection"),mongo_manager_1=require("./mongo.manager"),client_s3_1=require("@aws-sdk/client-s3"),AWS=function(){function AWS(e){this._serverConfig=null,this._s3=null,this._s3USEast1=null,this._serverConfig=e}return AWS.prototype.s3=function(){return this._s3||(this._s3=new client_s3_1.S3({credentials:{accessKeyId:process.env.AWS_ACCESS_KEY,secretAccessKey:process.env.AWS_SECRET_ACCESS_KEY},region:process.env.AWS_REGION,apiVersion:"2006-03-01"})),this._s3},AWS.prototype.s3USEast1=function(){return"us-east-1"===process.env.AWS_REGION?this.s3():(this._s3USEast1||(this._s3USEast1=new client_s3_1.S3({credentials:{accessKeyId:process.env.AWS_ACCESS_KEY,secretAccessKey:process.env.AWS_SECRET_ACCESS_KEY},region:"us-east-1",apiVersion:"2006-03-01"})),this._s3USEast1)},AWS}(),MethodManager=(exports.AWS=AWS,function(){function MethodManager(e,t,o,n){var r=this;this._methods={},this._sendQueue=[],this._runningQueue=!1,this._debugCallMethodInternalHits=0,this._debugCallMethodHits=0,this._debugCallMethodCronJobHits=0,this._debugSendQueueHits=0,this._mainServer=e,this.serverConfig=t,this.clientDir=o,this._monitorManagerFunction=n,(0,init_1.loadServerInit)(),(0,cron_jobs_1.loadServerCronJobs)(),(0,accounts_1.loadAccountMethods)(this),(0,aws_1.loadAWSMethods)(this),(0,collections_1.loadCollectionMethods)(this),(0,counters_1.loadCounterMethods)(this),(0,logs_1.loadLogMethods)(this),(0,pdf_1.loadPDFMethods)(this),(0,cron_jobs_2.loadCronJobMethods)(this),(0,flags_1.loadFlagMethods)(this),(0,report_builder_1.loadReportBuilderMethods)(this),(0,support_1.loadSupportMethods)(this),(0,monitor_1.loadMonitorMethods)(this),this._aws=new AWS(t),e.sesMail?this._mailer=nodemailer.createTransport(sesTransport({accessKeyId:process.env.AWS_ACCESS_KEY,secretAccessKey:process.env.AWS_SECRET_ACCESS_KEY,region:process.env.AWS_SES_REGION})):this._mailer=nodemailer.createTransport({host:this.serverConfig.MAIL_HOST,port:this.serverConfig.MAIL_PORT,secure:!1,auth:{user:this.serverConfig.MAIL_USERNAME,pass:this.serverConfig.MAIL_PASSWORD},tls:{ciphers:"SSLv3"}}),setInterval(function(){r._mainServer.getSubscriptionManager().getEnableDebug()&&(console.log(new Date,"Method Manager","Send Queue Length",r._sendQueue.length),console.log(new Date,"Method Manager","Send Queue Hits",r._debugSendQueueHits),console.log(new Date,"Method Manager","Call Method Internal Hits",r._debugCallMethodInternalHits),console.log(new Date,"Method Manager","Call Method Hits",r._debugCallMethodHits),console.log(new Date,"Method Manager","Call Method Cron Hits",r._debugCallMethodCronJobHits)),r._debugCallMethodInternalHits=0,r._debugCallMethodHits=0,r._debugCallMethodCronJobHits=0,r._debugSendQueueHits=0,r._debugSendQueueHits=0},6e4),setInterval(function(){if(!r._runningQueue&&r._sendQueue.length){r._runningQueue=!0;for(var e=r._sendQueue.length-1;0<=e;e--)!function(e){r._debugSendQueueHits+=1;var t,o=r._mainServer.getWS(r._sendQueue[e].id_ws);o&&o.readyState===o.OPEN?o.bufferedAmount<20480&&(t=r._sendQueue.pop(),o.send(JSON.stringify(t.data),function(e){e&&r._mainServer.unsubscribeWS(o)}),"reportBuilderGetResults"!==t.method&&"reportBuilderGetDistinctValue"!==t.method&&"reportBuilderBuildTree"!==t.method&&"generatePDF"!==t.method&&"getWOOfflineData"!==t.method&&"countQuery"!==t.method&&"countWithQuery"!==t.method&&"countCollectionWithQuery"!==t.method&&"find"!==t.method&&"findOne"!==t.method&&"findWithOptions"!==t.method&&"uploadFileAndSave"!==t.method&&"getDrivers"!==t.method&&"processAirdropDistribution"!==t.method&&log_collection_1.Logs.insertOne({_id:(0,mongo_manager_1.objectIdHexString)(),type:"client-response",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify([t.methodData,t.data]))<2e5?JSON.stringify([t.methodData,t.data],null,2):"Too Big",method:t.method,id_user:o.id_user||"",user:o.user||"",messageId:t.data.messageId,route:""}),method_response_collection_1.MethodResponses.create({_id:(0,mongo_manager_1.objectIdHexString)(),__v:0,id_user:o.id_user||"",message_id:t.data.messageId,response:(0,common_1.getBinarySize)(JSON.stringify(t.data))<2e5?t.data:{error:"Too Big"},method:t.method,date:t.date})):r._sendQueue.splice(e,1)}(e);r._runningQueue=!1}},25)}return MethodManager.prototype.getMainServer=function(){return this._mainServer},MethodManager.prototype.methods=function(e){this._methods=Object.assign(this._methods,e)},MethodManager.prototype.callMethodCron=function(t){for(var e,o=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];if(this._debugCallMethodCronJobHits+=1,this._methods[t]){if((1<n.length||n[0])&&!this._methods[t].skipValidation){if(!this._methods[t].check)return console.error(new Date,"No Check Function For Method "+t),void this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Check Function For Method "+t);if(!this._methods[t].check._schema)return console.error(new Date,"No Check Schema For Method "+t),void this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Check Function For Method "+t);for(var i={},s=Object.keys(this._methods[t].check._schema).filter(function(e){return!e.includes(".")}),a=0;a<n.length;a++)i[s[a]]=n[a];try{this._methods[t].check.validate(i)}catch(e){if(e)return console.error(new Date,"Error in Method Check ("+t+")",e),void this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"Match Error On Method "+t+"\n\nData Being Checked\n"+JSON.stringify(i,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2))}}var d=this._monitorManagerFunction.startMonitorFunction("Cron Method",t,"","",n);return(e=this._methods[t].function).call.apply(e,__spreadArray([Object.assign({},this,MethodManager.prototype,{id_user:"",user:"",id_ws:""})],n,!1)).then(function(e){return o._monitorManagerFunction.finishMonitorFunction(d),e},function(e){return o._monitorManagerFunction.finishMonitorFunction(d),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"Error Detected During Method "+t+" - (callMethodCron)\n\nData \n"+JSON.stringify(n,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),e})}console.log("No Method: "+t),this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Method: "+t)},MethodManager.prototype.callMethod=function(n,r,i,s,a){for(var e,t=this,d=[],o=5;o<arguments.length;o++)d[o-5]=arguments[o];if(this._debugCallMethodHits+=1,this._methods[a]){if((1<d.length||d[0])&&!this._methods[a].skipValidation){if(!this._methods[a].check)return console.error(new Date,"No Check Function For Method "+a),this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Check Function For Method "+a),this.sendWS(r,i,a,d,l={messageId:s,hasError:!0,data:"Internal Error"}),void(n&&log_method_latency_collection_1.LogMethodLatencies.deleteOne({_id:n}));if(!this._methods[a].check._schema)return console.error(new Date,"No Check Schema For Method "+a),this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Check Function For Method "+a),l={messageId:s,hasError:!0,data:"Internal Error"},n&&log_method_latency_collection_1.LogMethodLatencies.deleteOne({_id:n}),void this.sendWS(r,i,a,d,l);for(var l,c={},h=Object.keys(this._methods[a].check._schema).filter(function(e){return!e.includes(".")}),u=0;u<d.length;u++)c[h[u]]=d[u];try{this._methods[a].check.validate(c)}catch(e){if(e)return console.error(new Date,"Error in Method Check ("+a+")",e),"processAirdropDistribution"!==a&&this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"Match Error On Method "+a+"\n\nData Being Checked\n"+JSON.stringify(c,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),this.sendWS(r,i,a,d,l={messageId:s,hasError:!0,data:"Internal Error"}),void(n&&log_method_latency_collection_1.LogMethodLatencies.deleteOne({_id:n}))}}var _=this._monitorManagerFunction.startMonitorFunction("Method",a,r.user||"",r.id_socket||"",d);(e=this._methods[a].function).call.apply(e,__spreadArray([Object.assign({},this,MethodManager.prototype,{id_user:r.id_user,user:r.user,id_ws:r.id_socket})],d,!1)).then(function(o){return __awaiter(t,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return(this._monitorManagerFunction.finishMonitorFunction(_),t={messageId:s,hasError:!1,data:o},this.sendWS(r,i,a,d,t),n)?[4,log_method_latency_collection_1.LogMethodLatencies.findById(n)]:[3,2];case 1:(t=e.sent())&&log_method_latency_collection_1.LogMethodLatencies.updateOne({_id:n},{$set:{date_end:new Date,latency_ms:moment().diff(moment(t.date_start),"milliseconds",!0)}}),e.label=2;case 2:return[2]}})})},function(e){t._monitorManagerFunction.finishMonitorFunction(_),t.sendWS(r,i,a,d,{messageId:s,hasError:!0,data:e}),n&&log_method_latency_collection_1.LogMethodLatencies.deleteOne({_id:n}),"processAirdropDistribution"!==a&&t.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+t.serverConfig.CLIENT_NAME,"Error Detected During Method "+a+" - (callMethod)\n\nData \n"+JSON.stringify(d,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2))})}else console.log("No Method: "+a),this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+this.serverConfig.CLIENT_NAME,"No Method: "+a),this.sendWS(r,i,a,d,l={messageId:s,hasError:!0,data:"Internal Error"}),n&&log_method_latency_collection_1.LogMethodLatencies.deleteOne({_id:n})},MethodManager.prototype.callMethodInternal=function(t){for(var o=this,n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];if(this._debugCallMethodInternalHits+=1,!this._methods[t])return console.log("No Method: "+t),null;if((1<n.length||n[0]&&"function"!=typeof n[0])&&!this._methods[t].skipValidation){if(!this._methods[t].check)return console.error(new Date,"No Check Function For Method "+t),null;if(!this._methods[t].check._schema)return console.error(new Date,"No Check Schema For Method "+t),null}"insertSubscriptionLog"!==t&&"getDataURIfromURL"!==t&&"processAirdropDistribution"!==t&&log_collection_1.Logs.insertOne({_id:(0,mongo_manager_1.objectIdHexString)(),type:"callMethodInternal",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify([n]))<2e5?JSON.stringify([n],null,2):"Too Big",method:t,id_user:this.id_user||"",user:this.user||"",messageId:0,route:""});var r="function"==typeof n[n.length-1]?n.slice(0,-1):n,i=this._monitorManagerFunction.startMonitorFunction("Internal Method",t,this.user||"","",r),s=(s=this._methods[t].function).call.apply(s,__spreadArray([Object.assign({},this,MethodManager.prototype)],r,!1)).then(function(e){return o._monitorManagerFunction.finishMonitorFunction(i),e},function(e){return o._monitorManagerFunction.finishMonitorFunction(i),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"Error Detected During Method "+t+" - (callMethodInternal)\n\nData \n"+JSON.stringify(n,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),e});return n[n.length-1]&&"function"==typeof n[n.length-1]&&s.then(function(e){return n[n.length-1](null,e)},function(e){return n[n.length-1](e,null)}),s},MethodManager.prototype.sendWS=function(e,t,o,n,r){this._sendQueue.splice(0,0,{id_ws:e.id_socket,method:o,methodData:n,data:r,date:t})},MethodManager.prototype.sendEmail=function(n,r,i,s,a,d,l){var o=this;return new Promise(function(t,e){return __awaiter(o,void 0,void 0,function(){var o=this;return __generator(this,function(e){return(n=!this.serverConfig.ROOT_URL.match(new RegExp(/https\:\/\/dev\./))&&!this.serverConfig.ROOT_URL.match(new RegExp(/https\:\/\/www\.dev\./))&&"http://localhost:4200"!==this.serverConfig.ROOT_URL||n.match(new RegExp(/\@resolveio\.com/))?n:"dev@resolveio.com")&&("http://localhost:4200"!==this.serverConfig.ROOT_URL?this._mailer.sendMail({replyTo:null!=l?l:this.serverConfig.MAIL_REPLY_TO||void 0,from:d||this.serverConfig.MAIL_FROM,to:n,subject:(this.serverConfig.ROOT_URL.match(new RegExp(/https\:\/\/dev\./))||this.serverConfig.ROOT_URL.match(new RegExp(/https\:\/\/www\.dev\./))?"(DEV SERVER) - ":"")+r,text:i,html:s,attachments:a},function(e,t){e?(console.log(e),email_history_collection_1.EmailHistories.create({_id:(0,mongo_manager_1.objectIdHexString)(),__v:0,date:new Date,id_user:o.id_user||"",user:o.user||"",email:n,success:!1,verified:!1})):email_history_collection_1.EmailHistories.create({_id:(0,mongo_manager_1.objectIdHexString)(),__v:0,date:new Date,id_user:o.id_user||"",user:o.user||"",email:n,success:!0,verified:!1})}):console.log("Send email",n,r,i,s,a,d),t(!0)),[2]})})})},MethodManager.prototype.getAWS=function(){return this._aws},MethodManager.prototype.readFile=function(e){var t=this;return new Promise(function(o,n){fs.existsSync(path.join(__dirname,"../private/"+e))?fs.readFile(path.join(__dirname,"../private/"+e),"utf-8",function(e,t){e?n(e):o(t)}):fs.existsSync(path.join(t.clientDir,"./private/"+e))&&fs.readFile(path.join(t.clientDir,"./private/"+e),"utf-8",function(e,t){e?n(e):o(t)})})},MethodManager.prototype.readImage=function(e){var t=this;return new Promise(function(o,n){fs.existsSync(path.join(__dirname,"../private/"+e))?fs.readFile(path.join(__dirname,"../private/"+e),"base64",function(e,t){e?n(e):o(t)}):fs.existsSync(path.join(t.clientDir,"./private/"+e))&&fs.readFile(path.join(t.clientDir,"./private/"+e),"base64",function(e,t){e?n(e):o(t)})})},MethodManager}());exports.MethodManager=MethodManager;
|
|
2
2
|
//# sourceMappingURL=method.manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/method.manager.ts"],"names":["collections_1","require","logs_1","counters_1","pdf_1","aws_1","path","fs","nodemailer","sesTransport","accounts_1","init_1","cron_jobs_1","cron_jobs_2","flags_1","method_response_collection_1","common_1","log_collection_1","log_method_latency_collection_1","moment","report_builder_1","support_1","monitor_1","email_history_collection_1","mongo_manager_1","client_s3_1","AWS","serverConfig","this","_serverConfig","_s3","_s3USEast1","prototype","s3","S3","credentials","accessKeyId","process","env","AWS_ACCESS_KEY","secretAccessKey","AWS_SECRET_ACCESS_KEY","region","AWS_REGION","apiVersion","s3USEast1","MethodManager","exports","mainServer","clientDir","monitorManagerFunction","_this","_methods","_sendQueue","_runningQueue","_debugCallMethodInternalHits","_debugCallMethodHits","_debugCallMethodCronJobHits","_debugSendQueueHits","_mainServer","_monitorManagerFunction","loadServerInit","loadServerCronJobs","loadAccountMethods","loadAWSMethods","loadCollectionMethods","loadCounterMethods","loadLogMethods","loadPDFMethods","loadCronJobMethods","loadFlagMethods","loadReportBuilderMethods","loadSupportMethods","loadMonitorMethods","_aws","sesMail","_mailer","createTransport","AWS_SES_REGION","host","port","secure","auth","user","pass","tls","ciphers","setInterval","getSubscriptionManager","getEnableDebug","console","log","Date","length","i","sendItem","ws","getWS","id_ws","readyState","OPEN","bufferedAmount","pop","send","JSON","stringify","data","error","unsubscribeWS","method","Logs","insertOne","_id","objectIdHexString","type","collection","id_document","payload","getBinarySize","methodData","id_user","messageId","route","MethodResponses","create","__v","message_id","response","date","splice","getMainServer","methods","Object","assign","callMethodCron","_i","arguments","skipValidation","check","sendEmail","_schema","valObj","rootKeys","keys","filter","a","includes","validate","errors","monitor","startMonitorFunction","_a","function","call","apply","__spreadArray","then","res","finishMonitorFunction","methodErrs","callMethod","id_methodLatency","messageDate","sendWS","serverRes","hasError","LogMethodLatencies","deleteOne","__awaiter","findById","latency","sent","updateOne","$set","date_end","latency_ms","diff","date_start","err","callMethodInternal","functionMethodData","slice","promise","sendTo","subject","text","html","attachments","send_from","reply_to","Promise","resolve","reject","match","RegExp","sendMail","replyTo","undefined","from","MAIL_FROM","to","info","EmailHistories","email","success","verified","getAWS","readFile","fileName","existsSync","join","__dirname","readImage"],"mappings":"knDACAA,e,gGAAAC,QAAA,wBAAA,GAEAC,OAAAD,QAAA,iBAAA,EACAE,WAAAF,QAAA,qBAAA,EACAG,MAAAH,QAAA,gBAAA,EACAI,MAAAJ,QAAA,gBAAA,EACAK,KAAAL,QAAA,MAAA,EACAM,GAAAN,QAAA,IAAA,EACAO,WAAAP,QAAA,YAAA,EACAQ,aAAAR,QAAA,0BAAA,EACAS,WAAAT,QAAA,qBAAA,EACAU,OAAAV,QAAA,kBAAA,EACAW,YAAAX,QAAA,uBAAA,EACAY,YAAAZ,QAAA,sBAAA,EACAa,QAAAb,QAAA,kBAAA,EACAc,6BAAAd,QAAA,2CAAA,EACAe,SAAAf,QAAA,gBAAA,EACAgB,iBAAAhB,QAAA,+BAAA,EAEAiB,gCAAAjB,QAAA,8CAAA,EACAkB,OAAAlB,QAAA,iBAAA,EACAmB,iBAAAnB,QAAA,2BAAA,EACAoB,UAAApB,QAAA,oBAAA,EACAqB,UAAArB,QAAA,oBAAA,EACAsB,2BAAAtB,QAAA,yCAAA,EACAuB,gBAAAvB,QAAA,iBAAA,EAEAwB,YAAAxB,QAAA,oBAAA,EAEAyB,IAAA,WAKC,SAAAA,EAAYC,GAJJC,KAAAC,cAAgB,KAChBD,KAAAE,IAAU,KACVF,KAAAG,WAAiB,KAGxBH,KAAKC,cAAgBF,CACtB,CAwCD,OAtCQD,EAAAM,UAAAC,GAAP,WAcC,OAbIL,KAAKE,MAITF,KAAKE,IAAM,IAAIL,YAAAS,GAAG,CACjBC,YAAa,CACZC,YAAaC,QAAQC,IAAIC,eACzBC,gBAAiBH,QAAQC,IAAIG,qB,EAE9BC,OAAQL,QAAQC,IAAIK,WACpBC,WAAY,Y,CACZ,GAEMhB,KAAKE,GACb,EAEOJ,EAAAM,UAAAa,UAAP,WACC,MAA+B,cAA3BR,QAAQC,IAAIK,WACRf,KAAKK,GAAE,GAGVL,KAAKG,aAITH,KAAKG,WAAa,IAAIN,YAAAS,GAAG,CACxBC,YAAa,CACZC,YAAaC,QAAQC,IAAIC,eACzBC,gBAAiBH,QAAQC,IAAIG,qB,EAE9BC,OAAQ,YACRE,WAAY,Y,CACZ,GAEMhB,KAAKG,WAEd,EACDL,CAAA,EAAC,EAEDoB,eAjDaC,QAAArB,IAAAA,IAiDb,WAgBC,SAAAoB,EAAYE,EAAYrB,EAAcsB,EAAWC,GAAjD,IAAAC,EAAAvB,KAdOA,KAAAwB,SAAwB,GAKvBxB,KAAAyB,WAAa,GACbzB,KAAA0B,cAAgB,CAAA,EAGhB1B,KAAA2B,6BAA+B,EAC/B3B,KAAA4B,qBAAuB,EACvB5B,KAAA6B,4BAA8B,EAC9B7B,KAAA8B,oBAAsB,EAG7B9B,KAAK+B,YAAcX,EACnBpB,KAAKD,aAAeA,EACpBC,KAAKqB,UAAYA,EACjBrB,KAAKgC,wBAA0BV,GAG/B,EAAAvC,OAAAkD,gBAAc,GACd,EAAAjD,YAAAkD,oBAAkB,GAGlB,EAAApD,WAAAqD,oBAAmBnC,IAAI,GACvB,EAAAvB,MAAA2D,gBAAepC,IAAI,GACnB,EAAA5B,cAAAiE,uBAAsBrC,IAAI,GAC1B,EAAAzB,WAAA+D,oBAAmBtC,IAAI,GACvB,EAAA1B,OAAAiE,gBAAevC,IAAI,GACnB,EAAAxB,MAAAgE,gBAAexC,IAAI,GACnB,EAAAf,YAAAwD,oBAAmBzC,IAAI,GACvB,EAAAd,QAAAwD,iBAAgB1C,IAAI,GACpB,EAAAR,iBAAAmD,0BAAyB3C,IAAI,GAC7B,EAAAP,UAAAmD,oBAAmB5C,IAAI,GACvB,EAAAN,UAAAmD,oBAAmB7C,IAAI,EAEvBA,KAAK8C,KAAO,IAAIhD,IAAIC,CAAY,EAE5BqB,EAAW2B,QACd/C,KAAKgD,QAAUpE,WAAWqE,gBAAgBpE,aAAa,CACtD2B,YAAaC,QAAQC,IAAIC,eACzBC,gBAAiBH,QAAQC,IAAIG,sBAC7BC,OAAQL,QAAQC,IAAIwC,c,CACpB,CAAC,EAGFlD,KAAKgD,QAAUpE,WAAWqE,gBAAgB,CACzCE,KAAMnD,KAAKD,aAAwB,UACnCqD,KAAMpD,KAAKD,aAAwB,UACnCsD,OAAQ,CAAA,EACRC,KAAM,CACLC,KAAMvD,KAAKD,aAA4B,cACvCyD,KAAMxD,KAAKD,aAA4B,a,EAExC0D,IAAK,CACJC,QAAS,O,EAEV,EAGFC,YAAY,WACPpC,EAAKQ,YAAY6B,uBAAsB,EAAGC,eAAc,IAC3DC,QAAQC,IAAI,IAAIC,KAAQ,iBAAkB,oBAAqBzC,EAAKE,WAAWwC,MAAM,EACrFH,QAAQC,IAAI,IAAIC,KAAQ,iBAAkB,kBAAmBzC,EAAKO,mBAAmB,EACrFgC,QAAQC,IAAI,IAAIC,KAAQ,iBAAkB,4BAA6BzC,EAAKI,4BAA4B,EACxGmC,QAAQC,IAAI,IAAIC,KAAQ,iBAAkB,mBAAoBzC,EAAKK,oBAAoB,EACvFkC,QAAQC,IAAI,IAAIC,KAAQ,iBAAkB,wBAAyBzC,EAAKM,2BAA2B,GAGpGN,EAAKI,6BAA+B,EACpCJ,EAAKK,qBAAuB,EAC5BL,EAAKM,4BAA8B,EACnCN,EAAKO,oBAAsB,EAC3BP,EAAKO,oBAAsB,CAC5B,EAAG,GAAK,EAER6B,YAAY,WACX,GAAI,CAACpC,EAAKG,eACLH,EAAKE,WAAWwC,OAAQ,CAC3B1C,EAAKG,cAAgB,CAAA,EAErB,I,IAASwC,EAAI3C,EAAKE,WAAWwC,OAAS,EAAQ,GAALC,EAAQA,CAAC,G,UAAzCA,GACR3C,EAAKO,qBAAuB,EAE5B,IAGMqC,EAHFC,EAAK7C,EAAKQ,YAAYsC,MAAM9C,EAAKE,WAAWyC,GAAGI,KAAK,EACpDF,GAAMA,EAAGG,aAAeH,EAAGI,KAC1BJ,EAAGK,eAAiB,QACnBN,EAAW5C,EAAKE,WAAWiD,IAAG,EAClCN,EAAGO,KAAKC,KAAKC,UAAUV,EAASW,IAAI,EAAG,SAACC,GACnCA,GACHxD,EAAKQ,YAAYiD,cAAcZ,CAAE,CAEnC,CAAC,EAEuB,4BAApBD,EAASc,QAA4D,kCAApBd,EAASc,QAAkE,2BAApBd,EAASc,QAA2D,gBAApBd,EAASc,QAAgD,qBAApBd,EAASc,QAAqD,eAApBd,EAASc,QAA+C,mBAApBd,EAASc,QAAmD,6BAApBd,EAASc,QAA6D,SAApBd,EAASc,QAAyC,YAApBd,EAASc,QAA4C,oBAApBd,EAASc,QAAoD,sBAApBd,EAASc,QAAsD,eAApBd,EAASc,QAA+C,+BAApBd,EAASc,QACxiB5F,iBAAA6F,KAAKC,UAAU,CACdC,KAAK,EAAAxF,gBAAAyF,mBAAiB,EACtBC,KAAM,kBACNC,WAAY,GACZC,YAAa,GACbC,SAAS,EAAArG,SAAAsG,eAAcd,KAAKC,UAAU,CAACV,EAASwB,WAAYxB,EAASW,KAAK,CAAC,EAAI,IAASF,KAAKC,UAAU,CAACV,EAASwB,WAAYxB,EAASW,MAAO,KAAM,CAAC,EAAI,UACxJG,OAAQd,EAASc,OACjBW,QAASxB,EAAY,SAAK,GAC1Bb,KAAMa,EAAS,MAAK,GACpByB,UAAW1B,EAASW,KAAKe,UACzBC,MAAO,E,CACP,EAGF3G,6BAAA4G,gBAAgBC,OAAO,CACtBZ,KAAK,EAAAxF,gBAAAyF,mBAAiB,EACtBY,IAAK,EACLL,QAASxB,EAAY,SAAK,GAC1B8B,WAAY/B,EAASW,KAAKe,UAC1BM,UAAU,EAAA/G,SAAAsG,eAAcd,KAAKC,UAAUV,EAASW,IAAI,CAAC,EAAI,IAASX,EAASW,KAAO,CAACC,MAAO,SAAS,EACnGE,OAAQd,EAASc,OACjBmB,KAAMjC,EAASiC,I,CACf,GAIF7E,EAAKE,WAAW4E,OAAOnC,EAAG,CAAC,C,EAxCpBA,CAAC,EA4CV3C,EAAKG,cAAgB,CAAA,C,CAGxB,EAAG,EAAE,CACN,CA0YD,OAxYQR,EAAAd,UAAAkG,cAAP,WACC,OAAOtG,KAAK+B,WACb,EAGOb,EAAAd,UAAAmG,QAAP,SAAetB,GACdjF,KAAKwB,SAAWgF,OAAOC,OAAOzG,KAAKwB,SAAUyD,CAAM,CACpD,EAEO/D,EAAAd,UAAAsG,eAAP,SAAsBzB,G,UAAtB1D,EAAAvB,KAAsC2F,EAAA,GAAAgB,EAAA,EAAAA,EAAAC,UAAA3C,OAAA0C,CAAA,GAAAhB,EAAAgB,EAAA,GAAAC,UAAAD,GAGrC,GAFA3G,KAAK6B,6BAA+B,EAE/B7B,KAAKwB,SAASyD,GAAnB,CAQA,IAAyB,EAApBU,EAAW1B,QAAc0B,EAAW,KAAO,CAAC3F,KAAKwB,SAASyD,GAAQ4B,eAAgB,CACtF,GAAK7G,CAAAA,KAAKwB,SAASyD,GAAQ6B,MAK1B,OAJAhD,QAAQiB,MAAM,IAAIf,KAAQ,gCAAkCiB,CAAM,EAAlEnB,KAEA9D,KAAK+G,UAAU,oBAAqB,6BAA+B/G,KAAKD,aAA0B,YAAG,gCAAkCkF,CAAM,EAIzI,GAAKjF,CAAAA,KAAKwB,SAASyD,GAAQ6B,MAAME,QAKrC,OAJAlD,QAAQiB,MAAM,IAAIf,KAAQ,8BAAgCiB,CAAM,EAAhEnB,KAEA9D,KAAK+G,UAAU,oBAAqB,6BAA+B/G,KAAKD,aAA0B,YAAG,gCAAkCkF,CAAM,EAU7I,IALA,IAAIgC,EAAS,GAGTC,EAFUV,OAAOW,KAAKnH,KAAKwB,SAASyD,GAAQ6B,MAAME,OAAO,EAEtCI,OAAO,SAAAC,GAAK,MAAA,CAACA,EAAEC,SAAS,GAAG,CAAf,CAAgB,EAE1CpD,EAAI,EAAGA,EAAIyB,EAAW1B,OAAQC,CAAC,GACvC+C,EAAOC,EAAShD,IAAMyB,EAAWzB,GAGlC,IACClE,KAAKwB,SAASyD,GAAQ6B,MAAMS,SAASN,CAAM,C,CAE5C,MAAOO,GACN,GAAIA,EAKH,OAJA1D,QAAQiB,MAAM,IAAIf,KAAQ,0BAA4BiB,EAAS,IAAKuC,CAAM,EAA1E1D,KAEA9D,KAAK+G,UAAU,oBAAqB,6BAA+B/G,KAAKD,aAA0B,YAAG,yBAA2BkF,EAAS,2BAA6BL,KAAKC,UAAUoC,EAAQ,KAAM,CAAC,EAAI,eAAiBrC,KAAKC,UAAU2C,EAAQ,KAAM,CAAC,CAAC,C,EAQ5P,IAAIC,EAAUzH,KAAKgC,wBAAwB0F,qBAAqB,cAAezC,EAAQ,GAAI,GAAIU,CAAU,EAWzG,OAVcgC,EAAA3H,KAAKwB,SAASyD,GAAQ2C,UAASC,KAAIC,MAAAH,EAAAI,cAAA,CAACvB,OAAOC,OAAO,GAAIzG,KAAMkB,EAAcd,UAAW,CAACwF,QAAS,GAAIrC,KAAM,GAAIe,MAAO,EAAE,CAAC,GAAMqB,EAAU,CAAA,CAAA,CAAA,EACpJqC,KAAK,SAAAC,GAEL,OADA1G,EAAKS,wBAAwBkG,sBAAsBT,CAAO,EACnDQ,CACR,EAAG,SAAAE,GAGF,OAFA5G,EAAKS,wBAAwBkG,sBAAsBT,CAAO,EAC1DlG,EAAKwF,UAAU,oBAAqB,6BAA+BxF,EAAKxB,aAA0B,YAAG,gCAAkCkF,EAAS,iCAAmCL,KAAKC,UAAUc,EAAY,KAAM,CAAC,EAAI,eAAiBf,KAAKC,UAAUsD,EAAY,KAAM,CAAC,CAAC,EACtQA,CACR,CAAC,C,CAxDArE,QAAQC,IAAI,cAAgBkB,CAAM,EAElCjF,KAAK+G,UAAU,oBAAqB,6BAA+B/G,KAAKD,aAA0B,YAAG,cAAgBkF,CAAM,CAyD7H,EAGO/D,EAAAd,UAAAgI,WAAP,SAAkBC,EAA0BjE,EAAekE,EAAmBzC,EAAmBZ,G,UAAjG1D,EAAAvB,KAAiH2F,EAAA,GAAAgB,EAAA,EAAAA,EAAAC,UAAA3C,OAAA0C,CAAA,GAAAhB,EAAAgB,EAAA,GAAAC,UAAAD,GAGhH,GAFA3G,KAAK4B,sBAAwB,EAExB5B,KAAKwB,SAASyD,GAAnB,CAoBA,IAAyB,EAApBU,EAAW1B,QAAc0B,EAAW,KAAO,CAAC3F,KAAKwB,SAASyD,GAAQ4B,eAAgB,CACtF,GAAK7G,CAAAA,KAAKwB,SAASyD,GAAQ6B,MAiB1B,OAhBAhD,QAAQiB,MAAM,IAAIf,KAAQ,gCAAkCiB,CAAM,EAElEjF,KAAK+G,UAAU,oBAAqB,6BAA+B/G,KAAKD,aAA0B,YAAG,gCAAkCkF,CAAM,EAQ7IjF,KAAKuI,OAAOnE,EAAIkE,EAAarD,EAAQU,EANjC6C,EAAiC,CACpC3C,UAAWA,EACX4C,SAAU,CAAA,EACV3D,KAAM,gB,CAGmD,EAA1D9E,KAEIqI,GACH/I,gCAAAoJ,mBAAmBC,UAAU,CAACvD,IAAKiD,CAAgB,CAAC,GAKjD,GAAKrI,CAAAA,KAAKwB,SAASyD,GAAQ6B,MAAME,QAiBrC,OAhBAlD,QAAQiB,MAAM,IAAIf,KAAQ,8BAAgCiB,CAAM,EAEhEjF,KAAK+G,UAAU,oBAAqB,6BAA+B/G,KAAKD,aAA0B,YAAG,gCAAkCkF,CAAM,EAEzIuD,EAAiC,CACpC3C,UAAWA,EACX4C,SAAU,CAAA,EACV3D,KAAM,gB,EAGHuD,GACH/I,gCAAAoJ,mBAAmBC,UAAU,CAACvD,IAAKiD,CAAgB,CAAC,EADrD,KAIArI,KAAKuI,OAAOnE,EAAIkE,EAAarD,EAAQU,EAAY6C,CAAS,EAU1D,IALA,IAoBMA,EApBFvB,EAAS,GAGTC,EAFUV,OAAOW,KAAKnH,KAAKwB,SAASyD,GAAQ6B,MAAME,OAAO,EAEtCI,OAAO,SAAAC,GAAK,MAAA,CAACA,EAAEC,SAAS,GAAG,CAAf,CAAgB,EAE1CpD,EAAI,EAAGA,EAAIyB,EAAW1B,OAAQC,CAAC,GACvC+C,EAAOC,EAAShD,IAAMyB,EAAWzB,GAGlC,IACClE,KAAKwB,SAASyD,GAAQ6B,MAAMS,SAASN,CAAM,C,CAE5C,MAAOO,GACN,GAAIA,EAmBH,OAlBA1D,QAAQiB,MAAM,IAAIf,KAAQ,0BAA4BiB,EAAS,IAAKuC,CAAM,EAE3D,+BAAXvC,GACHjF,KAAK+G,UAAU,oBAAqB,6BAA+B/G,KAAKD,aAA0B,YAAG,yBAA2BkF,EAAS,2BAA6BL,KAAKC,UAAUoC,EAAQ,KAAM,CAAC,EAAI,eAAiBrC,KAAKC,UAAU2C,EAAQ,KAAM,CAAC,CAAC,EASzPxH,KAAKuI,OAAOnE,EAAIkE,EAAarD,EAAQU,EANjC6C,EAAiC,CACpC3C,UAAWA,EACX4C,SAAU,CAAA,EACV3D,KAAM,gB,CAGmD,EAA1D9E,KAEIqI,GACH/I,gCAAAoJ,mBAAmBC,UAAU,CAACvD,IAAKiD,CAAgB,CAAC,E,EASzD,IAAIZ,EAAUzH,KAAKgC,wBAAwB0F,qBAAqB,SAAUzC,EAAQb,EAAS,MAAK,GAAIA,EAAc,WAAK,GAAIuB,CAAU,GACrIgC,EAAA3H,KAAKwB,SAASyD,GAAQ2C,UAASC,KAAIC,MAAAH,EAAAI,cAAA,CAACvB,OAAOC,OAAO,GAAIzG,KAAMkB,EAAcd,UAAW,CAACwF,QAASxB,EAAY,QAAGb,KAAMa,EAAS,KAAGE,MAAOF,EAAc,SAAC,CAAC,GAAMuB,EAAU,CAAA,CAAA,CAAA,EACtKqC,KAAK,SAAOC,GAAG,OAAAW,UAAArH,EAAA,KAAA,EAAA,KAAA,EAAA,W,wEACfvB,KAAKgC,wBAAwBkG,sBAAsBT,CAAO,EAEtDe,EAAiC,CACpC3C,UAAWA,EACX4C,SAAU,CAAA,EACV3D,KAAMmD,C,EAGPjI,KAAKuI,OAAOnE,EAAIkE,EAAarD,EAAQU,EAAY6C,CAAS,EAEtDH,GACW,CAAA,EAAM/I,gCAAAoJ,mBAAmBG,SAASR,CAAgB,GAD7D,CAAA,EAAA,G,QACCS,EAAUnB,EAAAoB,KAAA,IAGbzJ,gCAAAoJ,mBAAmBM,UAAU,CAAC5D,IAAKiD,CAAgB,EAAG,CAACY,KAAM,CAACC,SAAU,IAAIlF,KAAQmF,WAAY5J,OAAM,EAAG6J,KAAK7J,OAAOuJ,EAAQO,UAAU,EAAG,eAAgB,CAAA,CAAI,CAAC,CAAC,CAAC,E,iCAGjK,SAAAC,GACF/H,EAAKS,wBAAwBkG,sBAAsBT,CAAO,EAO1DlG,EAAKgH,OAAOnE,EAAIkE,EAAarD,EAAQU,EANA,CACpCE,UAAWA,EACX4C,SAAU,CAAA,EACV3D,KAAMwE,C,CAGmD,EAEtDjB,GACH/I,gCAAAoJ,mBAAmBC,UAAU,CAACvD,IAAKiD,CAAgB,CAAC,EAGtC,+BAAXpD,GACH1D,EAAKwF,UAAU,oBAAqB,6BAA+BxF,EAAKxB,aAA0B,YAAG,gCAAkCkF,EAAS,6BAA+BL,KAAKC,UAAUc,EAAY,KAAM,CAAC,EAAI,eAAiBf,KAAKC,UAAUyE,EAAK,KAAM,CAAC,CAAC,CAEpQ,CAAC,C,MAtIAxF,QAAQC,IAAI,cAAgBkB,CAAM,EAElCjF,KAAK+G,UAAU,oBAAqB,6BAA+B/G,KAAKD,aAA0B,YAAG,cAAgBkF,CAAM,EAQ3HjF,KAAKuI,OAAOnE,EAAIkE,EAAarD,EAAQU,EANjC6C,EAAiC,CACpC3C,UAAWA,EACX4C,SAAU,CAAA,EACV3D,KAAM,gB,CAGmD,EAEtDuD,GACH/I,gCAAAoJ,mBAAmBC,UAAU,CAACvD,IAAKiD,CAAgB,CAAC,CA0HvD,EAGOnH,EAAAd,UAAAmJ,mBAAP,SAA0BtE,G,QAA1B1D,EAAAvB,KAAkC2F,EAAA,GAAAgB,EAAA,EAAAA,EAAAC,UAAA3C,OAAA0C,CAAA,GAAAhB,EAAAgB,EAAA,GAAAC,UAAAD,GAGjC,GAFA3G,KAAK2B,8BAAgC,EAEjC,CAAC3B,KAAKwB,SAASyD,GAElB,OADAnB,QAAQC,IAAI,cAAgBkB,CAAM,EAC3B,KAGR,IAAyB,EAApBU,EAAW1B,QAAe0B,EAAW,IAAgC,YAA1B,OAAOA,EAAW,KAAwB,CAAC3F,KAAKwB,SAASyD,GAAQ4B,eAAgB,CAChI,GAAK7G,CAAAA,KAAKwB,SAASyD,GAAQ6B,MAE1B,OADAhD,QAAQiB,MAAM,IAAIf,KAAQ,gCAAkCiB,CAAM,EAC3D,KAEH,GAAI,CAACjF,KAAKwB,SAASyD,GAAQ6B,MAAME,QAErC,OADAlD,QAAQiB,MAAM,IAAIf,KAAQ,8BAAgCiB,CAAM,EACzD,I,CAIM,0BAAXA,GAAiD,sBAAXA,GAA6C,+BAAXA,GAC3E5F,iBAAA6F,KAAKC,UAAU,CACdC,KAAK,EAAAxF,gBAAAyF,mBAAiB,EACtBC,KAAM,qBACNC,WAAY,GACZC,YAAa,GACbC,SAAS,EAAArG,SAAAsG,eAAcd,KAAKC,UAAU,CAACc,EAAW,CAAC,EAAI,IAASf,KAAKC,UAAU,CAACc,GAAa,KAAM,CAAC,EAAI,UACxGV,OAAQA,EACRW,QAAS5F,KAAc,SAAK,GAC5BuD,KAAMvD,KAAW,MAAK,GACtB6F,UAAW,EACXC,MAAO,E,CACP,EAGF,IAAI0D,EAAmE,YAA9C,OAAO7D,EAAWA,EAAW1B,OAAS,GAAqB0B,EAAW8D,MAAM,EAAG,CAAC,CAAC,EAAI9D,EAE1G8B,EAAUzH,KAAKgC,wBAAwB0F,qBAAqB,kBAAmBzC,EAAQjF,KAAW,MAAK,GAAI,GAAIwJ,CAAkB,EACjIE,GAAU/B,EAAA3H,KAAKwB,SAASyD,GAAQ2C,UAASC,KAAIC,MAAAH,EAAAI,cAAA,CAACvB,OAAOC,OAAO,GAAIzG,KAAMkB,EAAcd,SAAS,GAAMoJ,EAAkB,CAAA,CAAA,CAAA,EACxHxB,KAAK,SAAAC,GAEL,OADA1G,EAAKS,wBAAwBkG,sBAAsBT,CAAO,EACnDQ,CACR,EAAG,SAAAE,GAGF,OAFA5G,EAAKS,wBAAwBkG,sBAAsBT,CAAO,EAC1DlG,EAAKwF,UAAU,oBAAqB,6BAA+BxF,EAAKxB,aAA0B,YAAG,gCAAkCkF,EAAS,qCAAuCL,KAAKC,UAAUc,EAAY,KAAM,CAAC,EAAI,eAAiBf,KAAKC,UAAUsD,EAAY,KAAM,CAAC,CAAC,EAC1QA,CACR,CAAC,EAMD,OAJIxC,EAAWA,EAAW1B,OAAS,IAAoD,YAA9C,OAAO0B,EAAWA,EAAW1B,OAAS,IAC9EyF,EAAQ1B,KAAK,SAAAC,GAAO,OAAAtC,EAAWA,EAAW1B,OAAS,GAAG,KAAMgE,CAAG,CAA3C,EAA8C,SAAAqB,GAAO,OAAA3D,EAAWA,EAAW1B,OAAS,GAAGqF,EAAK,IAAI,CAA3C,CAA4C,EAG/GI,CACR,EAEQxI,EAAAd,UAAAmI,OAAR,SAAenE,EAAekE,EAAmBrD,EAAgBU,EAAmBb,GACnF9E,KAAKyB,WAAW4E,OAAO,EAAG,EAAG,CAC5B/B,MAAOF,EAAc,UACrBa,OAAQA,EACRU,WAAYA,EACZb,KAAMA,EACNsB,KAAMkC,C,CACN,CACF,EAEOpH,EAAAd,UAAA2G,UAAP,SAAiB4C,EAAgBC,EAAiBC,EAAeC,EAAeC,EAAqBC,EAAoBC,GAAzH,IAAA1I,EAAAvB,KACC,OAAO,IAAIkK,QAAQ,SAAOC,EAASC,GAAM,OAAAxB,UAAArH,EAAA,KAAA,EAAA,KAAA,EAAA,W,sDAEvCoI,EADI3J,CAAAA,KAAKD,aAAuB,SAAEsK,MAAM,IAAIC,OAAO,kBAAkB,CAAC,GAAKtK,CAAAA,KAAKD,aAAuB,SAAEsK,MAAM,IAAIC,OAAO,uBAAuB,CAAC,GAAuC,0BAAlCtK,KAAKD,aAAuB,UAAmC4J,EAAOU,MAAM,IAAIC,OAAO,kBAAkB,CAAC,EAI9PX,EAHM,uBAI6B,0BAAlC3J,KAAKD,aAAuB,SAC/BC,KAAKgD,QAAQuH,SAAS,CACrBC,QAASP,MAAAA,EAA8CA,EAAYjK,KAAKD,aAA4B,eAAK0K,KAAAA,EACzGC,KAAMV,GAAwBhK,KAAKD,aAAa4K,UAChDC,GAAIjB,EACJC,SAAU5J,KAAKD,aAAuB,SAAEsK,MAAM,IAAIC,OAAO,kBAAkB,CAAC,GAAKtK,KAAKD,aAAuB,SAAEsK,MAAM,IAAIC,OAAO,uBAAuB,CAAC,EAAI,kBAAoB,IAAMV,EACtLC,KAAMA,EACNC,KAAMA,EACNC,YAAaA,C,EACX,SAACT,EAAKuB,GACJvB,GACHxF,QAAQC,IAAIuF,CAAG,EAEf3J,2BAAAmL,eAAe9E,OAAO,CACrBZ,KAAK,EAAAxF,gBAAAyF,mBAAiB,EACtBY,IAAK,EACLG,KAAM,IAAIpC,KACV4B,QAASrE,EAAc,SAAK,GAC5BgC,KAAMhC,EAAW,MAAK,GACtBwJ,MAAOpB,EACPqB,QAAS,CAAA,EACTC,SAAU,CAAA,C,CACV,GAGDtL,2BAAAmL,eAAe9E,OAAO,CACrBZ,KAAK,EAAAxF,gBAAAyF,mBAAiB,EACtBY,IAAK,EACLG,KAAM,IAAIpC,KACV4B,QAASrE,EAAc,SAAK,GAC5BgC,KAAMhC,EAAW,MAAK,GACtBwJ,MAAOpB,EACPqB,QAAS,CAAA,EACTC,SAAU,CAAA,C,CACV,CAEH,CAAC,EAGDnH,QAAQC,IAAI,aAAc4F,EAAQC,EAASC,EAAMC,EAAMC,EAAaC,CAAS,EAG9EG,EAAQ,CAAA,CAAI,G,QAEb,CACF,EAEOjJ,EAAAd,UAAA8K,OAAP,WACC,OAAOlL,KAAK8C,IACb,EAEO5B,EAAAd,UAAA+K,SAAP,SAAgBC,GAAhB,IAAA7J,EAAAvB,KACC,OAAO,IAAIkK,QAAQ,SAACC,EAASC,GACxBzL,GAAG0M,WAAW3M,KAAK4M,KAAKC,UAAY,cAAgBH,CAAS,CAAC,EACjEzM,GAAGwM,SAASzM,KAAK4M,KAAKC,UAAY,cAAgBH,CAAS,EAAG,QAAS,SAAC9B,EAAKrB,GACxEqB,EACHc,EAAOd,CAAG,EAGVa,EAAQlC,CAAG,CAEb,CAAC,EAGGtJ,GAAG0M,WAAW3M,KAAK4M,KAAK/J,EAAKF,UAAY,aAAe+J,CAAS,CAAC,GACrEzM,GAAGwM,SAASzM,KAAK4M,KAAK/J,EAAKF,UAAY,aAAe+J,CAAS,EAAG,QAAS,SAAC9B,EAAKrB,GAC5EqB,EACHc,EAAOd,CAAG,EAGVa,EAAQlC,CAAG,CAEb,CAAC,CAGJ,CAAC,CACF,EAEO/G,EAAAd,UAAAoL,UAAP,SAAiBJ,GAAjB,IAAA7J,EAAAvB,KACC,OAAO,IAAIkK,QAAQ,SAACC,EAASC,GACxBzL,GAAG0M,WAAW3M,KAAK4M,KAAKC,UAAY,cAAgBH,CAAS,CAAC,EACjEzM,GAAGwM,SAASzM,KAAK4M,KAAKC,UAAY,cAAgBH,CAAS,EAAG,SAAU,SAAC9B,EAAKrB,GACzEqB,EACHc,EAAOd,CAAG,EAGVa,EAAQlC,CAAG,CAEb,CAAC,EAGGtJ,GAAG0M,WAAW3M,KAAK4M,KAAK/J,EAAKF,UAAY,aAAe+J,CAAS,CAAC,GACrEzM,GAAGwM,SAASzM,KAAK4M,KAAK/J,EAAKF,UAAY,aAAe+J,CAAS,EAAG,SAAU,SAAC9B,EAAKrB,GAC7EqB,EACHc,EAAOd,CAAG,EAGVa,EAAQlC,CAAG,CAEb,CAAC,CAGJ,CAAC,CACF,EACD/G,CAAA,EAAC,GA9gBYC,QAAAD,cAAAA","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-timezone';\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\tthis._debugCallMethodInternalHits = 0;\n\t\t\tthis._debugCallMethodHits = 0;\n\t\t\tthis._debugCallMethodCronJobHits = 0;\n\t\t\tthis._debugSendQueueHits = 0;\n\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\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' && sendItem.method !== 'processAirdropDistribution') {\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\tif (method !== 'processAirdropDistribution') {\n\t\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\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\tif (method !== 'processAirdropDistribution') {\n\t\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\t}\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' && method !== 'processAirdropDistribution') {\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, reply_to?: 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: reply_to !== null && reply_to !== undefined ? reply_to : (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":["collections_1","require","logs_1","counters_1","pdf_1","aws_1","path","fs","nodemailer","sesTransport","accounts_1","init_1","cron_jobs_1","cron_jobs_2","flags_1","method_response_collection_1","common_1","log_collection_1","log_method_latency_collection_1","moment","report_builder_1","support_1","monitor_1","email_history_collection_1","mongo_manager_1","client_s3_1","AWS","serverConfig","this","_serverConfig","_s3","_s3USEast1","prototype","s3","S3","credentials","accessKeyId","process","env","AWS_ACCESS_KEY","secretAccessKey","AWS_SECRET_ACCESS_KEY","region","AWS_REGION","apiVersion","s3USEast1","MethodManager","exports","mainServer","clientDir","monitorManagerFunction","_this","_methods","_sendQueue","_runningQueue","_debugCallMethodInternalHits","_debugCallMethodHits","_debugCallMethodCronJobHits","_debugSendQueueHits","_mainServer","_monitorManagerFunction","loadServerInit","loadServerCronJobs","loadAccountMethods","loadAWSMethods","loadCollectionMethods","loadCounterMethods","loadLogMethods","loadPDFMethods","loadCronJobMethods","loadFlagMethods","loadReportBuilderMethods","loadSupportMethods","loadMonitorMethods","_aws","sesMail","_mailer","createTransport","AWS_SES_REGION","host","port","secure","auth","user","pass","tls","ciphers","setInterval","getSubscriptionManager","getEnableDebug","console","log","Date","length","i","sendItem","ws","getWS","id_ws","readyState","OPEN","bufferedAmount","pop","send","JSON","stringify","data","error","unsubscribeWS","method","Logs","insertOne","_id","objectIdHexString","type","collection","id_document","payload","getBinarySize","methodData","id_user","messageId","route","MethodResponses","create","__v","message_id","response","date","splice","getMainServer","methods","Object","assign","callMethodCron","_i","arguments","skipValidation","check","sendEmail","_schema","valObj","rootKeys","keys","filter","a","includes","validate","errors","monitor","startMonitorFunction","_a","function","call","apply","__spreadArray","then","res","finishMonitorFunction","methodErrs","callMethod","id_methodLatency","messageDate","sendWS","serverRes","hasError","LogMethodLatencies","deleteOne","__awaiter","findById","latency","sent","updateOne","$set","date_end","latency_ms","diff","date_start","err","callMethodInternal","functionMethodData","slice","promise","sendTo","subject","text","html","attachments","send_from","reply_to","Promise","resolve","reject","match","RegExp","sendMail","replyTo","undefined","from","MAIL_FROM","to","info","EmailHistories","email","success","verified","getAWS","readFile","fileName","existsSync","join","__dirname","readImage"],"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-timezone';\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\tthis._debugCallMethodInternalHits = 0;\n\t\t\tthis._debugCallMethodHits = 0;\n\t\t\tthis._debugCallMethodCronJobHits = 0;\n\t\t\tthis._debugSendQueueHits = 0;\n\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\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' && sendItem.method !== 'processAirdropDistribution') {\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\tif (method !== 'processAirdropDistribution') {\n\t\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\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\tif (method !== 'processAirdropDistribution') {\n\t\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\t}\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' && method !== 'processAirdropDistribution') {\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, reply_to?: 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: reply_to !== null && reply_to !== undefined ? reply_to : (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}"]}
|