@resolveio/server-lib 20.7.120 → 20.7.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/client-server-app.js +51 -1
  2. package/client-server-app.js.map +1 -1
  3. package/collections/app-status.collection.js +51 -1
  4. package/collections/app-status.collection.js.map +1 -1
  5. package/collections/counter.collection.js +55 -1
  6. package/collections/counter.collection.js.map +1 -1
  7. package/collections/cron-job-history.collection.js +136 -1
  8. package/collections/cron-job-history.collection.js.map +1 -1
  9. package/collections/cron-job.collection.js +87 -1
  10. package/collections/cron-job.collection.js.map +1 -1
  11. package/collections/email-history.collection.js +98 -1
  12. package/collections/email-history.collection.js.map +1 -1
  13. package/collections/email-verified.collection.js +60 -1
  14. package/collections/email-verified.collection.js.map +1 -1
  15. package/collections/file.collection.js +73 -1
  16. package/collections/file.collection.js.map +1 -1
  17. package/collections/flag-update.collection.js +56 -1
  18. package/collections/flag-update.collection.js.map +1 -1
  19. package/collections/flag.collection.js +56 -1
  20. package/collections/flag.collection.js.map +1 -1
  21. package/collections/log-method-latency.collection.js +72 -1
  22. package/collections/log-method-latency.collection.js.map +1 -1
  23. package/collections/log-subscription.collection.js +75 -1
  24. package/collections/log-subscription.collection.js.map +1 -1
  25. package/collections/log.collection.js +87 -1
  26. package/collections/log.collection.js.map +1 -1
  27. package/collections/logged-in-users.collection.js +66 -1
  28. package/collections/logged-in-users.collection.js.map +1 -1
  29. package/collections/monitor-cpu.collection.js +64 -1
  30. package/collections/monitor-cpu.collection.js.map +1 -1
  31. package/collections/monitor-function.collection.js +73 -1
  32. package/collections/monitor-function.collection.js.map +1 -1
  33. package/collections/monitor-memory.collection.js +76 -1
  34. package/collections/monitor-memory.collection.js.map +1 -1
  35. package/collections/monitor-mongo.collection.js +70 -1
  36. package/collections/monitor-mongo.collection.js.map +1 -1
  37. package/collections/notification.collection.js +56 -1
  38. package/collections/notification.collection.js.map +1 -1
  39. package/collections/report-builder-dashboard-builder.collection.js +108 -1
  40. package/collections/report-builder-dashboard-builder.collection.js.map +1 -1
  41. package/collections/report-builder-library.collection.js +86 -1
  42. package/collections/report-builder-library.collection.js.map +1 -1
  43. package/collections/report-builder-report.collection.js +148 -1
  44. package/collections/report-builder-report.collection.js.map +1 -1
  45. package/collections/user-group.collection.js +88 -1
  46. package/collections/user-group.collection.js.map +1 -1
  47. package/collections/user-guide.collection.js +56 -1
  48. package/collections/user-guide.collection.js.map +1 -1
  49. package/collections/user.collection.js +265 -1
  50. package/collections/user.collection.js.map +1 -1
  51. package/cron/cron.js +97 -1
  52. package/cron/cron.js.map +1 -1
  53. package/fixtures/cron-jobs.js +95 -1
  54. package/fixtures/cron-jobs.js.map +1 -1
  55. package/fixtures/init.js +78 -1
  56. package/fixtures/init.js.map +1 -1
  57. package/http/auth.js +869 -1
  58. package/http/auth.js.map +1 -1
  59. package/http/health.js +11 -1
  60. package/http/health.js.map +1 -1
  61. package/http/home.js +114 -1
  62. package/http/home.js.map +1 -1
  63. package/index.js +18 -1
  64. package/index.js.map +1 -1
  65. package/managers/cron.manager.js +461 -1
  66. package/managers/cron.manager.js.map +1 -1
  67. package/managers/local-log.manager.js +79 -1
  68. package/managers/local-log.manager.js.map +1 -1
  69. package/managers/method.manager.js +1023 -1
  70. package/managers/method.manager.js.map +1 -1
  71. package/managers/mongo.manager.js +4223 -1
  72. package/managers/mongo.manager.js.map +1 -1
  73. package/managers/monitor.manager.js +534 -1
  74. package/managers/monitor.manager.js.map +1 -1
  75. package/managers/subscription.manager.js +1292 -1
  76. package/managers/subscription.manager.js.map +1 -1
  77. package/managers/websocket.manager.js +165 -1
  78. package/managers/websocket.manager.js.map +1 -1
  79. package/managers/worker-dispatcher.manager.js +335 -1
  80. package/managers/worker-dispatcher.manager.js.map +1 -1
  81. package/managers/worker-server.manager.js +292 -1
  82. package/managers/worker-server.manager.js.map +1 -1
  83. package/methods/accounts.js +302 -1
  84. package/methods/accounts.js.map +1 -1
  85. package/methods/aws.js +748 -1
  86. package/methods/aws.js.map +1 -1
  87. package/methods/collections.js +542 -1
  88. package/methods/collections.js.map +1 -1
  89. package/methods/counters.js +111 -1
  90. package/methods/counters.js.map +1 -1
  91. package/methods/cron-jobs.js +1476 -1
  92. package/methods/cron-jobs.js.map +1 -1
  93. package/methods/flag-updates.js +8 -1
  94. package/methods/flag-updates.js.map +1 -1
  95. package/methods/flags.js +8 -1
  96. package/methods/flags.js.map +1 -1
  97. package/methods/logs.js +417 -1
  98. package/methods/logs.js.map +1 -1
  99. package/methods/monitor.js +543 -1
  100. package/methods/monitor.js.map +1 -1
  101. package/methods/pdf.js +742 -1
  102. package/methods/pdf.js.map +1 -1
  103. package/methods/report-builder.js +840 -1
  104. package/methods/report-builder.js.map +1 -1
  105. package/methods/support.js +232 -1
  106. package/methods/support.js.map +1 -1
  107. package/models/app-status.model.js +3 -1
  108. package/models/app-status.model.js.map +1 -1
  109. package/models/billing-logged-in-users.model.js +3 -1
  110. package/models/billing-logged-in-users.model.js.map +1 -1
  111. package/models/collection-document.model.js +3 -1
  112. package/models/collection-document.model.js.map +1 -1
  113. package/models/counter.model.js +3 -1
  114. package/models/counter.model.js.map +1 -1
  115. package/models/cron-job-history.model.js +3 -1
  116. package/models/cron-job-history.model.js.map +1 -1
  117. package/models/cron-job.model.js +3 -1
  118. package/models/cron-job.model.js.map +1 -1
  119. package/models/dialog.model.js +3 -1
  120. package/models/dialog.model.js.map +1 -1
  121. package/models/email-history.model.js +15 -1
  122. package/models/email-history.model.js.map +1 -1
  123. package/models/email-verified.model.js +3 -1
  124. package/models/email-verified.model.js.map +1 -1
  125. package/models/file.model.js +3 -1
  126. package/models/file.model.js.map +1 -1
  127. package/models/flag-update.model.js +3 -1
  128. package/models/flag-update.model.js.map +1 -1
  129. package/models/flag.model.js +3 -1
  130. package/models/flag.model.js.map +1 -1
  131. package/models/log-method-latency.model.js +3 -1
  132. package/models/log-method-latency.model.js.map +1 -1
  133. package/models/log-subscription.model.js +3 -1
  134. package/models/log-subscription.model.js.map +1 -1
  135. package/models/log.model.js +3 -1
  136. package/models/log.model.js.map +1 -1
  137. package/models/logged-in-users.model.js +3 -1
  138. package/models/logged-in-users.model.js.map +1 -1
  139. package/models/method-response.model.js +3 -1
  140. package/models/method-response.model.js.map +1 -1
  141. package/models/method.model.d.ts +0 -1
  142. package/models/method.model.js +3 -1
  143. package/models/method.model.js.map +1 -1
  144. package/models/monitor-cpu.model.js +3 -1
  145. package/models/monitor-cpu.model.js.map +1 -1
  146. package/models/monitor-function.model.js +3 -1
  147. package/models/monitor-function.model.js.map +1 -1
  148. package/models/monitor-memory.model.js +3 -1
  149. package/models/monitor-memory.model.js.map +1 -1
  150. package/models/monitor-mongo.model.js +3 -1
  151. package/models/monitor-mongo.model.js.map +1 -1
  152. package/models/notification.model.js +3 -1
  153. package/models/notification.model.js.map +1 -1
  154. package/models/pagination.model.js +23 -1
  155. package/models/pagination.model.js.map +1 -1
  156. package/models/permission.model.js +3 -1
  157. package/models/permission.model.js.map +1 -1
  158. package/models/report-builder-dashboard-builder.model.js +3 -1
  159. package/models/report-builder-dashboard-builder.model.js.map +1 -1
  160. package/models/report-builder-library.model.js +3 -1
  161. package/models/report-builder-library.model.js.map +1 -1
  162. package/models/report-builder-report.model.js +3 -1
  163. package/models/report-builder-report.model.js.map +1 -1
  164. package/models/report-builder.model.js +3 -1
  165. package/models/report-builder.model.js.map +1 -1
  166. package/models/select-data-label.model.js +3 -1
  167. package/models/select-data-label.model.js.map +1 -1
  168. package/models/server-message.model.js +3 -1
  169. package/models/server-message.model.js.map +1 -1
  170. package/models/subscription.model.js +3 -1
  171. package/models/subscription.model.js.map +1 -1
  172. package/models/support-ticket.model.js +3 -1
  173. package/models/support-ticket.model.js.map +1 -1
  174. package/models/user-group.model.js +3 -1
  175. package/models/user-group.model.js.map +1 -1
  176. package/models/user-guide.model.js +3 -1
  177. package/models/user-guide.model.js.map +1 -1
  178. package/models/user.model.js +3 -1
  179. package/models/user.model.js.map +1 -1
  180. package/package.json +1 -1
  181. package/public_api.js +77 -1
  182. package/public_api.js.map +1 -1
  183. package/publications/app-status.js +16 -1
  184. package/publications/app-status.js.map +1 -1
  185. package/publications/cron-jobs.js +32 -1
  186. package/publications/cron-jobs.js.map +1 -1
  187. package/publications/files.js +36 -1
  188. package/publications/files.js.map +1 -1
  189. package/publications/flags-update.js +22 -1
  190. package/publications/flags-update.js.map +1 -1
  191. package/publications/flags.js +22 -1
  192. package/publications/flags.js.map +1 -1
  193. package/publications/logs.js +164 -1
  194. package/publications/logs.js.map +1 -1
  195. package/publications/notifications.js +16 -1
  196. package/publications/notifications.js.map +1 -1
  197. package/publications/report-builder-dashboard-builders.js +42 -1
  198. package/publications/report-builder-dashboard-builders.js.map +1 -1
  199. package/publications/report-builder-libraries.js +90 -1
  200. package/publications/report-builder-libraries.js.map +1 -1
  201. package/publications/report-builder-reports.js +50 -1
  202. package/publications/report-builder-reports.js.map +1 -1
  203. package/publications/super-admin.js +16 -1
  204. package/publications/super-admin.js.map +1 -1
  205. package/publications/user-groups.js +16 -1
  206. package/publications/user-groups.js.map +1 -1
  207. package/publications/user-guides.js +16 -1
  208. package/publications/user-guides.js.map +1 -1
  209. package/resolveio-server-app.js +176 -1
  210. package/resolveio-server-app.js.map +1 -1
  211. package/server-app.js +1159 -1
  212. package/server-app.js.map +1 -1
  213. package/util/common.js +632 -1
  214. package/util/common.js.map +1 -1
  215. package/util/schema-report-builder.js +454 -1
  216. package/util/schema-report-builder.js.map +1 -1
