@resolveio/server-lib 22.3.221 → 22.3.222
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.
- package/ai/assistant-core-heuristics.d.ts +11 -0
- package/ai/assistant-core-heuristics.js +356 -0
- package/ai/assistant-core-heuristics.js.map +1 -0
- package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +3 -0
- package/ai/resolveio-platform-intelligence-memory-corpus.js +214 -0
- package/ai/resolveio-platform-intelligence-memory-corpus.js.map +1 -0
- package/ai/resolveio-platform-intelligence-memory.d.ts +20 -0
- package/ai/resolveio-platform-intelligence-memory.js +341 -0
- package/ai/resolveio-platform-intelligence-memory.js.map +1 -0
- package/{src/ai/resolveio-platform-intelligence-types.ts → ai/resolveio-platform-intelligence-types.d.ts} +15 -20
- package/ai/resolveio-platform-intelligence-types.js +4 -0
- package/ai/resolveio-platform-intelligence-types.js.map +1 -0
- package/ai/resolveio-platform-intelligence.d.ts +6 -0
- package/ai/resolveio-platform-intelligence.js +463 -0
- package/ai/resolveio-platform-intelligence.js.map +1 -0
- package/client-server-app.d.ts +1 -0
- package/client-server-app.js +68 -0
- package/client-server-app.js.map +1 -0
- package/collections/ai-run.collection.d.ts +3 -0
- package/collections/ai-run.collection.js +170 -0
- package/collections/ai-run.collection.js.map +1 -0
- package/collections/ai-terminal-conversation.collection.d.ts +2 -0
- package/collections/ai-terminal-conversation.collection.js +140 -0
- package/collections/ai-terminal-conversation.collection.js.map +1 -0
- package/collections/ai-terminal-issue-report.collection.d.ts +2 -0
- package/collections/ai-terminal-issue-report.collection.js +148 -0
- package/collections/ai-terminal-issue-report.collection.js.map +1 -0
- package/collections/ai-terminal-message.collection.d.ts +2 -0
- package/collections/ai-terminal-message.collection.js +121 -0
- package/collections/ai-terminal-message.collection.js.map +1 -0
- package/collections/app-setting.collection.d.ts +3 -0
- package/collections/app-setting.collection.js +103 -0
- package/collections/app-setting.collection.js.map +1 -0
- package/collections/app-status.collection.d.ts +3 -0
- package/collections/app-status.collection.js +57 -0
- package/collections/app-status.collection.js.map +1 -0
- package/collections/communication-metric.collection.d.ts +2 -0
- package/collections/communication-metric.collection.js +133 -0
- package/collections/communication-metric.collection.js.map +1 -0
- package/collections/counter.collection.d.ts +3 -0
- package/collections/counter.collection.js +56 -0
- package/collections/counter.collection.js.map +1 -0
- package/collections/cron-job-history.collection.d.ts +3 -0
- package/collections/cron-job-history.collection.js +137 -0
- package/collections/cron-job-history.collection.js.map +1 -0
- package/collections/cron-job.collection.d.ts +3 -0
- package/collections/cron-job.collection.js +92 -0
- package/collections/cron-job.collection.js.map +1 -0
- package/collections/customer-notification.collection.d.ts +3 -0
- package/collections/customer-notification.collection.js +130 -0
- package/collections/customer-notification.collection.js.map +1 -0
- package/collections/customer-portal-password.collection.d.ts +3 -0
- package/collections/customer-portal-password.collection.js +75 -0
- package/collections/customer-portal-password.collection.js.map +1 -0
- package/collections/email-history.collection.d.ts +3 -0
- package/collections/email-history.collection.js +134 -0
- package/collections/email-history.collection.js.map +1 -0
- package/collections/email-verified.collection.d.ts +3 -0
- package/collections/email-verified.collection.js +62 -0
- package/collections/email-verified.collection.js.map +1 -0
- package/collections/file.collection.d.ts +3 -0
- package/collections/file.collection.js +74 -0
- package/collections/file.collection.js.map +1 -0
- package/collections/flag-update.collection.d.ts +3 -0
- package/collections/flag-update.collection.js +57 -0
- package/collections/flag-update.collection.js.map +1 -0
- package/collections/flag.collection.d.ts +3 -0
- package/collections/flag.collection.js +57 -0
- package/collections/flag.collection.js.map +1 -0
- package/collections/log-method-latency.collection.d.ts +3 -0
- package/collections/log-method-latency.collection.js +77 -0
- package/collections/log-method-latency.collection.js.map +1 -0
- package/collections/log-subscription.collection.d.ts +3 -0
- package/collections/log-subscription.collection.js +80 -0
- package/collections/log-subscription.collection.js.map +1 -0
- package/collections/log.collection.d.ts +3 -0
- package/collections/log.collection.js +93 -0
- package/collections/log.collection.js.map +1 -0
- package/collections/logged-in-users.collection.d.ts +3 -0
- package/collections/logged-in-users.collection.js +67 -0
- package/collections/logged-in-users.collection.js.map +1 -0
- package/collections/monitor-cpu.collection.d.ts +3 -0
- package/collections/monitor-cpu.collection.js +65 -0
- package/collections/monitor-cpu.collection.js.map +1 -0
- package/collections/monitor-function.collection.d.ts +3 -0
- package/collections/monitor-function.collection.js +74 -0
- package/collections/monitor-function.collection.js.map +1 -0
- package/collections/monitor-memory.collection.d.ts +3 -0
- package/collections/monitor-memory.collection.js +77 -0
- package/collections/monitor-memory.collection.js.map +1 -0
- package/collections/monitor-mongo.collection.d.ts +3 -0
- package/collections/monitor-mongo.collection.js +71 -0
- package/collections/monitor-mongo.collection.js.map +1 -0
- package/collections/notification.collection.d.ts +3 -0
- package/collections/notification.collection.js +57 -0
- package/collections/notification.collection.js.map +1 -0
- package/collections/openai-usage-ledger.collection.d.ts +2 -0
- package/collections/openai-usage-ledger.collection.js +188 -0
- package/collections/openai-usage-ledger.collection.js.map +1 -0
- package/collections/report-builder-dashboard-builder.collection.d.ts +3 -0
- package/collections/report-builder-dashboard-builder.collection.js +109 -0
- package/collections/report-builder-dashboard-builder.collection.js.map +1 -0
- package/collections/report-builder-library.collection.d.ts +3 -0
- package/collections/report-builder-library.collection.js +87 -0
- package/collections/report-builder-library.collection.js.map +1 -0
- package/collections/report-builder-report.collection.d.ts +4 -0
- package/collections/report-builder-report.collection.js +184 -0
- package/collections/report-builder-report.collection.js.map +1 -0
- package/collections/user-group.collection.d.ts +4 -0
- package/collections/user-group.collection.js +89 -0
- package/collections/user-group.collection.js.map +1 -0
- package/collections/user-guide.collection.d.ts +3 -0
- package/collections/user-guide.collection.js +57 -0
- package/collections/user-guide.collection.js.map +1 -0
- package/collections/user.collection.d.ts +4 -0
- package/collections/user.collection.js +180 -0
- package/collections/user.collection.js.map +1 -0
- package/cron/cron.d.ts +14 -0
- package/cron/cron.js +216 -0
- package/cron/cron.js.map +1 -0
- package/fixtures/cron-jobs.d.ts +1 -0
- package/fixtures/cron-jobs.js +150 -0
- package/fixtures/cron-jobs.js.map +1 -0
- package/fixtures/init.d.ts +1 -0
- package/fixtures/init.js +91 -0
- package/fixtures/init.js.map +1 -0
- package/http/auth.d.ts +2 -0
- package/http/auth.js +951 -0
- package/http/auth.js.map +1 -0
- package/http/health.d.ts +1 -0
- package/http/health.js +11 -0
- package/http/health.js.map +1 -0
- package/http/home.d.ts +1 -0
- package/http/home.js +134 -0
- package/http/home.js.map +1 -0
- package/http/slow-query-publication.d.ts +2 -0
- package/http/slow-query-publication.js +99 -0
- package/http/slow-query-publication.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +19 -0
- package/index.js.map +1 -0
- package/managers/ai-assistant-codex-manager.manager.d.ts +67 -0
- package/managers/ai-assistant-codex-manager.manager.js +1113 -0
- package/managers/ai-assistant-codex-manager.manager.js.map +1 -0
- package/managers/ai-run-evidence.manager.d.ts +36 -0
- package/managers/ai-run-evidence.manager.js +377 -0
- package/managers/ai-run-evidence.manager.js.map +1 -0
- package/managers/communication-metric.manager.d.ts +16 -0
- package/managers/communication-metric.manager.js +134 -0
- package/managers/communication-metric.manager.js.map +1 -0
- package/managers/cron.manager.d.ts +20 -0
- package/managers/cron.manager.js +534 -0
- package/managers/cron.manager.js.map +1 -0
- package/managers/customer-notification-content.manager.d.ts +55 -0
- package/managers/customer-notification-content.manager.js +158 -0
- package/managers/customer-notification-content.manager.js.map +1 -0
- package/managers/diagnostic-manager-bootstrap.d.ts +9 -0
- package/managers/diagnostic-manager-bootstrap.js +260 -0
- package/managers/diagnostic-manager-bootstrap.js.map +1 -0
- package/managers/error-auto-fix.manager.d.ts +149 -0
- package/managers/error-auto-fix.manager.js +3064 -0
- package/managers/error-auto-fix.manager.js.map +1 -0
- package/managers/local-log.manager.d.ts +18 -0
- package/managers/local-log.manager.js +88 -0
- package/managers/local-log.manager.js.map +1 -0
- package/managers/method.manager.d.ts +84 -0
- package/managers/method.manager.js +1964 -0
- package/managers/method.manager.js.map +1 -0
- package/managers/mongo.manager.d.ts +224 -0
- package/managers/mongo.manager.js +5000 -0
- package/managers/mongo.manager.js.map +1 -0
- package/managers/monitor.manager.d.ts +70 -0
- package/managers/monitor.manager.js +550 -0
- package/managers/monitor.manager.js.map +1 -0
- package/managers/openai-usage-ledger.manager.d.ts +30 -0
- package/managers/openai-usage-ledger.manager.js +142 -0
- package/managers/openai-usage-ledger.manager.js.map +1 -0
- package/managers/slow-query-verifier.manager.d.ts +144 -0
- package/managers/slow-query-verifier.manager.js +3857 -0
- package/managers/slow-query-verifier.manager.js.map +1 -0
- package/managers/slow-query.manager.d.ts +28 -0
- package/managers/slow-query.manager.js +468 -0
- package/managers/slow-query.manager.js.map +1 -0
- package/managers/subscription.manager.d.ts +169 -0
- package/managers/subscription.manager.js +3434 -0
- package/managers/subscription.manager.js.map +1 -0
- package/managers/websocket.manager.d.ts +73 -0
- package/managers/websocket.manager.js +673 -0
- package/managers/websocket.manager.js.map +1 -0
- package/managers/worker-dispatcher.manager.d.ts +120 -0
- package/managers/worker-dispatcher.manager.js +1266 -0
- package/managers/worker-dispatcher.manager.js.map +1 -0
- package/managers/worker-server.manager.d.ts +35 -0
- package/managers/worker-server.manager.js +582 -0
- package/managers/worker-server.manager.js.map +1 -0
- package/methods/accounts.d.ts +2 -0
- package/methods/accounts.js +624 -0
- package/methods/accounts.js.map +1 -0
- package/methods/ai-terminal.d.ts +458 -0
- package/methods/ai-terminal.js +27991 -0
- package/methods/ai-terminal.js.map +1 -0
- package/methods/app-settings.d.ts +2 -0
- package/methods/app-settings.js +169 -0
- package/methods/app-settings.js.map +1 -0
- package/methods/aws.d.ts +2 -0
- package/methods/aws.js +877 -0
- package/methods/aws.js.map +1 -0
- package/methods/collections.d.ts +2 -0
- package/methods/collections.js +719 -0
- package/methods/collections.js.map +1 -0
- package/methods/counters.d.ts +2 -0
- package/methods/counters.js +113 -0
- package/methods/counters.js.map +1 -0
- package/methods/cron-jobs.d.ts +2 -0
- package/methods/cron-jobs.js +2475 -0
- package/methods/cron-jobs.js.map +1 -0
- package/methods/customer-notifications.d.ts +2 -0
- package/methods/customer-notifications.js +528 -0
- package/methods/customer-notifications.js.map +1 -0
- package/methods/diagnostics.d.ts +2 -0
- package/methods/diagnostics.js +703 -0
- package/methods/diagnostics.js.map +1 -0
- package/methods/flag-updates.d.ts +2 -0
- package/methods/flag-updates.js +8 -0
- package/methods/flag-updates.js.map +1 -0
- package/methods/flags.d.ts +2 -0
- package/methods/flags.js +8 -0
- package/methods/flags.js.map +1 -0
- package/methods/logs.d.ts +2 -0
- package/methods/logs.js +751 -0
- package/methods/logs.js.map +1 -0
- package/methods/mongo-explorer.d.ts +2 -0
- package/methods/mongo-explorer.js +1808 -0
- package/methods/mongo-explorer.js.map +1 -0
- package/methods/monitor.d.ts +2 -0
- package/methods/monitor.js +543 -0
- package/methods/monitor.js.map +1 -0
- package/methods/pdf.d.ts +2 -0
- package/methods/pdf.js +1216 -0
- package/methods/pdf.js.map +1 -0
- package/methods/publications.d.ts +1 -0
- package/methods/publications.js +183 -0
- package/methods/publications.js.map +1 -0
- package/methods/report-builder.d.ts +2 -0
- package/methods/report-builder.js +3094 -0
- package/methods/report-builder.js.map +1 -0
- package/methods/support.d.ts +2 -0
- package/methods/support.js +430 -0
- package/methods/support.js.map +1 -0
- package/models/ai-run.model.d.ts +19 -0
- package/models/ai-run.model.js +4 -0
- package/models/ai-run.model.js.map +1 -0
- package/models/ai-terminal-conversation.model.d.ts +17 -0
- package/models/ai-terminal-conversation.model.js +4 -0
- package/models/ai-terminal-conversation.model.js.map +1 -0
- package/models/ai-terminal-issue-report.model.d.ts +19 -0
- package/models/ai-terminal-issue-report.model.js +4 -0
- package/models/ai-terminal-issue-report.model.js.map +1 -0
- package/models/ai-terminal-message.model.d.ts +22 -0
- package/models/ai-terminal-message.model.js +4 -0
- package/models/ai-terminal-message.model.js.map +1 -0
- package/models/app-setting.model.d.ts +16 -0
- package/models/app-setting.model.js +4 -0
- package/models/app-setting.model.js.map +1 -0
- package/{src/models/app-status.model.ts → models/app-status.model.d.ts} +2 -3
- package/models/app-status.model.js +4 -0
- package/models/app-status.model.js.map +1 -0
- package/{src/models/billing-logged-in-users.model.ts → models/billing-logged-in-users.model.d.ts} +4 -5
- package/models/billing-logged-in-users.model.js +4 -0
- package/models/billing-logged-in-users.model.js.map +1 -0
- package/models/collection-document.model.d.ts +21 -0
- package/models/collection-document.model.js +4 -0
- package/models/collection-document.model.js.map +1 -0
- package/models/communication-metric.model.d.ts +20 -0
- package/models/communication-metric.model.js +4 -0
- package/models/communication-metric.model.js.map +1 -0
- package/{src/models/counter.model.ts → models/counter.model.d.ts} +3 -4
- package/models/counter.model.js +4 -0
- package/models/counter.model.js.map +1 -0
- package/models/cron-job-history.model.d.ts +15 -0
- package/models/cron-job-history.model.js +4 -0
- package/models/cron-job-history.model.js.map +1 -0
- package/models/cron-job.model.d.ts +14 -0
- package/models/cron-job.model.js +4 -0
- package/models/cron-job.model.js.map +1 -0
- package/models/customer-notification.model.d.ts +26 -0
- package/models/customer-notification.model.js +4 -0
- package/models/customer-notification.model.js.map +1 -0
- package/models/customer-portal-password.model.d.ts +11 -0
- package/models/customer-portal-password.model.js +4 -0
- package/models/customer-portal-password.model.js.map +1 -0
- package/models/dialog.model.d.ts +23 -0
- package/models/dialog.model.js +4 -0
- package/models/dialog.model.js.map +1 -0
- package/models/email-history.model.d.ts +32 -0
- package/{src/models/email-history.model.ts → models/email-history.model.js} +4 -36
- package/models/email-history.model.js.map +1 -0
- package/{src/models/email-verified.model.ts → models/email-verified.model.d.ts} +5 -6
- package/models/email-verified.model.js +4 -0
- package/models/email-verified.model.js.map +1 -0
- package/{src/models/file.model.ts → models/file.model.d.ts} +7 -8
- package/models/file.model.js +4 -0
- package/models/file.model.js.map +1 -0
- package/{src/models/flag-update.model.ts → models/flag-update.model.d.ts} +3 -4
- package/models/flag-update.model.js +4 -0
- package/models/flag-update.model.js.map +1 -0
- package/{src/models/flag.model.ts → models/flag.model.d.ts} +3 -4
- package/models/flag.model.js +4 -0
- package/models/flag.model.js.map +1 -0
- package/models/log-method-latency.model.d.ts +10 -0
- package/models/log-method-latency.model.js +4 -0
- package/models/log-method-latency.model.js.map +1 -0
- package/{src/models/log-subscription.model.ts → models/log-subscription.model.d.ts} +9 -11
- package/models/log-subscription.model.js +4 -0
- package/models/log-subscription.model.js.map +1 -0
- package/models/log.model.d.ts +17 -0
- package/models/log.model.js +4 -0
- package/models/log.model.js.map +1 -0
- package/{src/models/logged-in-users.model.ts → models/logged-in-users.model.d.ts} +5 -6
- package/models/logged-in-users.model.js +4 -0
- package/models/logged-in-users.model.js.map +1 -0
- package/{src/models/method-response.model.ts → models/method-response.model.d.ts} +6 -7
- package/models/method-response.model.js +4 -0
- package/models/method-response.model.js.map +1 -0
- package/models/method.model.d.ts +26 -0
- package/models/method.model.js +4 -0
- package/models/method.model.js.map +1 -0
- package/{src/models/monitor-cpu.model.ts → models/monitor-cpu.model.d.ts} +7 -9
- package/models/monitor-cpu.model.js +4 -0
- package/models/monitor-cpu.model.js.map +1 -0
- package/models/monitor-function.model.d.ts +14 -0
- package/models/monitor-function.model.js +4 -0
- package/models/monitor-function.model.js.map +1 -0
- package/models/monitor-memory.model.d.ts +15 -0
- package/models/monitor-memory.model.js +4 -0
- package/models/monitor-memory.model.js.map +1 -0
- package/models/monitor-mongo.model.d.ts +13 -0
- package/models/monitor-mongo.model.js +4 -0
- package/models/monitor-mongo.model.js.map +1 -0
- package/{src/models/notification.model.ts → models/notification.model.d.ts} +4 -6
- package/models/notification.model.js +4 -0
- package/models/notification.model.js.map +1 -0
- package/models/openai-usage-ledger.model.d.ts +30 -0
- package/models/openai-usage-ledger.model.js +4 -0
- package/models/openai-usage-ledger.model.js.map +1 -0
- package/models/pagination.model.d.ts +11 -0
- package/models/pagination.model.js +28 -0
- package/models/pagination.model.js.map +1 -0
- package/models/permission.model.d.ts +12 -0
- package/models/permission.model.js +4 -0
- package/models/permission.model.js.map +1 -0
- package/models/report-builder-dashboard-builder.model.d.ts +25 -0
- package/models/report-builder-dashboard-builder.model.js +4 -0
- package/models/report-builder-dashboard-builder.model.js.map +1 -0
- package/models/report-builder-library.model.d.ts +17 -0
- package/models/report-builder-library.model.js +4 -0
- package/models/report-builder-library.model.js.map +1 -0
- package/models/report-builder-report.model.d.ts +121 -0
- package/models/report-builder-report.model.js +4 -0
- package/models/report-builder-report.model.js.map +1 -0
- package/models/report-builder.model.d.ts +61 -0
- package/models/report-builder.model.js +4 -0
- package/models/report-builder.model.js.map +1 -0
- package/models/select-data-label.model.d.ts +9 -0
- package/models/select-data-label.model.js +4 -0
- package/models/select-data-label.model.js.map +1 -0
- package/models/server-message.model.d.ts +32 -0
- package/models/server-message.model.js +4 -0
- package/models/server-message.model.js.map +1 -0
- package/models/slow-query-report.model.d.ts +23 -0
- package/models/slow-query-report.model.js +4 -0
- package/models/slow-query-report.model.js.map +1 -0
- package/models/subscription.model.d.ts +31 -0
- package/models/subscription.model.js +4 -0
- package/models/subscription.model.js.map +1 -0
- package/models/support-ticket.model.d.ts +87 -0
- package/models/support-ticket.model.js +4 -0
- package/models/support-ticket.model.js.map +1 -0
- package/models/user-group.model.d.ts +20 -0
- package/models/user-group.model.js +4 -0
- package/models/user-group.model.js.map +1 -0
- package/{src/models/user-guide.model.ts → models/user-guide.model.d.ts} +4 -5
- package/models/user-guide.model.js +4 -0
- package/models/user-guide.model.js.map +1 -0
- package/models/user.model.d.ts +84 -0
- package/models/user.model.js +4 -0
- package/models/user.model.js.map +1 -0
- package/package.json +1 -1
- package/private/images/ResolveIO.png +0 -0
- package/public_api.js +127 -0
- package/public_api.js.map +1 -0
- package/publications/ai-terminal.d.ts +1 -0
- package/publications/ai-terminal.js +122 -0
- package/publications/ai-terminal.js.map +1 -0
- package/publications/app-settings.d.ts +2 -0
- package/publications/app-settings.js +28 -0
- package/publications/app-settings.js.map +1 -0
- package/publications/app-status.d.ts +2 -0
- package/publications/app-status.js +16 -0
- package/publications/app-status.js.map +1 -0
- package/publications/cron-jobs.d.ts +2 -0
- package/publications/cron-jobs.js +88 -0
- package/publications/cron-jobs.js.map +1 -0
- package/publications/customer-notifications.d.ts +2 -0
- package/publications/customer-notifications.js +161 -0
- package/publications/customer-notifications.js.map +1 -0
- package/publications/files.d.ts +2 -0
- package/publications/files.js +36 -0
- package/publications/files.js.map +1 -0
- package/publications/flags-update.d.ts +2 -0
- package/publications/flags-update.js +22 -0
- package/publications/flags-update.js.map +1 -0
- package/publications/flags.d.ts +2 -0
- package/publications/flags.js +22 -0
- package/publications/flags.js.map +1 -0
- package/publications/logs.d.ts +2 -0
- package/publications/logs.js +164 -0
- package/publications/logs.js.map +1 -0
- package/publications/notifications.d.ts +2 -0
- package/publications/notifications.js +16 -0
- package/publications/notifications.js.map +1 -0
- package/publications/report-builder-dashboard-builders.d.ts +2 -0
- package/publications/report-builder-dashboard-builders.js +42 -0
- package/publications/report-builder-dashboard-builders.js.map +1 -0
- package/publications/report-builder-libraries.d.ts +2 -0
- package/publications/report-builder-libraries.js +90 -0
- package/publications/report-builder-libraries.js.map +1 -0
- package/publications/report-builder-reports.d.ts +2 -0
- package/publications/report-builder-reports.js +50 -0
- package/publications/report-builder-reports.js.map +1 -0
- package/publications/super-admin.d.ts +2 -0
- package/publications/super-admin.js +16 -0
- package/publications/super-admin.js.map +1 -0
- package/publications/user-groups.d.ts +1 -0
- package/publications/user-groups.js +16 -0
- package/publications/user-groups.js.map +1 -0
- package/publications/user-guides.d.ts +1 -0
- package/publications/user-guides.js +16 -0
- package/publications/user-guides.js.map +1 -0
- package/resolveio-server-app.d.ts +70 -0
- package/resolveio-server-app.js +801 -0
- package/resolveio-server-app.js.map +1 -0
- package/server-app.d.ts +228 -0
- package/server-app.js +3566 -0
- package/server-app.js.map +1 -0
- package/services/codex-client.d.ts +128 -0
- package/services/codex-client.js +1629 -0
- package/services/codex-client.js.map +1 -0
- package/services/openai-client.d.ts +46 -0
- package/services/openai-client.js +318 -0
- package/services/openai-client.js.map +1 -0
- package/types/error-report.d.ts +25 -0
- package/types/error-report.js +4 -0
- package/types/error-report.js.map +1 -0
- package/types/slow-query-report.d.ts +27 -0
- package/types/slow-query-report.js +6 -0
- package/types/slow-query-report.js.map +1 -0
- package/util/ai-qa-policy.d.ts +124 -0
- package/util/ai-qa-policy.js +736 -0
- package/util/ai-qa-policy.js.map +1 -0
- package/util/ai-run-evidence-adapters.d.ts +109 -0
- package/util/ai-run-evidence-adapters.js +7234 -0
- package/util/ai-run-evidence-adapters.js.map +1 -0
- package/util/ai-run-evidence-dashboard.d.ts +88 -0
- package/util/ai-run-evidence-dashboard.js +343 -0
- package/util/ai-run-evidence-dashboard.js.map +1 -0
- package/util/ai-run-evidence-eval.d.ts +86 -0
- package/util/ai-run-evidence-eval.js +1018 -0
- package/util/ai-run-evidence-eval.js.map +1 -0
- package/util/ai-run-evidence.d.ts +244 -0
- package/util/ai-run-evidence.js +1096 -0
- package/util/ai-run-evidence.js.map +1 -0
- package/util/ai-runner-artifacts.d.ts +82 -0
- package/util/ai-runner-artifacts.js +713 -0
- package/util/ai-runner-artifacts.js.map +1 -0
- package/util/ai-runner-manager-autopilot.d.ts +210 -0
- package/util/ai-runner-manager-autopilot.js +642 -0
- package/util/ai-runner-manager-autopilot.js.map +1 -0
- package/util/ai-runner-manager-policy.d.ts +807 -0
- package/util/ai-runner-manager-policy.js +3501 -0
- package/util/ai-runner-manager-policy.js.map +1 -0
- package/util/ai-runner-qa-auth.d.ts +5 -0
- package/util/ai-runner-qa-auth.js +839 -0
- package/util/ai-runner-qa-auth.js.map +1 -0
- package/util/ai-runner-qa-tools.d.ts +26 -0
- package/util/ai-runner-qa-tools.js +3520 -0
- package/util/ai-runner-qa-tools.js.map +1 -0
- package/util/aicoder-runner-v6.d.ts +426 -0
- package/util/aicoder-runner-v6.js +2464 -0
- package/util/aicoder-runner-v6.js.map +1 -0
- package/util/common.d.ts +31 -0
- package/util/common.js +683 -0
- package/util/common.js.map +1 -0
- package/util/customer-portal-password.d.ts +13 -0
- package/util/customer-portal-password.js +209 -0
- package/util/customer-portal-password.js.map +1 -0
- package/util/error-reporter.d.ts +52 -0
- package/util/error-reporter.js +326 -0
- package/util/error-reporter.js.map +1 -0
- package/util/error-tracking.d.ts +13 -0
- package/util/error-tracking.js +120 -0
- package/util/error-tracking.js.map +1 -0
- package/util/openai-usage-cost.d.ts +6 -0
- package/util/openai-usage-cost.js +103 -0
- package/util/openai-usage-cost.js.map +1 -0
- package/util/report-builder-unwinds.d.ts +15 -0
- package/util/report-builder-unwinds.js +156 -0
- package/util/report-builder-unwinds.js.map +1 -0
- package/util/runner-process-janitor.d.ts +27 -0
- package/util/runner-process-janitor.js +208 -0
- package/util/runner-process-janitor.js.map +1 -0
- package/util/schema-report-builder.d.ts +6 -0
- package/util/schema-report-builder.js +481 -0
- package/util/schema-report-builder.js.map +1 -0
- package/util/slow-query-reporter.d.ts +28 -0
- package/util/slow-query-reporter.js +226 -0
- package/util/slow-query-reporter.js.map +1 -0
- package/util/subscription-dependency-context.d.ts +34 -0
- package/util/subscription-dependency-context.js +1283 -0
- package/util/subscription-dependency-context.js.map +1 -0
- package/util/support-runner-v5.d.ts +1426 -0
- package/util/support-runner-v5.js +7643 -0
- package/util/support-runner-v5.js.map +1 -0
- package/util/tokenizer.d.ts +5 -0
- package/util/tokenizer.js +41 -0
- package/util/tokenizer.js.map +1 -0
- package/workers/codex-runner.worker.d.ts +1 -0
- package/workers/codex-runner.worker.js +192 -0
- package/workers/codex-runner.worker.js.map +1 -0
- package/.nodemon.json +0 -5
- package/.vscode/settings.json +0 -21
- package/AGENTS.md +0 -195
- package/README.md +0 -22
- package/build_package.sh +0 -5
- package/compileDTS.pl +0 -64
- package/docs/ai-assistant-nightly-eval.md +0 -65
- package/docs/ai-assistant-preflight-checklist.md +0 -23
- package/docs/ai-assistant-report-builder-bridge-playbook.md +0 -115
- package/eslint-plugin-custom/index.js +0 -7
- package/eslint-plugin-custom/rules/no-filter-zero-index.js +0 -44
- package/eslint.config.js +0 -103
- package/gulpfile.js +0 -216
- package/methodAndPublicationListGenerator.py +0 -375
- package/mongodbensurers.js +0 -2
- package/mongostop.js +0 -3
- package/scripts/cleanup-bypassed-callmethod-logs.js +0 -616
- package/settings.development.json +0 -25
- package/settings.development.redacted.json +0 -25
- package/src/.env +0 -12
- package/src/ai/assistant-core-heuristics.ts +0 -379
- package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +0 -185
- package/src/ai/resolveio-platform-intelligence-memory.ts +0 -325
- package/src/ai/resolveio-platform-intelligence.ts +0 -462
- package/src/client-server-app.ts +0 -12
- package/src/collections/ai-run.collection.ts +0 -117
- package/src/collections/ai-terminal-conversation.collection.ts +0 -91
- package/src/collections/ai-terminal-issue-report.collection.ts +0 -99
- package/src/collections/ai-terminal-message.collection.ts +0 -77
- package/src/collections/app-setting.collection.ts +0 -104
- package/src/collections/app-status.collection.ts +0 -58
- package/src/collections/communication-metric.collection.ts +0 -84
- package/src/collections/counter.collection.ts +0 -56
- package/src/collections/cron-job-history.collection.ts +0 -94
- package/src/collections/cron-job.collection.ts +0 -92
- package/src/collections/customer-notification.collection.ts +0 -131
- package/src/collections/customer-portal-password.collection.ts +0 -76
- package/src/collections/email-history.collection.ts +0 -134
- package/src/collections/email-verified.collection.ts +0 -62
- package/src/collections/file.collection.ts +0 -74
- package/src/collections/flag-update.collection.ts +0 -57
- package/src/collections/flag.collection.ts +0 -57
- package/src/collections/log-method-latency.collection.ts +0 -77
- package/src/collections/log-subscription.collection.ts +0 -80
- package/src/collections/log.collection.ts +0 -93
- package/src/collections/logged-in-users.collection.ts +0 -67
- package/src/collections/monitor-cpu.collection.ts +0 -65
- package/src/collections/monitor-function.collection.ts +0 -74
- package/src/collections/monitor-memory.collection.ts +0 -77
- package/src/collections/monitor-mongo.collection.ts +0 -71
- package/src/collections/notification.collection.ts +0 -57
- package/src/collections/openai-usage-ledger.collection.ts +0 -131
- package/src/collections/report-builder-dashboard-builder.collection.ts +0 -109
- package/src/collections/report-builder-library.collection.ts +0 -89
- package/src/collections/report-builder-report.collection.ts +0 -184
- package/src/collections/user-group.collection.ts +0 -89
- package/src/collections/user-guide.collection.ts +0 -57
- package/src/collections/user.collection.ts +0 -181
- package/src/cron/cron.ts +0 -117
- package/src/fixtures/cron-jobs.ts +0 -95
- package/src/fixtures/init.ts +0 -35
- package/src/http/auth.ts +0 -818
- package/src/http/health.ts +0 -7
- package/src/http/home.ts +0 -90
- package/src/http/slow-query-publication.ts +0 -49
- package/src/index.ts +0 -1
- package/src/managers/ai-assistant-codex-manager.manager.ts +0 -1131
- package/src/managers/ai-run-evidence.manager.ts +0 -264
- package/src/managers/communication-metric.manager.ts +0 -82
- package/src/managers/cron.manager.ts +0 -333
- package/src/managers/customer-notification-content.manager.ts +0 -236
- package/src/managers/diagnostic-manager-bootstrap.ts +0 -165
- package/src/managers/error-auto-fix.manager.ts +0 -2767
- package/src/managers/local-log.manager.ts +0 -113
- package/src/managers/method.manager.ts +0 -1857
- package/src/managers/mongo.manager.ts +0 -4575
- package/src/managers/monitor.manager.ts +0 -507
- package/src/managers/openai-usage-ledger.manager.ts +0 -112
- package/src/managers/slow-query-verifier.manager.ts +0 -3590
- package/src/managers/slow-query.manager.ts +0 -519
- package/src/managers/subscription.manager.ts +0 -3128
- package/src/managers/websocket.manager.ts +0 -746
- package/src/managers/worker-dispatcher.manager.ts +0 -1360
- package/src/managers/worker-server.manager.ts +0 -536
- package/src/methods/accounts.ts +0 -532
- package/src/methods/ai-terminal.ts +0 -29070
- package/src/methods/app-settings.ts +0 -114
- package/src/methods/aws.ts +0 -649
- package/src/methods/collections.ts +0 -641
- package/src/methods/counters.ts +0 -69
- package/src/methods/cron-jobs.ts +0 -2614
- package/src/methods/customer-notifications.ts +0 -458
- package/src/methods/diagnostics.ts +0 -616
- package/src/methods/flag-updates.ts +0 -7
- package/src/methods/flags.ts +0 -7
- package/src/methods/logs.ts +0 -657
- package/src/methods/mongo-explorer.ts +0 -1880
- package/src/methods/monitor.ts +0 -540
- package/src/methods/pdf.ts +0 -1236
- package/src/methods/publications.ts +0 -129
- package/src/methods/report-builder.ts +0 -3300
- package/src/methods/support.ts +0 -335
- package/src/models/ai-run.model.ts +0 -27
- package/src/models/ai-terminal-conversation.model.ts +0 -19
- package/src/models/ai-terminal-issue-report.model.ts +0 -21
- package/src/models/ai-terminal-message.model.ts +0 -24
- package/src/models/app-setting.model.ts +0 -17
- package/src/models/collection-document.model.ts +0 -24
- package/src/models/communication-metric.model.ts +0 -23
- package/src/models/cron-job-history.model.ts +0 -16
- package/src/models/cron-job.model.ts +0 -15
- package/src/models/customer-notification.model.ts +0 -28
- package/src/models/customer-portal-password.model.ts +0 -12
- package/src/models/dialog.model.ts +0 -25
- package/src/models/log-method-latency.model.ts +0 -11
- package/src/models/log.model.ts +0 -19
- package/src/models/method.model.ts +0 -25
- package/src/models/monitor-function.model.ts +0 -16
- package/src/models/monitor-memory.model.ts +0 -17
- package/src/models/monitor-mongo.model.ts +0 -15
- package/src/models/openai-usage-ledger.model.ts +0 -56
- package/src/models/pagination.model.ts +0 -35
- package/src/models/permission.model.ts +0 -14
- package/src/models/report-builder-dashboard-builder.model.ts +0 -29
- package/src/models/report-builder-library.model.ts +0 -20
- package/src/models/report-builder-report.model.ts +0 -136
- package/src/models/report-builder.model.ts +0 -68
- package/src/models/select-data-label.model.ts +0 -9
- package/src/models/server-message.model.ts +0 -31
- package/src/models/slow-query-report.model.ts +0 -23
- package/src/models/subscription.model.ts +0 -73
- package/src/models/support-ticket.model.ts +0 -104
- package/src/models/user-group.model.ts +0 -24
- package/src/models/user.model.ts +0 -96
- package/src/private/images/ResolveIO.png +0 -0
- package/src/publications/ai-terminal.ts +0 -73
- package/src/publications/app-settings.ts +0 -25
- package/src/publications/app-status.ts +0 -13
- package/src/publications/cron-jobs.ts +0 -40
- package/src/publications/customer-notifications.ts +0 -101
- package/src/publications/files.ts +0 -33
- package/src/publications/flags-update.ts +0 -19
- package/src/publications/flags.ts +0 -19
- package/src/publications/logs.ts +0 -163
- package/src/publications/notifications.ts +0 -13
- package/src/publications/report-builder-dashboard-builders.ts +0 -39
- package/src/publications/report-builder-libraries.ts +0 -41
- package/src/publications/report-builder-reports.ts +0 -47
- package/src/publications/super-admin.ts +0 -13
- package/src/publications/user-groups.ts +0 -12
- package/src/publications/user-guides.ts +0 -12
- package/src/resolveio-server-app.ts +0 -617
- package/src/server-app.ts +0 -3354
- package/src/services/codex-client.ts +0 -1231
- package/src/services/openai-client.ts +0 -265
- package/src/types/error-report.ts +0 -26
- package/src/types/js-tiktoken.d.ts +0 -11
- package/src/types/slow-query-report.ts +0 -28
- package/src/util/ai-qa-policy.ts +0 -925
- package/src/util/ai-run-evidence-adapters.ts +0 -8347
- package/src/util/ai-run-evidence-dashboard.ts +0 -323
- package/src/util/ai-run-evidence-eval.ts +0 -1057
- package/src/util/ai-run-evidence.ts +0 -1430
- package/src/util/ai-runner-artifacts.ts +0 -586
- package/src/util/ai-runner-manager-autopilot.ts +0 -961
- package/src/util/ai-runner-manager-policy.ts +0 -5011
- package/src/util/ai-runner-qa-auth.ts +0 -838
- package/src/util/ai-runner-qa-tools.ts +0 -3536
- package/src/util/aicoder-runner-v6.ts +0 -3121
- package/src/util/common.ts +0 -649
- package/src/util/customer-portal-password.ts +0 -183
- package/src/util/error-reporter.ts +0 -332
- package/src/util/error-tracking.ts +0 -79
- package/src/util/openai-usage-cost.ts +0 -114
- package/src/util/report-builder-unwinds.ts +0 -180
- package/src/util/runner-process-janitor.ts +0 -219
- package/src/util/schema-report-builder.ts +0 -448
- package/src/util/slow-query-reporter.ts +0 -216
- package/src/util/subscription-dependency-context.ts +0 -1096
- package/src/util/support-runner-v5.ts +0 -10040
- package/src/util/tokenizer.ts +0 -38
- package/src/workers/codex-runner.worker.ts +0 -142
- package/start_server.sh +0 -5
- package/tests/ai-assistant-corpus-build.ts +0 -484
- package/tests/ai-assistant-corpus-replay-e2e.ts +0 -774
- package/tests/ai-assistant-data-parity-e2e.ts +0 -1989
- package/tests/ai-assistant-eval-triage.ts +0 -831
- package/tests/ai-assistant-openai-e2e.ts +0 -1061
- package/tests/ai-assistant-openai-git-e2e.ts +0 -155
- package/tests/ai-assistant-preflight-matrix.ts +0 -215
- package/tests/ai-assistant-routing-eval.test.ts +0 -585
- package/tests/ai-assistant-snf-live-eval.ts +0 -975
- package/tests/ai-assistant-utils.test.ts +0 -4834
- package/tests/ai-manager-autopilot-snapshot.test.ts +0 -193
- package/tests/ai-manager-recovery-checkpoint.test.ts +0 -1383
- package/tests/ai-run-eval.test.ts +0 -132
- package/tests/ai-run-evidence.test.ts +0 -3773
- package/tests/ai-runner-contract.test.ts +0 -515
- package/tests/aicoder-runner-v6.test.ts +0 -822
- package/tests/error-reporter.test.ts +0 -145
- package/tests/method-publication-generator.test.ts +0 -46
- package/tests/report-builder-linking.test.ts +0 -79
- package/tests/resolveio-platform-intelligence.test.ts +0 -352
- package/tests/server-app-cron-owner.test.ts +0 -127
- package/tests/subscription-connect-race.test.ts +0 -158
- package/tests/subscription-dependency-context.test.ts +0 -324
- package/tests/subscription-manager-collection-tracking.test.ts +0 -86
- package/tests/subscription-manager-invalidation.test.ts +0 -86
- package/tests/support-runner-v5.test.ts +0 -3201
- package/tsconfig.json +0 -34
- /package/{src/private → private}/email-templates/enrollment.html +0 -0
- /package/{src/private → private}/email-templates/forgot-password.html +0 -0
- /package/{src/private → private}/email-templates/support-ticket-deleted.html +0 -0
- /package/{src/private → private}/email-templates/support-ticket-modified.html +0 -0
- /package/{src/private → private}/email-templates/support-ticket.html +0 -0
- /package/{src/public_api.ts → public_api.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/managers/mongo.manager.ts"],"names":[],"mappings":"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","file":"mongo.manager.js","sourcesContent":["import { AggregateOptions, AggregationCursor, BulkWriteOptions, BulkWriteResult, ChangeStream, ChangeStreamOptions, Collection, CollectionInfo, CommandOperationOptions, CountDocumentsOptions, CreateCollectionOptions, CreateIndexesOptions, DeleteOptions, DeleteResult, FindCursor, FindOneAndDeleteOptions, FindOneAndReplaceOptions, FindOneAndUpdateOptions, FindOptions, IndexDescription, IndexDescriptionCompact, IndexInformationOptions, InsertOneOptions, ListIndexesCursor, ListIndexesOptions, OptionalUnlessRequiredId, RenameOptions, ReplaceOptions, UpdateOptions, UpdateResult } from 'mongodb';\nimport * as NodeCache from 'node-cache';\nimport SimpleSchema from 'simpl-schema';\nimport { Users } from '../collections/user.collection';\nimport { CollectionDocument, Document } from '../models/collection-document.model';\nimport { LookupTables } from '../models/report-builder.model';\nimport { UserModel } from '../models/user.model';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { buildRbLookups, buildRbSchema, dateReviver, deepCopy, getBinarySize, getMongoMergeUpdatedDoc, objectIdHexString } from '../util/common';\nimport { saveCustomerPortalPassword } from '../util/customer-portal-password';\nimport { SlowQueryReporter } from '../util/slow-query-reporter';\nimport { getPublicationContext, QueryMeta, recordAggregateDependencies, recordDependencyResult } from '../util/subscription-dependency-context';\nimport { MonitorMongo } from './monitor.manager';\nconst crypto = require('crypto');\nconst scmp = require('scmp');\nconst v8 = require('v8');\nconst { AsyncLocalStorage } = require('async_hooks');\nconst asyncLocalStorage = new AsyncLocalStorage();\n\nfunction resolveHeapLimitBytes(): number {\n\tconst stats = v8.getHeapStatistics();\n\tif (stats && typeof stats.heap_size_limit === 'number') {\n\t\treturn stats.heap_size_limit;\n\t}\n\n\tif (stats && typeof stats.total_available_size === 'number') {\n\t\treturn stats.total_available_size;\n\t}\n\n\treturn 0;\n}\n\nfunction buildQueryMetaFromFindOptions(options?: FindOptions): QueryMeta {\n\tif (!options) {\n\t\treturn null;\n\t}\n\n\tconst meta: QueryMeta = {};\n\n\tif (typeof options.limit === 'number') {\n\t\tmeta.limit = options.limit;\n\t}\n\n\tif (typeof options.skip === 'number') {\n\t\tmeta.skip = options.skip;\n\t}\n\n\tif (options.sort) {\n\t\tmeta.sort = deepCopy(options.sort);\n\t}\n\n\treturn Object.keys(meta).length ? meta : null;\n}\n\ntype MongoManagerFindOptions = FindOptions;\n\nfunction stripManagedVersionFields(update: any): void {\n\tif (!update) {\n\t\treturn;\n\t}\n\n\tfor (const operator of ['$set', '$setOnInsert']) {\n\t\tconst modifier = update[operator];\n\t\tif (modifier && typeof modifier === 'object' && '__v' in modifier) {\n\t\t\tdelete modifier.__v;\n\t\t\tif (Object.keys(modifier).length === 0) {\n\t\t\t\tdelete update[operator];\n\t\t\t}\n\t\t}\n\t}\n}\n\n// export declare interface MongoManagerFilterOperators<T> extends Document {\nexport declare interface MongoManagerFilterParamaterOperators<P> {\n\t$eq?: P;\n\t$gt?: P;\n\t$gte?: P;\n\t$in?: [P] extends [Array<any>] ? P : P[];\n\t$lt?: P;\n\t$lte?: P;\n\t$ne?: P;\n\t$nin?: [P] extends [Array<any>] ? P : P[];\n\t$not?: P extends string ? MongoManagerFilterParamaterOperators<P> | RegExpConstructor : MongoManagerFilterParamaterOperators<P>;\n\t$exists?: boolean;\n\t$expr?: any[]\n\t$regex?: P extends string ? RegExpConstructor | string : never;\n\t$options?: P extends string ? string : never;\n\t$geoIntersects?: {\n\t\t$geometry: Document;\n\t};\n\t$geoWithin?: Document;\n\t$near?: Document;\n\t$nearSphere?: Document;\n\t$maxDistance?: number;\n\t$all?: any[];\n\t$elemMatch?: Document;\n\t$size?: P extends any[] ? number : never;\n}\n\nexport declare interface MongoManagerFilterOperators<T> extends Document { //TODO: Remove extends document when I get answer on S.O.\n\t$and?: MongoManagerFilter<T>[] | MongoManagerFilterOperators<T>;\n\t$nor?: MongoManagerFilter<T>[] | MongoManagerFilterOperators<T>;\n\t$or?: MongoManagerFilter<T>[] | MongoManagerFilterOperators<T>;\n\t$text?: {\n\t\t$search: string;\n\t\t$language?: string;\n\t\t$caseSensitive?: boolean;\n\t\t$diacriticSensitive?: boolean;\n\t};\n\t// eslint-disable-next-line no-unused-vars\n\t$where?: string | ((this: T) => boolean);\n\t$comment?: string | Document;\n}\n\n// function isDotStringRegExp(obj: Object, dotKey: string): boolean {\n// \tlet keyData = dotKey.split('.');\n// \tlet objData = obj;\n\t\n// \tfor (let i = 0; i < keyData.length; i++) {\n// \t\tlet key = keyData[i];\n// \t\tif (objData.hasOwnProperty(key)) {\n// \t\t\tobjData = objData[key];\n\t\t\t\n// \t\t\tif (i === keyData.length - 1) {\n// \t\t\t\treturn true;\n// \t\t\t}\n// \t\t}\n// \t\telse {\n// \t\t\treturn false;\n// \t\t}\n// \t}\n// }\n\n// export declare type MongoManagerDotStringFilter<T> = {\n// \t[key: string]: (isDotStringRegExp(T, key) ? any : never);\n// };\n\nexport declare type MongoManagerFilter<T> = {\n\t[P in keyof T]?: T[P] | MongoManagerFilterParamaterOperators<T[P]>;\n};\n\nexport declare type MongoManagerUnsetFilter<T> = {\n\t// eslint-disable-next-line no-unused-vars\n\t[P in keyof T]?: number | boolean;\n};\n\nexport declare type MongoManagerIncFilter<T> = {\n\t// eslint-disable-next-line no-unused-vars\n\t[P in keyof T]?: number;\n};\n\nexport declare type MongoManagerRenameFilter<T> = {\n\t// eslint-disable-next-line no-unused-vars\n\t[P in keyof T]?: string;\n};\n\nexport declare type MongoManagerArrayFilter<T> = {\n\t// eslint-disable-next-line no-unused-vars\n\t[P in keyof T]?: any; // can refine if needed\n};\n\nexport declare type MongoManagerCurrentDateFilter<T> = {\n\t// eslint-disable-next-line no-unused-vars\n\t[P in keyof T]?: true | { $type: 'date' | 'timestamp' };\n};\n\nexport declare type MongoManagerUpdateFilter<T> = {\n\t$set?: MongoManagerFilter<T> | Document;\n\t$unset?: MongoManagerUnsetFilter<T> | Document;\n\t$inc?: MongoManagerIncFilter<T> | Document;\n\t$setOnInsert?: MongoManagerFilter<T> | Document;\n\t$push?: MongoManagerArrayFilter<T> | Document;\n\t$pull?: MongoManagerArrayFilter<T> | Document;\n\t$addToSet?: MongoManagerArrayFilter<T> | Document;\n\t$min?: MongoManagerIncFilter<T> | Document;\n\t$max?: MongoManagerIncFilter<T> | Document;\n\t$currentDate?: MongoManagerCurrentDateFilter<T> | Document;\n\t$mul?: MongoManagerIncFilter<T> | Document;\n\t$rename?: MongoManagerRenameFilter<T>;\n};\n\nexport class MongoManager {\n\tprivate _collections: MongoManagerCollection<CollectionDocument>[] = [];\n\tprivate _nodeCache;\n\tprivate _cacheMap: { collections: string[], key: string }[] = [];\n\tprivate _operationInProgress: Map<string, { promise: Promise<any>, invalidatedDuringExecution: boolean, collections: string[] }> = new Map();\n\tprivate _heapSize = resolveHeapLimitBytes();\n\tprivate _heapLimit: number;\n\tprivate _serverCollections: (CollectionInfo | Pick<CollectionInfo, 'name' | 'type'>)[] = [];\n\tprivate _isWorkersEnabled = false;\n\tprivate _isWorkerInstance = false;\n\tprivate _watchedDatabases: string[] = [];\n\tprivate _mainDatabaseName = '';\n\tprivate _changeStream: ChangeStream | null = null;\n\tprivate _changeStreamRestartTimeout: NodeJS.Timeout | null = null;\n\n\tconstructor() {}\n\n\tstatic async create() {\n\t\tconst mongoManager = new MongoManager();\n\t\tawait mongoManager.initialize();\n\t\treturn mongoManager;\n\t}\n\n\tprivate async initialize() {\n\t\tthis._nodeCache = new NodeCache({ stdTTL: 0, checkperiod: 0 });\n\n\t\tthis._isWorkersEnabled = process.env.IS_WORKERS_ENABLED === 'true';\n\t\tthis._isWorkerInstance = process.env.IS_WORKER_INSTANCE === 'true';\n\t\tthis._mainDatabaseName = ResolveIOServer.getServerConfig() ? ResolveIOServer.getServerConfig()['DATABASE'] : '';\n\t\tthis._watchedDatabases = this.resolveWatchedDatabases();\n\t\tthis.setCacheLimit();\n\n\t\tif (this._isWorkersEnabled && this._isWorkerInstance) {\n\t\t\tawait this.setupChangeStream();\n\t\t}\n\n\t\tlet collections = await ResolveIOServer.getMainDB().listCollections().toArray();\n\t\tthis._serverCollections = collections;\n\t}\n\n\tprivate resolveWatchedDatabases(): string[] {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst watchSet = new Set<string>();\n\n\t\tif (this._mainDatabaseName) {\n\t\t\twatchSet.add(this._mainDatabaseName);\n\t\t}\n\n\t\tconst configValue = config ? config['WATCH_DATABASES'] : null;\n\n\t\tif (Array.isArray(configValue)) {\n\t\t\tfor (const value of configValue) {\n\t\t\t\tif (typeof value === 'string' && value.trim()) {\n\t\t\t\t\twatchSet.add(value.trim());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (typeof configValue === 'string' && configValue.trim()) {\n\t\t\tconfigValue.split(',').map(a => a.trim()).filter(a => a.length).forEach(a => watchSet.add(a));\n\t\t}\n\n\t\tconst envValue = process.env.MONGO_WATCH_DATABASES;\n\t\tif (envValue) {\n\t\t\tenvValue.split(',').map(a => a.trim()).filter(a => a.length).forEach(a => watchSet.add(a));\n\t\t}\n\n\t\treturn Array.from(watchSet.values());\n\t}\n\n\tpublic getWatchedDatabases(): string[] {\n\t\treturn this._watchedDatabases;\n\t}\n\n\toneTimeTransaction<T>(fn: () => Promise<T>): Promise<T> {\n\t\treturn asyncLocalStorage.run({}, async () => {\n\t\t\tlet attempt = 0;\n\t\t\tconst maxRetries = 4;\n\t\t\twhile (true) {\n\t\t\t\tconst session = ResolveIOServer.getMongoConnection().startSession();\n\t\t\t\tconst store = asyncLocalStorage.getStore();\n\t\t\t\tif (store) {\n\t\t\t\t\tstore.session = session;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tlet result: T | undefined;\n\t\t\t\t\tawait session.withTransaction(async () => {\n\t\t\t\t\t\tresult = await fn();\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t});\n\t\t\t\t\treturn result as T;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tif (!this.shouldRetryTransactionError(err) || attempt >= maxRetries) {\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.shouldRetryConnectionError(err)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait ResolveIOServer.requestMongoReconnect('mongo-transaction-retry', err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {}\n\t\t\t\t\t}\n\t\t\t\t\tattempt += 1;\n\t\t\t\t\tconst jitter = Math.floor(Math.random() * 60);\n\t\t\t\t\tawait this.delay((120 * attempt) + jitter);\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait session.endSession();\n\t\t\t\t\t}\n\t\t\t\t\tcatch {}\n\t\t\t\t\tconst activeStore = asyncLocalStorage.getStore();\n\t\t\t\t\tif (activeStore) {\n\t\t\t\t\t\tdelete activeStore.session;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tgetSession() {\n\t\tconst store = asyncLocalStorage.getStore();\n\t\treturn store ? store.session : null;\n\t}\n\n\trunWithoutSession<T>(fn: () => Promise<T> | T): Promise<T> {\n\t\treturn asyncLocalStorage.run({}, async () => {\n\t\t\treturn await fn();\n\t\t});\n\t}\n\n\tprivate setCacheLimit() {\n\t\tif (this._isWorkersEnabled) {\n\t\t\tthis._heapLimit = this._isWorkerInstance ? this._heapSize * 0.8 : this._heapSize * 0.4;\n\t\t}\n\t\telse {\n\t\t\tthis._heapLimit = this._heapSize * 0.3;\n\t\t}\n\t}\n\n\tgetServerCollections() {\n\t\treturn this._serverCollections;\n\t}\n\n\tasync registerCollection(collection: MongoManagerCollection<CollectionDocument>) {\n\t\tif (\n\t\t\tcollection.collectionOptions &&\n\t\t\tcollection.collectionOptions.timeseries &&\n\t\t\tcollection.collectionOptions.timeseries.timeField &&\n\t\t\tthis._serverCollections.some(a => a.name === collection.collectionName && a.type === 'collection')\n\t\t) {\n\t\t\tawait ResolveIOServer.getMainDB().dropCollection(collection.collectionName);\n\t\t\tawait this.createCollection(collection);\n\t\t}\n\n\t\tthis._collections.push(collection);\n\t}\n\n\tasync createCollection(collection: MongoManagerCollection<CollectionDocument>) {\n\t\tawait ResolveIOServer.getMainDB().createCollection(collection.collectionName, collection.collectionOptions);\n\t}\n\n\tcollections() {\n\t\treturn this._collections;\n\t}\n\n\tcollection(collectionName: string): MongoManagerCollection<CollectionDocument> | MongoManagerUserCollection<CollectionDocument> {\n\t\treturn this._collections.find(a => a.collectionName === collectionName);\n\t}\n\n\tprivate async delay(ms: number) {\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\treturn new Promise(resolve => setTimeout(resolve, ms));\n\t}\n\n\tprivate hasMongoErrorLabel(err: any, label: string): boolean {\n\t\tif (!err || !label) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof err.hasErrorLabel === 'function') {\n\t\t\ttry {\n\t\t\t\tif (err.hasErrorLabel(label)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch {}\n\t\t}\n\t\tif (Array.isArray(err.errorLabels) && err.errorLabels.includes(label)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate shouldRetryWriteConflict(err: any): boolean {\n\t\tif (!err) {\n\t\t\treturn false;\n\t\t}\n\t\tif (err.code === 112 || err.codeName === 'WriteConflict') {\n\t\t\treturn true;\n\t\t}\n\t\tconst message = String(err.message || '');\n\t\treturn /write conflict/i.test(message) || /yielding is disabled/i.test(message);\n\t}\n\n\tprivate shouldRetryTransactionError(err: any): boolean {\n\t\tif (!err) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.shouldRetryWriteConflict(err) || this.shouldRetryWaitQueueTimeout(err) || this.shouldRetryConnectionError(err)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn this.hasMongoErrorLabel(err, 'TransientTransactionError')\n\t\t\t|| this.hasMongoErrorLabel(err, 'UnknownTransactionCommitResult');\n\t}\n\n\tprivate shouldRetryWaitQueueTimeout(err: any): boolean {\n\t\tif (!err) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (err.name === 'MongoWaitQueueTimeoutError' || err.codeName === 'MongoWaitQueueTimeoutError') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn typeof err.message === 'string' && err.message.includes('Timed out while checking out a connection from connection pool');\n\t}\n\n\tprivate shouldRetryConnectionError(err: any): boolean {\n\t\tif (!err) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst name = String(err.name || err.codeName || '');\n\t\tif (\n\t\t\tname === 'MongoPoolClearedError'\n\t\t\t|| name === 'MongoNetworkError'\n\t\t\t|| name === 'MongoNetworkTimeoutError'\n\t\t\t|| name === 'MongoServerSelectionError'\n\t\t\t|| name === 'MongoTopologyClosedError'\n\t\t\t|| name === 'MongoNotConnectedError'\n\t\t\t|| name === 'MongoClientClosedError'\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst message = String(err.message || '');\n\t\treturn /connection pool .* was cleared/i.test(message)\n\t\t\t|| /topology is closed/i.test(message)\n\t\t\t|| /client was closed/i.test(message)\n\t\t\t|| /not connected/i.test(message)\n\t\t\t|| /server selection timed out/i.test(message)\n\t\t\t|| /econnrefused|econnreset|etimedout|ehostunreach/i.test(message);\n\t}\n\n\tprivate async retryRead<TResult>(operation: () => Promise<TResult>, options?: { session?: any }): Promise<TResult> {\n\t\tif (options && options.session && typeof options.session.inTransaction === 'function' && options.session.inTransaction()) {\n\t\t\treturn operation();\n\t\t}\n\n\t\tlet attempt = 0;\n\t\tconst maxRetries = 2;\n\n\t\twhile (true) {\n\t\t\ttry {\n\t\t\t\treturn await operation();\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconst shouldRetry = this.shouldRetryWaitQueueTimeout(err) || this.shouldRetryConnectionError(err);\n\t\t\t\tif (!shouldRetry || attempt >= maxRetries) {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tif (this.shouldRetryConnectionError(err)) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait ResolveIOServer.requestMongoReconnect('mongo-read-retry', err);\n\t\t\t\t\t}\n\t\t\t\t\tcatch {}\n\t\t\t\t}\n\n\t\t\t\tattempt += 1;\n\t\t\t\tawait this.delay(100 * attempt);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async find<T extends CollectionDocument>(\n\t\tcollectionName: string,\n\t\tfilter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {},\n\t\toptions?: MongoManagerFindOptions\n\t): Promise<T[]> {\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\tconst cacheKey = this.generateCacheKey([collectionName], 'find', [filter, safeOptions]);\n\tlet result = this.getFromCache(cacheKey);\n\tif (result !== undefined) {\n\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\tconsole.log(new Date(), 'Mongo Find - Cache', collectionName);\n\t\t}\n\t\trecordDependencyResult(collectionName, result, { filter, meta: buildQueryMetaFromFindOptions(safeOptions) });\n\t\treturn result;\n\t}\n\n\t\tif (this._operationInProgress.has(cacheKey)) {\n\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Mongo Find - Already running', collectionName);\n\t\t\t}\n\t\t\treturn this._operationInProgress.get(cacheKey).promise;\n\t\t}\n\n\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\tconsole.log(new Date(), 'Mongo Find - Running', collectionName);\n\t\t}\n\n\t\tconst operation = this.executeFind<T>(collectionName, filter, options, cacheKey);\n\t\tthis._operationInProgress.set(cacheKey, { \n\t\t\tpromise: operation, \n\t\t\tinvalidatedDuringExecution: false,\n\t\t\tcollections: [collectionName]\n\t\t});\n\n\t\tawait operation.finally(() => {\n\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Mongo Find - Done', collectionName);\n\t\t\t}\n\n\t\t\tthis._operationInProgress.delete(cacheKey);\n\t\t});\n\n\t\treturn operation;\n\t}\n\n\tprivate async executeFind<T extends CollectionDocument>(\n\t\tcollectionName: string,\n\t\tfilter: MongoManagerFilter<T> & MongoManagerFilterOperators<T>,\n\t\toptions: MongoManagerFindOptions | undefined,\n\t\tcacheKey: string\n\t): Promise<T[]> {\n\t\tlet result;\n\t\tconst collection = ResolveIOServer.getMainDB().collection(collectionName);\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\tconst pubContext = getPublicationContext();\n\t\tconst monitor = MonitorMongo.create('find', collectionName, JSON.stringify([filter, safeOptions]));\n\t\tconst queryStart = Date.now();\n\n\t\ttry {\n\t\t\tresult = await this.retryRead(() => collection.find<T>(<any>filter, options).toArray(), options);\n\t\t}\n\t\tcatch (err) {\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Execute Find', collectionName, filter, safeOptions, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\n\t\t\t\terr.message = `Error in Execute Find: ${collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\tfinally {\n\t\t\tconst durationMs = Date.now() - queryStart;\n\t\t\tawait monitor.finish();\n\t\t\tSlowQueryReporter.reportSlowQueryFireAndForget({\n\t\t\t\tcollection: collectionName,\n\t\t\t\tfilter,\n\t\t\t\toptions: safeOptions,\n\t\t\t\tdurationMs,\n\t\t\t\tqueryType: 'find',\n\t\t\t\tnotes: 'MongoManager executeFind',\n\t\t\t\tpublication: pubContext.publication,\n\t\t\t\tsubscriptionData: pubContext.subscriptionData,\n\t\t\t\tuserId: pubContext.userId\n\t\t\t});\n\t\t}\n\n\trecordDependencyResult(collectionName, result, { filter, meta: buildQueryMetaFromFindOptions(safeOptions) });\n\n\t\tif (!this._operationInProgress.get(cacheKey).invalidatedDuringExecution) {\n\t\t\tthis.addToCache([collectionName], cacheKey, result);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// FindOne Operation\n\tpublic async findOne<T extends CollectionDocument>(\n\t\tcollectionName: string,\n\t\tfilter: MongoManagerFilter<T> | MongoManagerFilterOperators<T> = {},\n\t\toptions?: MongoManagerFindOptions\n\t): Promise<T> {\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\tconst cacheKey = this.generateCacheKey([collectionName], 'findOne', [filter, safeOptions]);\n\t\tlet result = this.getFromCache(cacheKey);\n\tif (result !== undefined) {\n\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\tconsole.log(new Date(), 'Mongo FindOne - Cache', collectionName);\n\t\t}\n\n\t\trecordDependencyResult(collectionName, result, { filter, meta: buildQueryMetaFromFindOptions(safeOptions) });\n\n\t\treturn result;\n\t}\n\n\t\tif (this._operationInProgress.has(cacheKey)) {\n\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Mongo FindOne - Already running', collectionName);\n\t\t\t}\n\n\t\t\treturn this._operationInProgress.get(cacheKey).promise;\n\t\t}\n\n\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\tconsole.log(new Date(), 'Mongo FindOne - Running', collectionName);\n\t\t}\n\n\t\tconst operation = this.executeFindOne<T>(collectionName, filter, options, cacheKey);\n\t\tthis._operationInProgress.set(cacheKey, { \n\t\t\tpromise: operation, \n\t\t\tinvalidatedDuringExecution: false,\n\t\t\tcollections: [collectionName]\n\t\t});\n\n\t\tawait operation.finally(() => {\n\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Mongo FindOne - Done', collectionName);\n\t\t\t}\n\n\t\t\tthis._operationInProgress.delete(cacheKey);\n\t\t});\n\n\t\treturn operation;\n\t}\n\n\tprivate async executeFindOne<T extends CollectionDocument>(\n\t\tcollectionName: string,\n\t\tfilter: MongoManagerFilter<T> | MongoManagerFilterOperators<T>,\n\t\toptions: MongoManagerFindOptions | undefined,\n\t\tcacheKey: string\n\t): Promise<T> {\n\t\tlet result;\n\t\tconst collection = ResolveIOServer.getMainDB().collection(collectionName);\n\t\t\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\tconst pubContext = getPublicationContext();\n\t\tconst monitor = MonitorMongo.create('findOne', collectionName, JSON.stringify([filter, safeOptions]));\n\t\tconst queryStart = Date.now();\n\n\t\ttry {\n\t\t\tresult = await this.retryRead(() => collection.findOne<T>(<any>filter, options || undefined), options);\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Execute Find One', collectionName, filter, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Execute Find One: ${collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tconst durationMs = Date.now() - queryStart;\n\t\t\tawait monitor.finish();\n\t\t\tSlowQueryReporter.reportSlowQueryFireAndForget({\n\t\t\t\tcollection: collectionName,\n\t\t\t\tfilter,\n\t\t\t\toptions: safeOptions,\n\t\t\t\tdurationMs,\n\t\t\t\tqueryType: 'findOne',\n\t\t\t\tnotes: 'MongoManager executeFindOne',\n\t\t\t\tpublication: pubContext.publication,\n\t\t\t\tsubscriptionData: pubContext.subscriptionData,\n\t\t\t\tuserId: pubContext.userId\n\t\t\t});\n\t\t}\n\t\n\trecordDependencyResult(collectionName, result, { filter, meta: buildQueryMetaFromFindOptions(safeOptions) });\n\n\t\tif (!this._operationInProgress.get(cacheKey).invalidatedDuringExecution) {\n\t\t\tthis.addToCache([collectionName], cacheKey, result);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// Aggregate Operation\n\tpublic async aggregate<T extends CollectionDocument>(\n\t\tcollectionName: string,\n\t\tpipeline: any[],\n\t\toptions?: AggregateOptions\n\t): Promise<any[]> {\n\t\tconst collections = [collectionName, ...pipeline.flatMap(stage => stage.$lookup?.from ? [stage.$lookup.from] : [])];\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\tconst cacheKey = this.generateCacheKey(collections, 'aggregate', [pipeline, safeOptions]);\n\t\tlet result = this.getFromCache(cacheKey);\n\t\tif (result !== undefined) {\n\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Mongo Agg - Cache', collections);\n\t\t\t}\n\t\t\trecordAggregateDependencies(collectionName, pipeline, result);\n\t\t\treturn result;\n\t\t}\n\n\t\tif (this._operationInProgress.has(cacheKey)) {\n\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Mongo Agg - Already running', collections);\n\t\t\t}\n\n\t\t\treturn this._operationInProgress.get(cacheKey).promise;\n\t\t}\n\n\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\tconsole.log(new Date(), 'Mongo Agg - Running', collections);\n\t\t}\n\n\t\tconst operation = this.executeAggregate<T>(collectionName, pipeline, options, cacheKey, collections);\n\t\tthis._operationInProgress.set(cacheKey, { \n\t\t\tpromise: operation, \n\t\t\tinvalidatedDuringExecution: false,\n\t\t\tcollections: collections\n\t\t});\n\n\t\tawait operation.finally(() => {\n\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Mongo Agg - Done', collections);\n\t\t\t}\n\n\t\t\tthis._operationInProgress.delete(cacheKey);\n\t\t});\n\n\t\treturn operation;\n\t}\n\n\tprivate async executeAggregate<T extends CollectionDocument>(\n\t\tcollectionName: string,\n\t\tpipeline: any[],\n\t\toptions: AggregateOptions | undefined,\n\t\tcacheKey: string,\n\t\tcollections: string[]\n\t): Promise<any[]> {\n\t\tlet result;\n\t\tconst collection = ResolveIOServer.getMainDB().collection(collectionName);\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\tconst pubContext = getPublicationContext();\n\t\tconst monitor = MonitorMongo.create('aggregate', collectionName, JSON.stringify([pipeline, safeOptions]));\n\t\tconst queryStart = Date.now();\n\n\t\ttry {\n\t\t\tresult = await this.retryRead(() => collection.aggregate<T>(pipeline, options).toArray(), options);\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Execute Aggregate', collectionName, pipeline, collections, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Execute Aggregate: ${collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tconst durationMs = Date.now() - queryStart;\n\t\t\tawait monitor.finish();\n\t\t\tSlowQueryReporter.reportSlowQueryFireAndForget({\n\t\t\t\tcollection: collectionName,\n\t\t\t\tpipeline,\n\t\t\t\toptions: safeOptions,\n\t\t\t\tdurationMs,\n\t\t\t\tqueryType: 'aggregate',\n\t\t\t\tnotes: 'MongoManager executeAggregate',\n\t\t\t\tpublication: pubContext.publication,\n\t\t\t\tsubscriptionData: pubContext.subscriptionData,\n\t\t\t\tuserId: pubContext.userId\n\t\t\t});\n\t\t}\n\n\t\trecordAggregateDependencies(collectionName, pipeline, result);\n\n\t\tif (!this._operationInProgress.get(cacheKey).invalidatedDuringExecution) {\n\t\t\tthis.addToCache(collections, cacheKey, result);\n\t\t}\n\t\t\n\t\treturn result;\n\t}\n\n\tpublic async countDocuments<T extends CollectionDocument>(\n\t\tcollectionName: string,\n\t\tfilter: MongoManagerFilter<T> | MongoManagerFilterOperators<T> = {},\n\t\toptions?: CountDocumentsOptions\n\t): Promise<number> {\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\tconst cacheKey = this.generateCacheKey([collectionName], 'countDocuments', [filter, safeOptions]);\n\t\tlet result = this.getFromCache(cacheKey);\n\t\tif (result !== undefined) {\n\t\t\trecordDependencyResult(collectionName, result, { filter });\n\t\t\treturn result;\n\t\t}\n\n\t\tif (this._operationInProgress.has(cacheKey)) {\n\t\t\treturn this._operationInProgress.get(cacheKey).promise;\n\t\t}\n\n\t\tconst operation = this.executeCountDocuments<T>(collectionName, filter, options, cacheKey);\n\t\tthis._operationInProgress.set(cacheKey, { \n\t\t\tpromise: operation, \n\t\t\tinvalidatedDuringExecution: false,\n\t\t\tcollections: [collectionName]\n\t\t});\n\n\t\tawait operation.finally(() => this._operationInProgress.delete(cacheKey));\n\n\t\treturn operation;\n\t}\n\n\tprivate async executeCountDocuments<T extends CollectionDocument>(\n\t\tcollectionName: string,\n\t\tfilter: MongoManagerFilter<T> | MongoManagerFilterOperators<T>,\n\t\toptions: CountDocumentsOptions,\n\t\tcacheKey: string\n\t): Promise<number> {\n\t\tlet result;\n\t\tconst collection = ResolveIOServer.getMainDB().collection(collectionName);\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\tconst pubContext = getPublicationContext();\n\t\tconst monitor = MonitorMongo.create('countDocuments', collectionName, JSON.stringify([filter, safeOptions]));\n\t\tconst queryStart = Date.now();\n\n\t\ttry {\n\t\t\tresult = await this.retryRead(() => collection.countDocuments(<any>filter, options || undefined), options);\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Execute Count Documents', collectionName, filter, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Execute Count Documents: ${collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tconst durationMs = Date.now() - queryStart;\n\t\t\tawait monitor.finish();\n\t\t\tSlowQueryReporter.reportSlowQueryFireAndForget({\n\t\t\t\tcollection: collectionName,\n\t\t\t\tfilter,\n\t\t\t\toptions: safeOptions,\n\t\t\t\tdurationMs,\n\t\t\t\tqueryType: 'countDocuments',\n\t\t\t\tnotes: 'MongoManager executeCountDocuments',\n\t\t\t\tpublication: pubContext.publication,\n\t\t\t\tsubscriptionData: pubContext.subscriptionData,\n\t\t\t\tuserId: pubContext.userId\n\t\t\t});\n\t\t}\n\t\n\t\trecordDependencyResult(collectionName, result, { filter });\n\n\t\tif (!this._operationInProgress.get(cacheKey).invalidatedDuringExecution) {\n\t\t\tthis.addToCache([collectionName], cacheKey, result);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// Cache and Invalidation Setup\n\tprivate generateCacheKey(collections: string[], functionName: string, args: any[]): string {\n\t\tconst keyString = JSON.stringify({ collections, functionName, args });\n\t\treturn crypto.createHash('sha256').update(keyString).digest('hex');\n\t}\n\n\tprivate getFromCache(cacheKey: string): any | undefined {\n\t\ttry {\n\t\t\tconst cachedData = this._nodeCache.get(cacheKey);\n\t\t\tif (cachedData) {\n\t\t\t\treturn JSON.parse(cachedData, dateReviver);\n\t\t\t}\n\t\t} \n\t\tcatch {\n\t\t\tthis._nodeCache.del(cacheKey);\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate addToCache(collections: string[], cacheKey: string, data: any) {\n\t\tif (getBinarySize(JSON.stringify(data)) < 1000000 && \n\t\t\t!collections.includes('logs') &&\n\t\t\t!collections.find(a => a.endsWith('.versions')) &&\n\t\t\t!collections.find(a => a.startsWith('monitor-'))\n\t\t) {\n\t\t\tlet nodeCacheSize = this._nodeCache.getStats().vsize;\n\n\t\t\tif (nodeCacheSize > this._heapLimit) {\n\t\t\t\tlet deleteCount = 0;\n\t\t\t\tconst keys = this._nodeCache.keys();\n\n\t\t\t\tfor (const key of keys) {\n\t\t\t\t\tthis._nodeCache.del(key);\n\t\t\t\t\tdeleteCount += 1;\n\n\t\t\t\t\tnodeCacheSize = this._nodeCache.getStats().vsize;\n\n\t\t\t\t\tif (nodeCacheSize < this._heapLimit * 0.75) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconsole.log('Query Cache: ' + 'Too Big, - Deleted: ' + deleteCount + ' - ' + nodeCacheSize);\n\t\t\t}\n\t\t\t\n\t\t\tthis._nodeCache.set(cacheKey, JSON.stringify(data));\n\t\t\tthis._cacheMap.push({ collections, key: cacheKey });\n\t\t}\n\t}\n\n\tpublic invalidateQueryCache(collection: string, bypassLocalOplog = false) {\n\t\tconst collectionCacheMap = this._cacheMap.filter(a => a.collections.includes(collection));\n\n\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\tconsole.log(new Date(), 'Mongo Invalidate Cache', collection);\n\t\t}\n\n\t\tfor (const cacheMap of collectionCacheMap) {\n\t\t\tthis._nodeCache.del(cacheMap.key);\n\t\t\t\n\t\t\tif (this._operationInProgress.has(cacheMap.key)) {\n\t\t\t\tthis._operationInProgress.get(cacheMap.key).invalidatedDuringExecution = true;\n\n\t\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\t\tconsole.log(new Date(), 'Mongo Invalidated During Execution', cacheMap.collections);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tfor (const [key, operation] of this._operationInProgress.entries()) {\n\t\t\tif (operation.collections.includes(collection)) {\n\t\t\t\toperation.invalidatedDuringExecution = true;\n\t\t\n\t\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\t\tconsole.log(new Date(), 'Mongo Invalidated During Execution (No cache)', operation.collections);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._cacheMap = this._cacheMap.filter(a => !a.collections.includes(collection));\n\n\t\tif (!bypassLocalOplog && ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getUseLocalOplog()) {\n\t\t\tResolveIOServer.getMainServer().getSubscriptionManager().notifyLocalOplog(collection, 'update');\n\t\t}\n\t}\n\n\tpublic clearQueryCache(reason?: string) {\n\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\tconsole.log(new Date(), 'Mongo Clear Cache', reason || '');\n\t\t}\n\n\t\ttry {\n\t\t\tthis._nodeCache.flushAll();\n\t\t}\n\t\tcatch {\n\t\t\t// ignore flush errors\n\t\t}\n\n\t\tthis._cacheMap = [];\n\n\t\t// Mark all in-flight ops invalidated so they don't repopulate cache with stale data.\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tfor (const [key, operation] of this._operationInProgress.entries()) {\n\t\t\toperation.invalidatedDuringExecution = true;\n\t\t}\n\t}\n\n\tpublic async handleMongoReconnect(reason: string): Promise<void> {\n\t\tthis.clearQueryCache(`mongo-reconnect:${reason}`);\n\n\t\tif (this._isWorkersEnabled && this._isWorkerInstance) {\n\t\t\ttry {\n\t\t\t\tawait this.setupChangeStream();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.log(new Date(), 'Mongo handle reconnect: change stream restart failed', reason, error);\n\t\t\t\tthis.scheduleChangeStreamRestart();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async setupChangeStream() {\n\t\tif (!this._isWorkersEnabled || !this._isWorkerInstance) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._changeStreamRestartTimeout) {\n\t\t\tclearTimeout(this._changeStreamRestartTimeout);\n\t\t\tthis._changeStreamRestartTimeout = null;\n\t\t}\n\n\t\tawait this.teardownChangeStream(true);\n\n\t\tconst client = ResolveIOServer.getMongoConnection();\n\n\t\tif (!client) {\n\t\t\tthis.scheduleChangeStreamRestart();\n\t\t\treturn;\n\t\t}\n\n\t\tconst watchDatabases = this._watchedDatabases.length ? this._watchedDatabases : (this._mainDatabaseName ? [this._mainDatabaseName] : []);\n\n\t\tconst pipeline = [\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t$and: [\n\t\t\t\t\t\t...(watchDatabases.length ? [{ 'ns.db': { $in: watchDatabases } }] : []),\n\t\t\t\t\t\t{'ns.coll': { $nin: [\n\t\t\t\t\t\t\t'log-method-latencies', \n\t\t\t\t\t\t\t'log-subscriptions', \n\t\t\t\t\t\t\t'logs', \n\t\t\t\t\t\t\t'counters', \n\t\t\t\t\t\t\t'cron-job-histories', \n\t\t\t\t\t\t\t'email-histories',\n\t\t\t\t\t\t\t'qb-soap-request-histories', \n\t\t\t\t\t\t\t'qb-soap-request-responses', \n\t\t\t\t\t\t\t'qb-soap-requests',\n\t\t\t\t\t\t\t'qb-soap-retries',\n\t\t\t\t\t\t\t'subscription-manager-resume-tokens'\n\t\t\t\t\t\t] }},\n\t\t\t\t\t\t{'ns.coll': { $not: /.*\\.versions$/ }},\n\t\t\t\t\t\t{'ns.coll': { $not: /^monitor-/ }},\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\n\t\tlet changeStream: ChangeStream;\n\n\t\ttry {\n\t\t\tchangeStream = client.watch(pipeline, { fullDocument: 'updateLookup' });\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(new Date(), 'Mongo change stream setup failed. Restarting...', err);\n\t\t\tthis.scheduleChangeStreamRestart();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._changeStream = changeStream;\n\n\t\tchangeStream.on('change', (change: any) => {\n\t\t\tif (change['ns'] && change['ns'].coll) {\n\t\t\t\tconst collectionName = change['ns'].coll;\n\t\t\t\tconst collection = this.collection(collectionName);\n\n\t\t\t\tif (collection) {\n\t\t\t\t\tthis.invalidateQueryCache(collectionName);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tchangeStream.on('error', async error => {\n\t\t\tawait this.handleChangeStreamFailure('error', error);\n\t\t});\n\n\t\tchangeStream.on('close', async () => {\n\t\t\tawait this.handleChangeStreamFailure('close');\n\t\t});\n\t}\n\n\tprivate async teardownChangeStream(forceClose: boolean) {\n\t\tif (!this._changeStream) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentStream = this._changeStream;\n\t\tthis._changeStream = null;\n\n\t\tcurrentStream.removeAllListeners();\n\n\t\tif (forceClose) {\n\t\t\ttry {\n\t\t\t\tawait currentStream.close();\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.log(new Date(), 'Mongo change stream close failed', err);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleChangeStreamFailure(reason: 'error' | 'close', error?: unknown) {\n\t\tif (reason === 'error') {\n\t\t\tconsole.log(new Date(), 'Mongo change stream error. Restart...', error);\n\t\t\tawait this.teardownChangeStream(true);\n\t\t}\n\t\telse {\n\t\t\tconsole.log(new Date(), 'Mongo change stream closed. Restarting...');\n\t\t\tawait this.teardownChangeStream(false);\n\t\t}\n\n\t\tthis.scheduleChangeStreamRestart();\n\t}\n\n\tprivate scheduleChangeStreamRestart(delayMs = 5000) {\n\t\tif (this._changeStreamRestartTimeout) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._changeStreamRestartTimeout = setTimeout(async () => {\n\t\t\tthis._changeStreamRestartTimeout = null;\n\n\t\t\ttry {\n\t\t\t\tawait this.setupChangeStream();\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.log(new Date(), 'Mongo change stream restart failed. Retrying...', err);\n\t\t\t\tthis.scheduleChangeStreamRestart(Math.min(delayMs * 2, 60000));\n\t\t\t}\n\t\t}, delayMs);\n\t}\n}\n\nexport class MongoManagerModel<T extends CollectionDocument> {\n\tcollection_main: MongoManagerCollection<T> | MongoManagerUserCollection<T> = null;\n\tcollection_version: MongoManagerCollection<T> | MongoManagerUserCollection<T> = null;\n\n\tconstructor() {}\n\n\tstatic create<T>(options: MongoManagerCollectionOptions): MongoManagerModel<T> {\n\t\tconst mongoManagerModel = new MongoManagerModel<T>();\n\t\tmongoManagerModel.initialize(options);\n\t\treturn mongoManagerModel;\n\t}\n\n\tprivate initialize(options: MongoManagerCollectionOptions) {\n\t\tif (options.collectionName === 'users') {\n\t\t\tthis.collection_main = MongoManagerUserCollection.create(options) as MongoManagerUserCollection<T>;\n\t\t}\n\t\telse {\n\t\t\tthis.collection_main = MongoManagerCollection.create(options) as MongoManagerCollection<T>;\n\t\t}\n\n\t\tif (options.useVersionCollection) {\n\t\t\tthis.collection_main.useVersions = true;\n\n\t\t\tlet versionSchema = deepCopy(options.schema);\n\t\t\tversionSchema._id = versionSchema._id || {};\n\t\t\tversionSchema._id.type = 'Object';\n\t\t\tversionSchema._id.blackbox = true;\n\n\t\t\tlet versionOptions: MongoManagerCollectionOptions = {\n\t\t\t\tcollectionName: options.collectionName + '.versions',\n\t\t\t\tschema: versionSchema,\n\t\t\t\tuseVersionCollection: false,\n\t\t\t\tuseReportBuilder: false,\n\t\t\t\treportBuilderLookupTables: [],\n\t\t\t\ttimestamps: true,\n\t\t\t\tcreateLogs: false,\n\t\t\t\tcheckSchema: false,\n\t\t\t\tcollectionOptions: null,\n\t\t\t\tskipCache: true,\n\t\t\t\tbypassSession: true\n\t\t\t};\n\n\t\t\tif (options.collectionName === 'users') {\t\n\t\t\t\tthis.collection_version = MongoManagerUserCollection.create(versionOptions) as MongoManagerUserCollection<T>;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.collection_version = MongoManagerCollection.create(versionOptions) as MongoManagerCollection<T>;\n\t\t\t}\n\n\t\t\tsetImmediate(async () => {\n\t\t\t\tawait this.collection_version.createIndex({'_id._id': 1, '_id.__v': 1});\n\t\t\t});\n\n\t\t\tthis.collection_main.versionCollection = options.collectionName + '.versions';\n\t\t}\n\t}\n}\n\nexport interface MongoManagerCollectionOptions {\n\tcollectionName: string;\n\tschema: object;\n\tuseVersionCollection: boolean;\n\tuseReportBuilder: boolean;\n\treportBuilderLookupTables: LookupTables[]\n\ttimestamps: boolean;\n\tcreateLogs: boolean;\n\tcheckSchema: boolean;\n\tcollectionOptions: CreateCollectionOptions;\n\tskipCache?: boolean;\n\tbypassSession?: boolean;\n\tsearchFields?: string[];\n}\n\nexport class MongoManagerCollection<T extends CollectionDocument> {\n\tcollectionName = '';\n\tcheckSchema = false;\n\tsimplschema = null;\n\trbSchema = null;\n\ttimestamps = false;\n\tuseVersions = false;\n\tversionCollection = '';\n\tcreateLogs = true;\n\tuseRB = false;\n\tcollectionOptions: CreateCollectionOptions;\n\tskipCache = false;\n\tbypassSession = false;\n\t\n\tconstructor() {}\n\t\n\tstatic create(options: MongoManagerCollectionOptions) {\n\t\tconst mongoManagerCollection = new MongoManagerCollection();\n\t\tmongoManagerCollection.initialize(options);\n\t\treturn mongoManagerCollection;\n\t}\n\n\tinitialize(options: MongoManagerCollectionOptions) {\n\t\tthis.collectionName = options.collectionName;\n\t\tthis.simplschema = new SimpleSchema(options.schema);\n\t\tthis.timestamps = options.timestamps;\n\t\tthis.createLogs = options.createLogs;\n\t\tthis.checkSchema = options.checkSchema;\n\t\tthis.collectionOptions = options.collectionOptions;\n\t\tthis.skipCache = options.skipCache || false;\n\t\tthis.bypassSession = options.bypassSession || false;\n\n\t\tif (options.useReportBuilder) {\n\t\t\tthis.useRB = true;\n\t\t\tlet schemaCopy = deepCopy(options.schema);\n\t\t\tlet rbSchema = buildRbLookups(options.reportBuilderLookupTables, schemaCopy, []);\n\t\t\tthis.rbSchema = buildRbSchema(rbSchema);\n\t\t}\n\n\t\tconst retryDelayMs = 250;\n\t\tconst registerWhenReady = async () => {\n\t\t\tif (ResolveIOServer && ResolveIOServer.getMainServer() && ResolveIOServer.getMongoManager() && ResolveIOServer.getMongoManager().getServerCollections().length) {\n\t\t\t\tawait ResolveIOServer.getMongoManager().registerCollection(this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetTimeout(registerWhenReady, retryDelayMs);\n\t\t};\n\t\tsetTimeout(registerWhenReady, retryDelayMs);\n\t}\n\n\t// Method to extract index name from error message\n\textractIndexNameFromError(errorMessage) {\n\t\tlet regexPattern = /Index already exists with a different name: (\\S+)/;\n\t\tlet matches = errorMessage.match(regexPattern);\n\t\n\t\tif (!matches || matches.length <= 1) {\n\t\t\t// If the first pattern doesn't match, try the second pattern\n\t\t\tregexPattern = /existing index:.*name: \"([^\"]+)\"/;\n\t\t\tmatches = errorMessage.match(regexPattern);\n\t\t}\n\n\t\treturn matches && matches.length > 1 ? matches[1] : null;\n\t}\n\n\tprivate shouldRetryWriteConflict(err: any): boolean {\n\t\tif (!err) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (err.code === 112 || err.codeName === 'WriteConflict') {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst message = String(err.message || '');\n\t\treturn /write conflict/i.test(message) || /yielding is disabled/i.test(message);\n\t}\n\n\tprivate shouldRetryWaitQueueTimeout(err: any): boolean {\n\t\tif (!err) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (err.name === 'MongoWaitQueueTimeoutError' || err.codeName === 'MongoWaitQueueTimeoutError') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn typeof err.message === 'string' && err.message.includes('Timed out while checking out a connection from connection pool');\n\t}\n\n\tprivate shouldRetryConnectionError(err: any): boolean {\n\t\tif (!err) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst name = String(err.name || err.codeName || '');\n\t\tif (\n\t\t\tname === 'MongoPoolClearedError'\n\t\t\t|| name === 'MongoNetworkError'\n\t\t\t|| name === 'MongoNetworkTimeoutError'\n\t\t\t|| name === 'MongoServerSelectionError'\n\t\t\t|| name === 'MongoTopologyClosedError'\n\t\t\t|| name === 'MongoNotConnectedError'\n\t\t\t|| name === 'MongoClientClosedError'\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst message = String(err.message || '');\n\t\treturn /connection pool .* was cleared/i.test(message)\n\t\t\t|| /topology is closed/i.test(message)\n\t\t\t|| /client was closed/i.test(message)\n\t\t\t|| /not connected/i.test(message)\n\t\t\t|| /server selection timed out/i.test(message)\n\t\t\t|| /econnrefused|econnreset|etimedout|ehostunreach/i.test(message);\n\t}\n\n\tprivate async delay(ms: number) {\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\treturn new Promise(resolve => setTimeout(resolve, ms));\n\t}\n\n\tprivate async retryWrite<TResult>(operation: () => Promise<TResult>, options?: { session?: any }): Promise<TResult> {\n\t\tif (options && options.session && typeof options.session.inTransaction === 'function' && options.session.inTransaction()) {\n\t\t\treturn operation();\n\t\t}\n\n\t\tlet attempt = 0;\n\t\tconst configuredMaxRetries = Number(process.env.MONGO_WRITE_RETRY_MAX || 8);\n\t\tconst maxRetries = Number.isFinite(configuredMaxRetries) && configuredMaxRetries >= 0\n\t\t\t? Math.min(Math.floor(configuredMaxRetries), 20)\n\t\t\t: 8;\n\t\tconst configuredBaseDelay = Number(process.env.MONGO_WRITE_RETRY_BASE_MS || 120);\n\t\tconst baseDelayMs = Number.isFinite(configuredBaseDelay) && configuredBaseDelay > 0\n\t\t\t? Math.min(Math.floor(configuredBaseDelay), 5000)\n\t\t\t: 120;\n\n\t\twhile (true) {\n\t\t\ttry {\n\t\t\t\treturn await operation();\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconst shouldRetry = this.shouldRetryWriteConflict(err) || this.shouldRetryWaitQueueTimeout(err) || this.shouldRetryConnectionError(err);\n\t\t\t\t\tif (!shouldRetry || attempt >= maxRetries) {\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.shouldRetryConnectionError(err)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait ResolveIOServer.requestMongoReconnect(`mongo-collection-write-retry:${this.collectionName}`, err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {}\n\t\t\t\t\t}\n\n\t\t\t\t\tattempt += 1;\n\t\t\t\t\tconst backoff = Math.min(5000, baseDelayMs * (2 ** (attempt - 1)));\n\t\t\t\t\tconst jitter = Math.floor(Math.random() * 90);\n\t\t\t\t\tawait this.delay(backoff + jitter);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tprivate async retryRead<TResult>(operation: () => Promise<TResult>, options?: { session?: any }): Promise<TResult> {\n\t\tif (options && options.session && typeof options.session.inTransaction === 'function' && options.session.inTransaction()) {\n\t\t\treturn operation();\n\t\t}\n\n\t\tlet attempt = 0;\n\t\tconst maxRetries = 2;\n\n\t\twhile (true) {\n\t\t\ttry {\n\t\t\t\treturn await operation();\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconst shouldRetry = this.shouldRetryWaitQueueTimeout(err) || this.shouldRetryConnectionError(err);\n\t\t\t\tif (!shouldRetry || attempt >= maxRetries) {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tif (this.shouldRetryConnectionError(err)) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait ResolveIOServer.requestMongoReconnect(`mongo-collection-read-retry:${this.collectionName}`, err);\n\t\t\t\t\t}\n\t\t\t\t\tcatch {}\n\t\t\t\t}\n\n\t\t\t\tattempt += 1;\n\t\t\t\tawait this.delay(100 * attempt);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync aggregate(pipeline: object[], options?: AggregateOptions, skipCache = false, bypassSession = false) : Promise<any[]> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (!skipCache && !this.skipCache) {\n\t\t\treturn ResolveIOServer.getMongoManager().aggregate(this.collectionName, pipeline, options || undefined);\n\t\t}\n\t\telse {\n\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\tlet { session, ...safeOptions } = options || {};\n\t\t\tlet monitor = MonitorMongo.create('aggregate', this.collectionName, JSON.stringify([pipeline, safeOptions]));\n\n\t\t\ttry {\n\t\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options).toArray();\n\t\t\t\trecordAggregateDependencies(this.collectionName, pipeline, res);\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Aggregate', this.collectionName, pipeline, safeOptions, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\t\n\t\t\t\terr.message = `Error in Aggregate: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait monitor.finish();\n\t\t\t}\n\t\t}\n\t}\n\n\tasync aggregateCount(pipeline: object[], options?: AggregateOptions, bypassSession = false) : Promise<number> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\tlet monitor = MonitorMongo.create('aggregateCount', this.collectionName, JSON.stringify([pipeline, safeOptions]));\n\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options).toArray();\n\t\t\trecordAggregateDependencies(this.collectionName, pipeline, res);\n\t\t\treturn res.length;\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Aggregate Count', this.collectionName, pipeline, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Aggregate Count: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\taggregateCursor(pipeline: object[], options?: AggregateOptions, bypassSession = false): AggregationCursor {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\tlet monitor = MonitorMongo.create('aggregateCursor', this.collectionName, JSON.stringify([pipeline, safeOptions]));\n\t\tlet cursor = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options || undefined);\n\t\tcursor.on('close', async ev => {\n\t\t\tawait monitor.finish();\n\t\t\treturn ev;\n\t\t});\n\n\t\treturn cursor;\n\t}\n\n\taggregateStream(pipeline: object[], options?: AggregateOptions, streamOptions?: any, bypassSession = false) {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\tlet monitor = MonitorMongo.create('aggregateStream', this.collectionName, JSON.stringify([pipeline, safeOptions, streamOptions]));\n\t\tlet stream = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options).stream().on('close', async ev => {\n\t\t\tawait monitor.finish();\n\t\t\treturn ev;\n\t\t});\n\n\t\treturn stream;\n\t}\n\n\tasync bulkWrite(\n\t\toperations: any[],\n\t\toptions?: BulkWriteOptions,\n\t\tbypassCheckSchema = false,\n\t\tbypassLogs = false,\n\t\tbypassVersions = false, \n\t\tbypassSession = false\n\t): Promise<BulkWriteResult> {\n\t\tif (!operations.length) {\n\t\t\treturn null;\n\t\t}\n\t\n\t\tconst BATCH_SIZE = 1000;\n\t\tlet opIndex = 0;\n\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\tlet { session, ...safeOptions } = options || {};\n\t\n\t\twhile (opIndex < operations.length) {\n\t\t\tconst batchOps = operations.slice(opIndex, opIndex + BATCH_SIZE);\n\t\n\t\t\t// Initialize arrays for logs and version operations\n\t\t\tconst logs = [];\n\t\t\tconst versionOps = [];\n\t\n\t\t\tfor (const op of batchOps) {\n\t\t\t\tconst opType = Object.keys(op)[0];\n\t\t\t\tconst doc = op[opType];\n\t\n\t\t\t\t// Skip validation if bypassCheckSchema is true\n\t\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\t\tconst validationContext = this.simplschema.newContext();\n\t\t\t\t\tlet isValid: boolean;\n\t\n\t\t\t\t\tif (opType === 'insertOne') {\n\t\t\t\t\t\tisValid = validationContext.validate(doc.document);\n\t\t\t\t\t}\n\t\t\t\t\telse if (opType === 'replaceOne') {\n\t\t\t\t\t\tisValid = validationContext.validate(doc.replacement);\n\t\t\t\t\t}\n\t\t\t\t\telse if (opType === 'updateOne' || opType === 'updateMany') {\n\t\t\t\t\t\t// For updates, validate the update modifier\n\t\t\t\t\t\tisValid = validationContext.validate(doc.update, { modifier: true });\n\t\t\t\t\t}\n\t\t\t\t\telse if (opType === 'deleteOne' || opType === 'deleteMany') {\n\t\t\t\t\t\t// No validation needed for deletes\n\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow new Error(`Unsupported operation type: ${opType}`);\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (!isValid) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Schema validation failed for ${opType}: ${JSON.stringify(validationContext.validationErrors(), null, 2)}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Now proceed to process the operations\n\t\n\t\t\t\tif (opType === 'insertOne') {\n\t\t\t\t\t// If this.timestamps is true, set createdAt and updatedAt\n\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\tif (!doc.document.createdAt) {\n\t\t\t\t\t\t\tdoc.document.createdAt = new Date();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!doc.document.updatedAt) {\n\t\t\t\t\t\t\tdoc.document.updatedAt = new Date();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prepare log entry\n\t\t\t\t\tif (!bypassLogs && this.createLogs) {\n\t\t\t\t\t\tlogs.push({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc.document._id || objectIdHexString(),\n\t\t\t\t\t\t\tpayload:\n\t\t\t\t\t\t\t\tgetBinarySize(JSON.stringify(doc.document)) < 1000000\n\t\t\t\t\t\t\t\t\t? JSON.stringify(doc.document, null, 2)\n\t\t\t\t\t\t\t\t\t: 'Too Big',\n\t\t\t\t\t\t\tmethod: 'insertOne',\n\t\t\t\t\t\t\tid_user: '', // Add user info if available\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Since we might have modified doc.document, update the operation\n\t\t\t\t\top[opType].document = doc.document;\n\t\t\t\t}\n\t\t\t\telse if (opType === 'updateOne' || opType === 'updateMany') {\n\t\t\t\t\t// If this.timestamps is true, add updatedAt\n\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\tif (!doc.update.$set) {\n\t\t\t\t\t\t\tdoc.update.$set = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdoc.update.$set.updatedAt = new Date();\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If this.useVersions is true, increment __v\n\t\t\t\t\tif (!bypassVersions && this.useVersions) {\n\t\t\t\t\t\tif (!doc.update.$inc) {\n\t\t\t\t\t\t\tdoc.update.$inc = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdoc.update.$inc.__v = 1;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Prepare log entry\n\t\t\t\t\tif (!bypassLogs && this.createLogs) {\n\t\t\t\t\t\tlogs.push({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc.filter._id || null,\n\t\t\t\t\t\t\tpayload:\n\t\t\t\t\t\t\t\tgetBinarySize(JSON.stringify(doc.update)) < 1000000\n\t\t\t\t\t\t\t\t\t? JSON.stringify(doc.update, null, 2)\n\t\t\t\t\t\t\t\t\t: 'Too Big',\n\t\t\t\t\t\t\tmethod: opType,\n\t\t\t\t\t\t\tid_user: '', // Add user info if available\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// For versioning, store the filter to fetch the document later\n\t\t\t\t\tif (!bypassVersions && this.useVersions) {\n\t\t\t\t\t\tversionOps.push({\n\t\t\t\t\t\t\tfilter: doc.filter,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// No need to modify the operation further\n\t\t\t\t}\n\t\t\t\telse if (opType === 'replaceOne') {\n\t\t\t\t\t// If this.timestamps is true, set updatedAt\n\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\tdoc.replacement.updatedAt = new Date();\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If this.useVersions is true, increment __v\n\t\t\t\t\tif (!bypassVersions && this.useVersions) {\n\t\t\t\t\t\tdoc.replacement.__v = (doc.replacement.__v || 0) + 1;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Prepare log entry\n\t\t\t\t\tif (!bypassLogs && this.createLogs) {\n\t\t\t\t\t\tlogs.push({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc.filter._id || null,\n\t\t\t\t\t\t\tpayload:\n\t\t\t\t\t\t\t\tgetBinarySize(JSON.stringify(doc.replacement)) < 1000000\n\t\t\t\t\t\t\t\t\t? JSON.stringify(doc.replacement, null, 2)\n\t\t\t\t\t\t\t\t\t: 'Too Big',\n\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\tid_user: '', // Add user info if available\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// For versioning, store the filter to fetch the document later\n\t\t\t\t\tif (!bypassVersions && this.useVersions) {\n\t\t\t\t\t\tversionOps.push({\n\t\t\t\t\t\t\tfilter: doc.filter,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Since we might have modified doc.replacement, update the operation\n\t\t\t\t\top[opType].replacement = doc.replacement;\n\t\t\t\t}\n\t\t\t\telse if (opType === 'deleteOne' || opType === 'deleteMany') {\n\t\t\t\t\t// Prepare log entry\n\t\t\t\t\tif (!bypassLogs && this.createLogs) {\n\t\t\t\t\t\tlogs.push({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc.filter._id || null,\n\t\t\t\t\t\t\tpayload:\n\t\t\t\t\t\t\t\tgetBinarySize(JSON.stringify(doc.filter)) < 1000000\n\t\t\t\t\t\t\t\t\t? JSON.stringify(doc.filter, null, 2)\n\t\t\t\t\t\t\t\t\t: 'Too Big',\n\t\t\t\t\t\t\tmethod: opType,\n\t\t\t\t\t\t\tid_user: '', // Add user info if available\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// For versioning, store the filter to fetch the document later\n\t\t\t\t\tif (!bypassVersions && this.useVersions) {\n\t\t\t\t\t\tversionOps.push({\n\t\t\t\t\t\t\tfilter: doc.filter,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// No need to modify the operation\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow new Error(`Unsupported operation type: ${opType}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet affectedDocs = [];\n\n\t\t\t// Handle versioning\n\t\t\tif (!bypassVersions && this.useVersions && versionOps.length > 0) {\n\t\t\t\ttry {\n\t\t\t\t\t// Fetch the affected documents\n\t\t\t\t\tconst versionFilters = versionOps.map((v) => v.filter);\n\n\t\t\t\t\tif (versionFilters.length) {\n\t\t\t\t\t\taffectedDocs = await ResolveIOServer.getMainDB().collection(this.collectionName).find({ $or: versionFilters }, {session}).toArray();\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\t// Prepare version documents\n\t\t\t\t\tconst versionInserts = affectedDocs.map((doc) => ({\n\t\t\t\t\t\tinsertOne: {\n\t\t\t\t\t\t\tdocument: {\n\t\t\t\t\t\t\t\t...doc,\n\t\t\t\t\t\t\t\t_id: { _id: doc._id, __v: doc.__v },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\t// Insert versions in bulk\n\t\t\t\t\tif (versionInserts.length > 0) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection(this.versionCollection).bulkWrite(<any>versionInserts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch {}\n\t\t\t}\n\n\t\t\t// Execute bulkWrite\n\t\t\tconst monitor = MonitorMongo.create('bulkWrite', this.collectionName, JSON.stringify([batchOps, safeOptions]));\n\n\t\t\ttry {\n\t\t\t\tawait this.retryWrite(\n\t\t\t\t\t() => ResolveIOServer.getMainDB().collection(this.collectionName).bulkWrite(batchOps, options || undefined),\n\t\t\t\t\toptions\n\t\t\t\t);\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Bulk Write', this.collectionName, operations, safeOptions, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\t\n\t\t\t\terr.message = `Error in Bulk Write: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait monitor.finish();\n\t\t\t}\n\t\n\t\t\t// Insert logs in bulk\n\t\t\tif (!bypassLogs && this.createLogs && logs.length > 0) {\n\t\t\t\tif (\n\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t) {\n\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLogs(logs.map(a => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\tdata: a\n\t\t\t\t\t\t};\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet bwOptions = null;\n\t\t\t\t\tbwOptions = {session, ordered: false};\n\n\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').bulkWrite(logs.map(a => {\n\t\t\t\t\t\ta.client = 'ResolveIO';\n\t\t\t\t\t\ta.instance = ResolveIOServer.getInstanceHost();\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tinsertOne: {\n\t\t\t\t\t\t\t\tdocument: a\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}), bwOptions);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!bypassVersions && this.useVersions) {\n\t\t\t\ttry {\n\t\t\t\t\t// Delete old versions beyond the latest 5\n\t\t\t\t\tconst affectedDocIds = affectedDocs.map((doc) => doc._id);\n\n\t\t\t\t\tconst pipeline = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: { '_id._id': { $in: affectedDocIds } },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$sort: { '_id._id': 1, '_id.__v': -1 },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t_id: '$_id._id',\n\t\t\t\t\t\t\t\tversions: { $push: '$_id' },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tversionsToDelete: { $slice: ['$versions', 5, { $size: '$versions' }] },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ $unwind: '$versionsToDelete' },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$replaceRoot: { newRoot: { _id: '$versionsToDelete' } },\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t\n\t\t\t\t\tconst oldVersions = await ResolveIOServer.getMainDB().collection(this.versionCollection).aggregate(pipeline).toArray();\n\n\t\t\t\t\tif (oldVersions.length > 0) {\n\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection(this.versionCollection).deleteMany({ _id: { $in: oldVersions.map((v) => v._id) } });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch {}\n\t\t\t}\n\t\n\t\t\topIndex += BATCH_SIZE;\n\t\n\t\t\t// Yield to the event loop\n\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\tawait new Promise((resolve) => setImmediate(resolve));\n\t\n\t\t\t// Invalidate cache\n\t\t\tif (!this.skipCache) {\n\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t}\n\t\t}\n\t\n\t\treturn { ok: 1 } as BulkWriteResult; // Adjust return value as per your requirements\n\t}\n\n\tasync countDocuments(\n\t\tfilter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {},\n\t\toptions?: CountDocumentsOptions,\n\t\tskipCache = false\n\t): Promise<number> {\n\t\t\n\t\t// ********* COUNTS ARE NOT SUPPORTED IN MONGO SESSIONS! ***************\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\t// Check if the filter is empty\n\t\tconst isUnfiltered = Object.keys(filter).length === 0;\n\n\t\tif (isUnfiltered) {\n\t\t\t// Use collection stats for an unfiltered count\n\t\t\treturn ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).estimatedDocumentCount(safeOptions);\n\t\t}\n\t\telse if (!skipCache && !this.skipCache) {\n\t\t\t// Use cached count if skipCache is false\n\t\t\treturn ResolveIOServer.getMongoManager().countDocuments(this.collectionName, filter, safeOptions);\n\t\t}\n\t\telse {\n\t\t\t// Fallback to direct countDocuments call with monitoring if skipCache is true\n\n\t\t\tlet monitor = MonitorMongo.create('countDocuments', this.collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\t\ttry {\n\t\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).countDocuments(<any>filter, safeOptions);\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Count Documents', this.collectionName, filter, safeOptions, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\t\n\t\t\t\terr.message = `Error in Count Documents: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait monitor.finish();\n\t\t\t}\n\t\t}\n\t}\n\n\t//Helper Function (1 or Many) - Not Real Mongo Function\n\tcreate(f_docs: T | T[], options?: InsertOneOptions | BulkWriteOptions): Promise<T | T[]> {\n\t\tif (!Array.isArray(f_docs)) {\n\t\t\treturn this.insertOne(f_docs, <InsertOneOptions>options);\n\t\t}\n\t\telse if (f_docs.length === 1) {\n\t\t\treturn this.insertOne(f_docs[0], <InsertOneOptions>options);\n\t\t}\n\n\t\treturn this.insertMany(f_docs, <BulkWriteOptions>options);\n\t}\n\n\tasync createIndex(fieldOrSpec: any, options?: CreateIndexesOptions): Promise<string> {\n\t\t// Check if index already exists based on the key\n\n\t\ttry {\n\t\t\tconst dbCollection = ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions);\n\t\t\tconst existingIndexes = await dbCollection.indexes();\n\n\t\t\t// Check if an index with the same key already exists\n\t\t\tconst indexExists = existingIndexes.some(index => \n\t\t\t\tJSON.stringify(index.key) === JSON.stringify(fieldOrSpec)\n\t\t\t);\n\n\t\t\tif (indexExists) {\n\t\t\t\treturn 'Index already exists'; // Skip creation if index exists\n\t\t\t}\n\n\t\t\treturn await dbCollection.createIndex(fieldOrSpec, options || undefined);\n\t\t}\n\t\tcatch {}\n\t\t\n\t\treturn 'Index creation queued';\n\t}\n\t\n\tasync createIndexes(indexSpecs: IndexDescription[], options?: CreateIndexesOptions): Promise<string[]> {\n\t\ttry {\n\t\t\tconst dbCollection = ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions);\n\t\t\tconst existingIndexes = await dbCollection.indexes();\n\n\t\t\t// Filter out indexes that already exist based on the key\n\t\t\tconst indexesToCreate = indexSpecs.filter(indexSpec => \n\t\t\t\t!existingIndexes.some(existingIndex => \n\t\t\t\t\tJSON.stringify(existingIndex.key) === JSON.stringify(indexSpec.key)\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// If no new indexes to create, resolve early\n\t\t\tif (indexesToCreate.length === 0) {\n\t\t\t\treturn ['All indexes already exist'];\n\t\t\t}\n\n\t\t\treturn await dbCollection.createIndexes(indexesToCreate, options || undefined);\n\t\t}\n\t\tcatch {}\n\n\t\treturn ['Index creation queued'];\n\t}\n\t\n\tasync deleteMany(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: DeleteOptions, bypassLogs = false, bypassSession = false): Promise<DeleteResult> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tif ((this.createLogs && !bypassLogs) || this.useVersions) {\n\t\t\tlet docs = await this.find(filter, {session});\n\n\t\t\tfor (let i = 0; i < docs.length; i++) {\n\t\t\t\tlet doc = docs[i];\n\t\t\t\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'deleteMany',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'deleteMany',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t}, {session});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 1}}]});\n\t\t\t\t\t}\n\t\t\t\t\tcatch {}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet monitor = MonitorMongo.create('deleteMany', this.collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).deleteMany(<any>filter, options || undefined);\n\t\t\tif (!this.skipCache) {\n\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t}\n\n\t\t\treturn res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Delete Many', this.collectionName, filter, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Delete Many: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync deleteOne(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOneAndDeleteOptions, bypassLogs = false, bypassSession = false): Promise<DeleteResult> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tif (this.createLogs && !bypassLogs) {\n\t\t\tlet monitor = MonitorMongo.create('findOneAndDelete', this.collectionName, JSON.stringify([filter, safeOptions]));\n\t\t\t\n\t\t\ttry {\n\t\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).deleteOne(<any>filter, options || undefined);\n\t\t\t\tlet doc = await this.findOne(filter, options || undefined);\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\t\tid_document: doc._id as string,\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: 'deleteOne',\n\t\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id as string,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'deleteOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}, {session});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.useVersions) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\n\t\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 1}}]});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Delete One (Find One And Delete)', this.collectionName, filter, safeOptions, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\t\n\t\t\t\terr.message = `Error in Delete One (Find One And Delete): ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait monitor.finish();\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tlet monitor = MonitorMongo.create('deleteOne', this.collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\t\ttry {\n\t\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).deleteOne(<any>filter, options || undefined);\n\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Delete One', this.collectionName, filter, safeOptions, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\t\n\t\t\t\terr.message = `Error in Delete One: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait monitor.finish();\n\t\t\t}\n\t\t}\n\t}\n\n\tasync distinct(key: string, filter?: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, options?: CommandOperationOptions, bypassSession = false): Promise<T[]> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('distinct', this.collectionName, JSON.stringify([key, filter, safeOptions]));\n\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).distinct(key, <any>filter, options || undefined);\n\t\t\treturn res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Distinct', this.collectionName, filter, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Distinct: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync drop(options?: CommandOperationOptions, bypassSession = false): Promise<boolean> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('drop', this.collectionName, JSON.stringify([safeOptions]));\n\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).drop(options);\n\t\t\treturn res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Drop Collection', this.collectionName, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Drop Collection: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync dropIndex(indexName: string, options?: CommandOperationOptions, bypassSession = false): Promise<Document> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('dropIndex', this.collectionName, JSON.stringify([indexName, safeOptions]));\n\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).dropIndex(indexName, options || undefined);\n\t\t\treturn <Document>res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Drop Index', this.collectionName, indexName, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Drop Index: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync dropIndexes(options?: CommandOperationOptions, bypassSession = false): Promise<boolean> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('dropIndexes', this.collectionName, JSON.stringify([safeOptions]));\n\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).dropIndexes(options);\n\t\t\treturn res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Drop Indexes', this.collectionName, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Drop Indexes: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync find(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: MongoManagerFindOptions, skipCache = false, bypassSession = false): Promise<T[]> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\t\t \n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tif (!skipCache && !this.skipCache) {\n\t\t\treturn ResolveIOServer.getMongoManager().find(this.collectionName, filter, options || undefined);\n\t\t}\n\t\telse {\n\t\t\tlet monitor = MonitorMongo.create('find', this.collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find<T>(<any>filter, options).toArray();\n\t\t\trecordDependencyResult(this.collectionName, res, { filter, meta: buildQueryMetaFromFindOptions(safeOptions) });\n\t\t\treturn res;\n\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Find', this.collectionName, filter, safeOptions, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\t\n\t\t\t\terr.message = `Error in Find: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait monitor.finish();\n\t\t\t}\n\t\t}\n\t}\n\n\tasync findById(id: string, options?: MongoManagerFindOptions, skipCache = false, bypassSession = false): Promise<T> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tif (!skipCache && !this.skipCache) {\n\t\t\treturn ResolveIOServer.getMongoManager().findOne<T>(this.collectionName, {_id: id}, options || undefined);\n\t\t}\n\t\telse {\n\t\t\tlet monitor = MonitorMongo.create('findById', this.collectionName, JSON.stringify([{_id: id}, safeOptions]));\n\t\t\t\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOne<T>(<any>{_id: id}, options || undefined);\n\t\t\trecordDependencyResult(this.collectionName, res, { filter: { _id: id }, meta: buildQueryMetaFromFindOptions(safeOptions) });\n\t\t\treturn res;\n\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Find By ID', this.collectionName, id, safeOptions, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\t\n\t\t\t\terr.message = `Error in Find By ID: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait monitor.finish();\n\t\t\t}\n\t\t}\n\t}\n\n\tasync findCount(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: MongoManagerFindOptions, bypassSession = false): Promise<Number> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('findCount', this.collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find(<any>filter, options).count();\n\t\t\trecordDependencyResult(this.collectionName, res, { filter });\n\t\t\treturn res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Find Count', this.collectionName, filter, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Find Count: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tfindCursor(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: MongoManagerFindOptions, bypassSession = false): FindCursor {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('findCursor', this.collectionName, JSON.stringify([filter, safeOptions]));\n\t\tlet cursor = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find(<any>filter, options || undefined);\n\t\tcursor.on('close', async ev => {\n\t\t\tawait monitor.finish();\n\t\t\tcursor.removeAllListeners();\n\t\t\treturn ev;\n\t\t});\n\n\t\treturn cursor;\n\t}\n\n\tfindStream(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: MongoManagerFindOptions, streamOptions?: any, bypassSession = false) {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\t\t\n\t\tlet monitor = MonitorMongo.create('findStream', this.collectionName, JSON.stringify([filter, safeOptions, streamOptions]));\n\t\tlet stream = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find(<any>filter, options).stream().on('close', async ev => {\n\t\t\tawait monitor.finish();\n\t\t\treturn ev;\n\t\t});\n\n\t\treturn stream;\n\t}\n\n\tasync findOne(filter: MongoManagerFilter<T> | MongoManagerFilterOperators<T> = {}, options?: MongoManagerFindOptions, skipCache = false, bypassSession = false): Promise<T> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\tif (!skipCache && !this.skipCache) {\n\t\t\treturn ResolveIOServer.getMongoManager().findOne(this.collectionName, filter, options || undefined);\n\t\t}\n\t\telse {\n\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\tlet { session, ...safeOptions } = options || {};\n\n\t\t\tlet monitor = MonitorMongo.create('findOne', this.collectionName, JSON.stringify([filter, safeOptions]));\n\t\t\t\n\t\t\ttry {\n\t\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOne<T>(<any>filter, options || undefined);\n\t\t\t\trecordDependencyResult(this.collectionName, res, { filter });\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Find One', this.collectionName, filter, safeOptions, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\t\n\t\t\t\terr.message = `Error in Find One: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait monitor.finish();\n\t\t\t}\n\t\t}\n\t}\n\n\tasync findOneAndDelete(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOneAndDeleteOptions, bypassLogs = false, bypassSession = false): Promise<T> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('findOneAndDelete', this.collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\ttry {\n\t\t\tlet doc = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndDelete(<any>filter, options) as T;\n\t\t\t\n\t\t\tif (doc) {\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id as string,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id as string,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t}, {session});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\t\t\t\t\tcatch {}\n\t\t\t\t}\n\n\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t}\n\n\t\t\t\treturn <T>doc;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Find One And Delete', this.collectionName, filter, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Find One And Delete: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync findOneAndReplace(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, replacement: T, options?: FindOneAndReplaceOptions, bypassLogs = false, bypassCheckSchema = false, bypassSession = false): Promise<T> {\n\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\tconst validation = this.simplschema.newContext();\n\t\t\tconst isValid = validation.validate(replacement);\n\n\t\t\tif (!isValid) {\n\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - findOneAndReplace', validation.validationErrors());\n\t\t\t\tawait ResolveIOServer.getMainServer().getMethodManager().callMethod('insertErrorLog', 'Schema Failed on findOneAndReplace - ' + this.collectionName, JSON.stringify([validation.validationErrors(), replacement], null, 2));\n\t\t\t\tthrow new Error(JSON.stringify(validation.validationErrors(), null, 2));\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet date = new Date();\n\n\t\tif (this.timestamps) {\n\t\t\treplacement.updatedAt = date;\n\t\t}\n\n\t\tif (options && options.upsert) {\n\t\t\tif (!replacement._id) {\n\t\t\t\treplacement._id = objectIdHexString();\n\t\t\t}\n\n\t\t\tif (this.useVersions) {\n\t\t\t\treplacement.__v = 0;\n\t\t\t}\n\n\t\t\tif (this.timestamps && !replacement.createdAt) {\n\t\t\t\treplacement.createdAt = date;\n\t\t\t}\n\t\t}\n\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('findOneAndReplace', this.collectionName, JSON.stringify([filter, replacement, safeOptions]));\n\n\t\ttry {\n\t\t\tlet doc = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndReplace(<any>filter, replacement, options) as T;\n\n\t\t\tif (doc) {\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id as string,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, replacement, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id as string,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, replacement, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t}, {session});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\t\t\t\t\tcatch {}\n\t\t\t\t}\n\n\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t}\n\n\t\t\t\treturn <T>doc;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Find One And Replace', this.collectionName, filter, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Find One And Replace: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync findOneAndUpdate(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, update: MongoManagerUpdateFilter<T>, options?: FindOneAndUpdateOptions, bypassLogs = false, bypassCheckSchema = false, bypassSession = false): Promise<T> {\n\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\tconst validation = this.simplschema.newContext();\n\t\t\tconst isValid = validation.validate(update, {modifier: true});\n\n\t\t\tif (!isValid) {\n\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - findOneAndUpdate', validation.validationErrors());\n\t\t\t\tawait ResolveIOServer.getMainServer().getMethodManager().callMethod('insertErrorLog', 'Schema Failed on findOneAndUpdate - ' + this.collectionName, JSON.stringify([validation.validationErrors(), update], null, 2));\n\t\t\t\tthrow new Error(JSON.stringify(validation.validationErrors(), null, 2));\n\t\t\t}\n\t\t}\n\n\t\tif (this.timestamps) {\n\t\t\tlet date = new Date(); \n\t\t\t\n\t\t\tif (!update.$set) {\n\t\t\t\tupdate.$set = <any>{updatedAt: date};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tupdate.$set.updatedAt = date;\n\t\t\t}\n\t\t}\n\n\t\tif (options && options.upsert) {\n\t\t\tif (!update.$setOnInsert) {\n\t\t\t\tif (this.timestamps) {\n\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t_id: objectIdHexString()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!update.$setOnInsert._id) {\n\t\t\t\t\tupdate.$setOnInsert._id = objectIdHexString();\n\t\t\t\t}\n\n\t\t\t\tif (this.timestamps && !update.$setOnInsert.createdAt) {\n\t\t\t\t\tupdate.$setOnInsert.createdAt = new Date();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t \n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('findOneAndUpdate', this.collectionName, JSON.stringify([filter, update, safeOptions]));\n\n\t\ttry {\n\t\t\tlet doc = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndUpdate(<any>filter, <any>update, options) as T;\n\n\t\t\tif (doc) {\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t) {\t\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: <string>doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: <string>doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t}, {session});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\t\t\t\t\tcatch {}\n\t\t\t\t}\n\n\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn <T>doc;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Find One And Update', this.collectionName, filter, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Find One And Update: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync indexes(options: IndexInformationOptions): Promise<IndexDescriptionCompact | IndexDescriptionCompact[]> {\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('indexes', this.collectionName, JSON.stringify([safeOptions]));\n\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).indexes(options);\n\t\t\treturn res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Indexes', this.collectionName, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Indexes: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync indexExists(indexes: string | string[], options?: IndexInformationOptions): Promise<boolean> {\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('indexExists', this.collectionName, JSON.stringify([indexes, safeOptions]));\n\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).indexExists(indexes, options || undefined);\n\t\t\treturn res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Index Exists', this.collectionName, indexes, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Index Exists: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync insertMany(docs: T[], options?: BulkWriteOptions, bypassLogs = false, bypassCheckSchema = false, bypassMonitor = false, bypassSession = false): Promise<T[]> {\n\t\tif (!docs.length) {\n\t\t\treturn [];\n\t\t}\n\t\t\n\t\tlet validationResults = [];\n\n\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\tfor (let doc of docs) {\n\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\tconst isValid = validation.validate(doc);\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - insertMany', validation.validationErrors());\n\t\t\t\t\tawait ResolveIOServer.getMainServer().getMethodManager().callMethod('insertErrorLog', 'Schema Failed on insertMany - ' + this.collectionName, JSON.stringify([validation.validationErrors(), doc], null, 2));\n\t\t\t\t\tvalidationResults.push(false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvalidationResults.push(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet validDocs = this.checkSchema ? docs.filter((a, idx) => validationResults[idx]) : docs;\n\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t \n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tfor (let i = 0; i < validDocs.length; i++) {\n\t\t\tlet doc = validDocs[i];\n\n\t\t\tif (!doc._id) {\n\t\t\t\tdoc._id = objectIdHexString();\n\t\t\t}\n\n\t\t\tif (this.timestamps) {\n\t\t\t\tlet date = new Date();\n\n\t\t\t\tif (!doc.createdAt) {\n\t\t\t\t\tdoc.createdAt = date;\n\t\t\t\t}\n\n\t\t\t\tif (!doc.updatedAt) {\n\t\t\t\t\tdoc.updatedAt = date;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.useVersions && !doc.hasOwnProperty('__v')) {\n\t\t\t\tdoc.__v = 0;\n\t\t\t}\n\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tif (\n\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t) {\n\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, safeOptions])) < 1000000 ? JSON.stringify([doc, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'insertMany',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, safeOptions])) < 1000000 ? JSON.stringify([doc, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'insertMany',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: '',\n\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t}, {session});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (validDocs.length) {\n\t\t\tlet monitor = null;\n\t\t\t\n\t\t\tif (!bypassMonitor) {\n\t\t\t\tmonitor = MonitorMongo.create('insertMany', this.collectionName, JSON.stringify([validDocs, safeOptions]));\n\t\t\t}\n\t\t\t\n\t\t\ttry {\n\t\t\t\tawait this.retryWrite(() => ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).insertMany(<OptionalUnlessRequiredId<T>[]>validDocs, options || undefined), options);\n\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t}\n\t\t\t\treturn validDocs;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Insert Many', this.collectionName, docs, safeOptions, {\n\t\t\t\t\tcode: err.code,\n\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\tmessage: err.message,\n\t\t\t\t\tstack: err.stack\n\t\t\t\t}], null, 2));\n\t\n\t\t\t\terr.message = `Error in Insert Many: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tif (monitor) {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tasync insertOne(doc: T, options?: InsertOneOptions, bypassLogs = false, bypassCheckSchema = false, bypassSession = false): Promise<T> {\n\t\tif (!doc._id) {\n\t\t\tdoc._id = objectIdHexString();\n\t\t}\n\n\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\tconst validation = this.simplschema.newContext();\n\t\t\tconst isValid = validation.validate(doc);\n\n\t\t\tif (!isValid) {\n\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - insertOne', validation.validationErrors());\n\t\t\t\tawait ResolveIOServer.getMainServer().getMethodManager().callMethod('insertErrorLog', 'Schema Failed on insertOne - ' + this.collectionName, JSON.stringify([validation.validationErrors(), doc], null, 2));\n\t\t\t\tthrow new Error(JSON.stringify(validation.validationErrors(), null, 2));\n\t\t\t}\n\t\t}\n\n\t\tif (this.timestamps) {\n\t\t\tlet date = new Date();\n\t\t\n\t\t\tif (!doc.createdAt) {\n\t\t\t\tdoc.createdAt = date;\n\t\t\t}\n\n\t\t\tif (!doc.updatedAt) {\n\t\t\t\tdoc.updatedAt = date;\n\t\t\t}\n\t\t}\n\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t \n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tif (this.createLogs && !bypassLogs) {\n\t\t\tif (\n\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t) {\n\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\ttype: 'log',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, safeOptions])) < 1000000 ? JSON.stringify([doc, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'insertOne',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: '',\n\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'document',\n\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, safeOptions])) < 1000000 ? JSON.stringify([doc, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'insertOne',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: '',\n\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t}, {session});\n\t\t\t}\n\t\t}\n\n\t\tif (this.useVersions && !doc.hasOwnProperty('__v')) {\n\t\t\tdoc.__v = 0;\n\t\t}\n\n\t\tlet monitor = MonitorMongo.create('insertOne', this.collectionName, JSON.stringify([doc, safeOptions]));\n\n\t\ttry {\n\t\t\tawait this.retryWrite(() => ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).insertOne(<OptionalUnlessRequiredId<T>>doc, options || undefined), options);\n\t\t\tif (!this.skipCache) {\n\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t}\n\t\t\t\n\t\t\treturn doc;\n\t\t}\n\t\tcatch(err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Insert One', this.collectionName, doc, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Insert One: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tlistIndexes(options?: ListIndexesOptions, bypassSession = false): ListIndexesCursor {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('listIndexes', this.collectionName, JSON.stringify([safeOptions]));\n\t\tlet cursor = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).listIndexes(options);\n\t\tcursor.on('close', async ev => {\n\t\t\tawait monitor.finish();\n\t\t\treturn ev;\n\t\t});\n\n\t\treturn cursor;\n\t}\n\n\tasync rename(newName: string, options?: RenameOptions, bypassSession = false): Promise<Collection<Document>> {\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tsession: mongoSession\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tlet monitor = MonitorMongo.create('rename', this.collectionName, JSON.stringify([newName, safeOptions]));\n\t\ttry {\n\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).rename(newName, options || undefined);\n\t\t\treturn res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Rename', this.collectionName, newName, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Rename: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync replaceOne(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, replacement: T, options?: ReplaceOptions, bypassLogs = false, bypassCheckSchema = false, doc: T = null, bypassSession = false) : Promise<UpdateResult> {\n\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\tconst validation = this.simplschema.newContext();\n\t\t\tconst isValid = validation.validate(replacement);\n\n\t\t\tif (!isValid) {\n\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - replaceOne', validation.validationErrors());\n\t\t\t\tawait ResolveIOServer.getMainServer().getMethodManager().callMethod('insertErrorLog', 'Schema Failed on replaceOne - ' + this.collectionName, JSON.stringify([validation.validationErrors(), replacement], null, 2));\n\t\t\t\tthrow new Error(JSON.stringify(validation.validationErrors(), null, 2));\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet date = new Date();\n\t\t\n\t\tif (this.timestamps) {\n\t\t\treplacement.updatedAt = date;\n\t\t}\n\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\n\t\t\t// console.log('Replace One', 'Has Session', this.collectionName, JSON.stringify(filter, null, 2), JSON.stringify(replacement, null, 2));\n\t\t}\n\t\telse {\n\t\t\t// console.log('Replace One', 'No Session', this.collectionName, JSON.stringify(filter, null, 2), JSON.stringify(replacement, null, 2));\n\t\t}\n\n\t\t \n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tif (this.useVersions) {\n\t\t\tif (!doc) {\n\t\t\t\tdoc = await this.findOne(<any>filter, {session}, true);\n\t\t\t}\n\n\t\t\tif (doc) {\n\t\t\t\tif (this.timestamps && !replacement.createdAt && doc.createdAt) {\n\t\t\t\t\treplacement.createdAt = doc.createdAt;\n\t\t\t\t}\n\n\t\t\t\tif (doc.__v === replacement.__v) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\treplacement.__v += 1;\n\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\n\t\t\t\t\t\tif (doc.__v >= 4) {\n\t\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 4}}]});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch {}\n\n\t\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, replacement, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, replacement, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}, {session});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet monitor = MonitorMongo.create('replaceOne', this.collectionName, JSON.stringify([filter, replacement, safeOptions]));\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet res = await this.retryWrite(() => ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options), options);\n\t\t\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn res;\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Replace One', this.collectionName, filter, replacement, safeOptions, {\n\t\t\t\t\t\t\tcode: err.code,\n\t\t\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t\t}], null, 2));\n\t\t\t\n\t\t\t\t\t\terr.message = `Error in Replace One: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t\tfinally {\n\t\t\t\t\t\tawait monitor.finish();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.log('invalid version - ' + this.collectionName, doc.__v, replacement.__v);\n\n\t\t\t\t\tlet prevDoc = await ResolveIOServer.getMongoManager().collection(this.versionCollection).findOne({\n\t\t\t\t\t\t_id: <any>{\n\t\t\t\t\t\t\t_id: doc._id,\n\t\t\t\t\t\t\t__v: replacement.__v\n\t\t\t\t\t\t}\n\t\t\t\t\t}, null, true);\n\n\t\t\t\t\tif (prevDoc) {\n\t\t\t\t\t\tlet docId = doc._id;\n\t\t\t\t\t\tlet docVersion = doc.__v;\n\t\t\t\t\t\tlet updatedDoc: T = getMongoMergeUpdatedDoc(replacement, doc, prevDoc);\n\t\t\t\t\t\tupdatedDoc._id = docId;\n\t\t\t\t\t\tupdatedDoc.__v = docVersion + 1;\n\n\t\t\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\t\t\tid_document: docId,\n\t\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['invalidVersion - merge', doc, filter, updatedDoc, safeOptions])) < 1000000 ? JSON.stringify(['invalidVersion - merge', doc, filter, updatedDoc, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\t\tid_document: docId,\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['invalidVersion - merge', doc, filter, updatedDoc, safeOptions])) < 1000000 ? JSON.stringify(['invalidVersion - merge', doc, filter, updatedDoc, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t\t}, {session});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet monitor = MonitorMongo.create('replaceOne', this.collectionName, JSON.stringify([filter, updatedDoc, safeOptions]));\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet res = await this.retryWrite(() => ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, updatedDoc, options), options);\n\t\t\t\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn res;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Replace One', this.collectionName, filter, replacement, safeOptions, {\n\t\t\t\t\t\t\t\tcode: err.code,\n\t\t\t\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t\t\t}], null, 2));\n\t\t\t\t\n\t\t\t\t\t\t\terr.message = `Error in Replace One: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tawait monitor.finish();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow new Error('Error in Replace One: Invalid Version And Could Not Find History - DB: ' + doc.__v + ', Trying to update with :' + replacement.__v);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (options && options.upsert) {\n\t\t\t\tif (this.timestamps) {\n\t\t\t\t\treplacement.createdAt = date;\n\t\t\t\t}\n\n\t\t\t\tif (!replacement._id) {\n\t\t\t\t\treplacement._id = objectIdHexString();\n\t\t\t\t}\n\n\t\t\t\treplacement.__v = 0;\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: replacement._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, replacement, safeOptions])) < 1000000 ? JSON.stringify(['upsert', filter, replacement, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: replacement._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, replacement, safeOptions])) < 1000000 ? JSON.stringify(['upsert', filter, replacement, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t}, {session});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlet monitor = MonitorMongo.create('replaceOne', this.collectionName, JSON.stringify([filter, replacement, safeOptions]));\n\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await this.retryWrite(() => ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options), options);\n\t\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t}\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Replace One', this.collectionName, filter, replacement, safeOptions, {\n\t\t\t\t\t\tcode: err.code,\n\t\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t}], null, 2));\n\t\t\n\t\t\t\t\terr.message = `Error in Replace One: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tawait monitor.finish();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn {\n\t\t\t\t\tacknowledged: false,\n\t\t\t\t\tmatchedCount: 0,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\tupsertedCount: 0,\n\t\t\t\t\tupsertedId: null\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (options && options.upsert) {\n\t\t\t\tif (this.timestamps && !replacement.createdAt) {\n\t\t\t\t\treplacement.createdAt = date;\n\t\t\t\t}\n\n\t\t\t\tif (!replacement._id) {\n\t\t\t\t\treplacement._id = objectIdHexString();\n\t\t\t\t}\n\n\t\t\t\treplacement.__v = 0;\n\t\t\t}\n\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tif (!options) {\n\t\t\t\t\toptions = <FindOneAndReplaceOptions>{returnDocument: 'before'};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t(<FindOneAndReplaceOptions>options).returnDocument = 'before';\n\t\t\t\t}\n\n\t\t\t\t \n\t\t\t\tlet { session, ...safeOptions } = options || {};\n\n\t\t\t\tlet monitor = MonitorMongo.create('findOneAndReplace', this.collectionName, JSON.stringify([filter, replacement, safeOptions]));\n\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await this.retryWrite(() => ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options), options);\n\n\t\t\t\t\tlet doc = await this.findOne(filter, options || undefined);\n\n\t\t\t\t\tif (doc) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\t\tid_document: <string>doc._id,\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, replacement, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: <string>doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, replacement, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}, {session});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\t\tid_document: replacement._id,\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, replacement, safeOptions])) < 1000000 ? JSON.stringify(['upsert', filter, replacement, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: replacement._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, replacement, safeOptions])) < 1000000 ? JSON.stringify(['upsert', filter, replacement, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}, {session});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Replace One (Find One And Replace)', this.collectionName, filter, safeOptions, {\n\t\t\t\t\t\tcode: err.code,\n\t\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t}], null, 2));\n\t\t\n\t\t\t\t\terr.message = `Error in Replace One (Find One And Replace): ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tawait monitor.finish();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet monitor = MonitorMongo.create('replaceOne', this.collectionName, JSON.stringify([filter, replacement, safeOptions]));\n\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await this.retryWrite(() => ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options), options);\n\t\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t}\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Replace One', this.collectionName, filter, replacement, safeOptions, {\n\t\t\t\t\t\tcode: err.code,\n\t\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t}], null, 2));\n\t\t\n\t\t\t\t\terr.message = `Error in Replace One: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tawait monitor.finish();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tasync updateMany(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, update: MongoManagerUpdateFilter<T>, options?: UpdateOptions, bypassLogs = false, bypassCheckSchema = false, bypassVersions = false, bypassSession = false) : Promise<UpdateResult> {\n\t\tconst isEmptyUpdate = !update.$set && !update.$unset && !update.$inc && !update.$setOnInsert && !update.$push && !update.$pull && !update.$addToSet && !update.$min && !update.$max && !update.$currentDate && !update.$mul && !update.$rename;\n\n\t\tconst allEmpty =\n\t\t\tisEmptyUpdate ||\n\t\t\tObject.values(update).every(op => {\n\t\t\t\tif (!op) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfor (let key in op) {\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(op, key)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tif (allEmpty) {\n\t\t\treturn {\n\t\t\t\tacknowledged: false,\n\t\t\t\tmatchedCount: 0,\n\t\t\t\tmodifiedCount: 0,\n\t\t\t\tupsertedCount: 0,\n\t\t\t\tupsertedId: null\n\t\t\t};\n\t\t}\n\t\t\n\t\tif (this.timestamps) {\n\t\t\tlet date = new Date();\n\n\t\t\tif (!update.$set) {\n\t\t\t\tupdate.$set = <any>{updatedAt: date};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tupdate.$set.updatedAt = date;\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\tconst validation = this.simplschema.newContext();\n\t\t\tconst isValid = validation.validate(update, {modifier: true});\n\n\t\t\tif (!isValid) {\n\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - updateMany', validation.validationErrors());\n\t\t\t\tawait ResolveIOServer.getMainServer().getMethodManager().callMethod('insertErrorLog', 'Schema Failed on updateMany - ' + this.collectionName, JSON.stringify([validation.validationErrors(), update], null, 2));\n\t\t\t\tthrow new Error(JSON.stringify(validation.validationErrors(), null, 2));\n\t\t\t}\n\t\t}\n\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t}\n\n\t\t \n\t\tlet { session, ...safeOptions } = options || {};\n\n\t\tif ((this.useVersions && !bypassVersions) || (this.createLogs && !bypassLogs)) {\n\t\t\tlet docs = await this.find(filter, {session});\n\n\t\t\tfor (let i = 0; i < docs.length; i++) {\n\t\t\t\tlet doc = docs[i];\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'updateMany',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'updateMany',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t}, {session});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\t\t\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (doc.__v >= 4) {\n\t\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 4}}]});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch {}\n\t\n\t\t\t\t\tif (!update.$inc) {\n\t\t\t\t\t\tupdate.$inc = {};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (typeof update.$inc.__v !== 'number') {\n\t\t\t\t\t\tupdate.$inc.__v = 1;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// Managed versioned collections own __v updates.\n\t\t\t\t\tstripManagedVersionFields(update);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet monitor = MonitorMongo.create('updateMany', this.collectionName, JSON.stringify([filter, update, safeOptions]));\n\n\t\ttry {\n\t\t\tlet res = await this.retryWrite<UpdateResult>(() => ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateMany(<any>filter, <any>update, options), options);\n\t\t\tif (!this.skipCache) {\n\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t}\n\n\t\t\treturn res;\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Update Many', this.collectionName, filter, update, safeOptions, {\n\t\t\t\tcode: err.code,\n\t\t\t\tcodeName: err.codeName,\n\t\t\t\tmessage: err.message,\n\t\t\t\tstack: err.stack\n\t\t\t}], null, 2));\n\n\t\t\terr.message = `Error in Update Many: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t\tfinally {\n\t\t\tawait monitor.finish();\n\t\t}\n\t}\n\n\tasync updateOne(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, update: MongoManagerUpdateFilter<T>, options?: UpdateOptions, bypassLogs = false, bypassCheckSchema = false, bypassSession = false) : Promise<UpdateResult> {\n\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\tconst validation = this.simplschema.newContext();\t\t\t\n\t\t\tconst isValid = validation.validate(update, {modifier: true});\n\n\t\t\tif (!isValid) {\n\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - updateOne', validation.validationErrors());\n\t\t\t\tawait ResolveIOServer.getMainServer().getMethodManager().callMethod('insertErrorLog', 'Schema Failed on updateOne - ' + this.collectionName, JSON.stringify([validation.validationErrors(), update], null, 2));\n\t\t\t\tthrow new Error(JSON.stringify(validation.validationErrors(), null, 2));\n\t\t\t}\n\t\t}\n\n\t\tconst isEmptyUpdate = !update.$set && !update.$unset && !update.$inc && !update.$setOnInsert && !update.$push && !update.$pull && !update.$addToSet && !update.$min && !update.$max && !update.$currentDate && !update.$mul && !update.$rename;\n\n\t\tconst allEmpty =\n\t\t\tisEmptyUpdate ||\n\t\t\tObject.values(update).every(op => {\n\t\t\t\tif (!op) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfor (let key in op) {\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(op, key)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tif (allEmpty) {\n\t\t\treturn {\n\t\t\t\tacknowledged: false,\n\t\t\t\tmatchedCount: 0,\n\t\t\t\tmodifiedCount: 0,\n\t\t\t\tupsertedCount: 0,\n\t\t\t\tupsertedId: null\n\t\t\t};\n\t\t}\n\n\n\t\tlet date = new Date();\n\n\t\tif (this.timestamps) {\n\t\t\tif (!update.$set) {\n\t\t\t\tupdate.$set = <any>{updatedAt: date};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tupdate.$set.updatedAt = date;\n\t\t\t}\n\t\t}\n\n\t\tconst mongoSession = ResolveIOServer.getMongoManager().getSession();\n\n\t\tif (mongoSession && !bypassSession && !this.bypassSession && (!options || ((!options.readPreference || options.readPreference === 'primary') && !options.session))) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session: mongoSession};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = mongoSession;\n\t\t\t}\n\t\t\t// console.log('Update One', 'Has Session', this.collectionName, JSON.stringify(filter, null, 2), JSON.stringify(update, null, 2));\n\t\t}\n\t\telse {\n\t\t\t// console.log('Update One', 'No Session', this.collectionName, JSON.stringify(filter, null, 2), JSON.stringify(update, null, 2));\n\t\t}\n\n\t\tlet { session, ...safeOptions } = options || {};\n\t\t\n\t\tif (this.useVersions) {\n\t\t\tlet doc = await this.findOne(filter, {session}, true);\n\n\t\t\tif (doc) {\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t}, {session});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\n\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\n\t\t\t\t\tif (doc.__v >= 4) {\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 4}}]});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch {}\n\n\t\t\t\tif (!update.$inc) {\n\t\t\t\t\tupdate.$inc = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (typeof update.$inc.__v !== 'number') {\n\t\t\t\t\tupdate.$inc.__v = 1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Managed versioned collections own __v updates.\n\t\t\t\tstripManagedVersionFields(update);\n\t\t\t\t\n\t\t\t\tlet monitor = MonitorMongo.create('updateOne', this.collectionName, JSON.stringify([filter, update, safeOptions]));\n\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await this.retryWrite(() => ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, <any>update, options || undefined), options);\n\t\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t}\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Update One', this.collectionName, filter, update, safeOptions, {\n\t\t\t\t\t\tcode: err.code,\n\t\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t}], null, 2));\n\t\t\n\t\t\t\t\terr.message = `Error in Update One: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tawait monitor.finish();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (options && options.upsert) {\n\t\t\t\tif (!update.$setOnInsert) {\n\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t__v: 0\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!update.$setOnInsert._id) {\n\t\t\t\t\t\tupdate.$setOnInsert._id = objectIdHexString();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.timestamps && !update.$setOnInsert.createdAt) {\n\t\t\t\t\t\tupdate.$setOnInsert.createdAt = new Date();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t) {\n\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: update.$setOnInsert._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, update, safeOptions])) < 1000000 ? JSON.stringify(['upsert', filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: update.$setOnInsert._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, update, safeOptions])) < 1000000 ? JSON.stringify(['upsert', filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t}, {session});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlet monitor = MonitorMongo.create('updateOne', this.collectionName, JSON.stringify([filter, update, safeOptions]));\n\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await this.retryWrite(() => ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, <any>update, options || undefined), options);\n\t\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t}\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Update One', this.collectionName, filter, safeOptions, {\n\t\t\t\t\t\tcode: err.code,\n\t\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t}], null, 2));\n\t\t\n\t\t\t\t\terr.message = `Error in Update One: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tawait monitor.finish();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn {\n\t\t\t\t\tacknowledged: false,\n\t\t\t\t\tmatchedCount: 0,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\tupsertedCount: 0,\n\t\t\t\t\tupsertedId: null\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (options && options.upsert) {\n\t\t\t\tif (!update.$setOnInsert) {\n\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t_id: objectIdHexString()\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!update.$setOnInsert._id) {\n\t\t\t\t\t\tupdate.$setOnInsert._id = objectIdHexString();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.timestamps && !update.$setOnInsert.createdAt) {\n\t\t\t\t\t\tupdate.$setOnInsert.createdAt = new Date();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tif (!options) {\n\t\t\t\t\toptions = <FindOneAndUpdateOptions>{returnDocument: 'before'};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t(<FindOneAndUpdateOptions>options).returnDocument = 'before';\n\t\t\t\t}\n\n\t\t\t\tlet monitor = MonitorMongo.create('findOneAndUpdate', this.collectionName, JSON.stringify([filter, update, safeOptions]));\n\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await this.retryWrite(() => ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, <any>update, options || undefined), options);\n\n\t\t\t\t\tlet doc = await this.findOne(filter, options || undefined);\n\n\t\t\t\t\tif (doc) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\t\tid_document: <any>doc._id,\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: <any>doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, safeOptions])) < 1000000 ? JSON.stringify([doc, filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t}, {session});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn res;\n\t\t\t\t\t}\n\t\t\t\t\telse if (update.$setOnInsert) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\t\tid_document: update.$setOnInsert._id,\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, update, safeOptions])) < 1000000 ? JSON.stringify(['upsert', filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait ResolveIOServer.getMainDB().collection('logs').insertOne(<any>{\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: update.$setOnInsert._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, update, safeOptions])) < 1000000 ? JSON.stringify(['upsert', filter, update, safeOptions], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: '',\n\t\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0',\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Update One (Find One And Update)', this.collectionName, filter, safeOptions, {\n\t\t\t\t\t\tcode: err.code,\n\t\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t}], null, 2));\n\t\t\n\t\t\t\t\terr.message = `Error in Update One (Find One And Update): ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tawait monitor.finish();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet monitor = MonitorMongo.create('updateOne', this.collectionName, JSON.stringify([filter, update, safeOptions]));\n\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await this.retryWrite(() => ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, <any>update, options || undefined), options);\n\t\t\t\t\tif (!this.skipCache) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t}\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Update One', this.collectionName, filter, update, safeOptions, {\n\t\t\t\t\t\tcode: err.code,\n\t\t\t\t\t\tcodeName: err.codeName,\n\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t}], null, 2));\n\t\t\n\t\t\t\t\terr.message = `Error in Update One: ${this.collectionName} => ${err.codeName || 'NoCodeName'} => ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tawait monitor.finish();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\twatchCollection(pipeline = [], options?: ChangeStreamOptions, bypassSession = false): ChangeStream<T> {\n\t\tconst session = ResolveIOServer.getMongoManager().getSession();\n\t\tif (session && !bypassSession && !this.bypassSession) {\n\t\t\tif (!options) {\n\t\t\t\toptions = {session};\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.session = session;\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet stream = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).watch(pipeline, options || undefined);\n\t\treturn <ChangeStream<T>>stream;\n\t}\n}\n\nexport class MongoManagerUserCollection<T extends CollectionDocument> extends MongoManagerCollection<T> {\n\tstatic create(options: MongoManagerCollectionOptions) {\n\t\tconst mongoManagerCollection = new MongoManagerUserCollection();\n\t\tmongoManagerCollection.initialize(options);\n\t\treturn mongoManagerCollection;\n\t}\n\t\n\tasync authenticate(user: UserModel, password: string): Promise<{data: UserModel, error: string}> {\n\t\tconst attemptsInterval = Math.pow(100, Math.log(user.attempts + 1));\n\t\tconst calculatedInterval = attemptsInterval < 300000 ? attemptsInterval : 300000;\n\t\n\t\tif (user.last) {\n\t\t\tif (Date.now() - user.last.getTime() < calculatedInterval) {\n\t\t\t\tuser.last = new Date();\n\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last}});\n\t\t\t\treturn {\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'Attempt Too Soon'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tuser.last = new Date();\n\t\t}\n\t\n\t\tif (user.attempts >= 5) {\n\t\t\treturn {\n\t\t\t\tdata: null,\n\t\t\t\terror: 'Too Many Attempts'\n\t\t\t};\n\t\t}\n\t\t\n\t\tif (!user.salt) {\n\t\t\treturn {\n\t\t\t\tdata: null,\n\t\t\t\terror: 'No Salt Value Stored'\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tlet hashBuffer = await pbkdf2Promisified(password, user.salt, {\n\t\t\t\titerations: 25000,\n\t\t\t\tkeylen: 512,\n\t\t\t\tdigestAlgorithm: 'sha256'\n\t\t\t});\n\n\t\t\tif (scmp(hashBuffer, Buffer.from(user.hash, 'hex'))) {\n\t\t\t\tuser.last = new Date();\n\t\t\t\tuser.attempts = 0;\n\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last, attempts: user.attempts}});\n\n\t\t\t\treturn {\n\t\t\t\t\tdata: user,\n\t\t\t\t\terror: ''\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tuser.last = new Date();\n\t\t\t\tuser.attempts = user.attempts + 1;\n\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last, attempts: user.attempts}});\n\n\t\t\t\tif (user.attempts >= 5) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\terror: 'Too Many Attempts'\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\terror: 'Invalid Username And Password'\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\terr.message = `Error in User Authenticate: ${JSON.stringify(user, null, 2)} - ${err.message}`;\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tserializeUser() {\n\t\treturn (user, cb) => {\n\t\t\tcb(null, user.username);\n\t\t};\n\t}\n\n\tdeserializeUser() {\n\t\treturn async (username) => {\n\t\t\treturn Users.findOne({username: username});\n\t\t};\n\t}\n\n\tasync setPassword(user: UserModel, password: string) {\n\t\tif (!user) {\n\t\t\tthrow new Error('Error In User Set Password: No User');\n\t\t}\n\t\telse if (!password) {\n\t\t\tthrow new Error('Error In User Set Password: No Password');\n\t\t}\n\t\telse {\n\t\t\tlet saltBuffer = await randomBytes(32);\n\t\t\tlet salt = saltBuffer.toString('hex');\n\t\t\ttry {\n\t\t\t\tlet hashRaw = await pbkdf2Promisified(password, salt, {\n\t\t\t\t\titerations: 25000,\n\t\t\t\t\tkeylen: 512,\n\t\t\t\t\tdigestAlgorithm: 'sha256'\n\t\t\t\t});\n\t\t\t\tlet hash = Buffer.from(hashRaw, 'binary').toString('hex');\n\n\t\t\t\tconst res = await Users.updateOne({_id: user._id}, {$set: {hash: hash, salt: salt, services: {}, attempts: 0}});\n\t\t\t\tawait saveCustomerPortalPassword(user, password);\n\t\t\t\treturn res;\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\terr.message = `Error in User Set Password: ${JSON.stringify(user, null, 2)} - ${err.message}`;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t};\n\n\tasync changePassword(user, oldPassword, newPassword) {\n\t\tif (!user) {\n\t\t\tthrow new Error('Error in User Change Password: Missing User');\n\t\t}\n\t\telse if (!oldPassword || !newPassword) {\n\t\t\tthrow new Error('Error in User Change Password: Missing Password');\n\t\t}\n\t\telse {\n\t\t\tlet authUser = await this.authenticate(user, oldPassword);\n\n\t\t\tif (!authUser['data']) {\n\t\t\t\tthrow authUser['error'];\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn this.setPassword(user, newPassword);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tasync register(user, password) {\n\t\tif (!user.username) {\n\t\t\tthrow new Error('Error in User Register: Missing Username');\n\t\t}\n\t\telse {\n\t\t\tlet dbUser = await Users.findOne({username: user.username});\n\t\t\t\n\t\t\tif (dbUser) {\n\t\t\t\tthrow new Error('Error in User Register: Username Exists');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdbUser = await Users.findOne({email: user.email});\n\n\t\t\t\tif (dbUser) {\n\t\t\t\t\tthrow new Error('Error in User Register: Email Exists');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tuser.setPassword(password);\n\t\t\t\t\treturn user;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tresetAttempts(user: UserModel) {\n\t\treturn Users.updateOne({_id: user._id}, {$set: {attempts: 0}});\n\t}\n}\n\nfunction pbkdf2(password, salt, options, callback) {\n\tcrypto.pbkdf2(password, salt, options.iterations, options.keylen, options.digestAlgorithm, callback);\n};\n\nfunction pbkdf2Promisified(password, salt, options): Promise<any> {\n\t// eslint-disable-next-line no-restricted-syntax\n\treturn new Promise((resolve, reject) => pbkdf2(password, salt, options, (err, hashRaw) => (err ? reject(err) : resolve(hashRaw))));\n}\n\nfunction randomBytes(saltlen): Promise<Buffer> {\n\t// eslint-disable-next-line no-restricted-syntax\n\treturn new Promise((resolve, reject) => crypto.randomBytes(saltlen, (err, saltBuffer) => (err ? reject(err) : resolve(saltBuffer))));\n}\n"]}
|