@resolveio/server-lib 12.5.54 → 12.5.55

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 (400) hide show
  1. package/client-server-app.d.ts +1 -0
  2. package/client-server-app.js +48 -0
  3. package/client-server-app.js.map +1 -0
  4. package/collections/app-status.collection.d.ts +3 -0
  5. package/collections/app-status.collection.js +51 -0
  6. package/collections/app-status.collection.js.map +1 -0
  7. package/collections/counter.collection.d.ts +3 -0
  8. package/collections/counter.collection.js +54 -0
  9. package/collections/counter.collection.js.map +1 -0
  10. package/collections/cron-job-history.collection.d.ts +3 -0
  11. package/collections/cron-job-history.collection.js +82 -0
  12. package/collections/cron-job-history.collection.js.map +1 -0
  13. package/collections/cron-job.collection.d.ts +3 -0
  14. package/collections/cron-job.collection.js +85 -0
  15. package/collections/cron-job.collection.js.map +1 -0
  16. package/collections/email-history.collection.d.ts +3 -0
  17. package/collections/email-history.collection.js +66 -0
  18. package/collections/email-history.collection.js.map +1 -0
  19. package/collections/email-verified.collection.d.ts +3 -0
  20. package/collections/email-verified.collection.js +61 -0
  21. package/collections/email-verified.collection.js.map +1 -0
  22. package/collections/file.collection.d.ts +3 -0
  23. package/collections/file.collection.js +73 -0
  24. package/collections/file.collection.js.map +1 -0
  25. package/collections/flag.collection.d.ts +3 -0
  26. package/collections/flag.collection.js +56 -0
  27. package/collections/flag.collection.js.map +1 -0
  28. package/collections/log-method-latency.collection.d.ts +3 -0
  29. package/collections/log-method-latency.collection.js +64 -0
  30. package/collections/log-method-latency.collection.js.map +1 -0
  31. package/collections/log-subscription.collection.d.ts +3 -0
  32. package/collections/log-subscription.collection.js +68 -0
  33. package/collections/log-subscription.collection.js.map +1 -0
  34. package/collections/log-ts.collection.d.ts +3 -0
  35. package/collections/log-ts.collection.js +78 -0
  36. package/collections/log-ts.collection.js.map +1 -0
  37. package/collections/log.collection.d.ts +3 -0
  38. package/collections/log.collection.js +77 -0
  39. package/collections/log.collection.js.map +1 -0
  40. package/collections/logged-in-users.collection.d.ts +3 -0
  41. package/collections/logged-in-users.collection.js +65 -0
  42. package/collections/logged-in-users.collection.js.map +1 -0
  43. package/collections/method-response.collection.d.ts +3 -0
  44. package/collections/method-response.collection.js +66 -0
  45. package/collections/method-response.collection.js.map +1 -0
  46. package/collections/monitor-cpu.collection.d.ts +3 -0
  47. package/collections/monitor-cpu.collection.js +63 -0
  48. package/collections/monitor-cpu.collection.js.map +1 -0
  49. package/collections/monitor-memory.collection.d.ts +3 -0
  50. package/collections/monitor-memory.collection.js +75 -0
  51. package/collections/monitor-memory.collection.js.map +1 -0
  52. package/collections/monitor-mongo.collection.d.ts +3 -0
  53. package/collections/monitor-mongo.collection.js +69 -0
  54. package/collections/monitor-mongo.collection.js.map +1 -0
  55. package/collections/notification.collection.d.ts +3 -0
  56. package/collections/notification.collection.js +51 -0
  57. package/collections/notification.collection.js.map +1 -0
  58. package/collections/report-builder-dashboard-builder.collection.d.ts +3 -0
  59. package/collections/report-builder-dashboard-builder.collection.js +109 -0
  60. package/collections/report-builder-dashboard-builder.collection.js.map +1 -0
  61. package/collections/report-builder-library.collection.d.ts +3 -0
  62. package/collections/report-builder-library.collection.js +87 -0
  63. package/collections/report-builder-library.collection.js.map +1 -0
  64. package/collections/report-builder-report.collection.d.ts +4 -0
  65. package/collections/report-builder-report.collection.js +149 -0
  66. package/collections/report-builder-report.collection.js.map +1 -0
  67. package/collections/user-group.collection.d.ts +4 -0
  68. package/collections/user-group.collection.js +90 -0
  69. package/collections/user-group.collection.js.map +1 -0
  70. package/collections/user-guide.collection.d.ts +3 -0
  71. package/collections/user-guide.collection.js +57 -0
  72. package/collections/user-guide.collection.js.map +1 -0
  73. package/collections/user.collection.d.ts +4 -0
  74. package/collections/user.collection.js +259 -0
  75. package/collections/user.collection.js.map +1 -0
  76. package/cron/cron.d.ts +5 -0
  77. package/cron/cron.js +162 -0
  78. package/cron/cron.js.map +1 -0
  79. package/fixtures/cron-jobs.d.ts +1 -0
  80. package/fixtures/cron-jobs.js +73 -0
  81. package/fixtures/cron-jobs.js.map +1 -0
  82. package/fixtures/init.d.ts +1 -0
  83. package/fixtures/init.js +59 -0
  84. package/fixtures/init.js.map +1 -0
  85. package/http/auth.d.ts +2 -0
  86. package/http/auth.js +763 -0
  87. package/http/auth.js.map +1 -0
  88. package/http/health.d.ts +1 -0
  89. package/http/health.js +12 -0
  90. package/http/health.js.map +1 -0
  91. package/http/home.d.ts +2 -0
  92. package/http/home.js +66 -0
  93. package/http/home.js.map +1 -0
  94. package/index.d.ts +23 -0
  95. package/index.js +127 -0
  96. package/index.js.map +1 -0
  97. package/managers/cron.manager.d.ts +17 -0
  98. package/managers/cron.manager.js +242 -0
  99. package/managers/cron.manager.js.map +1 -0
  100. package/managers/method.manager.d.ts +38 -0
  101. package/managers/method.manager.js +595 -0
  102. package/managers/method.manager.js.map +1 -0
  103. package/managers/mongo.manager.d.ts +178 -0
  104. package/managers/mongo.manager.js +2221 -0
  105. package/managers/mongo.manager.js.map +1 -0
  106. package/managers/monitor.manager.d.ts +59 -0
  107. package/managers/monitor.manager.js +351 -0
  108. package/managers/monitor.manager.js.map +1 -0
  109. package/managers/subscription.manager.d.ts +50 -0
  110. package/managers/subscription.manager.js +1091 -0
  111. package/managers/subscription.manager.js.map +1 -0
  112. package/managers/subscription.performance.d.ts +1 -0
  113. package/{src/managers/subscription.performance.ts → managers/subscription.performance.js} +33 -68
  114. package/managers/subscription.performance.js.map +1 -0
  115. package/methods/accounts.d.ts +2 -0
  116. package/methods/accounts.js +274 -0
  117. package/methods/accounts.js.map +1 -0
  118. package/methods/aws.d.ts +2 -0
  119. package/methods/aws.js +617 -0
  120. package/methods/aws.js.map +1 -0
  121. package/methods/collections.d.ts +2 -0
  122. package/methods/collections.js +499 -0
  123. package/methods/collections.js.map +1 -0
  124. package/methods/counters.d.ts +2 -0
  125. package/methods/counters.js +122 -0
  126. package/methods/counters.js.map +1 -0
  127. package/methods/cron-jobs.d.ts +2 -0
  128. package/methods/cron-jobs.js +1315 -0
  129. package/methods/cron-jobs.js.map +1 -0
  130. package/methods/flags.d.ts +2 -0
  131. package/methods/flags.js +9 -0
  132. package/methods/flags.js.map +1 -0
  133. package/methods/logs.d.ts +2 -0
  134. package/methods/logs.js +371 -0
  135. package/methods/logs.js.map +1 -0
  136. package/methods/monitor.d.ts +2 -0
  137. package/methods/monitor.js +565 -0
  138. package/methods/monitor.js.map +1 -0
  139. package/methods/pdf.d.ts +2 -0
  140. package/methods/pdf.js +468 -0
  141. package/methods/pdf.js.map +1 -0
  142. package/methods/report-builder.d.ts +2 -0
  143. package/methods/report-builder.js +858 -0
  144. package/methods/report-builder.js.map +1 -0
  145. package/methods/support.d.ts +2 -0
  146. package/methods/support.js +246 -0
  147. package/methods/support.js.map +1 -0
  148. package/{src/models/app-status.model.ts → models/app-status.model.d.ts} +2 -3
  149. package/models/app-status.model.js +4 -0
  150. package/models/app-status.model.js.map +1 -0
  151. package/{src/models/billing-logged-in-users.model.ts → models/billing-logged-in-users.model.d.ts} +4 -5
  152. package/models/billing-logged-in-users.model.js +4 -0
  153. package/models/billing-logged-in-users.model.js.map +1 -0
  154. package/models/collection-document.model.d.ts +19 -0
  155. package/models/collection-document.model.js +4 -0
  156. package/models/collection-document.model.js.map +1 -0
  157. package/{src/models/counter.model.ts → models/counter.model.d.ts} +3 -4
  158. package/models/counter.model.js +4 -0
  159. package/models/counter.model.js.map +1 -0
  160. package/models/cron-job-history.model.d.ts +12 -0
  161. package/models/cron-job-history.model.js +4 -0
  162. package/models/cron-job-history.model.js.map +1 -0
  163. package/models/cron-job.model.d.ts +13 -0
  164. package/models/cron-job.model.js +4 -0
  165. package/models/cron-job.model.js.map +1 -0
  166. package/models/dialog.model.d.ts +23 -0
  167. package/models/dialog.model.js +4 -0
  168. package/models/dialog.model.js.map +1 -0
  169. package/{src/models/email-history.model.ts → models/email-history.model.d.ts} +7 -8
  170. package/models/email-history.model.js +4 -0
  171. package/models/email-history.model.js.map +1 -0
  172. package/{src/models/email-verified.model.ts → models/email-verified.model.d.ts} +5 -6
  173. package/models/email-verified.model.js +4 -0
  174. package/models/email-verified.model.js.map +1 -0
  175. package/{src/models/file.model.ts → models/file.model.d.ts} +7 -8
  176. package/models/file.model.js +4 -0
  177. package/models/file.model.js.map +1 -0
  178. package/{src/models/flag.model.ts → models/flag.model.d.ts} +3 -4
  179. package/models/flag.model.js +4 -0
  180. package/models/flag.model.js.map +1 -0
  181. package/{src/models/log-method-latency.model.ts → models/log-method-latency.model.d.ts} +4 -5
  182. package/models/log-method-latency.model.js +4 -0
  183. package/models/log-method-latency.model.js.map +1 -0
  184. package/{src/models/log-subscription.model.ts → models/log-subscription.model.d.ts} +6 -8
  185. package/models/log-subscription.model.js +4 -0
  186. package/models/log-subscription.model.js.map +1 -0
  187. package/{src/models/log.model.ts → models/log.model.d.ts} +10 -12
  188. package/models/log.model.js +4 -0
  189. package/models/log.model.js.map +1 -0
  190. package/{src/models/logged-in-users.model.ts → models/logged-in-users.model.d.ts} +5 -6
  191. package/models/logged-in-users.model.js +4 -0
  192. package/models/logged-in-users.model.js.map +1 -0
  193. package/{src/models/method-response.model.ts → models/method-response.model.d.ts} +6 -7
  194. package/models/method-response.model.js +4 -0
  195. package/models/method-response.model.js.map +1 -0
  196. package/models/method.model.d.ts +9 -0
  197. package/models/method.model.js +4 -0
  198. package/models/method.model.js.map +1 -0
  199. package/{src/models/monitor-cpu.model.ts → models/monitor-cpu.model.d.ts} +7 -9
  200. package/models/monitor-cpu.model.js +4 -0
  201. package/models/monitor-cpu.model.js.map +1 -0
  202. package/models/monitor-memory.model.d.ts +15 -0
  203. package/models/monitor-memory.model.js +4 -0
  204. package/models/monitor-memory.model.js.map +1 -0
  205. package/models/monitor-mongo.model.d.ts +13 -0
  206. package/models/monitor-mongo.model.js +4 -0
  207. package/models/monitor-mongo.model.js.map +1 -0
  208. package/{src/models/notification.model.ts → models/notification.model.d.ts} +2 -3
  209. package/models/notification.model.js +4 -0
  210. package/models/notification.model.js.map +1 -0
  211. package/models/pagination.model.d.ts +10 -0
  212. package/models/pagination.model.js +24 -0
  213. package/models/pagination.model.js.map +1 -0
  214. package/models/permission.model.d.ts +12 -0
  215. package/models/permission.model.js +4 -0
  216. package/models/permission.model.js.map +1 -0
  217. package/models/report-builder-dashboard-builder.model.d.ts +25 -0
  218. package/models/report-builder-dashboard-builder.model.js +4 -0
  219. package/models/report-builder-dashboard-builder.model.js.map +1 -0
  220. package/models/report-builder-library.model.d.ts +17 -0
  221. package/models/report-builder-library.model.js +4 -0
  222. package/models/report-builder-library.model.js.map +1 -0
  223. package/models/report-builder-report.model.d.ts +98 -0
  224. package/models/report-builder-report.model.js +4 -0
  225. package/models/report-builder-report.model.js.map +1 -0
  226. package/models/report-builder.model.d.ts +61 -0
  227. package/models/report-builder.model.js +4 -0
  228. package/models/report-builder.model.js.map +1 -0
  229. package/models/select-data-label.model.d.ts +9 -0
  230. package/models/select-data-label.model.js +4 -0
  231. package/models/select-data-label.model.js.map +1 -0
  232. package/models/server-response.model.d.ts +5 -0
  233. package/models/server-response.model.js +4 -0
  234. package/models/server-response.model.js.map +1 -0
  235. package/models/subscription.model.d.ts +23 -0
  236. package/models/subscription.model.js +4 -0
  237. package/models/subscription.model.js.map +1 -0
  238. package/models/support-ticket.model.d.ts +72 -0
  239. package/models/support-ticket.model.js +4 -0
  240. package/models/support-ticket.model.js.map +1 -0
  241. package/models/user-group.model.d.ts +19 -0
  242. package/models/user-group.model.js +4 -0
  243. package/models/user-group.model.js.map +1 -0
  244. package/{src/models/user-guide.model.ts → models/user-guide.model.d.ts} +4 -5
  245. package/models/user-guide.model.js +4 -0
  246. package/models/user-guide.model.js.map +1 -0
  247. package/models/user.model.d.ts +70 -0
  248. package/models/user.model.js +4 -0
  249. package/models/user.model.js.map +1 -0
  250. package/package.json +1 -1
  251. package/{src/public_api.ts → public_api.d.ts} +1 -1
  252. package/public_api.js +75 -0
  253. package/public_api.js.map +1 -0
  254. package/publications/app-status.d.ts +2 -0
  255. package/publications/app-status.js +17 -0
  256. package/publications/app-status.js.map +1 -0
  257. package/publications/cron-jobs.d.ts +2 -0
  258. package/publications/cron-jobs.js +33 -0
  259. package/publications/cron-jobs.js.map +1 -0
  260. package/publications/files.d.ts +2 -0
  261. package/publications/files.js +37 -0
  262. package/publications/files.js.map +1 -0
  263. package/publications/flags.d.ts +2 -0
  264. package/publications/flags.js +23 -0
  265. package/publications/flags.js.map +1 -0
  266. package/publications/logs.d.ts +2 -0
  267. package/publications/logs.js +165 -0
  268. package/publications/logs.js.map +1 -0
  269. package/publications/method-responses.d.ts +2 -0
  270. package/publications/method-responses.js +17 -0
  271. package/publications/method-responses.js.map +1 -0
  272. package/publications/notifications.d.ts +2 -0
  273. package/publications/notifications.js +17 -0
  274. package/publications/notifications.js.map +1 -0
  275. package/publications/report-builder-dashboard-builders.d.ts +2 -0
  276. package/publications/report-builder-dashboard-builders.js +43 -0
  277. package/publications/report-builder-dashboard-builders.js.map +1 -0
  278. package/publications/report-builder-libraries.d.ts +2 -0
  279. package/publications/report-builder-libraries.js +90 -0
  280. package/publications/report-builder-libraries.js.map +1 -0
  281. package/publications/report-builder-reports.d.ts +2 -0
  282. package/publications/report-builder-reports.js +51 -0
  283. package/publications/report-builder-reports.js.map +1 -0
  284. package/publications/super-admin.d.ts +2 -0
  285. package/publications/super-admin.js +17 -0
  286. package/publications/super-admin.js.map +1 -0
  287. package/publications/user-groups.d.ts +1 -0
  288. package/publications/user-groups.js +17 -0
  289. package/publications/user-groups.js.map +1 -0
  290. package/publications/user-guides.d.ts +1 -0
  291. package/publications/user-guides.js +17 -0
  292. package/publications/user-guides.js.map +1 -0
  293. package/server-app.d.ts +52 -0
  294. package/server-app.js +739 -0
  295. package/server-app.js.map +1 -0
  296. package/util/common.d.ts +24 -0
  297. package/util/common.js +511 -0
  298. package/util/common.js.map +1 -0
  299. package/util/schema-report-builder.d.ts +6 -0
  300. package/util/schema-report-builder.js +453 -0
  301. package/util/schema-report-builder.js.map +1 -0
  302. package/.nodemon.json +0 -5
  303. package/.vscode/settings.json +0 -3
  304. package/README.md +0 -22
  305. package/compileDTS.pl +0 -64
  306. package/gulpfile.js +0 -127
  307. package/mongodbensurers.js +0 -2
  308. package/mongostop.js +0 -3
  309. package/settings.development.json +0 -13
  310. package/src/client-server-app.ts +0 -7
  311. package/src/collections/app-status.collection.ts +0 -51
  312. package/src/collections/counter.collection.ts +0 -54
  313. package/src/collections/cron-job-history.collection.ts +0 -82
  314. package/src/collections/cron-job.collection.ts +0 -85
  315. package/src/collections/email-history.collection.ts +0 -66
  316. package/src/collections/email-verified.collection.ts +0 -61
  317. package/src/collections/file.collection.ts +0 -73
  318. package/src/collections/flag.collection.ts +0 -56
  319. package/src/collections/log-method-latency.collection.ts +0 -64
  320. package/src/collections/log-subscription.collection.ts +0 -68
  321. package/src/collections/log-ts.collection.ts +0 -78
  322. package/src/collections/log.collection.ts +0 -77
  323. package/src/collections/logged-in-users.collection.ts +0 -65
  324. package/src/collections/method-response.collection.ts +0 -66
  325. package/src/collections/monitor-cpu.collection.ts +0 -63
  326. package/src/collections/monitor-memory.collection.ts +0 -75
  327. package/src/collections/monitor-mongo.collection.ts +0 -69
  328. package/src/collections/notification.collection.ts +0 -51
  329. package/src/collections/report-builder-dashboard-builder.collection.ts +0 -109
  330. package/src/collections/report-builder-library.collection.ts +0 -89
  331. package/src/collections/report-builder-report.collection.ts +0 -149
  332. package/src/collections/user-group.collection.ts +0 -90
  333. package/src/collections/user-guide.collection.ts +0 -57
  334. package/src/collections/user.collection.ts +0 -259
  335. package/src/cron/cron.ts +0 -188
  336. package/src/fixtures/cron-jobs.ts +0 -25
  337. package/src/fixtures/init.ts +0 -10
  338. package/src/http/auth.ts +0 -732
  339. package/src/http/health.ts +0 -7
  340. package/src/http/home.ts +0 -71
  341. package/src/index.ts +0 -71
  342. package/src/managers/cron.manager.ts +0 -208
  343. package/src/managers/method.manager.ts +0 -607
  344. package/src/managers/mongo.manager.ts +0 -2282
  345. package/src/managers/monitor.manager.ts +0 -323
  346. package/src/managers/subscription.manager.ts +0 -1196
  347. package/src/methods/accounts.ts +0 -202
  348. package/src/methods/aws.ts +0 -507
  349. package/src/methods/collections.ts +0 -512
  350. package/src/methods/counters.ts +0 -75
  351. package/src/methods/cron-jobs.ts +0 -1454
  352. package/src/methods/flags.ts +0 -7
  353. package/src/methods/logs.ts +0 -327
  354. package/src/methods/monitor.ts +0 -548
  355. package/src/methods/pdf.ts +0 -615
  356. package/src/methods/report-builder.ts +0 -876
  357. package/src/methods/support.ts +0 -146
  358. package/src/models/collection-document.model.ts +0 -22
  359. package/src/models/cron-job-history.model.ts +0 -13
  360. package/src/models/cron-job.model.ts +0 -14
  361. package/src/models/dialog.model.ts +0 -25
  362. package/src/models/method.model.ts +0 -11
  363. package/src/models/monitor-memory.model.ts +0 -17
  364. package/src/models/monitor-mongo.model.ts +0 -15
  365. package/src/models/pagination.model.ts +0 -30
  366. package/src/models/permission.model.ts +0 -14
  367. package/src/models/report-builder-dashboard-builder.model.ts +0 -29
  368. package/src/models/report-builder-library.model.ts +0 -20
  369. package/src/models/report-builder-report.model.ts +0 -110
  370. package/src/models/report-builder.model.ts +0 -68
  371. package/src/models/select-data-label.model.ts +0 -9
  372. package/src/models/server-response.model.ts +0 -5
  373. package/src/models/subscription.model.ts +0 -64
  374. package/src/models/support-ticket.model.ts +0 -81
  375. package/src/models/user-group.model.ts +0 -23
  376. package/src/models/user.model.ts +0 -79
  377. package/src/publications/app-status.ts +0 -13
  378. package/src/publications/cron-jobs.ts +0 -30
  379. package/src/publications/files.ts +0 -34
  380. package/src/publications/flags.ts +0 -20
  381. package/src/publications/logs.ts +0 -164
  382. package/src/publications/method-responses.ts +0 -13
  383. package/src/publications/notifications.ts +0 -13
  384. package/src/publications/report-builder-dashboard-builders.ts +0 -39
  385. package/src/publications/report-builder-libraries.ts +0 -41
  386. package/src/publications/report-builder-reports.ts +0 -48
  387. package/src/publications/super-admin.ts +0 -13
  388. package/src/publications/user-groups.ts +0 -12
  389. package/src/publications/user-guides.ts +0 -12
  390. package/src/server-app.ts +0 -769
  391. package/src/util/common.ts +0 -519
  392. package/src/util/schema-report-builder.ts +0 -413
  393. package/tsconfig.json +0 -30
  394. package/tslint.json +0 -143
  395. /package/{src/private → private}/email-templates/enrollment.html +0 -0
  396. /package/{src/private → private}/email-templates/forgot-password.html +0 -0
  397. /package/{src/private → private}/email-templates/support-ticket-deleted.html +0 -0
  398. /package/{src/private → private}/email-templates/support-ticket-modified.html +0 -0
  399. /package/{src/private → private}/email-templates/support-ticket.html +0 -0
  400. /package/{src/private → private}/images/ResolveIO.png +0 -0
