@resolveio/server-lib 22.3.12 → 22.3.14

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