@@ -1,2 +1,535 @@
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:[]},u={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function verb(o){return function(e){var t=[o,e];if(i)throw new TypeError("Generator is already executing.");for(;c=u&&t[u=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_function_collection_1=require("../collections/monitor-function.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=[]}return MonitorManager.create=function(){return __awaiter(this,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return[4,(t=new MonitorManager).initialize()];case 1:return e.sent(),[2,t]}})})},MonitorManager.prototype.initialize=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return this._instanceHostname=os.hostname().replace(/\./g,"-"),[4,this.setupIntervals()];case 1:return e.sent(),this.setupEventLoop(),[2]}})})},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,a,o=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(o,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 a=this.cpuAverage(),setInterval(function(){return __awaiter(o,void 0,void 0,function(){var t,o,n,r,i;return __generator(this,function(e){switch(e.label){case 0:return t=new Date,o=this.cpuAverage(),r=o.idle-a.idle,n=o.total-a.total,r=1-r/n,"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,2]:[4,monitor_cpu_collection_1.MonitorCPUs.create({_id:(0,common_1.objectIdHexString)(),metadata:{instance:this._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:t,app:r,system:os.loadavg()[0]})];case 1:return e.sent(),[3,3];case 2:this.pushMonitorData({type:"monitor-cpu",data:{metadata:{instance:this._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:t,app:r,system:os.loadavg()[0]}}),e.label=3;case 3:return a=o,i=process.memoryUsage(),"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,5]:[4,monitor_memory_collection_1.MonitorMemorys.create({_id:(0,common_1.objectIdHexString)(),metadata:{instance:this._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:t,physical_total:i.heapTotal,physical_used:i.heapUsed,physical_free:os.freemem(),virtual:i.rss,private:i.external,physical:os.totalmem()})];case 4:return e.sent(),[3,6];case 5:this.pushMonitorData({type:"monitor-memory",data:{metadata:{instance:this._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:t,physical_total:i.heapTotal,physical_used:i.heapUsed,physical_free:os.freemem(),virtual:i.rss,private:i.external,physical:os.totalmem(),type:"memory"}}),e.label=6;case 6:return[2]}})})},3e3),[2]}})})},MonitorManager.prototype.addMongoTracker=function(t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,3]:t.collection.startsWith("monitor-")?[3,2]:[4,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(t.date),method:t.method,doc_collection:t.collection,duration:t.duration,query:Buffer.byteLength(t.query,"utf8")<158e5?t.query:"Too Big"})];case 1:e.sent(),e.label=2;case 2:return[3,4];case 3:this._instanceHostname&&this.pushMonitorData({type:"monitor-mongo",data:{metadata:{instance:this._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:new Date(t.date),method:t.method,doc_collection:t.collection,duration:t.duration,query:Buffer.byteLength(t.query,"utf8")<158e5?t.query:"Too Big"}}),e.label=4;case 4:return[2]}})})},MonitorManager.prototype.addFunctionTracker=function(t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return"string"!=typeof t.data&&(t.data=JSON.stringify(t.data)),"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,2]:[4,monitor_function_collection_1.MonitorFunctions.create({_id:(0,common_1.objectIdHexString)(),metadata:{instance:this._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:new Date(t.startTime),type:t.functionType,name:t.functionName,user:t.user,duration:t.duration,data:Buffer.byteLength(t.data,"utf8")<158e5?t.data:"Too Big"})];case 1:return e.sent(),[3,3];case 2:this._instanceHostname&&this.pushMonitorData({type:"monitor-function",data:{metadata:{instance:this._instanceHostname,client:resolveio_server_app_1.ResolveIOServer.getServerConfig().CLIENT_NAME},date:new Date(t.startTime),type:t.functionType,name:t.functionName,user:t.user,duration:t.duration,data:Buffer.byteLength(t.data,"utf8")<158e5?t.data:"Too Big"}}),e.label=3;case 3:return[2]}})})},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(){this._startTime=0,this._method="",this._collection="",this._query=""}return MonitorMongo.create=function(e,t,o){var n=new MonitorMongo;return n.initialize(e,t,o),n},MonitorMongo.prototype.initialize=function(e,t,o){this._startTime=Date.now(),this._method=e,this._collection=t,this._query=o},MonitorMongo.prototype.finish=function(){return __awaiter(this,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return t=Date.now(),t={date:new Date(t),method:this._method,collection:this._collection,query:this._query,duration:t-this._startTime},[4,resolveio_server_app_1.ResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(t)];case 1:return e.sent(),[2]}})})},MonitorMongo}()),MonitorManagerFunction=(exports.MonitorMongo=MonitorMongo,function(){function MonitorManagerFunction(){this._functionCnt=0,this._functions=[],this._functionLastCompletedWS={}}return MonitorManagerFunction.create=function(){var e=new MonitorManagerFunction;return e.initialize(),e},MonitorManagerFunction.prototype.initialize=function(){},MonitorManagerFunction.prototype.startMonitorFunction=function(e,t,o,n,r){e=MonitorFunction.create(this._functionCnt++,e,t,o,n,r);return this._functions.push(e),e.id},MonitorManagerFunction.prototype.finishMonitorFunction=function(o){return __awaiter(this,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return(t=this._functions.find(function(e){return e.id===o}))?[4,t.finish()]:[3,2];case 1:e.sent(),this._functionLastCompleted=t,this._functionLastCompletedWS[t.id_socket]=t,this._functions.splice(this._functions.map(function(e){return e.id}).indexOf(o),1),e.label=2;case 2:return[2]}})})},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(){this._timer=null,this.duration=0,this.startTime=null,this.endTime=null,this.lastTime=null,this.id_socket="",this.id=0}return MonitorFunction.create=function(e,t,o,n,r,i){var a=new MonitorFunction;return a.initialize(e,t,o,n,r,i),a},MonitorFunction.prototype.initialize=function(e,t,o,n,r,i){var a=this;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.duration&&(a.duration=e),a.lastTime=new Date},1e3)},MonitorFunction.prototype.finish=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return this._timer&&(clearInterval(this._timer),this._timer=null),this.endTime=new Date,this.duration,[4,resolveio_server_app_1.ResolveIOServer.getMainServer().getMonitorManager().addFunctionTracker(this)];case 1:return e.sent(),[2]}})})},MonitorFunction}());exports.MonitorFunction=MonitorFunction;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.MonitorFunction = exports.MonitorManagerFunction = exports.MonitorMongo = exports.MonitorManager = void 0;
40
+ var axios_1 = require("axios");
41
+ var monitor_cpu_collection_1 = require("../collections/monitor-cpu.collection");
42
+ var monitor_function_collection_1 = require("../collections/monitor-function.collection");
43
+ var monitor_memory_collection_1 = require("../collections/monitor-memory.collection");
44
+ var monitor_mongo_collection_1 = require("../collections/monitor-mongo.collection");
45
+ var resolveio_server_app_1 = require("../resolveio-server-app");
46
+ var common_1 = require("../util/common");
47
+ var os = require('os');
48
+ var MAX_BATCH_SIZE = 8 * 1024 * 1024; // 8MB max for safety
49
+ var MonitorManager = /** @class */ (function () {
50
+ function MonitorManager() {
51
+ this._instanceHostname = '';
52
+ this._monitorData = [];
53
+ }
54
+ MonitorManager.create = function () {
55
+ return __awaiter(this, void 0, void 0, function () {
56
+ var monitorManager;
57
+ return __generator(this, function (_a) {
58
+ switch (_a.label) {
59
+ case 0:
60
+ monitorManager = new MonitorManager();
61
+ return [4 /*yield*/, monitorManager.initialize()];
62
+ case 1:
63
+ _a.sent();
64
+ return [2 /*return*/, monitorManager];
65
+ }
66
+ });
67
+ });
68
+ };
69
+ MonitorManager.prototype.initialize = function () {
70
+ return __awaiter(this, void 0, void 0, function () {
71
+ return __generator(this, function (_a) {
72
+ switch (_a.label) {
73
+ case 0:
74
+ this._instanceHostname = os.hostname().replace(/\./g, '-');
75
+ return [4 /*yield*/, this.setupIntervals()];
76
+ case 1:
77
+ _a.sent();
78
+ this.setupEventLoop();
79
+ return [2 /*return*/];
80
+ }
81
+ });
82
+ });
83
+ };
84
+ MonitorManager.prototype.cpuAverage = function () {
85
+ var totalIdle = 0, totalTick = 0;
86
+ var cpus = os.cpus();
87
+ for (var i = 0, len = cpus.length; i < len; i++) {
88
+ var cpu = cpus[i];
89
+ for (var type in cpu.times) {
90
+ totalTick += cpu.times[type];
91
+ }
92
+ totalIdle += cpu.times.idle;
93
+ }
94
+ return {
95
+ idle: totalIdle / cpus.length,
96
+ total: totalTick / cpus.length
97
+ };
98
+ };
99
+ MonitorManager.prototype.setupIntervals = function () {
100
+ return __awaiter(this, void 0, void 0, function () {
101
+ var instanceId_1, _a, lastCPU;
102
+ var _this = this;
103
+ return __generator(this, function (_b) {
104
+ switch (_b.label) {
105
+ case 0:
106
+ if (!(resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'
107
+ && resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200')) return [3 /*break*/, 4];
108
+ _b.label = 1;
109
+ case 1:
110
+ _b.trys.push([1, 3, , 4]);
111
+ return [4 /*yield*/, axios_1.default.get('http://169.254.169.254/latest/meta-data/instance-id')];
112
+ case 2:
113
+ instanceId_1 = _b.sent();
114
+ setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
115
+ var _a;
116
+ return __generator(this, function (_b) {
117
+ switch (_b.label) {
118
+ case 0:
119
+ _b.trys.push([0, 2, , 3]);
120
+ return [4 /*yield*/, axios_1.default.post('https://backend.resolveio.com/api/health', {
121
+ type: 'application',
122
+ id_aws_instance: instanceId_1.data,
123
+ version: typeof process.env.APP_VERSION === 'number'
124
+ ? process.env.APP_VERSION.toString()
125
+ : process.env.APP_VERSION,
126
+ version_key: process.env.APP_VERSION_KEY
127
+ })];
128
+ case 1:
129
+ _b.sent();
130
+ return [3 /*break*/, 3];
131
+ case 2:
132
+ _a = _b.sent();
133
+ return [3 /*break*/, 3];
134
+ case 3: return [2 /*return*/];
135
+ }
136
+ });
137
+ }); }, 10000);
138
+ return [3 /*break*/, 4];
139
+ case 3:
140
+ _a = _b.sent();
141
+ return [3 /*break*/, 4];
142
+ case 4:
143
+ lastCPU = this.cpuAverage();
144
+ setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
145
+ var now, endMeasure, idleDifference, totalDifference, percentageCPU, memUsage;
146
+ return __generator(this, function (_a) {
147
+ switch (_a.label) {
148
+ case 0:
149
+ now = new Date();
150
+ endMeasure = this.cpuAverage();
151
+ idleDifference = endMeasure.idle - lastCPU.idle;
152
+ totalDifference = endMeasure.total - lastCPU.total;
153
+ percentageCPU = 1 - idleDifference / totalDifference;
154
+ if (!(resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'
155
+ || resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200')) return [3 /*break*/, 2];
156
+ return [4 /*yield*/, monitor_cpu_collection_1.MonitorCPUs.create({
157
+ _id: (0, common_1.objectIdHexString)(),
158
+ metadata: {
159
+ instance: this._instanceHostname,
160
+ client: resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME']
161
+ },
162
+ date: now,
163
+ app: percentageCPU,
164
+ system: os.loadavg()[0]
165
+ })];
166
+ case 1:
167
+ _a.sent();
168
+ return [3 /*break*/, 3];
169
+ case 2:
170
+ this.pushMonitorData({
171
+ type: 'monitor-cpu',
172
+ data: {
173
+ metadata: {
174
+ instance: this._instanceHostname,
175
+ client: resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME']
176
+ },
177
+ date: now,
178
+ app: percentageCPU,
179
+ system: os.loadavg()[0]
180
+ }
181
+ });
182
+ _a.label = 3;
183
+ case 3:
184
+ lastCPU = endMeasure;
185
+ memUsage = process.memoryUsage();
186
+ if (!(resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'
187
+ || resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200')) return [3 /*break*/, 5];
188
+ return [4 /*yield*/, monitor_memory_collection_1.MonitorMemorys.create({
189
+ _id: (0, common_1.objectIdHexString)(),
190
+ metadata: {
191
+ instance: this._instanceHostname,
192
+ client: resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME']
193
+ },
194
+ date: now,
195
+ physical_total: memUsage.heapTotal,
196
+ physical_used: memUsage.heapUsed,
197
+ physical_free: os.freemem(),
198
+ virtual: memUsage.rss,
199
+ private: memUsage.external,
200
+ physical: os.totalmem()
201
+ })];
202
+ case 4:
203
+ _a.sent();
204
+ return [3 /*break*/, 6];
205
+ case 5:
206
+ this.pushMonitorData({
207
+ type: 'monitor-memory',
208
+ data: {
209
+ metadata: {
210
+ instance: this._instanceHostname,
211
+ client: resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME']
212
+ },
213
+ date: now,
214
+ physical_total: memUsage.heapTotal,
215
+ physical_used: memUsage.heapUsed,
216
+ physical_free: os.freemem(),
217
+ virtual: memUsage.rss,
218
+ private: memUsage.external,
219
+ physical: os.totalmem(),
220
+ type: 'memory'
221
+ }
222
+ });
223
+ _a.label = 6;
224
+ case 6: return [2 /*return*/];
225
+ }
226
+ });
227
+ }); }, 3000);
228
+ return [2 /*return*/];
229
+ }
230
+ });
231
+ });
232
+ };
233
+ MonitorManager.prototype.addMongoTracker = function (data) {
234
+ return __awaiter(this, void 0, void 0, function () {
235
+ return __generator(this, function (_a) {
236
+ switch (_a.label) {
237
+ case 0:
238
+ if (!(resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'
239
+ || resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200')) return [3 /*break*/, 3];
240
+ if (!!data.collection.startsWith('monitor-')) return [3 /*break*/, 2];
241
+ return [4 /*yield*/, monitor_mongo_collection_1.MonitorMongos.create({
242
+ _id: (0, common_1.objectIdHexString)(),
243
+ metadata: {
244
+ instance: this._instanceHostname,
245
+ client: resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME']
246
+ },
247
+ date: new Date(data.date),
248
+ method: data.method,
249
+ doc_collection: data.collection,
250
+ duration: data.duration,
251
+ query: Buffer.byteLength(data.query, 'utf8') < 15800000
252
+ ? data.query
253
+ : 'Too Big'
254
+ })];
255
+ case 1:
256
+ _a.sent();
257
+ _a.label = 2;
258
+ case 2: return [3 /*break*/, 4];
259
+ case 3:
260
+ if (this._instanceHostname) {
261
+ this.pushMonitorData({
262
+ type: 'monitor-mongo',
263
+ data: {
264
+ metadata: {
265
+ instance: this._instanceHostname,
266
+ client: resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME']
267
+ },
268
+ date: new Date(data.date),
269
+ method: data.method,
270
+ doc_collection: data.collection,
271
+ duration: data.duration,
272
+ query: Buffer.byteLength(data.query, 'utf8') < 15800000
273
+ ? data.query
274
+ : 'Too Big'
275
+ }
276
+ });
277
+ }
278
+ _a.label = 4;
279
+ case 4: return [2 /*return*/];
280
+ }
281
+ });
282
+ });
283
+ };
284
+ MonitorManager.prototype.addFunctionTracker = function (data) {
285
+ return __awaiter(this, void 0, void 0, function () {
286
+ return __generator(this, function (_a) {
287
+ switch (_a.label) {
288
+ case 0:
289
+ if (typeof (data.data) !== 'string') {
290
+ data.data = JSON.stringify(data.data);
291
+ }
292
+ if (!(resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'
293
+ || resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200')) return [3 /*break*/, 2];
294
+ return [4 /*yield*/, monitor_function_collection_1.MonitorFunctions.create({
295
+ _id: (0, common_1.objectIdHexString)(),
296
+ metadata: {
297
+ instance: this._instanceHostname,
298
+ client: resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME']
299
+ },
300
+ date: new Date(data.startTime),
301
+ type: data.functionType,
302
+ name: data.functionName,
303
+ user: data.user,
304
+ duration: data.duration,
305
+ data: Buffer.byteLength(data.data, 'utf8') < 15800000
306
+ ? data.data
307
+ : 'Too Big'
308
+ })];
309
+ case 1:
310
+ _a.sent();
311
+ return [3 /*break*/, 3];
312
+ case 2:
313
+ if (this._instanceHostname) {
314
+ this.pushMonitorData({
315
+ type: 'monitor-function',
316
+ data: {
317
+ metadata: {
318
+ instance: this._instanceHostname,
319
+ client: resolveio_server_app_1.ResolveIOServer.getServerConfig()['CLIENT_NAME']
320
+ },
321
+ date: new Date(data.startTime),
322
+ type: data.functionType,
323
+ name: data.functionName,
324
+ user: data.user,
325
+ duration: data.duration,
326
+ data: Buffer.byteLength(data.data, 'utf8') < 15800000
327
+ ? data.data
328
+ : 'Too Big'
329
+ }
330
+ });
331
+ }
332
+ _a.label = 3;
333
+ case 3: return [2 /*return*/];
334
+ }
335
+ });
336
+ });
337
+ };
338
+ MonitorManager.prototype.pushMonitorData = function (data) {
339
+ this._monitorData.push(data);
340
+ // If data is huge, flush immediately to file
341
+ if (this.estimateBatchSize() >= MAX_BATCH_SIZE) {
342
+ this.flushMonitorData();
343
+ }
344
+ };
345
+ MonitorManager.prototype.estimateBatchSize = function () {
346
+ return this._monitorData.reduce(function (total, item) {
347
+ return total + Buffer.byteLength(JSON.stringify(item));
348
+ }, 0);
349
+ };
350
+ MonitorManager.prototype.setupEventLoop = function () {
351
+ var _this = this;
352
+ // Flush every 2.5 seconds
353
+ setInterval(function () {
354
+ if (_this._monitorData.length > 0) {
355
+ _this.flushMonitorData();
356
+ }
357
+ }, 2500);
358
+ };
359
+ MonitorManager.prototype.flushMonitorData = function () {
360
+ var batch = [];
361
+ var batchSize = 0;
362
+ while (this._monitorData.length > 0 && batchSize < MAX_BATCH_SIZE) {
363
+ var item = this._monitorData.shift();
364
+ var itemSize = Buffer.byteLength(JSON.stringify(item));
365
+ if ((batchSize + itemSize) > MAX_BATCH_SIZE && batch.length > 0) {
366
+ // put the item back for next round
367
+ this._monitorData.unshift(item);
368
+ break;
369
+ }
370
+ batch.push(item);
371
+ batchSize += itemSize;
372
+ }
373
+ try {
374
+ // Now, instead of calling an external HTTP endpoint, we write the batch to disk:
375
+ resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLogs(batch);
376
+ }
377
+ catch (error) {
378
+ console.error(new Date(), 'MonitorManager', 'Failed to flush monitor data to file:', error);
379
+ }
380
+ };
381
+ return MonitorManager;
382
+ }());
383
+ exports.MonitorManager = MonitorManager;
384
+ var MonitorMongo = /** @class */ (function () {
385
+ function MonitorMongo() {
386
+ this._startTime = 0;
387
+ this._method = '';
388
+ this._collection = '';
389
+ this._query = '';
390
+ }
391
+ MonitorMongo.create = function (method, collection, query) {
392
+ var monitorMongo = new MonitorMongo();
393
+ monitorMongo.initialize(method, collection, query);
394
+ return monitorMongo;
395
+ };
396
+ MonitorMongo.prototype.initialize = function (method, collection, query) {
397
+ this._startTime = Date.now();
398
+ this._method = method;
399
+ this._collection = collection;
400
+ this._query = query;
401
+ };
402
+ MonitorMongo.prototype.finish = function () {
403
+ return __awaiter(this, void 0, void 0, function () {
404
+ var endTime, mongoMonitor;
405
+ return __generator(this, function (_a) {
406
+ switch (_a.label) {
407
+ case 0:
408
+ endTime = Date.now();
409
+ mongoMonitor = {
410
+ date: new Date(endTime),
411
+ method: this._method,
412
+ collection: this._collection,
413
+ query: this._query,
414
+ duration: endTime - this._startTime
415
+ };
416
+ return [4 /*yield*/, resolveio_server_app_1.ResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(mongoMonitor)];
417
+ case 1:
418
+ _a.sent();
419
+ return [2 /*return*/];
420
+ }
421
+ });
422
+ });
423
+ };
424
+ return MonitorMongo;
425
+ }());
426
+ exports.MonitorMongo = MonitorMongo;
427
+ var MonitorManagerFunction = /** @class */ (function () {
428
+ function MonitorManagerFunction() {
429
+ this._functionCnt = 0;
430
+ this._functions = [];
431
+ this._functionLastCompletedWS = {};
432
+ }
433
+ MonitorManagerFunction.create = function () {
434
+ var monitorManagerFunction = new MonitorManagerFunction();
435
+ monitorManagerFunction.initialize();
436
+ return monitorManagerFunction;
437
+ };
438
+ MonitorManagerFunction.prototype.initialize = function () {
439
+ };
440
+ MonitorManagerFunction.prototype.startMonitorFunction = function (functionType, functionName, user, id_socket, data) {
441
+ var newMonitorFunction = MonitorFunction.create(this._functionCnt++, functionType, functionName, user, id_socket, data);
442
+ this._functions.push(newMonitorFunction);
443
+ return newMonitorFunction.id;
444
+ };
445
+ MonitorManagerFunction.prototype.finishMonitorFunction = function (id) {
446
+ return __awaiter(this, void 0, void 0, function () {
447
+ var monitor;
448
+ return __generator(this, function (_a) {
449
+ switch (_a.label) {
450
+ case 0:
451
+ monitor = this._functions.find(function (a) { return a.id === id; });
452
+ if (!monitor) return [3 /*break*/, 2];
453
+ return [4 /*yield*/, monitor.finish()];
454
+ case 1:
455
+ _a.sent();
456
+ this._functionLastCompleted = monitor;
457
+ this._functionLastCompletedWS[monitor.id_socket] = monitor;
458
+ this._functions.splice(this._functions.map(function (a) { return a.id; }).indexOf(id), 1);
459
+ _a.label = 2;
460
+ case 2: return [2 /*return*/];
461
+ }
462
+ });
463
+ });
464
+ };
465
+ MonitorManagerFunction.prototype.getActiveMonitorFunctions = function () {
466
+ return this._functions;
467
+ };
468
+ MonitorManagerFunction.prototype.getLastCompletedMonitorFunction = function () {
469
+ return this._functionLastCompleted;
470
+ };
471
+ MonitorManagerFunction.prototype.getLastCompletedMonitorFunctionWS = function () {
472
+ return this._functionLastCompletedWS;
473
+ };
474
+ return MonitorManagerFunction;
475
+ }());
476
+ exports.MonitorManagerFunction = MonitorManagerFunction;
477
+ var MonitorFunction = /** @class */ (function () {
478
+ function MonitorFunction() {
479
+ this._timer = null;
480
+ this.duration = 0;
481
+ this.startTime = null;
482
+ this.endTime = null;
483
+ this.lastTime = null;
484
+ this.id_socket = '';
485
+ this.id = 0;
486
+ }
487
+ MonitorFunction.create = function (id, functionType, functionName, user, id_socket, data) {
488
+ var monitorFunction = new MonitorFunction();
489
+ monitorFunction.initialize(id, functionType, functionName, user, id_socket, data);
490
+ return monitorFunction;
491
+ };
492
+ MonitorFunction.prototype.initialize = function (id, functionType, functionName, user, id_socket, data) {
493
+ var _this = this;
494
+ this.id = id;
495
+ this.startTime = new Date();
496
+ this.functionType = functionType;
497
+ this.functionName = functionName;
498
+ this.user = user;
499
+ this.id_socket = id_socket;
500
+ this.data = data;
501
+ this.lastTime = new Date();
502
+ this._timer = setInterval(function () {
503
+ var diff = Date.now() - _this.lastTime.getTime();
504
+ if (diff > _this.duration) {
505
+ _this.duration = diff;
506
+ }
507
+ _this.lastTime = new Date();
508
+ }, 1000);
509
+ };
510
+ MonitorFunction.prototype.finish = function () {
511
+ return __awaiter(this, void 0, void 0, function () {
512
+ return __generator(this, function (_a) {
513
+ switch (_a.label) {
514
+ case 0:
515
+ if (this._timer) {
516
+ clearInterval(this._timer);
517
+ this._timer = null;
518
+ }
519
+ this.endTime = new Date();
520
+ if (this.duration >= 5000) {
521
+ // Optional slow function logging or email
522
+ }
523
+ return [4 /*yield*/, resolveio_server_app_1.ResolveIOServer.getMainServer().getMonitorManager().addFunctionTracker(this)];
524
+ case 1:
525
+ _a.sent();
526
+ return [2 /*return*/];
527
+ }
528
+ });
529
+ });
530
+ };
531
+ return MonitorFunction;
532
+ }());
533
+ exports.MonitorFunction = MonitorFunction;
534
+
2
535
  //# sourceMappingURL=monitor.manager.js.map