@resolveio/server-lib 20.7.120 → 20.7.122
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 +51 -1
- package/client-server-app.js.map +1 -1
- package/collections/app-status.collection.js +51 -1
- package/collections/app-status.collection.js.map +1 -1
- package/collections/counter.collection.js +55 -1
- package/collections/counter.collection.js.map +1 -1
- package/collections/cron-job-history.collection.js +136 -1
- package/collections/cron-job-history.collection.js.map +1 -1
- package/collections/cron-job.collection.js +87 -1
- package/collections/cron-job.collection.js.map +1 -1
- package/collections/email-history.collection.js +98 -1
- package/collections/email-history.collection.js.map +1 -1
- package/collections/email-verified.collection.js +60 -1
- package/collections/email-verified.collection.js.map +1 -1
- package/collections/file.collection.js +73 -1
- package/collections/file.collection.js.map +1 -1
- package/collections/flag-update.collection.js +56 -1
- package/collections/flag-update.collection.js.map +1 -1
- package/collections/flag.collection.js +56 -1
- package/collections/flag.collection.js.map +1 -1
- package/collections/log-method-latency.collection.js +72 -1
- package/collections/log-method-latency.collection.js.map +1 -1
- package/collections/log-subscription.collection.js +75 -1
- package/collections/log-subscription.collection.js.map +1 -1
- package/collections/log.collection.js +87 -1
- package/collections/log.collection.js.map +1 -1
- package/collections/logged-in-users.collection.js +66 -1
- package/collections/logged-in-users.collection.js.map +1 -1
- package/collections/monitor-cpu.collection.js +64 -1
- package/collections/monitor-cpu.collection.js.map +1 -1
- package/collections/monitor-function.collection.js +73 -1
- package/collections/monitor-function.collection.js.map +1 -1
- package/collections/monitor-memory.collection.js +76 -1
- package/collections/monitor-memory.collection.js.map +1 -1
- package/collections/monitor-mongo.collection.js +70 -1
- package/collections/monitor-mongo.collection.js.map +1 -1
- package/collections/notification.collection.js +56 -1
- package/collections/notification.collection.js.map +1 -1
- package/collections/report-builder-dashboard-builder.collection.js +108 -1
- package/collections/report-builder-dashboard-builder.collection.js.map +1 -1
- package/collections/report-builder-library.collection.js +86 -1
- package/collections/report-builder-library.collection.js.map +1 -1
- package/collections/report-builder-report.collection.js +148 -1
- package/collections/report-builder-report.collection.js.map +1 -1
- package/collections/user-group.collection.js +88 -1
- package/collections/user-group.collection.js.map +1 -1
- package/collections/user-guide.collection.js +56 -1
- package/collections/user-guide.collection.js.map +1 -1
- package/collections/user.collection.js +265 -1
- package/collections/user.collection.js.map +1 -1
- package/cron/cron.js +97 -1
- package/cron/cron.js.map +1 -1
- package/fixtures/cron-jobs.js +95 -1
- package/fixtures/cron-jobs.js.map +1 -1
- package/fixtures/init.js +78 -1
- package/fixtures/init.js.map +1 -1
- package/http/auth.js +869 -1
- package/http/auth.js.map +1 -1
- package/http/health.js +11 -1
- package/http/health.js.map +1 -1
- package/http/home.js +114 -1
- package/http/home.js.map +1 -1
- package/index.js +18 -1
- package/index.js.map +1 -1
- package/managers/cron.manager.js +461 -1
- package/managers/cron.manager.js.map +1 -1
- package/managers/local-log.manager.js +79 -1
- package/managers/local-log.manager.js.map +1 -1
- package/managers/method.manager.js +1025 -1
- package/managers/method.manager.js.map +1 -1
- package/managers/mongo.manager.js +4231 -1
- package/managers/mongo.manager.js.map +1 -1
- package/managers/monitor.manager.js +534 -1
- package/managers/monitor.manager.js.map +1 -1
- package/managers/subscription.manager.js +1292 -1
- package/managers/subscription.manager.js.map +1 -1
- package/managers/websocket.manager.js +165 -1
- package/managers/websocket.manager.js.map +1 -1
- package/managers/worker-dispatcher.manager.js +335 -1
- package/managers/worker-dispatcher.manager.js.map +1 -1
- package/managers/worker-server.manager.js +292 -1
- package/managers/worker-server.manager.js.map +1 -1
- package/methods/accounts.js +302 -1
- package/methods/accounts.js.map +1 -1
- package/methods/aws.js +748 -1
- package/methods/aws.js.map +1 -1
- package/methods/collections.js +542 -1
- package/methods/collections.js.map +1 -1
- package/methods/counters.js +111 -1
- package/methods/counters.js.map +1 -1
- package/methods/cron-jobs.js +1476 -1
- package/methods/cron-jobs.js.map +1 -1
- package/methods/flag-updates.js +8 -1
- package/methods/flag-updates.js.map +1 -1
- package/methods/flags.js +8 -1
- package/methods/flags.js.map +1 -1
- package/methods/logs.js +417 -1
- package/methods/logs.js.map +1 -1
- package/methods/monitor.js +543 -1
- package/methods/monitor.js.map +1 -1
- package/methods/pdf.js +742 -1
- package/methods/pdf.js.map +1 -1
- package/methods/report-builder.js +840 -1
- package/methods/report-builder.js.map +1 -1
- package/methods/support.js +232 -1
- package/methods/support.js.map +1 -1
- package/models/app-status.model.js +3 -1
- package/models/app-status.model.js.map +1 -1
- package/models/billing-logged-in-users.model.js +3 -1
- package/models/billing-logged-in-users.model.js.map +1 -1
- package/models/collection-document.model.js +3 -1
- package/models/collection-document.model.js.map +1 -1
- package/models/counter.model.js +3 -1
- package/models/counter.model.js.map +1 -1
- package/models/cron-job-history.model.js +3 -1
- package/models/cron-job-history.model.js.map +1 -1
- package/models/cron-job.model.js +3 -1
- package/models/cron-job.model.js.map +1 -1
- package/models/dialog.model.js +3 -1
- package/models/dialog.model.js.map +1 -1
- package/models/email-history.model.js +15 -1
- package/models/email-history.model.js.map +1 -1
- package/models/email-verified.model.js +3 -1
- package/models/email-verified.model.js.map +1 -1
- package/models/file.model.js +3 -1
- package/models/file.model.js.map +1 -1
- package/models/flag-update.model.js +3 -1
- package/models/flag-update.model.js.map +1 -1
- package/models/flag.model.js +3 -1
- package/models/flag.model.js.map +1 -1
- package/models/log-method-latency.model.js +3 -1
- package/models/log-method-latency.model.js.map +1 -1
- package/models/log-subscription.model.js +3 -1
- package/models/log-subscription.model.js.map +1 -1
- package/models/log.model.js +3 -1
- package/models/log.model.js.map +1 -1
- package/models/logged-in-users.model.js +3 -1
- package/models/logged-in-users.model.js.map +1 -1
- package/models/method-response.model.js +3 -1
- package/models/method-response.model.js.map +1 -1
- package/models/method.model.d.ts +0 -1
- package/models/method.model.js +3 -1
- package/models/method.model.js.map +1 -1
- package/models/monitor-cpu.model.js +3 -1
- package/models/monitor-cpu.model.js.map +1 -1
- package/models/monitor-function.model.js +3 -1
- package/models/monitor-function.model.js.map +1 -1
- package/models/monitor-memory.model.js +3 -1
- package/models/monitor-memory.model.js.map +1 -1
- package/models/monitor-mongo.model.js +3 -1
- package/models/monitor-mongo.model.js.map +1 -1
- package/models/notification.model.js +3 -1
- package/models/notification.model.js.map +1 -1
- package/models/pagination.model.js +23 -1
- package/models/pagination.model.js.map +1 -1
- package/models/permission.model.js +3 -1
- package/models/permission.model.js.map +1 -1
- package/models/report-builder-dashboard-builder.model.js +3 -1
- package/models/report-builder-dashboard-builder.model.js.map +1 -1
- package/models/report-builder-library.model.js +3 -1
- package/models/report-builder-library.model.js.map +1 -1
- package/models/report-builder-report.model.js +3 -1
- package/models/report-builder-report.model.js.map +1 -1
- package/models/report-builder.model.js +3 -1
- package/models/report-builder.model.js.map +1 -1
- package/models/select-data-label.model.js +3 -1
- package/models/select-data-label.model.js.map +1 -1
- package/models/server-message.model.js +3 -1
- package/models/server-message.model.js.map +1 -1
- package/models/subscription.model.js +3 -1
- package/models/subscription.model.js.map +1 -1
- package/models/support-ticket.model.js +3 -1
- package/models/support-ticket.model.js.map +1 -1
- package/models/user-group.model.js +3 -1
- package/models/user-group.model.js.map +1 -1
- package/models/user-guide.model.js +3 -1
- package/models/user-guide.model.js.map +1 -1
- package/models/user.model.js +3 -1
- package/models/user.model.js.map +1 -1
- package/package.json +1 -1
- package/public_api.js +77 -1
- package/public_api.js.map +1 -1
- package/publications/app-status.js +16 -1
- package/publications/app-status.js.map +1 -1
- package/publications/cron-jobs.js +32 -1
- package/publications/cron-jobs.js.map +1 -1
- package/publications/files.js +36 -1
- package/publications/files.js.map +1 -1
- package/publications/flags-update.js +22 -1
- package/publications/flags-update.js.map +1 -1
- package/publications/flags.js +22 -1
- package/publications/flags.js.map +1 -1
- package/publications/logs.js +164 -1
- package/publications/logs.js.map +1 -1
- package/publications/notifications.js +16 -1
- package/publications/notifications.js.map +1 -1
- package/publications/report-builder-dashboard-builders.js +42 -1
- package/publications/report-builder-dashboard-builders.js.map +1 -1
- package/publications/report-builder-libraries.js +90 -1
- package/publications/report-builder-libraries.js.map +1 -1
- package/publications/report-builder-reports.js +50 -1
- package/publications/report-builder-reports.js.map +1 -1
- package/publications/super-admin.js +16 -1
- package/publications/super-admin.js.map +1 -1
- package/publications/user-groups.js +16 -1
- package/publications/user-groups.js.map +1 -1
- package/publications/user-guides.js +16 -1
- package/publications/user-guides.js.map +1 -1
- package/resolveio-server-app.js +176 -1
- package/resolveio-server-app.js.map +1 -1
- package/server-app.js +1159 -1
- package/server-app.js.map +1 -1
- package/util/common.js +632 -1
- package/util/common.js.map +1 -1
- package/util/schema-report-builder.js +454 -1
- package/util/schema-report-builder.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/method.manager.ts"],"names":["client_s3_1","require","fs","nodemailer","sesTransport","path","email_history_collection_1","flag_collection_1","log_collection_1","cron_jobs_1","init_1","accounts_1","aws_1","collections_1","counters_1","cron_jobs_2","flag_updates_1","flags_1","logs_1","monitor_1","pdf_1","report_builder_1","support_1","resolveio_server_app_1","common_1","AWS","this","_s3","_s3USEast1","prototype","create","aws","initialize","s3","S3","credentials","accessKeyId","process","env","AWS_ACCESS_KEY","secretAccessKey","AWS_SECRET_ACCESS_KEY","region","AWS_REGION","apiVersion","s3USEast1","MethodManager","exports","_methods","_isWorkersEnabled","_isWorkerInstance","emailQueue","Set","isEmailProcessing","_debugcallMethodHits","_debugCallMethodHits","_debugCallMethodCronJobHits","_debugSendQueueHits","_enableDebug","clientDir","serverConfig","websocketManager","monitorManagerFunction","isWorkersEnabled","isWorkerInstance","methodManager","_this","_websocketManager","_monitorManagerFunction","ResolveIOServer","getClientDir","getServerConfig","IS_WORKERS_ENABLED","IS_WORKER_INSTANCE","WORKER_INDEX","NODE_APP_INSTANCE","setTimeout","__awaiter","console","log","Date","loadServerInit","_a","sent","setImmediate","loadServerCronJobs","loadAccountMethods","loadAWSMethods","loadCollectionMethods","loadCounterMethods","loadLogMethods","loadPDFMethods","loadCronJobMethods","loadFlagMethods","loadFlagUpdatesMethods","loadReportBuilderMethods","loadSupportMethods","loadMonitorMethods","Flags","findOne","type","flag","value","_aws","getSESMail","_mailer","createTransport","AWS_SES_REGION","host","port","secure","auth","user","pass","tls","ciphers","setInterval","setupEmailWatcher","getMethod","methodName","methods","method","Object","assign","callMethodCron","methodData","_i","arguments","length","sendEmail","_b","Error","skipValidation","check","error","_schema","valObj","valKeys","keys","rootKeys","filter","a","includes","i","validate","err_1","JSON","stringify","message","concat","toISOString","monitor","startMonitorFunction","function","call","apply","__spreadArray","id_user","id_ws","__read","err_2","finishMonitorFunction","callMethod","getLocalLogManager","writeLog","data","_id","objectIdHexString","createdAt","collection","id_document","payload","getBinarySize","messageId","route","Logs","insertOne","client","instance","instance_index","functionMethodData","slice","session","getMongoManager","getSession","bypassSession","startsWith","monitor_2","oneTimeTransaction","res","code","err_4","codeName","stack","err_3","changeStream","EmailHistories","watchCollection","on","change","operationType","fullDocument","status","add","toString","tryProcessEmail","updatedEmail","has","delete","err","close","loadPendingEmails","find","sort","pendingEmails","pendingEmails_1","__values","pendingEmails_1_1","next","done","email","size","emailId","this_1","values","findOneAndUpdate","$set","processingAt","emailHistory","_e","attachments","e_2","_c","att","fetch","response","ok","arrayBuffer","buffer","Buffer","from","content","err_6","updateOne","safeStringify","completedAt","mailOptions","replyTo","reply_to","undefined","send_from","MAIL_FROM","to","subject","match","text","html","map","newAtt","__assign","encoding","_bsontype","sub_type","sendMail","deleteOne","error_1","Promise","resolve","err_5","obj","getCircularReplacer","e","seen","WeakSet","key","sendTo","local_override","Array","isArray","isBuffer","__v","date","err_7","getAWS","readFile","fileName","existsSync","join","__dirname","readFileSync","readImage","getEnableDebug"],"mappings":"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","file":"method.manager.js","sourcesContent":["import { S3 } from '@aws-sdk/client-s3';\nimport * as fs from 'fs';\nimport * as nodemailer from 'nodemailer';\nimport * as sesTransport from 'nodemailer-ses-transport';\nimport * as path from 'path';\nimport { EmailHistories } from '../collections/email-history.collection';\nimport { Flags } from '../collections/flag.collection';\nimport { Logs } from '../collections/log.collection';\nimport { loadServerCronJobs } from '../fixtures/cron-jobs';\nimport { loadServerInit } from '../fixtures/init';\nimport { loadAccountMethods } from '../methods/accounts';\nimport { loadAWSMethods } from '../methods/aws';\nimport { loadCollectionMethods } from '../methods/collections';\nimport { loadCounterMethods } from '../methods/counters';\nimport { loadCronJobMethods } from '../methods/cron-jobs';\nimport { loadFlagUpdatesMethods } from '../methods/flag-updates';\nimport { loadFlagMethods } from '../methods/flags';\nimport { loadLogMethods } from '../methods/logs';\nimport { loadMonitorMethods } from '../methods/monitor';\nimport { loadPDFMethods } from '../methods/pdf';\nimport { loadReportBuilderMethods } from '../methods/report-builder';\nimport { loadSupportMethods } from '../methods/support';\nimport { EmailHistoryModel } from '../models/email-history.model';\nimport { MethodAllModel, MethodModel } from '../models/method.model';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { getBinarySize, objectIdHexString } from '../util/common';\nimport { MonitorManagerFunction } from './monitor.manager';\nimport { WebSocketManager } from './websocket.manager';\n\nexport class AWS {\n\tprivate _s3: S3 = null;\n\tprivate _s3USEast1: S3 = null;\n\n\tconstructor() {}\n\n\tpublic create() {\n\t\tconst aws = new AWS();\n\t\taws.initialize();\n\t\treturn aws;\n\t}\n\n\tprivate initialize() {\n\n\t}\n\n\tpublic s3(): S3 {\n\t\tif (this._s3) {\n\t\t\treturn this._s3;\n\t\t}\n\n\t\tthis._s3 = new S3({\n\t\t\tcredentials: {\n\t\t\t\taccessKeyId: process.env.AWS_ACCESS_KEY,\n\t\t\t\tsecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n\t\t\t},\n\t\t\tregion: process.env.AWS_REGION,\n\t\t\tapiVersion: '2006-03-01'\n\t\t});\n\n\t\treturn this._s3;\n\t}\n\n\tpublic s3USEast1(): S3 {\n\t\tif (process.env.AWS_REGION === 'us-east-1') {\n\t\t\treturn this.s3();\n\t\t}\n\t\telse {\n\t\t\tif (this._s3USEast1) {\n\t\t\t\treturn this._s3USEast1;\n\t\t\t}\n\t\t\t\n\t\t\tthis._s3USEast1 = new S3({\n\t\t\t\tcredentials: {\n\t\t\t\t\taccessKeyId: process.env.AWS_ACCESS_KEY,\n\t\t\t\t\tsecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n\t\t\t\t},\n\t\t\t\tregion: 'us-east-1',\n\t\t\t\tapiVersion: '2006-03-01'\n\t\t\t});\n\t\n\t\t\treturn this._s3USEast1;\n\t\t}\n\t}\n}\n\nexport class MethodManager {\n\tprivate _websocketManager: WebSocketManager;\n\tpublic _methods: MethodModel = {};\n\tprivate _mailer: nodemailer.Transporter;\n\tprivate _aws: AWS;\n\tprivate _monitorManagerFunction: MonitorManagerFunction;\n\tprivate _isWorkersEnabled = false;\n\tprivate _isWorkerInstance = false;\n\n\tprivate emailQueue: Set<string> = new Set(); // Set to store pending email IDs\n\tprivate isEmailProcessing = false;\n\n\tprivate _debugcallMethodHits = 0;\n\tprivate _debugCallMethodHits = 0;\n\tprivate _debugCallMethodCronJobHits = 0;\n\tprivate _debugSendQueueHits = 0;\n\tprivate _enableDebug = false;\n\n\tpublic clientDir = '';\n\tpublic serverConfig = '';\n\n\tconstructor() {}\n\n\tstatic create(websocketManager: WebSocketManager, monitorManagerFunction: MonitorManagerFunction, isWorkersEnabled, isWorkerInstance) {\n\t\tconst methodManager = new MethodManager();\n\t\tmethodManager.initialize(websocketManager, monitorManagerFunction, isWorkersEnabled, isWorkerInstance);\n\t\treturn methodManager;\n\t}\n\n\tprivate initialize(websocketManager: WebSocketManager, monitorManagerFunction: MonitorManagerFunction, isWorkersEnabled, isWorkerInstance) {\n\t\tthis._websocketManager = websocketManager;\n\t\tthis._monitorManagerFunction = monitorManagerFunction;\n\t\tthis._isWorkersEnabled = isWorkersEnabled;\n\t\tthis._isWorkerInstance = isWorkerInstance;\n\t\t\n\t\tthis.clientDir = ResolveIOServer.getClientDir();\n\t\tthis.serverConfig = ResolveIOServer.getServerConfig();\n\n\t\t// Fixtures\n\t\tif (!process.env.IS_WORKERS_ENABLED || process.env.IS_WORKERS_ENABLED === 'false' || (process.env.IS_WORKER_INSTANCE === 'true' && process.env.WORKER_INDEX === '0')) {\n\t\t\tif (!process.env.NODE_APP_INSTANCE || process.env.NODE_APP_INSTANCE === '0') {\n\t\t\t\tsetTimeout(async () => {\n\t\t\t\t\tconsole.log(new Date(), 'Start Server Fixture');\n\t\t\t\t\tawait loadServerInit();\n\t\t\t\t\tconsole.log(new Date(), 'End Server Fixture');\n\t\t\t\t}, 5000);\n\t\t\t}\n\t\t}\n\t\t\n\t\tsetImmediate(async () => {\n\t\t\t// Methods\n\t\t\tawait loadServerCronJobs();\n\n\t\t\tloadAccountMethods(this);\n\t\t\tloadAWSMethods(this);\n\t\t\tloadCollectionMethods(this);\n\t\t\tloadCounterMethods(this);\n\t\t\tloadLogMethods(this);\n\t\t\tloadPDFMethods(this);\n\t\t\tloadCronJobMethods(this);\n\t\t\tloadFlagMethods(this);\n\t\t\tloadFlagUpdatesMethods(this);\n\t\t\tloadReportBuilderMethods(this);\n\t\t\tloadSupportMethods(this);\n\t\t\tloadMonitorMethods(this);\n\n\t\t\tlet flag = await Flags.findOne({type: 'Enable Debug'});\n\t\n\t\t\tif (flag && flag.value) {\n\t\t\t\tthis._enableDebug = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._enableDebug = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis._aws = new AWS();\n\t\t\n\t\tif (ResolveIOServer.getSESMail()) {\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: ResolveIOServer.getServerConfig()['MAIL_HOST'], // 'smtp.office365.com', // Office 365 server\n\t\t\t\tport: ResolveIOServer.getServerConfig()['MAIL_PORT'], //587, // secure SMTP\n\t\t\t\tsecure: false, // false for TLS - as a boolean not string - but the default is false so just remove this completely\n\t\t\t\tauth: {\n\t\t\t\t\tuser: ResolveIOServer.getServerConfig()['MAIL_USERNAME'],\n\t\t\t\t\tpass: ResolveIOServer.getServerConfig()['MAIL_PASSWORD']\n\t\t\t\t},\n\t\t\t\ttls: {\n\t\t\t\t\tciphers: 'SSLv3'\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tsetInterval(async () => {\n\t\t\tlet flag = await Flags.findOne({type: 'Enable Debug'});\n\t\n\t\t\tif (flag && flag.value) {\n\t\t\t\tthis._enableDebug = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._enableDebug = false;\n\t\t\t}\n\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Send Queue Hits', this._debugSendQueueHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Internal Hits', this._debugcallMethodHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Hits', this._debugCallMethodHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Cron Hits', this._debugCallMethodCronJobHits);\n\t\t\t}\n\n\t\t\tthis._debugcallMethodHits = 0;\n\t\t\tthis._debugCallMethodHits = 0;\n\t\t\tthis._debugCallMethodCronJobHits = 0;\n\t\t\tthis._debugSendQueueHits = 0;\n\t\t}, 60000);\n\n\t\tif (!this._isWorkersEnabled || this._isWorkerInstance) {\n\t\t\tsetImmediate(async () => {\n\t\t\t\tawait this.setupEmailWatcher();\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic getMethod(methodName: string): MethodAllModel {\n\t\treturn this._methods[methodName];\n\t}\n\n\t// Add methods to private methods object\n\tpublic methods(method: MethodModel) {\n\t\tthis._methods = Object.assign(this._methods, method);\n\t}\n\n\tpublic async 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\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'No Method: ' + method);\n\n\t\t\tthrow new Error('No Method: ' + method);\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 Cron Method ' + method);\n\n\t\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'No Check Function For Cron Method ' + method);\n\t\n\t\t\t\tthrow new Error('No Check Function For Cron Method ' + method);\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 Cron Method ' + method);\n\n\t\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'No Check Function For Cron Method ' + method);\n\t\n\t\t\t\tthrow new Error('No Check Schema For Cron Method ' + method);\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 (err) {\n\t\t\t\t\tconsole.error(new Date(), 'Error in Cron Method Check (' + method + ')', err);\n\n\t\t\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'Match Error On Cron Method ' + method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(err, null, 2));\n\t\t\t\t\terr.message = `${new Date().toISOString()} - Error in Cron Method Check (${method}): ${err.message}`;\n\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Cron Method', method, '', '', methodData);\n\n\t\ttry {\n\t\t\tlet res = await this._methods[method].function.call(Object.assign({}, this, MethodManager.prototype, {id_user: '', user: '', id_ws: ''}), ...methodData);\n\t\t\treturn res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'Error Detected During Cron Method ' + method + ' - (callMethodCron)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(err, null, 2));\n\t\t\t\n\t\t\terr.message = `${new Date().toISOString()} - Error in Cron Method (${method}): ${err.message}`;\n\t\t\t\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t}\n\t}\n\n\t// Call/run method internal (No Emit on Socket)\n\tpublic async callMethod(methodName: string, ...methodData: any[]): Promise<any> {\n\t\tthis._debugcallMethodHits += 1;\n\n\t\tlet method = this.getMethod(methodName);\n\n\t\tif (!method) {\n\t\t\tconsole.log('No Method: ' + methodName);\n\t\t\tthrow new Error(`No Method: ${methodName}`);\n\t\t}\n\n\t\tif ((methodData.length > 1 || (methodData[0] && typeof methodData[0] !== 'function')) && !method.skipValidation) {\n\t\t\tif (!method.check) {\n\t\t\t\tconsole.error(new Date(), 'No Check Function For Method ' + methodName);\n\t\t\t\tthrow new Error(`No Check Function For Method: ${methodName}`);\n\t\t\t}\n\t\t\telse if (!method.check._schema) {\n\t\t\t\tconsole.error(new Date(), 'No Check Schema For Method ' + methodName);\n\t\t\t\tthrow new Error(`No Check Schema For Method: ${methodName}`);\n\t\t\t}\n\t\t}\n\n\t\tif (methodName !== 'insertSubscriptionLog' && methodName !== 'getDataURIfromURL' && methodName !== 'processAirdropDistribution' && methodName !== 'incCounter' && methodName !== 'supportCreateBillingUser' && methodName !== 'countCollectionWithQuery') {\n\t\t\tif (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t\t) {\n\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\ttype: 'log',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\t\ttype: 'callMethod',\n\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([methodData])) < 1000000 ? JSON.stringify([methodData], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethodName: methodName,\n\t\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\t\tuser: this['user'] || '', \n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tawait Logs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'callMethod',\n\t\t\t\t\tcollection: '',\n\t\t\t\t\tid_document: '',\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([methodData])) < 1000000 ? JSON.stringify([methodData], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: methodName,\n\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\tuser: this['user'] || '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: '',\n\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\tinstance: 'backend.resolveio.com',\n\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || ''\n\t\t\t\t})\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\tconst session = ResolveIOServer.getMongoManager().getSession();\n\n\t\tif (!method.bypassSession &&\n\t\t\t!session && \n\t\t\t![\n\t\t\t\t'insertErrorLog', // CIRCULAR LOOP - DO NOT REMOVE\n\t\t\t\t'countWithQuery', // MONGO SESSIONS/TRANSACTIONS DONT WORTH WITH COUNTS\n\t\t\t\t'sendEmail' // ALWAYS SEND SO ALWAYS HAVE RECORD - DONT ROLL BACK - BYPASS SESSION\n\t\t\t].includes(methodName) &&\n\t\t\t!methodName.startsWith('monitor-') &&\n\t\t\t!methodName.startsWith('log')\n\t\t) {\n\t\t\tlet monitor = null;\n\t\t\t\n\t\t\treturn ResolveIOServer.getMongoManager().oneTimeTransaction(async () => {\n\t\t\t\tmonitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await method.function.call(Object.assign({}, this, MethodManager.prototype), ...functionMethodData);\n\n\t\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\t\tmethodData[methodData.length - 1](null, res);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tif (err.code === 112 || err.codeName === 'WriteConflict' || err.code === 251 || err.codeName === 'NoSuchTransaction') {\n\t\t\t\t\t\tthrow err; // Write error, retry\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Method Manager - Run Method - New Session', methodName, {\n\t\t\t\t\t\tcode: err.code,\n\t\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t}], null, 2));\n\n\t\t\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'Error Detected During Method ' + methodName + ' - (callMethod)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(err, null, 2));\n\t\t\t\t\terr.message = `${new Date().toISOString()} - Error in Method With Session (${methodName}) - New Session: ${err.message}`;\n\n\t\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\t\tmethodData[methodData.length - 1](err, null);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!process.env.IS_WORKER_INSTANCE) {\n\t\t\t\t\t\tawait this.callMethod('insertErrorLog', `Error in Method: ${methodName} - ${JSON.stringify(methodData, null, 2)}`);\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tlet res = await method.function.call(Object.assign({}, this, MethodManager.prototype), ...functionMethodData);\n\n\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\tmethodData[methodData.length - 1](null, res);\n\t\t\t\t}\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tif (err.code === 112 || err.codeName === 'WriteConflict') {\n\t\t\t\t\tthrow err; // Write error, retry\n\t\t\t\t}\n\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Method Manager - Run Method - Existing Session', methodName, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\n\t\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'Error Detected During Method ' + methodName + ' - (callMethod)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(err, null, 2));\n\t\t\t\terr.message = `${new Date().toISOString()} - Error in Method (${methodName}) - Existing Session: ${err.message}`;\n\t\t\t\t\n\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\tmethodData[methodData.length - 1](err, null);\n\t\t\t\t}\n\n\t\t\t\tif (!process.env.IS_WORKER_INSTANCE) {\n\t\t\t\t\tawait this.callMethod('insertErrorLog', `Error in Method: ${methodName} - ${JSON.stringify(methodData, null, 2)}`);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync setupEmailWatcher() {\n\t\tconst changeStream = EmailHistories.watchCollection([]);\n\n\t\tchangeStream.on('change', async (change) => {\n\t\t\tif (change.operationType === 'insert' && change.fullDocument && change.fullDocument.status === 'pending') {\n\t\t\t\tthis.emailQueue.add(change.fullDocument._id.toString());\n\t\t\t\tawait this.tryProcessEmail();\n\t\t\t}\n\t\t\telse if (change.operationType === 'update' || change.operationType === 'replace') {\n\t\t\t\tconst updatedEmail = change.fullDocument;\n\t\t\t\tif (updatedEmail && updatedEmail.status !== 'pending' && this.emailQueue.has(updatedEmail._id.toString())) {\n\t\t\t\t\tthis.emailQueue.delete(updatedEmail._id.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.on('error', async err => {\n\t\t\tconsole.error('Email history changestream error', err);\n\t\t\tawait changeStream.close();\n\t\t})\n\t\t.on('close', async () => {\n\t\t\tawait this.setupEmailWatcher();\n\t\t});\n\n\t\tawait this.loadPendingEmails();\n\t}\n\n\tasync loadPendingEmails() {\n\t\t// Load any pending emails on startup\n\t\tconst pendingEmails = await EmailHistories.find({ status: 'pending' }, {sort: {_id: 1}});\n\t\tfor (const email of pendingEmails) {\n\t\t\tthis.emailQueue.add(email._id.toString());\n\t\t}\n\t\t// Try to process emails\n\t\tawait this.tryProcessEmail();\n\t}\n\n\tasync tryProcessEmail() {\n\t\tif (this.isEmailProcessing || this.emailQueue.size === 0) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tthis.isEmailProcessing = true;\n\t\n\t\ttry {\n\t\t\twhile (this.emailQueue.size > 0) {\n\t\t\t\tconst emailId = this.emailQueue.values().next().value;\n\t\t\t\tthis.emailQueue.delete(emailId);\n\t\n\t\t\t\tconst emailHistory = await EmailHistories.findOneAndUpdate(\n\t\t\t\t\t{\n\t\t\t\t\t\t_id: emailId,\n\t\t\t\t\t\tstatus: 'pending',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$set: { status: 'processing', processingAt: new Date() },\n\t\t\t\t\t}\n\t\t\t\t);\n\t\n\t\t\t\tif (!emailHistory) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\n\t\t\t\t// Fetch and process attachments\n\t\t\t\tif (emailHistory.attachments && emailHistory.attachments.length > 0) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (let att of emailHistory.attachments) {\n\t\t\t\t\t\t\tif (att.path && att.path.startsWith('http')) {\n\t\t\t\t\t\t\t\tconst response = await fetch(att.path);\n\t\t\t\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\t\t\t\tthrow new Error(`Failed to fetch attachment: ${att.path}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst arrayBuffer = await response.arrayBuffer();\n\t\t\t\t\t\t\t\tconst buffer = Buffer.from(arrayBuffer);\n\t\n\t\t\t\t\t\t\t\t// Check the size of the attachment\n\t\t\t\t\t\t\t\tconst maxSize = 20 * 1024 * 1024; // 20MB in bytes\n\t\t\t\t\t\t\t\tif (buffer.length <= maxSize) {\n\t\t\t\t\t\t\t\t\t// Attachment is within size limits, include it\n\t\t\t\t\t\t\t\t\tatt.content = buffer;\n\t\t\t\t\t\t\t\t\tdelete att.path;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tconsole.error('Failed to fetch attachment:', err);\n\t\n\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\t\t\terror: typeof err === 'string' ? err : this.safeStringify(err),\n\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\t// Skip to the next email\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Prepare email options\n\t\t\t\tconst mailOptions: any = {\n\t\t\t\t\treplyTo: emailHistory.reply_to || (ResolveIOServer.getServerConfig()['MAIL_REPLY_TO'] || undefined),\n\t\t\t\t\tfrom: emailHistory.send_from || ResolveIOServer.getServerConfig().MAIL_FROM,\n\t\t\t\t\tto: emailHistory.email,\n\t\t\t\t\tsubject:\n\t\t\t\t\t\t(ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/dev\\./) ||\n\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/www\\.dev\\./)\n\t\t\t\t\t\t\t? '(DEV SERVER) - '\n\t\t\t\t\t\t\t: '') + emailHistory.subject,\n\t\t\t\t\ttext: typeof emailHistory.text === 'string' ? emailHistory.text : '',\n\t\t\t\t\thtml: typeof emailHistory.html === 'string' ? emailHistory.html : '',\n\t\t\t\t\tattachments: emailHistory.attachments || [],\n\t\t\t\t};\n\t\n\t\t\t\t// Process attachments before sending\n\t\t\t\tif (mailOptions.attachments && mailOptions.attachments.length > 0) {\n\t\t\t\t\tmailOptions.attachments = mailOptions.attachments.map((att) => {\n\t\t\t\t\t\tconst newAtt = { ...att };\n\t\t\t\t\t\t// Handle attachments stored as BinData or Buffer\n\t\t\t\t\t\tif (newAtt.content && typeof newAtt.content === 'object' && !(newAtt.content instanceof Buffer)) {\n\t\t\t\t\t\t\t// Convert MongoDB's Binary data to Buffer\n\t\t\t\t\t\t\tif (newAtt.content._bsontype === 'Binary' && newAtt.content.sub_type === 0) {\n\t\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content.buffer);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t// Handle other types if necessary\n\t\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Handle attachments stored as Base64 strings\n\t\t\t\t\t\telse if (typeof newAtt.content === 'string' && newAtt.encoding === 'base64') {\n\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content, 'base64');\n\t\t\t\t\t\t\tdelete newAtt.encoding;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Ensure the content is a Buffer\n\t\t\t\t\t\telse if (typeof newAtt.content === 'string') {\n\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn newAtt;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\n\t\t\t\t// Send the email\n\t\t\t\tthis._mailer.sendMail(mailOptions, async err => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tconsole.error('Failed to send email:', err);\n\t\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\t\t\t\terror: typeof err === 'string' ? err : this.safeStringify(err),\n\t\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (emailHistory.email === 'dev@resolveio.com') {\n\t\t\t\t\t\t\t\tawait EmailHistories.deleteOne({ _id: emailHistory._id });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\t\t\tstatus: 'completed',\n\t\t\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\tconsole.error('Error in sendMail callback:', error);\n\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\t\t\terror: typeof error === 'string' ? error : this.safeStringify(error),\n\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} \n\t\t\t\t});\n\t\n\t\t\t\t// Wait for at least one second before sending the next email\n\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 1000));\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.error('Error processing email queue:', err);\n\t\t}\n\t\tfinally {\n\t\t\tthis.isEmailProcessing = false;\n\t\t\t// Check if new emails arrived while processing\n\t\t\tif (this.emailQueue.size > 0) {\n\t\t\t\tawait this.tryProcessEmail();\n\t\t\t}\n\t\t}\n\t}\n\n\tsafeStringify(obj)\n\t{\n\t\ttry\n\t\t{\n\t\t\treturn JSON.stringify(obj, this.getCircularReplacer());\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\treturn `Error in JSON stringifying: ${e.message}`;\n\t\t}\n\t}\n\n\tgetCircularReplacer()\n\t{\n\t\tconst seen = new WeakSet();\n\t\treturn (key, value) =>\n\t\t{\n\t\t\tif (typeof value === \"object\" && value !== null)\n\t\t\t{\n\t\t\t\tif (seen.has(value))\n\t\t\t\t{\n\t\t\t\t\treturn \"[Circular]\";\n\t\t\t\t}\n\t\t\t\tseen.add(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t};\n\t}\n\n\tpublic async sendEmail(\n\t\tsendTo: string,\n\t\tsubject: string,\n\t\ttext?: string,\n\t\thtml?: string,\n\t\tattachments?: any[],\n\t\tsend_from?: string,\n\t\treply_to?: string,\n\t\tlocal_override = false\n\t) {\n\t\t// Modify sendTo in development environments\n\t\tif (\n\t\t\t(ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/dev\\./) ||\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/www\\.dev\\./) ||\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200') &&\n\t\t\t!sendTo.match(/\\@resolveio\\.com/)\n\t\t) {\n\t\t\tsendTo = 'dev@resolveio.com';\n\t\t}\n\n\t\tif (sendTo) {\n\t\t\tif (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200' ||\n\t\t\t\tlocal_override\n\t\t\t) {\n\t\t\t\tif (!attachments) {\n\t\t\t\t\tattachments = [];\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(attachments)) {\n\t\t\t\t\tattachments = [attachments];\n\t\t\t\t}\n\n\t\t\t\t// Process attachments before saving\n\t\t\t\tattachments = attachments.map((att) => {\n\t\t\t\t\tconst newAtt = { ...att };\n\t\t\t\t\tif (Buffer.isBuffer(newAtt.content)) {\n\t\t\t\t\t\tnewAtt.content = newAtt.content.toString('base64');\n\t\t\t\t\t\tnewAtt.encoding = 'base64';\n\t\t\t\t\t}\n\t\t\t\t\treturn newAtt;\n\t\t\t\t});\n\n\t\t\t\t// Queue the email in MongoDB\n\t\t\t\tconst emailHistory: EmailHistoryModel = {\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t__v: 0,\n\t\t\t\t\tdate: new Date(),\n\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\tuser: this['user'] || '',\n\t\t\t\t\temail: sendTo,\n\t\t\t\t\tsubject: subject || '',\n\t\t\t\t\ttext: text || '',\n\t\t\t\t\thtml: html || '',\n\t\t\t\t\tattachments: attachments || [],\n\t\t\t\t\tsend_from: send_from || '',\n\t\t\t\t\treply_to: reply_to || '',\n\t\t\t\t\tstatus: 'pending',\n\t\t\t\t\terror: ''\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\tlet history = await EmailHistories.insertOne(emailHistory);\n\t\t\t\t\treturn history;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.error('Failed to queue email:', err);\n\t\t\t\t\terr.message = `Failed to queue email: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconsole.log(\n\t\t\t\t\t'Send email',\n\t\t\t\t\tsendTo,\n\t\t\t\t\tsubject,\n\t\t\t\t\ttext,\n\t\t\t\t\thtml,\n\t\t\t\t\tattachments,\n\t\t\t\t\tsend_from\n\t\t\t\t);\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic getAWS(): AWS {\n\t\treturn this._aws;\n\t}\n\n\tpublic readFile(fileName) {\n\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\ttry {\n\t\t\t\treturn fs.readFileSync(path.join(__dirname, ('../private/' + fileName)), 'utf-8');\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\terr.message = `Error in readFile: ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (fs.existsSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)))) {\n\t\t\t\ttry {\n\t\t\t\t\treturn fs.readFileSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)), 'utf-8');\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in readFile: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error ('Error in readFile: File Not Found');\n\t}\n\n\tpublic readImage(fileName) {\n\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\ttry {\n\t\t\t\treturn fs.readFileSync(path.join(__dirname, ('../private/' + fileName)), 'base64');\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\terr.message = `Error in readImage: ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (fs.existsSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)))) {\n\t\t\t\ttry {\n\t\t\t\t\treturn fs.readFileSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)), 'base64');\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in readImage: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error ('Error in readImage: File Not Found');\n\t}\n\n\tpublic getEnableDebug() {\n\t\treturn this._enableDebug;\n\t}\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/method.manager.ts"],"names":[],"mappings":"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","file":"method.manager.js","sourcesContent":["import { S3 } from '@aws-sdk/client-s3';\nimport * as fs from 'fs';\nimport * as nodemailer from 'nodemailer';\nimport * as sesTransport from 'nodemailer-ses-transport';\nimport * as path from 'path';\nimport { EmailHistories } from '../collections/email-history.collection';\nimport { Flags } from '../collections/flag.collection';\nimport { Logs } from '../collections/log.collection';\nimport { loadServerCronJobs } from '../fixtures/cron-jobs';\nimport { loadServerInit } from '../fixtures/init';\nimport { loadAccountMethods } from '../methods/accounts';\nimport { loadAWSMethods } from '../methods/aws';\nimport { loadCollectionMethods } from '../methods/collections';\nimport { loadCounterMethods } from '../methods/counters';\nimport { loadCronJobMethods } from '../methods/cron-jobs';\nimport { loadFlagUpdatesMethods } from '../methods/flag-updates';\nimport { loadFlagMethods } from '../methods/flags';\nimport { loadLogMethods } from '../methods/logs';\nimport { loadMonitorMethods } from '../methods/monitor';\nimport { loadPDFMethods } from '../methods/pdf';\nimport { loadReportBuilderMethods } from '../methods/report-builder';\nimport { loadSupportMethods } from '../methods/support';\nimport { EmailHistoryModel } from '../models/email-history.model';\nimport { MethodAllModel, MethodModel } from '../models/method.model';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { getBinarySize, objectIdHexString } from '../util/common';\nimport { MonitorManagerFunction } from './monitor.manager';\nimport { WebSocketManager } from './websocket.manager';\n\nexport class AWS {\n\tprivate _s3: S3 = null;\n\tprivate _s3USEast1: S3 = null;\n\n\tconstructor() {}\n\n\tpublic create() {\n\t\tconst aws = new AWS();\n\t\taws.initialize();\n\t\treturn aws;\n\t}\n\n\tprivate initialize() {\n\n\t}\n\n\tpublic s3(): S3 {\n\t\tif (this._s3) {\n\t\t\treturn this._s3;\n\t\t}\n\n\t\tthis._s3 = new S3({\n\t\t\tcredentials: {\n\t\t\t\taccessKeyId: process.env.AWS_ACCESS_KEY,\n\t\t\t\tsecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n\t\t\t},\n\t\t\tregion: process.env.AWS_REGION,\n\t\t\tapiVersion: '2006-03-01'\n\t\t});\n\n\t\treturn this._s3;\n\t}\n\n\tpublic s3USEast1(): S3 {\n\t\tif (process.env.AWS_REGION === 'us-east-1') {\n\t\t\treturn this.s3();\n\t\t}\n\t\telse {\n\t\t\tif (this._s3USEast1) {\n\t\t\t\treturn this._s3USEast1;\n\t\t\t}\n\t\t\t\n\t\t\tthis._s3USEast1 = new S3({\n\t\t\t\tcredentials: {\n\t\t\t\t\taccessKeyId: process.env.AWS_ACCESS_KEY,\n\t\t\t\t\tsecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n\t\t\t\t},\n\t\t\t\tregion: 'us-east-1',\n\t\t\t\tapiVersion: '2006-03-01'\n\t\t\t});\n\t\n\t\t\treturn this._s3USEast1;\n\t\t}\n\t}\n}\n\nexport class MethodManager {\n\tprivate _websocketManager: WebSocketManager;\n\tpublic _methods: MethodModel = {};\n\tprivate _mailer: nodemailer.Transporter;\n\tprivate _aws: AWS;\n\tprivate _monitorManagerFunction: MonitorManagerFunction;\n\tprivate _isWorkersEnabled = false;\n\tprivate _isWorkerInstance = false;\n\n\tprivate emailQueue: Set<string> = new Set(); // Set to store pending email IDs\n\tprivate isEmailProcessing = false;\n\n\tprivate _debugcallMethodHits = 0;\n\tprivate _debugCallMethodHits = 0;\n\tprivate _debugCallMethodCronJobHits = 0;\n\tprivate _debugSendQueueHits = 0;\n\tprivate _enableDebug = false;\n\n\tpublic clientDir = '';\n\tpublic serverConfig = '';\n\n\tconstructor() {}\n\n\tstatic create(websocketManager: WebSocketManager, monitorManagerFunction: MonitorManagerFunction, isWorkersEnabled, isWorkerInstance) {\n\t\tconst methodManager = new MethodManager();\n\t\tmethodManager.initialize(websocketManager, monitorManagerFunction, isWorkersEnabled, isWorkerInstance);\n\t\treturn methodManager;\n\t}\n\n\tprivate initialize(websocketManager: WebSocketManager, monitorManagerFunction: MonitorManagerFunction, isWorkersEnabled, isWorkerInstance) {\n\t\tthis._websocketManager = websocketManager;\n\t\tthis._monitorManagerFunction = monitorManagerFunction;\n\t\tthis._isWorkersEnabled = isWorkersEnabled;\n\t\tthis._isWorkerInstance = isWorkerInstance;\n\t\t\n\t\tthis.clientDir = ResolveIOServer.getClientDir();\n\t\tthis.serverConfig = ResolveIOServer.getServerConfig();\n\n\t\t// Fixtures\n\t\tif (!process.env.IS_WORKERS_ENABLED || process.env.IS_WORKERS_ENABLED === 'false' || (process.env.IS_WORKER_INSTANCE === 'true' && process.env.WORKER_INDEX === '0')) {\n\t\t\tif (!process.env.NODE_APP_INSTANCE || process.env.NODE_APP_INSTANCE === '0') {\n\t\t\t\tsetTimeout(async () => {\n\t\t\t\t\tconsole.log(new Date(), 'Start Server Fixture');\n\t\t\t\t\tawait loadServerInit();\n\t\t\t\t\tconsole.log(new Date(), 'End Server Fixture');\n\t\t\t\t}, 5000);\n\t\t\t}\n\t\t}\n\t\t\n\t\tsetImmediate(async () => {\n\t\t\t// Methods\n\t\t\tawait loadServerCronJobs();\n\n\t\t\tloadAccountMethods(this);\n\t\t\tloadAWSMethods(this);\n\t\t\tloadCollectionMethods(this);\n\t\t\tloadCounterMethods(this);\n\t\t\tloadLogMethods(this);\n\t\t\tloadPDFMethods(this);\n\t\t\tloadCronJobMethods(this);\n\t\t\tloadFlagMethods(this);\n\t\t\tloadFlagUpdatesMethods(this);\n\t\t\tloadReportBuilderMethods(this);\n\t\t\tloadSupportMethods(this);\n\t\t\tloadMonitorMethods(this);\n\n\t\t\tlet flag = await Flags.findOne({type: 'Enable Debug'});\n\t\n\t\t\tif (flag && flag.value) {\n\t\t\t\tthis._enableDebug = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._enableDebug = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis._aws = new AWS();\n\t\t\n\t\tif (ResolveIOServer.getSESMail()) {\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: ResolveIOServer.getServerConfig()['MAIL_HOST'], // 'smtp.office365.com', // Office 365 server\n\t\t\t\tport: ResolveIOServer.getServerConfig()['MAIL_PORT'], //587, // secure SMTP\n\t\t\t\tsecure: false, // false for TLS - as a boolean not string - but the default is false so just remove this completely\n\t\t\t\tauth: {\n\t\t\t\t\tuser: ResolveIOServer.getServerConfig()['MAIL_USERNAME'],\n\t\t\t\t\tpass: ResolveIOServer.getServerConfig()['MAIL_PASSWORD']\n\t\t\t\t},\n\t\t\t\ttls: {\n\t\t\t\t\tciphers: 'SSLv3'\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tsetInterval(async () => {\n\t\t\tlet flag = await Flags.findOne({type: 'Enable Debug'});\n\t\n\t\t\tif (flag && flag.value) {\n\t\t\t\tthis._enableDebug = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._enableDebug = false;\n\t\t\t}\n\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Send Queue Hits', this._debugSendQueueHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Internal Hits', this._debugcallMethodHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Hits', this._debugCallMethodHits);\n\t\t\t\tconsole.log(new Date(), 'Method Manager', 'Call Method Cron Hits', this._debugCallMethodCronJobHits);\n\t\t\t}\n\n\t\t\tthis._debugcallMethodHits = 0;\n\t\t\tthis._debugCallMethodHits = 0;\n\t\t\tthis._debugCallMethodCronJobHits = 0;\n\t\t\tthis._debugSendQueueHits = 0;\n\t\t}, 60000);\n\n\t\tif (!this._isWorkersEnabled || this._isWorkerInstance) {\n\t\t\tsetImmediate(async () => {\n\t\t\t\tawait this.setupEmailWatcher();\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic getMethod(methodName: string): MethodAllModel {\n\t\treturn this._methods[methodName];\n\t}\n\n\t// Add methods to private methods object\n\tpublic methods(method: MethodModel) {\n\t\tthis._methods = Object.assign(this._methods, method);\n\t}\n\n\tpublic async 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\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'No Method: ' + method);\n\n\t\t\tthrow new Error('No Method: ' + method);\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 Cron Method ' + method);\n\n\t\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'No Check Function For Cron Method ' + method);\n\t\n\t\t\t\tthrow new Error('No Check Function For Cron Method ' + method);\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 Cron Method ' + method);\n\n\t\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'No Check Function For Cron Method ' + method);\n\t\n\t\t\t\tthrow new Error('No Check Schema For Cron Method ' + method);\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 (err) {\n\t\t\t\t\tconsole.error(new Date(), 'Error in Cron Method Check (' + method + ')', err);\n\n\t\t\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'Match Error On Cron Method ' + method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(err, null, 2));\n\t\t\t\t\terr.message = `${new Date().toISOString()} - Error in Cron Method Check (${method}): ${err.message}`;\n\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Cron Method', method, '', '', methodData);\n\n\t\ttry {\n\t\t\tlet res = await this._methods[method].function.call(Object.assign({}, this, MethodManager.prototype, {id_user: '', user: '', id_ws: ''}), ...methodData);\n\t\t\treturn res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'Error Detected During Cron Method ' + method + ' - (callMethodCron)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(err, null, 2));\n\t\t\t\n\t\t\terr.message = `${new Date().toISOString()} - Error in Cron Method (${method}): ${err.message}`;\n\t\t\t\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t}\n\t}\n\n\t// Call/run method internal (No Emit on Socket)\n\tpublic async callMethod(methodName: string, ...methodData: any[]): Promise<any> {\n\t\tthis._debugcallMethodHits += 1;\n\n\t\tlet method = this.getMethod(methodName);\n\n\t\tif (!method) {\n\t\t\tconsole.log('No Method: ' + methodName);\n\t\t\tthrow new Error(`No Method: ${methodName}`);\n\t\t}\n\n\t\tif ((methodData.length > 1 || (methodData[0] && typeof methodData[0] !== 'function')) && !method.skipValidation) {\n\t\t\tif (!method.check) {\n\t\t\t\tconsole.error(new Date(), 'No Check Function For Method ' + methodName);\n\t\t\t\tthrow new Error(`No Check Function For Method: ${methodName}`);\n\t\t\t}\n\t\t\telse if (!method.check._schema) {\n\t\t\t\tconsole.error(new Date(), 'No Check Schema For Method ' + methodName);\n\t\t\t\tthrow new Error(`No Check Schema For Method: ${methodName}`);\n\t\t\t}\n\t\t}\n\n\t\tif (methodName !== 'insertSubscriptionLog' && methodName !== 'getDataURIfromURL' && methodName !== 'processAirdropDistribution' && methodName !== 'incCounter' && methodName !== 'supportCreateBillingUser' && methodName !== 'countCollectionWithQuery') {\n\t\t\tif (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t\t) {\n\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\ttype: 'log',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\t\ttype: 'callMethod',\n\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([methodData])) < 1000000 ? JSON.stringify([methodData], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethodName: methodName,\n\t\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\t\tuser: this['user'] || '', \n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tawait Logs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'callMethod',\n\t\t\t\t\tcollection: '',\n\t\t\t\t\tid_document: '',\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([methodData])) < 1000000 ? JSON.stringify([methodData], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: methodName,\n\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\tuser: this['user'] || '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: '',\n\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\tinstance: 'backend.resolveio.com',\n\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || ''\n\t\t\t\t})\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\tconst session = ResolveIOServer.getMongoManager().getSession();\n\n\t\tif (!method.bypassSession &&\n\t\t\t!session && \n\t\t\t![\n\t\t\t\t'insertErrorLog', // CIRCULAR LOOP - DO NOT REMOVE\n\t\t\t\t'countWithQuery', // MONGO SESSIONS/TRANSACTIONS DONT WORK WITH COUNTS\n\t\t\t\t'sendEmail' // ALWAYS SEND SO ALWAYS HAVE RECORD - DONT ROLL BACK - BYPASS SESSION\n\t\t\t].includes(methodName) &&\n\t\t\t!methodName.startsWith('monitor-') &&\n\t\t\t!methodName.startsWith('log')\n\t\t) {\n\t\t\tlet monitor = null;\n\t\t\t\n\t\t\treturn ResolveIOServer.getMongoManager().oneTimeTransaction(async () => {\n\t\t\t\tconsole.log(new Date(), 'Calling Method - New Session', methodName);\n\n\t\t\t\tmonitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await method.function.call(Object.assign({}, this, MethodManager.prototype), ...functionMethodData);\n\n\t\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\t\tmethodData[methodData.length - 1](null, res);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tif (err.code === 112 || err.codeName === 'WriteConflict' || err.code === 251 || err.codeName === 'NoSuchTransaction') {\n\t\t\t\t\t\tthrow err; // Write error, retry\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Method Manager - Run Method - New Session', methodName, {\n\t\t\t\t\t\tcode: err.code,\n\t\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t}], null, 2));\n\n\t\t\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'Error Detected During Method ' + methodName + ' - (callMethod)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(err, null, 2));\n\t\t\t\t\terr.message = `${new Date().toISOString()} - Error in Method With Session (${methodName}) - New Session: ${err.message}`;\n\n\t\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\t\tmethodData[methodData.length - 1](err, null);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!process.env.IS_WORKER_INSTANCE) {\n\t\t\t\t\t\tawait this.callMethod('insertErrorLog', `Error in Method: ${methodName} - ${JSON.stringify(methodData, null, 2)}`);\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tconsole.log(new Date(), 'Calling Method - Existing Session', methodName);\n\n\t\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tlet res = await method.function.call(Object.assign({}, this, MethodManager.prototype), ...functionMethodData);\n\n\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\tmethodData[methodData.length - 1](null, res);\n\t\t\t\t}\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tif (err.code === 112 || err.codeName === 'WriteConflict' || err.code === 251 || err.codeName === 'NoSuchTransaction') {\n\t\t\t\t\tthrow err; // Write error, retry\n\t\t\t\t}\n\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Method Manager - Run Method - Existing Session', methodName, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\n\t\t\t\tawait this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'Error Detected During Method ' + methodName + ' - (callMethod)\\n\\nData \\n' + JSON.stringify(methodData, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(err, null, 2));\n\t\t\t\terr.message = `${new Date().toISOString()} - Error in Method (${methodName}) - Existing Session: ${err.message}`;\n\t\t\t\t\n\t\t\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\t\t\tmethodData[methodData.length - 1](err, null);\n\t\t\t\t}\n\n\t\t\t\tif (!process.env.IS_WORKER_INSTANCE) {\n\t\t\t\t\tawait this.callMethod('insertErrorLog', `Error in Method: ${methodName} - ${JSON.stringify(methodData, null, 2)}`);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync setupEmailWatcher() {\n\t\tconst changeStream = EmailHistories.watchCollection([]);\n\n\t\tchangeStream.on('change', async (change) => {\n\t\t\tif (change.operationType === 'insert' && change.fullDocument && change.fullDocument.status === 'pending') {\n\t\t\t\tthis.emailQueue.add(change.fullDocument._id.toString());\n\t\t\t\tawait this.tryProcessEmail();\n\t\t\t}\n\t\t\telse if (change.operationType === 'update' || change.operationType === 'replace') {\n\t\t\t\tconst updatedEmail = change.fullDocument;\n\t\t\t\tif (updatedEmail && updatedEmail.status !== 'pending' && this.emailQueue.has(updatedEmail._id.toString())) {\n\t\t\t\t\tthis.emailQueue.delete(updatedEmail._id.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.on('error', async err => {\n\t\t\tconsole.error('Email history changestream error', err);\n\t\t\tawait changeStream.close();\n\t\t})\n\t\t.on('close', async () => {\n\t\t\tawait this.setupEmailWatcher();\n\t\t});\n\n\t\tawait this.loadPendingEmails();\n\t}\n\n\tasync loadPendingEmails() {\n\t\t// Load any pending emails on startup\n\t\tconst pendingEmails = await EmailHistories.find({ status: 'pending' }, {sort: {_id: 1}});\n\t\tfor (const email of pendingEmails) {\n\t\t\tthis.emailQueue.add(email._id.toString());\n\t\t}\n\t\t// Try to process emails\n\t\tawait this.tryProcessEmail();\n\t}\n\n\tasync tryProcessEmail() {\n\t\tif (this.isEmailProcessing || this.emailQueue.size === 0) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tthis.isEmailProcessing = true;\n\t\n\t\ttry {\n\t\t\twhile (this.emailQueue.size > 0) {\n\t\t\t\tconst emailId = this.emailQueue.values().next().value;\n\t\t\t\tthis.emailQueue.delete(emailId);\n\t\n\t\t\t\tconst emailHistory = await EmailHistories.findOneAndUpdate(\n\t\t\t\t\t{\n\t\t\t\t\t\t_id: emailId,\n\t\t\t\t\t\tstatus: 'pending',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$set: { status: 'processing', processingAt: new Date() },\n\t\t\t\t\t}\n\t\t\t\t);\n\t\n\t\t\t\tif (!emailHistory) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\n\t\t\t\t// Fetch and process attachments\n\t\t\t\tif (emailHistory.attachments && emailHistory.attachments.length > 0) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (let att of emailHistory.attachments) {\n\t\t\t\t\t\t\tif (att.path && att.path.startsWith('http')) {\n\t\t\t\t\t\t\t\tconst response = await fetch(att.path);\n\t\t\t\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\t\t\t\tthrow new Error(`Failed to fetch attachment: ${att.path}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst arrayBuffer = await response.arrayBuffer();\n\t\t\t\t\t\t\t\tconst buffer = Buffer.from(arrayBuffer);\n\t\n\t\t\t\t\t\t\t\t// Check the size of the attachment\n\t\t\t\t\t\t\t\tconst maxSize = 20 * 1024 * 1024; // 20MB in bytes\n\t\t\t\t\t\t\t\tif (buffer.length <= maxSize) {\n\t\t\t\t\t\t\t\t\t// Attachment is within size limits, include it\n\t\t\t\t\t\t\t\t\tatt.content = buffer;\n\t\t\t\t\t\t\t\t\tdelete att.path;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tconsole.error('Failed to fetch attachment:', err);\n\t\n\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\t\t\terror: typeof err === 'string' ? err : this.safeStringify(err),\n\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\t// Skip to the next email\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Prepare email options\n\t\t\t\tconst mailOptions: any = {\n\t\t\t\t\treplyTo: emailHistory.reply_to || (ResolveIOServer.getServerConfig()['MAIL_REPLY_TO'] || undefined),\n\t\t\t\t\tfrom: emailHistory.send_from || ResolveIOServer.getServerConfig().MAIL_FROM,\n\t\t\t\t\tto: emailHistory.email,\n\t\t\t\t\tsubject:\n\t\t\t\t\t\t(ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/dev\\./) ||\n\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/www\\.dev\\./)\n\t\t\t\t\t\t\t? '(DEV SERVER) - '\n\t\t\t\t\t\t\t: '') + emailHistory.subject,\n\t\t\t\t\ttext: typeof emailHistory.text === 'string' ? emailHistory.text : '',\n\t\t\t\t\thtml: typeof emailHistory.html === 'string' ? emailHistory.html : '',\n\t\t\t\t\tattachments: emailHistory.attachments || [],\n\t\t\t\t};\n\t\n\t\t\t\t// Process attachments before sending\n\t\t\t\tif (mailOptions.attachments && mailOptions.attachments.length > 0) {\n\t\t\t\t\tmailOptions.attachments = mailOptions.attachments.map((att) => {\n\t\t\t\t\t\tconst newAtt = { ...att };\n\t\t\t\t\t\t// Handle attachments stored as BinData or Buffer\n\t\t\t\t\t\tif (newAtt.content && typeof newAtt.content === 'object' && !(newAtt.content instanceof Buffer)) {\n\t\t\t\t\t\t\t// Convert MongoDB's Binary data to Buffer\n\t\t\t\t\t\t\tif (newAtt.content._bsontype === 'Binary' && newAtt.content.sub_type === 0) {\n\t\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content.buffer);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t// Handle other types if necessary\n\t\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Handle attachments stored as Base64 strings\n\t\t\t\t\t\telse if (typeof newAtt.content === 'string' && newAtt.encoding === 'base64') {\n\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content, 'base64');\n\t\t\t\t\t\t\tdelete newAtt.encoding;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Ensure the content is a Buffer\n\t\t\t\t\t\telse if (typeof newAtt.content === 'string') {\n\t\t\t\t\t\t\tnewAtt.content = Buffer.from(newAtt.content);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn newAtt;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\n\t\t\t\t// Send the email\n\t\t\t\tthis._mailer.sendMail(mailOptions, async err => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tconsole.error('Failed to send email:', err);\n\t\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\t\t\t\terror: typeof err === 'string' ? err : this.safeStringify(err),\n\t\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (emailHistory.email === 'dev@resolveio.com') {\n\t\t\t\t\t\t\t\tawait EmailHistories.deleteOne({ _id: emailHistory._id });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\t\t\tstatus: 'completed',\n\t\t\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\tconsole.error('Error in sendMail callback:', error);\n\t\t\t\t\t\tawait EmailHistories.updateOne(\n\t\t\t\t\t\t\t{ _id: emailHistory._id },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\t\t\terror: typeof error === 'string' ? error : this.safeStringify(error),\n\t\t\t\t\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} \n\t\t\t\t});\n\t\n\t\t\t\t// Wait for at least one second before sending the next email\n\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 1000));\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.error('Error processing email queue:', err);\n\t\t}\n\t\tfinally {\n\t\t\tthis.isEmailProcessing = false;\n\t\t\t// Check if new emails arrived while processing\n\t\t\tif (this.emailQueue.size > 0) {\n\t\t\t\tawait this.tryProcessEmail();\n\t\t\t}\n\t\t}\n\t}\n\n\tsafeStringify(obj)\n\t{\n\t\ttry\n\t\t{\n\t\t\treturn JSON.stringify(obj, this.getCircularReplacer());\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\treturn `Error in JSON stringifying: ${e.message}`;\n\t\t}\n\t}\n\n\tgetCircularReplacer()\n\t{\n\t\tconst seen = new WeakSet();\n\t\treturn (key, value) =>\n\t\t{\n\t\t\tif (typeof value === \"object\" && value !== null)\n\t\t\t{\n\t\t\t\tif (seen.has(value))\n\t\t\t\t{\n\t\t\t\t\treturn \"[Circular]\";\n\t\t\t\t}\n\t\t\t\tseen.add(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t};\n\t}\n\n\tpublic async sendEmail(\n\t\tsendTo: string,\n\t\tsubject: string,\n\t\ttext?: string,\n\t\thtml?: string,\n\t\tattachments?: any[],\n\t\tsend_from?: string,\n\t\treply_to?: string,\n\t\tlocal_override = false\n\t) {\n\t\t// Modify sendTo in development environments\n\t\tif (\n\t\t\t(ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/dev\\./) ||\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\\/\\/www\\.dev\\./) ||\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200') &&\n\t\t\t!sendTo.match(/\\@resolveio\\.com/)\n\t\t) {\n\t\t\tsendTo = 'dev@resolveio.com';\n\t\t}\n\n\t\tif (sendTo) {\n\t\t\tif (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200' ||\n\t\t\t\tlocal_override\n\t\t\t) {\n\t\t\t\tif (!attachments) {\n\t\t\t\t\tattachments = [];\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(attachments)) {\n\t\t\t\t\tattachments = [attachments];\n\t\t\t\t}\n\n\t\t\t\t// Process attachments before saving\n\t\t\t\tattachments = attachments.map((att) => {\n\t\t\t\t\tconst newAtt = { ...att };\n\t\t\t\t\tif (Buffer.isBuffer(newAtt.content)) {\n\t\t\t\t\t\tnewAtt.content = newAtt.content.toString('base64');\n\t\t\t\t\t\tnewAtt.encoding = 'base64';\n\t\t\t\t\t}\n\t\t\t\t\treturn newAtt;\n\t\t\t\t});\n\n\t\t\t\t// Queue the email in MongoDB\n\t\t\t\tconst emailHistory: EmailHistoryModel = {\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t__v: 0,\n\t\t\t\t\tdate: new Date(),\n\t\t\t\t\tid_user: this['id_user'] || '',\n\t\t\t\t\tuser: this['user'] || '',\n\t\t\t\t\temail: sendTo,\n\t\t\t\t\tsubject: subject || '',\n\t\t\t\t\ttext: text || '',\n\t\t\t\t\thtml: html || '',\n\t\t\t\t\tattachments: attachments || [],\n\t\t\t\t\tsend_from: send_from || '',\n\t\t\t\t\treply_to: reply_to || '',\n\t\t\t\t\tstatus: 'pending',\n\t\t\t\t\terror: ''\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\tlet history = await EmailHistories.insertOne(emailHistory);\n\t\t\t\t\treturn history;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.error('Failed to queue email:', err);\n\t\t\t\t\terr.message = `Failed to queue email: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconsole.log(\n\t\t\t\t\t'Send email',\n\t\t\t\t\tsendTo,\n\t\t\t\t\tsubject,\n\t\t\t\t\ttext,\n\t\t\t\t\thtml,\n\t\t\t\t\tattachments,\n\t\t\t\t\tsend_from\n\t\t\t\t);\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic getAWS(): AWS {\n\t\treturn this._aws;\n\t}\n\n\tpublic readFile(fileName) {\n\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\ttry {\n\t\t\t\treturn fs.readFileSync(path.join(__dirname, ('../private/' + fileName)), 'utf-8');\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\terr.message = `Error in readFile: ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (fs.existsSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)))) {\n\t\t\t\ttry {\n\t\t\t\t\treturn fs.readFileSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)), 'utf-8');\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in readFile: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error ('Error in readFile: File Not Found');\n\t}\n\n\tpublic readImage(fileName) {\n\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\ttry {\n\t\t\t\treturn fs.readFileSync(path.join(__dirname, ('../private/' + fileName)), 'base64');\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\terr.message = `Error in readImage: ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (fs.existsSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)))) {\n\t\t\t\ttry {\n\t\t\t\t\treturn fs.readFileSync(path.join(ResolveIOServer.getClientDir(), ('./private/' + fileName)), 'base64');\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in readImage: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error ('Error in readImage: File Not Found');\n\t}\n\n\tpublic getEnableDebug() {\n\t\treturn this._enableDebug;\n\t}\n}"]}
|