@resolveio/server-lib 22.2.32 → 22.2.34

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