@resolveio/server-lib 22.3.60 → 22.3.62

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 (691) hide show
  1. package/.nodemon.json +5 -0
  2. package/.vscode/settings.json +21 -0
  3. package/AGENTS.md +189 -0
  4. package/README.md +22 -0
  5. package/build_package.sh +5 -0
  6. package/compileDTS.pl +64 -0
  7. package/docs/ai-assistant-nightly-eval.md +65 -0
  8. package/docs/ai-assistant-preflight-checklist.md +23 -0
  9. package/docs/ai-assistant-report-builder-bridge-playbook.md +115 -0
  10. package/eslint-plugin-custom/index.js +7 -0
  11. package/eslint-plugin-custom/rules/no-filter-zero-index.js +44 -0
  12. package/eslint.config.js +103 -0
  13. package/gulpfile.js +216 -0
  14. package/methodAndPublicationListGenerator.py +375 -0
  15. package/mongodbensurers.js +2 -0
  16. package/mongostop.js +3 -0
  17. package/package.json +1 -1
  18. package/scripts/cleanup-bypassed-callmethod-logs.js +616 -0
  19. package/settings.development.json +25 -0
  20. package/settings.development.redacted.json +25 -0
  21. package/src/.env +12 -0
  22. package/src/ai/assistant-core-heuristics.ts +379 -0
  23. package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +185 -0
  24. package/src/ai/resolveio-platform-intelligence-memory.ts +325 -0
  25. package/{ai/resolveio-platform-intelligence-types.d.ts → src/ai/resolveio-platform-intelligence-types.ts} +20 -15
  26. package/src/ai/resolveio-platform-intelligence.ts +462 -0
  27. package/src/client-server-app.ts +12 -0
  28. package/src/collections/ai-terminal-conversation.collection.ts +91 -0
  29. package/src/collections/ai-terminal-issue-report.collection.ts +99 -0
  30. package/src/collections/ai-terminal-message.collection.ts +77 -0
  31. package/src/collections/app-setting.collection.ts +104 -0
  32. package/src/collections/app-status.collection.ts +58 -0
  33. package/src/collections/communication-metric.collection.ts +84 -0
  34. package/src/collections/counter.collection.ts +56 -0
  35. package/src/collections/cron-job-history.collection.ts +94 -0
  36. package/src/collections/cron-job.collection.ts +92 -0
  37. package/src/collections/customer-notification.collection.ts +131 -0
  38. package/src/collections/customer-portal-password.collection.ts +76 -0
  39. package/src/collections/email-history.collection.ts +127 -0
  40. package/src/collections/email-verified.collection.ts +62 -0
  41. package/src/collections/file.collection.ts +74 -0
  42. package/src/collections/flag-update.collection.ts +57 -0
  43. package/src/collections/flag.collection.ts +57 -0
  44. package/src/collections/log-method-latency.collection.ts +77 -0
  45. package/src/collections/log-subscription.collection.ts +80 -0
  46. package/src/collections/log.collection.ts +93 -0
  47. package/src/collections/logged-in-users.collection.ts +67 -0
  48. package/src/collections/monitor-cpu.collection.ts +65 -0
  49. package/src/collections/monitor-function.collection.ts +74 -0
  50. package/src/collections/monitor-memory.collection.ts +77 -0
  51. package/src/collections/monitor-mongo.collection.ts +71 -0
  52. package/src/collections/notification.collection.ts +57 -0
  53. package/src/collections/openai-usage-ledger.collection.ts +77 -0
  54. package/src/collections/report-builder-dashboard-builder.collection.ts +109 -0
  55. package/src/collections/report-builder-library.collection.ts +89 -0
  56. package/src/collections/report-builder-report.collection.ts +184 -0
  57. package/src/collections/user-group.collection.ts +89 -0
  58. package/src/collections/user-guide.collection.ts +57 -0
  59. package/src/collections/user.collection.ts +181 -0
  60. package/src/cron/cron.ts +117 -0
  61. package/src/fixtures/cron-jobs.ts +95 -0
  62. package/src/fixtures/init.ts +35 -0
  63. package/src/http/auth.ts +764 -0
  64. package/src/http/health.ts +7 -0
  65. package/src/http/home.ts +90 -0
  66. package/src/http/slow-query-publication.ts +49 -0
  67. package/src/index.ts +1 -0
  68. package/src/managers/ai-assistant-codex-manager.manager.ts +1131 -0
  69. package/src/managers/communication-metric.manager.ts +82 -0
  70. package/src/managers/cron.manager.ts +333 -0
  71. package/src/managers/customer-notification-content.manager.ts +236 -0
  72. package/src/managers/diagnostic-manager-bootstrap.ts +165 -0
  73. package/src/managers/error-auto-fix.manager.ts +2767 -0
  74. package/src/managers/local-log.manager.ts +113 -0
  75. package/src/managers/method.manager.ts +1827 -0
  76. package/src/managers/mongo.manager.ts +4575 -0
  77. package/src/managers/monitor.manager.ts +507 -0
  78. package/src/managers/openai-usage-ledger.manager.ts +116 -0
  79. package/src/managers/slow-query-verifier.manager.ts +3590 -0
  80. package/src/managers/slow-query.manager.ts +519 -0
  81. package/src/managers/subscription.manager.ts +3128 -0
  82. package/src/managers/websocket.manager.ts +746 -0
  83. package/src/managers/worker-dispatcher.manager.ts +1360 -0
  84. package/src/managers/worker-server.manager.ts +536 -0
  85. package/src/methods/accounts.ts +532 -0
  86. package/src/methods/ai-terminal.ts +23497 -0
  87. package/src/methods/app-settings.ts +114 -0
  88. package/src/methods/aws.ts +649 -0
  89. package/src/methods/collections.ts +641 -0
  90. package/src/methods/counters.ts +69 -0
  91. package/src/methods/cron-jobs.ts +2614 -0
  92. package/src/methods/customer-notifications.ts +458 -0
  93. package/src/methods/diagnostics.ts +616 -0
  94. package/src/methods/flag-updates.ts +7 -0
  95. package/src/methods/flags.ts +7 -0
  96. package/src/methods/logs.ts +657 -0
  97. package/src/methods/mongo-explorer.ts +1880 -0
  98. package/src/methods/monitor.ts +540 -0
  99. package/src/methods/pdf.ts +1236 -0
  100. package/src/methods/publications.ts +129 -0
  101. package/src/methods/report-builder.ts +3300 -0
  102. package/src/methods/support.ts +335 -0
  103. package/src/models/ai-terminal-conversation.model.ts +19 -0
  104. package/src/models/ai-terminal-issue-report.model.ts +21 -0
  105. package/src/models/ai-terminal-message.model.ts +24 -0
  106. package/src/models/app-setting.model.ts +17 -0
  107. package/{models/app-status.model.d.ts → src/models/app-status.model.ts} +3 -2
  108. package/{models/billing-logged-in-users.model.d.ts → src/models/billing-logged-in-users.model.ts} +5 -4
  109. package/src/models/collection-document.model.ts +24 -0
  110. package/src/models/communication-metric.model.ts +23 -0
  111. package/{models/counter.model.d.ts → src/models/counter.model.ts} +4 -3
  112. package/src/models/cron-job-history.model.ts +16 -0
  113. package/src/models/cron-job.model.ts +15 -0
  114. package/src/models/customer-notification.model.ts +28 -0
  115. package/src/models/customer-portal-password.model.ts +12 -0
  116. package/src/models/dialog.model.ts +25 -0
  117. package/{models/email-history.model.js → src/models/email-history.model.ts} +35 -4
  118. package/{models/email-verified.model.d.ts → src/models/email-verified.model.ts} +6 -5
  119. package/{models/file.model.d.ts → src/models/file.model.ts} +8 -7
  120. package/{models/flag-update.model.d.ts → src/models/flag-update.model.ts} +4 -3
  121. package/{models/flag.model.d.ts → src/models/flag.model.ts} +4 -3
  122. package/src/models/log-method-latency.model.ts +11 -0
  123. package/{models/log-subscription.model.d.ts → src/models/log-subscription.model.ts} +11 -9
  124. package/src/models/log.model.ts +19 -0
  125. package/{models/logged-in-users.model.d.ts → src/models/logged-in-users.model.ts} +6 -5
  126. package/{models/method-response.model.d.ts → src/models/method-response.model.ts} +7 -6
  127. package/src/models/method.model.ts +25 -0
  128. package/{models/monitor-cpu.model.d.ts → src/models/monitor-cpu.model.ts} +9 -7
  129. package/src/models/monitor-function.model.ts +16 -0
  130. package/src/models/monitor-memory.model.ts +17 -0
  131. package/src/models/monitor-mongo.model.ts +15 -0
  132. package/{models/notification.model.d.ts → src/models/notification.model.ts} +6 -4
  133. package/src/models/openai-usage-ledger.model.ts +16 -0
  134. package/src/models/pagination.model.ts +35 -0
  135. package/src/models/permission.model.ts +14 -0
  136. package/src/models/report-builder-dashboard-builder.model.ts +29 -0
  137. package/src/models/report-builder-library.model.ts +20 -0
  138. package/src/models/report-builder-report.model.ts +136 -0
  139. package/src/models/report-builder.model.ts +68 -0
  140. package/src/models/select-data-label.model.ts +9 -0
  141. package/src/models/server-message.model.ts +31 -0
  142. package/src/models/slow-query-report.model.ts +23 -0
  143. package/src/models/subscription.model.ts +73 -0
  144. package/src/models/support-ticket.model.ts +104 -0
  145. package/src/models/user-group.model.ts +24 -0
  146. package/{models/user-guide.model.d.ts → src/models/user-guide.model.ts} +5 -4
  147. package/src/models/user.model.ts +96 -0
  148. package/src/private/images/ResolveIO.png +0 -0
  149. package/src/publications/ai-terminal.ts +73 -0
  150. package/src/publications/app-settings.ts +25 -0
  151. package/src/publications/app-status.ts +13 -0
  152. package/src/publications/cron-jobs.ts +40 -0
  153. package/src/publications/customer-notifications.ts +101 -0
  154. package/src/publications/files.ts +33 -0
  155. package/src/publications/flags-update.ts +19 -0
  156. package/src/publications/flags.ts +19 -0
  157. package/src/publications/logs.ts +163 -0
  158. package/src/publications/notifications.ts +13 -0
  159. package/src/publications/report-builder-dashboard-builders.ts +39 -0
  160. package/src/publications/report-builder-libraries.ts +41 -0
  161. package/src/publications/report-builder-reports.ts +47 -0
  162. package/src/publications/super-admin.ts +13 -0
  163. package/src/publications/user-groups.ts +12 -0
  164. package/src/publications/user-guides.ts +12 -0
  165. package/src/resolveio-server-app.ts +617 -0
  166. package/src/server-app.ts +3354 -0
  167. package/src/services/codex-client.ts +1223 -0
  168. package/src/services/openai-client.ts +265 -0
  169. package/src/types/error-report.ts +26 -0
  170. package/src/types/js-tiktoken.d.ts +11 -0
  171. package/src/types/slow-query-report.ts +28 -0
  172. package/src/util/ai-qa-policy.ts +879 -0
  173. package/src/util/ai-runner-artifacts.ts +430 -0
  174. package/src/util/ai-runner-qa-auth.ts +356 -0
  175. package/src/util/ai-runner-qa-tools.ts +803 -0
  176. package/src/util/common.ts +649 -0
  177. package/src/util/customer-portal-password.ts +183 -0
  178. package/src/util/error-reporter.ts +332 -0
  179. package/src/util/error-tracking.ts +79 -0
  180. package/src/util/report-builder-unwinds.ts +180 -0
  181. package/src/util/runner-process-janitor.ts +208 -0
  182. package/src/util/schema-report-builder.ts +448 -0
  183. package/src/util/slow-query-reporter.ts +216 -0
  184. package/src/util/subscription-dependency-context.ts +1096 -0
  185. package/src/util/tokenizer.ts +38 -0
  186. package/src/workers/codex-runner.worker.ts +142 -0
  187. package/start_server.sh +5 -0
  188. package/tests/ai-assistant-corpus-build.ts +484 -0
  189. package/tests/ai-assistant-corpus-replay-e2e.ts +774 -0
  190. package/tests/ai-assistant-data-parity-e2e.ts +1989 -0
  191. package/tests/ai-assistant-eval-triage.ts +831 -0
  192. package/tests/ai-assistant-openai-e2e.ts +1061 -0
  193. package/tests/ai-assistant-openai-git-e2e.ts +155 -0
  194. package/tests/ai-assistant-preflight-matrix.ts +215 -0
  195. package/tests/ai-assistant-routing-eval.test.ts +560 -0
  196. package/tests/ai-assistant-snf-live-eval.ts +975 -0
  197. package/tests/ai-assistant-utils.test.ts +2968 -0
  198. package/tests/ai-runner-contract.test.ts +301 -0
  199. package/tests/error-reporter.test.ts +145 -0
  200. package/tests/method-publication-generator.test.ts +46 -0
  201. package/tests/report-builder-linking.test.ts +79 -0
  202. package/tests/resolveio-platform-intelligence.test.ts +352 -0
  203. package/tests/server-app-cron-owner.test.ts +127 -0
  204. package/tests/subscription-connect-race.test.ts +158 -0
  205. package/tests/subscription-dependency-context.test.ts +324 -0
  206. package/tests/subscription-manager-collection-tracking.test.ts +86 -0
  207. package/tests/subscription-manager-invalidation.test.ts +86 -0
  208. package/tsconfig.json +34 -0
  209. package/ai/assistant-core-heuristics.d.ts +0 -11
  210. package/ai/assistant-core-heuristics.js +0 -356
  211. package/ai/assistant-core-heuristics.js.map +0 -1
  212. package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +0 -3
  213. package/ai/resolveio-platform-intelligence-memory-corpus.js +0 -214
  214. package/ai/resolveio-platform-intelligence-memory-corpus.js.map +0 -1
  215. package/ai/resolveio-platform-intelligence-memory.d.ts +0 -20
  216. package/ai/resolveio-platform-intelligence-memory.js +0 -341
  217. package/ai/resolveio-platform-intelligence-memory.js.map +0 -1
  218. package/ai/resolveio-platform-intelligence-types.js +0 -4
  219. package/ai/resolveio-platform-intelligence-types.js.map +0 -1
  220. package/ai/resolveio-platform-intelligence.d.ts +0 -6
  221. package/ai/resolveio-platform-intelligence.js +0 -463
  222. package/ai/resolveio-platform-intelligence.js.map +0 -1
  223. package/client-server-app.d.ts +0 -1
  224. package/client-server-app.js +0 -68
  225. package/client-server-app.js.map +0 -1
  226. package/collections/ai-terminal-conversation.collection.d.ts +0 -2
  227. package/collections/ai-terminal-conversation.collection.js +0 -140
  228. package/collections/ai-terminal-conversation.collection.js.map +0 -1
  229. package/collections/ai-terminal-issue-report.collection.d.ts +0 -2
  230. package/collections/ai-terminal-issue-report.collection.js +0 -148
  231. package/collections/ai-terminal-issue-report.collection.js.map +0 -1
  232. package/collections/ai-terminal-message.collection.d.ts +0 -2
  233. package/collections/ai-terminal-message.collection.js +0 -121
  234. package/collections/ai-terminal-message.collection.js.map +0 -1
  235. package/collections/app-setting.collection.d.ts +0 -3
  236. package/collections/app-setting.collection.js +0 -103
  237. package/collections/app-setting.collection.js.map +0 -1
  238. package/collections/app-status.collection.d.ts +0 -3
  239. package/collections/app-status.collection.js +0 -57
  240. package/collections/app-status.collection.js.map +0 -1
  241. package/collections/communication-metric.collection.d.ts +0 -2
  242. package/collections/communication-metric.collection.js +0 -133
  243. package/collections/communication-metric.collection.js.map +0 -1
  244. package/collections/counter.collection.d.ts +0 -3
  245. package/collections/counter.collection.js +0 -56
  246. package/collections/counter.collection.js.map +0 -1
  247. package/collections/cron-job-history.collection.d.ts +0 -3
  248. package/collections/cron-job-history.collection.js +0 -137
  249. package/collections/cron-job-history.collection.js.map +0 -1
  250. package/collections/cron-job.collection.d.ts +0 -3
  251. package/collections/cron-job.collection.js +0 -92
  252. package/collections/cron-job.collection.js.map +0 -1
  253. package/collections/customer-notification.collection.d.ts +0 -3
  254. package/collections/customer-notification.collection.js +0 -130
  255. package/collections/customer-notification.collection.js.map +0 -1
  256. package/collections/customer-portal-password.collection.d.ts +0 -3
  257. package/collections/customer-portal-password.collection.js +0 -75
  258. package/collections/customer-portal-password.collection.js.map +0 -1
  259. package/collections/email-history.collection.d.ts +0 -3
  260. package/collections/email-history.collection.js +0 -127
  261. package/collections/email-history.collection.js.map +0 -1
  262. package/collections/email-verified.collection.d.ts +0 -3
  263. package/collections/email-verified.collection.js +0 -62
  264. package/collections/email-verified.collection.js.map +0 -1
  265. package/collections/file.collection.d.ts +0 -3
  266. package/collections/file.collection.js +0 -74
  267. package/collections/file.collection.js.map +0 -1
  268. package/collections/flag-update.collection.d.ts +0 -3
  269. package/collections/flag-update.collection.js +0 -57
  270. package/collections/flag-update.collection.js.map +0 -1
  271. package/collections/flag.collection.d.ts +0 -3
  272. package/collections/flag.collection.js +0 -57
  273. package/collections/flag.collection.js.map +0 -1
  274. package/collections/log-method-latency.collection.d.ts +0 -3
  275. package/collections/log-method-latency.collection.js +0 -77
  276. package/collections/log-method-latency.collection.js.map +0 -1
  277. package/collections/log-subscription.collection.d.ts +0 -3
  278. package/collections/log-subscription.collection.js +0 -80
  279. package/collections/log-subscription.collection.js.map +0 -1
  280. package/collections/log.collection.d.ts +0 -3
  281. package/collections/log.collection.js +0 -93
  282. package/collections/log.collection.js.map +0 -1
  283. package/collections/logged-in-users.collection.d.ts +0 -3
  284. package/collections/logged-in-users.collection.js +0 -67
  285. package/collections/logged-in-users.collection.js.map +0 -1
  286. package/collections/monitor-cpu.collection.d.ts +0 -3
  287. package/collections/monitor-cpu.collection.js +0 -65
  288. package/collections/monitor-cpu.collection.js.map +0 -1
  289. package/collections/monitor-function.collection.d.ts +0 -3
  290. package/collections/monitor-function.collection.js +0 -74
  291. package/collections/monitor-function.collection.js.map +0 -1
  292. package/collections/monitor-memory.collection.d.ts +0 -3
  293. package/collections/monitor-memory.collection.js +0 -77
  294. package/collections/monitor-memory.collection.js.map +0 -1
  295. package/collections/monitor-mongo.collection.d.ts +0 -3
  296. package/collections/monitor-mongo.collection.js +0 -71
  297. package/collections/monitor-mongo.collection.js.map +0 -1
  298. package/collections/notification.collection.d.ts +0 -3
  299. package/collections/notification.collection.js +0 -57
  300. package/collections/notification.collection.js.map +0 -1
  301. package/collections/openai-usage-ledger.collection.d.ts +0 -2
  302. package/collections/openai-usage-ledger.collection.js +0 -124
  303. package/collections/openai-usage-ledger.collection.js.map +0 -1
  304. package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
  305. package/collections/report-builder-dashboard-builder.collection.js +0 -109
  306. package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
  307. package/collections/report-builder-library.collection.d.ts +0 -3
  308. package/collections/report-builder-library.collection.js +0 -87
  309. package/collections/report-builder-library.collection.js.map +0 -1
  310. package/collections/report-builder-report.collection.d.ts +0 -4
  311. package/collections/report-builder-report.collection.js +0 -184
  312. package/collections/report-builder-report.collection.js.map +0 -1
  313. package/collections/user-group.collection.d.ts +0 -4
  314. package/collections/user-group.collection.js +0 -89
  315. package/collections/user-group.collection.js.map +0 -1
  316. package/collections/user-guide.collection.d.ts +0 -3
  317. package/collections/user-guide.collection.js +0 -57
  318. package/collections/user-guide.collection.js.map +0 -1
  319. package/collections/user.collection.d.ts +0 -4
  320. package/collections/user.collection.js +0 -180
  321. package/collections/user.collection.js.map +0 -1
  322. package/cron/cron.d.ts +0 -14
  323. package/cron/cron.js +0 -216
  324. package/cron/cron.js.map +0 -1
  325. package/fixtures/cron-jobs.d.ts +0 -1
  326. package/fixtures/cron-jobs.js +0 -150
  327. package/fixtures/cron-jobs.js.map +0 -1
  328. package/fixtures/init.d.ts +0 -1
  329. package/fixtures/init.js +0 -91
  330. package/fixtures/init.js.map +0 -1
  331. package/http/auth.d.ts +0 -2
  332. package/http/auth.js +0 -906
  333. package/http/auth.js.map +0 -1
  334. package/http/health.d.ts +0 -1
  335. package/http/health.js +0 -11
  336. package/http/health.js.map +0 -1
  337. package/http/home.d.ts +0 -1
  338. package/http/home.js +0 -134
  339. package/http/home.js.map +0 -1
  340. package/http/slow-query-publication.d.ts +0 -2
  341. package/http/slow-query-publication.js +0 -99
  342. package/http/slow-query-publication.js.map +0 -1
  343. package/index.d.ts +0 -1
  344. package/index.js +0 -19
  345. package/index.js.map +0 -1
  346. package/managers/ai-assistant-codex-manager.manager.d.ts +0 -67
  347. package/managers/ai-assistant-codex-manager.manager.js +0 -1113
  348. package/managers/ai-assistant-codex-manager.manager.js.map +0 -1
  349. package/managers/communication-metric.manager.d.ts +0 -16
  350. package/managers/communication-metric.manager.js +0 -134
  351. package/managers/communication-metric.manager.js.map +0 -1
  352. package/managers/cron.manager.d.ts +0 -20
  353. package/managers/cron.manager.js +0 -534
  354. package/managers/cron.manager.js.map +0 -1
  355. package/managers/customer-notification-content.manager.d.ts +0 -55
  356. package/managers/customer-notification-content.manager.js +0 -158
  357. package/managers/customer-notification-content.manager.js.map +0 -1
  358. package/managers/diagnostic-manager-bootstrap.d.ts +0 -9
  359. package/managers/diagnostic-manager-bootstrap.js +0 -260
  360. package/managers/diagnostic-manager-bootstrap.js.map +0 -1
  361. package/managers/error-auto-fix.manager.d.ts +0 -149
  362. package/managers/error-auto-fix.manager.js +0 -3064
  363. package/managers/error-auto-fix.manager.js.map +0 -1
  364. package/managers/local-log.manager.d.ts +0 -18
  365. package/managers/local-log.manager.js +0 -88
  366. package/managers/local-log.manager.js.map +0 -1
  367. package/managers/method.manager.d.ts +0 -83
  368. package/managers/method.manager.js +0 -1941
  369. package/managers/method.manager.js.map +0 -1
  370. package/managers/mongo.manager.d.ts +0 -224
  371. package/managers/mongo.manager.js +0 -5000
  372. package/managers/mongo.manager.js.map +0 -1
  373. package/managers/monitor.manager.d.ts +0 -70
  374. package/managers/monitor.manager.js +0 -550
  375. package/managers/monitor.manager.js.map +0 -1
  376. package/managers/openai-usage-ledger.manager.d.ts +0 -15
  377. package/managers/openai-usage-ledger.manager.js +0 -144
  378. package/managers/openai-usage-ledger.manager.js.map +0 -1
  379. package/managers/slow-query-verifier.manager.d.ts +0 -144
  380. package/managers/slow-query-verifier.manager.js +0 -3857
  381. package/managers/slow-query-verifier.manager.js.map +0 -1
  382. package/managers/slow-query.manager.d.ts +0 -28
  383. package/managers/slow-query.manager.js +0 -468
  384. package/managers/slow-query.manager.js.map +0 -1
  385. package/managers/subscription.manager.d.ts +0 -169
  386. package/managers/subscription.manager.js +0 -3434
  387. package/managers/subscription.manager.js.map +0 -1
  388. package/managers/websocket.manager.d.ts +0 -73
  389. package/managers/websocket.manager.js +0 -673
  390. package/managers/websocket.manager.js.map +0 -1
  391. package/managers/worker-dispatcher.manager.d.ts +0 -120
  392. package/managers/worker-dispatcher.manager.js +0 -1266
  393. package/managers/worker-dispatcher.manager.js.map +0 -1
  394. package/managers/worker-server.manager.d.ts +0 -35
  395. package/managers/worker-server.manager.js +0 -582
  396. package/managers/worker-server.manager.js.map +0 -1
  397. package/methods/accounts.d.ts +0 -2
  398. package/methods/accounts.js +0 -624
  399. package/methods/accounts.js.map +0 -1
  400. package/methods/ai-terminal.d.ts +0 -337
  401. package/methods/ai-terminal.js +0 -23166
  402. package/methods/ai-terminal.js.map +0 -1
  403. package/methods/app-settings.d.ts +0 -2
  404. package/methods/app-settings.js +0 -169
  405. package/methods/app-settings.js.map +0 -1
  406. package/methods/aws.d.ts +0 -2
  407. package/methods/aws.js +0 -877
  408. package/methods/aws.js.map +0 -1
  409. package/methods/collections.d.ts +0 -2
  410. package/methods/collections.js +0 -719
  411. package/methods/collections.js.map +0 -1
  412. package/methods/counters.d.ts +0 -2
  413. package/methods/counters.js +0 -113
  414. package/methods/counters.js.map +0 -1
  415. package/methods/cron-jobs.d.ts +0 -2
  416. package/methods/cron-jobs.js +0 -2475
  417. package/methods/cron-jobs.js.map +0 -1
  418. package/methods/customer-notifications.d.ts +0 -2
  419. package/methods/customer-notifications.js +0 -528
  420. package/methods/customer-notifications.js.map +0 -1
  421. package/methods/diagnostics.d.ts +0 -2
  422. package/methods/diagnostics.js +0 -703
  423. package/methods/diagnostics.js.map +0 -1
  424. package/methods/flag-updates.d.ts +0 -2
  425. package/methods/flag-updates.js +0 -8
  426. package/methods/flag-updates.js.map +0 -1
  427. package/methods/flags.d.ts +0 -2
  428. package/methods/flags.js +0 -8
  429. package/methods/flags.js.map +0 -1
  430. package/methods/logs.d.ts +0 -2
  431. package/methods/logs.js +0 -751
  432. package/methods/logs.js.map +0 -1
  433. package/methods/mongo-explorer.d.ts +0 -2
  434. package/methods/mongo-explorer.js +0 -1808
  435. package/methods/mongo-explorer.js.map +0 -1
  436. package/methods/monitor.d.ts +0 -2
  437. package/methods/monitor.js +0 -543
  438. package/methods/monitor.js.map +0 -1
  439. package/methods/pdf.d.ts +0 -2
  440. package/methods/pdf.js +0 -1216
  441. package/methods/pdf.js.map +0 -1
  442. package/methods/publications.d.ts +0 -1
  443. package/methods/publications.js +0 -183
  444. package/methods/publications.js.map +0 -1
  445. package/methods/report-builder.d.ts +0 -2
  446. package/methods/report-builder.js +0 -3094
  447. package/methods/report-builder.js.map +0 -1
  448. package/methods/support.d.ts +0 -2
  449. package/methods/support.js +0 -430
  450. package/methods/support.js.map +0 -1
  451. package/models/ai-terminal-conversation.model.d.ts +0 -17
  452. package/models/ai-terminal-conversation.model.js +0 -4
  453. package/models/ai-terminal-conversation.model.js.map +0 -1
  454. package/models/ai-terminal-issue-report.model.d.ts +0 -19
  455. package/models/ai-terminal-issue-report.model.js +0 -4
  456. package/models/ai-terminal-issue-report.model.js.map +0 -1
  457. package/models/ai-terminal-message.model.d.ts +0 -22
  458. package/models/ai-terminal-message.model.js +0 -4
  459. package/models/ai-terminal-message.model.js.map +0 -1
  460. package/models/app-setting.model.d.ts +0 -16
  461. package/models/app-setting.model.js +0 -4
  462. package/models/app-setting.model.js.map +0 -1
  463. package/models/app-status.model.js +0 -4
  464. package/models/app-status.model.js.map +0 -1
  465. package/models/billing-logged-in-users.model.js +0 -4
  466. package/models/billing-logged-in-users.model.js.map +0 -1
  467. package/models/collection-document.model.d.ts +0 -21
  468. package/models/collection-document.model.js +0 -4
  469. package/models/collection-document.model.js.map +0 -1
  470. package/models/communication-metric.model.d.ts +0 -20
  471. package/models/communication-metric.model.js +0 -4
  472. package/models/communication-metric.model.js.map +0 -1
  473. package/models/counter.model.js +0 -4
  474. package/models/counter.model.js.map +0 -1
  475. package/models/cron-job-history.model.d.ts +0 -15
  476. package/models/cron-job-history.model.js +0 -4
  477. package/models/cron-job-history.model.js.map +0 -1
  478. package/models/cron-job.model.d.ts +0 -14
  479. package/models/cron-job.model.js +0 -4
  480. package/models/cron-job.model.js.map +0 -1
  481. package/models/customer-notification.model.d.ts +0 -26
  482. package/models/customer-notification.model.js +0 -4
  483. package/models/customer-notification.model.js.map +0 -1
  484. package/models/customer-portal-password.model.d.ts +0 -11
  485. package/models/customer-portal-password.model.js +0 -4
  486. package/models/customer-portal-password.model.js.map +0 -1
  487. package/models/dialog.model.d.ts +0 -23
  488. package/models/dialog.model.js +0 -4
  489. package/models/dialog.model.js.map +0 -1
  490. package/models/email-history.model.d.ts +0 -31
  491. package/models/email-history.model.js.map +0 -1
  492. package/models/email-verified.model.js +0 -4
  493. package/models/email-verified.model.js.map +0 -1
  494. package/models/file.model.js +0 -4
  495. package/models/file.model.js.map +0 -1
  496. package/models/flag-update.model.js +0 -4
  497. package/models/flag-update.model.js.map +0 -1
  498. package/models/flag.model.js +0 -4
  499. package/models/flag.model.js.map +0 -1
  500. package/models/log-method-latency.model.d.ts +0 -10
  501. package/models/log-method-latency.model.js +0 -4
  502. package/models/log-method-latency.model.js.map +0 -1
  503. package/models/log-subscription.model.js +0 -4
  504. package/models/log-subscription.model.js.map +0 -1
  505. package/models/log.model.d.ts +0 -17
  506. package/models/log.model.js +0 -4
  507. package/models/log.model.js.map +0 -1
  508. package/models/logged-in-users.model.js +0 -4
  509. package/models/logged-in-users.model.js.map +0 -1
  510. package/models/method-response.model.js +0 -4
  511. package/models/method-response.model.js.map +0 -1
  512. package/models/method.model.d.ts +0 -26
  513. package/models/method.model.js +0 -4
  514. package/models/method.model.js.map +0 -1
  515. package/models/monitor-cpu.model.js +0 -4
  516. package/models/monitor-cpu.model.js.map +0 -1
  517. package/models/monitor-function.model.d.ts +0 -14
  518. package/models/monitor-function.model.js +0 -4
  519. package/models/monitor-function.model.js.map +0 -1
  520. package/models/monitor-memory.model.d.ts +0 -15
  521. package/models/monitor-memory.model.js +0 -4
  522. package/models/monitor-memory.model.js.map +0 -1
  523. package/models/monitor-mongo.model.d.ts +0 -13
  524. package/models/monitor-mongo.model.js +0 -4
  525. package/models/monitor-mongo.model.js.map +0 -1
  526. package/models/notification.model.js +0 -4
  527. package/models/notification.model.js.map +0 -1
  528. package/models/openai-usage-ledger.model.d.ts +0 -15
  529. package/models/openai-usage-ledger.model.js +0 -4
  530. package/models/openai-usage-ledger.model.js.map +0 -1
  531. package/models/pagination.model.d.ts +0 -11
  532. package/models/pagination.model.js +0 -28
  533. package/models/pagination.model.js.map +0 -1
  534. package/models/permission.model.d.ts +0 -12
  535. package/models/permission.model.js +0 -4
  536. package/models/permission.model.js.map +0 -1
  537. package/models/report-builder-dashboard-builder.model.d.ts +0 -25
  538. package/models/report-builder-dashboard-builder.model.js +0 -4
  539. package/models/report-builder-dashboard-builder.model.js.map +0 -1
  540. package/models/report-builder-library.model.d.ts +0 -17
  541. package/models/report-builder-library.model.js +0 -4
  542. package/models/report-builder-library.model.js.map +0 -1
  543. package/models/report-builder-report.model.d.ts +0 -121
  544. package/models/report-builder-report.model.js +0 -4
  545. package/models/report-builder-report.model.js.map +0 -1
  546. package/models/report-builder.model.d.ts +0 -61
  547. package/models/report-builder.model.js +0 -4
  548. package/models/report-builder.model.js.map +0 -1
  549. package/models/select-data-label.model.d.ts +0 -9
  550. package/models/select-data-label.model.js +0 -4
  551. package/models/select-data-label.model.js.map +0 -1
  552. package/models/server-message.model.d.ts +0 -32
  553. package/models/server-message.model.js +0 -4
  554. package/models/server-message.model.js.map +0 -1
  555. package/models/slow-query-report.model.d.ts +0 -23
  556. package/models/slow-query-report.model.js +0 -4
  557. package/models/slow-query-report.model.js.map +0 -1
  558. package/models/subscription.model.d.ts +0 -31
  559. package/models/subscription.model.js +0 -4
  560. package/models/subscription.model.js.map +0 -1
  561. package/models/support-ticket.model.d.ts +0 -87
  562. package/models/support-ticket.model.js +0 -4
  563. package/models/support-ticket.model.js.map +0 -1
  564. package/models/user-group.model.d.ts +0 -20
  565. package/models/user-group.model.js +0 -4
  566. package/models/user-group.model.js.map +0 -1
  567. package/models/user-guide.model.js +0 -4
  568. package/models/user-guide.model.js.map +0 -1
  569. package/models/user.model.d.ts +0 -84
  570. package/models/user.model.js +0 -4
  571. package/models/user.model.js.map +0 -1
  572. package/private/images/ResolveIO.png +0 -0
  573. package/public_api.js +0 -116
  574. package/public_api.js.map +0 -1
  575. package/publications/ai-terminal.d.ts +0 -1
  576. package/publications/ai-terminal.js +0 -122
  577. package/publications/ai-terminal.js.map +0 -1
  578. package/publications/app-settings.d.ts +0 -2
  579. package/publications/app-settings.js +0 -28
  580. package/publications/app-settings.js.map +0 -1
  581. package/publications/app-status.d.ts +0 -2
  582. package/publications/app-status.js +0 -16
  583. package/publications/app-status.js.map +0 -1
  584. package/publications/cron-jobs.d.ts +0 -2
  585. package/publications/cron-jobs.js +0 -88
  586. package/publications/cron-jobs.js.map +0 -1
  587. package/publications/customer-notifications.d.ts +0 -2
  588. package/publications/customer-notifications.js +0 -161
  589. package/publications/customer-notifications.js.map +0 -1
  590. package/publications/files.d.ts +0 -2
  591. package/publications/files.js +0 -36
  592. package/publications/files.js.map +0 -1
  593. package/publications/flags-update.d.ts +0 -2
  594. package/publications/flags-update.js +0 -22
  595. package/publications/flags-update.js.map +0 -1
  596. package/publications/flags.d.ts +0 -2
  597. package/publications/flags.js +0 -22
  598. package/publications/flags.js.map +0 -1
  599. package/publications/logs.d.ts +0 -2
  600. package/publications/logs.js +0 -164
  601. package/publications/logs.js.map +0 -1
  602. package/publications/notifications.d.ts +0 -2
  603. package/publications/notifications.js +0 -16
  604. package/publications/notifications.js.map +0 -1
  605. package/publications/report-builder-dashboard-builders.d.ts +0 -2
  606. package/publications/report-builder-dashboard-builders.js +0 -42
  607. package/publications/report-builder-dashboard-builders.js.map +0 -1
  608. package/publications/report-builder-libraries.d.ts +0 -2
  609. package/publications/report-builder-libraries.js +0 -90
  610. package/publications/report-builder-libraries.js.map +0 -1
  611. package/publications/report-builder-reports.d.ts +0 -2
  612. package/publications/report-builder-reports.js +0 -50
  613. package/publications/report-builder-reports.js.map +0 -1
  614. package/publications/super-admin.d.ts +0 -2
  615. package/publications/super-admin.js +0 -16
  616. package/publications/super-admin.js.map +0 -1
  617. package/publications/user-groups.d.ts +0 -1
  618. package/publications/user-groups.js +0 -16
  619. package/publications/user-groups.js.map +0 -1
  620. package/publications/user-guides.d.ts +0 -1
  621. package/publications/user-guides.js +0 -16
  622. package/publications/user-guides.js.map +0 -1
  623. package/resolveio-server-app.d.ts +0 -70
  624. package/resolveio-server-app.js +0 -801
  625. package/resolveio-server-app.js.map +0 -1
  626. package/server-app.d.ts +0 -228
  627. package/server-app.js +0 -3566
  628. package/server-app.js.map +0 -1
  629. package/services/codex-client.d.ts +0 -126
  630. package/services/codex-client.js +0 -1622
  631. package/services/codex-client.js.map +0 -1
  632. package/services/openai-client.d.ts +0 -46
  633. package/services/openai-client.js +0 -318
  634. package/services/openai-client.js.map +0 -1
  635. package/types/error-report.d.ts +0 -25
  636. package/types/error-report.js +0 -4
  637. package/types/error-report.js.map +0 -1
  638. package/types/slow-query-report.d.ts +0 -27
  639. package/types/slow-query-report.js +0 -6
  640. package/types/slow-query-report.js.map +0 -1
  641. package/util/ai-qa-policy.d.ts +0 -124
  642. package/util/ai-qa-policy.js +0 -707
  643. package/util/ai-qa-policy.js.map +0 -1
  644. package/util/ai-runner-artifacts.d.ts +0 -74
  645. package/util/ai-runner-artifacts.js +0 -531
  646. package/util/ai-runner-artifacts.js.map +0 -1
  647. package/util/ai-runner-qa-auth.d.ts +0 -5
  648. package/util/ai-runner-qa-auth.js +0 -357
  649. package/util/ai-runner-qa-auth.js.map +0 -1
  650. package/util/ai-runner-qa-tools.d.ts +0 -19
  651. package/util/ai-runner-qa-tools.js +0 -780
  652. package/util/ai-runner-qa-tools.js.map +0 -1
  653. package/util/common.d.ts +0 -31
  654. package/util/common.js +0 -683
  655. package/util/common.js.map +0 -1
  656. package/util/customer-portal-password.d.ts +0 -13
  657. package/util/customer-portal-password.js +0 -209
  658. package/util/customer-portal-password.js.map +0 -1
  659. package/util/error-reporter.d.ts +0 -52
  660. package/util/error-reporter.js +0 -326
  661. package/util/error-reporter.js.map +0 -1
  662. package/util/error-tracking.d.ts +0 -13
  663. package/util/error-tracking.js +0 -120
  664. package/util/error-tracking.js.map +0 -1
  665. package/util/report-builder-unwinds.d.ts +0 -15
  666. package/util/report-builder-unwinds.js +0 -156
  667. package/util/report-builder-unwinds.js.map +0 -1
  668. package/util/runner-process-janitor.d.ts +0 -25
  669. package/util/runner-process-janitor.js +0 -199
  670. package/util/runner-process-janitor.js.map +0 -1
  671. package/util/schema-report-builder.d.ts +0 -6
  672. package/util/schema-report-builder.js +0 -481
  673. package/util/schema-report-builder.js.map +0 -1
  674. package/util/slow-query-reporter.d.ts +0 -28
  675. package/util/slow-query-reporter.js +0 -226
  676. package/util/slow-query-reporter.js.map +0 -1
  677. package/util/subscription-dependency-context.d.ts +0 -34
  678. package/util/subscription-dependency-context.js +0 -1283
  679. package/util/subscription-dependency-context.js.map +0 -1
  680. package/util/tokenizer.d.ts +0 -5
  681. package/util/tokenizer.js +0 -41
  682. package/util/tokenizer.js.map +0 -1
  683. package/workers/codex-runner.worker.d.ts +0 -1
  684. package/workers/codex-runner.worker.js +0 -192
  685. package/workers/codex-runner.worker.js.map +0 -1
  686. /package/{private → src/private}/email-templates/enrollment.html +0 -0
  687. /package/{private → src/private}/email-templates/forgot-password.html +0 -0
  688. /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
  689. /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
  690. /package/{private → src/private}/email-templates/support-ticket.html +0 -0
  691. /package/{public_api.d.ts → src/public_api.ts} +0 -0
