@resolveio/server-lib 22.2.0 → 22.2.2

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 (39) hide show
  1. package/collections/customer-notification.collection.d.ts +3 -0
  2. package/collections/customer-notification.collection.js +130 -0
  3. package/collections/customer-notification.collection.js.map +1 -0
  4. package/managers/local-log.manager.js +1 -2
  5. package/managers/local-log.manager.js.map +1 -1
  6. package/managers/method.manager.js +3 -2
  7. package/managers/method.manager.js.map +1 -1
  8. package/managers/mongo.manager.js +18 -36
  9. package/managers/mongo.manager.js.map +1 -1
  10. package/managers/monitor.manager.js +4 -8
  11. package/managers/monitor.manager.js.map +1 -1
  12. package/managers/subscription.manager.js +2 -0
  13. package/managers/subscription.manager.js.map +1 -1
  14. package/methods/ai-terminal.js +5 -2
  15. package/methods/ai-terminal.js.map +1 -1
  16. package/methods/customer-notifications.d.ts +2 -0
  17. package/methods/customer-notifications.js +456 -0
  18. package/methods/customer-notifications.js.map +1 -0
  19. package/methods/logs.js +2 -4
  20. package/methods/logs.js.map +1 -1
  21. package/methods/mongo-explorer.js +2 -6
  22. package/methods/mongo-explorer.js.map +1 -1
  23. package/methods.ts +12 -0
  24. package/models/customer-notification.model.d.ts +26 -0
  25. package/models/customer-notification.model.js +4 -0
  26. package/models/customer-notification.model.js.map +1 -0
  27. package/package.json +1 -1
  28. package/public_api.d.ts +2 -0
  29. package/public_api.js +2 -0
  30. package/public_api.js.map +1 -1
  31. package/publications/customer-notifications.d.ts +2 -0
  32. package/publications/customer-notifications.js +161 -0
  33. package/publications/customer-notifications.js.map +1 -0
  34. package/publications.ts +6 -0
  35. package/resolveio-server-app.d.ts +4 -0
  36. package/resolveio-server-app.js +38 -0
  37. package/resolveio-server-app.js.map +1 -1
  38. package/server-app.js +2 -4
  39. package/server-app.js.map +1 -1
