@resolveio/server-lib 22.3.125 → 22.3.126

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 (735) hide show
  1. package/.nodemon.json +5 -0
  2. package/.vscode/settings.json +21 -0
  3. package/AGENTS.md +195 -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-run.collection.ts +117 -0
  29. package/src/collections/ai-terminal-conversation.collection.ts +91 -0
  30. package/src/collections/ai-terminal-issue-report.collection.ts +99 -0
  31. package/src/collections/ai-terminal-message.collection.ts +77 -0
  32. package/src/collections/app-setting.collection.ts +104 -0
  33. package/src/collections/app-status.collection.ts +58 -0
  34. package/src/collections/communication-metric.collection.ts +84 -0
  35. package/src/collections/counter.collection.ts +56 -0
  36. package/src/collections/cron-job-history.collection.ts +94 -0
  37. package/src/collections/cron-job.collection.ts +92 -0
  38. package/src/collections/customer-notification.collection.ts +131 -0
  39. package/src/collections/customer-portal-password.collection.ts +76 -0
  40. package/src/collections/email-history.collection.ts +134 -0
  41. package/src/collections/email-verified.collection.ts +62 -0
  42. package/src/collections/file.collection.ts +74 -0
  43. package/src/collections/flag-update.collection.ts +57 -0
  44. package/src/collections/flag.collection.ts +57 -0
  45. package/src/collections/log-method-latency.collection.ts +77 -0
  46. package/src/collections/log-subscription.collection.ts +80 -0
  47. package/src/collections/log.collection.ts +93 -0
  48. package/src/collections/logged-in-users.collection.ts +67 -0
  49. package/src/collections/monitor-cpu.collection.ts +65 -0
  50. package/src/collections/monitor-function.collection.ts +74 -0
  51. package/src/collections/monitor-memory.collection.ts +77 -0
  52. package/src/collections/monitor-mongo.collection.ts +71 -0
  53. package/src/collections/notification.collection.ts +57 -0
  54. package/src/collections/openai-usage-ledger.collection.ts +77 -0
  55. package/src/collections/report-builder-dashboard-builder.collection.ts +109 -0
  56. package/src/collections/report-builder-library.collection.ts +89 -0
  57. package/src/collections/report-builder-report.collection.ts +184 -0
  58. package/src/collections/user-group.collection.ts +89 -0
  59. package/src/collections/user-guide.collection.ts +57 -0
  60. package/src/collections/user.collection.ts +181 -0
  61. package/src/cron/cron.ts +117 -0
  62. package/src/fixtures/cron-jobs.ts +95 -0
  63. package/src/fixtures/init.ts +35 -0
  64. package/src/http/auth.ts +818 -0
  65. package/src/http/health.ts +7 -0
  66. package/src/http/home.ts +90 -0
  67. package/src/http/slow-query-publication.ts +49 -0
  68. package/src/index.ts +1 -0
  69. package/src/managers/ai-assistant-codex-manager.manager.ts +1131 -0
  70. package/src/managers/ai-run-evidence.manager.ts +264 -0
  71. package/src/managers/communication-metric.manager.ts +82 -0
  72. package/src/managers/cron.manager.ts +333 -0
  73. package/src/managers/customer-notification-content.manager.ts +236 -0
  74. package/src/managers/diagnostic-manager-bootstrap.ts +165 -0
  75. package/src/managers/error-auto-fix.manager.ts +2767 -0
  76. package/src/managers/local-log.manager.ts +113 -0
  77. package/src/managers/method.manager.ts +1857 -0
  78. package/src/managers/mongo.manager.ts +4575 -0
  79. package/src/managers/monitor.manager.ts +507 -0
  80. package/src/managers/openai-usage-ledger.manager.ts +57 -0
  81. package/src/managers/slow-query-verifier.manager.ts +3590 -0
  82. package/src/managers/slow-query.manager.ts +519 -0
  83. package/src/managers/subscription.manager.ts +3128 -0
  84. package/src/managers/websocket.manager.ts +746 -0
  85. package/src/managers/worker-dispatcher.manager.ts +1360 -0
  86. package/src/managers/worker-server.manager.ts +536 -0
  87. package/src/methods/accounts.ts +532 -0
  88. package/src/methods/ai-terminal.ts +23497 -0
  89. package/src/methods/app-settings.ts +114 -0
  90. package/src/methods/aws.ts +649 -0
  91. package/src/methods/collections.ts +641 -0
  92. package/src/methods/counters.ts +69 -0
  93. package/src/methods/cron-jobs.ts +2614 -0
  94. package/src/methods/customer-notifications.ts +458 -0
  95. package/src/methods/diagnostics.ts +616 -0
  96. package/src/methods/flag-updates.ts +7 -0
  97. package/src/methods/flags.ts +7 -0
  98. package/src/methods/logs.ts +657 -0
  99. package/src/methods/mongo-explorer.ts +1880 -0
  100. package/src/methods/monitor.ts +540 -0
  101. package/src/methods/pdf.ts +1236 -0
  102. package/src/methods/publications.ts +129 -0
  103. package/src/methods/report-builder.ts +3300 -0
  104. package/src/methods/support.ts +335 -0
  105. package/src/models/ai-run.model.ts +27 -0
  106. package/src/models/ai-terminal-conversation.model.ts +19 -0
  107. package/src/models/ai-terminal-issue-report.model.ts +21 -0
  108. package/src/models/ai-terminal-message.model.ts +24 -0
  109. package/src/models/app-setting.model.ts +17 -0
  110. package/{models/app-status.model.d.ts → src/models/app-status.model.ts} +3 -2
  111. package/{models/billing-logged-in-users.model.d.ts → src/models/billing-logged-in-users.model.ts} +5 -4
  112. package/src/models/collection-document.model.ts +24 -0
  113. package/src/models/communication-metric.model.ts +23 -0
  114. package/{models/counter.model.d.ts → src/models/counter.model.ts} +4 -3
  115. package/src/models/cron-job-history.model.ts +16 -0
  116. package/src/models/cron-job.model.ts +15 -0
  117. package/src/models/customer-notification.model.ts +28 -0
  118. package/src/models/customer-portal-password.model.ts +12 -0
  119. package/src/models/dialog.model.ts +25 -0
  120. package/{models/email-history.model.js → src/models/email-history.model.ts} +36 -4
  121. package/{models/email-verified.model.d.ts → src/models/email-verified.model.ts} +6 -5
  122. package/{models/file.model.d.ts → src/models/file.model.ts} +8 -7
  123. package/{models/flag-update.model.d.ts → src/models/flag-update.model.ts} +4 -3
  124. package/{models/flag.model.d.ts → src/models/flag.model.ts} +4 -3
  125. package/src/models/log-method-latency.model.ts +11 -0
  126. package/{models/log-subscription.model.d.ts → src/models/log-subscription.model.ts} +11 -9
  127. package/src/models/log.model.ts +19 -0
  128. package/{models/logged-in-users.model.d.ts → src/models/logged-in-users.model.ts} +6 -5
  129. package/{models/method-response.model.d.ts → src/models/method-response.model.ts} +7 -6
  130. package/src/models/method.model.ts +25 -0
  131. package/{models/monitor-cpu.model.d.ts → src/models/monitor-cpu.model.ts} +9 -7
  132. package/src/models/monitor-function.model.ts +16 -0
  133. package/src/models/monitor-memory.model.ts +17 -0
  134. package/src/models/monitor-mongo.model.ts +15 -0
  135. package/{models/notification.model.d.ts → src/models/notification.model.ts} +6 -4
  136. package/src/models/openai-usage-ledger.model.ts +16 -0
  137. package/src/models/pagination.model.ts +35 -0
  138. package/src/models/permission.model.ts +14 -0
  139. package/src/models/report-builder-dashboard-builder.model.ts +29 -0
  140. package/src/models/report-builder-library.model.ts +20 -0
  141. package/src/models/report-builder-report.model.ts +136 -0
  142. package/src/models/report-builder.model.ts +68 -0
  143. package/src/models/select-data-label.model.ts +9 -0
  144. package/src/models/server-message.model.ts +31 -0
  145. package/src/models/slow-query-report.model.ts +23 -0
  146. package/src/models/subscription.model.ts +73 -0
  147. package/src/models/support-ticket.model.ts +104 -0
  148. package/src/models/user-group.model.ts +24 -0
  149. package/{models/user-guide.model.d.ts → src/models/user-guide.model.ts} +5 -4
  150. package/src/models/user.model.ts +96 -0
  151. package/src/private/images/ResolveIO.png +0 -0
  152. package/src/publications/ai-terminal.ts +73 -0
  153. package/src/publications/app-settings.ts +25 -0
  154. package/src/publications/app-status.ts +13 -0
  155. package/src/publications/cron-jobs.ts +40 -0
  156. package/src/publications/customer-notifications.ts +101 -0
  157. package/src/publications/files.ts +33 -0
  158. package/src/publications/flags-update.ts +19 -0
  159. package/src/publications/flags.ts +19 -0
  160. package/src/publications/logs.ts +163 -0
  161. package/src/publications/notifications.ts +13 -0
  162. package/src/publications/report-builder-dashboard-builders.ts +39 -0
  163. package/src/publications/report-builder-libraries.ts +41 -0
  164. package/src/publications/report-builder-reports.ts +47 -0
  165. package/src/publications/super-admin.ts +13 -0
  166. package/src/publications/user-groups.ts +12 -0
  167. package/src/publications/user-guides.ts +12 -0
  168. package/src/resolveio-server-app.ts +617 -0
  169. package/src/server-app.ts +3354 -0
  170. package/src/services/codex-client.ts +1231 -0
  171. package/src/services/openai-client.ts +265 -0
  172. package/src/types/error-report.ts +26 -0
  173. package/src/types/js-tiktoken.d.ts +11 -0
  174. package/src/types/slow-query-report.ts +28 -0
  175. package/src/util/ai-qa-policy.ts +925 -0
  176. package/src/util/ai-run-evidence-adapters.ts +521 -0
  177. package/src/util/ai-run-evidence-dashboard.ts +271 -0
  178. package/src/util/ai-run-evidence-eval.ts +885 -0
  179. package/src/util/ai-run-evidence.ts +964 -0
  180. package/src/util/ai-runner-artifacts.ts +586 -0
  181. package/src/util/ai-runner-qa-auth.ts +821 -0
  182. package/src/util/ai-runner-qa-tools.ts +3045 -0
  183. package/src/util/aicoder-runner-v6.ts +526 -0
  184. package/src/util/common.ts +649 -0
  185. package/src/util/customer-portal-password.ts +183 -0
  186. package/src/util/error-reporter.ts +332 -0
  187. package/src/util/error-tracking.ts +79 -0
  188. package/src/util/openai-usage-cost.ts +114 -0
  189. package/src/util/report-builder-unwinds.ts +180 -0
  190. package/src/util/runner-process-janitor.ts +219 -0
  191. package/src/util/schema-report-builder.ts +448 -0
  192. package/src/util/slow-query-reporter.ts +216 -0
  193. package/src/util/subscription-dependency-context.ts +1096 -0
  194. package/src/util/support-runner-v5.ts +897 -0
  195. package/src/util/tokenizer.ts +38 -0
  196. package/src/workers/codex-runner.worker.ts +142 -0
  197. package/start_server.sh +5 -0
  198. package/tests/ai-assistant-corpus-build.ts +484 -0
  199. package/tests/ai-assistant-corpus-replay-e2e.ts +774 -0
  200. package/tests/ai-assistant-data-parity-e2e.ts +1989 -0
  201. package/tests/ai-assistant-eval-triage.ts +831 -0
  202. package/tests/ai-assistant-openai-e2e.ts +1061 -0
  203. package/tests/ai-assistant-openai-git-e2e.ts +155 -0
  204. package/tests/ai-assistant-preflight-matrix.ts +215 -0
  205. package/tests/ai-assistant-routing-eval.test.ts +560 -0
  206. package/tests/ai-assistant-snf-live-eval.ts +975 -0
  207. package/tests/ai-assistant-utils.test.ts +2968 -0
  208. package/tests/ai-run-eval.test.ts +88 -0
  209. package/tests/ai-run-evidence.test.ts +232 -0
  210. package/tests/ai-runner-contract.test.ts +488 -0
  211. package/tests/aicoder-runner-v6.test.ts +92 -0
  212. package/tests/error-reporter.test.ts +145 -0
  213. package/tests/method-publication-generator.test.ts +46 -0
  214. package/tests/report-builder-linking.test.ts +79 -0
  215. package/tests/resolveio-platform-intelligence.test.ts +352 -0
  216. package/tests/server-app-cron-owner.test.ts +127 -0
  217. package/tests/subscription-connect-race.test.ts +158 -0
  218. package/tests/subscription-dependency-context.test.ts +324 -0
  219. package/tests/subscription-manager-collection-tracking.test.ts +86 -0
  220. package/tests/subscription-manager-invalidation.test.ts +86 -0
  221. package/tests/support-runner-v5.test.ts +191 -0
  222. package/tsconfig.json +34 -0
  223. package/ai/assistant-core-heuristics.d.ts +0 -11
  224. package/ai/assistant-core-heuristics.js +0 -356
  225. package/ai/assistant-core-heuristics.js.map +0 -1
  226. package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +0 -3
  227. package/ai/resolveio-platform-intelligence-memory-corpus.js +0 -214
  228. package/ai/resolveio-platform-intelligence-memory-corpus.js.map +0 -1
  229. package/ai/resolveio-platform-intelligence-memory.d.ts +0 -20
  230. package/ai/resolveio-platform-intelligence-memory.js +0 -341
  231. package/ai/resolveio-platform-intelligence-memory.js.map +0 -1
  232. package/ai/resolveio-platform-intelligence-types.js +0 -4
  233. package/ai/resolveio-platform-intelligence-types.js.map +0 -1
  234. package/ai/resolveio-platform-intelligence.d.ts +0 -6
  235. package/ai/resolveio-platform-intelligence.js +0 -463
  236. package/ai/resolveio-platform-intelligence.js.map +0 -1
  237. package/client-server-app.d.ts +0 -1
  238. package/client-server-app.js +0 -68
  239. package/client-server-app.js.map +0 -1
  240. package/collections/ai-run.collection.d.ts +0 -3
  241. package/collections/ai-run.collection.js +0 -170
  242. package/collections/ai-run.collection.js.map +0 -1
  243. package/collections/ai-terminal-conversation.collection.d.ts +0 -2
  244. package/collections/ai-terminal-conversation.collection.js +0 -140
  245. package/collections/ai-terminal-conversation.collection.js.map +0 -1
  246. package/collections/ai-terminal-issue-report.collection.d.ts +0 -2
  247. package/collections/ai-terminal-issue-report.collection.js +0 -148
  248. package/collections/ai-terminal-issue-report.collection.js.map +0 -1
  249. package/collections/ai-terminal-message.collection.d.ts +0 -2
  250. package/collections/ai-terminal-message.collection.js +0 -121
  251. package/collections/ai-terminal-message.collection.js.map +0 -1
  252. package/collections/app-setting.collection.d.ts +0 -3
  253. package/collections/app-setting.collection.js +0 -103
  254. package/collections/app-setting.collection.js.map +0 -1
  255. package/collections/app-status.collection.d.ts +0 -3
  256. package/collections/app-status.collection.js +0 -57
  257. package/collections/app-status.collection.js.map +0 -1
  258. package/collections/communication-metric.collection.d.ts +0 -2
  259. package/collections/communication-metric.collection.js +0 -133
  260. package/collections/communication-metric.collection.js.map +0 -1
  261. package/collections/counter.collection.d.ts +0 -3
  262. package/collections/counter.collection.js +0 -56
  263. package/collections/counter.collection.js.map +0 -1
  264. package/collections/cron-job-history.collection.d.ts +0 -3
  265. package/collections/cron-job-history.collection.js +0 -137
  266. package/collections/cron-job-history.collection.js.map +0 -1
  267. package/collections/cron-job.collection.d.ts +0 -3
  268. package/collections/cron-job.collection.js +0 -92
  269. package/collections/cron-job.collection.js.map +0 -1
  270. package/collections/customer-notification.collection.d.ts +0 -3
  271. package/collections/customer-notification.collection.js +0 -130
  272. package/collections/customer-notification.collection.js.map +0 -1
  273. package/collections/customer-portal-password.collection.d.ts +0 -3
  274. package/collections/customer-portal-password.collection.js +0 -75
  275. package/collections/customer-portal-password.collection.js.map +0 -1
  276. package/collections/email-history.collection.d.ts +0 -3
  277. package/collections/email-history.collection.js +0 -134
  278. package/collections/email-history.collection.js.map +0 -1
  279. package/collections/email-verified.collection.d.ts +0 -3
  280. package/collections/email-verified.collection.js +0 -62
  281. package/collections/email-verified.collection.js.map +0 -1
  282. package/collections/file.collection.d.ts +0 -3
  283. package/collections/file.collection.js +0 -74
  284. package/collections/file.collection.js.map +0 -1
  285. package/collections/flag-update.collection.d.ts +0 -3
  286. package/collections/flag-update.collection.js +0 -57
  287. package/collections/flag-update.collection.js.map +0 -1
  288. package/collections/flag.collection.d.ts +0 -3
  289. package/collections/flag.collection.js +0 -57
  290. package/collections/flag.collection.js.map +0 -1
  291. package/collections/log-method-latency.collection.d.ts +0 -3
  292. package/collections/log-method-latency.collection.js +0 -77
  293. package/collections/log-method-latency.collection.js.map +0 -1
  294. package/collections/log-subscription.collection.d.ts +0 -3
  295. package/collections/log-subscription.collection.js +0 -80
  296. package/collections/log-subscription.collection.js.map +0 -1
  297. package/collections/log.collection.d.ts +0 -3
  298. package/collections/log.collection.js +0 -93
  299. package/collections/log.collection.js.map +0 -1
  300. package/collections/logged-in-users.collection.d.ts +0 -3
  301. package/collections/logged-in-users.collection.js +0 -67
  302. package/collections/logged-in-users.collection.js.map +0 -1
  303. package/collections/monitor-cpu.collection.d.ts +0 -3
  304. package/collections/monitor-cpu.collection.js +0 -65
  305. package/collections/monitor-cpu.collection.js.map +0 -1
  306. package/collections/monitor-function.collection.d.ts +0 -3
  307. package/collections/monitor-function.collection.js +0 -74
  308. package/collections/monitor-function.collection.js.map +0 -1
  309. package/collections/monitor-memory.collection.d.ts +0 -3
  310. package/collections/monitor-memory.collection.js +0 -77
  311. package/collections/monitor-memory.collection.js.map +0 -1
  312. package/collections/monitor-mongo.collection.d.ts +0 -3
  313. package/collections/monitor-mongo.collection.js +0 -71
  314. package/collections/monitor-mongo.collection.js.map +0 -1
  315. package/collections/notification.collection.d.ts +0 -3
  316. package/collections/notification.collection.js +0 -57
  317. package/collections/notification.collection.js.map +0 -1
  318. package/collections/openai-usage-ledger.collection.d.ts +0 -2
  319. package/collections/openai-usage-ledger.collection.js +0 -124
  320. package/collections/openai-usage-ledger.collection.js.map +0 -1
  321. package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
  322. package/collections/report-builder-dashboard-builder.collection.js +0 -109
  323. package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
  324. package/collections/report-builder-library.collection.d.ts +0 -3
  325. package/collections/report-builder-library.collection.js +0 -87
  326. package/collections/report-builder-library.collection.js.map +0 -1
  327. package/collections/report-builder-report.collection.d.ts +0 -4
  328. package/collections/report-builder-report.collection.js +0 -184
  329. package/collections/report-builder-report.collection.js.map +0 -1
  330. package/collections/user-group.collection.d.ts +0 -4
  331. package/collections/user-group.collection.js +0 -89
  332. package/collections/user-group.collection.js.map +0 -1
  333. package/collections/user-guide.collection.d.ts +0 -3
  334. package/collections/user-guide.collection.js +0 -57
  335. package/collections/user-guide.collection.js.map +0 -1
  336. package/collections/user.collection.d.ts +0 -4
  337. package/collections/user.collection.js +0 -180
  338. package/collections/user.collection.js.map +0 -1
  339. package/cron/cron.d.ts +0 -14
  340. package/cron/cron.js +0 -216
  341. package/cron/cron.js.map +0 -1
  342. package/fixtures/cron-jobs.d.ts +0 -1
  343. package/fixtures/cron-jobs.js +0 -150
  344. package/fixtures/cron-jobs.js.map +0 -1
  345. package/fixtures/init.d.ts +0 -1
  346. package/fixtures/init.js +0 -91
  347. package/fixtures/init.js.map +0 -1
  348. package/http/auth.d.ts +0 -2
  349. package/http/auth.js +0 -951
  350. package/http/auth.js.map +0 -1
  351. package/http/health.d.ts +0 -1
  352. package/http/health.js +0 -11
  353. package/http/health.js.map +0 -1
  354. package/http/home.d.ts +0 -1
  355. package/http/home.js +0 -134
  356. package/http/home.js.map +0 -1
  357. package/http/slow-query-publication.d.ts +0 -2
  358. package/http/slow-query-publication.js +0 -99
  359. package/http/slow-query-publication.js.map +0 -1
  360. package/index.d.ts +0 -1
  361. package/index.js +0 -19
  362. package/index.js.map +0 -1
  363. package/managers/ai-assistant-codex-manager.manager.d.ts +0 -67
  364. package/managers/ai-assistant-codex-manager.manager.js +0 -1113
  365. package/managers/ai-assistant-codex-manager.manager.js.map +0 -1
  366. package/managers/ai-run-evidence.manager.d.ts +0 -36
  367. package/managers/ai-run-evidence.manager.js +0 -377
  368. package/managers/ai-run-evidence.manager.js.map +0 -1
  369. package/managers/communication-metric.manager.d.ts +0 -16
  370. package/managers/communication-metric.manager.js +0 -134
  371. package/managers/communication-metric.manager.js.map +0 -1
  372. package/managers/cron.manager.d.ts +0 -20
  373. package/managers/cron.manager.js +0 -534
  374. package/managers/cron.manager.js.map +0 -1
  375. package/managers/customer-notification-content.manager.d.ts +0 -55
  376. package/managers/customer-notification-content.manager.js +0 -158
  377. package/managers/customer-notification-content.manager.js.map +0 -1
  378. package/managers/diagnostic-manager-bootstrap.d.ts +0 -9
  379. package/managers/diagnostic-manager-bootstrap.js +0 -260
  380. package/managers/diagnostic-manager-bootstrap.js.map +0 -1
  381. package/managers/error-auto-fix.manager.d.ts +0 -149
  382. package/managers/error-auto-fix.manager.js +0 -3064
  383. package/managers/error-auto-fix.manager.js.map +0 -1
  384. package/managers/local-log.manager.d.ts +0 -18
  385. package/managers/local-log.manager.js +0 -88
  386. package/managers/local-log.manager.js.map +0 -1
  387. package/managers/method.manager.d.ts +0 -84
  388. package/managers/method.manager.js +0 -1964
  389. package/managers/method.manager.js.map +0 -1
  390. package/managers/mongo.manager.d.ts +0 -224
  391. package/managers/mongo.manager.js +0 -5000
  392. package/managers/mongo.manager.js.map +0 -1
  393. package/managers/monitor.manager.d.ts +0 -70
  394. package/managers/monitor.manager.js +0 -550
  395. package/managers/monitor.manager.js.map +0 -1
  396. package/managers/openai-usage-ledger.manager.d.ts +0 -16
  397. package/managers/openai-usage-ledger.manager.js +0 -93
  398. package/managers/openai-usage-ledger.manager.js.map +0 -1
  399. package/managers/slow-query-verifier.manager.d.ts +0 -144
  400. package/managers/slow-query-verifier.manager.js +0 -3857
  401. package/managers/slow-query-verifier.manager.js.map +0 -1
  402. package/managers/slow-query.manager.d.ts +0 -28
  403. package/managers/slow-query.manager.js +0 -468
  404. package/managers/slow-query.manager.js.map +0 -1
  405. package/managers/subscription.manager.d.ts +0 -169
  406. package/managers/subscription.manager.js +0 -3434
  407. package/managers/subscription.manager.js.map +0 -1
  408. package/managers/websocket.manager.d.ts +0 -73
  409. package/managers/websocket.manager.js +0 -673
  410. package/managers/websocket.manager.js.map +0 -1
  411. package/managers/worker-dispatcher.manager.d.ts +0 -120
  412. package/managers/worker-dispatcher.manager.js +0 -1266
  413. package/managers/worker-dispatcher.manager.js.map +0 -1
  414. package/managers/worker-server.manager.d.ts +0 -35
  415. package/managers/worker-server.manager.js +0 -582
  416. package/managers/worker-server.manager.js.map +0 -1
  417. package/methods/accounts.d.ts +0 -2
  418. package/methods/accounts.js +0 -624
  419. package/methods/accounts.js.map +0 -1
  420. package/methods/ai-terminal.d.ts +0 -337
  421. package/methods/ai-terminal.js +0 -23166
  422. package/methods/ai-terminal.js.map +0 -1
  423. package/methods/app-settings.d.ts +0 -2
  424. package/methods/app-settings.js +0 -169
  425. package/methods/app-settings.js.map +0 -1
  426. package/methods/aws.d.ts +0 -2
  427. package/methods/aws.js +0 -877
  428. package/methods/aws.js.map +0 -1
  429. package/methods/collections.d.ts +0 -2
  430. package/methods/collections.js +0 -719
  431. package/methods/collections.js.map +0 -1
  432. package/methods/counters.d.ts +0 -2
  433. package/methods/counters.js +0 -113
  434. package/methods/counters.js.map +0 -1
  435. package/methods/cron-jobs.d.ts +0 -2
  436. package/methods/cron-jobs.js +0 -2475
  437. package/methods/cron-jobs.js.map +0 -1
  438. package/methods/customer-notifications.d.ts +0 -2
  439. package/methods/customer-notifications.js +0 -528
  440. package/methods/customer-notifications.js.map +0 -1
  441. package/methods/diagnostics.d.ts +0 -2
  442. package/methods/diagnostics.js +0 -703
  443. package/methods/diagnostics.js.map +0 -1
  444. package/methods/flag-updates.d.ts +0 -2
  445. package/methods/flag-updates.js +0 -8
  446. package/methods/flag-updates.js.map +0 -1
  447. package/methods/flags.d.ts +0 -2
  448. package/methods/flags.js +0 -8
  449. package/methods/flags.js.map +0 -1
  450. package/methods/logs.d.ts +0 -2
  451. package/methods/logs.js +0 -751
  452. package/methods/logs.js.map +0 -1
  453. package/methods/mongo-explorer.d.ts +0 -2
  454. package/methods/mongo-explorer.js +0 -1808
  455. package/methods/mongo-explorer.js.map +0 -1
  456. package/methods/monitor.d.ts +0 -2
  457. package/methods/monitor.js +0 -543
  458. package/methods/monitor.js.map +0 -1
  459. package/methods/pdf.d.ts +0 -2
  460. package/methods/pdf.js +0 -1216
  461. package/methods/pdf.js.map +0 -1
  462. package/methods/publications.d.ts +0 -1
  463. package/methods/publications.js +0 -183
  464. package/methods/publications.js.map +0 -1
  465. package/methods/report-builder.d.ts +0 -2
  466. package/methods/report-builder.js +0 -3094
  467. package/methods/report-builder.js.map +0 -1
  468. package/methods/support.d.ts +0 -2
  469. package/methods/support.js +0 -430
  470. package/methods/support.js.map +0 -1
  471. package/models/ai-run.model.d.ts +0 -19
  472. package/models/ai-run.model.js +0 -4
  473. package/models/ai-run.model.js.map +0 -1
  474. package/models/ai-terminal-conversation.model.d.ts +0 -17
  475. package/models/ai-terminal-conversation.model.js +0 -4
  476. package/models/ai-terminal-conversation.model.js.map +0 -1
  477. package/models/ai-terminal-issue-report.model.d.ts +0 -19
  478. package/models/ai-terminal-issue-report.model.js +0 -4
  479. package/models/ai-terminal-issue-report.model.js.map +0 -1
  480. package/models/ai-terminal-message.model.d.ts +0 -22
  481. package/models/ai-terminal-message.model.js +0 -4
  482. package/models/ai-terminal-message.model.js.map +0 -1
  483. package/models/app-setting.model.d.ts +0 -16
  484. package/models/app-setting.model.js +0 -4
  485. package/models/app-setting.model.js.map +0 -1
  486. package/models/app-status.model.js +0 -4
  487. package/models/app-status.model.js.map +0 -1
  488. package/models/billing-logged-in-users.model.js +0 -4
  489. package/models/billing-logged-in-users.model.js.map +0 -1
  490. package/models/collection-document.model.d.ts +0 -21
  491. package/models/collection-document.model.js +0 -4
  492. package/models/collection-document.model.js.map +0 -1
  493. package/models/communication-metric.model.d.ts +0 -20
  494. package/models/communication-metric.model.js +0 -4
  495. package/models/communication-metric.model.js.map +0 -1
  496. package/models/counter.model.js +0 -4
  497. package/models/counter.model.js.map +0 -1
  498. package/models/cron-job-history.model.d.ts +0 -15
  499. package/models/cron-job-history.model.js +0 -4
  500. package/models/cron-job-history.model.js.map +0 -1
  501. package/models/cron-job.model.d.ts +0 -14
  502. package/models/cron-job.model.js +0 -4
  503. package/models/cron-job.model.js.map +0 -1
  504. package/models/customer-notification.model.d.ts +0 -26
  505. package/models/customer-notification.model.js +0 -4
  506. package/models/customer-notification.model.js.map +0 -1
  507. package/models/customer-portal-password.model.d.ts +0 -11
  508. package/models/customer-portal-password.model.js +0 -4
  509. package/models/customer-portal-password.model.js.map +0 -1
  510. package/models/dialog.model.d.ts +0 -23
  511. package/models/dialog.model.js +0 -4
  512. package/models/dialog.model.js.map +0 -1
  513. package/models/email-history.model.d.ts +0 -32
  514. package/models/email-history.model.js.map +0 -1
  515. package/models/email-verified.model.js +0 -4
  516. package/models/email-verified.model.js.map +0 -1
  517. package/models/file.model.js +0 -4
  518. package/models/file.model.js.map +0 -1
  519. package/models/flag-update.model.js +0 -4
  520. package/models/flag-update.model.js.map +0 -1
  521. package/models/flag.model.js +0 -4
  522. package/models/flag.model.js.map +0 -1
  523. package/models/log-method-latency.model.d.ts +0 -10
  524. package/models/log-method-latency.model.js +0 -4
  525. package/models/log-method-latency.model.js.map +0 -1
  526. package/models/log-subscription.model.js +0 -4
  527. package/models/log-subscription.model.js.map +0 -1
  528. package/models/log.model.d.ts +0 -17
  529. package/models/log.model.js +0 -4
  530. package/models/log.model.js.map +0 -1
  531. package/models/logged-in-users.model.js +0 -4
  532. package/models/logged-in-users.model.js.map +0 -1
  533. package/models/method-response.model.js +0 -4
  534. package/models/method-response.model.js.map +0 -1
  535. package/models/method.model.d.ts +0 -26
  536. package/models/method.model.js +0 -4
  537. package/models/method.model.js.map +0 -1
  538. package/models/monitor-cpu.model.js +0 -4
  539. package/models/monitor-cpu.model.js.map +0 -1
  540. package/models/monitor-function.model.d.ts +0 -14
  541. package/models/monitor-function.model.js +0 -4
  542. package/models/monitor-function.model.js.map +0 -1
  543. package/models/monitor-memory.model.d.ts +0 -15
  544. package/models/monitor-memory.model.js +0 -4
  545. package/models/monitor-memory.model.js.map +0 -1
  546. package/models/monitor-mongo.model.d.ts +0 -13
  547. package/models/monitor-mongo.model.js +0 -4
  548. package/models/monitor-mongo.model.js.map +0 -1
  549. package/models/notification.model.js +0 -4
  550. package/models/notification.model.js.map +0 -1
  551. package/models/openai-usage-ledger.model.d.ts +0 -15
  552. package/models/openai-usage-ledger.model.js +0 -4
  553. package/models/openai-usage-ledger.model.js.map +0 -1
  554. package/models/pagination.model.d.ts +0 -11
  555. package/models/pagination.model.js +0 -28
  556. package/models/pagination.model.js.map +0 -1
  557. package/models/permission.model.d.ts +0 -12
  558. package/models/permission.model.js +0 -4
  559. package/models/permission.model.js.map +0 -1
  560. package/models/report-builder-dashboard-builder.model.d.ts +0 -25
  561. package/models/report-builder-dashboard-builder.model.js +0 -4
  562. package/models/report-builder-dashboard-builder.model.js.map +0 -1
  563. package/models/report-builder-library.model.d.ts +0 -17
  564. package/models/report-builder-library.model.js +0 -4
  565. package/models/report-builder-library.model.js.map +0 -1
  566. package/models/report-builder-report.model.d.ts +0 -121
  567. package/models/report-builder-report.model.js +0 -4
  568. package/models/report-builder-report.model.js.map +0 -1
  569. package/models/report-builder.model.d.ts +0 -61
  570. package/models/report-builder.model.js +0 -4
  571. package/models/report-builder.model.js.map +0 -1
  572. package/models/select-data-label.model.d.ts +0 -9
  573. package/models/select-data-label.model.js +0 -4
  574. package/models/select-data-label.model.js.map +0 -1
  575. package/models/server-message.model.d.ts +0 -32
  576. package/models/server-message.model.js +0 -4
  577. package/models/server-message.model.js.map +0 -1
  578. package/models/slow-query-report.model.d.ts +0 -23
  579. package/models/slow-query-report.model.js +0 -4
  580. package/models/slow-query-report.model.js.map +0 -1
  581. package/models/subscription.model.d.ts +0 -31
  582. package/models/subscription.model.js +0 -4
  583. package/models/subscription.model.js.map +0 -1
  584. package/models/support-ticket.model.d.ts +0 -87
  585. package/models/support-ticket.model.js +0 -4
  586. package/models/support-ticket.model.js.map +0 -1
  587. package/models/user-group.model.d.ts +0 -20
  588. package/models/user-group.model.js +0 -4
  589. package/models/user-group.model.js.map +0 -1
  590. package/models/user-guide.model.js +0 -4
  591. package/models/user-guide.model.js.map +0 -1
  592. package/models/user.model.d.ts +0 -84
  593. package/models/user.model.js +0 -4
  594. package/models/user.model.js.map +0 -1
  595. package/private/images/ResolveIO.png +0 -0
  596. package/public_api.js +0 -125
  597. package/public_api.js.map +0 -1
  598. package/publications/ai-terminal.d.ts +0 -1
  599. package/publications/ai-terminal.js +0 -122
  600. package/publications/ai-terminal.js.map +0 -1
  601. package/publications/app-settings.d.ts +0 -2
  602. package/publications/app-settings.js +0 -28
  603. package/publications/app-settings.js.map +0 -1
  604. package/publications/app-status.d.ts +0 -2
  605. package/publications/app-status.js +0 -16
  606. package/publications/app-status.js.map +0 -1
  607. package/publications/cron-jobs.d.ts +0 -2
  608. package/publications/cron-jobs.js +0 -88
  609. package/publications/cron-jobs.js.map +0 -1
  610. package/publications/customer-notifications.d.ts +0 -2
  611. package/publications/customer-notifications.js +0 -161
  612. package/publications/customer-notifications.js.map +0 -1
  613. package/publications/files.d.ts +0 -2
  614. package/publications/files.js +0 -36
  615. package/publications/files.js.map +0 -1
  616. package/publications/flags-update.d.ts +0 -2
  617. package/publications/flags-update.js +0 -22
  618. package/publications/flags-update.js.map +0 -1
  619. package/publications/flags.d.ts +0 -2
  620. package/publications/flags.js +0 -22
  621. package/publications/flags.js.map +0 -1
  622. package/publications/logs.d.ts +0 -2
  623. package/publications/logs.js +0 -164
  624. package/publications/logs.js.map +0 -1
  625. package/publications/notifications.d.ts +0 -2
  626. package/publications/notifications.js +0 -16
  627. package/publications/notifications.js.map +0 -1
  628. package/publications/report-builder-dashboard-builders.d.ts +0 -2
  629. package/publications/report-builder-dashboard-builders.js +0 -42
  630. package/publications/report-builder-dashboard-builders.js.map +0 -1
  631. package/publications/report-builder-libraries.d.ts +0 -2
  632. package/publications/report-builder-libraries.js +0 -90
  633. package/publications/report-builder-libraries.js.map +0 -1
  634. package/publications/report-builder-reports.d.ts +0 -2
  635. package/publications/report-builder-reports.js +0 -50
  636. package/publications/report-builder-reports.js.map +0 -1
  637. package/publications/super-admin.d.ts +0 -2
  638. package/publications/super-admin.js +0 -16
  639. package/publications/super-admin.js.map +0 -1
  640. package/publications/user-groups.d.ts +0 -1
  641. package/publications/user-groups.js +0 -16
  642. package/publications/user-groups.js.map +0 -1
  643. package/publications/user-guides.d.ts +0 -1
  644. package/publications/user-guides.js +0 -16
  645. package/publications/user-guides.js.map +0 -1
  646. package/resolveio-server-app.d.ts +0 -70
  647. package/resolveio-server-app.js +0 -801
  648. package/resolveio-server-app.js.map +0 -1
  649. package/server-app.d.ts +0 -228
  650. package/server-app.js +0 -3566
  651. package/server-app.js.map +0 -1
  652. package/services/codex-client.d.ts +0 -128
  653. package/services/codex-client.js +0 -1629
  654. package/services/codex-client.js.map +0 -1
  655. package/services/openai-client.d.ts +0 -46
  656. package/services/openai-client.js +0 -318
  657. package/services/openai-client.js.map +0 -1
  658. package/types/error-report.d.ts +0 -25
  659. package/types/error-report.js +0 -4
  660. package/types/error-report.js.map +0 -1
  661. package/types/slow-query-report.d.ts +0 -27
  662. package/types/slow-query-report.js +0 -6
  663. package/types/slow-query-report.js.map +0 -1
  664. package/util/ai-qa-policy.d.ts +0 -124
  665. package/util/ai-qa-policy.js +0 -736
  666. package/util/ai-qa-policy.js.map +0 -1
  667. package/util/ai-run-evidence-adapters.d.ts +0 -33
  668. package/util/ai-run-evidence-adapters.js +0 -660
  669. package/util/ai-run-evidence-adapters.js.map +0 -1
  670. package/util/ai-run-evidence-dashboard.d.ts +0 -67
  671. package/util/ai-run-evidence-dashboard.js +0 -309
  672. package/util/ai-run-evidence-dashboard.js.map +0 -1
  673. package/util/ai-run-evidence-eval.d.ts +0 -86
  674. package/util/ai-run-evidence-eval.js +0 -854
  675. package/util/ai-run-evidence-eval.js.map +0 -1
  676. package/util/ai-run-evidence.d.ts +0 -212
  677. package/util/ai-run-evidence.js +0 -649
  678. package/util/ai-run-evidence.js.map +0 -1
  679. package/util/ai-runner-artifacts.d.ts +0 -82
  680. package/util/ai-runner-artifacts.js +0 -713
  681. package/util/ai-runner-artifacts.js.map +0 -1
  682. package/util/ai-runner-qa-auth.d.ts +0 -5
  683. package/util/ai-runner-qa-auth.js +0 -822
  684. package/util/ai-runner-qa-auth.js.map +0 -1
  685. package/util/ai-runner-qa-tools.d.ts +0 -26
  686. package/util/ai-runner-qa-tools.js +0 -3029
  687. package/util/ai-runner-qa-tools.js.map +0 -1
  688. package/util/aicoder-runner-v6.d.ts +0 -168
  689. package/util/aicoder-runner-v6.js +0 -347
  690. package/util/aicoder-runner-v6.js.map +0 -1
  691. package/util/common.d.ts +0 -31
  692. package/util/common.js +0 -683
  693. package/util/common.js.map +0 -1
  694. package/util/customer-portal-password.d.ts +0 -13
  695. package/util/customer-portal-password.js +0 -209
  696. package/util/customer-portal-password.js.map +0 -1
  697. package/util/error-reporter.d.ts +0 -52
  698. package/util/error-reporter.js +0 -326
  699. package/util/error-reporter.js.map +0 -1
  700. package/util/error-tracking.d.ts +0 -13
  701. package/util/error-tracking.js +0 -120
  702. package/util/error-tracking.js.map +0 -1
  703. package/util/openai-usage-cost.d.ts +0 -6
  704. package/util/openai-usage-cost.js +0 -92
  705. package/util/openai-usage-cost.js.map +0 -1
  706. package/util/report-builder-unwinds.d.ts +0 -15
  707. package/util/report-builder-unwinds.js +0 -156
  708. package/util/report-builder-unwinds.js.map +0 -1
  709. package/util/runner-process-janitor.d.ts +0 -27
  710. package/util/runner-process-janitor.js +0 -208
  711. package/util/runner-process-janitor.js.map +0 -1
  712. package/util/schema-report-builder.d.ts +0 -6
  713. package/util/schema-report-builder.js +0 -481
  714. package/util/schema-report-builder.js.map +0 -1
  715. package/util/slow-query-reporter.d.ts +0 -28
  716. package/util/slow-query-reporter.js +0 -226
  717. package/util/slow-query-reporter.js.map +0 -1
  718. package/util/subscription-dependency-context.d.ts +0 -34
  719. package/util/subscription-dependency-context.js +0 -1283
  720. package/util/subscription-dependency-context.js.map +0 -1
  721. package/util/support-runner-v5.d.ts +0 -250
  722. package/util/support-runner-v5.js +0 -634
  723. package/util/support-runner-v5.js.map +0 -1
  724. package/util/tokenizer.d.ts +0 -5
  725. package/util/tokenizer.js +0 -41
  726. package/util/tokenizer.js.map +0 -1
  727. package/workers/codex-runner.worker.d.ts +0 -1
  728. package/workers/codex-runner.worker.js +0 -192
  729. package/workers/codex-runner.worker.js.map +0 -1
  730. /package/{private → src/private}/email-templates/enrollment.html +0 -0
  731. /package/{private → src/private}/email-templates/forgot-password.html +0 -0
  732. /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
  733. /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
  734. /package/{private → src/private}/email-templates/support-ticket.html +0 -0
  735. /package/{public_api.d.ts → src/public_api.ts} +0 -0
