@resolveio/server-lib 22.3.10 → 22.3.11

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 (669) hide show
  1. package/.nodemon.json +5 -0
  2. package/.vscode/settings.json +21 -0
  3. package/AGENTS.md +188 -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 +344 -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 +22943 -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 +1151 -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/common.ts +649 -0
  173. package/src/util/customer-portal-password.ts +183 -0
  174. package/src/util/error-reporter.ts +332 -0
  175. package/src/util/error-tracking.ts +79 -0
  176. package/src/util/report-builder-unwinds.ts +180 -0
  177. package/src/util/schema-report-builder.ts +448 -0
  178. package/src/util/slow-query-reporter.ts +216 -0
  179. package/src/util/subscription-dependency-context.ts +1096 -0
  180. package/src/util/tokenizer.ts +38 -0
  181. package/src/workers/codex-runner.worker.ts +142 -0
  182. package/start_server.sh +5 -0
  183. package/tests/ai-assistant-corpus-build.ts +484 -0
  184. package/tests/ai-assistant-corpus-replay-e2e.ts +774 -0
  185. package/tests/ai-assistant-data-parity-e2e.ts +1989 -0
  186. package/tests/ai-assistant-eval-triage.ts +831 -0
  187. package/tests/ai-assistant-openai-e2e.ts +1061 -0
  188. package/tests/ai-assistant-openai-git-e2e.ts +155 -0
  189. package/tests/ai-assistant-preflight-matrix.ts +215 -0
  190. package/tests/ai-assistant-routing-eval.test.ts +560 -0
  191. package/tests/ai-assistant-snf-live-eval.ts +975 -0
  192. package/tests/ai-assistant-utils.test.ts +2860 -0
  193. package/tests/error-reporter.test.ts +145 -0
  194. package/tests/report-builder-linking.test.ts +79 -0
  195. package/tests/resolveio-platform-intelligence.test.ts +352 -0
  196. package/tests/server-app-cron-owner.test.ts +127 -0
  197. package/tests/subscription-connect-race.test.ts +158 -0
  198. package/tests/subscription-dependency-context.test.ts +324 -0
  199. package/tests/subscription-manager-collection-tracking.test.ts +86 -0
  200. package/tests/subscription-manager-invalidation.test.ts +86 -0
  201. package/tsconfig.json +34 -0
  202. package/ai/assistant-core-heuristics.d.ts +0 -11
  203. package/ai/assistant-core-heuristics.js +0 -356
  204. package/ai/assistant-core-heuristics.js.map +0 -1
  205. package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +0 -3
  206. package/ai/resolveio-platform-intelligence-memory-corpus.js +0 -214
  207. package/ai/resolveio-platform-intelligence-memory-corpus.js.map +0 -1
  208. package/ai/resolveio-platform-intelligence-memory.d.ts +0 -20
  209. package/ai/resolveio-platform-intelligence-memory.js +0 -341
  210. package/ai/resolveio-platform-intelligence-memory.js.map +0 -1
  211. package/ai/resolveio-platform-intelligence-types.js +0 -4
  212. package/ai/resolveio-platform-intelligence-types.js.map +0 -1
  213. package/ai/resolveio-platform-intelligence.d.ts +0 -6
  214. package/ai/resolveio-platform-intelligence.js +0 -463
  215. package/ai/resolveio-platform-intelligence.js.map +0 -1
  216. package/client-server-app.d.ts +0 -1
  217. package/client-server-app.js +0 -68
  218. package/client-server-app.js.map +0 -1
  219. package/collections/ai-terminal-conversation.collection.d.ts +0 -2
  220. package/collections/ai-terminal-conversation.collection.js +0 -140
  221. package/collections/ai-terminal-conversation.collection.js.map +0 -1
  222. package/collections/ai-terminal-issue-report.collection.d.ts +0 -2
  223. package/collections/ai-terminal-issue-report.collection.js +0 -148
  224. package/collections/ai-terminal-issue-report.collection.js.map +0 -1
  225. package/collections/ai-terminal-message.collection.d.ts +0 -2
  226. package/collections/ai-terminal-message.collection.js +0 -121
  227. package/collections/ai-terminal-message.collection.js.map +0 -1
  228. package/collections/app-setting.collection.d.ts +0 -3
  229. package/collections/app-setting.collection.js +0 -103
  230. package/collections/app-setting.collection.js.map +0 -1
  231. package/collections/app-status.collection.d.ts +0 -3
  232. package/collections/app-status.collection.js +0 -57
  233. package/collections/app-status.collection.js.map +0 -1
  234. package/collections/communication-metric.collection.d.ts +0 -2
  235. package/collections/communication-metric.collection.js +0 -133
  236. package/collections/communication-metric.collection.js.map +0 -1
  237. package/collections/counter.collection.d.ts +0 -3
  238. package/collections/counter.collection.js +0 -56
  239. package/collections/counter.collection.js.map +0 -1
  240. package/collections/cron-job-history.collection.d.ts +0 -3
  241. package/collections/cron-job-history.collection.js +0 -137
  242. package/collections/cron-job-history.collection.js.map +0 -1
  243. package/collections/cron-job.collection.d.ts +0 -3
  244. package/collections/cron-job.collection.js +0 -92
  245. package/collections/cron-job.collection.js.map +0 -1
  246. package/collections/customer-notification.collection.d.ts +0 -3
  247. package/collections/customer-notification.collection.js +0 -130
  248. package/collections/customer-notification.collection.js.map +0 -1
  249. package/collections/customer-portal-password.collection.d.ts +0 -3
  250. package/collections/customer-portal-password.collection.js +0 -75
  251. package/collections/customer-portal-password.collection.js.map +0 -1
  252. package/collections/email-history.collection.d.ts +0 -3
  253. package/collections/email-history.collection.js +0 -127
  254. package/collections/email-history.collection.js.map +0 -1
  255. package/collections/email-verified.collection.d.ts +0 -3
  256. package/collections/email-verified.collection.js +0 -62
  257. package/collections/email-verified.collection.js.map +0 -1
  258. package/collections/file.collection.d.ts +0 -3
  259. package/collections/file.collection.js +0 -74
  260. package/collections/file.collection.js.map +0 -1
  261. package/collections/flag-update.collection.d.ts +0 -3
  262. package/collections/flag-update.collection.js +0 -57
  263. package/collections/flag-update.collection.js.map +0 -1
  264. package/collections/flag.collection.d.ts +0 -3
  265. package/collections/flag.collection.js +0 -57
  266. package/collections/flag.collection.js.map +0 -1
  267. package/collections/log-method-latency.collection.d.ts +0 -3
  268. package/collections/log-method-latency.collection.js +0 -77
  269. package/collections/log-method-latency.collection.js.map +0 -1
  270. package/collections/log-subscription.collection.d.ts +0 -3
  271. package/collections/log-subscription.collection.js +0 -80
  272. package/collections/log-subscription.collection.js.map +0 -1
  273. package/collections/log.collection.d.ts +0 -3
  274. package/collections/log.collection.js +0 -93
  275. package/collections/log.collection.js.map +0 -1
  276. package/collections/logged-in-users.collection.d.ts +0 -3
  277. package/collections/logged-in-users.collection.js +0 -67
  278. package/collections/logged-in-users.collection.js.map +0 -1
  279. package/collections/monitor-cpu.collection.d.ts +0 -3
  280. package/collections/monitor-cpu.collection.js +0 -65
  281. package/collections/monitor-cpu.collection.js.map +0 -1
  282. package/collections/monitor-function.collection.d.ts +0 -3
  283. package/collections/monitor-function.collection.js +0 -74
  284. package/collections/monitor-function.collection.js.map +0 -1
  285. package/collections/monitor-memory.collection.d.ts +0 -3
  286. package/collections/monitor-memory.collection.js +0 -77
  287. package/collections/monitor-memory.collection.js.map +0 -1
  288. package/collections/monitor-mongo.collection.d.ts +0 -3
  289. package/collections/monitor-mongo.collection.js +0 -71
  290. package/collections/monitor-mongo.collection.js.map +0 -1
  291. package/collections/notification.collection.d.ts +0 -3
  292. package/collections/notification.collection.js +0 -57
  293. package/collections/notification.collection.js.map +0 -1
  294. package/collections/openai-usage-ledger.collection.d.ts +0 -2
  295. package/collections/openai-usage-ledger.collection.js +0 -124
  296. package/collections/openai-usage-ledger.collection.js.map +0 -1
  297. package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
  298. package/collections/report-builder-dashboard-builder.collection.js +0 -109
  299. package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
  300. package/collections/report-builder-library.collection.d.ts +0 -3
  301. package/collections/report-builder-library.collection.js +0 -87
  302. package/collections/report-builder-library.collection.js.map +0 -1
  303. package/collections/report-builder-report.collection.d.ts +0 -4
  304. package/collections/report-builder-report.collection.js +0 -184
  305. package/collections/report-builder-report.collection.js.map +0 -1
  306. package/collections/user-group.collection.d.ts +0 -4
  307. package/collections/user-group.collection.js +0 -89
  308. package/collections/user-group.collection.js.map +0 -1
  309. package/collections/user-guide.collection.d.ts +0 -3
  310. package/collections/user-guide.collection.js +0 -57
  311. package/collections/user-guide.collection.js.map +0 -1
  312. package/collections/user.collection.d.ts +0 -4
  313. package/collections/user.collection.js +0 -180
  314. package/collections/user.collection.js.map +0 -1
  315. package/cron/cron.d.ts +0 -14
  316. package/cron/cron.js +0 -216
  317. package/cron/cron.js.map +0 -1
  318. package/fixtures/cron-jobs.d.ts +0 -1
  319. package/fixtures/cron-jobs.js +0 -150
  320. package/fixtures/cron-jobs.js.map +0 -1
  321. package/fixtures/init.d.ts +0 -1
  322. package/fixtures/init.js +0 -91
  323. package/fixtures/init.js.map +0 -1
  324. package/http/auth.d.ts +0 -2
  325. package/http/auth.js +0 -906
  326. package/http/auth.js.map +0 -1
  327. package/http/health.d.ts +0 -1
  328. package/http/health.js +0 -11
  329. package/http/health.js.map +0 -1
  330. package/http/home.d.ts +0 -1
  331. package/http/home.js +0 -134
  332. package/http/home.js.map +0 -1
  333. package/http/slow-query-publication.d.ts +0 -2
  334. package/http/slow-query-publication.js +0 -99
  335. package/http/slow-query-publication.js.map +0 -1
  336. package/index.d.ts +0 -1
  337. package/index.js +0 -19
  338. package/index.js.map +0 -1
  339. package/managers/ai-assistant-codex-manager.manager.d.ts +0 -67
  340. package/managers/ai-assistant-codex-manager.manager.js +0 -1113
  341. package/managers/ai-assistant-codex-manager.manager.js.map +0 -1
  342. package/managers/communication-metric.manager.d.ts +0 -16
  343. package/managers/communication-metric.manager.js +0 -134
  344. package/managers/communication-metric.manager.js.map +0 -1
  345. package/managers/cron.manager.d.ts +0 -20
  346. package/managers/cron.manager.js +0 -534
  347. package/managers/cron.manager.js.map +0 -1
  348. package/managers/customer-notification-content.manager.d.ts +0 -55
  349. package/managers/customer-notification-content.manager.js +0 -158
  350. package/managers/customer-notification-content.manager.js.map +0 -1
  351. package/managers/diagnostic-manager-bootstrap.d.ts +0 -9
  352. package/managers/diagnostic-manager-bootstrap.js +0 -260
  353. package/managers/diagnostic-manager-bootstrap.js.map +0 -1
  354. package/managers/error-auto-fix.manager.d.ts +0 -149
  355. package/managers/error-auto-fix.manager.js +0 -3064
  356. package/managers/error-auto-fix.manager.js.map +0 -1
  357. package/managers/local-log.manager.d.ts +0 -18
  358. package/managers/local-log.manager.js +0 -88
  359. package/managers/local-log.manager.js.map +0 -1
  360. package/managers/method.manager.d.ts +0 -83
  361. package/managers/method.manager.js +0 -1941
  362. package/managers/method.manager.js.map +0 -1
  363. package/managers/mongo.manager.d.ts +0 -224
  364. package/managers/mongo.manager.js +0 -5000
  365. package/managers/mongo.manager.js.map +0 -1
  366. package/managers/monitor.manager.d.ts +0 -70
  367. package/managers/monitor.manager.js +0 -550
  368. package/managers/monitor.manager.js.map +0 -1
  369. package/managers/openai-usage-ledger.manager.d.ts +0 -15
  370. package/managers/openai-usage-ledger.manager.js +0 -144
  371. package/managers/openai-usage-ledger.manager.js.map +0 -1
  372. package/managers/slow-query-verifier.manager.d.ts +0 -144
  373. package/managers/slow-query-verifier.manager.js +0 -3857
  374. package/managers/slow-query-verifier.manager.js.map +0 -1
  375. package/managers/slow-query.manager.d.ts +0 -28
  376. package/managers/slow-query.manager.js +0 -468
  377. package/managers/slow-query.manager.js.map +0 -1
  378. package/managers/subscription.manager.d.ts +0 -169
  379. package/managers/subscription.manager.js +0 -3434
  380. package/managers/subscription.manager.js.map +0 -1
  381. package/managers/websocket.manager.d.ts +0 -73
  382. package/managers/websocket.manager.js +0 -673
  383. package/managers/websocket.manager.js.map +0 -1
  384. package/managers/worker-dispatcher.manager.d.ts +0 -120
  385. package/managers/worker-dispatcher.manager.js +0 -1266
  386. package/managers/worker-dispatcher.manager.js.map +0 -1
  387. package/managers/worker-server.manager.d.ts +0 -35
  388. package/managers/worker-server.manager.js +0 -582
  389. package/managers/worker-server.manager.js.map +0 -1
  390. package/methods/accounts.d.ts +0 -2
  391. package/methods/accounts.js +0 -624
  392. package/methods/accounts.js.map +0 -1
  393. package/methods/ai-terminal.d.ts +0 -322
  394. package/methods/ai-terminal.js +0 -22699
  395. package/methods/ai-terminal.js.map +0 -1
  396. package/methods/app-settings.d.ts +0 -2
  397. package/methods/app-settings.js +0 -169
  398. package/methods/app-settings.js.map +0 -1
  399. package/methods/aws.d.ts +0 -2
  400. package/methods/aws.js +0 -877
  401. package/methods/aws.js.map +0 -1
  402. package/methods/collections.d.ts +0 -2
  403. package/methods/collections.js +0 -719
  404. package/methods/collections.js.map +0 -1
  405. package/methods/counters.d.ts +0 -2
  406. package/methods/counters.js +0 -113
  407. package/methods/counters.js.map +0 -1
  408. package/methods/cron-jobs.d.ts +0 -2
  409. package/methods/cron-jobs.js +0 -2475
  410. package/methods/cron-jobs.js.map +0 -1
  411. package/methods/customer-notifications.d.ts +0 -2
  412. package/methods/customer-notifications.js +0 -528
  413. package/methods/customer-notifications.js.map +0 -1
  414. package/methods/diagnostics.d.ts +0 -2
  415. package/methods/diagnostics.js +0 -703
  416. package/methods/diagnostics.js.map +0 -1
  417. package/methods/flag-updates.d.ts +0 -2
  418. package/methods/flag-updates.js +0 -8
  419. package/methods/flag-updates.js.map +0 -1
  420. package/methods/flags.d.ts +0 -2
  421. package/methods/flags.js +0 -8
  422. package/methods/flags.js.map +0 -1
  423. package/methods/logs.d.ts +0 -2
  424. package/methods/logs.js +0 -751
  425. package/methods/logs.js.map +0 -1
  426. package/methods/mongo-explorer.d.ts +0 -2
  427. package/methods/mongo-explorer.js +0 -1808
  428. package/methods/mongo-explorer.js.map +0 -1
  429. package/methods/monitor.d.ts +0 -2
  430. package/methods/monitor.js +0 -543
  431. package/methods/monitor.js.map +0 -1
  432. package/methods/pdf.d.ts +0 -2
  433. package/methods/pdf.js +0 -1216
  434. package/methods/pdf.js.map +0 -1
  435. package/methods/publications.d.ts +0 -1
  436. package/methods/publications.js +0 -183
  437. package/methods/publications.js.map +0 -1
  438. package/methods/report-builder.d.ts +0 -2
  439. package/methods/report-builder.js +0 -3094
  440. package/methods/report-builder.js.map +0 -1
  441. package/methods/support.d.ts +0 -2
  442. package/methods/support.js +0 -430
  443. package/methods/support.js.map +0 -1
  444. package/models/ai-terminal-conversation.model.d.ts +0 -17
  445. package/models/ai-terminal-conversation.model.js +0 -4
  446. package/models/ai-terminal-conversation.model.js.map +0 -1
  447. package/models/ai-terminal-issue-report.model.d.ts +0 -19
  448. package/models/ai-terminal-issue-report.model.js +0 -4
  449. package/models/ai-terminal-issue-report.model.js.map +0 -1
  450. package/models/ai-terminal-message.model.d.ts +0 -22
  451. package/models/ai-terminal-message.model.js +0 -4
  452. package/models/ai-terminal-message.model.js.map +0 -1
  453. package/models/app-setting.model.d.ts +0 -16
  454. package/models/app-setting.model.js +0 -4
  455. package/models/app-setting.model.js.map +0 -1
  456. package/models/app-status.model.js +0 -4
  457. package/models/app-status.model.js.map +0 -1
  458. package/models/billing-logged-in-users.model.js +0 -4
  459. package/models/billing-logged-in-users.model.js.map +0 -1
  460. package/models/collection-document.model.d.ts +0 -21
  461. package/models/collection-document.model.js +0 -4
  462. package/models/collection-document.model.js.map +0 -1
  463. package/models/communication-metric.model.d.ts +0 -20
  464. package/models/communication-metric.model.js +0 -4
  465. package/models/communication-metric.model.js.map +0 -1
  466. package/models/counter.model.js +0 -4
  467. package/models/counter.model.js.map +0 -1
  468. package/models/cron-job-history.model.d.ts +0 -15
  469. package/models/cron-job-history.model.js +0 -4
  470. package/models/cron-job-history.model.js.map +0 -1
  471. package/models/cron-job.model.d.ts +0 -14
  472. package/models/cron-job.model.js +0 -4
  473. package/models/cron-job.model.js.map +0 -1
  474. package/models/customer-notification.model.d.ts +0 -26
  475. package/models/customer-notification.model.js +0 -4
  476. package/models/customer-notification.model.js.map +0 -1
  477. package/models/customer-portal-password.model.d.ts +0 -11
  478. package/models/customer-portal-password.model.js +0 -4
  479. package/models/customer-portal-password.model.js.map +0 -1
  480. package/models/dialog.model.d.ts +0 -23
  481. package/models/dialog.model.js +0 -4
  482. package/models/dialog.model.js.map +0 -1
  483. package/models/email-history.model.d.ts +0 -31
  484. package/models/email-history.model.js.map +0 -1
  485. package/models/email-verified.model.js +0 -4
  486. package/models/email-verified.model.js.map +0 -1
  487. package/models/file.model.js +0 -4
  488. package/models/file.model.js.map +0 -1
  489. package/models/flag-update.model.js +0 -4
  490. package/models/flag-update.model.js.map +0 -1
  491. package/models/flag.model.js +0 -4
  492. package/models/flag.model.js.map +0 -1
  493. package/models/log-method-latency.model.d.ts +0 -10
  494. package/models/log-method-latency.model.js +0 -4
  495. package/models/log-method-latency.model.js.map +0 -1
  496. package/models/log-subscription.model.js +0 -4
  497. package/models/log-subscription.model.js.map +0 -1
  498. package/models/log.model.d.ts +0 -17
  499. package/models/log.model.js +0 -4
  500. package/models/log.model.js.map +0 -1
  501. package/models/logged-in-users.model.js +0 -4
  502. package/models/logged-in-users.model.js.map +0 -1
  503. package/models/method-response.model.js +0 -4
  504. package/models/method-response.model.js.map +0 -1
  505. package/models/method.model.d.ts +0 -26
  506. package/models/method.model.js +0 -4
  507. package/models/method.model.js.map +0 -1
  508. package/models/monitor-cpu.model.js +0 -4
  509. package/models/monitor-cpu.model.js.map +0 -1
  510. package/models/monitor-function.model.d.ts +0 -14
  511. package/models/monitor-function.model.js +0 -4
  512. package/models/monitor-function.model.js.map +0 -1
  513. package/models/monitor-memory.model.d.ts +0 -15
  514. package/models/monitor-memory.model.js +0 -4
  515. package/models/monitor-memory.model.js.map +0 -1
  516. package/models/monitor-mongo.model.d.ts +0 -13
  517. package/models/monitor-mongo.model.js +0 -4
  518. package/models/monitor-mongo.model.js.map +0 -1
  519. package/models/notification.model.js +0 -4
  520. package/models/notification.model.js.map +0 -1
  521. package/models/openai-usage-ledger.model.d.ts +0 -15
  522. package/models/openai-usage-ledger.model.js +0 -4
  523. package/models/openai-usage-ledger.model.js.map +0 -1
  524. package/models/pagination.model.d.ts +0 -11
  525. package/models/pagination.model.js +0 -28
  526. package/models/pagination.model.js.map +0 -1
  527. package/models/permission.model.d.ts +0 -12
  528. package/models/permission.model.js +0 -4
  529. package/models/permission.model.js.map +0 -1
  530. package/models/report-builder-dashboard-builder.model.d.ts +0 -25
  531. package/models/report-builder-dashboard-builder.model.js +0 -4
  532. package/models/report-builder-dashboard-builder.model.js.map +0 -1
  533. package/models/report-builder-library.model.d.ts +0 -17
  534. package/models/report-builder-library.model.js +0 -4
  535. package/models/report-builder-library.model.js.map +0 -1
  536. package/models/report-builder-report.model.d.ts +0 -121
  537. package/models/report-builder-report.model.js +0 -4
  538. package/models/report-builder-report.model.js.map +0 -1
  539. package/models/report-builder.model.d.ts +0 -61
  540. package/models/report-builder.model.js +0 -4
  541. package/models/report-builder.model.js.map +0 -1
  542. package/models/select-data-label.model.d.ts +0 -9
  543. package/models/select-data-label.model.js +0 -4
  544. package/models/select-data-label.model.js.map +0 -1
  545. package/models/server-message.model.d.ts +0 -32
  546. package/models/server-message.model.js +0 -4
  547. package/models/server-message.model.js.map +0 -1
  548. package/models/slow-query-report.model.d.ts +0 -23
  549. package/models/slow-query-report.model.js +0 -4
  550. package/models/slow-query-report.model.js.map +0 -1
  551. package/models/subscription.model.d.ts +0 -31
  552. package/models/subscription.model.js +0 -4
  553. package/models/subscription.model.js.map +0 -1
  554. package/models/support-ticket.model.d.ts +0 -87
  555. package/models/support-ticket.model.js +0 -4
  556. package/models/support-ticket.model.js.map +0 -1
  557. package/models/user-group.model.d.ts +0 -20
  558. package/models/user-group.model.js +0 -4
  559. package/models/user-group.model.js.map +0 -1
  560. package/models/user-guide.model.js +0 -4
  561. package/models/user-guide.model.js.map +0 -1
  562. package/models/user.model.d.ts +0 -84
  563. package/models/user.model.js +0 -4
  564. package/models/user.model.js.map +0 -1
  565. package/private/images/ResolveIO.png +0 -0
  566. package/public_api.js +0 -111
  567. package/public_api.js.map +0 -1
  568. package/publications/ai-terminal.d.ts +0 -1
  569. package/publications/ai-terminal.js +0 -122
  570. package/publications/ai-terminal.js.map +0 -1
  571. package/publications/app-settings.d.ts +0 -2
  572. package/publications/app-settings.js +0 -28
  573. package/publications/app-settings.js.map +0 -1
  574. package/publications/app-status.d.ts +0 -2
  575. package/publications/app-status.js +0 -16
  576. package/publications/app-status.js.map +0 -1
  577. package/publications/cron-jobs.d.ts +0 -2
  578. package/publications/cron-jobs.js +0 -88
  579. package/publications/cron-jobs.js.map +0 -1
  580. package/publications/customer-notifications.d.ts +0 -2
  581. package/publications/customer-notifications.js +0 -161
  582. package/publications/customer-notifications.js.map +0 -1
  583. package/publications/files.d.ts +0 -2
  584. package/publications/files.js +0 -36
  585. package/publications/files.js.map +0 -1
  586. package/publications/flags-update.d.ts +0 -2
  587. package/publications/flags-update.js +0 -22
  588. package/publications/flags-update.js.map +0 -1
  589. package/publications/flags.d.ts +0 -2
  590. package/publications/flags.js +0 -22
  591. package/publications/flags.js.map +0 -1
  592. package/publications/logs.d.ts +0 -2
  593. package/publications/logs.js +0 -164
  594. package/publications/logs.js.map +0 -1
  595. package/publications/notifications.d.ts +0 -2
  596. package/publications/notifications.js +0 -16
  597. package/publications/notifications.js.map +0 -1
  598. package/publications/report-builder-dashboard-builders.d.ts +0 -2
  599. package/publications/report-builder-dashboard-builders.js +0 -42
  600. package/publications/report-builder-dashboard-builders.js.map +0 -1
  601. package/publications/report-builder-libraries.d.ts +0 -2
  602. package/publications/report-builder-libraries.js +0 -90
  603. package/publications/report-builder-libraries.js.map +0 -1
  604. package/publications/report-builder-reports.d.ts +0 -2
  605. package/publications/report-builder-reports.js +0 -50
  606. package/publications/report-builder-reports.js.map +0 -1
  607. package/publications/super-admin.d.ts +0 -2
  608. package/publications/super-admin.js +0 -16
  609. package/publications/super-admin.js.map +0 -1
  610. package/publications/user-groups.d.ts +0 -1
  611. package/publications/user-groups.js +0 -16
  612. package/publications/user-groups.js.map +0 -1
  613. package/publications/user-guides.d.ts +0 -1
  614. package/publications/user-guides.js +0 -16
  615. package/publications/user-guides.js.map +0 -1
  616. package/resolveio-server-app.d.ts +0 -70
  617. package/resolveio-server-app.js +0 -801
  618. package/resolveio-server-app.js.map +0 -1
  619. package/server-app.d.ts +0 -228
  620. package/server-app.js +0 -3566
  621. package/server-app.js.map +0 -1
  622. package/services/codex-client.d.ts +0 -118
  623. package/services/codex-client.js +0 -1475
  624. package/services/codex-client.js.map +0 -1
  625. package/services/openai-client.d.ts +0 -46
  626. package/services/openai-client.js +0 -318
  627. package/services/openai-client.js.map +0 -1
  628. package/types/error-report.d.ts +0 -25
  629. package/types/error-report.js +0 -4
  630. package/types/error-report.js.map +0 -1
  631. package/types/slow-query-report.d.ts +0 -27
  632. package/types/slow-query-report.js +0 -6
  633. package/types/slow-query-report.js.map +0 -1
  634. package/util/common.d.ts +0 -31
  635. package/util/common.js +0 -683
  636. package/util/common.js.map +0 -1
  637. package/util/customer-portal-password.d.ts +0 -13
  638. package/util/customer-portal-password.js +0 -209
  639. package/util/customer-portal-password.js.map +0 -1
  640. package/util/error-reporter.d.ts +0 -52
  641. package/util/error-reporter.js +0 -326
  642. package/util/error-reporter.js.map +0 -1
  643. package/util/error-tracking.d.ts +0 -13
  644. package/util/error-tracking.js +0 -120
  645. package/util/error-tracking.js.map +0 -1
  646. package/util/report-builder-unwinds.d.ts +0 -15
  647. package/util/report-builder-unwinds.js +0 -156
  648. package/util/report-builder-unwinds.js.map +0 -1
  649. package/util/schema-report-builder.d.ts +0 -6
  650. package/util/schema-report-builder.js +0 -481
  651. package/util/schema-report-builder.js.map +0 -1
  652. package/util/slow-query-reporter.d.ts +0 -28
  653. package/util/slow-query-reporter.js +0 -226
  654. package/util/slow-query-reporter.js.map +0 -1
  655. package/util/subscription-dependency-context.d.ts +0 -34
  656. package/util/subscription-dependency-context.js +0 -1283
  657. package/util/subscription-dependency-context.js.map +0 -1
  658. package/util/tokenizer.d.ts +0 -5
  659. package/util/tokenizer.js +0 -41
  660. package/util/tokenizer.js.map +0 -1
  661. package/workers/codex-runner.worker.d.ts +0 -1
  662. package/workers/codex-runner.worker.js +0 -192
  663. package/workers/codex-runner.worker.js.map +0 -1
  664. /package/{private → src/private}/email-templates/enrollment.html +0 -0
  665. /package/{private → src/private}/email-templates/forgot-password.html +0 -0
  666. /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
  667. /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
  668. /package/{private → src/private}/email-templates/support-ticket.html +0 -0
  669. /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
+ }