@@ -151,8 +151,7 @@ var MonitorManager = /** @class */ (function () {
151
151
  idleDifference = endMeasure.idle - lastCPU.idle;
152
152
  totalDifference = endMeasure.total - lastCPU.total;
153
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];
154
+ if (!!resolveio_server_app_1.ResolveIOServer.shouldWriteLogsOffline()) return [3 /*break*/, 2];
156
155
  return [4 /*yield*/, monitor_cpu_collection_1.MonitorCPUs.create({
157
156
  _id: (0, common_1.objectIdHexString)(),
158
157
  metadata: {
@@ -183,8 +182,7 @@ var MonitorManager = /** @class */ (function () {
183
182
  case 3:
184
183
  lastCPU = endMeasure;
185
184
  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];
185
+ if (!!resolveio_server_app_1.ResolveIOServer.shouldWriteLogsOffline()) return [3 /*break*/, 5];
188
186
  return [4 /*yield*/, monitor_memory_collection_1.MonitorMemorys.create({
189
187
  _id: (0, common_1.objectIdHexString)(),
190
188
  metadata: {
@@ -235,8 +233,7 @@ var MonitorManager = /** @class */ (function () {
235
233
  return __generator(this, function (_a) {
236
234
  switch (_a.label) {
237
235
  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];
236
+ if (!!resolveio_server_app_1.ResolveIOServer.shouldWriteLogsOffline()) return [3 /*break*/, 3];
240
237
  if (!!data.collection.startsWith('monitor-')) return [3 /*break*/, 2];
241
238
  return [4 /*yield*/, monitor_mongo_collection_1.MonitorMongos.create({
242
239
  _id: (0, common_1.objectIdHexString)(),
@@ -289,8 +286,7 @@ var MonitorManager = /** @class */ (function () {
289
286
  if (typeof (data.data) !== 'string') {
290
287
  data.data = JSON.stringify(data.data);
291
288
  }
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];
289
+ if (!!resolveio_server_app_1.ResolveIOServer.shouldWriteLogsOffline()) return [3 /*break*/, 2];
294
290
  return [4 /*yield*/, monitor_function_collection_1.MonitorFunctions.create({
295
291
  _id: (0, common_1.objectIdHexString)(),
296
292
  metadata: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":[],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import axios from 'axios';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorFunctions } from '../collections/monitor-function.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\n\tstatic async create() {\n\t\tconst monitorManager = new MonitorManager();\n\t\tawait monitorManager.initialize();\n\t\treturn monitorManager;\n\t}\n\n\tprivate async initialize() {\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\t\tawait this.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 {}\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t\tcatch {}\n\t\t}\n\n\t\tlet lastCPU = this.cpuAverage();\n\n\t\tsetInterval(async () => {\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\tawait MonitorCPUs.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\tawait MonitorMemorys.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\tasync addMongoTracker(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\tawait MonitorMongos.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\tasync addFunctionTracker(data: MonitorFunction) {\n\t\tif (typeof(data.data) !== 'string') {\n\t\t\tdata.data = JSON.stringify(data.data);\n\t\t}\n\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\tawait MonitorFunctions.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\tmetadata: {\n\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t},\n\t\t\t\tdate: new Date(data.startTime),\n\t\t\t\ttype: data.functionType,\n\t\t\t\tname: data.functionName,\n\t\t\t\tuser: data.user,\n\t\t\t\tduration: data.duration,\n\t\t\t\tdata: Buffer.byteLength(data.data, 'utf8') < 15800000\n\t\t\t\t\t? data.data\n\t\t\t\t\t: 'Too Big'\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-function',\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.startTime),\n\t\t\t\t\t\ttype: data.functionType,\n\t\t\t\t\t\tname: data.functionName,\n\t\t\t\t\t\tuser: data.user,\n\t\t\t\t\t\tduration: data.duration,\n\t\t\t\t\t\tdata: Buffer.byteLength(data.data, 'utf8') < 15800000\n\t\t\t\t\t\t\t? data.data\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() {}\n\n\tstatic create(method: string, collection: string, query: string) {\n\t\tconst monitorMongo = new MonitorMongo();\n\t\tmonitorMongo.initialize(method, collection, query);\n\t\treturn monitorMongo;\n\t}\n\n\tprivate initialize(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 async 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\tawait ResolveIOServer.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\tstatic create() {\n\t\tconst monitorManagerFunction = new MonitorManagerFunction();\n\t\tmonitorManagerFunction.initialize();\n\t\treturn monitorManagerFunction;\n\t}\n\n\tprivate initialize() {\n\n\t}\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 = MonitorFunction.create(\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\tasync finishMonitorFunction(id: number) {\n\t\tlet monitor = this._functions.find(a => a.id === id);\n\n\t\tif (monitor) {\n\t\t\tawait monitor.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| 'Method'\n\t| 'User Specific Publication'\n\t| 'Publication';\n\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tpublic duration = 0;\n\tpublic functionType: MonitorFunctionType;\n\tpublic functionName: string;\n\tpublic user: string;\n\tpublic 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\n\tstatic create(\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\tconst monitorFunction = new MonitorFunction();\n\t\tmonitorFunction.initialize(id, functionType, functionName, user, id_socket, data);\n\t\treturn monitorFunction;\n\t}\n\n\tprivate initialize(\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.duration) {\n\t\t\t\tthis.duration = diff;\n\t\t\t}\n\n\t\t\tthis.lastTime = new Date();\n\t\t}, 1000);\n\t}\n\n\tpublic async 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.duration >= 5000) {\n\t\t\t// Optional slow function logging or email\n\t\t\tawait ResolveIOServer.getMainServer().getMonitorManager().addFunctionTracker(this);\n\t\t}\n\n\t\t// await ResolveIOServer.getMainServer().getMonitorManager().addFunctionTracker(this);\n\n\t\treturn Promise.resolve(true);\n\t}\n}"]}
1
+ {"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":[],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import axios from 'axios';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorFunctions } from '../collections/monitor-function.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\n\tstatic async create() {\n\t\tconst monitorManager = new MonitorManager();\n\t\tawait monitorManager.initialize();\n\t\treturn monitorManager;\n\t}\n\n\tprivate async initialize() {\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\t\tawait this.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 {}\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t\tcatch {}\n\t\t}\n\n\t\tlet lastCPU = this.cpuAverage();\n\n\t\tsetInterval(async () => {\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\t!ResolveIOServer.shouldWriteLogsOffline()\n\t\t\t) {\n\t\t\t\tawait MonitorCPUs.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\t!ResolveIOServer.shouldWriteLogsOffline()\n\t\t\t) {\n\t\t\t\tawait MonitorMemorys.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\tasync addMongoTracker(data: MongoMonitorModel) {\n\t\tif (\n\t\t\t!ResolveIOServer.shouldWriteLogsOffline()\n\t\t) {\n\t\t\tif (!data.collection.startsWith('monitor-')) {\n\t\t\t\tawait MonitorMongos.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\tasync addFunctionTracker(data: MonitorFunction) {\n\t\tif (typeof(data.data) !== 'string') {\n\t\t\tdata.data = JSON.stringify(data.data);\n\t\t}\n\n\t\tif (\n\t\t\t!ResolveIOServer.shouldWriteLogsOffline()\n\t\t) {\n\t\t\tawait MonitorFunctions.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\tmetadata: {\n\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t},\n\t\t\t\tdate: new Date(data.startTime),\n\t\t\t\ttype: data.functionType,\n\t\t\t\tname: data.functionName,\n\t\t\t\tuser: data.user,\n\t\t\t\tduration: data.duration,\n\t\t\t\tdata: Buffer.byteLength(data.data, 'utf8') < 15800000\n\t\t\t\t\t? data.data\n\t\t\t\t\t: 'Too Big'\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-function',\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.startTime),\n\t\t\t\t\t\ttype: data.functionType,\n\t\t\t\t\t\tname: data.functionName,\n\t\t\t\t\t\tuser: data.user,\n\t\t\t\t\t\tduration: data.duration,\n\t\t\t\t\t\tdata: Buffer.byteLength(data.data, 'utf8') < 15800000\n\t\t\t\t\t\t\t? data.data\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() {}\n\n\tstatic create(method: string, collection: string, query: string) {\n\t\tconst monitorMongo = new MonitorMongo();\n\t\tmonitorMongo.initialize(method, collection, query);\n\t\treturn monitorMongo;\n\t}\n\n\tprivate initialize(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 async 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\tawait ResolveIOServer.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\tstatic create() {\n\t\tconst monitorManagerFunction = new MonitorManagerFunction();\n\t\tmonitorManagerFunction.initialize();\n\t\treturn monitorManagerFunction;\n\t}\n\n\tprivate initialize() {\n\n\t}\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 = MonitorFunction.create(\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\tasync finishMonitorFunction(id: number) {\n\t\tlet monitor = this._functions.find(a => a.id === id);\n\n\t\tif (monitor) {\n\t\t\tawait monitor.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| 'Method'\n\t| 'User Specific Publication'\n\t| 'Publication';\n\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tpublic duration = 0;\n\tpublic functionType: MonitorFunctionType;\n\tpublic functionName: string;\n\tpublic user: string;\n\tpublic 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\n\tstatic create(\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\tconst monitorFunction = new MonitorFunction();\n\t\tmonitorFunction.initialize(id, functionType, functionName, user, id_socket, data);\n\t\treturn monitorFunction;\n\t}\n\n\tprivate initialize(\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.duration) {\n\t\t\t\tthis.duration = diff;\n\t\t\t}\n\n\t\t\tthis.lastTime = new Date();\n\t\t}, 1000);\n\t}\n\n\tpublic async 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.duration >= 5000) {\n\t\t\t// Optional slow function logging or email\n\t\t\tawait ResolveIOServer.getMainServer().getMonitorManager().addFunctionTracker(this);\n\t\t}\n\n\t\t// await ResolveIOServer.getMainServer().getMonitorManager().addFunctionTracker(this);\n\n\t\treturn Promise.resolve(true);\n\t}\n}\n"]}
@@ -81,6 +81,7 @@ var logged_in_users_collection_1 = require("../collections/logged-in-users.colle
81
81
  var app_status_1 = require("../publications/app-status");
82
82
  var ai_terminal_1 = require("../publications/ai-terminal");
83
83
  var cron_jobs_1 = require("../publications/cron-jobs");
84
+ var customer_notifications_1 = require("../publications/customer-notifications");
84
85
  var files_1 = require("../publications/files");
85
86
  var flags_1 = require("../publications/flags");
86
87
  var flags_update_1 = require("../publications/flags-update");
@@ -398,6 +399,7 @@ var SubscriptionManager = /** @class */ (function () {
398
399
  (0, flags_update_1.loadFlagsUpdatePublications)(this);
399
400
  (0, flags_1.loadFlagsPublications)(this);
400
401
  (0, notifications_1.loadNotificationPublications)(this);
402
+ (0, customer_notifications_1.loadCustomerNotificationPublications)(this);
401
403
  (0, report_builder_reports_1.loadReportBuilderReportPublications)(this);
402
404
  (0, report_builder_libraries_1.loadReportBuilderLibraryPublications)(this);
403
405
  (0, user_groups_1.loadUserGroupPublications)(this);