@@ -0,0 +1,641 @@
1
+ import SimpleSchema from 'simpl-schema';
2
+ import { MethodManager } from '../managers/method.manager';
3
+ import { PaginationOptions, PaginationOptionsSchema } from '../models/pagination.model';
4
+ import { ResolveIOServer } from '../resolveio-server-app';
5
+ import { deepCopy, getMongoMergeUpdatedDoc, objectIdHexString } from '../util/common';
6
+
7
+ const ISO_DATE_REGEX = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$/;
8
+ const INVOICE_COLLECTION = 'invoices';
9
+ const SUPPORT_TICKET_COLLECTION = 'support-tickets';
10
+ const SUPPORT_TICKET_SYSTEM_USER_ID = 'resolveio';
11
+ const SUPPORT_TICKET_SYSTEM_USER = 'ResolveIO';
12
+
13
+ function coerceDateValue(value: unknown): unknown {
14
+ if (value instanceof Date) {
15
+ return value;
16
+ }
17
+
18
+ if (typeof value !== 'string' || !ISO_DATE_REGEX.test(value)) {
19
+ return value;
20
+ }
21
+
22
+ const parsed = new Date(value);
23
+ return Number.isNaN(parsed.getTime()) ? value : parsed;
24
+ }
25
+
26
+ function coerceDatePath(target: any, segments: string[]) {
27
+ if (!target || !segments.length) {
28
+ return;
29
+ }
30
+
31
+ const [segment, ...rest] = segments;
32
+
33
+ if (segment === '$') {
34
+ if (Array.isArray(target)) {
35
+ target.forEach(item => coerceDatePath(item, rest));
36
+ }
37
+ return;
38
+ }
39
+
40
+ if (!Object.prototype.hasOwnProperty.call(target, segment)) {
41
+ return;
42
+ }
43
+
44
+ if (rest.length === 0) {
45
+ const updatedValue = coerceDateValue(target[segment]);
46
+ if (updatedValue !== target[segment]) {
47
+ target[segment] = updatedValue;
48
+ }
49
+ return;
50
+ }
51
+
52
+ coerceDatePath(target[segment], rest);
53
+ }
54
+
55
+ function coerceDateFields(collectionRef: any, doc: any) {
56
+ if (!collectionRef || !collectionRef.simplschema || !doc) {
57
+ return;
58
+ }
59
+
60
+ const schema = collectionRef.simplschema;
61
+ const schemaKeys = Object.keys(schema.schema());
62
+
63
+ schemaKeys.forEach(schemaKey => {
64
+ const definition = schema.schema(schemaKey);
65
+ const typeDefs = definition?.type?.definitions;
66
+ if (!typeDefs || !typeDefs.some(typeDef => typeDef.type === Date)) {
67
+ return;
68
+ }
69
+
70
+ coerceDatePath(doc, schemaKey.split('.'));
71
+ });
72
+ }
73
+
74
+ function normalizeSupportTicketMessage(message: any): any {
75
+ if (!message || typeof message !== 'object' || Array.isArray(message)) {
76
+ return message;
77
+ }
78
+
79
+ const normalizedMessage = {
80
+ ...message
81
+ };
82
+ const currentIdUser = typeof normalizedMessage.id_user === 'string' ? normalizedMessage.id_user.trim() : '';
83
+ if (currentIdUser) {
84
+ return normalizedMessage;
85
+ }
86
+
87
+ const normalizedUser = String(normalizedMessage.user || '').trim().toLowerCase();
88
+ const normalizedType = String(normalizedMessage.type || '').trim().toLowerCase();
89
+ const normalizedSource = String(normalizedMessage.source || '').trim().toLowerCase();
90
+ const normalizedVisibility = String(normalizedMessage.visibility || '').trim().toLowerCase();
91
+ const normalizedBadge = String(normalizedMessage.badge || '').trim().toLowerCase();
92
+ const isInternalSystemMessage = normalizedMessage.internal === true
93
+ || normalizedType === 'resolveio'
94
+ || normalizedType === 'internal'
95
+ || normalizedSource.startsWith('support-')
96
+ || normalizedSource.startsWith('support_')
97
+ || normalizedVisibility === 'internal'
98
+ || normalizedBadge === 'internal'
99
+ || normalizedBadge === 'ai'
100
+ || normalizedUser.startsWith('resolveio');
101
+
102
+ if (!isInternalSystemMessage) {
103
+ return normalizedMessage;
104
+ }
105
+
106
+ normalizedMessage.id_user = SUPPORT_TICKET_SYSTEM_USER_ID;
107
+ if (!String(normalizedMessage.user || '').trim()) {
108
+ normalizedMessage.user = SUPPORT_TICKET_SYSTEM_USER;
109
+ }
110
+ return normalizedMessage;
111
+ }
112
+
113
+ function roundInvoiceLifecycleDate(value: unknown): Date | null {
114
+ const parsedValue = coerceDateValue(value);
115
+ if (!(parsedValue instanceof Date) || Number.isNaN(parsedValue.getTime())) {
116
+ return null;
117
+ }
118
+
119
+ const roundedDate = new Date(parsedValue);
120
+ roundedDate.setSeconds(0, 0);
121
+ return roundedDate;
122
+ }
123
+
124
+ function normalizeInvoiceLifecycleDates(doc: any) {
125
+ if (!doc || (doc.status !== 'Invoiced' && doc.status !== 'Paid/Closed')) {
126
+ return;
127
+ }
128
+
129
+ const invoiceDate = roundInvoiceLifecycleDate(doc.date_invoice)
130
+ || roundInvoiceLifecycleDate(doc.createdAt)
131
+ || roundInvoiceLifecycleDate(new Date());
132
+
133
+ if (!doc.date_invoice && invoiceDate) {
134
+ doc.date_invoice = invoiceDate;
135
+ }
136
+ if (!doc.date_due && doc.date_invoice instanceof Date && !Number.isNaN(doc.date_invoice.getTime())) {
137
+ const dueDate = new Date(doc.date_invoice);
138
+ dueDate.setDate(dueDate.getDate() + 30);
139
+ doc.date_due = dueDate;
140
+ }
141
+ }
142
+
143
+ function normalizeDocumentBeforeReplace(collection: string, doc: any) {
144
+ if (!doc) {
145
+ return;
146
+ }
147
+
148
+ if (collection === INVOICE_COLLECTION) {
149
+ normalizeInvoiceLifecycleDates(doc);
150
+ }
151
+
152
+ if (collection === SUPPORT_TICKET_COLLECTION && Array.isArray(doc.messages)) {
153
+ doc.messages = doc.messages.map((message: any) => normalizeSupportTicketMessage(message));
154
+ }
155
+ }
156
+
157
+ export function loadCollectionMethods(methodManager: MethodManager) {
158
+ methodManager.methods({
159
+ collectionListAll: {
160
+ function: function() {
161
+ return Promise.resolve(ResolveIOServer.getMongoManager().collections().map(a => a.collectionName).sort((a, b) => a.localeCompare(b)));
162
+ }
163
+ },
164
+ collectionListRB: {
165
+ function: function() {
166
+ return Promise.resolve(ResolveIOServer.getMongoManager().collections().filter(a => a.useRB).map(a => a.collectionName).sort((a, b) => a.localeCompare(b)));
167
+ }
168
+ },
169
+ // Query database for any collection and query
170
+ findOne: {
171
+ bypassSession: true,
172
+ bypassLogs: true,
173
+ check: new SimpleSchema({
174
+ collection: {
175
+ type: String
176
+ },
177
+ query: {
178
+ type: Object,
179
+ blackbox: true
180
+ }
181
+ }),
182
+ function: function(collection: string, query = {}) {
183
+ if (!ResolveIOServer.getMongoManager().collection(collection)) {
184
+ throw new Error('Error in Find One Collection: Invalid collection');
185
+ }
186
+
187
+ return ResolveIOServer.getMongoManager().collection(collection).findOne(query);
188
+ }
189
+ },
190
+ find: {
191
+ bypassSession: true,
192
+ bypassLogs: true,
193
+ check: new SimpleSchema({
194
+ collection: {
195
+ type: String
196
+ },
197
+ query: {
198
+ type: Object,
199
+ blackbox: true
200
+ },
201
+ sort: {
202
+ type: Object,
203
+ blackbox: true,
204
+ optional: true
205
+ }
206
+ }),
207
+ function: function(collection: string, query = {}, sortQuery = {}) {
208
+ if (!ResolveIOServer.getMongoManager().collection(collection)) {
209
+ throw new Error('Error in Find Collection: Invalid collection');
210
+ }
211
+
212
+ return ResolveIOServer.getMongoManager().collection(collection).find(query, {sort: sortQuery});
213
+ }
214
+ },
215
+ findWithOptions: {
216
+ bypassSession: true,
217
+ bypassLogs: true,
218
+ check: new SimpleSchema({
219
+ collection: {
220
+ type: String
221
+ },
222
+ query: {
223
+ type: Object,
224
+ blackbox: true
225
+ },
226
+ options: {
227
+ type: PaginationOptionsSchema
228
+ }
229
+ }),
230
+ function: function(collection: string, query: Object, options: PaginationOptions) {
231
+ if (!ResolveIOServer.getMongoManager().collection(collection)) {
232
+ throw new Error('Error in Find With Options Collection: Invalid collection');
233
+ }
234
+ else {
235
+ let optionsQuery = {};
236
+
237
+ if (options.fields && Object.keys(options.fields).length) {
238
+ optionsQuery['projection'] = options.fields;
239
+ }
240
+
241
+ if (options.sort && Object.keys(options.sort).length) {
242
+ optionsQuery['sort'] = options.sort;
243
+ }
244
+
245
+ if (options.limit) {
246
+ optionsQuery['limit'] = options.limit;
247
+ }
248
+
249
+ if (options.skip) {
250
+ optionsQuery['skip'] = options.skip;
251
+ }
252
+
253
+ return ResolveIOServer.getMongoManager().collection(collection).find(query, optionsQuery);
254
+ }
255
+ }
256
+ },
257
+ // Insert 1 document
258
+ // @Inputs: collection, document
259
+ // @Outputs: res = _id of new document, err = not inserted
260
+ insertDocument: {
261
+ check: new SimpleSchema({
262
+ collection: {
263
+ type: String
264
+ },
265
+ document: {
266
+ type: Object,
267
+ blackbox: true
268
+ }
269
+ }),
270
+ function: async function(collection: string, document: Object) {
271
+ if (!ResolveIOServer.getMongoManager().collection(collection)) {
272
+ throw new Error('Error in Insert Document Collection: Invalid collection');
273
+ }
274
+ else {
275
+ let id = objectIdHexString();
276
+ document['_id'] = id;
277
+ document['__v'] = 0;
278
+
279
+ await ResolveIOServer.getMongoManager().collection(collection).insertOne(document);
280
+ return id;
281
+ }
282
+ }
283
+ },
284
+ // Insert 1 document
285
+ // @Inputs: collection, document
286
+ // @Outputs: res = _id of new document, err = not inserted
287
+ insertManyDocuments: {
288
+ check: new SimpleSchema({
289
+ collection: {
290
+ type: String
291
+ },
292
+ documents: {
293
+ type: Array
294
+ },
295
+ 'documents.$': {
296
+ type: Object,
297
+ blackbox: true
298
+ }
299
+ }),
300
+ function: async function(collection: string, documents: Object[]) {
301
+ if (!ResolveIOServer.getMongoManager().collection(collection)) {
302
+ throw new Error('Error in Insert Many Documents Collection: Invalid collection');
303
+ }
304
+ else {
305
+ documents.forEach(document => {
306
+ document['_id'] = objectIdHexString();
307
+ document['__v'] = 0;
308
+ });
309
+
310
+ await ResolveIOServer.getMongoManager().collection(collection).insertMany(documents);
311
+ return documents.map(a => a['_id']);
312
+ }
313
+ }
314
+ },
315
+ // Replaces 1 document with new document (from _id)
316
+ // @Inputs: collection, document id
317
+ // @Outputs: res = 1 (updated 1), err = not updated/wrong version
318
+ // Search for doc, check version, if found then try and update
319
+ updateDocument: {
320
+ check: new SimpleSchema({
321
+ collection: {
322
+ type: String
323
+ },
324
+ f_document: {
325
+ type: Object,
326
+ blackbox: true
327
+ }
328
+ }),
329
+ function: async function(collection: string, f_document: Object) {
330
+ const collectionRef = ResolveIOServer.getMongoManager().collection(collection);
331
+ if (!collectionRef) {
332
+ throw new Error('Error in Update Document Collection: Invalid collection');
333
+ }
334
+
335
+ normalizeDocumentBeforeReplace(collection, f_document);
336
+ coerceDateFields(collectionRef, f_document);
337
+ await collectionRef.replaceOne({_id: f_document['_id']}, f_document);
338
+ return true;
339
+ }
340
+ },
341
+ // Updates 1 document's props (from _id)
342
+ // @Inputs: collection, document id, document version, update paramters ({prop: 'xxx', data: 'yyy})
343
+ // @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version
344
+ // Search for doc, check version, if found then try and update props
345
+ updateDocumentProps: {
346
+ check: new SimpleSchema({
347
+ collection: {
348
+ type: String
349
+ },
350
+ doc_id: {
351
+ type: String
352
+ },
353
+ updateParams: {
354
+ type: Array
355
+ },
356
+ 'updateParams.$': {
357
+ type: Object,
358
+ blackbox: true
359
+ },
360
+ doc__v: {
361
+ type: Number,
362
+ optional: true
363
+ }
364
+ }),
365
+ function: async function(collection: string, doc_id: string, updateParams: any[], doc__v?: number) {
366
+ const collectionRef = ResolveIOServer.getMongoManager().collection(collection);
367
+ if (!collectionRef) {
368
+ throw new Error('Error in Update Document Props Collection: Invalid collection');
369
+ }
370
+ else {
371
+ let currDoc = await collectionRef.findOne({_id: doc_id});
372
+ if (currDoc) {
373
+ let modifiedDoc = deepCopy(currDoc);
374
+
375
+ updateParams.forEach(data => {
376
+ modifiedDoc[data.prop] = data.data;
377
+ });
378
+
379
+ if (!doc__v || modifiedDoc.__v === doc__v) {
380
+ normalizeDocumentBeforeReplace(collection, modifiedDoc);
381
+ coerceDateFields(collectionRef, modifiedDoc);
382
+ await collectionRef.replaceOne({_id: modifiedDoc._id}, modifiedDoc, {}, false, false, currDoc);
383
+ }
384
+ else {
385
+ console.log(new Date(), 'invalid version - ' + collection, currDoc.__v, doc__v);
386
+
387
+ if (ResolveIOServer.getMongoManager().collection(collection + '.versions')) {
388
+ let oldDoc = await ResolveIOServer.getMongoManager().collection(collection + '.versions').findOne({
389
+ _id: {
390
+ _id: currDoc._id,
391
+ __v: doc__v
392
+ }
393
+ });
394
+
395
+ let newCurrDocId = currDoc._id;
396
+ let newCurrDocV = currDoc.__v;
397
+
398
+ if (oldDoc) {
399
+ let updatedDoc = getMongoMergeUpdatedDoc(modifiedDoc, currDoc, oldDoc);
400
+ updatedDoc._id = newCurrDocId;
401
+ updatedDoc.__v = newCurrDocV;
402
+ currDoc._id = newCurrDocId;
403
+ currDoc.__v = newCurrDocV;
404
+
405
+ normalizeDocumentBeforeReplace(collection, updatedDoc);
406
+ coerceDateFields(collectionRef, updatedDoc);
407
+ await collectionRef.replaceOne({_id: newCurrDocId}, updatedDoc, {}, false, false, currDoc);
408
+ }
409
+ else {
410
+ // throw new Error('Error In Update Document Props Collections: Invalid Version And Could Not Find History Props - DB: ' + newCurrDocV + ', Trying to update with :' + doc__v);
411
+ console.log(new Date(), 'Error In Update Document Props Collections: Invalid Version And Could Not Find History Props - DB: ' + newCurrDocV + ', Trying to update with :' + doc__v)
412
+ }
413
+ }
414
+ else {
415
+ throw new Error('Error In Update Document Props Collections: Invalid Version And We Are NOT Using Versions On This Collection!');
416
+ }
417
+ }
418
+ }
419
+ else {
420
+ throw new Error('Error in Update Document Props Collections: No Document');
421
+ }
422
+ }
423
+
424
+ return true;
425
+ }
426
+ },
427
+ updateDocumentOffline: {
428
+ check: new SimpleSchema({
429
+ collection: {
430
+ type: String
431
+ },
432
+ f_document: {
433
+ type: Object,
434
+ blackbox: true
435
+ }
436
+ }),
437
+ function: async function(collection: string, f_document: Object) {
438
+ const collectionRef = ResolveIOServer.getMongoManager().collection(collection);
439
+ if (!collectionRef) {
440
+ throw new Error('Error in Update Document Offline Collection: Invalid collection');
441
+ }
442
+ else {
443
+ let currDoc = await collectionRef.findOne({_id: f_document['_id']});
444
+ if (currDoc) {
445
+ if (currDoc.__v === f_document['__v']) {
446
+ normalizeDocumentBeforeReplace(collection, f_document);
447
+ coerceDateFields(collectionRef, f_document);
448
+ await collectionRef.replaceOne({_id: f_document['_id']}, f_document, {}, false, false, currDoc);
449
+ }
450
+ else {
451
+ console.log('OFFLINE - invalid version - ' + collection, currDoc.__v, f_document['__v']);
452
+
453
+ let newCurrDocId = currDoc._id;
454
+ let newCurrDocV = currDoc.__v;
455
+ let oldDocV = f_document['__v'];
456
+
457
+ if (ResolveIOServer.getMongoManager().collection(collection + '.versions')) {
458
+ let oldDoc = await ResolveIOServer.getMongoManager().collection(collection + '.versions').findOne({
459
+ _id: {
460
+ _id: newCurrDocId,
461
+ __v: oldDocV
462
+ }
463
+ });
464
+
465
+ if (oldDoc) {
466
+ let updatedDoc = getMongoMergeUpdatedDoc(f_document, currDoc, oldDoc);
467
+ updatedDoc._id = newCurrDocId;
468
+ updatedDoc.__v = newCurrDocV;
469
+ currDoc._id = newCurrDocId;
470
+ currDoc.__v = newCurrDocV;
471
+
472
+ normalizeDocumentBeforeReplace(collection, updatedDoc);
473
+ coerceDateFields(collectionRef, updatedDoc);
474
+ await collectionRef.replaceOne({_id: newCurrDocId}, updatedDoc, {}, false, false, currDoc);
475
+ }
476
+ else {
477
+ throw new Error('Error in Update Document Offline Collections: OFFLINE - Invalid Version And Could Not Find History Props - DB: ' + newCurrDocV + ', Trying to update with :' + oldDocV);
478
+ }
479
+ }
480
+ else {
481
+ throw new Error('Error in Update Document Offline Collections: Invalid Version And We Are NOT Using Versions On This Collection!');
482
+ }
483
+ }
484
+ }
485
+ else {
486
+ throw new Error('Error in Update Document Offline Collections: No Document');
487
+ }
488
+ }
489
+
490
+ return true;
491
+ }
492
+ },
493
+ // Updates 1 document's props (from _id)
494
+ // @Inputs: collection, document id, document version, update paramters ({prop: 'xxx', data: 'yyy})
495
+ // @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version
496
+ // Search for doc, check version, if found then try and update props
497
+ updateDocumentPropsOffline: {
498
+ check: new SimpleSchema({
499
+ collection: {
500
+ type: String
501
+ },
502
+ doc_id: {
503
+ type: String
504
+ },
505
+ updateParams: {
506
+ type: Array
507
+ },
508
+ 'updateParams.$': {
509
+ type: Object,
510
+ blackbox: true
511
+ },
512
+ doc__v: {
513
+ type: Number
514
+ }
515
+ }),
516
+ function: async function(collection: string, doc_id: string, updateParams: any[], doc__v: number) {
517
+ const collectionRef = ResolveIOServer.getMongoManager().collection(collection);
518
+ if (!collectionRef) {
519
+ throw new Error('Error in Update Document Props Offline Collection: Invalid collection');
520
+ }
521
+ else {
522
+ let currDoc = await collectionRef.findOne({_id: doc_id}, null, true);
523
+ if (currDoc) {
524
+ let modifiedDoc = deepCopy(currDoc);
525
+
526
+ updateParams.forEach(data => {
527
+ modifiedDoc[data.prop] = data.data;
528
+ });
529
+
530
+ if (modifiedDoc.__v === doc__v) {
531
+ normalizeDocumentBeforeReplace(collection, modifiedDoc);
532
+ coerceDateFields(collectionRef, modifiedDoc);
533
+ await collectionRef.replaceOne({_id: modifiedDoc._id}, modifiedDoc, {}, false, false, currDoc);
534
+ }
535
+ else {
536
+ console.log('OFFLINE - invalid version - ' + collection, currDoc.__v, doc__v);
537
+
538
+ let newCurrDocId = currDoc._id;
539
+ let newCurrDocV = currDoc.__v;
540
+
541
+ if (ResolveIOServer.getMongoManager().collection(collection + '.versions')) {
542
+ let oldDoc = await ResolveIOServer.getMongoManager().collection(collection + '.versions').findOne({
543
+ _id: {
544
+ _id: currDoc._id,
545
+ __v: doc__v
546
+ }
547
+ });
548
+
549
+ if (oldDoc) {
550
+ let updatedDoc = getMongoMergeUpdatedDoc(modifiedDoc, currDoc, oldDoc);
551
+ updatedDoc._id = newCurrDocId;
552
+ updatedDoc.__v = newCurrDocV;
553
+ currDoc._id = newCurrDocId;
554
+ currDoc.__v = newCurrDocV;
555
+
556
+ normalizeDocumentBeforeReplace(collection, updatedDoc);
557
+ coerceDateFields(collectionRef, updatedDoc);
558
+ await collectionRef.replaceOne({_id: newCurrDocId}, updatedDoc, {}, false, false, currDoc);
559
+ }
560
+ else {
561
+ throw new Error('Error in Update Document Props Offline Collections: OFFLINE - Invalid Version And Could Not Find History Props - DB: ' + newCurrDocV + ', Trying to update with :' + doc__v);
562
+ }
563
+ }
564
+ else {
565
+ throw new Error('Error in Update Document Props Offline Collections: Invalid Version And We Are NOT Using Versions On This Collection!');
566
+ }
567
+ }
568
+ }
569
+ else {
570
+ throw new Error('Error in Update Document Props Offline Collections: No Document');
571
+ }
572
+ }
573
+
574
+ return true;
575
+ }
576
+ },
577
+ // Removes 1 document (from _id)
578
+ // @Inputs: collection, document id
579
+ // @Outputs: res = 1 (deleted), res = 0 (not deleted), err = not deleted
580
+ // Search for doc, if found then try and remove
581
+ removeDocument: {
582
+ check: new SimpleSchema({
583
+ collection: {
584
+ type: String
585
+ },
586
+ doc_id: {
587
+ type: String
588
+ }
589
+ }),
590
+ function: async function(collection: string, doc_id: string) {
591
+ if (!ResolveIOServer.getMongoManager().collection(collection)) {
592
+ throw new Error('Error in Remove Document Collection: Invalid collection');
593
+ }
594
+
595
+ await ResolveIOServer.getMongoManager().collection(collection).deleteOne({_id: doc_id});
596
+
597
+ return true;
598
+ }
599
+ },
600
+ removeDocumentWithQuery: {
601
+ check: new SimpleSchema({
602
+ collection: {
603
+ type: String
604
+ },
605
+ query: {
606
+ type: Object,
607
+ blackbox: true
608
+ }
609
+ }),
610
+ function: async function(collection: string, query: Object) {
611
+ if (!ResolveIOServer.getMongoManager().collection(collection)) {
612
+ throw new Error('Error in Remove Document With Query Collection: Invalid collection');
613
+ }
614
+
615
+ await ResolveIOServer.getMongoManager().collection(collection).deleteOne(query);
616
+
617
+ return true;
618
+ }
619
+ },
620
+ removeDocumentsWithQuery: {
621
+ check: new SimpleSchema({
622
+ collection: {
623
+ type: String
624
+ },
625
+ query: {
626
+ type: Object,
627
+ blackbox: true
628
+ }
629
+ }),
630
+ function: async function(collection: string, query: Object) {
631
+ if (!ResolveIOServer.getMongoManager().collection(collection)) {
632
+ throw new Error('Error in Remove Documents With Query Collections: Invalid Collection');
633
+ }
634
+
635
+ await ResolveIOServer.getMongoManager().collection(collection).deleteMany(query);
636
+
637
+ return true;
638
+ }
639
+ }
640
+ });
641
+ }
@@ -0,0 +1,69 @@
1
+ import SimpleSchema from 'simpl-schema';
2
+ import { Counters } from '../collections/counter.collection';
3
+ import { MethodManager } from '../managers/method.manager';
4
+ import { ResolveIOServer } from '../resolveio-server-app';
5
+ import { objectIdHexString } from '../util/common';
6
+
7
+ export function loadCounterMethods(methodManager: MethodManager) {
8
+ methodManager.methods({
9
+ incCounter: {
10
+ check: new SimpleSchema({
11
+ counterType: {
12
+ type: String
13
+ }
14
+ }),
15
+ bypassLogs: true,
16
+ function: async function(counterType: string) {
17
+ let counter = await Counters.findOne({type: counterType});
18
+
19
+ if (!counter) {
20
+ await Counters.create({
21
+ _id: objectIdHexString(),
22
+ count: 2,
23
+ type: counterType
24
+ });
25
+
26
+ return 1;
27
+ }
28
+ else {
29
+ let newCount = await Counters.findOneAndUpdate({type: counterType}, {$inc: {count: 1}});
30
+
31
+ return newCount.count;
32
+ }
33
+ }
34
+ },
35
+ countCollectionWithQuery: {
36
+ check: new SimpleSchema({
37
+ collectionType: {
38
+ type: String
39
+ },
40
+ query: {
41
+ type: Object,
42
+ blackbox: true
43
+ }
44
+ }),
45
+ bypassLogs: true,
46
+ function: function(collectionType: string, query: Object) {
47
+ if (!ResolveIOServer.getMongoManager().collection(collectionType)) {
48
+ throw new Error('Error in Count Collection With Query: Invalid collection');
49
+ }
50
+
51
+ return ResolveIOServer.getMongoManager().collection(collectionType).countDocuments(query);
52
+ }
53
+ },
54
+ countCollection: {
55
+ check: new SimpleSchema({
56
+ collectionType: {
57
+ type: String
58
+ }
59
+ }),
60
+ function: function(collectionType: string) {
61
+ if (!ResolveIOServer.getMongoManager().collection(collectionType)) {
62
+ throw new Error('Error in Count Collection: Invalid collection');
63
+ }
64
+
65
+ return ResolveIOServer.getMongoManager().collection(collectionType).countDocuments();
66
+ }
67
+ }
68
+ });
69
+ }