@@ -0,0 +1,649 @@
1
+ /* eslint-disable no-restricted-properties */
2
+ let rusDiff = require('rus-diff');
3
+ let deepDiff = require('deep-diff').diff;
4
+ import { detailedDiff } from 'deep-object-diff';
5
+ import * as moment from 'moment-timezone';
6
+ import { ObjectId } from 'mongodb';
7
+ import { LookupTables } from '../models/report-builder.model';
8
+ let clone = require('clone');
9
+
10
+ export function objectIdHexString() {
11
+ let objectId = new ObjectId();
12
+ return objectId.toHexString();
13
+ }
14
+
15
+ export function buildRbSchema(rbSchema: any) {
16
+ Object.keys(rbSchema).forEach(key => {
17
+ if (rbSchema[key].type === Object) {
18
+ rbSchema[key].type = 'Object';
19
+ rbSchema[key].rbType = 'Object';
20
+ }
21
+ else if (rbSchema[key].type === Array) {
22
+ rbSchema[key].type = 'Array';
23
+ rbSchema[key].rbType = 'Array';
24
+ }
25
+ else if (rbSchema[key].type === String) {
26
+ rbSchema[key].type = 'String';
27
+ rbSchema[key].rbType = 'String';
28
+ }
29
+ else if (rbSchema[key].type === Date) {
30
+ rbSchema[key].type = 'Date';
31
+ rbSchema[key].rbType = 'Date';
32
+ }
33
+ else if (rbSchema[key].type === Number) {
34
+ rbSchema[key].type = 'Number';
35
+ rbSchema[key].rbType = 'Number';
36
+ }
37
+ else if (rbSchema[key].type === Boolean) {
38
+ rbSchema[key].rbType = 'Boolean';
39
+ rbSchema[key].type = 'Boolean';
40
+ }
41
+ });
42
+
43
+ Object.keys(rbSchema).forEach(key => {
44
+ delete rbSchema[key].type;
45
+ });
46
+
47
+ return rbSchema;
48
+ }
49
+
50
+ export function buildRbLookups(rbLookups: LookupTables[], defaultSchema: object, default_checked_array: string[] = []) {
51
+ // Remember: lkp.local_key will be removed later on, because it has 'id_'
52
+
53
+ rbLookups.forEach(lkp => {
54
+ let errString = '';
55
+ let localKey, newPropertyName;
56
+ let localKeyDir = '';
57
+ let localKeyDirDot = '';
58
+ let collectionAlias = toTitleCase(lkp.lookup.replace(/\_/g, ' ')) + ' (' + toTitleCase(lkp.local_key.replace('id_', '').replace(/\_/g, ' ').replace(/\.\$\./g, ' -> ').replace(/\./g, ' -> ')) + ') (Lookup)';
59
+
60
+ if (lkp.local_key.match(/\./)) {
61
+ localKey = lkp.local_key.replace(/\.\$/g, '');
62
+ localKeyDirDot = lkp.local_key.replace(/^(.+\.).*$/, '$1');
63
+ localKeyDir = localKeyDirDot.replace(/\.$/, '');
64
+ }
65
+ else {
66
+ // local_key is a root leaf node.
67
+ localKey = lkp.local_key;
68
+ }
69
+ newPropertyName = localKeyDirDot + collectionAlias;
70
+
71
+ if (!defaultSchema[lkp.local_key]) {
72
+ errString += '--local_key: \'' + lkp.local_key + '\' MUST be a valid schema path! ';
73
+ }
74
+ else if (defaultSchema[lkp.local_key].type !== String) {
75
+ errString += '--local_key: \'' + lkp.local_key + '\' MUST be a String! ';
76
+ }
77
+ let lookupNode = {
78
+ lookup_collection: lkp.lookup,
79
+ lookup_collection_alias: collectionAlias,
80
+ local_key: localKey,
81
+ field_path: localKeyDir,
82
+ lookup_as: newPropertyName,
83
+ lookup_key: '_id',
84
+ type: 'Object',
85
+ };
86
+
87
+ defaultSchema[newPropertyName] = lookupNode;
88
+
89
+ if (errString) {
90
+ throwErr(errString, lkp, lookupNode, newPropertyName);
91
+ }
92
+ });
93
+
94
+ for (let ii = 0; ii < default_checked_array.length; ii++) {
95
+ defaultSchema[default_checked_array[ii]] = {};
96
+ defaultSchema[default_checked_array[ii]]['default_checked'] = true;
97
+ Object.assign(defaultSchema[default_checked_array[ii]], defaultSchema['tree'][default_checked_array[ii]]);
98
+ }
99
+
100
+ return defaultSchema;
101
+ }
102
+
103
+ export function throwErr(err: any, lkp, lookupNode, newPropertyName = '') {
104
+ // err could be from a try/throw/catch
105
+ console.log('------- ERROR thrown by rbLookups: ');
106
+ console.log(err);
107
+ console.log('---item: ');
108
+ console.log(lkp);
109
+ console.log('---Attempted to create rbSchema[\'' + newPropertyName + '\']: ');
110
+ console.log(lookupNode);
111
+ process.exit(1);
112
+ }
113
+
114
+ export function roundPrecision(value: number, precision = 0) {
115
+ let stringValue = value.toString();
116
+
117
+ if (stringValue.includes('.')) {
118
+ if (stringValue[0] === '0') {
119
+ precision += 1;
120
+ }
121
+
122
+ precision -= stringValue.indexOf('.');
123
+ }
124
+
125
+ const exponent = Math.pow(10, precision);
126
+ return Math.round(parseFloat(stringValue) * exponent) / exponent;
127
+ }
128
+
129
+ export function round(value, precision = 0) {
130
+ const power = Math.pow(10, precision);
131
+ const adjustment = 1e-6;
132
+ return Math.round( (value * power) + adjustment) / power;
133
+ }
134
+
135
+ export function floorPrecision(value: number, precision = 0) {
136
+ let stringValue = value.toString();
137
+
138
+ if (stringValue.includes('.')) {
139
+ if (stringValue[0] === '0') {
140
+ precision += 1;
141
+ }
142
+
143
+ precision -= stringValue.indexOf('.');
144
+ }
145
+
146
+ const exponent = Math.pow(10, precision);
147
+ return Math.floor(parseFloat(stringValue) * exponent) / exponent;
148
+ }
149
+
150
+ export function deepCopy(value) {
151
+ return clone(value);
152
+ }
153
+
154
+ export function dateReviver(key, value) {
155
+ if (typeof value === 'string') {
156
+ let a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
157
+ if (a) {
158
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));
159
+ }
160
+ }
161
+ return value;
162
+ }
163
+
164
+ function buildAllowedOrigins(configOrigins): string[] {
165
+ let origins = [];
166
+
167
+ if (Array.isArray(configOrigins)) {
168
+ origins = configOrigins.map(origin => typeof origin === 'string' ? origin.trim() : origin);
169
+ }
170
+ else if (typeof configOrigins === 'string') {
171
+ let splitOrigins = configOrigins.split(',').map(origin => origin.trim()).filter(origin => origin);
172
+ origins = splitOrigins;
173
+ }
174
+
175
+ return origins.filter(origin => typeof origin === 'string' && origin.trim() !== '');
176
+ }
177
+
178
+ export function getAllowedOrigins(serverConfig): string[] {
179
+ let allowedOrigins = new Set<string>();
180
+ let defaultKeys = ['ROOT_URL', 'SEC_ROOT_URL', 'RESOLVEIO_URL', 'RESOLVEIO_SECONDARY_URL'];
181
+
182
+ defaultKeys.forEach(key => {
183
+ let value = serverConfig[key] || process.env[key];
184
+ if (typeof value === 'string' && value.trim()) {
185
+ allowedOrigins.add(value.trim());
186
+ }
187
+ });
188
+
189
+ buildAllowedOrigins(serverConfig['ALLOWED_ORIGINS']).forEach(origin => allowedOrigins.add(origin));
190
+ buildAllowedOrigins(serverConfig['ADDITIONAL_ALLOWED_ORIGINS']).forEach(origin => allowedOrigins.add(origin));
191
+ buildAllowedOrigins(process.env.ALLOWED_ORIGINS).forEach(origin => allowedOrigins.add(origin));
192
+ buildAllowedOrigins(process.env.ADDITIONAL_ALLOWED_ORIGINS).forEach(origin => allowedOrigins.add(origin));
193
+
194
+ return Array.from(allowedOrigins);
195
+ }
196
+
197
+ export function isAllowedOrigin(origin: string, serverConfig): boolean {
198
+ if (!origin) {
199
+ return false;
200
+ }
201
+
202
+ const allowedOrigins = getAllowedOrigins(serverConfig);
203
+ return allowedOrigins.includes(origin);
204
+ }
205
+
206
+ export function getMongoUpdates(currDoc, modifiedDoc, incVersion) {
207
+ if (currDoc.createdAt) {
208
+ modifiedDoc.createdAt = currDoc.createdAt;
209
+ }
210
+
211
+ if (currDoc.updatedAt) {
212
+ modifiedDoc.updatedAt = currDoc.updatedAt;
213
+ }
214
+
215
+ let updates = rusDiff.diff(currDoc, modifiedDoc);
216
+
217
+ if (updates) {
218
+ if (updates.$set && !Object.keys(updates.$set).length) {
219
+ delete updates.$set;
220
+ }
221
+
222
+ if (incVersion) {
223
+ updates.$inc = {__v: 1};
224
+ }
225
+ }
226
+ else {
227
+ if (incVersion) {
228
+ updates = {
229
+ $inc: {__v: 1}
230
+ };
231
+ }
232
+ }
233
+
234
+ return updates;
235
+ }
236
+
237
+ export function getMongoMergeUpdatedDoc(f_doc, currentDoc, oldDoc) {
238
+ let upDoc = deepCopy(currentDoc); // was oldDoc
239
+ upDoc.__v = currentDoc.__v;
240
+
241
+ let diff_1 = getDeepDiff(oldDoc, currentDoc);
242
+ let diff_2 = getDeepDiff(oldDoc, f_doc);
243
+
244
+ let updates = mergeUpdates(diff_2, diff_1);
245
+ applyMongoUpdate(upDoc, updates);
246
+ return upDoc;
247
+ }
248
+
249
+
250
+ export function mergeUpdates(...updatesToMerge) {
251
+ const merged = {
252
+ $set: {},
253
+ $unset: {},
254
+ $inc: {},
255
+ $push: {},
256
+ $pull: {}
257
+ };
258
+
259
+ updatesToMerge.filter(Boolean).forEach(anUpdate => {
260
+ anUpdate.forEach(change => {
261
+ const path = change.path.join('.');
262
+
263
+ switch (change.kind) {
264
+ case 'E':
265
+ handleEditedChange(merged, path, change);
266
+ break;
267
+ case 'A':
268
+ handleArrayChange(merged, path, change);
269
+ break;
270
+ default:
271
+ break;
272
+ }
273
+ });
274
+ });
275
+
276
+ return merged;
277
+ }
278
+
279
+ function handleEditedChange(merged, path, change) {
280
+ // Later diffs override earlier ones
281
+ if (typeof(change.rhs) === 'number' && (path.includes('quantity') || path.includes('qty'))) {
282
+ merged.$inc[path] = (merged.$inc[path] || 0) + change.rhs - change.lhs;
283
+ }
284
+ else {
285
+ merged.$set[path] = change.rhs;
286
+ }
287
+ }
288
+
289
+
290
+ function handleArrayChange(merged, path, change) {
291
+ if (change.item.kind === 'N') {
292
+ if (!merged.$push[path]) merged.$push[path] = { $each: [] };
293
+
294
+ if (!merged.$push[path].$each.some(a => JSON.stringify(a) === JSON.stringify(change.item.rhs))) {
295
+ merged.$push[path].$each.push(change.item.rhs);
296
+ }
297
+ }
298
+ else if (change.item.kind === 'D') {
299
+ if (!merged.$pull[path]) merged.$pull[path] = [];
300
+
301
+ if (!merged.$pull[path].some(a => JSON.stringify(a) === JSON.stringify(change.item.lhs))) {
302
+ merged.$pull[path].push(change.item.lhs);
303
+ }
304
+ }
305
+ }
306
+
307
+ export function getDeepDiff(doc1, doc2) {
308
+ delete doc1._id;
309
+ delete doc1.__v;
310
+
311
+ if (doc1.updatedAt) {
312
+ delete doc1.updatedAt;
313
+ }
314
+
315
+ if (doc1.createdAt) {
316
+ delete doc1.createdAt;
317
+ }
318
+
319
+ delete doc2._id;
320
+ delete doc2.__v;
321
+
322
+ if (doc2.updatedAt) {
323
+ delete doc2.updatedAt;
324
+ }
325
+
326
+ if (doc2.createdAt) {
327
+ delete doc2.createdAt;
328
+ }
329
+
330
+ return deepDiff(doc1, doc2);
331
+ }
332
+
333
+ export function applyMongoUpdate(uDoc: any, delta: any): any {
334
+ const orig = deepCopy(uDoc);
335
+
336
+ if (delta) {
337
+ if (delta.$rename) handleRename(uDoc, delta.$rename);
338
+ if (delta.$set) handleSet(uDoc, delta.$set);
339
+ if (delta.$inc) handleInc(uDoc, delta.$inc);
340
+ if (delta.$unset) handleUnset(uDoc, delta.$unset);
341
+ if (delta.$pull) handlePull(uDoc, orig, delta.$pull);
342
+ if (delta.$push) handlePush(uDoc, delta.$push);
343
+ }
344
+
345
+ return uDoc;
346
+ }
347
+
348
+ function handleRename(uDoc: any, renameMap: any) {
349
+ for (const k in renameMap) {
350
+ const v = renameMap[k];
351
+ const [o1, n1] = resolve(uDoc, k);
352
+ const [o2, n2] = resolve(uDoc, v);
353
+ if (o1 && n1.length === 1) {
354
+ if (o2 && n2.length === 1) {
355
+ o2[n2[0]] = o1[n1[0]];
356
+ delete o1[n1[0]];
357
+ } else {
358
+ logError(o2, n2, uDoc, v);
359
+ }
360
+ } else {
361
+ logError(o1, n1, uDoc, k);
362
+ }
363
+ }
364
+ }
365
+
366
+ function handleSet(uDoc: any, setMap: any) {
367
+ for (const k in setMap) {
368
+ const v = setMap[k];
369
+ const [o, n] = resolve(uDoc, k, { force: true });
370
+ if (o && n.length === 1) {
371
+ o[n[0]] = v;
372
+ } else {
373
+ logError(o, n, uDoc, k);
374
+ }
375
+ }
376
+ }
377
+
378
+ function handleInc(uDoc: any, incMap: any) {
379
+ for (const k in incMap) {
380
+ const v = incMap[k];
381
+ const [o, n] = resolve(uDoc, k, { force: true });
382
+ if (o && n.length === 1) {
383
+ if (typeof o[n[0]] !== 'number') {
384
+ o[n[0]] = 0;
385
+ }
386
+ o[n[0]] += v;
387
+ } else {
388
+ logError(o, n, uDoc, k);
389
+ }
390
+ }
391
+ }
392
+
393
+ function handleUnset(uDoc: any, unsetMap: any) {
394
+ for (const k in unsetMap) {
395
+ const [o, n] = resolve(uDoc, k);
396
+ if (o && n.length === 1) {
397
+ delete o[n[0]];
398
+ } else {
399
+ logError(o, n, uDoc, k);
400
+ }
401
+ }
402
+ }
403
+
404
+ function handlePull(uDoc: any, orig: any, pullMap: any) {
405
+ for (const pathk in pullMap) {
406
+ const pullValues = pullMap[pathk];
407
+ for (let vk of pullValues) {
408
+ const [o, n] = resolve(uDoc, pathk);
409
+ const [o2, n2] = resolve(orig, pathk);
410
+ if (o && n.length === 1) {
411
+ const index = (<Array<any>>o2[n2[0]]).findIndex(z => JSON.stringify(z) === JSON.stringify(vk));
412
+ if (index !== -1) {
413
+ o[n[0]].splice(index, 1);
414
+ }
415
+ } else {
416
+ logError(o, n, uDoc, pathk);
417
+ }
418
+ }
419
+ }
420
+ }
421
+
422
+ function handlePush(uDoc: any, pushMap: any) {
423
+ for (const pathk in pushMap) {
424
+ const pushValues = pushMap[pathk];
425
+
426
+ // Normalize ─ accept $each, scalar, or array
427
+ let values: any[] = [];
428
+ if (Array.isArray(pushValues)) {
429
+ values = pushValues;
430
+ }
431
+ else if (pushValues && typeof pushValues === 'object') {
432
+ if (Array.isArray(pushValues.$each)) {
433
+ values = pushValues.$each; // canonical `$each`
434
+ } else {
435
+ values = [pushValues]; // single element object
436
+ }
437
+ }
438
+ else {
439
+ values = [pushValues]; // scalar push
440
+ }
441
+
442
+ for (const vk of values) {
443
+ const [o, n] = resolve(uDoc, pathk);
444
+ if (o && n.length === 1 && Array.isArray(o[n[0]])) {
445
+ o[n[0]].push(vk);
446
+ }
447
+ else {
448
+ logError(o, n, uDoc, pathk);
449
+ }
450
+ }
451
+ }
452
+ }
453
+
454
+ function logError(o: any, n: any, uDoc: any, key: any) {
455
+ console.log('Error', o + '/' + n + ' - couldn\'t resolve for ' + JSON.stringify(uDoc) + ' ' + key);
456
+ }
457
+
458
+ function resolve(a: any, path: string, options: any = {}): [any, any] {
459
+ const stack = arrize(path);
460
+ let last = [];
461
+
462
+ if (stack.length > 0) {
463
+ last.unshift(stack.pop());
464
+ }
465
+
466
+ let e = a;
467
+ while (stack.length > 0) {
468
+ const k = stack.shift();
469
+ if (e[k] !== void 0) {
470
+ e = e[k];
471
+ } else {
472
+ if (!options.force) {
473
+ last.unshift(k);
474
+ last = stack.concat(last);
475
+ break;
476
+ }
477
+ const isNextNum = typeof stack[0] === 'number';
478
+ const isLastNum = stack.length === 0 && typeof last[0] === 'number';
479
+ e[k] = isNextNum || isLastNum ? [] : {};
480
+ e = e[k];
481
+ }
482
+ }
483
+
484
+ return [e, last];
485
+ }
486
+
487
+ function arrize(path: any, glue: string = '.'): string[] {
488
+ if (Array.isArray(path)) {
489
+ return path.slice();
490
+ }
491
+
492
+ if (path === void 0 || path === null || path === false || path === '') {
493
+ return [];
494
+ }
495
+
496
+ return path.toString().split(glue)
497
+ .map(e => {
498
+ if ([void 0, null, false, ''].includes(e)) {
499
+ return null;
500
+ }
501
+ return e.toString();
502
+ })
503
+ .filter(e => e !== null);
504
+ }
505
+
506
+ export function deepDiffDetails(object1: Object, object2: Object): string {
507
+ let obj1 = deepCopy(object1);
508
+ let obj2 = deepCopy(object2);
509
+
510
+ let diff = detailedDiff(obj1, obj2);
511
+ let diffString = '';
512
+
513
+ const formatValue = (value: any): string => {
514
+ if (value instanceof Date) {
515
+ return moment(value).format('llll');
516
+ }
517
+ else if (typeof value === 'object' && value !== null) {
518
+ Object.keys(value).filter(a => a.startsWith('_id') || a.startsWith('id_')).forEach(key => {
519
+ delete value[key];
520
+ });
521
+ return JSON.stringify(value); // Pretty print objects
522
+ }
523
+ else {
524
+ return typeof value === 'string' ? `"${value}"` : String(value);
525
+ }
526
+ };
527
+
528
+ const customArrayDiff = (arr1: any[], arr2: any[]): string => {
529
+ let arrayDiffResults = [];
530
+ const maxLength = Math.max(arr1.length, arr2.length);
531
+
532
+ for (let i = 0; i < maxLength; i++) {
533
+ if (arr1[i] && !arr2[i]) {
534
+ arrayDiffResults.push(`Removed at index ${i}: ${formatValue(arr1[i])}`);
535
+ }
536
+ else if (!arr1[i] && arr2[i]) {
537
+ arrayDiffResults.push(`Added at index ${i}: ${formatValue(arr2[i])}`);
538
+ }
539
+ else if (arr1[i] && arr2[i] && JSON.stringify(arr1[i]) !== JSON.stringify(arr2[i])) {
540
+ arrayDiffResults.push(`Changed at index ${i}: {${formatObjectDiff(arr1[i], arr2[i])}}`);
541
+ }
542
+ }
543
+
544
+ return arrayDiffResults.join(', ');
545
+ };
546
+
547
+ const formatObjectDiff = (obj1: any, obj2: any): string => {
548
+ if (obj1 === null || obj2 === null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {
549
+ return `from: ${formatValue(obj1)} to: ${formatValue(obj2)}`;
550
+ }
551
+
552
+ if (Array.isArray(obj1) || Array.isArray(obj2)) {
553
+ return customArrayDiff(Array.isArray(obj1) ? obj1 : [], Array.isArray(obj2) ? obj2 : []);
554
+ }
555
+
556
+ return Object.keys({...obj1, ...obj2}).filter(a => !a.startsWith('_id') && !a.startsWith('id_')).map(key => {
557
+ const obj1Val = obj1 ? obj1[key] : undefined;
558
+ const obj2Val = obj2 ? obj2[key] : undefined;
559
+ return `${toTitleCase(key)}: ${formatObjectDiff(obj1Val, obj2Val)}`;
560
+ }).join(', ');
561
+ };
562
+
563
+ // Handle each diff type
564
+ ['added', 'deleted', 'updated'].forEach(diffType => {
565
+ if (Object.keys(diff[diffType]).length > 0) {
566
+ const updates = Object.keys(diff[diffType])
567
+ .filter(key => diffType === 'added' ? true : (diffType === 'deleted' ? !diff['added'][key] : !diff['added'][key] && !diff['deleted'][key]))
568
+ .filter(key => !key.startsWith('_id') && !key.startsWith('id_'))
569
+ .map(key => `\n${toTitleCase(key)}: ${formatObjectDiff(obj1[key], obj2[key])}`)
570
+ .join(',');
571
+
572
+ diffString += updates ? `${updates}` : '';
573
+ }
574
+ });
575
+
576
+ return diffString;
577
+ }
578
+
579
+ export function getBinarySize(string) {
580
+ if (string) {
581
+ return Buffer.byteLength(string, 'utf8');
582
+ }
583
+ else {
584
+ return 0;
585
+ }
586
+ }
587
+
588
+ export function pad(num, size) {
589
+ let s = num + '';
590
+ while (s.length < size) { s = '0' + s; }
591
+ return s;
592
+ }
593
+
594
+ export function randomString(length, chars) {
595
+ let result = '';
596
+ for (let i = length; i > 0; --i) { result += chars[Math.floor(Math.random() * chars.length)]; }
597
+ return result;
598
+ }
599
+
600
+ export function toTitleCase(str) {
601
+ return str.replace(/\w\S*/g, function(txt){
602
+ return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
603
+ });
604
+ }
605
+
606
+ export function isObject(item) {
607
+ return (item && typeof item === 'object' && !Array.isArray(item));
608
+ }
609
+
610
+ export function mergeDeep(target, ...sources) {
611
+ if (!sources.length) {
612
+ return target;
613
+ }
614
+ const source = sources.shift();
615
+
616
+ if (isObject(target) && isObject(source)) {
617
+ for (const key in source) {
618
+ if (isObject(source[key])) {
619
+ if (!target[key]) {
620
+ Object.assign(target, { [key]: {} });
621
+ }
622
+ mergeDeep(target[key], source[key]);
623
+ }
624
+ else {
625
+ Object.assign(target, { [key]: source[key] });
626
+ }
627
+ }
628
+ }
629
+
630
+ return mergeDeep(target, ...sources);
631
+ }
632
+
633
+ export function generateSearchTokensFromFields(doc: any, fields: string[]): string[] {
634
+ const tokens = new Set<string>();
635
+
636
+ fields.forEach(field => {
637
+ const val = doc[field];
638
+ if (typeof val === 'string' && val.trim().length) {
639
+ const words = val.toLowerCase().split(/\s+/);
640
+ words.forEach(word => {
641
+ for (let i = 3; i <= word.length; i++) {
642
+ tokens.add(word.slice(0, i)); // prefix-based tokens only
643
+ }
644
+ });
645
+ }
646
+ });
647
+
648
+ return Array.from(tokens);
649
+ }