@resolveio/server-lib 20.5.11 → 20.5.13
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/collections/log-method-latency.collection.js +1 -1
- package/collections/log-method-latency.collection.js.map +1 -1
- package/collections/log-subscription.collection.js +1 -1
- package/collections/log-subscription.collection.js.map +1 -1
- package/collections/log.collection.js +1 -1
- package/collections/log.collection.js.map +1 -1
- package/managers/local-log.manager.d.ts +0 -1
- package/managers/local-log.manager.js.map +1 -1
- package/managers/method.manager.js +1 -1
- package/managers/method.manager.js.map +1 -1
- package/managers/mongo.manager.js +1 -1
- package/managers/mongo.manager.js.map +1 -1
- package/managers/monitor.manager.js +1 -1
- package/managers/monitor.manager.js.map +1 -1
- package/methods/logs.js +1 -1
- package/methods/logs.js.map +1 -1
- package/models/log-method-latency.model.d.ts +2 -0
- package/models/log-subscription.model.d.ts +2 -0
- package/models/log.model.d.ts +2 -0
- package/package.json +1 -1
- package/server-app.js +1 -1
- package/server-app.js.map +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(e,n,r,i){return new(r=r||Promise)(function(o,t){function fulfilled(e){try{step(i.next(e))}catch(e){t(e)}}function rejected(e){try{step(i.throw(e))}catch(e){t(e)}}function step(e){var t;e.done?o(e.value):((t=e.value)instanceof r?t:new r(function(e){e(t)})).then(fulfilled,rejected)}step((i=i.apply(e,n||[])).next())})},__generator=this&&this.__generator||function(n,r){var i,a,s,c={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]},l={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function verb(o){return function(e){var t=[o,e];if(i)throw new TypeError("Generator is already executing.");for(;c=l&&t[l=0]?0:c;)try{if(i=1,a&&(s=2&t[0]?a.return:t[0]?a.throw||((s=a.return)&&s.call(a),0):a.next)&&!(s=s.call(a,t[1])).done)return s;switch(a=0,(t=s?[2&t[0],s.value]:t)[0]){case 0:case 1:s=t;break;case 4:return c.label++,{value:t[1],done:!1};case 5:c.label++,a=t[1],t=[0];continue;case 7:t=c.ops.pop(),c.trys.pop();continue;default:if(!(s=0<(s=c.trys).length&&s[s.length-1])&&(6===t[0]||2===t[0])){c=0;continue}if(3===t[0]&&(!s||t[1]>s[0]&&t[1]<s[3]))c.label=t[1];else if(6===t[0]&&c.label<s[1])c.label=s[1],s=t;else{if(!(s&&c.label<s[2])){s[2]&&c.ops.pop(),c.trys.pop();continue}c.label=s[2],c.ops.push(t)}}t=r.call(n,c)}catch(e){t=[6,e],a=0}finally{i=s=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}}},axios_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.MonitorFunction=exports.MonitorManagerFunction=exports.MonitorMongo=exports.MonitorManager=void 0,require("axios")),monitor_cpu_collection_1=require("../collections/monitor-cpu.collection"),monitor_memory_collection_1=require("../collections/monitor-memory.collection"),monitor_mongo_collection_1=require("../collections/monitor-mongo.collection"),resolveio_server_app_1=require("../resolveio-server-app"),common_1=require("../util/common"),os=require("os"),MAX_BATCH_SIZE=8388608,MonitorManager=function(){function MonitorManager(){this._instanceHostname="",this._monitorData=[],this._instanceHostname=os.hostname().replace(/\./g,"-"),this.setupIntervals(),this.setupEventLoop()}return MonitorManager.prototype.cpuAverage=function(){for(var e=0,t=0,o=os.cpus(),n=0,r=o.length;n<r;n++){var i,a=o[n];for(i in a.times)t+=a.times[i];e+=a.times.idle}return{idle:e/o.length,total:t/o.length}},MonitorManager.prototype.setupIntervals=function(){return __awaiter(this,void 0,void 0,function(){var t,n,r=this;return __generator(this,function(e){switch(e.label){case 0:if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,axios_1.default.get("http://169.254.169.254/latest/meta-data/instance-id")];case 2:return t=e.sent(),setInterval(function(){return __awaiter(r,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,axios_1.default.post("https://backend.resolveio.com/api/health",{type:"application",id_aws_instance:t.data,version:"number"==typeof process.env.APP_VERSION?process.env.APP_VERSION.toString():process.env.APP_VERSION,version_key:process.env.APP_VERSION_KEY})];case 1:return e.sent(),[3,3];case 2:return e.sent(),[3,3];case 3:return[2]}})})},1e4),[3,4];case 3:return e.sent(),[3,4];case 4:return n=this.cpuAverage(),setInterval(function(){var e=new Date,t=r.cpuAverage(),o=1-(t.idle-n.idle)/(t.total-n.total),o=("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?monitor_cpu_collection_1.MonitorCPUs.create({_id:(0,common_1.objectIdHexString)(),metadata:{instance:r._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:e,app:o,system:os.loadavg()[0]}):r.pushMonitorData({metadata:{instance:r._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:e,app:o,system:os.loadavg()[0]
|
|
1
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(e,n,r,i){return new(r=r||Promise)(function(o,t){function fulfilled(e){try{step(i.next(e))}catch(e){t(e)}}function rejected(e){try{step(i.throw(e))}catch(e){t(e)}}function step(e){var t;e.done?o(e.value):((t=e.value)instanceof r?t:new r(function(e){e(t)})).then(fulfilled,rejected)}step((i=i.apply(e,n||[])).next())})},__generator=this&&this.__generator||function(n,r){var i,a,s,c={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]},l={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function verb(o){return function(e){var t=[o,e];if(i)throw new TypeError("Generator is already executing.");for(;c=l&&t[l=0]?0:c;)try{if(i=1,a&&(s=2&t[0]?a.return:t[0]?a.throw||((s=a.return)&&s.call(a),0):a.next)&&!(s=s.call(a,t[1])).done)return s;switch(a=0,(t=s?[2&t[0],s.value]:t)[0]){case 0:case 1:s=t;break;case 4:return c.label++,{value:t[1],done:!1};case 5:c.label++,a=t[1],t=[0];continue;case 7:t=c.ops.pop(),c.trys.pop();continue;default:if(!(s=0<(s=c.trys).length&&s[s.length-1])&&(6===t[0]||2===t[0])){c=0;continue}if(3===t[0]&&(!s||t[1]>s[0]&&t[1]<s[3]))c.label=t[1];else if(6===t[0]&&c.label<s[1])c.label=s[1],s=t;else{if(!(s&&c.label<s[2])){s[2]&&c.ops.pop(),c.trys.pop();continue}c.label=s[2],c.ops.push(t)}}t=r.call(n,c)}catch(e){t=[6,e],a=0}finally{i=s=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}}},axios_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.MonitorFunction=exports.MonitorManagerFunction=exports.MonitorMongo=exports.MonitorManager=void 0,require("axios")),monitor_cpu_collection_1=require("../collections/monitor-cpu.collection"),monitor_memory_collection_1=require("../collections/monitor-memory.collection"),monitor_mongo_collection_1=require("../collections/monitor-mongo.collection"),resolveio_server_app_1=require("../resolveio-server-app"),common_1=require("../util/common"),os=require("os"),MAX_BATCH_SIZE=8388608,MonitorManager=function(){function MonitorManager(){this._instanceHostname="",this._monitorData=[],this._instanceHostname=os.hostname().replace(/\./g,"-"),this.setupIntervals(),this.setupEventLoop()}return MonitorManager.prototype.cpuAverage=function(){for(var e=0,t=0,o=os.cpus(),n=0,r=o.length;n<r;n++){var i,a=o[n];for(i in a.times)t+=a.times[i];e+=a.times.idle}return{idle:e/o.length,total:t/o.length}},MonitorManager.prototype.setupIntervals=function(){return __awaiter(this,void 0,void 0,function(){var t,n,r=this;return __generator(this,function(e){switch(e.label){case 0:if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,axios_1.default.get("http://169.254.169.254/latest/meta-data/instance-id")];case 2:return t=e.sent(),setInterval(function(){return __awaiter(r,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,axios_1.default.post("https://backend.resolveio.com/api/health",{type:"application",id_aws_instance:t.data,version:"number"==typeof process.env.APP_VERSION?process.env.APP_VERSION.toString():process.env.APP_VERSION,version_key:process.env.APP_VERSION_KEY})];case 1:return e.sent(),[3,3];case 2:return e.sent(),[3,3];case 3:return[2]}})})},1e4),[3,4];case 3:return e.sent(),[3,4];case 4:return n=this.cpuAverage(),setInterval(function(){var e=new Date,t=r.cpuAverage(),o=1-(t.idle-n.idle)/(t.total-n.total),o=("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?monitor_cpu_collection_1.MonitorCPUs.create({_id:(0,common_1.objectIdHexString)(),metadata:{instance:r._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:e,app:o,system:os.loadavg()[0]}):r.pushMonitorData({type:"monitor-cpu",data:{metadata:{instance:r._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:e,app:o,system:os.loadavg()[0]}}),n=t,process.memoryUsage());"https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?monitor_memory_collection_1.MonitorMemorys.create({_id:(0,common_1.objectIdHexString)(),metadata:{instance:r._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:e,physical_total:o.heapTotal,physical_used:o.heapUsed,physical_free:os.freemem(),virtual:o.rss,private:o.external,physical:os.totalmem()}):r.pushMonitorData({type:"monitor-memory",data:{metadata:{instance:r._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:e,physical_total:o.heapTotal,physical_used:o.heapUsed,physical_free:os.freemem(),virtual:o.rss,private:o.external,physical:os.totalmem(),type:"memory"}})},3e3),[2]}})})},MonitorManager.prototype.addMongoTracker=function(e){"https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?e.collection.startsWith("monitor-")||monitor_mongo_collection_1.MonitorMongos.create({_id:(0,common_1.objectIdHexString)(),metadata:{instance:this._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:new Date(e.date),method:e.method,doc_collection:e.collection,duration:e.duration,query:Buffer.byteLength(e.query,"utf8")<158e5?e.query:"Too Big"}):this._instanceHostname&&this.pushMonitorData({type:"monitor-mongo",data:{metadata:{instance:this._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:new Date(e.date),method:e.method,doc_collection:e.collection,duration:e.duration,query:Buffer.byteLength(e.query,"utf8")<158e5?e.query:"Too Big"}})},MonitorManager.prototype.pushMonitorData=function(e){this._monitorData.push(e),this.estimateBatchSize()>=MAX_BATCH_SIZE&&this.flushMonitorData()},MonitorManager.prototype.estimateBatchSize=function(){return this._monitorData.reduce(function(e,t){return e+Buffer.byteLength(JSON.stringify(t))},0)},MonitorManager.prototype.setupEventLoop=function(){var e=this;setInterval(function(){0<e._monitorData.length&&e.flushMonitorData()},2500)},MonitorManager.prototype.flushMonitorData=function(){for(var e=[],t=0;0<this._monitorData.length&&t<MAX_BATCH_SIZE;){var o=this._monitorData.shift(),n=Buffer.byteLength(JSON.stringify(o));if(MAX_BATCH_SIZE<t+n&&0<e.length){this._monitorData.unshift(o);break}e.push(o),t+=n}try{resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLogs(e)}catch(e){console.error(new Date,"MonitorManager","Failed to flush monitor data to file:",e)}},MonitorManager}(),MonitorMongo=(exports.MonitorManager=MonitorManager,function(){function MonitorMongo(e,t,o){this._startTime=0,this._method="",this._collection="",this._query="",this._startTime=Date.now(),this._method=e,this._collection=t,this._query=o}return MonitorMongo.prototype.finish=function(){var e=Date.now(),e={date:new Date(e),method:this._method,collection:this._collection,query:this._query,duration:e-this._startTime};resolveio_server_app_1.ResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(e)},MonitorMongo}()),MonitorManagerFunction=(exports.MonitorMongo=MonitorMongo,function(){function MonitorManagerFunction(){this._functionCnt=0,this._functions=[],this._functionLastCompletedWS={}}return MonitorManagerFunction.prototype.startMonitorFunction=function(e,t,o,n,r){e=new MonitorFunction(this._functionCnt++,e,t,o,n,r);return this._functions.push(e),e.id},MonitorManagerFunction.prototype.finishMonitorFunction=function(t){var e=this._functions.find(function(e){return e.id===t});e&&(e.finish(),this._functionLastCompleted=e,this._functionLastCompletedWS[e.id_socket]=e,this._functions.splice(this._functions.map(function(e){return e.id}).indexOf(t),1))},MonitorManagerFunction.prototype.getActiveMonitorFunctions=function(){return this._functions},MonitorManagerFunction.prototype.getLastCompletedMonitorFunction=function(){return this._functionLastCompleted},MonitorManagerFunction.prototype.getLastCompletedMonitorFunctionWS=function(){return this._functionLastCompletedWS},MonitorManagerFunction}()),MonitorFunction=(exports.MonitorManagerFunction=MonitorManagerFunction,function(){function MonitorFunction(e,t,o,n,r,i){var a=this;this._timer=null,this._maxDiff=0,this.startTime=null,this.endTime=null,this.lastTime=null,this.id_socket="",this.id=0,this.id=e,this.startTime=new Date,this._functionType=t,this._functionName=o,this._user=n,this.id_socket=r,this._data=i,this.lastTime=new Date,this._timer=setInterval(function(){var e=Date.now()-a.lastTime.getTime();e>a._maxDiff&&(a._maxDiff=e),a.lastTime=new Date},1e3)}return MonitorFunction.prototype.finish=function(){this._timer&&(clearInterval(this._timer),this._timer=null),this.endTime=new Date,this._maxDiff},MonitorFunction}());exports.MonitorFunction=MonitorFunction;
|
|
2
2
|
//# sourceMappingURL=monitor.manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":["axios_1","require","monitor_cpu_collection_1","monitor_memory_collection_1","monitor_mongo_collection_1","resolveio_server_app_1","common_1","os","MAX_BATCH_SIZE","MonitorManager","this","_instanceHostname","_monitorData","hostname","replace","setupIntervals","setupEventLoop","prototype","cpuAverage","totalIdle","totalTick","cpus","i","len","length","type","cpu","times","idle","total","ResolveIOServer","getServerConfig","default","get","instanceId_1","_a","sent","setInterval","__awaiter","_this","post","id_aws_instance","data","version","process","env","APP_VERSION","toString","version_key","APP_VERSION_KEY","lastCPU","now","Date","endMeasure","percentageCPU","memUsage","MonitorCPUs","create","_id","objectIdHexString","metadata","instance","client","date","app","system","loadavg","pushMonitorData","memoryUsage","MonitorMemorys","physical_total","heapTotal","physical_used","heapUsed","physical_free","freemem","virtual","rss","private","external","physical","totalmem","addMongoTracker","collection","startsWith","MonitorMongos","method","doc_collection","duration","query","Buffer","byteLength","push","estimateBatchSize","flushMonitorData","reduce","item","JSON","stringify","batch","batchSize","shift","itemSize","unshift","getLocalLogManager","writeLogs","error","console","MonitorMongo","exports","_startTime","_method","_collection","_query","finish","endTime","mongoMonitor","getMainServer","getMonitorManager","MonitorManagerFunction","_functionCnt","_functions","_functionLastCompletedWS","startMonitorFunction","functionType","functionName","user","id_socket","newMonitorFunction","MonitorFunction","id","finishMonitorFunction","monitor","find","a","_functionLastCompleted","splice","map","indexOf","getActiveMonitorFunctions","getLastCompletedMonitorFunction","getLastCompletedMonitorFunctionWS","_timer","_maxDiff","startTime","lastTime","_functionType","_functionName","_user","_data","diff","getTime","clearInterval"],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import axios from 'axios';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorMemorys } from '../collections/monitor-memory.collection';\nimport { MonitorMongos } from '../collections/monitor-mongo.collection';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { objectIdHexString } from '../util/common';\n\nconst os = require('os');\nconst MAX_BATCH_SIZE = 8 * 1024 * 1024; // 8MB max for safety\n\nexport class MonitorManager {\n\tprivate _instanceHostname = '';\n\tprivate _monitorData = [];\n\n\tconstructor() {\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\n\t\tthis.setupIntervals();\n\t\tthis.setupEventLoop();\n\t}\n\n\tcpuAverage() {\n\t\tvar totalIdle = 0, totalTick = 0;\n\t\tvar cpus = os.cpus();\n\n\t\tfor (var i = 0, len = cpus.length; i < len; i++) {\n\t\t\tvar cpu = cpus[i];\n\n\t\t\tfor (let type in cpu.times) {\n\t\t\t\ttotalTick += cpu.times[type];\n\t\t\t}\n\t\t\ttotalIdle += cpu.times.idle;\n\t\t}\n\n\t\treturn {\n\t\t\tidle: totalIdle / cpus.length,\n\t\t\ttotal: totalTick / cpus.length\n\t\t};\n\t}\n\n\tasync setupIntervals() {\n\t\t// Example: If not on production or localhost, do a health check\n\t\tif (\n\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t) {\n\t\t\ttry {\n\t\t\t\tlet instanceId = await axios.get('http://169.254.169.254/latest/meta-data/instance-id');\n\n\t\t\t\tsetInterval(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/health', {\n\t\t\t\t\t\t\ttype: 'application',\n\t\t\t\t\t\t\tid_aws_instance: instanceId.data,\n\t\t\t\t\t\t\tversion: typeof process.env.APP_VERSION === 'number'\n\t\t\t\t\t\t\t\t? (<any>process.env.APP_VERSION).toString()\n\t\t\t\t\t\t\t\t: process.env.APP_VERSION,\n\t\t\t\t\t\t\tversion_key: process.env.APP_VERSION_KEY\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcatch(e) {}\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t\tcatch(errHealth) {}\n\t\t}\n\n\t\tlet lastCPU = this.cpuAverage();\n\n\t\tsetInterval(() => {\n\t\t\tlet now = new Date();\n\t\t\tvar endMeasure = this.cpuAverage();\n\t\t\tvar idleDifference = endMeasure.idle - lastCPU.idle;\n\t\t\tvar totalDifference = endMeasure.total - lastCPU.total;\n\t\t\tvar percentageCPU = 1 - idleDifference / totalDifference;\n\n\t\t\t// Original local code\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\tMonitorCPUs.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0]\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.pushMonitorData({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0],\n\t\t\t\t\ttype: 'cpu'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlastCPU = endMeasure;\n\n\t\t\tconst memUsage = process.memoryUsage();\n\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\tMonitorMemorys.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem()\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.pushMonitorData({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem(),\n\t\t\t\t\ttype: 'memory'\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\t}\n\n\taddMongoTracker(data: MongoMonitorModel) {\n\t\tif (\n\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'\n\t\t\t|| ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200'\n\t\t) {\n\t\t\tif (!data.collection.startsWith('monitor-')) {\n\t\t\t\tMonitorMongos.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: Buffer.byteLength(data.query, 'utf8') < 15800000\n\t\t\t\t\t\t? data.query\n\t\t\t\t\t\t: 'Too Big'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (this._instanceHostname) {\n\t\t\t\tthis.pushMonitorData({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: Buffer.byteLength(data.query, 'utf8') < 15800000\n\t\t\t\t\t\t? data.query\n\t\t\t\t\t\t: 'Too Big',\n\t\t\t\t\ttype: 'mongo'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate pushMonitorData(data: any) {\n\t\tthis._monitorData.push(data);\n\n\t\t// If data is huge, flush immediately to file\n\t\tif (this.estimateBatchSize() >= MAX_BATCH_SIZE) {\n\t\t\tthis.flushMonitorData();\n\t\t}\n\t}\n\n\tprivate estimateBatchSize(): number {\n\t\treturn this._monitorData.reduce((total, item) => {\n\t\t\treturn total + Buffer.byteLength(JSON.stringify(item));\n\t\t}, 0);\n\t}\n\n\tsetupEventLoop() {\n\t\t// Flush every 2.5 seconds\n\t\tsetInterval(() => {\n\t\t\tif (this._monitorData.length > 0) {\n\t\t\t\tthis.flushMonitorData();\n\t\t\t}\n\t\t}, 2500);\n\t}\n\n\tprivate flushMonitorData() {\n\t\tconst batch = [];\n\t\tlet batchSize = 0;\n\n\t\twhile (this._monitorData.length > 0 && batchSize < MAX_BATCH_SIZE) {\n\t\t\tconst item = this._monitorData.shift();\n\t\t\tconst itemSize = Buffer.byteLength(JSON.stringify(item));\n\n\t\t\tif ((batchSize + itemSize) > MAX_BATCH_SIZE && batch.length > 0) {\n\t\t\t\t// put the item back for next round\n\t\t\t\tthis._monitorData.unshift(item);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbatch.push(item);\n\t\t\tbatchSize += itemSize;\n\t\t}\n\n\t\ttry {\n\t\t\t// Now, instead of calling an external HTTP endpoint, we write the batch to disk:\n\t\t\tResolveIOServer.getLocalLogManager().writeLogs(batch);\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.error(new Date(), 'MonitorManager', 'Failed to flush monitor data to file:', error);\n\t\t}\n\t}\n}\n\nexport interface MongoMonitorModel {\n\tdate: Date;\n\tmethod: string;\n\tcollection: string;\n\tduration: number;\n\tquery: string;\n}\n\nexport class MonitorMongo {\n\tprivate _startTime = 0;\n\tprivate _method = '';\n\tprivate _collection = '';\n\tprivate _query = '';\n\n\tconstructor(method: string, collection: string, query: string) {\n\t\tthis._startTime = Date.now();\n\t\tthis._method = method;\n\t\tthis._collection = collection;\n\t\tthis._query = query;\n\t}\n\n\tpublic finish() {\n\t\tlet endTime = Date.now();\n\n\t\tlet mongoMonitor: MongoMonitorModel = {\n\t\t\tdate: new Date(endTime),\n\t\t\tmethod: this._method,\n\t\t\tcollection: this._collection,\n\t\t\tquery: this._query,\n\t\t\tduration: endTime - this._startTime\n\t\t};\n\n\t\tResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(mongoMonitor);\n\t}\n}\n\nexport class MonitorManagerFunction {\n\tprivate _functionCnt = 0;\n\tprivate _functions: MonitorFunction[] = [];\n\tprivate _functionLastCompletedWS: { [id_socket: string]: MonitorFunction; } = {};\n\tprivate _functionLastCompleted: MonitorFunction;\n\n\tconstructor() {}\n\n\tstartMonitorFunction(\n\t\tfunctionType: MonitorFunctionType,\n\t\tfunctionName: string,\n\t\tuser: string,\n\t\tid_socket: string,\n\t\tdata: any\n\t) {\n\t\tlet newMonitorFunction = new MonitorFunction(\n\t\t\tthis._functionCnt++,\n\t\t\tfunctionType,\n\t\t\tfunctionName,\n\t\t\tuser,\n\t\t\tid_socket,\n\t\t\tdata\n\t\t);\n\n\t\tthis._functions.push(newMonitorFunction);\n\t\treturn newMonitorFunction.id;\n\t}\n\n\tfinishMonitorFunction(id: number) {\n\t\tlet monitor = this._functions.find(a => a.id === id);\n\n\t\tif (monitor) {\n\t\t\tmonitor.finish();\n\t\t\tthis._functionLastCompleted = monitor;\n\t\t\tthis._functionLastCompletedWS[monitor.id_socket] = monitor;\n\t\t\tthis._functions.splice(\n\t\t\t\tthis._functions.map(a => a.id).indexOf(id),\n\t\t\t\t1\n\t\t\t);\n\t\t}\n\t}\n\n\tgetActiveMonitorFunctions() {\n\t\treturn this._functions;\n\t}\n\n\tgetLastCompletedMonitorFunction() {\n\t\treturn this._functionLastCompleted;\n\t}\n\n\tgetLastCompletedMonitorFunctionWS() {\n\t\treturn this._functionLastCompletedWS;\n\t}\n}\n\nexport type MonitorFunctionType =\n\t'Cron Method'\n\t| 'Internal Method'\n\t| 'Method'\n\t| 'User Specific Publication'\n\t| 'Publication';\n\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tprivate _maxDiff = 0;\n\tprivate _functionType: MonitorFunctionType;\n\tprivate _functionName: string;\n\tprivate _user: string;\n\tprivate _data: any;\n\tpublic startTime: Date = null;\n\tpublic endTime: Date = null;\n\tpublic lastTime: Date = null;\n\tpublic id_socket = '';\n\tpublic id = 0;\n\n\tconstructor(\n\t\tid: number,\n\t\tfunctionType: MonitorFunctionType,\n\t\tfunctionName: string,\n\t\tuser: string,\n\t\tid_socket: string,\n\t\tdata: any\n\t) {\n\t\tthis.id = id;\n\t\tthis.startTime = new Date();\n\t\tthis._functionType = functionType;\n\t\tthis._functionName = functionName;\n\t\tthis._user = user;\n\t\tthis.id_socket = id_socket;\n\t\tthis._data = data;\n\t\tthis.lastTime = new Date();\n\n\t\tthis._timer = setInterval(() => {\n\t\t\tlet diff = Date.now() - this.lastTime.getTime();\n\n\t\t\tif (diff > this._maxDiff) {\n\t\t\t\tthis._maxDiff = diff;\n\t\t\t}\n\n\t\t\tthis.lastTime = new Date();\n\t\t}, 1000);\n\t}\n\n\tpublic finish() {\n\t\tif (this._timer) {\n\t\t\tclearInterval(this._timer);\n\t\t\tthis._timer = null;\n\t\t}\n\n\t\tthis.endTime = new Date();\n\n\t\tif (this._maxDiff >= 5000) {\n\t\t\t// Optional slow function logging or email\n\t\t}\n\t}\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":["axios_1","require","monitor_cpu_collection_1","monitor_memory_collection_1","monitor_mongo_collection_1","resolveio_server_app_1","common_1","os","MAX_BATCH_SIZE","MonitorManager","this","_instanceHostname","_monitorData","hostname","replace","setupIntervals","setupEventLoop","prototype","cpuAverage","totalIdle","totalTick","cpus","i","len","length","type","cpu","times","idle","total","ResolveIOServer","getServerConfig","default","get","instanceId_1","_a","sent","setInterval","__awaiter","_this","post","id_aws_instance","data","version","process","env","APP_VERSION","toString","version_key","APP_VERSION_KEY","lastCPU","now","Date","endMeasure","percentageCPU","memUsage","MonitorCPUs","create","_id","objectIdHexString","metadata","instance","client","date","app","system","loadavg","pushMonitorData","memoryUsage","MonitorMemorys","physical_total","heapTotal","physical_used","heapUsed","physical_free","freemem","virtual","rss","private","external","physical","totalmem","addMongoTracker","collection","startsWith","MonitorMongos","method","doc_collection","duration","query","Buffer","byteLength","push","estimateBatchSize","flushMonitorData","reduce","item","JSON","stringify","batch","batchSize","shift","itemSize","unshift","getLocalLogManager","writeLogs","error","console","MonitorMongo","exports","_startTime","_method","_collection","_query","finish","endTime","mongoMonitor","getMainServer","getMonitorManager","MonitorManagerFunction","_functionCnt","_functions","_functionLastCompletedWS","startMonitorFunction","functionType","functionName","user","id_socket","newMonitorFunction","MonitorFunction","id","finishMonitorFunction","monitor","find","a","_functionLastCompleted","splice","map","indexOf","getActiveMonitorFunctions","getLastCompletedMonitorFunction","getLastCompletedMonitorFunctionWS","_timer","_maxDiff","startTime","lastTime","_functionType","_functionName","_user","_data","diff","getTime","clearInterval"],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import axios from 'axios';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorMemorys } from '../collections/monitor-memory.collection';\nimport { MonitorMongos } from '../collections/monitor-mongo.collection';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { objectIdHexString } from '../util/common';\nimport { LocalLogModel } from './local-log.manager';\n\nconst os = require('os');\nconst MAX_BATCH_SIZE = 8 * 1024 * 1024; // 8MB max for safety\n\nexport class MonitorManager {\n\tprivate _instanceHostname = '';\n\tprivate _monitorData: LocalLogModel[] = [];\n\n\tconstructor() {\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\n\t\tthis.setupIntervals();\n\t\tthis.setupEventLoop();\n\t}\n\n\tcpuAverage() {\n\t\tvar totalIdle = 0, totalTick = 0;\n\t\tvar cpus = os.cpus();\n\n\t\tfor (var i = 0, len = cpus.length; i < len; i++) {\n\t\t\tvar cpu = cpus[i];\n\n\t\t\tfor (let type in cpu.times) {\n\t\t\t\ttotalTick += cpu.times[type];\n\t\t\t}\n\t\t\ttotalIdle += cpu.times.idle;\n\t\t}\n\n\t\treturn {\n\t\t\tidle: totalIdle / cpus.length,\n\t\t\ttotal: totalTick / cpus.length\n\t\t};\n\t}\n\n\tasync setupIntervals() {\n\t\t// Example: If not on production or localhost, do a health check\n\t\tif (\n\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t) {\n\t\t\ttry {\n\t\t\t\tlet instanceId = await axios.get('http://169.254.169.254/latest/meta-data/instance-id');\n\n\t\t\t\tsetInterval(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/health', {\n\t\t\t\t\t\t\ttype: 'application',\n\t\t\t\t\t\t\tid_aws_instance: instanceId.data,\n\t\t\t\t\t\t\tversion: typeof process.env.APP_VERSION === 'number'\n\t\t\t\t\t\t\t\t? (<any>process.env.APP_VERSION).toString()\n\t\t\t\t\t\t\t\t: process.env.APP_VERSION,\n\t\t\t\t\t\t\tversion_key: process.env.APP_VERSION_KEY\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcatch(e) {}\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t\tcatch(errHealth) {}\n\t\t}\n\n\t\tlet lastCPU = this.cpuAverage();\n\n\t\tsetInterval(() => {\n\t\t\tlet now = new Date();\n\t\t\tvar endMeasure = this.cpuAverage();\n\t\t\tvar idleDifference = endMeasure.idle - lastCPU.idle;\n\t\t\tvar totalDifference = endMeasure.total - lastCPU.total;\n\t\t\tvar percentageCPU = 1 - idleDifference / totalDifference;\n\n\t\t\t// Original local code\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\tMonitorCPUs.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0]\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.pushMonitorData({\n\t\t\t\t\ttype: 'monitor-cpu',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: now,\n\t\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\t\tsystem: os.loadavg()[0]\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlastCPU = endMeasure;\n\n\t\t\tconst memUsage = process.memoryUsage();\n\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\tMonitorMemorys.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem()\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.pushMonitorData({\n\t\t\t\t\ttype: 'monitor-memory',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: now,\n\t\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\t\tphysical: os.totalmem(),\n\t\t\t\t\t\ttype: 'memory'\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\t}\n\n\taddMongoTracker(data: MongoMonitorModel) {\n\t\tif (\n\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'\n\t\t\t|| ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200'\n\t\t) {\n\t\t\tif (!data.collection.startsWith('monitor-')) {\n\t\t\t\tMonitorMongos.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: Buffer.byteLength(data.query, 'utf8') < 15800000\n\t\t\t\t\t\t? data.query\n\t\t\t\t\t\t: 'Too Big'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (this._instanceHostname) {\n\t\t\t\tthis.pushMonitorData({\n\t\t\t\t\ttype: 'monitor-mongo',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\t\tmethod: data.method,\n\t\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\t\tduration: data.duration,\n\t\t\t\t\t\tquery: Buffer.byteLength(data.query, 'utf8') < 15800000\n\t\t\t\t\t\t\t? data.query\n\t\t\t\t\t\t\t: 'Too Big'\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate pushMonitorData(data: LocalLogModel) {\n\t\tthis._monitorData.push(data);\n\n\t\t// If data is huge, flush immediately to file\n\t\tif (this.estimateBatchSize() >= MAX_BATCH_SIZE) {\n\t\t\tthis.flushMonitorData();\n\t\t}\n\t}\n\n\tprivate estimateBatchSize(): number {\n\t\treturn this._monitorData.reduce((total, item) => {\n\t\t\treturn total + Buffer.byteLength(JSON.stringify(item));\n\t\t}, 0);\n\t}\n\n\tsetupEventLoop() {\n\t\t// Flush every 2.5 seconds\n\t\tsetInterval(() => {\n\t\t\tif (this._monitorData.length > 0) {\n\t\t\t\tthis.flushMonitorData();\n\t\t\t}\n\t\t}, 2500);\n\t}\n\n\tprivate flushMonitorData() {\n\t\tconst batch = [];\n\t\tlet batchSize = 0;\n\n\t\twhile (this._monitorData.length > 0 && batchSize < MAX_BATCH_SIZE) {\n\t\t\tconst item = this._monitorData.shift();\n\t\t\tconst itemSize = Buffer.byteLength(JSON.stringify(item));\n\n\t\t\tif ((batchSize + itemSize) > MAX_BATCH_SIZE && batch.length > 0) {\n\t\t\t\t// put the item back for next round\n\t\t\t\tthis._monitorData.unshift(item);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbatch.push(item);\n\t\t\tbatchSize += itemSize;\n\t\t}\n\n\t\ttry {\n\t\t\t// Now, instead of calling an external HTTP endpoint, we write the batch to disk:\n\t\t\tResolveIOServer.getLocalLogManager().writeLogs(batch);\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.error(new Date(), 'MonitorManager', 'Failed to flush monitor data to file:', error);\n\t\t}\n\t}\n}\n\nexport interface MongoMonitorModel {\n\tdate: Date;\n\tmethod: string;\n\tcollection: string;\n\tduration: number;\n\tquery: string;\n}\n\nexport class MonitorMongo {\n\tprivate _startTime = 0;\n\tprivate _method = '';\n\tprivate _collection = '';\n\tprivate _query = '';\n\n\tconstructor(method: string, collection: string, query: string) {\n\t\tthis._startTime = Date.now();\n\t\tthis._method = method;\n\t\tthis._collection = collection;\n\t\tthis._query = query;\n\t}\n\n\tpublic finish() {\n\t\tlet endTime = Date.now();\n\n\t\tlet mongoMonitor: MongoMonitorModel = {\n\t\t\tdate: new Date(endTime),\n\t\t\tmethod: this._method,\n\t\t\tcollection: this._collection,\n\t\t\tquery: this._query,\n\t\t\tduration: endTime - this._startTime\n\t\t};\n\n\t\tResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(mongoMonitor);\n\t}\n}\n\nexport class MonitorManagerFunction {\n\tprivate _functionCnt = 0;\n\tprivate _functions: MonitorFunction[] = [];\n\tprivate _functionLastCompletedWS: { [id_socket: string]: MonitorFunction; } = {};\n\tprivate _functionLastCompleted: MonitorFunction;\n\n\tconstructor() {}\n\n\tstartMonitorFunction(\n\t\tfunctionType: MonitorFunctionType,\n\t\tfunctionName: string,\n\t\tuser: string,\n\t\tid_socket: string,\n\t\tdata: any\n\t) {\n\t\tlet newMonitorFunction = new MonitorFunction(\n\t\t\tthis._functionCnt++,\n\t\t\tfunctionType,\n\t\t\tfunctionName,\n\t\t\tuser,\n\t\t\tid_socket,\n\t\t\tdata\n\t\t);\n\n\t\tthis._functions.push(newMonitorFunction);\n\t\treturn newMonitorFunction.id;\n\t}\n\n\tfinishMonitorFunction(id: number) {\n\t\tlet monitor = this._functions.find(a => a.id === id);\n\n\t\tif (monitor) {\n\t\t\tmonitor.finish();\n\t\t\tthis._functionLastCompleted = monitor;\n\t\t\tthis._functionLastCompletedWS[monitor.id_socket] = monitor;\n\t\t\tthis._functions.splice(\n\t\t\t\tthis._functions.map(a => a.id).indexOf(id),\n\t\t\t\t1\n\t\t\t);\n\t\t}\n\t}\n\n\tgetActiveMonitorFunctions() {\n\t\treturn this._functions;\n\t}\n\n\tgetLastCompletedMonitorFunction() {\n\t\treturn this._functionLastCompleted;\n\t}\n\n\tgetLastCompletedMonitorFunctionWS() {\n\t\treturn this._functionLastCompletedWS;\n\t}\n}\n\nexport type MonitorFunctionType =\n\t'Cron Method'\n\t| 'Internal Method'\n\t| 'Method'\n\t| 'User Specific Publication'\n\t| 'Publication';\n\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tprivate _maxDiff = 0;\n\tprivate _functionType: MonitorFunctionType;\n\tprivate _functionName: string;\n\tprivate _user: string;\n\tprivate _data: any;\n\tpublic startTime: Date = null;\n\tpublic endTime: Date = null;\n\tpublic lastTime: Date = null;\n\tpublic id_socket = '';\n\tpublic id = 0;\n\n\tconstructor(\n\t\tid: number,\n\t\tfunctionType: MonitorFunctionType,\n\t\tfunctionName: string,\n\t\tuser: string,\n\t\tid_socket: string,\n\t\tdata: any\n\t) {\n\t\tthis.id = id;\n\t\tthis.startTime = new Date();\n\t\tthis._functionType = functionType;\n\t\tthis._functionName = functionName;\n\t\tthis._user = user;\n\t\tthis.id_socket = id_socket;\n\t\tthis._data = data;\n\t\tthis.lastTime = new Date();\n\n\t\tthis._timer = setInterval(() => {\n\t\t\tlet diff = Date.now() - this.lastTime.getTime();\n\n\t\t\tif (diff > this._maxDiff) {\n\t\t\t\tthis._maxDiff = diff;\n\t\t\t}\n\n\t\t\tthis.lastTime = new Date();\n\t\t}, 1000);\n\t}\n\n\tpublic finish() {\n\t\tif (this._timer) {\n\t\t\tclearInterval(this._timer);\n\t\t\tthis._timer = null;\n\t\t}\n\n\t\tthis.endTime = new Date();\n\n\t\tif (this._maxDiff >= 5000) {\n\t\t\t// Optional slow function logging or email\n\t\t}\n\t}\n}"]}
|
package/methods/logs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(e,r,n,i){return new(n=n||Promise)(function(o,t){function fulfilled(e){try{step(i.next(e))}catch(e){t(e)}}function rejected(e){try{step(i.throw(e))}catch(e){t(e)}}function step(e){var t;e.done?o(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(fulfilled,rejected)}step((i=i.apply(e,r||[])).next())})},__generator=this&&this.__generator||function(r,n){var i,a,c,s={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]},l={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function verb(o){return function(e){var t=[o,e];if(i)throw new TypeError("Generator is already executing.");for(;s=l&&t[l=0]?0:s;)try{if(i=1,a&&(c=2&t[0]?a.return:t[0]?a.throw||((c=a.return)&&c.call(a),0):a.next)&&!(c=c.call(a,t[1])).done)return c;switch(a=0,(t=c?[2&t[0],c.value]:t)[0]){case 0:case 1:c=t;break;case 4:return s.label++,{value:t[1],done:!1};case 5:s.label++,a=t[1],t=[0];continue;case 7:t=s.ops.pop(),s.trys.pop();continue;default:if(!(c=0<(c=s.trys).length&&c[c.length-1])&&(6===t[0]||2===t[0])){s=0;continue}if(3===t[0]&&(!c||t[1]>c[0]&&t[1]<c[3]))s.label=t[1];else if(6===t[0]&&s.label<c[1])s.label=c[1],c=t;else{if(!(c&&s.label<c[2])){c[2]&&s.ops.pop(),s.trys.pop();continue}s.label=c[2],s.ops.push(t)}}t=n.call(r,s)}catch(e){t=[6,e],a=0}finally{i=c=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}}},log_collection_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadLogMethods=void 0,require("../collections/log.collection")),log_subscription_collection_1=require("../collections/log-subscription.collection"),resolveio_server_app_1=require("../resolveio-server-app"),log_method_latency_collection_1=require("../collections/log-method-latency.collection"),common_1=require("../util/common");function loadLogMethods(e){e.methods({insertErrorLog:{function:function(e,t){
|
|
1
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(e,r,n,i){return new(n=n||Promise)(function(o,t){function fulfilled(e){try{step(i.next(e))}catch(e){t(e)}}function rejected(e){try{step(i.throw(e))}catch(e){t(e)}}function step(e){var t;e.done?o(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(fulfilled,rejected)}step((i=i.apply(e,r||[])).next())})},__generator=this&&this.__generator||function(r,n){var i,a,c,s={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]},l={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function verb(o){return function(e){var t=[o,e];if(i)throw new TypeError("Generator is already executing.");for(;s=l&&t[l=0]?0:s;)try{if(i=1,a&&(c=2&t[0]?a.return:t[0]?a.throw||((c=a.return)&&c.call(a),0):a.next)&&!(c=c.call(a,t[1])).done)return c;switch(a=0,(t=c?[2&t[0],c.value]:t)[0]){case 0:case 1:c=t;break;case 4:return s.label++,{value:t[1],done:!1};case 5:s.label++,a=t[1],t=[0];continue;case 7:t=s.ops.pop(),s.trys.pop();continue;default:if(!(c=0<(c=s.trys).length&&c[c.length-1])&&(6===t[0]||2===t[0])){s=0;continue}if(3===t[0]&&(!c||t[1]>c[0]&&t[1]<c[3]))s.label=t[1];else if(6===t[0]&&s.label<c[1])s.label=c[1],c=t;else{if(!(c&&s.label<c[2])){c[2]&&s.ops.pop(),s.trys.pop();continue}s.label=c[2],s.ops.push(t)}}t=n.call(r,s)}catch(e){t=[6,e],a=0}finally{i=c=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}}},log_collection_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadLogMethods=void 0,require("../collections/log.collection")),log_subscription_collection_1=require("../collections/log-subscription.collection"),resolveio_server_app_1=require("../resolveio-server-app"),log_method_latency_collection_1=require("../collections/log-method-latency.collection"),common_1=require("../util/common");function loadLogMethods(e){e.methods({insertErrorLog:{function:function(o,r){var n=this;return new Promise(function(e,t){n.sendEmail("dev@resolveio.com","Error Detected - "+resolveio_server_app_1.ResolveIOServer.getClientName(),n.user+"\n"+o+"\n"+JSON.stringify(r,null,2)),"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"error",collection:"",id_document:"",payload:JSON.stringify(r,null,2),method:"",id_user:n.id_user||"",user:n.user||"",messageId:0,route:""}}):log_collection_1.Logs.insertOne({_id:(0,common_1.objectIdHexString)(),type:"error",collection:"",id_document:"",payload:JSON.stringify(r,null,2),method:"",id_user:n.id_user||"",user:n.user||"",messageId:0,route:"",client:"ResolveIO",instance:"backend.resolveio.com"}),e(!0)})},skipValidation:!0},insertSubscriptionLog:{function:function(o,r,n,i){return new Promise(function(e,t){"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log-subscription",data:{_id:(0,common_1.objectIdHexString)(),__v:0,date:new Date,type:o,subscription:r,collection_name:n,subData:i}}):log_subscription_collection_1.LogSubscriptions.create({_id:(0,common_1.objectIdHexString)(),__v:0,date:new Date,type:o,subscription:r,collection_name:n,subData:i,client:"ResolveIO",instance:"backend.resolveio.com"}),e(!0)})},skipValidation:!0},insertMethodLatencyLog:{function:function(o){return new Promise(function(e,t){"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log-method-latency",data:{_id:(0,common_1.objectIdHexString)(),__v:0,date_start:new Date,date_end:null,latency_ms:0,method:o}}):log_method_latency_collection_1.LogMethodLatencies.create({_id:(0,common_1.objectIdHexString)(),__v:0,date_start:new Date,date_end:null,latency_ms:0,method:o,client:"ResolveIO",instance:"backend.resolveio.com"}),e(!0)})},skipValidation:!0},superadminAPM:{function:function(s,l,d){var t=this;return new Promise(function(c,e){return __awaiter(t,void 0,void 0,function(){var t,o,r,n,i,a;return __generator(this,function(e){switch(e.label){case 0:return[4,log_method_latency_collection_1.LogMethodLatencies.aggregate([{$match:{$and:[{createdAt:{$gte:s}},{createdAt:{$lte:l}}]}},{$group:{_id:"$method",method:{$first:"$method"},count:{$sum:1},latency_min:{$min:"$latency_ms"},latency_avg:{$avg:"$latency_ms"},latency_max:{$max:"$latency_ms"}}}],{allowDiskUse:!0,readPreference:"http://localhost:4200"!==this.serverConfig.ROOT_URL?"secondary":"primary"},!0)];case 1:return t=e.sent(),[4,log_subscription_collection_1.LogSubscriptions.aggregate([{$match:{$and:[{createdAt:{$gte:s}},{createdAt:{$lte:l}}]}},{$group:{_id:"$subscription",subscription:{$first:"$subscription"},count:{$sum:1}}}],{allowDiskUse:!0,readPreference:"http://localhost:4200"!==this.serverConfig.ROOT_URL?"secondary":"primary"},!0)];case 2:return o=e.sent(),r={},n={},n="seconds"===d?(r={second:{$second:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},minute:{$minute:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},hour:{$hour:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},day:{$dayOfMonth:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},month:{$month:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},year:{$year:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}}},{"_id.year":1,"_id.month":1,"_id.day":1,"_id.hour":1,"_id.minute":1,"_id.second":1}):"minutes"===d?(r={minute:{$minute:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},hour:{$hour:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},day:{$dayOfMonth:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},month:{$month:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},year:{$year:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}}},{"_id.year":1,"_id.month":1,"_id.day":1,"_id.hour":1,"_id.minute":1}):"hours"===d?(r={hour:{$hour:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},day:{$dayOfMonth:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},month:{$month:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},year:{$year:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}}},{"_id.year":1,"_id.month":1,"_id.day":1,"_id.hour":1}):(r={day:{$dayOfMonth:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},month:{$month:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}},year:{$year:{date:"$createdAt",timezone:process.env.TZ_CLIENT||"America/Chicago"}}},{"_id.year":1,"_id.month":1,"_id.day":1}),[4,log_method_latency_collection_1.LogMethodLatencies.aggregate([{$match:{$and:[{createdAt:{$gte:s}},{createdAt:{$lte:l}}]}},{$group:{_id:r,count:{$sum:1}}},{$sort:n}],{allowDiskUse:!0,readPreference:"http://localhost:4200"!==this.serverConfig.ROOT_URL?"secondary":"primary"},!0)];case 3:return i=e.sent(),[4,log_subscription_collection_1.LogSubscriptions.aggregate([{$match:{$and:[{createdAt:{$gte:s}},{createdAt:{$lte:l}}]}},{$group:{_id:r,count:{$sum:1}}},{$sort:n}],{allowDiskUse:!0,readPreference:"http://localhost:4200"!==this.serverConfig.ROOT_URL?"secondary":"primary"},!0)];case 4:return a=e.sent(),c({methods:t,subscriptions:o,methodGraphData:i,subGraphData:a}),[2]}})})})},skipValidation:!0}})}exports.loadLogMethods=loadLogMethods;
|
|
2
2
|
//# sourceMappingURL=logs.js.map
|
package/methods/logs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/logs.ts"],"names":["log_collection_1","require","log_subscription_collection_1","resolveio_server_app_1","log_method_latency_collection_1","common_1","loadLogMethods","methodManager","methods","insertErrorLog","function","message","data","this","sendEmail","ResolveIOServer","getClientName","user","JSON","stringify","Logs","insertOne","_id","objectIdHexString","type","collection","id_document","payload","method","id_user","messageId","route","skipValidation","insertSubscriptionLog","subscription","collection_name","subData","Promise","resolve","reject","getServerConfig","getLocalLogManager","writeLog","date","Date","__v","LogSubscriptions","create","insertMethodLatencyLog","date_start","date_end","latency_ms","LogMethodLatencies","superadminAPM","graphInterval","_this","__awaiter","aggregate","$match","$and","createdAt","$gte","$lte","$group","$first","count","$sum","latency_min","$min","latency_avg","$avg","latency_max","$max","allowDiskUse","readPreference","serverConfig","latencies","_a","sent","subscriptions","groupId","groupSort","second","$second","timezone","process","env","TZ_CLIENT","minute","$minute","hour","$hour","day","$dayOfMonth","month","$month","year","$year","_id.year","_id.month","_id.day","_id.hour","_id.minute","_id.second","$sort","methodGraphData","subGraphData","exports"],"mappings":"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","file":"logs.js","sourcesContent":["import { MethodManager } from '../managers/method.manager';\nimport { Logs } from '../collections/log.collection';\nimport { LogSubscriptions } from '../collections/log-subscription.collection';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { LogMethodLatencies } from '../collections/log-method-latency.collection';\nimport { objectIdHexString } from '../util/common';\n\nexport function loadLogMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tinsertErrorLog: {\n\t\t\tfunction: function(message, data) {\n\t\t\t\tthis.sendEmail('dev@resolveio.com', 'Error Detected - ' + ResolveIOServer.getClientName(), this.user + '\\n' + message + '\\n' + JSON.stringify(data, null, 2));\n\n\t\t\t\treturn Logs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\tcollection: '',\n\t\t\t\t\tid_document: '',\n\t\t\t\t\tpayload: JSON.stringify(data, null, 2),\n\t\t\t\t\tmethod: '',\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});\n\t\t\t},\n\t\t\tskipValidation: true\n\t\t},\n\t\tinsertSubscriptionLog: {\n\t\t\tfunction: function(type, subscription, collection_name, subData) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log-subscription',\n\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\t\t\tsubscription: subscription,\n\t\t\t\t\t\t\t\tcollection_name: collection_name,\n\t\t\t\t\t\t\t\tsubData: subData\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tLogSubscriptions.create({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\t\tsubscription: subscription,\n\t\t\t\t\t\t\tcollection_name: collection_name,\n\t\t\t\t\t\t\tsubData: subData\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(true);\n\t\t\t\t});\n\t\t\t},\n\t\t\tskipValidation: true\n\t\t},\n\t\tinsertMethodLatencyLog: {\n\t\t\tfunction: function(method) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log-method-latency',\n\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tdate_start: new Date(),\n\t\t\t\t\t\t\t\tdate_end: null,\n\t\t\t\t\t\t\t\tlatency_ms: 0,\n\t\t\t\t\t\t\t\tmethod: method\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tLogMethodLatencies.create({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\tdate_start: new Date(),\n\t\t\t\t\t\t\tdate_end: null,\n\t\t\t\t\t\t\tlatency_ms: 0,\n\t\t\t\t\t\t\tmethod: method\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(true);\n\t\t\t\t});\n\t\t\t},\n\t\t\tskipValidation: true\n\t\t},\n\t\tsuperadminAPM: {\n\t\t\tfunction: function(date_start: Date, date_end: Date, graphInterval) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet latencies = await LogMethodLatencies.aggregate([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcreatedAt: {$gte: date_start}\n\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\t\tcreatedAt: {$lte: date_end}\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\t{\n\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t_id: '$method',\n\t\t\t\t\t\t\t\tmethod: {$first: '$method'},\n\t\t\t\t\t\t\t\tcount: {$sum: 1},\n\t\t\t\t\t\t\t\tlatency_min: {$min: '$latency_ms'},\n\t\t\t\t\t\t\t\tlatency_avg: {$avg: '$latency_ms'},\n\t\t\t\t\t\t\t\tlatency_max: {$max: '$latency_ms'}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t], {allowDiskUse: true, readPreference: this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary'}, true);\n\n\t\t\t\t\tlet subscriptions = await LogSubscriptions.aggregate([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcreatedAt: {$gte: date_start}\n\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\t\tcreatedAt: {$lte: date_end}\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\t{\n\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t_id: '$subscription',\n\t\t\t\t\t\t\t\tsubscription: {$first: '$subscription'},\n\t\t\t\t\t\t\t\tcount: {$sum: 1}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t], {allowDiskUse: true, readPreference: this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary'}, true);\n\n\t\t\t\t\tlet groupId = {};\n\t\t\t\t\tlet groupSort = {};\n\n\t\t\t\t\tif (graphInterval === 'seconds') {\n\t\t\t\t\t\tgroupId = {\n\t\t\t\t\t\t\tsecond: {\n\t\t\t\t\t\t\t\t$second: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tminute: {\n\t\t\t\t\t\t\t\t$minute: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\thour: {\n\t\t\t\t\t\t\t\t$hour: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tday: {\n\t\t\t\t\t\t\t\t$dayOfMonth: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmonth: {\n\t\t\t\t\t\t\t\t$month: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tyear: {\n\t\t\t\t\t\t\t\t$year: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\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\n\t\t\t\t\t\tgroupSort = {\n\t\t\t\t\t\t\t'_id.year': 1,\n\t\t\t\t\t\t\t'_id.month': 1,\n\t\t\t\t\t\t\t'_id.day': 1,\n\t\t\t\t\t\t\t'_id.hour': 1,\n\t\t\t\t\t\t\t'_id.minute': 1,\n\t\t\t\t\t\t\t'_id.second': 1\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse if (graphInterval === 'minutes') {\n\t\t\t\t\t\tgroupId = {\n\t\t\t\t\t\t\tminute: {\n\t\t\t\t\t\t\t\t$minute: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\thour: {\n\t\t\t\t\t\t\t\t$hour: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tday: {\n\t\t\t\t\t\t\t\t$dayOfMonth: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmonth: {\n\t\t\t\t\t\t\t\t$month: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tyear: {\n\t\t\t\t\t\t\t\t$year: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\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\n\t\t\t\t\t\tgroupSort = {\n\t\t\t\t\t\t\t'_id.year': 1,\n\t\t\t\t\t\t\t'_id.month': 1,\n\t\t\t\t\t\t\t'_id.day': 1,\n\t\t\t\t\t\t\t'_id.hour': 1,\n\t\t\t\t\t\t\t'_id.minute': 1\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse if (graphInterval === 'hours') {\n\t\t\t\t\t\tgroupId = {\n\t\t\t\t\t\t\thour: {\n\t\t\t\t\t\t\t\t$hour: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tday: {\n\t\t\t\t\t\t\t\t$dayOfMonth: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmonth: {\n\t\t\t\t\t\t\t\t$month: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tyear: {\n\t\t\t\t\t\t\t\t$year: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\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\n\t\t\t\t\t\tgroupSort = {\n\t\t\t\t\t\t\t'_id.year': 1,\n\t\t\t\t\t\t\t'_id.month': 1,\n\t\t\t\t\t\t\t'_id.day': 1,\n\t\t\t\t\t\t\t'_id.hour': 1\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tgroupId = {\n\t\t\t\t\t\t\tday: {\n\t\t\t\t\t\t\t\t$dayOfMonth: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmonth: {\n\t\t\t\t\t\t\t\t$month: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tyear: {\n\t\t\t\t\t\t\t\t$year: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\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\n\t\t\t\t\t\tgroupSort = {\n\t\t\t\t\t\t\t'_id.year': 1,\n\t\t\t\t\t\t\t'_id.month': 1,\n\t\t\t\t\t\t\t'_id.day': 1\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tlet methodGraphData = await LogMethodLatencies.aggregate([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcreatedAt: {$gte: date_start}\n\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\t\tcreatedAt: {$lte: date_end}\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\t{\n\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t_id: groupId,\n\t\t\t\t\t\t\t\tcount: {\n\t\t\t\t\t\t\t\t\t$sum: 1\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{\n\t\t\t\t\t\t\t$sort: groupSort\n\t\t\t\t\t\t}\n\t\t\t\t\t], {allowDiskUse: true, readPreference: this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary'}, true);\n\n\t\t\t\t\tlet subGraphData = await LogSubscriptions.aggregate([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcreatedAt: {$gte: date_start}\n\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\t\tcreatedAt: {$lte: date_end}\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\t{\n\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t_id: groupId,\n\t\t\t\t\t\t\t\tcount: {\n\t\t\t\t\t\t\t\t\t$sum: 1\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{\n\t\t\t\t\t\t\t$sort: groupSort\n\t\t\t\t\t\t}\n\t\t\t\t\t], {allowDiskUse: true, readPreference: this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary'}, true);\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tmethods: latencies,\n\t\t\t\t\t\tsubscriptions: subscriptions,\n\t\t\t\t\t\tmethodGraphData: methodGraphData,\n\t\t\t\t\t\tsubGraphData: subGraphData\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tskipValidation: true\n\t\t}\n\t});\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/logs.ts"],"names":["log_collection_1","require","log_subscription_collection_1","resolveio_server_app_1","log_method_latency_collection_1","common_1","loadLogMethods","methodManager","methods","insertErrorLog","function","message","data","_this","this","Promise","resolve","reject","sendEmail","ResolveIOServer","getClientName","user","JSON","stringify","getServerConfig","getLocalLogManager","writeLog","type","_id","objectIdHexString","collection","id_document","payload","method","id_user","messageId","route","Logs","insertOne","client","instance","skipValidation","insertSubscriptionLog","subscription","collection_name","subData","__v","date","Date","LogSubscriptions","create","insertMethodLatencyLog","date_start","date_end","latency_ms","LogMethodLatencies","superadminAPM","graphInterval","__awaiter","aggregate","$match","$and","createdAt","$gte","$lte","$group","$first","count","$sum","latency_min","$min","latency_avg","$avg","latency_max","$max","allowDiskUse","readPreference","serverConfig","latencies","_a","sent","subscriptions","groupId","groupSort","second","$second","timezone","process","env","TZ_CLIENT","minute","$minute","hour","$hour","day","$dayOfMonth","month","$month","year","$year","_id.year","_id.month","_id.day","_id.hour","_id.minute","_id.second","$sort","methodGraphData","subGraphData","exports"],"mappings":"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","file":"logs.js","sourcesContent":["import { MethodManager } from '../managers/method.manager';\nimport { Logs } from '../collections/log.collection';\nimport { LogSubscriptions } from '../collections/log-subscription.collection';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { LogMethodLatencies } from '../collections/log-method-latency.collection';\nimport { objectIdHexString } from '../util/common';\n\nexport function loadLogMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tinsertErrorLog: {\n\t\t\tfunction: function(message, data) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tthis.sendEmail('dev@resolveio.com', 'Error Detected - ' + ResolveIOServer.getClientName(), this.user + '\\n' + message + '\\n' + JSON.stringify(data, null, 2));\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\t\tpayload: JSON.stringify(data, null, 2),\n\t\t\t\t\t\t\t\tmethod: '',\n\t\t\t\t\t\t\t\tid_user: this.id_user || '',\n\t\t\t\t\t\t\t\tuser: this.user || '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\tpayload: JSON.stringify(data, null, 2),\n\t\t\t\t\t\t\tmethod: '',\n\t\t\t\t\t\t\tid_user: this.id_user || '',\n\t\t\t\t\t\t\tuser: this.user || '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\tinstance: 'backend.resolveio.com'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(true);\n\t\t\t\t});\n\t\t\t},\n\t\t\tskipValidation: true\n\t\t},\n\t\tinsertSubscriptionLog: {\n\t\t\tfunction: function(type, subscription, collection_name, subData) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log-subscription',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\t\t\tsubscription: subscription,\n\t\t\t\t\t\t\t\tcollection_name: collection_name,\n\t\t\t\t\t\t\t\tsubData: subData\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tLogSubscriptions.create({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\t\tsubscription: subscription,\n\t\t\t\t\t\t\tcollection_name: collection_name,\n\t\t\t\t\t\t\tsubData: subData,\n\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\tinstance: 'backend.resolveio.com'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(true);\n\t\t\t\t});\n\t\t\t},\n\t\t\tskipValidation: true\n\t\t},\n\t\tinsertMethodLatencyLog: {\n\t\t\tfunction: function(method) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log-method-latency',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tdate_start: new Date(),\n\t\t\t\t\t\t\t\tdate_end: null,\n\t\t\t\t\t\t\t\tlatency_ms: 0,\n\t\t\t\t\t\t\t\tmethod: method\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tLogMethodLatencies.create({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\tdate_start: new Date(),\n\t\t\t\t\t\t\tdate_end: null,\n\t\t\t\t\t\t\tlatency_ms: 0,\n\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\tinstance: 'backend.resolveio.com'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(true);\n\t\t\t\t});\n\t\t\t},\n\t\t\tskipValidation: true\n\t\t},\n\t\tsuperadminAPM: {\n\t\t\tfunction: function(date_start: Date, date_end: Date, graphInterval) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet latencies = await LogMethodLatencies.aggregate([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcreatedAt: {$gte: date_start}\n\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\t\tcreatedAt: {$lte: date_end}\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\t{\n\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t_id: '$method',\n\t\t\t\t\t\t\t\tmethod: {$first: '$method'},\n\t\t\t\t\t\t\t\tcount: {$sum: 1},\n\t\t\t\t\t\t\t\tlatency_min: {$min: '$latency_ms'},\n\t\t\t\t\t\t\t\tlatency_avg: {$avg: '$latency_ms'},\n\t\t\t\t\t\t\t\tlatency_max: {$max: '$latency_ms'}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t], {allowDiskUse: true, readPreference: this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary'}, true);\n\n\t\t\t\t\tlet subscriptions = await LogSubscriptions.aggregate([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcreatedAt: {$gte: date_start}\n\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\t\tcreatedAt: {$lte: date_end}\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\t{\n\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t_id: '$subscription',\n\t\t\t\t\t\t\t\tsubscription: {$first: '$subscription'},\n\t\t\t\t\t\t\t\tcount: {$sum: 1}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t], {allowDiskUse: true, readPreference: this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary'}, true);\n\n\t\t\t\t\tlet groupId = {};\n\t\t\t\t\tlet groupSort = {};\n\n\t\t\t\t\tif (graphInterval === 'seconds') {\n\t\t\t\t\t\tgroupId = {\n\t\t\t\t\t\t\tsecond: {\n\t\t\t\t\t\t\t\t$second: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tminute: {\n\t\t\t\t\t\t\t\t$minute: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\thour: {\n\t\t\t\t\t\t\t\t$hour: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tday: {\n\t\t\t\t\t\t\t\t$dayOfMonth: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmonth: {\n\t\t\t\t\t\t\t\t$month: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tyear: {\n\t\t\t\t\t\t\t\t$year: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\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\n\t\t\t\t\t\tgroupSort = {\n\t\t\t\t\t\t\t'_id.year': 1,\n\t\t\t\t\t\t\t'_id.month': 1,\n\t\t\t\t\t\t\t'_id.day': 1,\n\t\t\t\t\t\t\t'_id.hour': 1,\n\t\t\t\t\t\t\t'_id.minute': 1,\n\t\t\t\t\t\t\t'_id.second': 1\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse if (graphInterval === 'minutes') {\n\t\t\t\t\t\tgroupId = {\n\t\t\t\t\t\t\tminute: {\n\t\t\t\t\t\t\t\t$minute: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\thour: {\n\t\t\t\t\t\t\t\t$hour: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tday: {\n\t\t\t\t\t\t\t\t$dayOfMonth: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmonth: {\n\t\t\t\t\t\t\t\t$month: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tyear: {\n\t\t\t\t\t\t\t\t$year: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\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\n\t\t\t\t\t\tgroupSort = {\n\t\t\t\t\t\t\t'_id.year': 1,\n\t\t\t\t\t\t\t'_id.month': 1,\n\t\t\t\t\t\t\t'_id.day': 1,\n\t\t\t\t\t\t\t'_id.hour': 1,\n\t\t\t\t\t\t\t'_id.minute': 1\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse if (graphInterval === 'hours') {\n\t\t\t\t\t\tgroupId = {\n\t\t\t\t\t\t\thour: {\n\t\t\t\t\t\t\t\t$hour: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tday: {\n\t\t\t\t\t\t\t\t$dayOfMonth: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmonth: {\n\t\t\t\t\t\t\t\t$month: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tyear: {\n\t\t\t\t\t\t\t\t$year: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\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\n\t\t\t\t\t\tgroupSort = {\n\t\t\t\t\t\t\t'_id.year': 1,\n\t\t\t\t\t\t\t'_id.month': 1,\n\t\t\t\t\t\t\t'_id.day': 1,\n\t\t\t\t\t\t\t'_id.hour': 1\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tgroupId = {\n\t\t\t\t\t\t\tday: {\n\t\t\t\t\t\t\t\t$dayOfMonth: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmonth: {\n\t\t\t\t\t\t\t\t$month: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tyear: {\n\t\t\t\t\t\t\t\t$year: {\n\t\t\t\t\t\t\t\t\tdate: '$createdAt',\n\t\t\t\t\t\t\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\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\n\t\t\t\t\t\tgroupSort = {\n\t\t\t\t\t\t\t'_id.year': 1,\n\t\t\t\t\t\t\t'_id.month': 1,\n\t\t\t\t\t\t\t'_id.day': 1\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tlet methodGraphData = await LogMethodLatencies.aggregate([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcreatedAt: {$gte: date_start}\n\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\t\tcreatedAt: {$lte: date_end}\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\t{\n\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t_id: groupId,\n\t\t\t\t\t\t\t\tcount: {\n\t\t\t\t\t\t\t\t\t$sum: 1\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{\n\t\t\t\t\t\t\t$sort: groupSort\n\t\t\t\t\t\t}\n\t\t\t\t\t], {allowDiskUse: true, readPreference: this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary'}, true);\n\n\t\t\t\t\tlet subGraphData = await LogSubscriptions.aggregate([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcreatedAt: {$gte: date_start}\n\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\t\tcreatedAt: {$lte: date_end}\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\t{\n\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t_id: groupId,\n\t\t\t\t\t\t\t\tcount: {\n\t\t\t\t\t\t\t\t\t$sum: 1\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{\n\t\t\t\t\t\t\t$sort: groupSort\n\t\t\t\t\t\t}\n\t\t\t\t\t], {allowDiskUse: true, readPreference: this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary'}, true);\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tmethods: latencies,\n\t\t\t\t\t\tsubscriptions: subscriptions,\n\t\t\t\t\t\tmethodGraphData: methodGraphData,\n\t\t\t\t\t\tsubGraphData: subGraphData\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tskipValidation: true\n\t\t}\n\t});\n}"]}
|
package/models/log.model.d.ts
CHANGED
|
@@ -9,5 +9,7 @@ export interface LogModel extends CollectionDocument {
|
|
|
9
9
|
user: string;
|
|
10
10
|
messageId: number;
|
|
11
11
|
route: string;
|
|
12
|
+
client: string;
|
|
13
|
+
instance: string;
|
|
12
14
|
}
|
|
13
15
|
export type LogTypeType = 'all' | 'error' | 'document' | 'query' | 'queryResponse' | 'client-request' | 'client-response' | 'callMethodInternal';
|
package/package.json
CHANGED
package/server-app.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(e,o,s,n){return new(s=s||Promise)(function(t,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n.throw(e))}catch(e){r(e)}}function step(e){var r;e.done?t(e.value):((r=e.value)instanceof s?r:new s(function(e){e(r)})).then(fulfilled,rejected)}step((n=n.apply(e,o||[])).next())})},__generator=this&&this.__generator||function(o,s){var n,i,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},c={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function verb(t){return function(e){var r=[t,e];if(n)throw new TypeError("Generator is already executing.");for(;l=c&&r[c=0]?0:l;)try{if(n=1,i&&(a=2&r[0]?i.return:r[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,r[1])).done)return a;switch(i=0,(r=a?[2&r[0],a.value]:r)[0]){case 0:case 1:a=r;break;case 4:return l.label++,{value:r[1],done:!1};case 5:l.label++,i=r[1],r=[0];continue;case 7:r=l.ops.pop(),l.trys.pop();continue;default:if(!(a=0<(a=l.trys).length&&a[a.length-1])&&(6===r[0]||2===r[0])){l=0;continue}if(3===r[0]&&(!a||r[1]>a[0]&&r[1]<a[3]))l.label=r[1];else if(6===r[0]&&l.label<a[1])l.label=a[1],a=r;else{if(!(a&&l.label<a[2])){a[2]&&l.ops.pop(),l.trys.pop();continue}l.label=a[2],l.ops.push(r)}}r=s.call(o,l)}catch(e){r=[6,e],i=0}finally{n=a=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}}},__values=this&&this.__values||function(e){var r="function"==typeof Symbol&&Symbol.iterator,t=r&&e[r],o=0;if(t)return t.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(r?"Object is not iterable.":"Symbol.iterator is not defined.")},__read=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var o,s,n=t.call(e),i=[];try{for(;(void 0===r||0<r--)&&!(o=n.next()).done;)i.push(o.value)}catch(e){s={error:e}}finally{try{o&&!o.done&&(t=n.return)&&t.call(n)}finally{if(s)throw s.error}}return i},__spreadArray=this&&this.__spreadArray||function(e,r,t){if(t||2===arguments.length)for(var o,s=0,n=r.length;s<n;s++)!o&&s in r||((o=o||Array.prototype.slice.call(r,0,s))[s]=r[s]);return e.concat(o||Array.prototype.slice.call(r))},http_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.ResolveIOMainServer=void 0,require("http")),express=require("express"),bodyParser=require("body-parser"),xmlParser=require("express-xml-bodyparser"),WebSocket=require("ws"),jwt=require("jsonwebtoken"),moment=require("moment-timezone"),common_1=require("./util/common"),cron_manager_1=require("./managers/cron.manager"),method_manager_1=require("./managers/method.manager"),subscription_manager_1=require("./managers/subscription.manager"),monitor_manager_1=require("./managers/monitor.manager"),log_collection_1=require("./collections/log.collection"),log_method_latency_collection_1=require("./collections/log-method-latency.collection"),user_collection_1=require("./collections/user.collection"),home_1=require("./http/home"),auth_1=require("./http/auth"),health_1=require("./http/health"),mongodb_1=require("mongodb"),worker_task_request_collection_1=require("./collections/worker-task-request.collection"),worker_task_response_collection_1=require("./collections/worker-task-response.collection"),websocket_manager_1=require("./managers/websocket.manager"),resolveio_server_app_1=require("./resolveio-server-app"),ResolveIOMainServer=function(){function ResolveIOMainServer(){this._offlineUpdates=[],this.sesMail=!1,this.standardProgram=!1,this.publicProgram=!1,this._rebootFlag=!1,this.LOGGER="ERROR",this._clientRoutes=[],this._lastErrorMsg=null,this._debugMsgRecv=0,this._debugMsgQueue=0,this._isWorkersEnabled=!1,this._isWorkerInstance=!1,this._workerTasks=[],this._safeShutdown=!1,this._serverStartTime=new Date,this._lastErrorMsg=null,this._monitorManager=new monitor_manager_1.MonitorManager,this._monitorManagerFunction=new monitor_manager_1.MonitorManagerFunction}return ResolveIOMainServer.prototype.initServerApp=function(){var e=this;this._isWorkersEnabled="true"===process.env.IS_WORKERS_ENABLED,this._isWorkerInstance="true"===process.env.IS_WORKER_INSTANCE,setInterval(function(){e._subscriptionManager&&e._subscriptionManager.getEnableDebug()&&(console.log(new Date,"Server App","Msg Recv Hits",e._debugMsgRecv),console.log(new Date,"Server App","Msg Queue Hits",e._debugMsgQueue)),e._debugMsgQueue=0,e._debugMsgRecv=0},6e4),process.on("unhandledRejection",function(o,s){return __awaiter(e,void 0,void 0,function(){var r,t=this;return __generator(this,function(e){switch(e.label){case 0:return o&&"MongoError"===o.name&&48===o.code?[2]:(console.error(new Date,"Unhandled Rejection at Promise",[o,s]),r=moment().diff(this._serverStartTime,"seconds"),o&&("MongoNetworkTimeoutError"===o.name||o instanceof mongodb_1.MongoNetworkTimeoutError)?60<r&&!this._lastErrorMsg?(this._lastErrorMsg=new Date,setTimeout(function(){t._lastErrorMsg=null},6e4),[4,this._methodManager.sendEmail("dev@resolveio.com","SERVER - MongoNetworkTimeoutError - Quitting NodeJS - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify({name:o.name,message:o.message,stack:o.stack},null,2))]):[3,2]:[3,3]);case 1:e.sent(),process.exit(1),e.label=2;case 2:return[3,10];case 3:return o&&"MongoError"===o.name&&"not master"===o.message?60<r&&!this._lastErrorMsg?(this._lastErrorMsg=new Date,setTimeout(function(){t._lastErrorMsg=null},6e4),[4,this._methodManager.sendEmail("dev@resolveio.com","SERVER - Unhandled Rejection - Quitting NodeJS - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify([o.name,o.message,o.stack],null,2))]):[3,5]:[3,6];case 4:e.sent(),e.label=5;case 5:return process.exit(1),[3,10];case 6:return o&&"MongoError"===o.name&&"not master and slaveOk=false"===o.message?60<r&&!this._lastErrorMsg?(this._lastErrorMsg=new Date,setTimeout(function(){t._lastErrorMsg=null},6e4),[4,this._methodManager.sendEmail("dev@resolveio.com","SERVER - Unhandled Rejection - Quitting NodeJS - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify([o.name,o.message,o.stack],null,2))]):[3,8]:[3,9];case 7:e.sent(),e.label=8;case 8:return process.exit(1),[3,10];case 9:o&&"StatusError"!==o.name&&""!==o.message&&60<r&&!this._lastErrorMsg&&(this._lastErrorMsg=new Date,setTimeout(function(){t._lastErrorMsg=null},6e4),this._methodManager.sendEmail("dev@resolveio.com","SERVER - Unhandled Rejection - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify([o.name,o.message,o.stack],null,2))),e.label=10;case 10:return[2]}})})}),process.on("uncaughtException",function(t){return __awaiter(e,void 0,void 0,function(){var r=this;return __generator(this,function(e){switch(e.label){case 0:return(console.error(t,"Uncaught Exception thrown"),60<moment().diff(this._serverStartTime,"seconds")&&!this._lastErrorMsg)?(this._lastErrorMsg=new Date,setTimeout(function(){r._lastErrorMsg=null},6e4),[4,this._methodManager.sendEmail("dev@resolveio.com","SERVER - Unhandled Exception - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify([t.name,t.message,t.stack],null,2))]):[3,2];case 1:e.sent(),e.label=2;case 2:return[2]}})})}),process.on("SIGINT",function(){e._rebootFlag=!0,e._serverHTTP&&e._serverHTTP.close(),e.safeShutdown()}),process.on("SIGTERM",function(){e._rebootFlag=!0,e._serverHTTP&&e._serverHTTP.close(),e.safeShutdown()}),process.on("SIGQUIT",function(){e._rebootFlag=!0,e._serverHTTP&&e._serverHTTP.close(),e.safeShutdown()}),"DEBUG"===this.LOGGER&&console.log("Starting ResolveIO Server"),this._isWorkersEnabled?this._isWorkerInstance?(console.log("Running as a Worker instance"),this._methodManager=new method_manager_1.MethodManager(this._monitorManagerFunction,this._isWorkersEnabled,this._isWorkerInstance),this._cronManager=new cron_manager_1.CronManager,this.startWorkerInstance()):(console.log("Running as a Server instance"),this._websocketManager=new websocket_manager_1.WebSocketManager(this),this.startServerInstance(),this._methodManager=new method_manager_1.MethodManager(this._monitorManagerFunction,this._isWorkersEnabled,this._isWorkerInstance),this._subscriptionManager=new subscription_manager_1.SubscriptionManager(this._serverWSS,resolveio_server_app_1.ResolveIOServer.getServerConfig(),this._monitorManagerFunction),this.listen()):(console.log("Running with Workers Disabled"),this._websocketManager=new websocket_manager_1.WebSocketManager(this),this.startServerInstance(),this._methodManager=new method_manager_1.MethodManager(this._monitorManagerFunction,this._isWorkersEnabled,this._isWorkerInstance),this._subscriptionManager=new subscription_manager_1.SubscriptionManager(this._serverWSS,resolveio_server_app_1.ResolveIOServer.getServerConfig(),this._monitorManagerFunction),this._cronManager=new cron_manager_1.CronManager,this.listen())},ResolveIOMainServer.prototype.startServerInstance=function(){this._app=express(),this._app.use(bodyParser.json({limit:"50mb",reviver:common_1.dateReviver})),this._app.use(bodyParser.urlencoded({limit:"50mb",extended:!0,parameterLimit:1e6})),this._app.use(xmlParser()),this._portHTTP=process.env.PORT_HTTP||resolveio_server_app_1.ResolveIOServer.getServerConfig().PORT_HTTP||8080,this._portWSS=process.env.PORT_WSS||resolveio_server_app_1.ResolveIOServer.getServerConfig().PORT_WSS||8081,"DEBUG"===this.LOGGER&&console.log("Setup ports"),this.createServer(),"DEBUG"===this.LOGGER&&console.log("Create server"),this._app.use(function(e,r,t){r.setHeader("Access-Control-Allow-Origin","*"),r.setHeader("Access-Control-Allow-Methods","GET, POST"),r.setHeader("Access-Control-Allow-Headers","X-Requested-With,content-type"),r.setHeader("Access-Control-Allow-Credentials","false"),t()}),"DEBUG"===this.LOGGER&&console.log("Setup cors"),(0,auth_1.setupAuthRoutes)(this,this._app,resolveio_server_app_1.ResolveIOServer.getServerConfig()),(0,health_1.setupHealthRoutes)(this._app,resolveio_server_app_1.ResolveIOServer.getServerConfig()),"ResolveIO"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME&&!this.standardProgram||(0,home_1.setupHomeRoutes)(this,this._app,resolveio_server_app_1.ResolveIOServer.getServerConfig()),"DEBUG"===this.LOGGER&&console.log("Setup express routes")},ResolveIOMainServer.prototype.startWorkerInstance=function(){return __awaiter(this,void 0,void 0,function(){var r,t,o,s,n,i,a,l=this;return __generator(this,function(e){switch(e.label){case 0:return console.log("Worker instance started, watching worker-task-reqs..."),(r=worker_task_request_collection_1.WorkerTaskRequests.watchCollection([{$match:{status:"pending"}}],{fullDocument:"updateLookup"})).on("change",function(s){return __awaiter(l,void 0,void 0,function(){var r,t,o=this;return __generator(this,function(e){return"insert"===s.operationType?(r=s.fullDocument)&&setTimeout(function(){o.processTask(r)},25*this._workerTasks.length):"update"===s.operationType&&(t=s.fullDocument)&&"pending"===t.status&&setTimeout(function(){o.processTask(t)},25*this._workerTasks.length),[2]})})}),r.on("error",function(e){console.error("Error in change stream worker task requests:",e),r&&r.close()}),r.on("close",function(){console.log("Change stream worker task requests closed. Restarting..."),setTimeout(function(){return l.startWorkerInstance()},5e3)}),[4,worker_task_request_collection_1.WorkerTaskRequests.find({status:"pending"},{sort:{createdAt:1}})];case 1:t=e.sent();try{for(o=__values(t),s=o.next();!s.done;s=o.next())n=s.value,this.processTask(n)}catch(e){i={error:e}}finally{try{s&&!s.done&&(a=o.return)&&a.call(o)}finally{if(i)throw i.error}}return[2]}})})},ResolveIOMainServer.prototype.processTask=function(a){return __awaiter(this,void 0,void 0,function(){var r=this;return __generator(this,function(e){return this._workerTasks.includes(a._id)||worker_task_request_collection_1.WorkerTaskRequests.updateOne({_id:a._id,status:"pending"},{$set:{status:"processing"}}).then(function(i){return __awaiter(r,void 0,void 0,function(){var r,t,o,s,n=this;return __generator(this,function(e){switch(e.label){case 0:if(!i)return[3,4];this._workerTasks.push(a._id),r=!1,t=setTimeout(function(){r=!0,console.error("Worker timed out processing task:",a._id),worker_task_response_collection_1.WorkerTaskResponses.create({id_request:a._id,has_error:!0,data:"Task timed out.",id_user:a.id_user,user:a.user,id_ws:a.id_ws}),n._workerTasks.includes(a._id)&&n._workerTasks.splice(n._workerTasks.indexOf(a._id),1),worker_task_request_collection_1.WorkerTaskRequests.updateOne({_id:a._id},{$set:{status:"timeout"}})},12e4),e.label=1;case 1:return e.trys.push([1,3,,4]),[4,(s=this._methodManager.callMethodInternal).call.apply(s,__spreadArray([Object.assign({},this._methodManager,method_manager_1.MethodManager.prototype,{id_user:a.id_user,user:a.user,id_ws:a.id_ws}),a.method],__read(a.params),!1))];case 2:return s=e.sent(),r||(clearTimeout(t),worker_task_response_collection_1.WorkerTaskResponses.create({id_request:a._id,has_error:!1,data:s,id_user:a.id_user,user:a.user,id_ws:a.id_ws}),this._workerTasks.includes(a._id)&&this._workerTasks.splice(this._workerTasks.indexOf(a._id),1),worker_task_request_collection_1.WorkerTaskRequests.updateOne({_id:a._id},{$set:{status:"complete"}})),[3,4];case 3:return o=e.sent(),r||(clearTimeout(t),console.error("Worker failed to process task:",a._id,o),worker_task_response_collection_1.WorkerTaskResponses.create({id_request:a._id,has_error:!0,data:o.message,id_user:a.id_user,user:a.user,id_ws:a.id_ws}),this._workerTasks.includes(a._id)&&this._workerTasks.splice(this._workerTasks.indexOf(a._id),1),worker_task_request_collection_1.WorkerTaskRequests.updateOne({_id:a._id},{$set:{status:"complete"}})),[3,4];case 4:return[2]}})})},function(){}),[2]})})},ResolveIOMainServer.prototype.safeShutdown=function(){var e=this;this._safeShutdown||console.log(new Date,"Safe Shutdown Command Received"),this._monitorManagerFunction.getActiveMonitorFunctions().length||this._offlineUpdates.length?(this._safeShutdown||(this._safeShutdown=!0,setTimeout(function(){e._safeShutdown=!1},1e3),console.log(new Date,"Safe Exit In Progress",this._monitorManagerFunction.getActiveMonitorFunctions().length,this._offlineUpdates.length)),setImmediate(function(){e.safeShutdown()})):resolveio_server_app_1.ResolveIOServer.getMongoConnection()?resolveio_server_app_1.ResolveIOServer.getMongoConnection().close(!1).then(function(){console.log(new Date,"Safe Exit Complete, Process Exit"),process.exit(0)},function(){process.exit(1)}):process.exit(0)},ResolveIOMainServer.prototype.getIsWorkersEnabled=function(){return this._isWorkersEnabled},ResolveIOMainServer.prototype.getIsWorkerInstance=function(){return this._isWorkerInstance},ResolveIOMainServer.prototype.getWSList=function(){var r=[];return this._serverWSS.clients.forEach(function(e){r.push(e.id_socket)}),r},ResolveIOMainServer.prototype.getWSUserList=function(){var r=[];return this._serverWSS.clients.forEach(function(e){r.push(e.id_user)}),r},ResolveIOMainServer.prototype.getHTTPServer=function(){return this._serverHTTP},ResolveIOMainServer.prototype.getCronManager=function(){return this._cronManager},ResolveIOMainServer.prototype.getMethodManager=function(){return this._methodManager},ResolveIOMainServer.prototype.getSubscriptionManager=function(){return this._subscriptionManager},ResolveIOMainServer.prototype.getMonitorManager=function(){return this._monitorManager},ResolveIOMainServer.prototype.getRebootFlag=function(){return this._rebootFlag},ResolveIOMainServer.prototype.getWebSocketManager=function(){return this._websocketManager},ResolveIOMainServer.prototype.createServer=function(){var e=this;this._serverHTTP=(0,http_1.createServer)(this._app),this._serverHTTP.keepAliveTimeout=65e3,this._serverHTTP.headersTimeout=66e3,this._serverWSS=new WebSocket.Server({port:this._portWSS,verifyClient:this.publicProgram?null:function(n,i){return __awaiter(e,void 0,void 0,function(){var r,s=this;return __generator(this,function(e){return this._rebootFlag?i(!1,409,"Unable To Process"):("DEBUG"===this.LOGGER&&console.log("Verify Client",n,i),r=n.req.headers["sec-websocket-protocol"].split(/,/),(n.origin===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||n.origin===resolveio_server_app_1.ResolveIOServer.getServerConfig().SEC_ROOT_URL||n.origin===resolveio_server_app_1.ResolveIOServer.getServerConfig().RESOLVEIO_URL||n.origin===resolveio_server_app_1.ResolveIOServer.getServerConfig().RESOLVEIO_SECONDARY_URL)&&(r=r[0])?jwt.verify(r,resolveio_server_app_1.ResolveIOServer.getServerConfig().JWT_SECRET,function(t,o){return __awaiter(s,void 0,void 0,function(){var r;return __generator(this,function(e){switch(e.label){case 0:return t?(i(!1,401,"Unauthorized"),[3,5]):[3,1];case 1:n.req.id_user=o.id_user,e.label=2;case 2:return e.trys.push([2,4,,5]),[4,user_collection_1.Users.findById(o.id_user)];case 3:return(r=e.sent())?(n.req.user=r.fullname,n.req.user_readonly=r.readonly||!1,n.req.doc_user=r,i(!0)):i(!1),[3,5];case 4:return e.sent(),i(!1),[3,5];case 5:return[2]}})})}):i(!1,401,"Unauthorized")),[2]})})}})},ResolveIOMainServer.prototype.listen=function(){var t=this;this._serverHTTP.listen(this._portHTTP,function(){console.log("Running server on port %s",t._portHTTP)}),this._serverWSS.on("listening",function(){console.log("Running server on port %s",t._portWSS)}),this._serverWSS.on("connection",function(c,e){t.publicProgram||(c.id_user=e.id_user,c.user=e.user,c.user_readonly=e.user_readonly,c.doc_user=e.doc_user,"Admin"!==c.user&&"ResolveIO"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME&&t.getMethodManager().callMethodInternal.call(t.getMethodManager(),"supportCreateBillingUser",{id_user:c.id_user,user:c.user,date:new Date,client:resolveio_server_app_1.ResolveIOServer.getClientName()})),c.id_socket=(0,common_1.objectIdHexString)(),c.retryCnt=0,t._websocketManager.addWebSocket(c),t._subscriptionManager.createLoggedInUser(c.id_socket).then(function(){setTimeout(function(){c.pingTime=new Date,c.send("ping",function(e){e&&(t._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","Error WS Ping"),t.unsubscribeWS(c))})},5e3)}),"DEBUG"===t.LOGGER&&console.log("Connection from: "+e.user),c.isAlive=!0,c.on("message",function(l){return __awaiter(t,void 0,void 0,function(){var r,t,o,s,n,i,a=this;return __generator(this,function(e){switch(e.label){case 0:"DEBUG"===this.LOGGER&&console.log("Message from: "+c.user,l),this._debugMsgRecv+=1,s=!1,r=[];try{r=JSON.parse(l,common_1.dateReviver)}catch(e){console.log("Error - JSON.parse",l),this._methodManager.sendEmail("dev@resolveio.com","SERVER - JSON Parse Error - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify([l,e])),s=!0}if(s)return[3,8];if("string"==typeof r&&"ping"===r)c&&c.readyState===c.OPEN&&c.send("pong",function(e){e&&(a._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","Error WS Pong"),a.unsubscribeWS(c))});else if("string"==typeof r&&"pong"===r)c.isAlive=!0,c.pongTime=new Date,c.latency=moment.duration(moment(c.pongTime).diff(c.pingTime)).asMilliseconds(),this._subscriptionManager.loggedInLatency(c);else{if(Array.isArray(r[0]))return[3,1];console.log("Invalid message format, expected array:",r)}return[2];case 1:e.trys.push([1,6,7,8]),t=__values(r),o=t.next(),e.label=2;case 2:return o.done?[3,5]:(s=o.value,[4,this.processSocketMessage(c,s)]);case 3:e.sent(),e.label=4;case 4:return o=t.next(),[3,2];case 5:return[3,8];case 6:return n=e.sent(),n={error:n},[3,8];case 7:try{o&&!o.done&&(i=t.return)&&i.call(t)}finally{if(n)throw n.error}return[7];case 8:return[2]}})})}).on("end",function(){t.unsubscribeWS(c),t._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","WS End")}).on("close",function(){t.unsubscribeWS(c),t._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","WS Close")}).on("error",function(e){t.unsubscribeWS(c),t._subscriptionManager.getEnableDebug()&&console.log(new Date,c.user,c.id_socket,"WS Error")})}),setInterval(function(){t._serverWSS.clients.forEach(function(r){r.pingTime&&2e4<=Date.now()-r.pingTime.getTime()&&(!1===r.isAlive?(r.retryCnt++,3<=r.retryCnt?t.unsubscribeWS(r):(r.pingTime=new Date,r.send("ping",function(e){e&&(t._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","Error WS Ping"),t.unsubscribeWS(r))}))):(r.retryCnt=0,r.isAlive=!1,r.pingTime=new Date,r.send("ping",function(e){e&&(t._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","Error WS Ping"),t.unsubscribeWS(r))})))})},2e4)},ResolveIOMainServer.prototype.processSocketMessage=function(f,m){return __awaiter(this,void 0,void 0,function(){var r,t,o,s,n,i,a,l,c,u,_,g,d,p,h,v;return __generator(this,function(e){switch(e.label){case 0:return(r=m[0],this.publicProgram||!this._clientRoutes.some(function(e){return r.includes(e)})||f.doc_user.roles.groups.some(function(e){return e.views.some(function(e){return r.includes(e)||e.includes(r)})})||f.doc_user.roles.super_admin)?(a=m[1],t=m[2],"subscription"!==(o=m[3])?[3,1]:(i=m[4],l=m[5],"sub"===i?this._subscriptionManager.subscribe(r,a,f,t,l,m.slice(6)):this._subscriptionManager.unsubscribe(r,a,f,t,l,m.slice(6)),[3,11])):[2];case 1:if(this.publicProgram||"offline"!==o)return[3,10];p={messageId:t,hasError:!1,data:"ACK"},f&&f.readyState===f.OPEN&&this._websocketManager.send(f,p),this._offlineUpdates.push(f),s=m[4],n=0,e.label=2;case 2:if(!(n<s.length))return[3,9];if(i=s[n],c=i.data,c.shift(),c.shift(),a=c.shift(),c.shift(),g=c.shift(),d=(0,common_1.objectIdHexString)(),l={messageId:a,hasError:!1,data:"ACK"},f&&f.readyState===f.OPEN&&this._websocketManager.send(f,l),"insertDocument"===g&&"driver-gps"===c[0])return[3,8];if("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log-method-latency",date:new Date,data:{_id:d,__v:0,date_start:new Date,date_end:null,latency_ms:0,method:g}}):log_method_latency_collection_1.LogMethodLatencies.create({_id:d,__v:0,date_start:new Date,date_end:null,latency_ms:0,method:g}),"reportBuilderGetResults"!==g&&"reportBuilderGetDistinctValue"!==g&&"reportBuilderBuildTree"!==g&&"generatePDF"!==g&&"getWOOfflineData"!==g&&"countQuery"!==g&&"countWithQuery"!==g&&"countCollectionWithQuery"!==g&&"find"!==g&&"findOne"!==g&&"findWithOptions"!==g&&"getDrivers"!==g&&"processAirdropDistribution"!==g&&log_collection_1.Logs.insertOne({_id:(0,common_1.objectIdHexString)(),type:"client-request",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify(c))<2e5?JSON.stringify(c,null,2):"Too Big",method:g,id_user:f.id_user||"",user:f.user||"",messageId:t,route:r}),!this._methodManager._methods[g])return[3,7];e.label=3;case 3:return e.trys.push([3,5,,6]),[4,(h=this._methodManager.callMethodInternal).call.apply(h,__spreadArray([Object.assign({},this._methodManager,method_manager_1.MethodManager.prototype,{id_user:f.id_user,user:f.user,id_ws:f.id_socket}),g],__read(c),!1))];case 4:return e.sent(),[3,6];case 5:return h=e.sent(),console.log(new Date,"Offline Error",JSON.stringify(h,null,2)),[3,6];case 6:return"updateDocumentOffline"!==g&&"updateDocumentPropsOffline"!==g||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c[0]),[3,8];case 7:console.log("Offline - Could not find method: "+g),e.label=8;case 8:return n++,[3,2];case 9:return this._offlineUpdates.splice(this._offlineUpdates.map(function(e){return e.id_socket}).indexOf(f.id_socket),1),[3,11];case 10:if(c=__spreadArray([],__read(m),!1),v=c.shift(),u=c.shift(),_=c.shift(),"method"===c.shift()){if(g=c.shift(),f.user_readonly)return[2];d=(0,common_1.objectIdHexString)(),"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log-method-latency",date:new Date,data:{_id:d,__v:0,date_start:new Date,date_end:null,latency_ms:0,method:g}}):log_method_latency_collection_1.LogMethodLatencies.create({_id:d,__v:0,date_start:new Date,date_end:null,latency_ms:0,method:g}),"reportBuilderGetResults"!==g&&"reportBuilderGetDistinctValue"!==g&&"reportBuilderBuildTree"!==g&&"generatePDF"!==g&&"getWOOfflineData"!==g&&"countQuery"!==g&&"countWithQuery"!==g&&"countCollectionWithQuery"!==g&&"find"!==g&&"findOne"!==g&&"findWithOptions"!==g&&"getDrivers"!==g&&"processAirdropDistribution"!==g&&log_collection_1.Logs.insertOne({_id:(0,common_1.objectIdHexString)(),type:"client-request",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify(c))<2e5?JSON.stringify(c,null,2):"Too Big",method:g,id_user:f.id_user||"",user:f.user||"",messageId:_,route:v}),p={messageId:_,hasError:!1,data:"ACK"},f&&f.readyState===f.OPEN&&this._websocketManager.send(f,p),this._methodManager._methods[g]?(v=this._methodManager).callMethod.apply(v,__spreadArray([d,f,u,_,g],__read(c),!1)):console.log("Could not find method: "+g)}e.label=11;case 11:return[2]}})})},ResolveIOMainServer.prototype.unsubscribeWS=function(e){this._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","Unsub WS",e.user,e.id_socket),this._subscriptionManager.unsubscribeAll(e),e.removeAllListeners()},ResolveIOMainServer.prototype.getApp=function(){return this._app},ResolveIOMainServer.prototype.getServerConfig=function(){return resolveio_server_app_1.ResolveIOServer.getServerConfig()},ResolveIOMainServer}();exports.ResolveIOMainServer=ResolveIOMainServer;
|
|
1
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(e,o,s,n){return new(s=s||Promise)(function(t,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n.throw(e))}catch(e){r(e)}}function step(e){var r;e.done?t(e.value):((r=e.value)instanceof s?r:new s(function(e){e(r)})).then(fulfilled,rejected)}step((n=n.apply(e,o||[])).next())})},__generator=this&&this.__generator||function(o,s){var n,i,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},c={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function verb(t){return function(e){var r=[t,e];if(n)throw new TypeError("Generator is already executing.");for(;l=c&&r[c=0]?0:l;)try{if(n=1,i&&(a=2&r[0]?i.return:r[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,r[1])).done)return a;switch(i=0,(r=a?[2&r[0],a.value]:r)[0]){case 0:case 1:a=r;break;case 4:return l.label++,{value:r[1],done:!1};case 5:l.label++,i=r[1],r=[0];continue;case 7:r=l.ops.pop(),l.trys.pop();continue;default:if(!(a=0<(a=l.trys).length&&a[a.length-1])&&(6===r[0]||2===r[0])){l=0;continue}if(3===r[0]&&(!a||r[1]>a[0]&&r[1]<a[3]))l.label=r[1];else if(6===r[0]&&l.label<a[1])l.label=a[1],a=r;else{if(!(a&&l.label<a[2])){a[2]&&l.ops.pop(),l.trys.pop();continue}l.label=a[2],l.ops.push(r)}}r=s.call(o,l)}catch(e){r=[6,e],i=0}finally{n=a=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}}},__values=this&&this.__values||function(e){var r="function"==typeof Symbol&&Symbol.iterator,t=r&&e[r],o=0;if(t)return t.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(r?"Object is not iterable.":"Symbol.iterator is not defined.")},__read=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var o,s,n=t.call(e),i=[];try{for(;(void 0===r||0<r--)&&!(o=n.next()).done;)i.push(o.value)}catch(e){s={error:e}}finally{try{o&&!o.done&&(t=n.return)&&t.call(n)}finally{if(s)throw s.error}}return i},__spreadArray=this&&this.__spreadArray||function(e,r,t){if(t||2===arguments.length)for(var o,s=0,n=r.length;s<n;s++)!o&&s in r||((o=o||Array.prototype.slice.call(r,0,s))[s]=r[s]);return e.concat(o||Array.prototype.slice.call(r))},http_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.ResolveIOMainServer=void 0,require("http")),express=require("express"),bodyParser=require("body-parser"),xmlParser=require("express-xml-bodyparser"),WebSocket=require("ws"),jwt=require("jsonwebtoken"),moment=require("moment-timezone"),common_1=require("./util/common"),cron_manager_1=require("./managers/cron.manager"),method_manager_1=require("./managers/method.manager"),subscription_manager_1=require("./managers/subscription.manager"),monitor_manager_1=require("./managers/monitor.manager"),log_collection_1=require("./collections/log.collection"),log_method_latency_collection_1=require("./collections/log-method-latency.collection"),user_collection_1=require("./collections/user.collection"),home_1=require("./http/home"),auth_1=require("./http/auth"),health_1=require("./http/health"),mongodb_1=require("mongodb"),worker_task_request_collection_1=require("./collections/worker-task-request.collection"),worker_task_response_collection_1=require("./collections/worker-task-response.collection"),websocket_manager_1=require("./managers/websocket.manager"),resolveio_server_app_1=require("./resolveio-server-app"),ResolveIOMainServer=function(){function ResolveIOMainServer(){this._offlineUpdates=[],this.sesMail=!1,this.standardProgram=!1,this.publicProgram=!1,this._rebootFlag=!1,this.LOGGER="ERROR",this._clientRoutes=[],this._lastErrorMsg=null,this._debugMsgRecv=0,this._debugMsgQueue=0,this._isWorkersEnabled=!1,this._isWorkerInstance=!1,this._workerTasks=[],this._safeShutdown=!1,this._serverStartTime=new Date,this._lastErrorMsg=null,this._monitorManager=new monitor_manager_1.MonitorManager,this._monitorManagerFunction=new monitor_manager_1.MonitorManagerFunction}return ResolveIOMainServer.prototype.initServerApp=function(){var e=this;this._isWorkersEnabled="true"===process.env.IS_WORKERS_ENABLED,this._isWorkerInstance="true"===process.env.IS_WORKER_INSTANCE,setInterval(function(){e._subscriptionManager&&e._subscriptionManager.getEnableDebug()&&(console.log(new Date,"Server App","Msg Recv Hits",e._debugMsgRecv),console.log(new Date,"Server App","Msg Queue Hits",e._debugMsgQueue)),e._debugMsgQueue=0,e._debugMsgRecv=0},6e4),process.on("unhandledRejection",function(o,s){return __awaiter(e,void 0,void 0,function(){var r,t=this;return __generator(this,function(e){switch(e.label){case 0:return o&&"MongoError"===o.name&&48===o.code?[2]:(console.error(new Date,"Unhandled Rejection at Promise",[o,s]),r=moment().diff(this._serverStartTime,"seconds"),o&&("MongoNetworkTimeoutError"===o.name||o instanceof mongodb_1.MongoNetworkTimeoutError)?60<r&&!this._lastErrorMsg?(this._lastErrorMsg=new Date,setTimeout(function(){t._lastErrorMsg=null},6e4),[4,this._methodManager.sendEmail("dev@resolveio.com","SERVER - MongoNetworkTimeoutError - Quitting NodeJS - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify({name:o.name,message:o.message,stack:o.stack},null,2))]):[3,2]:[3,3]);case 1:e.sent(),process.exit(1),e.label=2;case 2:return[3,10];case 3:return o&&"MongoError"===o.name&&"not master"===o.message?60<r&&!this._lastErrorMsg?(this._lastErrorMsg=new Date,setTimeout(function(){t._lastErrorMsg=null},6e4),[4,this._methodManager.sendEmail("dev@resolveio.com","SERVER - Unhandled Rejection - Quitting NodeJS - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify([o.name,o.message,o.stack],null,2))]):[3,5]:[3,6];case 4:e.sent(),e.label=5;case 5:return process.exit(1),[3,10];case 6:return o&&"MongoError"===o.name&&"not master and slaveOk=false"===o.message?60<r&&!this._lastErrorMsg?(this._lastErrorMsg=new Date,setTimeout(function(){t._lastErrorMsg=null},6e4),[4,this._methodManager.sendEmail("dev@resolveio.com","SERVER - Unhandled Rejection - Quitting NodeJS - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify([o.name,o.message,o.stack],null,2))]):[3,8]:[3,9];case 7:e.sent(),e.label=8;case 8:return process.exit(1),[3,10];case 9:o&&"StatusError"!==o.name&&""!==o.message&&60<r&&!this._lastErrorMsg&&(this._lastErrorMsg=new Date,setTimeout(function(){t._lastErrorMsg=null},6e4),this._methodManager.sendEmail("dev@resolveio.com","SERVER - Unhandled Rejection - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify([o.name,o.message,o.stack],null,2))),e.label=10;case 10:return[2]}})})}),process.on("uncaughtException",function(t){return __awaiter(e,void 0,void 0,function(){var r=this;return __generator(this,function(e){switch(e.label){case 0:return(console.error(t,"Uncaught Exception thrown"),60<moment().diff(this._serverStartTime,"seconds")&&!this._lastErrorMsg)?(this._lastErrorMsg=new Date,setTimeout(function(){r._lastErrorMsg=null},6e4),[4,this._methodManager.sendEmail("dev@resolveio.com","SERVER - Unhandled Exception - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify([t.name,t.message,t.stack],null,2))]):[3,2];case 1:e.sent(),e.label=2;case 2:return[2]}})})}),process.on("SIGINT",function(){e._rebootFlag=!0,e._serverHTTP&&e._serverHTTP.close(),e.safeShutdown()}),process.on("SIGTERM",function(){e._rebootFlag=!0,e._serverHTTP&&e._serverHTTP.close(),e.safeShutdown()}),process.on("SIGQUIT",function(){e._rebootFlag=!0,e._serverHTTP&&e._serverHTTP.close(),e.safeShutdown()}),"DEBUG"===this.LOGGER&&console.log("Starting ResolveIO Server"),this._isWorkersEnabled?this._isWorkerInstance?(console.log("Running as a Worker instance"),this._methodManager=new method_manager_1.MethodManager(this._monitorManagerFunction,this._isWorkersEnabled,this._isWorkerInstance),this._cronManager=new cron_manager_1.CronManager,this.startWorkerInstance()):(console.log("Running as a Server instance"),this._websocketManager=new websocket_manager_1.WebSocketManager(this),this.startServerInstance(),this._methodManager=new method_manager_1.MethodManager(this._monitorManagerFunction,this._isWorkersEnabled,this._isWorkerInstance),this._subscriptionManager=new subscription_manager_1.SubscriptionManager(this._serverWSS,resolveio_server_app_1.ResolveIOServer.getServerConfig(),this._monitorManagerFunction),this.listen()):(console.log("Running with Workers Disabled"),this._websocketManager=new websocket_manager_1.WebSocketManager(this),this.startServerInstance(),this._methodManager=new method_manager_1.MethodManager(this._monitorManagerFunction,this._isWorkersEnabled,this._isWorkerInstance),this._subscriptionManager=new subscription_manager_1.SubscriptionManager(this._serverWSS,resolveio_server_app_1.ResolveIOServer.getServerConfig(),this._monitorManagerFunction),this._cronManager=new cron_manager_1.CronManager,this.listen())},ResolveIOMainServer.prototype.startServerInstance=function(){this._app=express(),this._app.use(bodyParser.json({limit:"50mb",reviver:common_1.dateReviver})),this._app.use(bodyParser.urlencoded({limit:"50mb",extended:!0,parameterLimit:1e6})),this._app.use(xmlParser()),this._portHTTP=process.env.PORT_HTTP||resolveio_server_app_1.ResolveIOServer.getServerConfig().PORT_HTTP||8080,this._portWSS=process.env.PORT_WSS||resolveio_server_app_1.ResolveIOServer.getServerConfig().PORT_WSS||8081,"DEBUG"===this.LOGGER&&console.log("Setup ports"),this.createServer(),"DEBUG"===this.LOGGER&&console.log("Create server"),this._app.use(function(e,r,t){r.setHeader("Access-Control-Allow-Origin","*"),r.setHeader("Access-Control-Allow-Methods","GET, POST"),r.setHeader("Access-Control-Allow-Headers","X-Requested-With,content-type"),r.setHeader("Access-Control-Allow-Credentials","false"),t()}),"DEBUG"===this.LOGGER&&console.log("Setup cors"),(0,auth_1.setupAuthRoutes)(this,this._app,resolveio_server_app_1.ResolveIOServer.getServerConfig()),(0,health_1.setupHealthRoutes)(this._app,resolveio_server_app_1.ResolveIOServer.getServerConfig()),"ResolveIO"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME&&!this.standardProgram||(0,home_1.setupHomeRoutes)(this,this._app,resolveio_server_app_1.ResolveIOServer.getServerConfig()),"DEBUG"===this.LOGGER&&console.log("Setup express routes")},ResolveIOMainServer.prototype.startWorkerInstance=function(){return __awaiter(this,void 0,void 0,function(){var r,t,o,s,n,i,a,l=this;return __generator(this,function(e){switch(e.label){case 0:return console.log("Worker instance started, watching worker-task-reqs..."),(r=worker_task_request_collection_1.WorkerTaskRequests.watchCollection([])).on("change",function(o){return __awaiter(l,void 0,void 0,function(){var r,t=this;return __generator(this,function(e){return"insert"===o.operationType&&(r=o.fullDocument)&&setTimeout(function(){t.processTask(r)},25*this._workerTasks.length),[2]})})}),r.on("error",function(e){console.error("Error in change stream worker task requests:",e),r&&r.close()}),r.on("close",function(){console.log("Change stream worker task requests closed. Restarting..."),setTimeout(function(){return l.startWorkerInstance()},5e3)}),[4,worker_task_request_collection_1.WorkerTaskRequests.find({status:"pending"},{sort:{createdAt:1}})];case 1:t=e.sent();try{for(o=__values(t),s=o.next();!s.done;s=o.next())n=s.value,this.processTask(n)}catch(e){i={error:e}}finally{try{s&&!s.done&&(a=o.return)&&a.call(o)}finally{if(i)throw i.error}}return[2]}})})},ResolveIOMainServer.prototype.processTask=function(a){return __awaiter(this,void 0,void 0,function(){var r=this;return __generator(this,function(e){return this._workerTasks.includes(a._id)||worker_task_request_collection_1.WorkerTaskRequests.updateOne({_id:a._id,status:"pending"},{$set:{status:"processing"}}).then(function(i){return __awaiter(r,void 0,void 0,function(){var r,t,o,s,n=this;return __generator(this,function(e){switch(e.label){case 0:if(!i)return[3,4];this._workerTasks.push(a._id),r=!1,t=setTimeout(function(){r=!0,console.error("Worker timed out processing task:",a._id),worker_task_response_collection_1.WorkerTaskResponses.create({id_request:a._id,has_error:!0,data:"Task timed out.",id_user:a.id_user,user:a.user,id_ws:a.id_ws}),n._workerTasks.includes(a._id)&&n._workerTasks.splice(n._workerTasks.indexOf(a._id),1),worker_task_request_collection_1.WorkerTaskRequests.updateOne({_id:a._id},{$set:{status:"timeout"}})},12e4),e.label=1;case 1:return e.trys.push([1,3,,4]),[4,(s=this._methodManager.callMethodInternal).call.apply(s,__spreadArray([Object.assign({},this._methodManager,method_manager_1.MethodManager.prototype,{id_user:a.id_user,user:a.user,id_ws:a.id_ws}),a.method],__read(a.params),!1))];case 2:return s=e.sent(),r||(clearTimeout(t),worker_task_response_collection_1.WorkerTaskResponses.create({id_request:a._id,has_error:!1,data:s,id_user:a.id_user,user:a.user,id_ws:a.id_ws}),this._workerTasks.includes(a._id)&&this._workerTasks.splice(this._workerTasks.indexOf(a._id),1),worker_task_request_collection_1.WorkerTaskRequests.updateOne({_id:a._id},{$set:{status:"complete"}})),[3,4];case 3:return o=e.sent(),r||(clearTimeout(t),console.error("Worker failed to process task:",a._id,o),worker_task_response_collection_1.WorkerTaskResponses.create({id_request:a._id,has_error:!0,data:o.message,id_user:a.id_user,user:a.user,id_ws:a.id_ws}),this._workerTasks.includes(a._id)&&this._workerTasks.splice(this._workerTasks.indexOf(a._id),1),worker_task_request_collection_1.WorkerTaskRequests.updateOne({_id:a._id},{$set:{status:"complete"}})),[3,4];case 4:return[2]}})})},function(){}),[2]})})},ResolveIOMainServer.prototype.safeShutdown=function(){var e=this;this._safeShutdown||console.log(new Date,"Safe Shutdown Command Received"),this._monitorManagerFunction.getActiveMonitorFunctions().length||this._offlineUpdates.length?(this._safeShutdown||(this._safeShutdown=!0,setTimeout(function(){e._safeShutdown=!1},1e3),console.log(new Date,"Safe Exit In Progress",this._monitorManagerFunction.getActiveMonitorFunctions().length,this._offlineUpdates.length)),setImmediate(function(){e.safeShutdown()})):resolveio_server_app_1.ResolveIOServer.getMongoConnection()?resolveio_server_app_1.ResolveIOServer.getMongoConnection().close(!1).then(function(){console.log(new Date,"Safe Exit Complete, Process Exit"),process.exit(0)},function(){process.exit(1)}):process.exit(0)},ResolveIOMainServer.prototype.getIsWorkersEnabled=function(){return this._isWorkersEnabled},ResolveIOMainServer.prototype.getIsWorkerInstance=function(){return this._isWorkerInstance},ResolveIOMainServer.prototype.getWSList=function(){var r=[];return this._serverWSS.clients.forEach(function(e){r.push(e.id_socket)}),r},ResolveIOMainServer.prototype.getWSUserList=function(){var r=[];return this._serverWSS.clients.forEach(function(e){r.push(e.id_user)}),r},ResolveIOMainServer.prototype.getHTTPServer=function(){return this._serverHTTP},ResolveIOMainServer.prototype.getCronManager=function(){return this._cronManager},ResolveIOMainServer.prototype.getMethodManager=function(){return this._methodManager},ResolveIOMainServer.prototype.getSubscriptionManager=function(){return this._subscriptionManager},ResolveIOMainServer.prototype.getMonitorManager=function(){return this._monitorManager},ResolveIOMainServer.prototype.getRebootFlag=function(){return this._rebootFlag},ResolveIOMainServer.prototype.getWebSocketManager=function(){return this._websocketManager},ResolveIOMainServer.prototype.createServer=function(){var e=this;this._serverHTTP=(0,http_1.createServer)(this._app),this._serverHTTP.keepAliveTimeout=65e3,this._serverHTTP.headersTimeout=66e3,this._serverWSS=new WebSocket.Server({port:this._portWSS,verifyClient:this.publicProgram?null:function(n,i){return __awaiter(e,void 0,void 0,function(){var r,s=this;return __generator(this,function(e){return this._rebootFlag?i(!1,409,"Unable To Process"):("DEBUG"===this.LOGGER&&console.log("Verify Client",n,i),r=n.req.headers["sec-websocket-protocol"].split(/,/),(n.origin===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||n.origin===resolveio_server_app_1.ResolveIOServer.getServerConfig().SEC_ROOT_URL||n.origin===resolveio_server_app_1.ResolveIOServer.getServerConfig().RESOLVEIO_URL||n.origin===resolveio_server_app_1.ResolveIOServer.getServerConfig().RESOLVEIO_SECONDARY_URL)&&(r=r[0])?jwt.verify(r,resolveio_server_app_1.ResolveIOServer.getServerConfig().JWT_SECRET,function(t,o){return __awaiter(s,void 0,void 0,function(){var r;return __generator(this,function(e){switch(e.label){case 0:return t?(i(!1,401,"Unauthorized"),[3,5]):[3,1];case 1:n.req.id_user=o.id_user,e.label=2;case 2:return e.trys.push([2,4,,5]),[4,user_collection_1.Users.findById(o.id_user)];case 3:return(r=e.sent())?(n.req.user=r.fullname,n.req.user_readonly=r.readonly||!1,n.req.doc_user=r,i(!0)):i(!1),[3,5];case 4:return e.sent(),i(!1),[3,5];case 5:return[2]}})})}):i(!1,401,"Unauthorized")),[2]})})}})},ResolveIOMainServer.prototype.listen=function(){var t=this;this._serverHTTP.listen(this._portHTTP,function(){console.log("Running server on port %s",t._portHTTP)}),this._serverWSS.on("listening",function(){console.log("Running server on port %s",t._portWSS)}),this._serverWSS.on("connection",function(c,e){t.publicProgram||(c.id_user=e.id_user,c.user=e.user,c.user_readonly=e.user_readonly,c.doc_user=e.doc_user,"Admin"!==c.user&&"ResolveIO"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME&&t.getMethodManager().callMethodInternal.call(t.getMethodManager(),"supportCreateBillingUser",{id_user:c.id_user,user:c.user,date:new Date,client:resolveio_server_app_1.ResolveIOServer.getClientName()})),c.id_socket=(0,common_1.objectIdHexString)(),c.retryCnt=0,t._websocketManager.addWebSocket(c),t._subscriptionManager.createLoggedInUser(c.id_socket).then(function(){setTimeout(function(){c.pingTime=new Date,c.send("ping",function(e){e&&(t._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","Error WS Ping"),t.unsubscribeWS(c))})},5e3)}),"DEBUG"===t.LOGGER&&console.log("Connection from: "+e.user),c.isAlive=!0,c.on("message",function(l){return __awaiter(t,void 0,void 0,function(){var r,t,o,s,n,i,a=this;return __generator(this,function(e){switch(e.label){case 0:"DEBUG"===this.LOGGER&&console.log("Message from: "+c.user,l),this._debugMsgRecv+=1,s=!1,r=[];try{r=JSON.parse(l,common_1.dateReviver)}catch(e){console.log("Error - JSON.parse",l),this._methodManager.sendEmail("dev@resolveio.com","SERVER - JSON Parse Error - "+resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME,JSON.stringify([l,e])),s=!0}if(s)return[3,8];if("string"==typeof r&&"ping"===r)c&&c.readyState===c.OPEN&&c.send("pong",function(e){e&&(a._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","Error WS Pong"),a.unsubscribeWS(c))});else if("string"==typeof r&&"pong"===r)c.isAlive=!0,c.pongTime=new Date,c.latency=moment.duration(moment(c.pongTime).diff(c.pingTime)).asMilliseconds(),this._subscriptionManager.loggedInLatency(c);else{if(Array.isArray(r[0]))return[3,1];console.log("Invalid message format, expected array:",r)}return[2];case 1:e.trys.push([1,6,7,8]),t=__values(r),o=t.next(),e.label=2;case 2:return o.done?[3,5]:(s=o.value,[4,this.processSocketMessage(c,s)]);case 3:e.sent(),e.label=4;case 4:return o=t.next(),[3,2];case 5:return[3,8];case 6:return n=e.sent(),n={error:n},[3,8];case 7:try{o&&!o.done&&(i=t.return)&&i.call(t)}finally{if(n)throw n.error}return[7];case 8:return[2]}})})}).on("end",function(){t.unsubscribeWS(c),t._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","WS End")}).on("close",function(){t.unsubscribeWS(c),t._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","WS Close")}).on("error",function(e){t.unsubscribeWS(c),t._subscriptionManager.getEnableDebug()&&console.log(new Date,c.user,c.id_socket,"WS Error")})}),setInterval(function(){t._serverWSS.clients.forEach(function(r){r.pingTime&&2e4<=Date.now()-r.pingTime.getTime()&&(!1===r.isAlive?(r.retryCnt++,3<=r.retryCnt?t.unsubscribeWS(r):(r.pingTime=new Date,r.send("ping",function(e){e&&(t._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","Error WS Ping"),t.unsubscribeWS(r))}))):(r.retryCnt=0,r.isAlive=!1,r.pingTime=new Date,r.send("ping",function(e){e&&(t._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","Error WS Ping"),t.unsubscribeWS(r))})))})},2e4)},ResolveIOMainServer.prototype.processSocketMessage=function(f,m){return __awaiter(this,void 0,void 0,function(){var r,t,o,s,n,i,a,l,c,_,u,g,d,v,p,h;return __generator(this,function(e){switch(e.label){case 0:return(r=m[0],this.publicProgram||!this._clientRoutes.some(function(e){return r.includes(e)})||f.doc_user.roles.groups.some(function(e){return e.views.some(function(e){return r.includes(e)||e.includes(r)})})||f.doc_user.roles.super_admin)?(a=m[1],t=m[2],"subscription"!==(o=m[3])?[3,1]:(i=m[4],l=m[5],"sub"===i?this._subscriptionManager.subscribe(r,a,f,t,l,m.slice(6)):this._subscriptionManager.unsubscribe(r,a,f,t,l,m.slice(6)),[3,11])):[2];case 1:if(this.publicProgram||"offline"!==o)return[3,10];v={messageId:t,hasError:!1,data:"ACK"},f&&f.readyState===f.OPEN&&this._websocketManager.send(f,v),this._offlineUpdates.push(f),s=m[4],n=0,e.label=2;case 2:if(!(n<s.length))return[3,9];if(i=s[n],c=i.data,c.shift(),c.shift(),a=c.shift(),c.shift(),g=c.shift(),d=(0,common_1.objectIdHexString)(),l={messageId:a,hasError:!1,data:"ACK"},f&&f.readyState===f.OPEN&&this._websocketManager.send(f,l),"insertDocument"===g&&"driver-gps"===c[0])return[3,8];if("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log-method-latency",data:{_id:d,__v:0,date_start:new Date,date_end:null,latency_ms:0,method:g}}):log_method_latency_collection_1.LogMethodLatencies.create({_id:d,__v:0,date_start:new Date,date_end:null,latency_ms:0,method:g,client:"ResolveIO",instance:"backend.resolveio.com"}),"reportBuilderGetResults"!==g&&"reportBuilderGetDistinctValue"!==g&&"reportBuilderBuildTree"!==g&&"generatePDF"!==g&&"getWOOfflineData"!==g&&"countQuery"!==g&&"countWithQuery"!==g&&"countCollectionWithQuery"!==g&&"find"!==g&&"findOne"!==g&&"findWithOptions"!==g&&"getDrivers"!==g&&"processAirdropDistribution"!==g&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"client-request",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify(c))<2e5?JSON.stringify(c,null,2):"Too Big",method:g,id_user:f.id_user||"",user:f.user||"",messageId:t,route:r}}):log_collection_1.Logs.insertOne({_id:(0,common_1.objectIdHexString)(),type:"client-request",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify(c))<2e5?JSON.stringify(c,null,2):"Too Big",method:g,id_user:f.id_user||"",user:f.user||"",messageId:t,route:r,client:"ResolveIO",instance:"backend.resolveio.com"})),!this._methodManager._methods[g])return[3,7];e.label=3;case 3:return e.trys.push([3,5,,6]),[4,(p=this._methodManager.callMethodInternal).call.apply(p,__spreadArray([Object.assign({},this._methodManager,method_manager_1.MethodManager.prototype,{id_user:f.id_user,user:f.user,id_ws:f.id_socket}),g],__read(c),!1))];case 4:return e.sent(),[3,6];case 5:return p=e.sent(),console.log(new Date,"Offline Error",JSON.stringify(p,null,2)),[3,6];case 6:return"updateDocumentOffline"!==g&&"updateDocumentPropsOffline"!==g||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c[0]),[3,8];case 7:console.log("Offline - Could not find method: "+g),e.label=8;case 8:return n++,[3,2];case 9:return this._offlineUpdates.splice(this._offlineUpdates.map(function(e){return e.id_socket}).indexOf(f.id_socket),1),[3,11];case 10:if(c=__spreadArray([],__read(m),!1),h=c.shift(),_=c.shift(),u=c.shift(),"method"===c.shift()){if(g=c.shift(),f.user_readonly)return[2];d=(0,common_1.objectIdHexString)(),"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log-method-latency",data:{_id:d,__v:0,date_start:new Date,date_end:null,latency_ms:0,method:g}}):log_method_latency_collection_1.LogMethodLatencies.create({_id:d,__v:0,date_start:new Date,date_end:null,latency_ms:0,method:g,client:"ResolveIO",instance:"backend.resolveio.com"}),"reportBuilderGetResults"!==g&&"reportBuilderGetDistinctValue"!==g&&"reportBuilderBuildTree"!==g&&"generatePDF"!==g&&"getWOOfflineData"!==g&&"countQuery"!==g&&"countWithQuery"!==g&&"countCollectionWithQuery"!==g&&"find"!==g&&"findOne"!==g&&"findWithOptions"!==g&&"getDrivers"!==g&&"processAirdropDistribution"!==g&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"client-request",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify(c))<2e5?JSON.stringify(c,null,2):"Too Big",method:g,id_user:f.id_user||"",user:f.user||"",messageId:u,route:h}}):log_collection_1.Logs.insertOne({_id:(0,common_1.objectIdHexString)(),type:"client-request",collection:"",id_document:"",payload:(0,common_1.getBinarySize)(JSON.stringify(c))<2e5?JSON.stringify(c,null,2):"Too Big",method:g,id_user:f.id_user||"",user:f.user||"",messageId:u,route:h,client:"ResolveIO",instance:"backend.resolveio.com"})),v={messageId:u,hasError:!1,data:"ACK"},f&&f.readyState===f.OPEN&&this._websocketManager.send(f,v),this._methodManager._methods[g]?(h=this._methodManager).callMethod.apply(h,__spreadArray([d,f,_,u,g],__read(c),!1)):console.log("Could not find method: "+g)}e.label=11;case 11:return[2]}})})},ResolveIOMainServer.prototype.unsubscribeWS=function(e){this._subscriptionManager.getEnableDebug()&&console.log(new Date,"Server App","Unsub WS",e.user,e.id_socket),this._subscriptionManager.unsubscribeAll(e),e.removeAllListeners()},ResolveIOMainServer.prototype.getApp=function(){return this._app},ResolveIOMainServer.prototype.getServerConfig=function(){return resolveio_server_app_1.ResolveIOServer.getServerConfig()},ResolveIOMainServer}();exports.ResolveIOMainServer=ResolveIOMainServer;
|
|
2
2
|
//# sourceMappingURL=server-app.js.map
|