@resolveio/server-lib 20.7.119 → 20.7.121
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 +1023 -1
- package/managers/method.manager.js.map +1 -1
- package/managers/mongo.manager.js +4223 -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,2 +1,1024 @@
|
|
|
1
|
-
"use strict";var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)},__awaiter=this&&this.__awaiter||function(e,o,n,s){return new(n=n||Promise)(function(r,t){function fulfilled(e){try{step(s.next(e))}catch(e){t(e)}}function rejected(e){try{step(s.throw(e))}catch(e){t(e)}}function step(e){var t;e.done?r(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(fulfilled,rejected)}step((s=s.apply(e,o||[])).next())})},__generator=this&&this.__generator||function(o,n){var s,i,a,c={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(r){return function(e){var t=[r,e];if(s)throw new TypeError("Generator is already executing.");for(;c=l&&t[l=0]?0:c;)try{if(s=1,i&&(a=2&t[0]?i.return:t[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,t[1])).done)return a;switch(i=0,(t=a?[2&t[0],a.value]:t)[0]){case 0:case 1:a=t;break;case 4:return c.label++,{value:t[1],done:!1};case 5:c.label++,i=t[1],t=[0];continue;case 7:t=c.ops.pop(),c.trys.pop();continue;default:if(!(a=0<(a=c.trys).length&&a[a.length-1])&&(6===t[0]||2===t[0])){c=0;continue}if(3===t[0]&&(!a||t[1]>a[0]&&t[1]<a[3]))c.label=t[1];else if(6===t[0]&&c.label<a[1])c.label=a[1],a=t;else{if(!(a&&c.label<a[2])){a[2]&&c.ops.pop(),c.trys.pop();continue}c.label=a[2],c.ops.push(t)}}t=n.call(o,c)}catch(e){t=[6,e],i=0}finally{s=a=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}}},__read=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var o,n,s=r.call(e),i=[];try{for(;(void 0===t||0<t--)&&!(o=s.next()).done;)i.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return i},__spreadArray=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var o,n=0,s=t.length;n<s;n++)!o&&n in t||((o=o||Array.prototype.slice.call(t,0,n))[n]=t[n]);return e.concat(o||Array.prototype.slice.call(t))},__values=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],o=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return{value:(e=e&&o>=e.length?void 0:e)&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},client_s3_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.MethodManager=exports.AWS=void 0,require("@aws-sdk/client-s3")),fs=require("fs"),nodemailer=require("nodemailer"),sesTransport=require("nodemailer-ses-transport"),path=require("path"),email_history_collection_1=require("../collections/email-history.collection"),flag_collection_1=require("../collections/flag.collection"),log_collection_1=require("../collections/log.collection"),cron_jobs_1=require("../fixtures/cron-jobs"),init_1=require("../fixtures/init"),accounts_1=require("../methods/accounts"),aws_1=require("../methods/aws"),collections_1=require("../methods/collections"),counters_1=require("../methods/counters"),cron_jobs_2=require("../methods/cron-jobs"),flag_updates_1=require("../methods/flag-updates"),flags_1=require("../methods/flags"),logs_1=require("../methods/logs"),monitor_1=require("../methods/monitor"),pdf_1=require("../methods/pdf"),report_builder_1=require("../methods/report-builder"),support_1=require("../methods/support"),resolveio_server_app_1=require("../resolveio-server-app"),common_1=require("../util/common"),AWS=function(){function AWS(){this._s3=null,this._s3USEast1=null}return AWS.prototype.create=function(){var e=new AWS;return e.initialize(),e},AWS.prototype.initialize=function(){},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(){this._methods={},this._isWorkersEnabled=!1,this._isWorkerInstance=!1,this.emailQueue=new Set,this.isEmailProcessing=!1,this._debugcallMethodHits=0,this._debugCallMethodHits=0,this._debugCallMethodCronJobHits=0,this._debugSendQueueHits=0,this._enableDebug=!1,this.clientDir="",this.serverConfig=""}return MethodManager.create=function(e,t,r,o){var n=new MethodManager;return n.initialize(e,t,r,o),n},MethodManager.prototype.initialize=function(e,t,r,o){var n=this;this._websocketManager=e,this._monitorManagerFunction=t,this._isWorkersEnabled=r,this._isWorkerInstance=o,this.clientDir=resolveio_server_app_1.ResolveIOServer.getClientDir(),this.serverConfig=resolveio_server_app_1.ResolveIOServer.getServerConfig(),process.env.IS_WORKERS_ENABLED&&"false"!==process.env.IS_WORKERS_ENABLED&&("true"!==process.env.IS_WORKER_INSTANCE||"0"!==process.env.WORKER_INDEX)||process.env.NODE_APP_INSTANCE&&"0"!==process.env.NODE_APP_INSTANCE||setTimeout(function(){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return console.log(new Date,"Start Server Fixture"),[4,(0,init_1.loadServerInit)()];case 1:return e.sent(),console.log(new Date,"End Server Fixture"),[2]}})})},5e3),setImmediate(function(){return __awaiter(n,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return[4,(0,cron_jobs_1.loadServerCronJobs)()];case 1:return e.sent(),(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,flag_updates_1.loadFlagUpdatesMethods)(this),(0,report_builder_1.loadReportBuilderMethods)(this),(0,support_1.loadSupportMethods)(this),(0,monitor_1.loadMonitorMethods)(this),[4,flag_collection_1.Flags.findOne({type:"Enable Debug"})];case 2:return(t=e.sent())&&t.value?this._enableDebug=!0:this._enableDebug=!1,[2]}})})}),this._aws=new AWS,resolveio_server_app_1.ResolveIOServer.getSESMail()?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:resolveio_server_app_1.ResolveIOServer.getServerConfig().MAIL_HOST,port:resolveio_server_app_1.ResolveIOServer.getServerConfig().MAIL_PORT,secure:!1,auth:{user:resolveio_server_app_1.ResolveIOServer.getServerConfig().MAIL_USERNAME,pass:resolveio_server_app_1.ResolveIOServer.getServerConfig().MAIL_PASSWORD},tls:{ciphers:"SSLv3"}}),setInterval(function(){return __awaiter(n,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return[4,flag_collection_1.Flags.findOne({type:"Enable Debug"})];case 1:return(t=e.sent())&&t.value?this._enableDebug=!0:this._enableDebug=!1,this._enableDebug&&(console.log(new Date,"Method Manager","Send Queue Hits",this._debugSendQueueHits),console.log(new Date,"Method Manager","Call Method Internal Hits",this._debugcallMethodHits),console.log(new Date,"Method Manager","Call Method Hits",this._debugCallMethodHits),console.log(new Date,"Method Manager","Call Method Cron Hits",this._debugCallMethodCronJobHits)),this._debugcallMethodHits=0,this._debugCallMethodHits=0,this._debugCallMethodCronJobHits=0,this._debugSendQueueHits=0,[2]}})})},6e4),this._isWorkersEnabled&&!this._isWorkerInstance||setImmediate(function(){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,this.setupEmailWatcher()];case 1:return e.sent(),[2]}})})})},MethodManager.prototype.getMethod=function(e){return this._methods[e]},MethodManager.prototype.methods=function(e){this._methods=Object.assign(this._methods,e)},MethodManager.prototype.callMethodCron=function(c){for(var l=[],e=1;e<arguments.length;e++)l[e-1]=arguments[e];return __awaiter(this,void 0,void 0,function(){var t,r,o,n,s,i,a;return __generator(this,function(e){switch(e.label){case 0:return(this._debugCallMethodCronJobHits+=1,this._methods[c])?[3,2]:(console.log("No Method: "+c),[4,this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,"No Method: "+c)]);case 1:throw e.sent(),new Error("No Method: "+c);case 2:return!(1<l.length||l[0])||this._methods[c].skipValidation?[3,10]:this._methods[c].check?[3,4]:(console.error(new Date,"No Check Function For Cron Method "+c),[4,this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,"No Check Function For Cron Method "+c)]);case 3:throw e.sent(),new Error("No Check Function For Cron Method "+c);case 4:return this._methods[c].check._schema?[3,6]:(console.error(new Date,"No Check Schema For Cron Method "+c),[4,this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,"No Check Function For Cron Method "+c)]);case 5:throw e.sent(),new Error("No Check Schema For Cron Method "+c);case 6:for(t={},a=Object.keys(this._methods[c].check._schema),r=a.filter(function(e){return!e.includes(".")}),o=0;o<l.length;o++)t[r[o]]=l[o];e.label=7;case 7:return e.trys.push([7,8,,10]),this._methods[c].check.validate(t),[3,10];case 8:return n=e.sent(),console.error(new Date,"Error in Cron Method Check ("+c+")",n),[4,this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,"Match Error On Cron Method "+c+"\n\nData Being Checked\n"+JSON.stringify(t,null,2)+"\n\nErrors\n"+JSON.stringify(n,null,2))];case 9:throw e.sent(),n.message="".concat((new Date).toISOString()," - Error in Cron Method Check (").concat(c,"): ").concat(n.message),n;case 10:s=this._monitorManagerFunction.startMonitorFunction("Cron Method",c,"","",l),e.label=11;case 11:return e.trys.push([11,13,15,17]),[4,(a=this._methods[c].function).call.apply(a,__spreadArray([Object.assign({},this,MethodManager.prototype,{id_user:"",user:"",id_ws:""})],__read(l),!1))];case 12:return[2,e.sent()];case 13:return i=e.sent(),[4,this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,"Error Detected During Cron Method "+c+" - (callMethodCron)\n\nData \n"+JSON.stringify(l,null,2)+"\n\nErrors\n"+JSON.stringify(i,null,2))];case 14:throw e.sent(),i.message="".concat((new Date).toISOString()," - Error in Cron Method (").concat(c,"): ").concat(i.message),i;case 15:return[4,this._monitorManagerFunction.finishMonitorFunction(s)];case 16:return e.sent(),[7];case 17:return[2]}})})},MethodManager.prototype.callMethod=function(l){for(var u=[],e=1;e<arguments.length;e++)u[e-1]=arguments[e];return __awaiter(this,void 0,void 0,function(){var o,n,s,t,r,i,a,c=this;return __generator(this,function(e){switch(e.label){case 0:if(this._debugcallMethodHits+=1,!(o=this.getMethod(l)))throw console.log("No Method: "+l),new Error("No Method: ".concat(l));if((1<u.length||u[0]&&"function"!=typeof u[0])&&!o.skipValidation){if(!o.check)throw console.error(new Date,"No Check Function For Method "+l),new Error("No Check Function For Method: ".concat(l));if(!o.check._schema)throw console.error(new Date,"No Check Schema For Method "+l),new Error("No Check Schema For Method: ".concat(l))}return"insertSubscriptionLog"===l||"getDataURIfromURL"===l||"processAirdropDistribution"===l||"incCounter"===l||"supportCreateBillingUser"===l||"countCollectionWithQuery"===l?[3,4]:"https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,1]:(resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),createdAt:new Date,type:"callMethod",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify([u]))<1e6?JSON.stringify([u],null,2):"Too Big",methodName:l,id_user:this.id_user||"",user:this.user||"",messageId:0,route:""}}),[3,3]);case 1:return[4,log_collection_1.Logs.insertOne({_id:(0,common_1.objectIdHexString)(),type:"callMethod",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify([u]))<1e6?JSON.stringify([u],null,2):"Too Big",method:l,id_user:this.id_user||"",user:this.user||"",messageId:0,route:"",client:"ResolveIO",instance:"backend.resolveio.com",instance_index:process.env.NODE_APP_INSTANCE||""})];case 2:e.sent(),e.label=3;case 3:e.label=4;case 4:return(n="function"==typeof u[u.length-1]?u.slice(0,-1):u,a=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),o.bypassSession||a||["insertErrorLog","countWithQuery","sendEmail"].includes(l)||l.startsWith("monitor-")||l.startsWith("log"))?[3,5]:(s=null,[2,resolveio_server_app_1.ResolveIOServer.getMongoManager().oneTimeTransaction(function(){return __awaiter(c,void 0,void 0,function(){var t,r;return __generator(this,function(e){switch(e.label){case 0:s=this._monitorManagerFunction.startMonitorFunction("Method",l,this.user||"","",n),e.label=1;case 1:return e.trys.push([1,3,7,9]),[4,(r=o.function).call.apply(r,__spreadArray([Object.assign({},this,MethodManager.prototype)],__read(n),!1))];case 2:return r=e.sent(),u[u.length-1]&&"function"==typeof u[u.length-1]&&u[u.length-1](null,r),[2,r];case 3:if(112===(t=e.sent()).code||"WriteConflict"===t.codeName||251===t.code||"NoSuchTransaction"===t.codeName)throw t;return console.log(JSON.stringify([new Date,"Error Method Manager - Run Method - New Session",l,{code:t.code,codeName:t.codeName,message:t.message,stack:t.stack}],null,2)),[4,this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,"Error Detected During Method "+l+" - (callMethod)\n\nData \n"+JSON.stringify(u,null,2)+"\n\nErrors\n"+JSON.stringify(t,null,2))];case 4:return e.sent(),t.message="".concat((new Date).toISOString()," - Error in Method With Session (").concat(l,") - New Session: ").concat(t.message),u[u.length-1]&&"function"==typeof u[u.length-1]&&u[u.length-1](t,null),process.env.IS_WORKER_INSTANCE?[3,6]:[4,this.callMethod("insertErrorLog","Error in Method: ".concat(l," - ").concat(JSON.stringify(u,null,2)))];case 5:e.sent(),e.label=6;case 6:throw t;case 7:return[4,this._monitorManagerFunction.finishMonitorFunction(s)];case 8:return e.sent(),[7];case 9:return[2]}})})})]);case 5:t=this._monitorManagerFunction.startMonitorFunction("Method",l,this.user||"","",n),e.label=6;case 6:return e.trys.push([6,8,12,14]),[4,(a=o.function).call.apply(a,__spreadArray([Object.assign({},this,MethodManager.prototype)],__read(n),!1))];case 7:return r=e.sent(),u[u.length-1]&&"function"==typeof u[u.length-1]&&u[u.length-1](null,r),[2,r];case 8:if(112===(i=e.sent()).code||"WriteConflict"===i.codeName)throw i;return console.log(JSON.stringify([new Date,"Error Method Manager - Run Method - Existing Session",l,{code:i.code,codeName:i.codeName,message:i.message,stack:i.stack}],null,2)),[4,this.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,"Error Detected During Method "+l+" - (callMethod)\n\nData \n"+JSON.stringify(u,null,2)+"\n\nErrors\n"+JSON.stringify(i,null,2))];case 9:return e.sent(),i.message="".concat((new Date).toISOString()," - Error in Method (").concat(l,") - Existing Session: ").concat(i.message),u[u.length-1]&&"function"==typeof u[u.length-1]&&u[u.length-1](i,null),process.env.IS_WORKER_INSTANCE?[3,11]:[4,this.callMethod("insertErrorLog","Error in Method: ".concat(l," - ").concat(JSON.stringify(u,null,2)))];case 10:e.sent(),e.label=11;case 11:throw i;case 12:return[4,this._monitorManagerFunction.finishMonitorFunction(t)];case 13:return e.sent(),[7];case 14:return[2]}})})},MethodManager.prototype.setupEmailWatcher=function(){return __awaiter(this,void 0,void 0,function(){var r,o=this;return __generator(this,function(e){switch(e.label){case 0:return(r=email_history_collection_1.EmailHistories.watchCollection([])).on("change",function(r){return __awaiter(o,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return"insert"===r.operationType&&r.fullDocument&&"pending"===r.fullDocument.status?(this.emailQueue.add(r.fullDocument._id.toString()),[4,this.tryProcessEmail()]):[3,2];case 1:return e.sent(),[3,3];case 2:"update"!==r.operationType&&"replace"!==r.operationType||(t=r.fullDocument)&&"pending"!==t.status&&this.emailQueue.has(t._id.toString())&&this.emailQueue.delete(t._id.toString()),e.label=3;case 3:return[2]}})})}).on("error",function(t){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return console.error("Email history changestream error",t),[4,r.close()];case 1:return e.sent(),[2]}})})}).on("close",function(){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,this.setupEmailWatcher()];case 1:return e.sent(),[2]}})})}),[4,this.loadPendingEmails()];case 1:return e.sent(),[2]}})})},MethodManager.prototype.loadPendingEmails=function(){return __awaiter(this,void 0,void 0,function(){var t,r,o,n,s,i;return __generator(this,function(e){switch(e.label){case 0:return[4,email_history_collection_1.EmailHistories.find({status:"pending"},{sort:{_id:1}})];case 1:t=e.sent();try{for(r=__values(t),o=r.next();!o.done;o=r.next())n=o.value,this.emailQueue.add(n._id.toString())}catch(e){s={error:e}}finally{try{o&&!o.done&&(i=r.return)&&i.call(r)}finally{if(s)throw s.error}}return[4,this.tryProcessEmail()];case 2:return e.sent(),[2]}})})},MethodManager.prototype.tryProcessEmail=function(){return __awaiter(this,void 0,void 0,function(){var t,u,r,h=this;return __generator(this,function(e){switch(e.label){case 0:if(this.isEmailProcessing||0===this.emailQueue.size)return[2];this.isEmailProcessing=!0,e.label=1;case 1:e.trys.push([1,5,6,9]),t=function(){var o,t,r,n,s,i,a,c,l;return __generator(this,function(e){switch(e.label){case 0:return s=u.emailQueue.values().next().value,u.emailQueue.delete(s),[4,email_history_collection_1.EmailHistories.findOneAndUpdate({_id:s,status:"pending"},{$set:{status:"processing",processingAt:new Date}})];case 1:if(!(o=e.sent()))return[2,"continue"];if(!(o.attachments&&0<o.attachments.length))return[3,14];e.label=2;case 2:e.trys.push([2,12,,14]),e.label=3;case 3:e.trys.push([3,9,10,11]),c=void 0,t=__values(o.attachments),r=t.next(),e.label=4;case 4:return r.done?[3,8]:(n=r.value).path&&n.path.startsWith("http")?[4,fetch(n.path)]:[3,7];case 5:if((s=e.sent()).ok)return[4,s.arrayBuffer()];throw new Error("Failed to fetch attachment: ".concat(n.path));case 6:i=e.sent(),i=Buffer.from(i),i.length<=20971520&&(n.content=i,delete n.path),e.label=7;case 7:return r=t.next(),[3,4];case 8:return[3,11];case 9:return i=e.sent(),c={error:i},[3,11];case 10:try{r&&!r.done&&(l=t.return)&&l.call(t)}finally{if(c)throw c.error}return[7];case 11:return[3,14];case 12:return a=e.sent(),console.error("Failed to fetch attachment:",a),[4,email_history_collection_1.EmailHistories.updateOne({_id:o._id},{$set:{status:"failed",error:"string"==typeof a?a:u.safeStringify(a),completedAt:new Date}})];case 13:return e.sent(),[2,"continue"];case 14:return(a={replyTo:o.reply_to||resolveio_server_app_1.ResolveIOServer.getServerConfig().MAIL_REPLY_TO||void 0,from:o.send_from||resolveio_server_app_1.ResolveIOServer.getServerConfig().MAIL_FROM,to:o.email,subject:(resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL.match(/https:\/\/dev\./)||resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL.match(/https:\/\/www\.dev\./)?"(DEV SERVER) - ":"")+o.subject,text:"string"==typeof o.text?o.text:"",html:"string"==typeof o.html?o.html:"",attachments:o.attachments||[]}).attachments&&0<a.attachments.length&&(a.attachments=a.attachments.map(function(e){e=__assign({},e);return!e.content||"object"!=typeof e.content||e.content instanceof Buffer?"string"==typeof e.content&&"base64"===e.encoding?(e.content=Buffer.from(e.content,"base64"),delete e.encoding):"string"==typeof e.content&&(e.content=Buffer.from(e.content)):"Binary"===e.content._bsontype&&0===e.content.sub_type?e.content=Buffer.from(e.content.buffer):e.content=Buffer.from(e.content),e})),u._mailer.sendMail(a,function(r){return __awaiter(h,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return(e.trys.push([0,7,,9]),r)?(console.error("Failed to send email:",r),[4,email_history_collection_1.EmailHistories.updateOne({_id:o._id},{$set:{status:"failed",error:"string"==typeof r?r:this.safeStringify(r),completedAt:new Date}})]):[3,2];case 1:return e.sent(),[3,6];case 2:return"dev@resolveio.com"!==o.email?[3,4]:[4,email_history_collection_1.EmailHistories.deleteOne({_id:o._id})];case 3:return e.sent(),[3,6];case 4:return[4,email_history_collection_1.EmailHistories.updateOne({_id:o._id},{$set:{status:"completed",completedAt:new Date}})];case 5:e.sent(),e.label=6;case 6:return[3,9];case 7:return t=e.sent(),console.error("Error in sendMail callback:",t),[4,email_history_collection_1.EmailHistories.updateOne({_id:o._id},{$set:{status:"failed",error:"string"==typeof t?t:this.safeStringify(t),completedAt:new Date}})];case 8:return e.sent(),[3,9];case 9:return[2]}})})}),[4,new Promise(function(e){return setTimeout(e,1e3)})];case 15:return e.sent(),[2]}})},u=this,e.label=2;case 2:return 0<this.emailQueue.size?[5,t()]:[3,4];case 3:return e.sent(),[3,2];case 4:return[3,9];case 5:return r=e.sent(),console.error("Error processing email queue:",r),[3,9];case 6:return(this.isEmailProcessing=!1,0<this.emailQueue.size)?[4,this.tryProcessEmail()]:[3,8];case 7:e.sent(),e.label=8;case 8:return[7];case 9:return[2]}})})},MethodManager.prototype.safeStringify=function(e){try{return JSON.stringify(e,this.getCircularReplacer())}catch(e){return"Error in JSON stringifying: ".concat(e.message)}},MethodManager.prototype.getCircularReplacer=function(){var r=new WeakSet;return function(e,t){if("object"==typeof t&&null!==t){if(r.has(t))return"[Circular]";r.add(t)}return t}},MethodManager.prototype.sendEmail=function(o,n,s,i,a,c,l,u){return void 0===u&&(u=!1),__awaiter(this,void 0,void 0,function(){var t,r;return __generator(this,function(e){switch(e.label){case 0:if(!(o=!resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL.match(/https:\/\/dev\./)&&!resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL.match(/https:\/\/www\.dev\./)&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||o.match(/\@resolveio\.com/)?o:"dev@resolveio.com"))return[3,7];if("http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&!u)return[3,5];a=a||[],a=(a=Array.isArray(a)?a:[a]).map(function(e){e=__assign({},e);return Buffer.isBuffer(e.content)&&(e.content=e.content.toString("base64"),e.encoding="base64"),e}),t={_id:(0,common_1.objectIdHexString)(),__v:0,date:new Date,id_user:this.id_user||"",user:this.user||"",email:o,subject:n||"",text:s||"",html:i||"",attachments:a||[],send_from:c||"",reply_to:l||"",status:"pending",error:""},e.label=1;case 1:return e.trys.push([1,3,,4]),[4,email_history_collection_1.EmailHistories.insertOne(t)];case 2:return[2,e.sent()];case 3:throw r=e.sent(),console.error("Failed to queue email:",r),r.message="Failed to queue email: ".concat(r.message),r;case 4:return[3,6];case 5:return console.log("Send email",o,n,s,i,a,c),[2,!0];case 6:return[3,8];case 7:return[2,!0];case 8:return[2]}})})},MethodManager.prototype.getAWS=function(){return this._aws},MethodManager.prototype.readFile=function(e){if(fs.existsSync(path.join(__dirname,"../private/"+e)))try{return fs.readFileSync(path.join(__dirname,"../private/"+e),"utf-8")}catch(e){throw e.message="Error in readFile: ".concat(e.message),e}else if(fs.existsSync(path.join(resolveio_server_app_1.ResolveIOServer.getClientDir(),"./private/"+e)))try{return fs.readFileSync(path.join(resolveio_server_app_1.ResolveIOServer.getClientDir(),"./private/"+e),"utf-8")}catch(e){throw e.message="Error in readFile: ".concat(e.message),e}throw new Error("Error in readFile: File Not Found")},MethodManager.prototype.readImage=function(e){if(fs.existsSync(path.join(__dirname,"../private/"+e)))try{return fs.readFileSync(path.join(__dirname,"../private/"+e),"base64")}catch(e){throw e.message="Error in readImage: ".concat(e.message),e}else if(fs.existsSync(path.join(resolveio_server_app_1.ResolveIOServer.getClientDir(),"./private/"+e)))try{return fs.readFileSync(path.join(resolveio_server_app_1.ResolveIOServer.getClientDir(),"./private/"+e),"base64")}catch(e){throw e.message="Error in readImage: ".concat(e.message),e}throw new Error("Error in readImage: File Not Found")},MethodManager.prototype.getEnableDebug=function(){return this._enableDebug},MethodManager}());exports.MethodManager=MethodManager;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
50
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
51
|
+
if (!m) return o;
|
|
52
|
+
var i = m.call(o), r, ar = [], e;
|
|
53
|
+
try {
|
|
54
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
55
|
+
}
|
|
56
|
+
catch (error) { e = { error: error }; }
|
|
57
|
+
finally {
|
|
58
|
+
try {
|
|
59
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
60
|
+
}
|
|
61
|
+
finally { if (e) throw e.error; }
|
|
62
|
+
}
|
|
63
|
+
return ar;
|
|
64
|
+
};
|
|
65
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
66
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
67
|
+
if (ar || !(i in from)) {
|
|
68
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
69
|
+
ar[i] = from[i];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
73
|
+
};
|
|
74
|
+
var __values = (this && this.__values) || function(o) {
|
|
75
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
76
|
+
if (m) return m.call(o);
|
|
77
|
+
if (o && typeof o.length === "number") return {
|
|
78
|
+
next: function () {
|
|
79
|
+
if (o && i >= o.length) o = void 0;
|
|
80
|
+
return { value: o && o[i++], done: !o };
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
84
|
+
};
|
|
85
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
86
|
+
exports.MethodManager = exports.AWS = void 0;
|
|
87
|
+
var client_s3_1 = require("@aws-sdk/client-s3");
|
|
88
|
+
var fs = require("fs");
|
|
89
|
+
var nodemailer = require("nodemailer");
|
|
90
|
+
var sesTransport = require("nodemailer-ses-transport");
|
|
91
|
+
var path = require("path");
|
|
92
|
+
var email_history_collection_1 = require("../collections/email-history.collection");
|
|
93
|
+
var flag_collection_1 = require("../collections/flag.collection");
|
|
94
|
+
var log_collection_1 = require("../collections/log.collection");
|
|
95
|
+
var cron_jobs_1 = require("../fixtures/cron-jobs");
|
|
96
|
+
var init_1 = require("../fixtures/init");
|
|
97
|
+
var accounts_1 = require("../methods/accounts");
|
|
98
|
+
var aws_1 = require("../methods/aws");
|
|
99
|
+
var collections_1 = require("../methods/collections");
|
|
100
|
+
var counters_1 = require("../methods/counters");
|
|
101
|
+
var cron_jobs_2 = require("../methods/cron-jobs");
|
|
102
|
+
var flag_updates_1 = require("../methods/flag-updates");
|
|
103
|
+
var flags_1 = require("../methods/flags");
|
|
104
|
+
var logs_1 = require("../methods/logs");
|
|
105
|
+
var monitor_1 = require("../methods/monitor");
|
|
106
|
+
var pdf_1 = require("../methods/pdf");
|
|
107
|
+
var report_builder_1 = require("../methods/report-builder");
|
|
108
|
+
var support_1 = require("../methods/support");
|
|
109
|
+
var resolveio_server_app_1 = require("../resolveio-server-app");
|
|
110
|
+
var common_1 = require("../util/common");
|
|
111
|
+
var AWS = /** @class */ (function () {
|
|
112
|
+
function AWS() {
|
|
113
|
+
this._s3 = null;
|
|
114
|
+
this._s3USEast1 = null;
|
|
115
|
+
}
|
|
116
|
+
AWS.prototype.create = function () {
|
|
117
|
+
var aws = new AWS();
|
|
118
|
+
aws.initialize();
|
|
119
|
+
return aws;
|
|
120
|
+
};
|
|
121
|
+
AWS.prototype.initialize = function () {
|
|
122
|
+
};
|
|
123
|
+
AWS.prototype.s3 = function () {
|
|
124
|
+
if (this._s3) {
|
|
125
|
+
return this._s3;
|
|
126
|
+
}
|
|
127
|
+
this._s3 = new client_s3_1.S3({
|
|
128
|
+
credentials: {
|
|
129
|
+
accessKeyId: process.env.AWS_ACCESS_KEY,
|
|
130
|
+
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
|
|
131
|
+
},
|
|
132
|
+
region: process.env.AWS_REGION,
|
|
133
|
+
apiVersion: '2006-03-01'
|
|
134
|
+
});
|
|
135
|
+
return this._s3;
|
|
136
|
+
};
|
|
137
|
+
AWS.prototype.s3USEast1 = function () {
|
|
138
|
+
if (process.env.AWS_REGION === 'us-east-1') {
|
|
139
|
+
return this.s3();
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
if (this._s3USEast1) {
|
|
143
|
+
return this._s3USEast1;
|
|
144
|
+
}
|
|
145
|
+
this._s3USEast1 = new client_s3_1.S3({
|
|
146
|
+
credentials: {
|
|
147
|
+
accessKeyId: process.env.AWS_ACCESS_KEY,
|
|
148
|
+
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
|
|
149
|
+
},
|
|
150
|
+
region: 'us-east-1',
|
|
151
|
+
apiVersion: '2006-03-01'
|
|
152
|
+
});
|
|
153
|
+
return this._s3USEast1;
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
return AWS;
|
|
157
|
+
}());
|
|
158
|
+
exports.AWS = AWS;
|
|
159
|
+
var MethodManager = /** @class */ (function () {
|
|
160
|
+
function MethodManager() {
|
|
161
|
+
this._methods = {};
|
|
162
|
+
this._isWorkersEnabled = false;
|
|
163
|
+
this._isWorkerInstance = false;
|
|
164
|
+
this.emailQueue = new Set(); // Set to store pending email IDs
|
|
165
|
+
this.isEmailProcessing = false;
|
|
166
|
+
this._debugcallMethodHits = 0;
|
|
167
|
+
this._debugCallMethodHits = 0;
|
|
168
|
+
this._debugCallMethodCronJobHits = 0;
|
|
169
|
+
this._debugSendQueueHits = 0;
|
|
170
|
+
this._enableDebug = false;
|
|
171
|
+
this.clientDir = '';
|
|
172
|
+
this.serverConfig = '';
|
|
173
|
+
}
|
|
174
|
+
MethodManager.create = function (websocketManager, monitorManagerFunction, isWorkersEnabled, isWorkerInstance) {
|
|
175
|
+
var methodManager = new MethodManager();
|
|
176
|
+
methodManager.initialize(websocketManager, monitorManagerFunction, isWorkersEnabled, isWorkerInstance);
|
|
177
|
+
return methodManager;
|
|
178
|
+
};
|
|
179
|
+
MethodManager.prototype.initialize = function (websocketManager, monitorManagerFunction, isWorkersEnabled, isWorkerInstance) {
|
|
180
|
+
var _this = this;
|
|
181
|
+
this._websocketManager = websocketManager;
|
|
182
|
+
this._monitorManagerFunction = monitorManagerFunction;
|
|
183
|
+
this._isWorkersEnabled = isWorkersEnabled;
|
|
184
|
+
this._isWorkerInstance = isWorkerInstance;
|
|
185
|
+
this.clientDir = resolveio_server_app_1.ResolveIOServer.getClientDir();
|
|
186
|
+
this.serverConfig = resolveio_server_app_1.ResolveIOServer.getServerConfig();
|
|
187
|
+
// Fixtures
|
|
188
|
+
if (!process.env.IS_WORKERS_ENABLED || process.env.IS_WORKERS_ENABLED === 'false' || (process.env.IS_WORKER_INSTANCE === 'true' && process.env.WORKER_INDEX === '0')) {
|
|
189
|
+
if (!process.env.NODE_APP_INSTANCE || process.env.NODE_APP_INSTANCE === '0') {
|
|
190
|
+
setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
191
|
+
return __generator(this, function (_a) {
|
|
192
|
+
switch (_a.label) {
|
|
193
|
+
case 0:
|
|
194
|
+
console.log(new Date(), 'Start Server Fixture');
|
|
195
|
+
return [4 /*yield*/, (0, init_1.loadServerInit)()];
|
|
196
|
+
case 1:
|
|
197
|
+
_a.sent();
|
|
198
|
+
console.log(new Date(), 'End Server Fixture');
|
|
199
|
+
return [2 /*return*/];
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}); }, 5000);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
setImmediate(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
206
|
+
var flag;
|
|
207
|
+
return __generator(this, function (_a) {
|
|
208
|
+
switch (_a.label) {
|
|
209
|
+
case 0:
|
|
210
|
+
// Methods
|
|
211
|
+
return [4 /*yield*/, (0, cron_jobs_1.loadServerCronJobs)()];
|
|
212
|
+
case 1:
|
|
213
|
+
// Methods
|
|
214
|
+
_a.sent();
|
|
215
|
+
(0, accounts_1.loadAccountMethods)(this);
|
|
216
|
+
(0, aws_1.loadAWSMethods)(this);
|
|
217
|
+
(0, collections_1.loadCollectionMethods)(this);
|
|
218
|
+
(0, counters_1.loadCounterMethods)(this);
|
|
219
|
+
(0, logs_1.loadLogMethods)(this);
|
|
220
|
+
(0, pdf_1.loadPDFMethods)(this);
|
|
221
|
+
(0, cron_jobs_2.loadCronJobMethods)(this);
|
|
222
|
+
(0, flags_1.loadFlagMethods)(this);
|
|
223
|
+
(0, flag_updates_1.loadFlagUpdatesMethods)(this);
|
|
224
|
+
(0, report_builder_1.loadReportBuilderMethods)(this);
|
|
225
|
+
(0, support_1.loadSupportMethods)(this);
|
|
226
|
+
(0, monitor_1.loadMonitorMethods)(this);
|
|
227
|
+
return [4 /*yield*/, flag_collection_1.Flags.findOne({ type: 'Enable Debug' })];
|
|
228
|
+
case 2:
|
|
229
|
+
flag = _a.sent();
|
|
230
|
+
if (flag && flag.value) {
|
|
231
|
+
this._enableDebug = true;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
this._enableDebug = false;
|
|
235
|
+
}
|
|
236
|
+
return [2 /*return*/];
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
}); });
|
|
240
|
+
this._aws = new AWS();
|
|
241
|
+
if (resolveio_server_app_1.ResolveIOServer.getSESMail()) {
|
|
242
|
+
this._mailer = nodemailer.createTransport(sesTransport({
|
|
243
|
+
accessKeyId: process.env.AWS_ACCESS_KEY,
|
|
244
|
+
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
|
|
245
|
+
region: process.env.AWS_SES_REGION
|
|
246
|
+
}));
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
this._mailer = nodemailer.createTransport({
|
|
250
|
+
host: resolveio_server_app_1.ResolveIOServer.getServerConfig()['MAIL_HOST'],
|
|
251
|
+
port: resolveio_server_app_1.ResolveIOServer.getServerConfig()['MAIL_PORT'],
|
|
252
|
+
secure: false,
|
|
253
|
+
auth: {
|
|
254
|
+
user: resolveio_server_app_1.ResolveIOServer.getServerConfig()['MAIL_USERNAME'],
|
|
255
|
+
pass: resolveio_server_app_1.ResolveIOServer.getServerConfig()['MAIL_PASSWORD']
|
|
256
|
+
},
|
|
257
|
+
tls: {
|
|
258
|
+
ciphers: 'SSLv3'
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
263
|
+
var flag;
|
|
264
|
+
return __generator(this, function (_a) {
|
|
265
|
+
switch (_a.label) {
|
|
266
|
+
case 0: return [4 /*yield*/, flag_collection_1.Flags.findOne({ type: 'Enable Debug' })];
|
|
267
|
+
case 1:
|
|
268
|
+
flag = _a.sent();
|
|
269
|
+
if (flag && flag.value) {
|
|
270
|
+
this._enableDebug = true;
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
this._enableDebug = false;
|
|
274
|
+
}
|
|
275
|
+
if (this._enableDebug) {
|
|
276
|
+
console.log(new Date(), 'Method Manager', 'Send Queue Hits', this._debugSendQueueHits);
|
|
277
|
+
console.log(new Date(), 'Method Manager', 'Call Method Internal Hits', this._debugcallMethodHits);
|
|
278
|
+
console.log(new Date(), 'Method Manager', 'Call Method Hits', this._debugCallMethodHits);
|
|
279
|
+
console.log(new Date(), 'Method Manager', 'Call Method Cron Hits', this._debugCallMethodCronJobHits);
|
|
280
|
+
}
|
|
281
|
+
this._debugcallMethodHits = 0;
|
|
282
|
+
this._debugCallMethodHits = 0;
|
|
283
|
+
this._debugCallMethodCronJobHits = 0;
|
|
284
|
+
this._debugSendQueueHits = 0;
|
|
285
|
+
return [2 /*return*/];
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
}); }, 60000);
|
|
289
|
+
if (!this._isWorkersEnabled || this._isWorkerInstance) {
|
|
290
|
+
setImmediate(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
291
|
+
return __generator(this, function (_a) {
|
|
292
|
+
switch (_a.label) {
|
|
293
|
+
case 0: return [4 /*yield*/, this.setupEmailWatcher()];
|
|
294
|
+
case 1:
|
|
295
|
+
_a.sent();
|
|
296
|
+
return [2 /*return*/];
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
}); });
|
|
300
|
+
}
|
|
301
|
+
};
|
|
302
|
+
MethodManager.prototype.getMethod = function (methodName) {
|
|
303
|
+
return this._methods[methodName];
|
|
304
|
+
};
|
|
305
|
+
// Add methods to private methods object
|
|
306
|
+
MethodManager.prototype.methods = function (method) {
|
|
307
|
+
this._methods = Object.assign(this._methods, method);
|
|
308
|
+
};
|
|
309
|
+
MethodManager.prototype.callMethodCron = function (method) {
|
|
310
|
+
var methodData = [];
|
|
311
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
312
|
+
methodData[_i - 1] = arguments[_i];
|
|
313
|
+
}
|
|
314
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
315
|
+
var valObj, valKeys, rootKeys, i, err_1, monitor, res, err_2;
|
|
316
|
+
var _a;
|
|
317
|
+
return __generator(this, function (_b) {
|
|
318
|
+
switch (_b.label) {
|
|
319
|
+
case 0:
|
|
320
|
+
this._debugCallMethodCronJobHits += 1;
|
|
321
|
+
if (!!this._methods[method]) return [3 /*break*/, 2];
|
|
322
|
+
console.log('No Method: ' + method);
|
|
323
|
+
return [4 /*yield*/, this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'No Method: ' + method)];
|
|
324
|
+
case 1:
|
|
325
|
+
_b.sent();
|
|
326
|
+
throw new Error('No Method: ' + method);
|
|
327
|
+
case 2:
|
|
328
|
+
if (!((methodData.length > 1 || methodData[0]) && !this._methods[method].skipValidation)) return [3 /*break*/, 10];
|
|
329
|
+
if (!!this._methods[method].check) return [3 /*break*/, 4];
|
|
330
|
+
console.error(new Date(), 'No Check Function For Cron Method ' + method);
|
|
331
|
+
return [4 /*yield*/, this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'No Check Function For Cron Method ' + method)];
|
|
332
|
+
case 3:
|
|
333
|
+
_b.sent();
|
|
334
|
+
throw new Error('No Check Function For Cron Method ' + method);
|
|
335
|
+
case 4:
|
|
336
|
+
if (!!this._methods[method].check._schema) return [3 /*break*/, 6];
|
|
337
|
+
console.error(new Date(), 'No Check Schema For Cron Method ' + method);
|
|
338
|
+
return [4 /*yield*/, this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'No Check Function For Cron Method ' + method)];
|
|
339
|
+
case 5:
|
|
340
|
+
_b.sent();
|
|
341
|
+
throw new Error('No Check Schema For Cron Method ' + method);
|
|
342
|
+
case 6:
|
|
343
|
+
valObj = {};
|
|
344
|
+
valKeys = Object.keys(this._methods[method].check._schema);
|
|
345
|
+
rootKeys = valKeys.filter(function (a) { return !a.includes('.'); });
|
|
346
|
+
for (i = 0; i < methodData.length; i++) {
|
|
347
|
+
valObj[rootKeys[i]] = methodData[i];
|
|
348
|
+
}
|
|
349
|
+
_b.label = 7;
|
|
350
|
+
case 7:
|
|
351
|
+
_b.trys.push([7, 8, , 10]);
|
|
352
|
+
this._methods[method].check.validate(valObj);
|
|
353
|
+
return [3 /*break*/, 10];
|
|
354
|
+
case 8:
|
|
355
|
+
err_1 = _b.sent();
|
|
356
|
+
console.error(new Date(), 'Error in Cron Method Check (' + method + ')', err_1);
|
|
357
|
+
return [4 /*yield*/, this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + resolveio_server_app_1.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_1, null, 2))];
|
|
358
|
+
case 9:
|
|
359
|
+
_b.sent();
|
|
360
|
+
err_1.message = "".concat(new Date().toISOString(), " - Error in Cron Method Check (").concat(method, "): ").concat(err_1.message);
|
|
361
|
+
throw err_1;
|
|
362
|
+
case 10:
|
|
363
|
+
monitor = this._monitorManagerFunction.startMonitorFunction('Cron Method', method, '', '', methodData);
|
|
364
|
+
_b.label = 11;
|
|
365
|
+
case 11:
|
|
366
|
+
_b.trys.push([11, 13, 15, 17]);
|
|
367
|
+
return [4 /*yield*/, (_a = this._methods[method].function).call.apply(_a, __spreadArray([Object.assign({}, this, MethodManager.prototype, { id_user: '', user: '', id_ws: '' })], __read(methodData), false))];
|
|
368
|
+
case 12:
|
|
369
|
+
res = _b.sent();
|
|
370
|
+
return [2 /*return*/, res];
|
|
371
|
+
case 13:
|
|
372
|
+
err_2 = _b.sent();
|
|
373
|
+
return [4 /*yield*/, this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + resolveio_server_app_1.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_2, null, 2))];
|
|
374
|
+
case 14:
|
|
375
|
+
_b.sent();
|
|
376
|
+
err_2.message = "".concat(new Date().toISOString(), " - Error in Cron Method (").concat(method, "): ").concat(err_2.message);
|
|
377
|
+
throw err_2;
|
|
378
|
+
case 15: return [4 /*yield*/, this._monitorManagerFunction.finishMonitorFunction(monitor)];
|
|
379
|
+
case 16:
|
|
380
|
+
_b.sent();
|
|
381
|
+
return [7 /*endfinally*/];
|
|
382
|
+
case 17: return [2 /*return*/];
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
});
|
|
386
|
+
};
|
|
387
|
+
// Call/run method internal (No Emit on Socket)
|
|
388
|
+
MethodManager.prototype.callMethod = function (methodName) {
|
|
389
|
+
var methodData = [];
|
|
390
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
391
|
+
methodData[_i - 1] = arguments[_i];
|
|
392
|
+
}
|
|
393
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
394
|
+
var method, functionMethodData, session, monitor_2, monitor, res, err_3;
|
|
395
|
+
var _a;
|
|
396
|
+
var _this = this;
|
|
397
|
+
return __generator(this, function (_b) {
|
|
398
|
+
switch (_b.label) {
|
|
399
|
+
case 0:
|
|
400
|
+
this._debugcallMethodHits += 1;
|
|
401
|
+
method = this.getMethod(methodName);
|
|
402
|
+
if (!method) {
|
|
403
|
+
console.log('No Method: ' + methodName);
|
|
404
|
+
throw new Error("No Method: ".concat(methodName));
|
|
405
|
+
}
|
|
406
|
+
if ((methodData.length > 1 || (methodData[0] && typeof methodData[0] !== 'function')) && !method.skipValidation) {
|
|
407
|
+
if (!method.check) {
|
|
408
|
+
console.error(new Date(), 'No Check Function For Method ' + methodName);
|
|
409
|
+
throw new Error("No Check Function For Method: ".concat(methodName));
|
|
410
|
+
}
|
|
411
|
+
else if (!method.check._schema) {
|
|
412
|
+
console.error(new Date(), 'No Check Schema For Method ' + methodName);
|
|
413
|
+
throw new Error("No Check Schema For Method: ".concat(methodName));
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
if (!(methodName !== 'insertSubscriptionLog' && methodName !== 'getDataURIfromURL' && methodName !== 'processAirdropDistribution' && methodName !== 'incCounter' && methodName !== 'supportCreateBillingUser' && methodName !== 'countCollectionWithQuery')) return [3 /*break*/, 4];
|
|
417
|
+
if (!(resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'
|
|
418
|
+
&& resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200')) return [3 /*break*/, 1];
|
|
419
|
+
resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({
|
|
420
|
+
type: 'log',
|
|
421
|
+
data: {
|
|
422
|
+
_id: (0, common_1.objectIdHexString)(),
|
|
423
|
+
createdAt: new Date(),
|
|
424
|
+
type: 'callMethod',
|
|
425
|
+
collection: '',
|
|
426
|
+
id_document: '',
|
|
427
|
+
payload: (0, common_1.getBinarySize)(JSON.stringify([methodData])) < 1000000 ? JSON.stringify([methodData], null, 2) : 'Too Big',
|
|
428
|
+
methodName: methodName,
|
|
429
|
+
id_user: this['id_user'] || '',
|
|
430
|
+
user: this['user'] || '',
|
|
431
|
+
messageId: 0,
|
|
432
|
+
route: ''
|
|
433
|
+
}
|
|
434
|
+
});
|
|
435
|
+
return [3 /*break*/, 3];
|
|
436
|
+
case 1: return [4 /*yield*/, log_collection_1.Logs.insertOne({
|
|
437
|
+
_id: (0, common_1.objectIdHexString)(),
|
|
438
|
+
type: 'callMethod',
|
|
439
|
+
collection: '',
|
|
440
|
+
id_document: '',
|
|
441
|
+
payload: (0, common_1.getBinarySize)(JSON.stringify([methodData])) < 1000000 ? JSON.stringify([methodData], null, 2) : 'Too Big',
|
|
442
|
+
method: methodName,
|
|
443
|
+
id_user: this['id_user'] || '',
|
|
444
|
+
user: this['user'] || '',
|
|
445
|
+
messageId: 0,
|
|
446
|
+
route: '',
|
|
447
|
+
client: 'ResolveIO',
|
|
448
|
+
instance: 'backend.resolveio.com',
|
|
449
|
+
instance_index: process.env.NODE_APP_INSTANCE || ''
|
|
450
|
+
})];
|
|
451
|
+
case 2:
|
|
452
|
+
_b.sent();
|
|
453
|
+
_b.label = 3;
|
|
454
|
+
case 3:
|
|
455
|
+
;
|
|
456
|
+
_b.label = 4;
|
|
457
|
+
case 4:
|
|
458
|
+
functionMethodData = typeof (methodData[methodData.length - 1]) === 'function' ? methodData.slice(0, -1) : methodData;
|
|
459
|
+
session = resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession();
|
|
460
|
+
if (!(!method.bypassSession &&
|
|
461
|
+
!session &&
|
|
462
|
+
![
|
|
463
|
+
'insertErrorLog',
|
|
464
|
+
'countWithQuery',
|
|
465
|
+
'sendEmail' // ALWAYS SEND SO ALWAYS HAVE RECORD - DONT ROLL BACK - BYPASS SESSION
|
|
466
|
+
].includes(methodName) &&
|
|
467
|
+
!methodName.startsWith('monitor-') &&
|
|
468
|
+
!methodName.startsWith('log'))) return [3 /*break*/, 5];
|
|
469
|
+
monitor_2 = null;
|
|
470
|
+
return [2 /*return*/, resolveio_server_app_1.ResolveIOServer.getMongoManager().oneTimeTransaction(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
471
|
+
var res, err_4;
|
|
472
|
+
var _a;
|
|
473
|
+
return __generator(this, function (_b) {
|
|
474
|
+
switch (_b.label) {
|
|
475
|
+
case 0:
|
|
476
|
+
monitor_2 = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);
|
|
477
|
+
_b.label = 1;
|
|
478
|
+
case 1:
|
|
479
|
+
_b.trys.push([1, 3, 7, 9]);
|
|
480
|
+
return [4 /*yield*/, (_a = method.function).call.apply(_a, __spreadArray([Object.assign({}, this, MethodManager.prototype)], __read(functionMethodData), false))];
|
|
481
|
+
case 2:
|
|
482
|
+
res = _b.sent();
|
|
483
|
+
if (methodData[methodData.length - 1] && typeof (methodData[methodData.length - 1]) === 'function') {
|
|
484
|
+
methodData[methodData.length - 1](null, res);
|
|
485
|
+
}
|
|
486
|
+
return [2 /*return*/, res];
|
|
487
|
+
case 3:
|
|
488
|
+
err_4 = _b.sent();
|
|
489
|
+
if (err_4.code === 112 || err_4.codeName === 'WriteConflict' || err_4.code === 251 || err_4.codeName === 'NoSuchTransaction') {
|
|
490
|
+
throw err_4; // Write error, retry
|
|
491
|
+
}
|
|
492
|
+
console.log(JSON.stringify([new Date(), 'Error Method Manager - Run Method - New Session', methodName, {
|
|
493
|
+
code: err_4.code,
|
|
494
|
+
codeName: err_4.codeName,
|
|
495
|
+
message: err_4.message,
|
|
496
|
+
stack: err_4.stack
|
|
497
|
+
}], null, 2));
|
|
498
|
+
return [4 /*yield*/, this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'Error Detected During Method ' + methodName + ' - (callMethod)\n\nData \n' + JSON.stringify(methodData, null, 2) + '\n\nErrors\n' + JSON.stringify(err_4, null, 2))];
|
|
499
|
+
case 4:
|
|
500
|
+
_b.sent();
|
|
501
|
+
err_4.message = "".concat(new Date().toISOString(), " - Error in Method With Session (").concat(methodName, ") - New Session: ").concat(err_4.message);
|
|
502
|
+
if (methodData[methodData.length - 1] && typeof (methodData[methodData.length - 1]) === 'function') {
|
|
503
|
+
methodData[methodData.length - 1](err_4, null);
|
|
504
|
+
}
|
|
505
|
+
if (!!process.env.IS_WORKER_INSTANCE) return [3 /*break*/, 6];
|
|
506
|
+
return [4 /*yield*/, this.callMethod('insertErrorLog', "Error in Method: ".concat(methodName, " - ").concat(JSON.stringify(methodData, null, 2)))];
|
|
507
|
+
case 5:
|
|
508
|
+
_b.sent();
|
|
509
|
+
_b.label = 6;
|
|
510
|
+
case 6: throw err_4;
|
|
511
|
+
case 7: return [4 /*yield*/, this._monitorManagerFunction.finishMonitorFunction(monitor_2)];
|
|
512
|
+
case 8:
|
|
513
|
+
_b.sent();
|
|
514
|
+
return [7 /*endfinally*/];
|
|
515
|
+
case 9: return [2 /*return*/];
|
|
516
|
+
}
|
|
517
|
+
});
|
|
518
|
+
}); })];
|
|
519
|
+
case 5:
|
|
520
|
+
monitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);
|
|
521
|
+
_b.label = 6;
|
|
522
|
+
case 6:
|
|
523
|
+
_b.trys.push([6, 8, 12, 14]);
|
|
524
|
+
return [4 /*yield*/, (_a = method.function).call.apply(_a, __spreadArray([Object.assign({}, this, MethodManager.prototype)], __read(functionMethodData), false))];
|
|
525
|
+
case 7:
|
|
526
|
+
res = _b.sent();
|
|
527
|
+
if (methodData[methodData.length - 1] && typeof (methodData[methodData.length - 1]) === 'function') {
|
|
528
|
+
methodData[methodData.length - 1](null, res);
|
|
529
|
+
}
|
|
530
|
+
return [2 /*return*/, res];
|
|
531
|
+
case 8:
|
|
532
|
+
err_3 = _b.sent();
|
|
533
|
+
if (err_3.code === 112 || err_3.codeName === 'WriteConflict' || err_3.code === 251 || err_3.codeName === 'NoSuchTransaction') {
|
|
534
|
+
throw err_3; // Write error, retry
|
|
535
|
+
}
|
|
536
|
+
console.log(JSON.stringify([new Date(), 'Error Method Manager - Run Method - Existing Session', methodName, {
|
|
537
|
+
code: err_3.code,
|
|
538
|
+
codeName: err_3.codeName,
|
|
539
|
+
message: err_3.message,
|
|
540
|
+
stack: err_3.stack
|
|
541
|
+
}], null, 2));
|
|
542
|
+
return [4 /*yield*/, this.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME'], 'Error Detected During Method ' + methodName + ' - (callMethod)\n\nData \n' + JSON.stringify(methodData, null, 2) + '\n\nErrors\n' + JSON.stringify(err_3, null, 2))];
|
|
543
|
+
case 9:
|
|
544
|
+
_b.sent();
|
|
545
|
+
err_3.message = "".concat(new Date().toISOString(), " - Error in Method (").concat(methodName, ") - Existing Session: ").concat(err_3.message);
|
|
546
|
+
if (methodData[methodData.length - 1] && typeof (methodData[methodData.length - 1]) === 'function') {
|
|
547
|
+
methodData[methodData.length - 1](err_3, null);
|
|
548
|
+
}
|
|
549
|
+
if (!!process.env.IS_WORKER_INSTANCE) return [3 /*break*/, 11];
|
|
550
|
+
return [4 /*yield*/, this.callMethod('insertErrorLog', "Error in Method: ".concat(methodName, " - ").concat(JSON.stringify(methodData, null, 2)))];
|
|
551
|
+
case 10:
|
|
552
|
+
_b.sent();
|
|
553
|
+
_b.label = 11;
|
|
554
|
+
case 11: throw err_3;
|
|
555
|
+
case 12: return [4 /*yield*/, this._monitorManagerFunction.finishMonitorFunction(monitor)];
|
|
556
|
+
case 13:
|
|
557
|
+
_b.sent();
|
|
558
|
+
return [7 /*endfinally*/];
|
|
559
|
+
case 14: return [2 /*return*/];
|
|
560
|
+
}
|
|
561
|
+
});
|
|
562
|
+
});
|
|
563
|
+
};
|
|
564
|
+
MethodManager.prototype.setupEmailWatcher = function () {
|
|
565
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
566
|
+
var changeStream;
|
|
567
|
+
var _this = this;
|
|
568
|
+
return __generator(this, function (_a) {
|
|
569
|
+
switch (_a.label) {
|
|
570
|
+
case 0:
|
|
571
|
+
changeStream = email_history_collection_1.EmailHistories.watchCollection([]);
|
|
572
|
+
changeStream.on('change', function (change) { return __awaiter(_this, void 0, void 0, function () {
|
|
573
|
+
var updatedEmail;
|
|
574
|
+
return __generator(this, function (_a) {
|
|
575
|
+
switch (_a.label) {
|
|
576
|
+
case 0:
|
|
577
|
+
if (!(change.operationType === 'insert' && change.fullDocument && change.fullDocument.status === 'pending')) return [3 /*break*/, 2];
|
|
578
|
+
this.emailQueue.add(change.fullDocument._id.toString());
|
|
579
|
+
return [4 /*yield*/, this.tryProcessEmail()];
|
|
580
|
+
case 1:
|
|
581
|
+
_a.sent();
|
|
582
|
+
return [3 /*break*/, 3];
|
|
583
|
+
case 2:
|
|
584
|
+
if (change.operationType === 'update' || change.operationType === 'replace') {
|
|
585
|
+
updatedEmail = change.fullDocument;
|
|
586
|
+
if (updatedEmail && updatedEmail.status !== 'pending' && this.emailQueue.has(updatedEmail._id.toString())) {
|
|
587
|
+
this.emailQueue.delete(updatedEmail._id.toString());
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
_a.label = 3;
|
|
591
|
+
case 3: return [2 /*return*/];
|
|
592
|
+
}
|
|
593
|
+
});
|
|
594
|
+
}); })
|
|
595
|
+
.on('error', function (err) { return __awaiter(_this, void 0, void 0, function () {
|
|
596
|
+
return __generator(this, function (_a) {
|
|
597
|
+
switch (_a.label) {
|
|
598
|
+
case 0:
|
|
599
|
+
console.error('Email history changestream error', err);
|
|
600
|
+
return [4 /*yield*/, changeStream.close()];
|
|
601
|
+
case 1:
|
|
602
|
+
_a.sent();
|
|
603
|
+
return [2 /*return*/];
|
|
604
|
+
}
|
|
605
|
+
});
|
|
606
|
+
}); })
|
|
607
|
+
.on('close', function () { return __awaiter(_this, void 0, void 0, function () {
|
|
608
|
+
return __generator(this, function (_a) {
|
|
609
|
+
switch (_a.label) {
|
|
610
|
+
case 0: return [4 /*yield*/, this.setupEmailWatcher()];
|
|
611
|
+
case 1:
|
|
612
|
+
_a.sent();
|
|
613
|
+
return [2 /*return*/];
|
|
614
|
+
}
|
|
615
|
+
});
|
|
616
|
+
}); });
|
|
617
|
+
return [4 /*yield*/, this.loadPendingEmails()];
|
|
618
|
+
case 1:
|
|
619
|
+
_a.sent();
|
|
620
|
+
return [2 /*return*/];
|
|
621
|
+
}
|
|
622
|
+
});
|
|
623
|
+
});
|
|
624
|
+
};
|
|
625
|
+
MethodManager.prototype.loadPendingEmails = function () {
|
|
626
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
627
|
+
var pendingEmails, pendingEmails_1, pendingEmails_1_1, email;
|
|
628
|
+
var e_1, _a;
|
|
629
|
+
return __generator(this, function (_b) {
|
|
630
|
+
switch (_b.label) {
|
|
631
|
+
case 0: return [4 /*yield*/, email_history_collection_1.EmailHistories.find({ status: 'pending' }, { sort: { _id: 1 } })];
|
|
632
|
+
case 1:
|
|
633
|
+
pendingEmails = _b.sent();
|
|
634
|
+
try {
|
|
635
|
+
for (pendingEmails_1 = __values(pendingEmails), pendingEmails_1_1 = pendingEmails_1.next(); !pendingEmails_1_1.done; pendingEmails_1_1 = pendingEmails_1.next()) {
|
|
636
|
+
email = pendingEmails_1_1.value;
|
|
637
|
+
this.emailQueue.add(email._id.toString());
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
641
|
+
finally {
|
|
642
|
+
try {
|
|
643
|
+
if (pendingEmails_1_1 && !pendingEmails_1_1.done && (_a = pendingEmails_1.return)) _a.call(pendingEmails_1);
|
|
644
|
+
}
|
|
645
|
+
finally { if (e_1) throw e_1.error; }
|
|
646
|
+
}
|
|
647
|
+
// Try to process emails
|
|
648
|
+
return [4 /*yield*/, this.tryProcessEmail()];
|
|
649
|
+
case 2:
|
|
650
|
+
// Try to process emails
|
|
651
|
+
_b.sent();
|
|
652
|
+
return [2 /*return*/];
|
|
653
|
+
}
|
|
654
|
+
});
|
|
655
|
+
});
|
|
656
|
+
};
|
|
657
|
+
MethodManager.prototype.tryProcessEmail = function () {
|
|
658
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
659
|
+
var _loop_1, this_1, err_5;
|
|
660
|
+
var _this = this;
|
|
661
|
+
return __generator(this, function (_a) {
|
|
662
|
+
switch (_a.label) {
|
|
663
|
+
case 0:
|
|
664
|
+
if (this.isEmailProcessing || this.emailQueue.size === 0) {
|
|
665
|
+
return [2 /*return*/];
|
|
666
|
+
}
|
|
667
|
+
this.isEmailProcessing = true;
|
|
668
|
+
_a.label = 1;
|
|
669
|
+
case 1:
|
|
670
|
+
_a.trys.push([1, 5, 6, 9]);
|
|
671
|
+
_loop_1 = function () {
|
|
672
|
+
var emailId, emailHistory, _b, _c, att, response, arrayBuffer, buffer, maxSize, e_2_1, err_6, mailOptions;
|
|
673
|
+
var e_2, _d;
|
|
674
|
+
return __generator(this, function (_e) {
|
|
675
|
+
switch (_e.label) {
|
|
676
|
+
case 0:
|
|
677
|
+
emailId = this_1.emailQueue.values().next().value;
|
|
678
|
+
this_1.emailQueue.delete(emailId);
|
|
679
|
+
return [4 /*yield*/, email_history_collection_1.EmailHistories.findOneAndUpdate({
|
|
680
|
+
_id: emailId,
|
|
681
|
+
status: 'pending',
|
|
682
|
+
}, {
|
|
683
|
+
$set: { status: 'processing', processingAt: new Date() },
|
|
684
|
+
})];
|
|
685
|
+
case 1:
|
|
686
|
+
emailHistory = _e.sent();
|
|
687
|
+
if (!emailHistory) {
|
|
688
|
+
return [2 /*return*/, "continue"];
|
|
689
|
+
}
|
|
690
|
+
if (!(emailHistory.attachments && emailHistory.attachments.length > 0)) return [3 /*break*/, 14];
|
|
691
|
+
_e.label = 2;
|
|
692
|
+
case 2:
|
|
693
|
+
_e.trys.push([2, 12, , 14]);
|
|
694
|
+
_e.label = 3;
|
|
695
|
+
case 3:
|
|
696
|
+
_e.trys.push([3, 9, 10, 11]);
|
|
697
|
+
_b = (e_2 = void 0, __values(emailHistory.attachments)), _c = _b.next();
|
|
698
|
+
_e.label = 4;
|
|
699
|
+
case 4:
|
|
700
|
+
if (!!_c.done) return [3 /*break*/, 8];
|
|
701
|
+
att = _c.value;
|
|
702
|
+
if (!(att.path && att.path.startsWith('http'))) return [3 /*break*/, 7];
|
|
703
|
+
return [4 /*yield*/, fetch(att.path)];
|
|
704
|
+
case 5:
|
|
705
|
+
response = _e.sent();
|
|
706
|
+
if (!response.ok) {
|
|
707
|
+
throw new Error("Failed to fetch attachment: ".concat(att.path));
|
|
708
|
+
}
|
|
709
|
+
return [4 /*yield*/, response.arrayBuffer()];
|
|
710
|
+
case 6:
|
|
711
|
+
arrayBuffer = _e.sent();
|
|
712
|
+
buffer = Buffer.from(arrayBuffer);
|
|
713
|
+
maxSize = 20 * 1024 * 1024;
|
|
714
|
+
if (buffer.length <= maxSize) {
|
|
715
|
+
// Attachment is within size limits, include it
|
|
716
|
+
att.content = buffer;
|
|
717
|
+
delete att.path;
|
|
718
|
+
}
|
|
719
|
+
_e.label = 7;
|
|
720
|
+
case 7:
|
|
721
|
+
_c = _b.next();
|
|
722
|
+
return [3 /*break*/, 4];
|
|
723
|
+
case 8: return [3 /*break*/, 11];
|
|
724
|
+
case 9:
|
|
725
|
+
e_2_1 = _e.sent();
|
|
726
|
+
e_2 = { error: e_2_1 };
|
|
727
|
+
return [3 /*break*/, 11];
|
|
728
|
+
case 10:
|
|
729
|
+
try {
|
|
730
|
+
if (_c && !_c.done && (_d = _b.return)) _d.call(_b);
|
|
731
|
+
}
|
|
732
|
+
finally { if (e_2) throw e_2.error; }
|
|
733
|
+
return [7 /*endfinally*/];
|
|
734
|
+
case 11: return [3 /*break*/, 14];
|
|
735
|
+
case 12:
|
|
736
|
+
err_6 = _e.sent();
|
|
737
|
+
console.error('Failed to fetch attachment:', err_6);
|
|
738
|
+
return [4 /*yield*/, email_history_collection_1.EmailHistories.updateOne({ _id: emailHistory._id }, {
|
|
739
|
+
$set: {
|
|
740
|
+
status: 'failed',
|
|
741
|
+
error: typeof err_6 === 'string' ? err_6 : this_1.safeStringify(err_6),
|
|
742
|
+
completedAt: new Date(),
|
|
743
|
+
},
|
|
744
|
+
})];
|
|
745
|
+
case 13:
|
|
746
|
+
_e.sent();
|
|
747
|
+
return [2 /*return*/, "continue"];
|
|
748
|
+
case 14:
|
|
749
|
+
mailOptions = {
|
|
750
|
+
replyTo: emailHistory.reply_to || (resolveio_server_app_1.ResolveIOServer.getServerConfig()['MAIL_REPLY_TO'] || undefined),
|
|
751
|
+
from: emailHistory.send_from || resolveio_server_app_1.ResolveIOServer.getServerConfig().MAIL_FROM,
|
|
752
|
+
to: emailHistory.email,
|
|
753
|
+
subject: (resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\/\/dev\./) ||
|
|
754
|
+
resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\/\/www\.dev\./)
|
|
755
|
+
? '(DEV SERVER) - '
|
|
756
|
+
: '') + emailHistory.subject,
|
|
757
|
+
text: typeof emailHistory.text === 'string' ? emailHistory.text : '',
|
|
758
|
+
html: typeof emailHistory.html === 'string' ? emailHistory.html : '',
|
|
759
|
+
attachments: emailHistory.attachments || [],
|
|
760
|
+
};
|
|
761
|
+
// Process attachments before sending
|
|
762
|
+
if (mailOptions.attachments && mailOptions.attachments.length > 0) {
|
|
763
|
+
mailOptions.attachments = mailOptions.attachments.map(function (att) {
|
|
764
|
+
var newAtt = __assign({}, att);
|
|
765
|
+
// Handle attachments stored as BinData or Buffer
|
|
766
|
+
if (newAtt.content && typeof newAtt.content === 'object' && !(newAtt.content instanceof Buffer)) {
|
|
767
|
+
// Convert MongoDB's Binary data to Buffer
|
|
768
|
+
if (newAtt.content._bsontype === 'Binary' && newAtt.content.sub_type === 0) {
|
|
769
|
+
newAtt.content = Buffer.from(newAtt.content.buffer);
|
|
770
|
+
}
|
|
771
|
+
else {
|
|
772
|
+
// Handle other types if necessary
|
|
773
|
+
newAtt.content = Buffer.from(newAtt.content);
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
// Handle attachments stored as Base64 strings
|
|
777
|
+
else if (typeof newAtt.content === 'string' && newAtt.encoding === 'base64') {
|
|
778
|
+
newAtt.content = Buffer.from(newAtt.content, 'base64');
|
|
779
|
+
delete newAtt.encoding;
|
|
780
|
+
}
|
|
781
|
+
// Ensure the content is a Buffer
|
|
782
|
+
else if (typeof newAtt.content === 'string') {
|
|
783
|
+
newAtt.content = Buffer.from(newAtt.content);
|
|
784
|
+
}
|
|
785
|
+
return newAtt;
|
|
786
|
+
});
|
|
787
|
+
}
|
|
788
|
+
// Send the email
|
|
789
|
+
this_1._mailer.sendMail(mailOptions, function (err) { return __awaiter(_this, void 0, void 0, function () {
|
|
790
|
+
var error_1;
|
|
791
|
+
return __generator(this, function (_a) {
|
|
792
|
+
switch (_a.label) {
|
|
793
|
+
case 0:
|
|
794
|
+
_a.trys.push([0, 7, , 9]);
|
|
795
|
+
if (!err) return [3 /*break*/, 2];
|
|
796
|
+
console.error('Failed to send email:', err);
|
|
797
|
+
return [4 /*yield*/, email_history_collection_1.EmailHistories.updateOne({ _id: emailHistory._id }, {
|
|
798
|
+
$set: {
|
|
799
|
+
status: 'failed',
|
|
800
|
+
error: typeof err === 'string' ? err : this.safeStringify(err),
|
|
801
|
+
completedAt: new Date(),
|
|
802
|
+
},
|
|
803
|
+
})];
|
|
804
|
+
case 1:
|
|
805
|
+
_a.sent();
|
|
806
|
+
return [3 /*break*/, 6];
|
|
807
|
+
case 2:
|
|
808
|
+
if (!(emailHistory.email === 'dev@resolveio.com')) return [3 /*break*/, 4];
|
|
809
|
+
return [4 /*yield*/, email_history_collection_1.EmailHistories.deleteOne({ _id: emailHistory._id })];
|
|
810
|
+
case 3:
|
|
811
|
+
_a.sent();
|
|
812
|
+
return [3 /*break*/, 6];
|
|
813
|
+
case 4: return [4 /*yield*/, email_history_collection_1.EmailHistories.updateOne({ _id: emailHistory._id }, {
|
|
814
|
+
$set: {
|
|
815
|
+
status: 'completed',
|
|
816
|
+
completedAt: new Date(),
|
|
817
|
+
},
|
|
818
|
+
})];
|
|
819
|
+
case 5:
|
|
820
|
+
_a.sent();
|
|
821
|
+
_a.label = 6;
|
|
822
|
+
case 6: return [3 /*break*/, 9];
|
|
823
|
+
case 7:
|
|
824
|
+
error_1 = _a.sent();
|
|
825
|
+
console.error('Error in sendMail callback:', error_1);
|
|
826
|
+
return [4 /*yield*/, email_history_collection_1.EmailHistories.updateOne({ _id: emailHistory._id }, {
|
|
827
|
+
$set: {
|
|
828
|
+
status: 'failed',
|
|
829
|
+
error: typeof error_1 === 'string' ? error_1 : this.safeStringify(error_1),
|
|
830
|
+
completedAt: new Date(),
|
|
831
|
+
},
|
|
832
|
+
})];
|
|
833
|
+
case 8:
|
|
834
|
+
_a.sent();
|
|
835
|
+
return [3 /*break*/, 9];
|
|
836
|
+
case 9: return [2 /*return*/];
|
|
837
|
+
}
|
|
838
|
+
});
|
|
839
|
+
}); });
|
|
840
|
+
// Wait for at least one second before sending the next email
|
|
841
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
842
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 1000); })];
|
|
843
|
+
case 15:
|
|
844
|
+
// Wait for at least one second before sending the next email
|
|
845
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
846
|
+
_e.sent();
|
|
847
|
+
return [2 /*return*/];
|
|
848
|
+
}
|
|
849
|
+
});
|
|
850
|
+
};
|
|
851
|
+
this_1 = this;
|
|
852
|
+
_a.label = 2;
|
|
853
|
+
case 2:
|
|
854
|
+
if (!(this.emailQueue.size > 0)) return [3 /*break*/, 4];
|
|
855
|
+
return [5 /*yield**/, _loop_1()];
|
|
856
|
+
case 3:
|
|
857
|
+
_a.sent();
|
|
858
|
+
return [3 /*break*/, 2];
|
|
859
|
+
case 4: return [3 /*break*/, 9];
|
|
860
|
+
case 5:
|
|
861
|
+
err_5 = _a.sent();
|
|
862
|
+
console.error('Error processing email queue:', err_5);
|
|
863
|
+
return [3 /*break*/, 9];
|
|
864
|
+
case 6:
|
|
865
|
+
this.isEmailProcessing = false;
|
|
866
|
+
if (!(this.emailQueue.size > 0)) return [3 /*break*/, 8];
|
|
867
|
+
return [4 /*yield*/, this.tryProcessEmail()];
|
|
868
|
+
case 7:
|
|
869
|
+
_a.sent();
|
|
870
|
+
_a.label = 8;
|
|
871
|
+
case 8: return [7 /*endfinally*/];
|
|
872
|
+
case 9: return [2 /*return*/];
|
|
873
|
+
}
|
|
874
|
+
});
|
|
875
|
+
});
|
|
876
|
+
};
|
|
877
|
+
MethodManager.prototype.safeStringify = function (obj) {
|
|
878
|
+
try {
|
|
879
|
+
return JSON.stringify(obj, this.getCircularReplacer());
|
|
880
|
+
}
|
|
881
|
+
catch (e) {
|
|
882
|
+
return "Error in JSON stringifying: ".concat(e.message);
|
|
883
|
+
}
|
|
884
|
+
};
|
|
885
|
+
MethodManager.prototype.getCircularReplacer = function () {
|
|
886
|
+
var seen = new WeakSet();
|
|
887
|
+
return function (key, value) {
|
|
888
|
+
if (typeof value === "object" && value !== null) {
|
|
889
|
+
if (seen.has(value)) {
|
|
890
|
+
return "[Circular]";
|
|
891
|
+
}
|
|
892
|
+
seen.add(value);
|
|
893
|
+
}
|
|
894
|
+
return value;
|
|
895
|
+
};
|
|
896
|
+
};
|
|
897
|
+
MethodManager.prototype.sendEmail = function (sendTo, subject, text, html, attachments, send_from, reply_to, local_override) {
|
|
898
|
+
if (local_override === void 0) { local_override = false; }
|
|
899
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
900
|
+
var emailHistory, history_1, err_7;
|
|
901
|
+
return __generator(this, function (_a) {
|
|
902
|
+
switch (_a.label) {
|
|
903
|
+
case 0:
|
|
904
|
+
// Modify sendTo in development environments
|
|
905
|
+
if ((resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\/\/dev\./) ||
|
|
906
|
+
resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'].match(/https:\/\/www\.dev\./) ||
|
|
907
|
+
resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200') &&
|
|
908
|
+
!sendTo.match(/\@resolveio\.com/)) {
|
|
909
|
+
sendTo = 'dev@resolveio.com';
|
|
910
|
+
}
|
|
911
|
+
if (!sendTo) return [3 /*break*/, 7];
|
|
912
|
+
if (!(resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200' ||
|
|
913
|
+
local_override)) return [3 /*break*/, 5];
|
|
914
|
+
if (!attachments) {
|
|
915
|
+
attachments = [];
|
|
916
|
+
}
|
|
917
|
+
if (!Array.isArray(attachments)) {
|
|
918
|
+
attachments = [attachments];
|
|
919
|
+
}
|
|
920
|
+
// Process attachments before saving
|
|
921
|
+
attachments = attachments.map(function (att) {
|
|
922
|
+
var newAtt = __assign({}, att);
|
|
923
|
+
if (Buffer.isBuffer(newAtt.content)) {
|
|
924
|
+
newAtt.content = newAtt.content.toString('base64');
|
|
925
|
+
newAtt.encoding = 'base64';
|
|
926
|
+
}
|
|
927
|
+
return newAtt;
|
|
928
|
+
});
|
|
929
|
+
emailHistory = {
|
|
930
|
+
_id: (0, common_1.objectIdHexString)(),
|
|
931
|
+
__v: 0,
|
|
932
|
+
date: new Date(),
|
|
933
|
+
id_user: this['id_user'] || '',
|
|
934
|
+
user: this['user'] || '',
|
|
935
|
+
email: sendTo,
|
|
936
|
+
subject: subject || '',
|
|
937
|
+
text: text || '',
|
|
938
|
+
html: html || '',
|
|
939
|
+
attachments: attachments || [],
|
|
940
|
+
send_from: send_from || '',
|
|
941
|
+
reply_to: reply_to || '',
|
|
942
|
+
status: 'pending',
|
|
943
|
+
error: ''
|
|
944
|
+
};
|
|
945
|
+
_a.label = 1;
|
|
946
|
+
case 1:
|
|
947
|
+
_a.trys.push([1, 3, , 4]);
|
|
948
|
+
return [4 /*yield*/, email_history_collection_1.EmailHistories.insertOne(emailHistory)];
|
|
949
|
+
case 2:
|
|
950
|
+
history_1 = _a.sent();
|
|
951
|
+
return [2 /*return*/, history_1];
|
|
952
|
+
case 3:
|
|
953
|
+
err_7 = _a.sent();
|
|
954
|
+
console.error('Failed to queue email:', err_7);
|
|
955
|
+
err_7.message = "Failed to queue email: ".concat(err_7.message);
|
|
956
|
+
throw err_7;
|
|
957
|
+
case 4: return [3 /*break*/, 6];
|
|
958
|
+
case 5:
|
|
959
|
+
console.log('Send email', sendTo, subject, text, html, attachments, send_from);
|
|
960
|
+
return [2 /*return*/, true];
|
|
961
|
+
case 6: return [3 /*break*/, 8];
|
|
962
|
+
case 7: return [2 /*return*/, true];
|
|
963
|
+
case 8: return [2 /*return*/];
|
|
964
|
+
}
|
|
965
|
+
});
|
|
966
|
+
});
|
|
967
|
+
};
|
|
968
|
+
MethodManager.prototype.getAWS = function () {
|
|
969
|
+
return this._aws;
|
|
970
|
+
};
|
|
971
|
+
MethodManager.prototype.readFile = function (fileName) {
|
|
972
|
+
if (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {
|
|
973
|
+
try {
|
|
974
|
+
return fs.readFileSync(path.join(__dirname, ('../private/' + fileName)), 'utf-8');
|
|
975
|
+
}
|
|
976
|
+
catch (err) {
|
|
977
|
+
err.message = "Error in readFile: ".concat(err.message);
|
|
978
|
+
throw err;
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
else {
|
|
982
|
+
if (fs.existsSync(path.join(resolveio_server_app_1.ResolveIOServer.getClientDir(), ('./private/' + fileName)))) {
|
|
983
|
+
try {
|
|
984
|
+
return fs.readFileSync(path.join(resolveio_server_app_1.ResolveIOServer.getClientDir(), ('./private/' + fileName)), 'utf-8');
|
|
985
|
+
}
|
|
986
|
+
catch (err) {
|
|
987
|
+
err.message = "Error in readFile: ".concat(err.message);
|
|
988
|
+
throw err;
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
throw new Error('Error in readFile: File Not Found');
|
|
993
|
+
};
|
|
994
|
+
MethodManager.prototype.readImage = function (fileName) {
|
|
995
|
+
if (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {
|
|
996
|
+
try {
|
|
997
|
+
return fs.readFileSync(path.join(__dirname, ('../private/' + fileName)), 'base64');
|
|
998
|
+
}
|
|
999
|
+
catch (err) {
|
|
1000
|
+
err.message = "Error in readImage: ".concat(err.message);
|
|
1001
|
+
throw err;
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
else {
|
|
1005
|
+
if (fs.existsSync(path.join(resolveio_server_app_1.ResolveIOServer.getClientDir(), ('./private/' + fileName)))) {
|
|
1006
|
+
try {
|
|
1007
|
+
return fs.readFileSync(path.join(resolveio_server_app_1.ResolveIOServer.getClientDir(), ('./private/' + fileName)), 'base64');
|
|
1008
|
+
}
|
|
1009
|
+
catch (err) {
|
|
1010
|
+
err.message = "Error in readImage: ".concat(err.message);
|
|
1011
|
+
throw err;
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
throw new Error('Error in readImage: File Not Found');
|
|
1016
|
+
};
|
|
1017
|
+
MethodManager.prototype.getEnableDebug = function () {
|
|
1018
|
+
return this._enableDebug;
|
|
1019
|
+
};
|
|
1020
|
+
return MethodManager;
|
|
1021
|
+
}());
|
|
1022
|
+
exports.MethodManager = MethodManager;
|
|
1023
|
+
|
|
2
1024
|
//# sourceMappingURL=method.manager.js.map
|