@resolveio/server-lib 22.3.49 → 22.3.50

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