package/src/server-app.ts DELETED
@@ -1,769 +0,0 @@
1
- import { createServer, Server } from 'http';
2
- import * as express from 'express';
3
- import * as bodyParser from 'body-parser';
4
- import * as xmlParser from 'express-xml-bodyparser';
5
- import * as WebSocket from 'ws';
6
- import * as jwt from 'jsonwebtoken';
7
- import { v4 as uuidv4 } from 'uuid';
8
- // import * as SegfaultHandler from 'segfault-handler';
9
- import * as moment from 'moment';
10
-
11
- import { dateReviver, getBinarySize, deepCopy } from './util/common';
12
-
13
- import { objectIdHexString } from './managers/mongo.manager';
14
- import { CronManager } from './managers/cron.manager';
15
- import { MethodManager } from './managers/method.manager';
16
- import { SubscriptionManager } from './managers/subscription.manager';
17
- import { MonitorManager, MonitorManagerFunction } from './managers/monitor.manager';
18
-
19
- import { ServerResponseModel } from './models/server-response.model';
20
-
21
- import { MethodResponses } from './collections/method-response.collection';
22
- import { Logs } from './collections/log.collection';
23
- import { LogMethodLatencies } from './collections/log-method-latency.collection';
24
- import { Users } from './collections/user.collection';
25
-
26
- import { setupHomeRoutes } from './http/home';
27
- import { setupAuthRoutes } from './http/auth';
28
- import { setupHealthRoutes } from './http/health';
29
- import { ResolveIOServer } from './index';
30
-
31
- export default class ResolveIOMainServer {
32
- private _app: express.Application;
33
- private _serverHTTP: Server;
34
- private _portHTTP: string | number;
35
- private _serverWSS: WebSocket.Server;
36
- private _portWSS: number;
37
- private _serverConfig;
38
- private _clientDir;
39
- private _offlineUpdates = [];
40
- private _msgQueue = [];
41
- private _msgQueueRunning = false;
42
- public sesMail = false;
43
- private standardProgram = false;
44
- private publicProgram = false;
45
- private _rebootFlag = false;
46
-
47
- private LOGGER = 'ERROR'; //ERROR / DEBUG
48
-
49
- private _monitorManager: MonitorManager;
50
- private _monitorManagerFunction: MonitorManagerFunction;
51
- private _subscriptionManager: SubscriptionManager;
52
- private _methodManager: MethodManager;
53
- private _cronManager: CronManager;
54
- private _clientRoutes: string[] = [];
55
-
56
- private _serverStartTime: Date;
57
- private _lastErrorMsg: Date = null;
58
-
59
- private _debugMsgRecv = 0;
60
- private _debugMsgQueue = 0;
61
-
62
- constructor(mainServer, serverConfig, clientRoutes, clientDir, sesMail, standardProgram, publicProgram = false) {
63
- this._serverConfig = serverConfig;
64
- this._clientRoutes = clientRoutes;
65
- this._clientDir = clientDir;
66
- this.sesMail = sesMail;
67
- this.standardProgram = standardProgram;
68
- this.publicProgram = publicProgram;
69
-
70
- this._serverStartTime = new Date();
71
- this._lastErrorMsg = null;
72
- this._monitorManager = new MonitorManager(mainServer, serverConfig);
73
- this._monitorManagerFunction = new MonitorManagerFunction();
74
-
75
- setInterval(() => {
76
- if (this._subscriptionManager.getEnableDebug()) {
77
- console.log(new Date(), 'Server App', 'Msg Queue Length', this._msgQueue.length);
78
- console.log(new Date(), 'Server App', 'Msg Recv Hits', this._debugMsgRecv);
79
- console.log(new Date(), 'Server App', 'Msg Queue Hits', this._debugMsgQueue);
80
- }
81
-
82
- this._debugMsgQueue = 0;
83
- this._debugMsgRecv = 0;
84
- }, 60000);
85
-
86
- process.on('unhandledRejection', async (error, rej) => {
87
- console.error(new Date(), 'Unhandled Rejection at Promise', [error, rej]);
88
-
89
- let diffTimeSec = moment().diff(this._serverStartTime, 'seconds');
90
-
91
- if (error && error['name'] === 'MongoError' && error['message'] === 'not master') {
92
- if (diffTimeSec > 60 && !this._lastErrorMsg) {
93
- this._lastErrorMsg = new Date();
94
-
95
- setTimeout(() => {
96
- this._lastErrorMsg = null;
97
- }, 60000);
98
-
99
- await this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Rejection - Quitting NodeJS - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));
100
- }
101
-
102
- process.exit(1);
103
- }
104
- else if (error && error['name'] === 'MongoError' && error['message'] === 'not master and slaveOk=false') {
105
- if (diffTimeSec > 60 && !this._lastErrorMsg) {
106
- this._lastErrorMsg = new Date();
107
-
108
- setTimeout(() => {
109
- this._lastErrorMsg = null;
110
- }, 60000);
111
-
112
- await this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Rejection - Quitting NodeJS - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));
113
- }
114
-
115
- process.exit(1);
116
- }
117
- else if (error) {
118
- if (error['name'] !== 'StatusError' && error['message'] !== '') {
119
- if (diffTimeSec > 60 && !this._lastErrorMsg) {
120
- this._lastErrorMsg = new Date();
121
-
122
- setTimeout(() => {
123
- this._lastErrorMsg = null;
124
- }, 60000);
125
-
126
- this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Rejection - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));
127
- }
128
- }
129
- }
130
- });
131
-
132
- process.on('uncaughtException', async error => {
133
- console.error(error, 'Uncaught Exception thrown');
134
-
135
- let diffTimeSec = moment().diff(this._serverStartTime, 'seconds');
136
-
137
- if (diffTimeSec > 60 && !this._lastErrorMsg) {
138
- this._lastErrorMsg = new Date();
139
-
140
- setTimeout(() => {
141
- this._lastErrorMsg = null;
142
- }, 60000);
143
-
144
- await this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Exception - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));
145
- }
146
- });
147
-
148
- //PM2 wants to reboot/restart
149
- process.on('SIGINT', () => {
150
- this._rebootFlag = true;
151
- this._serverHTTP.close();
152
- this.safeShutdown();
153
- });
154
-
155
- process.on('SIGTERM', () => {
156
- this._rebootFlag = true;
157
- this._serverHTTP.close();
158
- this.safeShutdown();
159
- });
160
-
161
- process.on('SIGQUIT', () => {
162
- this._rebootFlag = true;
163
- this._serverHTTP.close();
164
- this.safeShutdown();
165
- });
166
-
167
- if (this.LOGGER === 'DEBUG') {
168
- console.log('Starting ResolveIO Server');
169
- }
170
-
171
- // Start express app
172
- this._app = express();
173
-
174
- // Use body parser for http call (login)
175
- this._app.use(bodyParser.json({limit: '50mb', reviver: dateReviver}));
176
- this._app.use(bodyParser.urlencoded({limit: '50mb', extended: true, parameterLimit: 1000000 }));
177
- this._app.use(xmlParser());
178
-
179
- // Set port
180
- this._portHTTP = process.env.PORT_HTTP || serverConfig['PORT_HTTP'] || 8080;
181
- this._portWSS = process.env.PORT_WSS || serverConfig['PORT_WSS'] || 8081;
182
-
183
- if (this.LOGGER === 'DEBUG') {
184
- console.log('Setup ports');
185
- }
186
-
187
- // Create http server and websock server
188
- this.createServer();
189
-
190
- if (this.LOGGER === 'DEBUG') {
191
- console.log('Create server');
192
- }
193
-
194
- // Set CORS
195
- this._app.use(function (req, res, next) {
196
-
197
- // Website you wish to allow to connect
198
- // res.setHeader('Access-Control-Allow-Origin', serverConfig['ROOT_URL']);
199
- res.setHeader('Access-Control-Allow-Origin', '*');
200
-
201
- // Request methods you wish to allow
202
- // res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
203
- res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
204
-
205
- // Request headers you wish to allow
206
- res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
207
-
208
- // Set to true if you need the website to include cookies in the requests sent
209
- // to the API (e.g. in case you use sessions)
210
- res.setHeader('Access-Control-Allow-Credentials', 'false');
211
-
212
- // Pass to next layer of middleware
213
- next();
214
- });
215
-
216
- if (this.LOGGER === 'DEBUG') {
217
- console.log('Setup cors');
218
- }
219
-
220
- // Set up http login route
221
- setupAuthRoutes(this, this._app, serverConfig);
222
- setupHealthRoutes(this._app, serverConfig);
223
-
224
- if (serverConfig['CLIENT_NAME'] === 'ResolveIO' || this.standardProgram) {
225
- setupHomeRoutes(this, this._app, serverConfig);
226
- }
227
-
228
- if (this.LOGGER === 'DEBUG') {
229
- console.log('Setup express routes');
230
- }
231
- }
232
-
233
- private safeShutdown() {
234
- console.log(new Date(), 'Safe Shutdown Command Received');
235
- if (
236
- !this._monitorManagerFunction.getActiveMonitorFunctions().length &&
237
- // (!this._monitorManagerFunction.getLastCompletedMonitorFunction() ||
238
- // Date.now() >= this._monitorManagerFunction.getLastCompletedMonitorFunction().endTime.getTime() + 1500) &&
239
- !this._msgQueue.length &&
240
- !this._msgQueueRunning &&
241
- !this._offlineUpdates.length
242
- ) {
243
- ResolveIOServer.getMongoConnection().close(false, () => {
244
- console.log(new Date(), 'Safe Exit Complete, Process Exit');
245
- process.exit(0);
246
- });
247
- }
248
- else {
249
- console.log(new Date(),
250
- 'Safe Exit In Progress',
251
- this._monitorManagerFunction.getActiveMonitorFunctions().length,
252
- // this._monitorManagerFunction.getLastCompletedMonitorFunction() ? this._monitorManagerFunction.getLastCompletedMonitorFunction().endTime : '',
253
- this._msgQueue.length,
254
- this._msgQueueRunning,
255
- this._offlineUpdates.length
256
- );
257
-
258
- setImmediate(() => {
259
- this.safeShutdown();
260
- });
261
- }
262
- }
263
-
264
- public getWS(id_ws: string) {
265
- return Array.from(this._serverWSS.clients).filter(a => a['id_socket'] === id_ws)[0];
266
- }
267
-
268
- public getWSList() {
269
- let res = [];
270
-
271
- this._serverWSS.clients.forEach((ws: WebSocket) => {
272
- res.push(ws['id_socket']);
273
- });
274
-
275
- return res;
276
- }
277
-
278
- public getWSUserList() {
279
- let res = [];
280
-
281
- this._serverWSS.clients.forEach((ws: WebSocket) => {
282
- res.push(ws['id_user']);
283
- });
284
-
285
- return res;
286
- }
287
-
288
- public getHTTPServer() {
289
- return this._serverHTTP;
290
- }
291
-
292
- public getCronManager() {
293
- return this._cronManager;
294
- }
295
-
296
- public getMethodManager() {
297
- return this._methodManager;
298
- }
299
-
300
- public getSubscriptionManager() {
301
- return this._subscriptionManager;
302
- }
303
-
304
- public getMonitorManager() {
305
- return this._monitorManager;
306
- }
307
-
308
- public getRebootFlag() {
309
- return this._rebootFlag;
310
- }
311
-
312
- private createServer(): void {
313
- // Start express server
314
- this._serverHTTP = createServer(this._app);
315
- this._serverHTTP.keepAliveTimeout = 65000;
316
- this._serverHTTP.headersTimeout = 66000; // This should be bigger than `keepAliveTimeout + your server's expected response time`
317
-
318
- // Start websocket server
319
- // Verify client with token before opening socket
320
- this._serverWSS = new WebSocket.Server({
321
- port: this._portWSS,
322
- verifyClient: this.publicProgram ? null : async (info, cb) => {
323
- if (this._rebootFlag) {
324
- cb(false, 409, 'Unable To Process');
325
- }
326
- else {
327
- if (this.LOGGER === 'DEBUG') {
328
- console.log('Verify Client', info, cb);
329
- }
330
-
331
- let infoData = (<string>info.req.headers['sec-websocket-protocol']).split(/,/);
332
-
333
- if (info.origin !== this._serverConfig['ROOT_URL'] && info.origin !== this._serverConfig['SEC_ROOT_URL'] && info.origin !== this._serverConfig['RESOLVEIO_URL'] && info.origin !== this._serverConfig['RESOLVEIO_SECONDARY_URL']) {
334
- cb(false, 401, 'Unauthorized');
335
- }
336
- else {
337
- let token = infoData[0];
338
- if (!token) {
339
- cb(false, 401, 'Unauthorized');
340
- }
341
- else {
342
- jwt.verify(token, this._serverConfig['JWT_SECRET'], async (err, decoded) => {
343
- if (err) {
344
- cb(false, 401, 'Unauthorized');
345
- }
346
- else {
347
- info.req['id_user'] = decoded['id_user'];
348
- try {
349
- let user = await Users.findById(decoded['id_user']);
350
- if (user) {
351
- info.req['user'] = user.fullname;
352
- info.req['user_readonly'] = user.readonly || false;
353
- info.req['doc_user'] = user;
354
- cb(true);
355
- }
356
- else {
357
- cb(false);
358
- }
359
- }
360
- catch (err) {
361
- cb(false);
362
- }
363
- }
364
- });
365
- }
366
- }
367
- }
368
- }
369
- });
370
-
371
- // Start MongoDB Connection
372
- this.setUpMongo();
373
- }
374
-
375
- private setUpMongo() {
376
- if (this.LOGGER === 'DEBUG') {
377
- console.log('Start Managers');
378
- }
379
-
380
- // Start Managers
381
- this._subscriptionManager = new SubscriptionManager(this, this._serverWSS, this._serverConfig, this._monitorManagerFunction);
382
- this._methodManager = new MethodManager(this, this._serverConfig, this._clientDir, this._monitorManagerFunction);
383
- this._cronManager = new CronManager(this);
384
-
385
- if (this.LOGGER === 'DEBUG') {
386
- console.log('End Managers');
387
- }
388
-
389
- this.listen();
390
- }
391
-
392
- // Listen to port for websocket
393
- private listen(): void {
394
- this._serverHTTP.listen(this._portHTTP, () => {
395
- console.log('Running server on port %s', this._portHTTP);
396
- });
397
-
398
- this._serverWSS.on('listening', () => {
399
- console.log('Running server on port %s', this._portWSS);
400
- });
401
-
402
- // On websocket connection (already verified)
403
- this._serverWSS.on('connection', (ws, req) => {
404
- if (!this.publicProgram) {
405
- // Get user from token
406
- ws['id_user'] = req['id_user'];
407
- ws['user'] = req['user'];
408
- ws['user_readonly'] = req['user_readonly'];
409
- ws['doc_user'] = req['doc_user'];
410
-
411
- if (ws['user'] !== 'Admin' && this._serverConfig['CLIENT_NAME'] !== 'ResolveIO') {
412
- this.getMethodManager().callMethodInternal.call(this.getMethodManager(), 'supportCreateBillingUser', {
413
- id_user: ws['id_user'],
414
- user: ws['user'],
415
- date: new Date(),
416
- client: ResolveIOServer.getClientName()
417
- });
418
- }
419
- }
420
-
421
- let idSocket = '';
422
-
423
- while (!idSocket || Array.from(this._serverWSS.clients).some(a => a['id_socket'] === idSocket)) {
424
- idSocket = uuidv4();
425
- }
426
-
427
- ws['id_socket'] = idSocket;
428
- ws['retryCnt'] = 0;
429
-
430
- this._subscriptionManager.createLoggedInUser(idSocket).then(() => {
431
- setTimeout(() => {
432
- ws['pingTime'] = new Date();
433
- ws.ping(() => {});
434
- }, 5000);
435
- });
436
-
437
- if (this.LOGGER === 'DEBUG') {
438
- console.log('Connection from: ' + req['user']);
439
- }
440
-
441
- // Use for keeping connection alive (ping/pong)
442
- ws['isAlive'] = true;
443
- ws.on('pong', () => {
444
- ws['isAlive'] = true;
445
- ws['pongTime'] = new Date();
446
- ws['latency'] = moment.duration(moment(ws['pongTime']).diff(ws['pingTime'])).asMilliseconds();
447
- this._subscriptionManager.loggedInLatency(ws);
448
- });
449
-
450
- // On data received (message)
451
- ws.on('message', async (message: string) => {
452
- if (this.LOGGER === 'DEBUG') {
453
- console.log('Message from: ' + ws['user'], message);
454
- }
455
-
456
- this._debugMsgRecv += 1;
457
-
458
- let parseErrorFound = false;
459
-
460
- let socketData = [];
461
-
462
- try {
463
- socketData = JSON.parse(message, dateReviver);
464
- }
465
- catch(e) {
466
- console.log('Error - JSON.parse', message);
467
-
468
- this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - JSON Parse Error - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([message, e]));
469
-
470
- parseErrorFound = true;
471
- }
472
-
473
- if (!parseErrorFound) {
474
- if (socketData[0] === 'ping') {
475
- if (ws && ws.readyState === ws.OPEN) {
476
- ws.send('pong', (error) => {
477
- if (error) {
478
- console.log('Error on WS: ', error);
479
- if (this._subscriptionManager.getEnableDebug()) {
480
- console.log(new Date(), 'Server App', 'Error WS Pong');
481
- }
482
- this.unsubscribeWS(ws);
483
- }
484
- });
485
- }
486
-
487
- return;
488
- }
489
-
490
- let messageRoute = socketData[0];
491
-
492
- if (!this.publicProgram && this._clientRoutes.some(a => messageRoute.includes(a)) && !ws['doc_user'].roles.groups.some(a => a.views.some(b => messageRoute.includes(b))) && !ws['doc_user'].roles.super_admin) {
493
- return;
494
- }
495
-
496
- let messageDate = socketData[1];
497
- let messageId = socketData[2]
498
- let type = socketData[3]
499
-
500
- if (type === 'subscription') {
501
- let subType = socketData[4];
502
- let pub = socketData[5];
503
-
504
- // Subscribe
505
- if (subType === 'sub') {
506
- this._subscriptionManager.subscribe(messageRoute, messageDate, ws, messageId, pub, socketData.slice(6));
507
- }
508
- // Unsubscribe
509
- else {
510
- this._subscriptionManager.unsubscribe(messageRoute, messageDate, ws, messageId, pub, socketData.slice(6));
511
- }
512
- }
513
- else if (!this.publicProgram && type === 'offline') {
514
- let serverRes: ServerResponseModel = {
515
- messageId: messageId,
516
- hasError: false,
517
- data: 'ACK'
518
- };
519
-
520
- if (ws && ws.readyState === ws.OPEN) {
521
- ws.send(JSON.stringify(serverRes), (error) => {
522
- if (error) {
523
- console.log('Error on WS: ', error);
524
- if (this._subscriptionManager.getEnableDebug()) {
525
- console.log(new Date(), 'Server App', 'Error WS Offline Ack Main');
526
- }
527
- this.unsubscribeWS(ws);
528
- }
529
- });
530
- }
531
-
532
- this._offlineUpdates.push(ws);
533
- let offlineUpdates = socketData[4];
534
-
535
- for (let i = 0; i < offlineUpdates.length; i++) {
536
- let update = offlineUpdates[i];
537
- let data = update.data;
538
-
539
- let serverResMethod: ServerResponseModel = {
540
- messageId: update.data[2],
541
- hasError: false,
542
- data: 'ACK'
543
- };
544
-
545
- if (ws && ws.readyState === ws.OPEN) {
546
- ws.send(JSON.stringify(serverResMethod), (error) => {
547
- if (error) {
548
- console.log('Error on WS: ', error);
549
- if (this._subscriptionManager.getEnableDebug()) {
550
- console.log(new Date(), 'Server App', 'Error WS Offline Ack Each');
551
- }
552
- this.unsubscribeWS(ws);
553
- }
554
- });
555
- }
556
-
557
- let updateRoute = data.shift();
558
- let updateDate = data.shift();
559
- let updateMessageId = data.shift();
560
- let updateType = data.shift();
561
- let method = data.shift();
562
- let methodLatencyId = objectIdHexString();
563
-
564
- LogMethodLatencies.create({
565
- _id: methodLatencyId,
566
- __v: 0,
567
- date_start: new Date(),
568
- date_end: null,
569
- latency_ms: 0,
570
- method: method
571
- });
572
-
573
- if (method !== 'reportBuilderGetResults' && method !== 'reportBuilderGetDistinctValue' && method !== 'reportBuilderBuildTree' && method !== 'generatePDF' && method !== 'getWOOfflineData' && method !== 'countQuery' && method !== 'countWithQuery' && method !== 'countCollectionWithQuery' && method !== 'find' && method !== 'findOne' && method !== 'findWithOptions' && method !== 'getDrivers' && method !== 'processAirdropDistribution') {
574
- Logs.insertOne({
575
- _id: objectIdHexString(),
576
- type: 'client-request',
577
- collection: '',
578
- id_document: '',
579
- payload: getBinarySize(JSON.stringify(data)) < 200000 ? JSON.stringify(data, null, 2) : 'Too Big',
580
- method: method,
581
- id_user: ws['id_user'] || '',
582
- user: ws['user'] || '',
583
- messageId: messageId,
584
- route: messageRoute
585
- });
586
- }
587
-
588
- if (this._methodManager._methods[method]) {
589
- try {
590
- await this._methodManager.callMethodInternal.call(Object.assign({}, this._methodManager, {id_user: ws['id_user'], user: ws['user'], id_ws: ws['id_socket']}), method, ...data);
591
- }
592
- catch (err) {
593
- console.log(new Date(), 'Offline Error', JSON.stringify(err, null, 2));
594
- }
595
-
596
- if (method === 'updateDocumentOffline' || method === 'updateDocumentPropsOffline') {
597
- ResolveIOServer.getMongoManager().invalidateQueryCache(data[0]);
598
- }
599
- }
600
- else {
601
- console.log('Offline - Could not find method: ' + method);
602
- }
603
- }
604
-
605
- this._offlineUpdates.splice(this._offlineUpdates.map(a => a['id_socket']).indexOf(ws['id_socket']), 1);
606
- }
607
- else { //methods
608
- this._msgQueue.splice(0, 0, {
609
- ws: ws,
610
- data: socketData
611
- });
612
- }
613
- }
614
- });
615
-
616
- ws.on('close', () => {
617
- this.unsubscribeWS(ws);
618
- if (this._subscriptionManager.getEnableDebug()) {
619
- console.log(new Date(), 'Server App', 'WS Close');
620
- }
621
- });
622
-
623
- ws.on('error', error => {
624
- console.log(new Date(), ws['user'], ws['id_socket'], 'WS Error');
625
-
626
- this.unsubscribeWS(ws);
627
- });
628
- });
629
-
630
- // Keep alive timer to ping/pong
631
- setInterval(() => {
632
- this._serverWSS.clients.forEach((ws: WebSocket) => {
633
- if (ws['pingTime'] && Date.now() - ws['pingTime'].getTime() >= 20000) {
634
- if (ws['isAlive'] === false) {
635
- ws['retryCnt']++;
636
-
637
- if (ws['retryCnt'] >= 3) {
638
- this.unsubscribeWS(ws);
639
- console.log(new Date(), ws['user'], ws['id_socket'], 'Ping Retry', ws['retryCnt'], ws['pingTime'], ws['pongTime']);
640
- }
641
- else {
642
- ws['pingTime'] = new Date();
643
- ws.ping(() => {});
644
- }
645
- }
646
- else {
647
- ws['retryCnt'] = 0;
648
- ws['isAlive'] = false;
649
- ws['pingTime'] = new Date();
650
- ws.ping(() => {});
651
- }
652
- }
653
- });
654
- }, 20000);
655
-
656
- setInterval(() => {
657
- if (!this._msgQueueRunning) {
658
- if (this._msgQueue.length) {
659
- this._msgQueueRunning = true;
660
- this._debugMsgQueue += 1;
661
-
662
- let msg = this._msgQueue.pop();
663
- let data = msg.data;
664
- let ws = msg.ws;
665
-
666
- let messageRoute: string = data.shift();
667
- let messageDate: Date = data.shift();
668
- let messageId: number = data.shift();
669
- let type: string = data.shift();
670
-
671
- // Method call
672
- if (type === 'method') {
673
- let method = data.shift();
674
-
675
- if (ws['user_readonly']) {
676
- return;
677
- }
678
-
679
- let methodLatencyId = objectIdHexString();
680
-
681
- LogMethodLatencies.create({
682
- _id: methodLatencyId,
683
- __v: 0,
684
- date_start: new Date(),
685
- date_end: null,
686
- latency_ms: 0,
687
- method: method
688
- });
689
-
690
- if (method !== 'reportBuilderGetResults' && method !== 'reportBuilderGetDistinctValue' && method !== 'reportBuilderBuildTree' && method !== 'generatePDF' && method !== 'getWOOfflineData' && method !== 'countQuery' && method !== 'countWithQuery' && method !== 'countCollectionWithQuery' && method !== 'find' && method !== 'findOne' && method !== 'findWithOptions' && method !== 'getDrivers' && method !== 'processAirdropDistribution') {
691
- Logs.insertOne({
692
- _id: objectIdHexString(),
693
- type: 'client-request',
694
- collection: '',
695
- id_document: '',
696
- payload: getBinarySize(JSON.stringify(data)) < 200000 ? JSON.stringify(data, null, 2) : 'Too Big',
697
- method: method,
698
- id_user: ws['id_user'] || '',
699
- user: ws['user'] || '',
700
- messageId: messageId,
701
- route: messageRoute
702
- });
703
- }
704
-
705
- let serverRes: ServerResponseModel = {
706
- messageId: messageId,
707
- hasError: false,
708
- data: 'ACK'
709
- };
710
-
711
- if (ws && ws.readyState === ws.OPEN) {
712
- ws.send(JSON.stringify(serverRes), (error) => {
713
- if (error) {
714
- console.log('Error on WS: ', error);
715
- this.unsubscribeWS(ws);
716
- }
717
- });
718
- }
719
-
720
- if (this._methodManager._methods[method]) {
721
- this._methodManager.callMethod(methodLatencyId, ws, messageDate, messageId, method, ...data);
722
- }
723
- else {
724
- console.log('Could not find method: ' + method);
725
- }
726
- }
727
- else if (type === 'methodResponse') {
728
- let method = data.shift();
729
-
730
- MethodResponses.findOne({$and: [
731
- {id_user: ws['id_user']},
732
- {message_id: messageId},
733
- {method: method},
734
- {date: messageDate}
735
- ]}).then(res => {
736
- if (res) {
737
- if (ws && ws.readyState === ws.OPEN) {
738
- ws.send(JSON.stringify(res.response), (error) => {
739
- if (error) {
740
- console.log('Error on WS: ', error);
741
- this.unsubscribeWS(ws);
742
- }
743
- });
744
- }
745
- }
746
- }, err => {});
747
- }
748
-
749
- this._msgQueueRunning = false;
750
- }
751
- }
752
- }, 25);
753
- }
754
-
755
- public unsubscribeWS(ws: WebSocket) {
756
- if (this._subscriptionManager.getEnableDebug()) {
757
- console.log(new Date(), 'Server App', 'Unsub WS', ws['user'], ws['id_socket']);
758
- }
759
- this._subscriptionManager.unsubscribeAll(ws);
760
- }
761
-
762
- public getApp() {
763
- return this._app;
764
- }
765
-
766
- public getServerConfig() {
767
- return this._serverConfig;
768
- }
769
- }