@resolveio/server-lib 22.3.54 → 22.3.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +23134 -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 +708 -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 +195 -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 +287 -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 -336
  401. package/methods/ai-terminal.js +0 -22782
  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 -684
  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 -177
  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,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
+ }