@resolveio/server-lib 20.7.119 → 20.7.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/client-server-app.js +51 -1
  2. package/client-server-app.js.map +1 -1
  3. package/collections/app-status.collection.js +51 -1
  4. package/collections/app-status.collection.js.map +1 -1
  5. package/collections/counter.collection.js +55 -1
  6. package/collections/counter.collection.js.map +1 -1
  7. package/collections/cron-job-history.collection.js +136 -1
  8. package/collections/cron-job-history.collection.js.map +1 -1
  9. package/collections/cron-job.collection.js +87 -1
  10. package/collections/cron-job.collection.js.map +1 -1
  11. package/collections/email-history.collection.js +98 -1
  12. package/collections/email-history.collection.js.map +1 -1
  13. package/collections/email-verified.collection.js +60 -1
  14. package/collections/email-verified.collection.js.map +1 -1
  15. package/collections/file.collection.js +73 -1
  16. package/collections/file.collection.js.map +1 -1
  17. package/collections/flag-update.collection.js +56 -1
  18. package/collections/flag-update.collection.js.map +1 -1
  19. package/collections/flag.collection.js +56 -1
  20. package/collections/flag.collection.js.map +1 -1
  21. package/collections/log-method-latency.collection.js +72 -1
  22. package/collections/log-method-latency.collection.js.map +1 -1
  23. package/collections/log-subscription.collection.js +75 -1
  24. package/collections/log-subscription.collection.js.map +1 -1
  25. package/collections/log.collection.js +87 -1
  26. package/collections/log.collection.js.map +1 -1
  27. package/collections/logged-in-users.collection.js +66 -1
  28. package/collections/logged-in-users.collection.js.map +1 -1
  29. package/collections/monitor-cpu.collection.js +64 -1
  30. package/collections/monitor-cpu.collection.js.map +1 -1
  31. package/collections/monitor-function.collection.js +73 -1
  32. package/collections/monitor-function.collection.js.map +1 -1
  33. package/collections/monitor-memory.collection.js +76 -1
  34. package/collections/monitor-memory.collection.js.map +1 -1
  35. package/collections/monitor-mongo.collection.js +70 -1
  36. package/collections/monitor-mongo.collection.js.map +1 -1
  37. package/collections/notification.collection.js +56 -1
  38. package/collections/notification.collection.js.map +1 -1
  39. package/collections/report-builder-dashboard-builder.collection.js +108 -1
  40. package/collections/report-builder-dashboard-builder.collection.js.map +1 -1
  41. package/collections/report-builder-library.collection.js +86 -1
  42. package/collections/report-builder-library.collection.js.map +1 -1
  43. package/collections/report-builder-report.collection.js +148 -1
  44. package/collections/report-builder-report.collection.js.map +1 -1
  45. package/collections/user-group.collection.js +88 -1
  46. package/collections/user-group.collection.js.map +1 -1
  47. package/collections/user-guide.collection.js +56 -1
  48. package/collections/user-guide.collection.js.map +1 -1
  49. package/collections/user.collection.js +265 -1
  50. package/collections/user.collection.js.map +1 -1
  51. package/cron/cron.js +97 -1
  52. package/cron/cron.js.map +1 -1
  53. package/fixtures/cron-jobs.js +95 -1
  54. package/fixtures/cron-jobs.js.map +1 -1
  55. package/fixtures/init.js +78 -1
  56. package/fixtures/init.js.map +1 -1
  57. package/http/auth.js +869 -1
  58. package/http/auth.js.map +1 -1
  59. package/http/health.js +11 -1
  60. package/http/health.js.map +1 -1
  61. package/http/home.js +114 -1
  62. package/http/home.js.map +1 -1
  63. package/index.js +18 -1
  64. package/index.js.map +1 -1
  65. package/managers/cron.manager.js +461 -1
  66. package/managers/cron.manager.js.map +1 -1
  67. package/managers/local-log.manager.js +79 -1
  68. package/managers/local-log.manager.js.map +1 -1
  69. package/managers/method.manager.js +1023 -1
  70. package/managers/method.manager.js.map +1 -1
  71. package/managers/mongo.manager.js +4223 -1
  72. package/managers/mongo.manager.js.map +1 -1
  73. package/managers/monitor.manager.js +534 -1
  74. package/managers/monitor.manager.js.map +1 -1
  75. package/managers/subscription.manager.js +1292 -1
  76. package/managers/subscription.manager.js.map +1 -1
  77. package/managers/websocket.manager.js +165 -1
  78. package/managers/websocket.manager.js.map +1 -1
  79. package/managers/worker-dispatcher.manager.js +335 -1
  80. package/managers/worker-dispatcher.manager.js.map +1 -1
  81. package/managers/worker-server.manager.js +292 -1
  82. package/managers/worker-server.manager.js.map +1 -1
  83. package/methods/accounts.js +302 -1
  84. package/methods/accounts.js.map +1 -1
  85. package/methods/aws.js +748 -1
  86. package/methods/aws.js.map +1 -1
  87. package/methods/collections.js +542 -1
  88. package/methods/collections.js.map +1 -1
  89. package/methods/counters.js +111 -1
  90. package/methods/counters.js.map +1 -1
  91. package/methods/cron-jobs.js +1476 -1
  92. package/methods/cron-jobs.js.map +1 -1
  93. package/methods/flag-updates.js +8 -1
  94. package/methods/flag-updates.js.map +1 -1
  95. package/methods/flags.js +8 -1
  96. package/methods/flags.js.map +1 -1
  97. package/methods/logs.js +417 -1
  98. package/methods/logs.js.map +1 -1
  99. package/methods/monitor.js +543 -1
  100. package/methods/monitor.js.map +1 -1
  101. package/methods/pdf.js +742 -1
  102. package/methods/pdf.js.map +1 -1
  103. package/methods/report-builder.js +840 -1
  104. package/methods/report-builder.js.map +1 -1
  105. package/methods/support.js +232 -1
  106. package/methods/support.js.map +1 -1
  107. package/models/app-status.model.js +3 -1
  108. package/models/app-status.model.js.map +1 -1
  109. package/models/billing-logged-in-users.model.js +3 -1
  110. package/models/billing-logged-in-users.model.js.map +1 -1
  111. package/models/collection-document.model.js +3 -1
  112. package/models/collection-document.model.js.map +1 -1
  113. package/models/counter.model.js +3 -1
  114. package/models/counter.model.js.map +1 -1
  115. package/models/cron-job-history.model.js +3 -1
  116. package/models/cron-job-history.model.js.map +1 -1
  117. package/models/cron-job.model.js +3 -1
  118. package/models/cron-job.model.js.map +1 -1
  119. package/models/dialog.model.js +3 -1
  120. package/models/dialog.model.js.map +1 -1
  121. package/models/email-history.model.js +15 -1
  122. package/models/email-history.model.js.map +1 -1
  123. package/models/email-verified.model.js +3 -1
  124. package/models/email-verified.model.js.map +1 -1
  125. package/models/file.model.js +3 -1
  126. package/models/file.model.js.map +1 -1
  127. package/models/flag-update.model.js +3 -1
  128. package/models/flag-update.model.js.map +1 -1
  129. package/models/flag.model.js +3 -1
  130. package/models/flag.model.js.map +1 -1
  131. package/models/log-method-latency.model.js +3 -1
  132. package/models/log-method-latency.model.js.map +1 -1
  133. package/models/log-subscription.model.js +3 -1
  134. package/models/log-subscription.model.js.map +1 -1
  135. package/models/log.model.js +3 -1
  136. package/models/log.model.js.map +1 -1
  137. package/models/logged-in-users.model.js +3 -1
  138. package/models/logged-in-users.model.js.map +1 -1
  139. package/models/method-response.model.js +3 -1
  140. package/models/method-response.model.js.map +1 -1
  141. package/models/method.model.d.ts +0 -1
  142. package/models/method.model.js +3 -1
  143. package/models/method.model.js.map +1 -1
  144. package/models/monitor-cpu.model.js +3 -1
  145. package/models/monitor-cpu.model.js.map +1 -1
  146. package/models/monitor-function.model.js +3 -1
  147. package/models/monitor-function.model.js.map +1 -1
  148. package/models/monitor-memory.model.js +3 -1
  149. package/models/monitor-memory.model.js.map +1 -1
  150. package/models/monitor-mongo.model.js +3 -1
  151. package/models/monitor-mongo.model.js.map +1 -1
  152. package/models/notification.model.js +3 -1
  153. package/models/notification.model.js.map +1 -1
  154. package/models/pagination.model.js +23 -1
  155. package/models/pagination.model.js.map +1 -1
  156. package/models/permission.model.js +3 -1
  157. package/models/permission.model.js.map +1 -1
  158. package/models/report-builder-dashboard-builder.model.js +3 -1
  159. package/models/report-builder-dashboard-builder.model.js.map +1 -1
  160. package/models/report-builder-library.model.js +3 -1
  161. package/models/report-builder-library.model.js.map +1 -1
  162. package/models/report-builder-report.model.js +3 -1
  163. package/models/report-builder-report.model.js.map +1 -1
  164. package/models/report-builder.model.js +3 -1
  165. package/models/report-builder.model.js.map +1 -1
  166. package/models/select-data-label.model.js +3 -1
  167. package/models/select-data-label.model.js.map +1 -1
  168. package/models/server-message.model.js +3 -1
  169. package/models/server-message.model.js.map +1 -1
  170. package/models/subscription.model.js +3 -1
  171. package/models/subscription.model.js.map +1 -1
  172. package/models/support-ticket.model.js +3 -1
  173. package/models/support-ticket.model.js.map +1 -1
  174. package/models/user-group.model.js +3 -1
  175. package/models/user-group.model.js.map +1 -1
  176. package/models/user-guide.model.js +3 -1
  177. package/models/user-guide.model.js.map +1 -1
  178. package/models/user.model.js +3 -1
  179. package/models/user.model.js.map +1 -1
  180. package/package.json +1 -1
  181. package/public_api.js +77 -1
  182. package/public_api.js.map +1 -1
  183. package/publications/app-status.js +16 -1
  184. package/publications/app-status.js.map +1 -1
  185. package/publications/cron-jobs.js +32 -1
  186. package/publications/cron-jobs.js.map +1 -1
  187. package/publications/files.js +36 -1
  188. package/publications/files.js.map +1 -1
  189. package/publications/flags-update.js +22 -1
  190. package/publications/flags-update.js.map +1 -1
  191. package/publications/flags.js +22 -1
  192. package/publications/flags.js.map +1 -1
  193. package/publications/logs.js +164 -1
  194. package/publications/logs.js.map +1 -1
  195. package/publications/notifications.js +16 -1
  196. package/publications/notifications.js.map +1 -1
  197. package/publications/report-builder-dashboard-builders.js +42 -1
  198. package/publications/report-builder-dashboard-builders.js.map +1 -1
  199. package/publications/report-builder-libraries.js +90 -1
  200. package/publications/report-builder-libraries.js.map +1 -1
  201. package/publications/report-builder-reports.js +50 -1
  202. package/publications/report-builder-reports.js.map +1 -1
  203. package/publications/super-admin.js +16 -1
  204. package/publications/super-admin.js.map +1 -1
  205. package/publications/user-groups.js +16 -1
  206. package/publications/user-groups.js.map +1 -1
  207. package/publications/user-guides.js +16 -1
  208. package/publications/user-guides.js.map +1 -1
  209. package/resolveio-server-app.js +176 -1
  210. package/resolveio-server-app.js.map +1 -1
  211. package/server-app.js +1159 -1
  212. package/server-app.js.map +1 -1
  213. package/util/common.js +632 -1
  214. package/util/common.js.map +1 -1
  215. package/util/schema-report-builder.js +454 -1
  216. package/util/schema-report-builder.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/managers/mongo.manager.ts"],"names":["NodeCache","require","os_1","simpl_schema_1","user_collection_1","resolveio_server_app_1","common_1","monitor_manager_1","crypto","scmp","numCPUs","cpus","length","v8","AsyncLocalStorage","asyncLocalStorage","MongoManager","this","_collections","_cacheMap","_operationInProgress","Map","_heapSize","getHeapStatistics","_serverCollections","_isWorkersEnabled","_isWorkerInstance","create","mongoManager","initialize","_a","sent","prototype","_nodeCache","stdTTL","checkperiod","process","env","IS_WORKERS_ENABLED","IS_WORKER_INSTANCE","setCacheLimit","setupChangeStream","ResolveIOServer","getMainDB","listCollections","toArray","collections","oneTimeTransaction","fn","_this","run","__awaiter","session","getMongoConnection","startSession","getStore","withTransaction","result_1","endSession","store","getSession","_heapLimit","getServerCollections","registerCollection","collection","collectionOptions","timeseries","timeField","some","a","name","collectionName","type","dropCollection","createCollection","push","find","delay","ms","Promise","resolve","setTimeout","filter","options","safeOptions","__rest","cacheKey","generateCacheKey","undefined","result","getFromCache","getMainServer","getSubscriptionManager","getEnableDebug","console","log","Date","has","get","promise","operation","executeFind","set","invalidatedDuringExecution","finally","delete","_b","monitor","MonitorMongo","JSON","stringify","code","err_1","codeName","message","stack","concat","finish","addToCache","findOne","executeFindOne","err_2","aggregate","pipeline","__spreadArray","__read","flatMap","stage","$lookup","from","executeAggregate","err_3","countDocuments","executeCountDocuments","err_4","functionName","args","keyString","createHash","update","digest","cachedData","parse","dateReviver","del","data","getBinarySize","includes","endsWith","startsWith","nodeCacheSize","getStats","vsize","deleteCount","keys","keys_1","__values","keys_1_1","next","done","key","value","invalidateQueryCache","collectionCacheMap","collectionCacheMap_1","collectionCacheMap_1_1","cacheMap","_c","entries","_d","_e","changeStream","watch","$match","$and","ns.coll","$nin","$not","fullDocument","on","change","coll","close","MongoManagerModel","exports","collection_main","collection_version","mongoManagerModel","versionOptions","MongoManagerUserCollection","MongoManagerCollection","useVersionCollection","useVersions","versionSchema","deepCopy","schema","_id","blackbox","useReportBuilder","reportBuilderLookupTables","timestamps","createLogs","checkSchema","skipCache","setImmediate","createIndex","_id._id","_id.__v","versionCollection","simplschema","rbSchema","useRB","bypassSession","mongoManagerCollection","schemaCopy","interval","default","buildRbLookups","buildRbSchema","setInterval","getMongoManager","clearInterval","extractIndexNameFromError","errorMessage","matches","match","mongoSession","readPreference","err_5","aggregateCount","err_6","aggregateCursor","cursor","ev","aggregateStream","streamOptions","stream","bulkWrite","operations","bypassCheckSchema","bypassLogs","bypassVersions","BATCH_SIZE","opIndex","batchOps","slice","logs","versionOps","e_4","batchOps_1","batchOps_1_1","op","opType","Object","doc","validationContext","newContext","isValid","validate","document","replacement","modifier","Error","validationErrors","createdAt","updatedAt","objectIdHexString","id_document","payload","method","id_user","user","messageId","route","$set","$inc","__v","affectedDocs","versionFilters","map","v","$or","_f","versionInserts","insertOne","__assign","err_7","getServerConfig","getLocalLogManager","writeLogs","bwOptions","ordered","affectedDocIds","$in","$sort","$group","versions","$push","$project","versionsToDelete","$slice","$size","$unwind","$replaceRoot","newRoot","oldVersions","deleteMany","ok","estimatedDocumentCount","err_8","f_docs","Array","isArray","insertMany","fieldOrSpec","dbCollection","indexes","existingIndexes","index","createIndexes","indexSpecs","existingIndexes_1","indexSpec","existingIndex","docs","i","writeLog","versionDoc","replaceOne","upsert","$lt","res","err_9","deleteOne","err_10","err_11","distinct","err_12","drop","err_13","dropIndex","indexName","err_14","dropIndexes","err_15","err_16","findById","id","err_17","findCount","count","err_18","findCursor","removeAllListeners","findStream","err_19","findOneAndDelete","err_20","findOneAndReplace","validation","getMethodManager","callMethod","date","err_21","findOneAndUpdate","$setOnInsert","err_22","err_23","indexExists","err_24","bypassMonitor","validationResults","docs_1","docs_1_1","validDocs","idx","hasOwnProperty","err_25","err_26","listIndexes","rename","newName","err_27","err_28","prevDoc","docId","docVersion","updatedDoc","getMongoMergeUpdatedDoc","acknowledged","err_29","err_30","matchedCount","modifiedCount","upsertedCount","upsertedId","returnDocument","session_1","safeOptions_1","doc_1","err_31","err_32","updateMany","isEmptyUpdate","$unset","$pull","$addToSet","$min","$max","$currentDate","$mul","$rename","values","every","err_33","updateOne","err_34","err_35","err_36","err_37","watchCollection","_super","__extends","authenticate","password","attemptsInterval","Math","pow","attempts","calculatedInterval","last","now","getTime","Users","error","salt","pbkdf2Promisified","iterations","keylen","digestAlgorithm","hashBuffer","Buffer","hash","err_38","serializeUser","cb","username","deserializeUser","setPassword","randomBytes","saltBuffer","toString","hashRaw","services","err_39","changePassword","oldPassword","newPassword","authUser","register","email","resetAttempts","pbkdf2","callback","reject","err","saltlen"],"mappings":"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","file":"mongo.manager.js","sourcesContent":["import { AggregateOptions, AggregationCursor, BulkWriteOptions, BulkWriteResult, ChangeStream, ChangeStreamOptions, Collection, CollectionInfo, CommandOperationOptions, CountDocumentsOptions, CreateCollectionOptions, CreateIndexesOptions, CursorStreamOptions, DeleteOptions, DeleteResult, FindCursor, FindOneAndDeleteOptions, FindOneAndReplaceOptions, FindOneAndUpdateOptions, FindOptions, IndexDescription, IndexInformationOptions, InsertOneOptions, ListIndexesCursor, ListIndexesOptions, OptionalUnlessRequiredId, RenameOptions, ReplaceOptions, UpdateOptions, UpdateResult } from 'mongodb';\nimport * as NodeCache from 'node-cache';\nimport { cpus } from 'os';\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 { MonitorMongo } from './monitor.manager';\nconst crypto = require('crypto');\nconst scmp = require('scmp');\nconst numCPUs = cpus().length;\nconst v8 = require('v8');\nconst { AsyncLocalStorage } = require('async_hooks');\nconst asyncLocalStorage = new AsyncLocalStorage();\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 = v8.getHeapStatistics() / numCPUs;\n\tprivate _heapLimit: number;\n\tprivate _serverCollections: (CollectionInfo | Pick<CollectionInfo, 'name' | 'type'>)[] = [];\n\tprivate _isWorkersEnabled = false;\n\tprivate _isWorkerInstance = false;\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.setCacheLimit();\n\n\t\tif (this._isWorkersEnabled && this._isWorkerInstance) {\n\t\t\tthis.setupChangeStream();\n\t\t}\n\n\t\tlet collections = await ResolveIOServer.getMainDB().listCollections().toArray();\n\t\tthis._serverCollections = collections;\n\t}\n\n\toneTimeTransaction<T>(fn: () => Promise<T>): Promise<T> {\n\t\treturn asyncLocalStorage.run({}, async () => {\n\t\t\tconst session = ResolveIOServer.getMongoConnection().startSession();\n\t\t\tasyncLocalStorage.getStore().session = session;\n\t\n\t\t\ttry {\n\t\t\t\tlet result: T;\n\t\t\t\t\n\t\t\t\tawait session.withTransaction(async () => {\n\n\t\t\t\t\t// Directly assign the result from fn()\n\t\t\t\t\tresult = await fn();\n\t\t\t\t\treturn result; // Explicit return for transaction validation\n\t\t\t\t});\n\t\n\t\t\t\treturn result; // Transaction committed successfully\n\t\t\t} \n\t\t\tfinally {\n\t\t\t\tawait session.endSession();\n\t\t\t\tconst store = asyncLocalStorage.getStore();\n\t\t\t\tif (store) delete store.session;\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\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\tpublic async find<T extends CollectionDocument>(\n\t\tcollectionName: string,\n\t\tfilter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {},\n\t\toptions?: FindOptions<T>\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\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 Find - Cache', collectionName);\n\t\t\t}\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 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: FindOptions<T> | 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 monitor = MonitorMongo.create('find', collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\ttry {\n\t\t\tresult = await collection.find<T>(<any>filter, options).toArray();\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Execute Find', 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: ${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\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?: FindOptions<T>\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\t\tif (result !== undefined) {\n\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Mongo FindOne - Cache', collectionName);\n\t\t\t}\n\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 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: FindOptions<T> | 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 monitor = MonitorMongo.create('findOne', collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\ttry {\n\t\t\tresult = await collection.findOne<T>(<any>filter, 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\tawait monitor.finish();\n\t\t}\n\t\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\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 monitor = MonitorMongo.create('aggregate', collectionName, JSON.stringify([pipeline, safeOptions]));\n\n\t\ttry {\n\t\t\tresult = await collection.aggregate<T>(pipeline, options).toArray();\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\tawait monitor.finish();\n\t\t}\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\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 monitor = MonitorMongo.create('countDocuments', collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\ttry {\n\t\t\tresult = await collection.countDocuments(<any>filter, 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\tawait monitor.finish();\n\t\t}\n\t\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) {\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\t}\n\n\tprivate setupChangeStream() {\n\t\tconst db = ResolveIOServer.getMainDB();\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{'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] }},\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\t\tconst changeStream = db.watch(pipeline, { fullDocument: 'updateLookup' });\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 () => {\n\t\t\tconsole.log(new Date(), 'Mongo change stream error. Restart...');\n\t\t\tawait changeStream.close();\n\t\t\tsetTimeout(() => this.setupChangeStream(), 5000);\n\t\t});\n\n\t\tchangeStream.on('close', () => {\n\t\t\tconsole.log(new Date(), 'Mongo change stream closed. Restarting...');\n\t\t\tsetTimeout(() => this.setupChangeStream(), 5000);\n\t\t});\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\t\t\t\n\t\t\tlet versionSchema = deepCopy(options.schema);\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};\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\tlet interval = setInterval(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\tclearInterval(interval);\n\t\t\t}\n\t\t}, 1);\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\t\n\t\treturn matches && matches.length > 1 ? matches[1] : null;\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);\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\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\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);\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?: CursorStreamOptions, 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(streamOptions).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\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 ResolveIOServer.getMainDB().collection(this.collectionName).bulkWrite(batchOps, options);\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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 dbCollection.createIndex(fieldOrSpec, options);\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 dbCollection.createIndexes(indexSpecs, options);\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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);\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);\n\t\t\t\tlet doc = await this.findOne(filter, options);\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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);\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);\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);\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<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('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?: FindOptions<T>, 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);\n\t\t}\n\t\telse {\n\t\t\tlet monitor = MonitorMongo.create('find', 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).find<T>(<any>filter, options).toArray();\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', 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?: FindOptions<T>, 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(this.collectionName, {_id: id}, options);\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\t\ttry {\n\t\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOne<T>(<any>{_id: id}, options);\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 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?: FindOptions<T>, 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\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?: FindOptions<T>, 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);\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?: FindOptions<T>, streamOptions?: CursorStreamOptions, 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(streamOptions).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?: FindOptions<T>, 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);\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);\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 res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndDelete(<any>filter, options);\n\t\t\tlet doc = res.value;\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndReplace(<any>filter, replacement, options);\n\t\t\tlet doc = res.value;\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndUpdate(<any>filter, <any>update, options);\n\t\t\tlet doc = res.value;\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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<any[]> {\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);\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).insertMany(<OptionalUnlessRequiredId<T>[]>validDocs, 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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).insertOne(<OptionalUnlessRequiredId<T>>doc, 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);\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\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options) as UpdateResult;\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, updatedDoc, 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.acknowledged;\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, 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.acknowledged;\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options) as UpdateResult;\n\n\t\t\t\t\tlet doc = await this.findOne(filter, options);\n\n\t\t\t\t\tif (doc) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, 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.acknowledged;\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\treturn !op || JSON.stringify(op) === '{}';\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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// If someone mistakenly put __v in $set, remove it\n\t\t\t\t\tif (update.$set && '__v' in update.$set) {\n\t\t\t\t\t\tdelete update.$set.__v;\n\t\t\t\t\t\tif (Object.keys(update.$set).length === 0) {\n\t\t\t\t\t\t\tdelete update.$set;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\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 ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateMany(filter, <any>update, options) as UpdateResult;\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\treturn !op || JSON.stringify(op) === '{}';\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}\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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// If someone mistakenly put __v in $set, remove it\n\t\t\t\tif (update.$set && '__v' in update.$set) {\n\t\t\t\t\tdelete update.$set.__v;\n\t\t\t\t\tif (Object.keys(update.$set).length === 0) {\n\t\t\t\t\t\tdelete update.$set;\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 ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, 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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, 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 ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, options);\n\n\t\t\t\t\tlet doc = await this.findOne(filter, options);\n\n\t\t\t\t\tif (doc) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, 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);\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\t\t\t\t\n\t\t\t\treturn Users.updateOne({_id: user._id}, {$set: {hash: hash, salt: salt, services: {}, attempts: 0}});\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}"]}
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, CursorStreamOptions, DeleteOptions, DeleteResult, FindCursor, FindOneAndDeleteOptions, FindOneAndReplaceOptions, FindOneAndUpdateOptions, FindOptions, IndexDescription, IndexInformationOptions, InsertOneOptions, ListIndexesCursor, ListIndexesOptions, OptionalUnlessRequiredId, RenameOptions, ReplaceOptions, UpdateOptions, UpdateResult } from 'mongodb';\nimport * as NodeCache from 'node-cache';\nimport { cpus } from 'os';\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 { MonitorMongo } from './monitor.manager';\nconst crypto = require('crypto');\nconst scmp = require('scmp');\nconst numCPUs = cpus().length;\nconst v8 = require('v8');\nconst { AsyncLocalStorage } = require('async_hooks');\nconst asyncLocalStorage = new AsyncLocalStorage();\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 = v8.getHeapStatistics() / numCPUs;\n\tprivate _heapLimit: number;\n\tprivate _serverCollections: (CollectionInfo | Pick<CollectionInfo, 'name' | 'type'>)[] = [];\n\tprivate _isWorkersEnabled = false;\n\tprivate _isWorkerInstance = false;\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.setCacheLimit();\n\n\t\tif (this._isWorkersEnabled && this._isWorkerInstance) {\n\t\t\tthis.setupChangeStream();\n\t\t}\n\n\t\tlet collections = await ResolveIOServer.getMainDB().listCollections().toArray();\n\t\tthis._serverCollections = collections;\n\t}\n\n\toneTimeTransaction<T>(fn: () => Promise<T>): Promise<T> {\n\t\treturn asyncLocalStorage.run({}, async () => {\n\t\t\tconst session = ResolveIOServer.getMongoConnection().startSession();\n\t\t\tasyncLocalStorage.getStore().session = session;\n\t\n\t\t\ttry {\n\t\t\t\tlet result: T;\n\t\t\t\t\n\t\t\t\tawait session.withTransaction(async () => {\n\n\t\t\t\t\t// Directly assign the result from fn()\n\t\t\t\t\tresult = await fn();\n\t\t\t\t\treturn result; // Explicit return for transaction validation\n\t\t\t\t});\n\t\n\t\t\t\treturn result; // Transaction committed successfully\n\t\t\t} \n\t\t\tfinally {\n\t\t\t\tawait session.endSession();\n\t\t\t\tconst store = asyncLocalStorage.getStore();\n\t\t\t\tif (store) delete store.session;\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\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\tpublic async find<T extends CollectionDocument>(\n\t\tcollectionName: string,\n\t\tfilter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {},\n\t\toptions?: FindOptions<T>\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\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 Find - Cache', collectionName);\n\t\t\t}\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 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: FindOptions<T> | 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 monitor = MonitorMongo.create('find', collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\ttry {\n\t\t\tresult = await collection.find<T>(<any>filter, options).toArray();\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.log(JSON.stringify([new Date(), 'Error Execute Find', 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: ${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\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?: FindOptions<T>\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\t\tif (result !== undefined) {\n\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager() && ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Mongo FindOne - Cache', collectionName);\n\t\t\t}\n\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 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: FindOptions<T> | 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 monitor = MonitorMongo.create('findOne', collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\ttry {\n\t\t\tresult = await collection.findOne<T>(<any>filter, 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\tawait monitor.finish();\n\t\t}\n\t\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\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 monitor = MonitorMongo.create('aggregate', collectionName, JSON.stringify([pipeline, safeOptions]));\n\n\t\ttry {\n\t\t\tresult = await collection.aggregate<T>(pipeline, options).toArray();\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\tawait monitor.finish();\n\t\t}\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\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 monitor = MonitorMongo.create('countDocuments', collectionName, JSON.stringify([filter, safeOptions]));\n\n\t\ttry {\n\t\t\tresult = await collection.countDocuments(<any>filter, 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\tawait monitor.finish();\n\t\t}\n\t\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) {\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\t}\n\n\tprivate setupChangeStream() {\n\t\tconst db = ResolveIOServer.getMainDB();\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{'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] }},\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\t\tconst changeStream = db.watch(pipeline, { fullDocument: 'updateLookup' });\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 () => {\n\t\t\tconsole.log(new Date(), 'Mongo change stream error. Restart...');\n\t\t\tawait changeStream.close();\n\t\t\tsetTimeout(() => this.setupChangeStream(), 5000);\n\t\t});\n\n\t\tchangeStream.on('close', () => {\n\t\t\tconsole.log(new Date(), 'Mongo change stream closed. Restarting...');\n\t\t\tsetTimeout(() => this.setupChangeStream(), 5000);\n\t\t});\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\t\t\t\n\t\t\tlet versionSchema = deepCopy(options.schema);\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};\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\tlet interval = setInterval(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\tclearInterval(interval);\n\t\t\t}\n\t\t}, 1);\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\t\n\t\treturn matches && matches.length > 1 ? matches[1] : null;\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);\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\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\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);\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?: CursorStreamOptions, 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(streamOptions).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\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 ResolveIOServer.getMainDB().collection(this.collectionName).bulkWrite(batchOps, options);\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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 dbCollection.createIndex(fieldOrSpec, options);\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 dbCollection.createIndexes(indexSpecs, options);\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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);\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);\n\t\t\t\tlet doc = await this.findOne(filter, options);\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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);\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);\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);\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<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('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?: FindOptions<T>, 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);\n\t\t}\n\t\telse {\n\t\t\tlet monitor = MonitorMongo.create('find', 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).find<T>(<any>filter, options).toArray();\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', 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?: FindOptions<T>, 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(this.collectionName, {_id: id}, options);\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\t\ttry {\n\t\t\t\tlet res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOne<T>(<any>{_id: id}, options);\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 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?: FindOptions<T>, 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\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?: FindOptions<T>, 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);\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?: FindOptions<T>, streamOptions?: CursorStreamOptions, 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(streamOptions).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?: FindOptions<T>, 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);\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);\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 res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndDelete(<any>filter, options);\n\t\t\tlet doc = res.value;\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndReplace(<any>filter, replacement, options);\n\t\t\tlet doc = res.value;\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 res = await ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndUpdate(<any>filter, <any>update, options);\n\t\t\tlet doc = res.value;\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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<any[]> {\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);\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).insertMany(<OptionalUnlessRequiredId<T>[]>validDocs, 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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).insertOne(<OptionalUnlessRequiredId<T>>doc, 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);\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\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options) as UpdateResult;\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, updatedDoc, 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.acknowledged;\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, 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.acknowledged;\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options) as UpdateResult;\n\n\t\t\t\t\tlet doc = await this.findOne(filter, options);\n\n\t\t\t\t\tif (doc) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, 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.acknowledged;\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\treturn !op || JSON.stringify(op) === '{}';\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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// If someone mistakenly put __v in $set, remove it\n\t\t\t\t\tif (update.$set && '__v' in update.$set) {\n\t\t\t\t\t\tdelete update.$set.__v;\n\t\t\t\t\t\tif (Object.keys(update.$set).length === 0) {\n\t\t\t\t\t\t\tdelete update.$set;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\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 ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateMany(filter, <any>update, options) as UpdateResult;\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\treturn !op || JSON.stringify(op) === '{}';\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}\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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// If someone mistakenly put __v in $set, remove it\n\t\t\t\tif (update.$set && '__v' in update.$set) {\n\t\t\t\t\tdelete update.$set.__v;\n\t\t\t\t\tif (Object.keys(update.$set).length === 0) {\n\t\t\t\t\t\tdelete update.$set;\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 ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, 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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, 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 ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, options);\n\n\t\t\t\t\tlet doc = await this.findOne(filter, options);\n\n\t\t\t\t\tif (doc) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t\t\t\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\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\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\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 ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, 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);\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\t\t\t\t\n\t\t\t\treturn Users.updateOne({_id: user._id}, {$set: {hash: hash, salt: salt, services: {}, attempts: 0}});\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}"]}