@resolveio/server-lib 20.7.59 → 20.7.62
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.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __extends=this&&this.__extends||function(){var o=function(e,r){return(o=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(e,r){e.__proto__=r}:function(e,r){for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}))(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function __(){this.constructor=e}o(e,r),e.prototype=null===r?Object.create(r):(__.prototype=r.prototype,new __)}}(),__assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var r,o=1,t=arguments.length;o<t;o++)for(var n in r=arguments[o])Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n]);return e}).apply(this,arguments)},__awaiter=this&&this.__awaiter||function(e,t,n,s){return new(n=n||Promise)(function(o,r){function fulfilled(e){try{step(s.next(e))}catch(e){r(e)}}function rejected(e){try{step(s.throw(e))}catch(e){r(e)}}function step(e){var r;e.done?o(e.value):((r=e.value)instanceof n?r:new n(function(e){e(r)})).then(fulfilled,rejected)}step((s=s.apply(e,t||[])).next())})},__generator=this&&this.__generator||function(t,n){var s,i,a,c={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function verb(o){return function(e){var r=[o,e];if(s)throw new TypeError("Generator is already executing.");for(;c=l&&r[l=0]?0:c;)try{if(s=1,i&&(a=2&r[0]?i.return:r[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,r[1])).done)return a;switch(i=0,(r=a?[2&r[0],a.value]:r)[0]){case 0:case 1:a=r;break;case 4:return c.label++,{value:r[1],done:!1};case 5:c.label++,i=r[1],r=[0];continue;case 7:r=c.ops.pop(),c.trys.pop();continue;default:if(!(a=0<(a=c.trys).length&&a[a.length-1])&&(6===r[0]||2===r[0])){c=0;continue}if(3===r[0]&&(!a||r[1]>a[0]&&r[1]<a[3]))c.label=r[1];else if(6===r[0]&&c.label<a[1])c.label=a[1],a=r;else{if(!(a&&c.label<a[2])){a[2]&&c.ops.pop(),c.trys.pop();continue}c.label=a[2],c.ops.push(r)}}r=n.call(t,c)}catch(e){r=[6,e],i=0}finally{s=a=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}}},__rest=this&&this.__rest||function(e,r){var o={};for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(o[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var t=0,n=Object.getOwnPropertySymbols(e);t<n.length;t++)r.indexOf(n[t])<0&&Object.prototype.propertyIsEnumerable.call(e,n[t])&&(o[n[t]]=e[n[t]]);return o},__read=this&&this.__read||function(e,r){var o="function"==typeof Symbol&&e[Symbol.iterator];if(!o)return e;var t,n,s=o.call(e),i=[];try{for(;(void 0===r||0<r--)&&!(t=s.next()).done;)i.push(t.value)}catch(e){n={error:e}}finally{try{t&&!t.done&&(o=s.return)&&o.call(s)}finally{if(n)throw n.error}}return i},__spreadArray=this&&this.__spreadArray||function(e,r,o){if(o||2===arguments.length)for(var t,n=0,s=r.length;n<s;n++)!t&&n in r||((t=t||Array.prototype.slice.call(r,0,n))[n]=r[n]);return e.concat(t||Array.prototype.slice.call(r))},__values=this&&this.__values||function(e){var r="function"==typeof Symbol&&Symbol.iterator,o=r&&e[r],t=0;if(o)return o.call(e);if(e&&"number"==typeof e.length)return{next:function(){return{value:(e=e&&t>=e.length?void 0:e)&&e[t++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")},NodeCache=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.MongoManagerUserCollection=exports.MongoManagerCollection=exports.MongoManagerModel=exports.MongoManager=void 0,require("node-cache")),os_1=require("os"),simpl_schema_1=require("simpl-schema"),user_collection_1=require("../collections/user.collection"),resolveio_server_app_1=require("../resolveio-server-app"),common_1=require("../util/common"),monitor_manager_1=require("./monitor.manager"),crypto=require("crypto"),scmp=require("scmp"),numCPUs=(0,os_1.cpus)().length,v8=require("v8"),AsyncLocalStorage=require("async_hooks").AsyncLocalStorage,asyncLocalStorage=new AsyncLocalStorage,MongoManager=function(){function MongoManager(){this._collections=[],this._cacheMap=[],this._operationInProgress=new Map,this._heapSize=v8.getHeapStatistics()/numCPUs,this._serverCollections=[],this._isWorkersEnabled=!1,this._isWorkerInstance=!1}return MongoManager.create=function(){return __awaiter(this,void 0,void 0,function(){var r;return __generator(this,function(e){switch(e.label){case 0:return[4,(r=new MongoManager).initialize()];case 1:return e.sent(),[2,r]}})})},MongoManager.prototype.initialize=function(){return __awaiter(this,void 0,void 0,function(){var r;return __generator(this,function(e){switch(e.label){case 0:return this._nodeCache=new NodeCache({stdTTL:0,checkperiod:0}),this._isWorkersEnabled="true"===process.env.IS_WORKERS_ENABLED,this._isWorkerInstance="true"===process.env.IS_WORKER_INSTANCE,this.setCacheLimit(),this._isWorkersEnabled&&this._isWorkerInstance&&this.setupChangeStream(),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().listCollections().toArray()];case 1:return r=e.sent(),this._serverCollections=r,[2]}})})},MongoManager.prototype.oneTimeTransaction=function(s){var e=this;return asyncLocalStorage.run({},function(){return __awaiter(e,void 0,void 0,function(){var r,o,t,n=this;return __generator(this,function(e){switch(e.label){case 0:r=resolveio_server_app_1.ResolveIOServer.getMongoConnection().startSession(),asyncLocalStorage.getStore().session=r,e.label=1;case 1:return e.trys.push([1,,3,5]),[4,r.withTransaction(function(){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,s()];case 1:return[2,o=e.sent()]}})})})];case 2:return e.sent(),[2,o];case 3:return[4,r.endSession()];case 4:return e.sent(),(t=asyncLocalStorage.getStore())&&delete t.session,[7];case 5:return[2]}})})})},MongoManager.prototype.getSession=function(){var e=asyncLocalStorage.getStore();return e?e.session:null},MongoManager.prototype.setCacheLimit=function(){this._isWorkersEnabled?this._heapLimit=this._isWorkerInstance?.8*this._heapSize:.4*this._heapSize:this._heapLimit=.3*this._heapSize},MongoManager.prototype.getServerCollections=function(){return this._serverCollections},MongoManager.prototype.registerCollection=function(r){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return r.collectionOptions&&r.collectionOptions.timeseries&&r.collectionOptions.timeseries.timeField&&this._serverCollections.some(function(e){return e.name===r.collectionName&&"collection"===e.type})?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().dropCollection(r.collectionName)]:[3,3];case 1:return e.sent(),[4,this.createCollection(r)];case 2:e.sent(),e.label=3;case 3:return this._collections.push(r),[2]}})})},MongoManager.prototype.createCollection=function(r){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().createCollection(r.collectionName,r.collectionOptions)];case 1:return e.sent(),[2]}})})},MongoManager.prototype.collections=function(){return this._collections},MongoManager.prototype.collection=function(r){return this._collections.find(function(e){return e.collectionName===r})},MongoManager.prototype.delay=function(r){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2,new Promise(function(e){return setTimeout(e,r)})]})})},MongoManager.prototype.find=function(s,i,a){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var r,o,t,n=this;return __generator(this,function(e){switch(e.label){case 0:return((o=a||{}).session,o=__rest(o,["session"]),r=this.generateCacheKey([s],"find",[i,o]),void 0!==(o=this.getFromCache(r)))?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Find - Cache",s),[2,o]):this._operationInProgress.has(r)?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Find - Already running",s),[2,this._operationInProgress.get(r).promise]):(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Find - Running",s),t=this.executeFind(s,i,a,r),this._operationInProgress.set(r,{promise:t,invalidatedDuringExecution:!1,collections:[s]}),[4,t.finally(function(){resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Find - Done",s),n._operationInProgress.delete(r)})]);case 1:return e.sent(),[2,t]}})})},MongoManager.prototype.executeFind=function(s,i,a,c){return __awaiter(this,void 0,void 0,function(){var r,o,t,n;return __generator(this,function(e){switch(e.label){case 0:o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s),(t=a||{}).session,t=__rest(t,["session"]),t=monitor_manager_1.MonitorMongo.create("find",s,JSON.stringify([i,t])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,o.find(i,a).toArray()];case 2:return r=e.sent(),[3,6];case 3:throw(n=e.sent()).message="Error in Execute Find (".concat(s,"): ").concat(n.message),n;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return this._operationInProgress.get(c).invalidatedDuringExecution||this.addToCache([s],c,r),[2,r]}})})},MongoManager.prototype.findOne=function(s,i,a){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var r,o,t,n=this;return __generator(this,function(e){switch(e.label){case 0:return((o=a||{}).session,o=__rest(o,["session"]),r=this.generateCacheKey([s],"findOne",[i,o]),void 0!==(o=this.getFromCache(r)))?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo FindOne - Cache",s),[2,o]):this._operationInProgress.has(r)?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo FindOne - Already running",s),[2,this._operationInProgress.get(r).promise]):(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo FindOne - Running",s),t=this.executeFindOne(s,i,a,r),this._operationInProgress.set(r,{promise:t,invalidatedDuringExecution:!1,collections:[s]}),[4,t.finally(function(){resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo FindOne - Done",s),n._operationInProgress.delete(r)})]);case 1:return e.sent(),[2,t]}})})},MongoManager.prototype.executeFindOne=function(s,i,a,c){return __awaiter(this,void 0,void 0,function(){var r,o,t,n;return __generator(this,function(e){switch(e.label){case 0:o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s),(t=a||{}).session,t=__rest(t,["session"]),t=monitor_manager_1.MonitorMongo.create("findOne",s,JSON.stringify([i,t])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,o.findOne(i,a)];case 2:return r=e.sent(),[3,6];case 3:throw(n=e.sent()).message="Error in Execute Find One (".concat(s,"): ").concat(n.message),n;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return this._operationInProgress.get(c).invalidatedDuringExecution||this.addToCache([s],c,r),[2,r]}})})},MongoManager.prototype.aggregate=function(i,a,c){return __awaiter(this,void 0,void 0,function(){var r,o,t,n,s=this;return __generator(this,function(e){switch(e.label){case 0:return(r=__spreadArray([i],__read(a.flatMap(function(e){var r;return null!=(r=e.$lookup)&&r.from?[e.$lookup.from]:[]})),!1),(t=c||{}).session,t=__rest(t,["session"]),o=this.generateCacheKey(r,"aggregate",[a,t]),void 0!==(t=this.getFromCache(o)))?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Agg - Cache",r),[2,t]):this._operationInProgress.has(o)?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Agg - Already running",r),[2,this._operationInProgress.get(o).promise]):(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Agg - Running",r),n=this.executeAggregate(i,a,c,o,r),this._operationInProgress.set(o,{promise:n,invalidatedDuringExecution:!1,collections:r}),[4,n.finally(function(){resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Agg - Done",r),s._operationInProgress.delete(o)})]);case 1:return e.sent(),[2,n]}})})},MongoManager.prototype.executeAggregate=function(s,i,a,c,l){return __awaiter(this,void 0,void 0,function(){var r,o,t,n;return __generator(this,function(e){switch(e.label){case 0:o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s),(t=a||{}).session,t=__rest(t,["session"]),t=monitor_manager_1.MonitorMongo.create("aggregate",s,JSON.stringify([i,t])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,o.aggregate(i,a).toArray()];case 2:return r=e.sent(),[3,6];case 3:throw(n=e.sent()).message="Error in Execute Aggregate (".concat(s,"): ").concat(n.message),n;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return this._operationInProgress.get(c).invalidatedDuringExecution||this.addToCache(l,c,r),[2,r]}})})},MongoManager.prototype.countDocuments=function(s,i,a){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var r,o,t,n=this;return __generator(this,function(e){switch(e.label){case 0:return((o=a||{}).session,o=__rest(o,["session"]),r=this.generateCacheKey([s],"countDocuments",[i,o]),void 0!==(o=this.getFromCache(r)))?[2,o]:this._operationInProgress.has(r)?[2,this._operationInProgress.get(r).promise]:(t=this.executeCountDocuments(s,i,a,r),this._operationInProgress.set(r,{promise:t,invalidatedDuringExecution:!1,collections:[s]}),[4,t.finally(function(){return n._operationInProgress.delete(r)})]);case 1:return e.sent(),[2,t]}})})},MongoManager.prototype.executeCountDocuments=function(s,i,a,c){return __awaiter(this,void 0,void 0,function(){var r,o,t,n;return __generator(this,function(e){switch(e.label){case 0:o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s),(t=a||{}).session,t=__rest(t,["session"]),t=monitor_manager_1.MonitorMongo.create("countDocuments",s,JSON.stringify([i,t])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,o.countDocuments(i,a)];case 2:return r=e.sent(),[3,6];case 3:throw(n=e.sent()).message="Error in Execute Count Documents (".concat(s,"): ").concat(n.message),n;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return this._operationInProgress.get(c).invalidatedDuringExecution||this.addToCache([s],c,r),[2,r]}})})},MongoManager.prototype.generateCacheKey=function(e,r,o){e=JSON.stringify({collections:e,functionName:r,args:o});return crypto.createHash("sha256").update(e).digest("hex")},MongoManager.prototype.getFromCache=function(r){try{var e=this._nodeCache.get(r);if(e)return JSON.parse(e,common_1.dateReviver)}catch(e){this._nodeCache.del(r)}},MongoManager.prototype.addToCache=function(e,r,o){var t,n;if((0,common_1.getBinarySize)(JSON.stringify(o))<1e6&&!e.includes("logs")&&!e.find(function(e){return e.endsWith(".versions")})&&!e.find(function(e){return e.startsWith("monitor-")})){var s=this._nodeCache.getStats().vsize;if(s>this._heapLimit){var i=0,a=this._nodeCache.keys();try{for(var c=__values(a),l=c.next();!l.done;l=c.next()){var _=l.value;if(this._nodeCache.del(_),i+=1,(s=this._nodeCache.getStats().vsize)<.75*this._heapLimit)break}}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=c.return)&&n.call(c)}finally{if(t)throw t.error}}console.log("Query Cache: Too Big, - Deleted: "+i+" - "+s)}this._nodeCache.set(r,JSON.stringify(o)),this._cacheMap.push({collections:e,key:r})}},MongoManager.prototype.invalidateQueryCache=function(r){var o,e,t,n,s=this._cacheMap.filter(function(e){return e.collections.includes(r)});resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Invalidate Cache",r);try{for(var i=__values(s),a=i.next();!a.done;a=i.next()){var c=a.value;this._nodeCache.del(c.key),this._operationInProgress.has(c.key)&&(this._operationInProgress.get(c.key).invalidatedDuringExecution=!0,resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager())&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Invalidated During Execution",c.collections)}}catch(e){o={error:e}}finally{try{a&&!a.done&&(e=i.return)&&e.call(i)}finally{if(o)throw o.error}}try{for(var l=__values(this._operationInProgress.entries()),_=l.next();!_.done;_=l.next()){var g=__read(_.value,2),u=(g[0],g[1]);u.collections.includes(r)&&(u.invalidatedDuringExecution=!0,resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager())&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Invalidated During Execution (No cache)",u.collections)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(n=l.return)&&n.call(l)}finally{if(t)throw t.error}}this._cacheMap=this._cacheMap.filter(function(e){return!e.collections.includes(r)})},MongoManager.prototype.setupChangeStream=function(){var r=this,o=resolveio_server_app_1.ResolveIOServer.getMainDB().watch([{$match:{$and:[{"ns.coll":{$nin:["log-method-latencies","log-subscriptions","logs","counters","cron-job-histories","email-histories","qb-soap-request-histories","qb-soap-request-responses","qb-soap-requests","qb-soap-retries"]}},{"ns.coll":{$not:/.*\.versions$/}},{"ns.coll":{$not:/^monitor-/}}]}}],{fullDocument:"updateLookup"});o.on("change",function(e){e.ns&&e.ns.coll&&(e=e.ns.coll,r.collection(e))&&r.invalidateQueryCache(e)}),o.on("error",function(){return __awaiter(r,void 0,void 0,function(){var r=this;return __generator(this,function(e){switch(e.label){case 0:return console.log(new Date,"Mongo change stream error. Restart..."),[4,o.close()];case 1:return e.sent(),setTimeout(function(){return r.setupChangeStream()},5e3),[2]}})})}),o.on("close",function(){console.log(new Date,"Mongo change stream closed. Restarting..."),setTimeout(function(){return r.setupChangeStream()},5e3)})},MongoManager}(),MongoManagerModel=(exports.MongoManager=MongoManager,function(){function MongoManagerModel(){this.collection_main=null,this.collection_version=null}return MongoManagerModel.create=function(e){var r=new MongoManagerModel;return r.initialize(e),r},MongoManagerModel.prototype.initialize=function(e){var r,o=this;"users"===e.collectionName?this.collection_main=MongoManagerUserCollection.create(e):this.collection_main=MongoManagerCollection.create(e),e.useVersionCollection&&(this.collection_main.useVersions=!0,(r=(0,common_1.deepCopy)(e.schema))._id.type="Object",r._id.blackbox=!0,r={collectionName:e.collectionName+".versions",schema:r,useVersionCollection:!1,useReportBuilder:!1,reportBuilderLookupTables:[],timestamps:!0,createLogs:!1,checkSchema:!1,collectionOptions:null,skipCache:!0},"users"===e.collectionName?this.collection_version=MongoManagerUserCollection.create(r):this.collection_version=MongoManagerCollection.create(r),setImmediate(function(){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,this.collection_version.createIndex({"_id._id":1,"_id.__v":1})];case 1:return e.sent(),[2]}})})}),this.collection_main.versionCollection=e.collectionName+".versions")},MongoManagerModel}()),MongoManagerCollection=(exports.MongoManagerModel=MongoManagerModel,function(){function MongoManagerCollection(){this.collectionName="",this.checkSchema=!1,this.simplschema=null,this.rbSchema=null,this.timestamps=!1,this.useVersions=!1,this.versionCollection="",this.createLogs=!0,this.useRB=!1,this.skipCache=!1,this.bypassSession=!1}return MongoManagerCollection.create=function(e){var r=new MongoManagerCollection;return r.initialize(e),r},MongoManagerCollection.prototype.initialize=function(e){var r,o=this,t=(this.collectionName=e.collectionName,this.simplschema=new simpl_schema_1.default(e.schema),this.timestamps=e.timestamps,this.createLogs=e.createLogs,this.checkSchema=e.checkSchema,this.collectionOptions=e.collectionOptions,this.skipCache=e.skipCache||!1,this.bypassSession=e.bypassSession||!1,e.useReportBuilder&&(this.useRB=!0,r=(0,common_1.deepCopy)(e.schema),e=(0,common_1.buildRbLookups)(e.reportBuilderLookupTables,r,[]),this.rbSchema=(0,common_1.buildRbSchema)(e)),setInterval(function(){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return resolveio_server_app_1.ResolveIOServer&&resolveio_server_app_1.ResolveIOServer.getMainServer()&&resolveio_server_app_1.ResolveIOServer.getMongoManager()&&resolveio_server_app_1.ResolveIOServer.getMongoManager().getServerCollections().length?[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().registerCollection(this)]:[3,2];case 1:e.sent(),clearInterval(t),e.label=2;case 2:return[2]}})})},1))},MongoManagerCollection.prototype.extractIndexNameFromError=function(e){var r=e.match(/Index already exists with a different name: (\S+)/);return(r=!r||r.length<=1?e.match(/existing index:.*name: "([^"]+)"/):r)&&1<r.length?r[1]:null},MongoManagerCollection.prototype.aggregate=function(s,i,a,c){return void 0===a&&(a=!1),void 0===c&&(c=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n;return __generator(this,function(e){switch(e.label){case 0:return!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||c||this.bypassSession||i&&i.readPreference&&"primary"!==i.readPreference||(i?i.session=r:i={session:r}),a||this.skipCache?[3,1]:[2,resolveio_server_app_1.ResolveIOServer.getMongoManager().aggregate(this.collectionName,s,i)];case 1:(r=i||{}).session,o=__rest(r,["session"]),t=monitor_manager_1.MonitorMongo.create("aggregate",this.collectionName,JSON.stringify([s,o])),e.label=2;case 2:return e.trys.push([2,4,5,7]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(s,i).toArray()];case 3:return[2,e.sent()];case 4:throw n=e.sent(),console.log(new Date,"Error Aggregate",this.collectionName,JSON.stringify([s,o,n],null,2)),n.message="Error in Aggregate: ".concat(this.collectionName," - ").concat(n.message),n;case 5:return[4,t.finish()];case 6:return e.sent(),[7];case 7:return[2]}})})},MongoManagerCollection.prototype.aggregateCount=function(n,s,i){return void 0===i&&(i=!1),__awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||i||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),o=monitor_manager_1.MonitorMongo.create("aggregateCount",this.collectionName,JSON.stringify([n,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(n,s).toArray()];case 2:return[2,e.sent().length];case 3:throw t=e.sent(),console.log(new Date,"Error Aggregate Count",this.collectionName,JSON.stringify([n,r,t],null,2)),t.message="Error in Aggregate Count: ".concat(this.collectionName," - ").concat(t.message),t;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.aggregateCursor=function(e,r,o){var t=this,n=(void 0===o&&(o=!1),resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession()),o=(!n||o||this.bypassSession||r&&r.readPreference&&"primary"!==r.readPreference||(r?r.session=n:r={session:n}),r||{}),n=(o.session,__rest(o,["session"])),s=monitor_manager_1.MonitorMongo.create("aggregateCursor",this.collectionName,JSON.stringify([e,n])),o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,r);return o.on("close",function(r){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,s.finish()];case 1:return e.sent(),[2,r]}})})}),o},MongoManagerCollection.prototype.aggregateStream=function(e,r,o,t){var n=this,s=(void 0===t&&(t=!1),resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession()),t=(!s||t||this.bypassSession||r&&r.readPreference&&"primary"!==r.readPreference||(r?r.session=s:r={session:s}),r||{}),s=(t.session,__rest(t,["session"])),i=monitor_manager_1.MonitorMongo.create("aggregateStream",this.collectionName,JSON.stringify([e,s,o]));return resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,r).stream(o).on("close",function(r){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,i.finish()];case 1:return e.sent(),[2,r]}})})})},MongoManagerCollection.prototype.bulkWrite=function(I,w,N,R,b,D){return void 0===N&&(N=!1),void 0===R&&(R=!1),void 0===b&&(b=!1),void 0===D&&(D=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n,s,i,a,c,l,_,g,u,v,d,p,h,m,f,O,S,M,y;return __generator(this,function(e){switch(e.label){case 0:if(!I.length)return[2,null];r=1e3,o=0,t=null,!(n=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||D||this.bypassSession||w&&w.readPreference&&"primary"!==w.readPreference||(w?w.session=n:w={session:n},t={session:n}),e.label=1;case 1:if(!(o<I.length))return[3,19];s=I.slice(o,o+r),i=[],a=[];try{for(M=void 0,c=__values(s),l=c.next();!l.done;l=c.next()){if(_=l.value,g=Object.keys(_)[0],u=_[g],this.checkSchema&&!N){if(v=this.simplschema.newContext(),d=void 0,"insertOne"===g)d=v.validate(u.document);else if("replaceOne"===g)d=v.validate(u.replacement);else if("updateOne"===g||"updateMany"===g)d=v.validate(u.update,{modifier:!0});else{if("deleteOne"!==g&&"deleteMany"!==g)throw new Error("Unsupported operation type: ".concat(g));d=!0}if(!d)throw new Error("Schema validation failed for ".concat(g,": ").concat(JSON.stringify(v.validationErrors())))}if("insertOne"===g)this.timestamps&&(u.document.createdAt||(u.document.createdAt=new Date),u.document.updatedAt||(u.document.updatedAt=new Date)),!R&&this.createLogs&&i.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.document._id||(0,common_1.objectIdHexString)(),payload:(0,common_1.getBinarySize)(JSON.stringify(u.document))<2e5?JSON.stringify(u.document,null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),_[g].document=u.document;else if("updateOne"===g||"updateMany"===g)this.timestamps&&(u.update.$set||(u.update.$set={}),u.update.$set.updatedAt=new Date),!b&&this.useVersions&&(u.update.$inc||(u.update.$inc={}),u.update.$inc.__v=1),!R&&this.createLogs&&i.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(u.update))<2e5?JSON.stringify(u.update,null,2):"Too Big",method:g,id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!b&&this.useVersions&&a.push({filter:u.filter});else if("replaceOne"===g)this.timestamps&&(u.replacement.updatedAt=new Date),!b&&this.useVersions&&(u.replacement.__v=(u.replacement.__v||0)+1),!R&&this.createLogs&&i.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(u.replacement))<2e5?JSON.stringify(u.replacement,null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!b&&this.useVersions&&a.push({filter:u.filter}),_[g].replacement=u.replacement;else{if("deleteOne"!==g&&"deleteMany"!==g)throw new Error("Unsupported operation type: ".concat(g));!R&&this.createLogs&&i.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(u.filter))<2e5?JSON.stringify(u.filter,null,2):"Too Big",method:g,id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!b&&this.useVersions&&a.push({filter:u.filter})}}}catch(e){M={error:e}}finally{try{l&&!l.done&&(y=c.return)&&y.call(c)}finally{if(M)throw M.error}}return(p=[],!b&&this.useVersions&&0<a.length)?(h=a.map(function(e){return e.filter})).length?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName).find({$or:h},t).toArray()]:[3,3]:[3,5];case 2:p=e.sent(),e.label=3;case 3:return 0<(h=p.map(function(e){return{insertOne:{document:__assign(__assign({},e),{_id:{_id:e._id,__v:e.__v}})}}})).length?(f=null,f=t?{session:n,ordered:!1}:{ordered:!1},[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.versionCollection).bulkWrite(h,f)]):[3,5];case 4:e.sent(),e.label=5;case 5:(m=w||{}).session,m=__rest(m,["session"]),m=monitor_manager_1.MonitorMongo.create("bulkWrite",this.collectionName,JSON.stringify([s,m])),e.label=6;case 6:return e.trys.push([6,8,9,11]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName).bulkWrite(s,w)];case 7:return e.sent(),[3,11];case 8:throw(O=e.sent()).message="Error in Bulk Write: ".concat(this.collectionName," - ").concat(O.message),O;case 9:return[4,m.finish()];case 10:return e.sent(),[7];case 11:if(!R&&this.createLogs&&0<i.length){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,12];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLogs(i.map(function(e){return{type:"log",data:e}}))}return[3,14];case 12:return f=null,f=t?{session:n,ordered:!1}:{ordered:!1},[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").bulkWrite(i,f)];case 13:e.sent(),e.label=14;case 14:return b||!this.useVersions?[3,17]:(O=p.map(function(e){return e._id}),S=[{$match:{"_id._id":{$in:O}}},{$sort:{"_id._id":1,"_id.__v":-1}},{$group:{_id:"$_id._id",versions:{$push:"$_id"}}},{$project:{versionsToDelete:{$slice:["$versions",5,{$size:"$versions"}]}}},{$unwind:"$versionsToDelete"},{$replaceRoot:{newRoot:{_id:"$versionsToDelete"}}}],[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.versionCollection).aggregate(S,t).toArray()]);case 15:return 0<(S=e.sent()).length?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.versionCollection).deleteMany({_id:{$in:S.map(function(e){return e._id})}},t)]:[3,17];case 16:e.sent(),e.label=17;case 17:return o+=r,[4,new Promise(function(e){return setImmediate(e)})];case 18:return e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[3,1];case 19:return[2,{ok:1}]}})})},MongoManagerCollection.prototype.countDocuments=function(n,s,i){return void 0===n&&(n={}),void 0===i&&(i=!1),__awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:return((r=s||{}).session,r=__rest(r,["session"]),0===Object.keys(n).length)?[2,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).estimatedDocumentCount(r)]:[3,1];case 1:return i||this.skipCache?[3,2]:[2,resolveio_server_app_1.ResolveIOServer.getMongoManager().countDocuments(this.collectionName,n,r)];case 2:o=monitor_manager_1.MonitorMongo.create("countDocuments",this.collectionName,JSON.stringify([n,r])),e.label=3;case 3:return e.trys.push([3,5,6,8]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).countDocuments(n,r)];case 4:return[2,e.sent()];case 5:throw t=e.sent(),console.log(new Date,"Error Count Documents",this.collectionName,n,r,t),t.message="Error in Count Documents: ".concat(this.collectionName," - ").concat(t.message),t;case 6:return[4,o.finish()];case 7:return e.sent(),[7];case 8:return[2]}})})},MongoManagerCollection.prototype.create=function(e,r){return Array.isArray(e)?1===e.length?this.insertOne(e[0],r):this.insertMany(e,r):this.insertOne(e,r)},MongoManagerCollection.prototype.createIndex=function(e,r){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2,Promise.resolve("")]})})},MongoManagerCollection.prototype.createIndexes=function(e,r){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2,Promise.resolve([])]})})},MongoManagerCollection.prototype.deleteMany=function(_,g,u,v){return void 0===_&&(_={}),void 0===u&&(u=!1),void 0===v&&(v=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n,s,i,a,c,l;return __generator(this,function(e){switch(e.label){case 0:return(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),o=null,!r||v||this.bypassSession||g&&g.readPreference&&"primary"!==g.readPreference||(g?g.session=r:g={session:r},o={session:r}),(t=g||{}).session,t=__rest(t,["session"]),this.createLogs&&!u||this.useVersions)?[4,this.find(_)]:[3,9];case 1:n=e.sent(),s=0,e.label=2;case 2:if(!(s<n.length))return[3,9];if(i=n[s],this.createLogs&&!u){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,_,t]))<2e5?JSON.stringify([i,_,t],null,2):"Too Big",method:"deleteMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,_,t]))<2e5?JSON.stringify([i,_,t],null,2):"Too Big",method:"deleteMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((c=(0,common_1.deepCopy)(i))._id={_id:i._id,__v:i.__v},l=null,l=o?{session:r,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:i._id,__v:i.__v}},c,l)]):[3,8];case 6:return e.sent(),[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":i._id},{"_id.__v":{$lt:i.__v-1}}]},o)];case 7:e.sent(),e.label=8;case 8:return s++,[3,2];case 9:a=monitor_manager_1.MonitorMongo.create("deleteMany",this.collectionName,JSON.stringify([_,t])),e.label=10;case 10:return e.trys.push([10,12,13,15]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteMany(_,g)];case 11:return c=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,c.acknowledged];case 12:throw l=e.sent(),console.log(new Date,"Error Delete Many",this.collectionName,_,t,l),l.message="Error in Delete Many: ".concat(this.collectionName," - ").concat(l.message),l;case 13:return[4,a.finish()];case 14:return e.sent(),[7];case 15:return[2]}})})},MongoManagerCollection.prototype.deleteOne=function(l,_,g,u){return void 0===l&&(l={}),void 0===g&&(g=!1),void 0===u&&(u=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n,s,i,a,c;return __generator(this,function(e){switch(e.label){case 0:if(t=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),r=null,!t||u||this.bypassSession||_&&_.readPreference&&"primary"!==_.readPreference||(_?_.session=t:_={session:t},r={session:t}),o=(t=_||{}).session,t=__rest(t,["session"]),!this.createLogs||g)return[3,15];i=monitor_manager_1.MonitorMongo.create("findOneAndDelete",this.collectionName,JSON.stringify([l,t])),e.label=1;case 1:return e.trys.push([1,11,12,14]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(l,_)];case 2:if(n=e.sent(),!(n=n.value))return[3,9];if(this.createLogs&&!g){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:n._id,payload:(0,common_1.getBinarySize)(JSON.stringify([n,l,t]))<2e5?JSON.stringify([n,l,t],null,2):"Too Big",method:"deleteOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:n._id,payload:(0,common_1.getBinarySize)(JSON.stringify([n,l,t]))<2e5?JSON.stringify([n,l,t],null,2):"Too Big",method:"deleteOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},r)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((s=(0,common_1.deepCopy)(n))._id={_id:n._id,__v:n.__v},a=null,a=r?{session:o,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:n._id,__v:n.__v}},s,a)]):[3,8];case 6:return e.sent(),[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":n._id},{"_id.__v":{$lt:n.__v-1}}]},r)];case 7:e.sent(),e.label=8;case 8:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,!0];case 9:return[2,!0];case 10:return[3,14];case 11:throw s=e.sent(),console.log(new Date,"Error Delete One (Find One And Delete)",this.collectionName,l,t,s),s.message="Error in Delete One (Find One And Delete): ".concat(this.collectionName," - ").concat(s.message),s;case 12:return[4,i.finish()];case 13:return e.sent(),[7];case 14:return[3,21];case 15:i=monitor_manager_1.MonitorMongo.create("deleteOne",this.collectionName,JSON.stringify([l,t])),e.label=16;case 16:return e.trys.push([16,18,19,21]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteOne(l,_)];case 17:return a=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,a.acknowledged];case 18:throw c=e.sent(),console.log(new Date,"Error Delete One",this.collectionName,l,t,c),c.message="Error in Delete One: ".concat(this.collectionName," - ").concat(c.message),c;case 19:return[4,i.finish()];case 20:return e.sent(),[7];case 21:return[2]}})})},MongoManagerCollection.prototype.distinct=function(n,s,i,a){return void 0===a&&(a=!1),__awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||a||this.bypassSession||i&&i.readPreference&&"primary"!==i.readPreference||(i?i.session=r:i={session:r}),(r=i||{}).session,r=__rest(r,["session"]),o=monitor_manager_1.MonitorMongo.create("distinct",this.collectionName,JSON.stringify([n,s,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).distinct(n,s,i)];case 2:return[2,e.sent()];case 3:throw t=e.sent(),console.log(new Date,"Error Distinct",this.collectionName,s,r,t),t.message="Error in Distinct: ".concat(this.collectionName," - ").concat(t.message),t;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.drop=function(n,s){return void 0===s&&(s=!1),__awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||s||this.bypassSession||n&&n.readPreference&&"primary"!==n.readPreference||(n?n.session=r:n={session:r}),(r=n||{}).session,r=__rest(r,["session"]),o=monitor_manager_1.MonitorMongo.create("drop",this.collectionName,JSON.stringify([r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).drop(n)];case 2:return[2,e.sent()];case 3:throw t=e.sent(),console.log(new Date,"Error Count Documents",this.collectionName,r,t),t.message="Error in Count Documents: ".concat(this.collectionName," - ").concat(t.message),t;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.dropIndex=function(n,s,i){return void 0===i&&(i=!1),__awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||i||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),o=monitor_manager_1.MonitorMongo.create("dropIndex",this.collectionName,JSON.stringify([n,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).dropIndex(n,s)];case 2:return[2,e.sent()];case 3:throw t=e.sent(),console.log(new Date,"Error Drop Index",this.collectionName,n,r,t),t.message="Error in Drop Index: ".concat(this.collectionName," - ").concat(n," - ").concat(t.message),t;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.dropIndexes=function(n,s){return void 0===s&&(s=!1),__awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||s||this.bypassSession||n&&n.readPreference&&"primary"!==n.readPreference||(n?n.session=r:n={session:r}),(r=n||{}).session,r=__rest(r,["session"]),o=monitor_manager_1.MonitorMongo.create("dropIndexes",this.collectionName,JSON.stringify([r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).dropIndexes(n)];case 2:return[2,e.sent()];case 3:throw t=e.sent(),console.log(new Date,"Error Drop Indexes",this.collectionName,r,t),t.message="Error in Drop Indexes: ".concat(this.collectionName," - ").concat(t.message),t;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.find=function(n,s,i,a){return void 0===n&&(n={}),void 0===i&&(i=!1),void 0===a&&(a=!1),__awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:return!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||a||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),i||this.skipCache?[3,1]:[2,resolveio_server_app_1.ResolveIOServer.getMongoManager().find(this.collectionName,n,s)];case 1:o=monitor_manager_1.MonitorMongo.create("find",this.collectionName,JSON.stringify([n,r])),e.label=2;case 2:return e.trys.push([2,4,5,7]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(n,s).toArray()];case 3:return[2,e.sent()];case 4:throw t=e.sent(),console.log(new Date,"Error Find",this.collectionName,n,r,t),t.message="Error in Find: ".concat(this.collectionName," - ").concat(JSON.stringify(n,null,2)," - ").concat(t.message),t;case 5:return[4,o.finish()];case 6:return e.sent(),[7];case 7:return[2]}})})},MongoManagerCollection.prototype.findById=function(n,s,i,a){return void 0===i&&(i=!1),void 0===a&&(a=!1),__awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:return!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||a||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),i||this.skipCache?[3,1]:[2,resolveio_server_app_1.ResolveIOServer.getMongoManager().findOne(this.collectionName,{_id:n},s)];case 1:o=monitor_manager_1.MonitorMongo.create("findById",this.collectionName,JSON.stringify([{_id:n},r])),e.label=2;case 2:return e.trys.push([2,4,5,7]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOne({_id:n},s)];case 3:return[2,e.sent()];case 4:throw t=e.sent(),console.log(new Date,"Error Find By Id",this.collectionName,{_id:n},r,t),t.message="Error in Find By ID: ".concat(this.collectionName," - ").concat(n," - ").concat(t.message),t;case 5:return[4,o.finish()];case 6:return e.sent(),[7];case 7:return[2]}})})},MongoManagerCollection.prototype.findCount=function(n,s,i){return void 0===n&&(n={}),void 0===i&&(i=!1),__awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||i||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),o=monitor_manager_1.MonitorMongo.create("findCount",this.collectionName,JSON.stringify([n,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(n,s).count()];case 2:return[2,e.sent()];case 3:throw t=e.sent(),console.log(new Date,"Error Find Count",this.collectionName,n,r,t),t.message="Error in Find Count: ".concat(this.collectionName," - ").concat(JSON.stringify(n,null,2)," - ").concat(t.message),t;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.findCursor=function(e,r,o){var t=this,n=(void 0===e&&(e={}),void 0===o&&(o=!1),resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession()),o=(!n||o||this.bypassSession||r&&r.readPreference&&"primary"!==r.readPreference||(r?r.session=n:r={session:n}),r||{}),n=(o.session,__rest(o,["session"])),s=monitor_manager_1.MonitorMongo.create("findCursor",this.collectionName,JSON.stringify([e,n])),i=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,r);return i.on("close",function(r){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,s.finish()];case 1:return e.sent(),i.removeAllListeners(),[2,r]}})})}),i},MongoManagerCollection.prototype.findStream=function(e,r,o,t){var n=this,s=(void 0===e&&(e={}),void 0===t&&(t=!1),resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession()),t=(!s||t||this.bypassSession||r&&r.readPreference&&"primary"!==r.readPreference||(r?r.session=s:r={session:s}),r||{}),s=(t.session,__rest(t,["session"])),i=monitor_manager_1.MonitorMongo.create("findStream",this.collectionName,JSON.stringify([e,s,o]));return resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,r).stream(o).on("close",function(r){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,i.finish()];case 1:return e.sent(),[2,r]}})})})},MongoManagerCollection.prototype.findOne=function(s,i,a,c){return void 0===s&&(s={}),void 0===a&&(a=!1),void 0===c&&(c=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n;return __generator(this,function(e){switch(e.label){case 0:return!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||c||this.bypassSession||i&&i.readPreference&&"primary"!==i.readPreference||(i?i.session=r:i={session:r}),a||this.skipCache?[3,1]:[2,resolveio_server_app_1.ResolveIOServer.getMongoManager().findOne(this.collectionName,s,i)];case 1:(r=i||{}).session,o=__rest(r,["session"]),t=monitor_manager_1.MonitorMongo.create("findOne",this.collectionName,JSON.stringify([s,o])),e.label=2;case 2:return e.trys.push([2,4,5,7]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOne(s,i)];case 3:return[2,e.sent()];case 4:throw n=e.sent(),console.log(new Date,"Error Find One",this.collectionName,s,o,n),n.message="Error in Find One: ".concat(this.collectionName," - ").concat(JSON.stringify(s,null,2)," - ").concat(n.message),n;case 5:return[4,t.finish()];case 6:return e.sent(),[7];case 7:return[2]}})})},MongoManagerCollection.prototype.findOneAndDelete=function(c,l,_,g){return void 0===c&&(c={}),void 0===_&&(_=!1),void 0===g&&(g=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n,s,i,a;return __generator(this,function(e){switch(e.label){case 0:t=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),r=null,!t||g||this.bypassSession||l&&l.readPreference&&"primary"!==l.readPreference||(l?l.session=t:l={session:t},r={session:t}),o=(t=l||{}).session,t=__rest(t,["session"]),n=monitor_manager_1.MonitorMongo.create("findOneAndDelete",this.collectionName,JSON.stringify([c,t])),e.label=1;case 1:return e.trys.push([1,10,11,13]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(c,l)];case 2:if(s=e.sent(),!(s=s.value))return[3,8];if(this.createLogs&&!_){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:s._id,payload:(0,common_1.getBinarySize)(JSON.stringify([s,c,t]))<2e5?JSON.stringify([s,c,t],null,2):"Too Big",method:"findOneAndDelete",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:s._id,payload:(0,common_1.getBinarySize)(JSON.stringify([s,c,t]))<2e5?JSON.stringify([s,c,t],null,2):"Too Big",method:"findOneAndDelete",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},r)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((a=(0,common_1.deepCopy)(s))._id={_id:s._id,__v:s.__v},i=null,i=r?{session:o,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:s._id,__v:s.__v}},a,i)]):[3,7];case 6:e.sent(),e.label=7;case 7:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,s];case 8:return[2,null];case 9:return[3,13];case 10:throw a=e.sent(),console.log(new Date,"Error Find One And Delete",this.collectionName,c,t,a),a.message="Error in Find One And Delete: ".concat(this.collectionName," - ").concat(JSON.stringify(c,null,2)," - ").concat(a.message),a;case 11:return[4,n.finish()];case 12:return e.sent(),[7];case 13:return[2]}})})},MongoManagerCollection.prototype.findOneAndReplace=function(l,_,g,u,v,d){return void 0===l&&(l={}),void 0===u&&(u=!1),void 0===v&&(v=!1),void 0===d&&(d=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n,s,i,a,c;return __generator(this,function(e){switch(e.label){case 0:if(this.checkSchema&&!v&&(r=this.simplschema.newContext(),!r.validate(_)))throw console.log(new Date,this.collectionName,"Schema Errors - findOneAndReplace",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndReplace - "+this.collectionName,[r.validationErrors(),_]),new Error(r.validationErrors());r=new Date,this.timestamps&&(_.updatedAt=r),g&&g.upsert&&(_._id||(_._id=(0,common_1.objectIdHexString)()),this.useVersions&&(_.__v=0),this.timestamps)&&!_.createdAt&&(_.createdAt=r),n=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),o=null,!n||d||this.bypassSession||g&&g.readPreference&&"primary"!==g.readPreference||(g?g.session=n:g={session:n},o={session:n}),t=(n=g||{}).session,n=__rest(n,["session"]),s=monitor_manager_1.MonitorMongo.create("findOneAndReplace",this.collectionName,JSON.stringify([l,_,n])),e.label=1;case 1:return e.trys.push([1,10,11,13]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(l,_,g)];case 2:if(i=e.sent(),!(i=i.value))return[3,8];if(this.createLogs&&!u){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,l,_,n]))<2e5?JSON.stringify([i,l,_,n],null,2):"Too Big",method:"findOneAndReplace",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,l,_,n]))<2e5?JSON.stringify([i,l,_,n],null,2):"Too Big",method:"findOneAndReplace",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((c=(0,common_1.deepCopy)(i))._id={_id:i._id,__v:i.__v},a=null,a=o?{session:t,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:i._id,__v:i.__v}},c,a)]):[3,7];case 6:e.sent(),e.label=7;case 7:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,i];case 8:return[2,null];case 9:return[3,13];case 10:throw c=e.sent(),console.log(new Date,"Error Find One And Replace",this.collectionName,l,n,c),c.message="Error in Find One And Replace: ".concat(this.collectionName," - ").concat(JSON.stringify(l,null,2)," - ").concat(c.message),c;case 11:return[4,s.finish()];case 12:return e.sent(),[7];case 13:return[2]}})})},MongoManagerCollection.prototype.findOneAndUpdate=function(l,_,g,u,v,d){return void 0===l&&(l={}),void 0===u&&(u=!1),void 0===v&&(v=!1),void 0===d&&(d=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n,s,i,a,c;return __generator(this,function(e){switch(e.label){case 0:if(this.checkSchema&&!v&&(r=this.simplschema.newContext(),!r.validate(_,{modifier:!0})))throw console.log(new Date,this.collectionName,"Schema Errors - findOneAndUpdate",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndUpdate - "+this.collectionName,[r.validationErrors(),_]),new Error(r.validationErrors());this.timestamps&&(r=new Date,_.$set?_.$set.updatedAt=r:_.$set={updatedAt:r}),g&&g.upsert&&(_.$setOnInsert?(_.$setOnInsert._id||(_.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!_.$setOnInsert.createdAt&&(_.$setOnInsert.createdAt=new Date)):this.timestamps?_.$setOnInsert={_id:(0,common_1.objectIdHexString)(),createdAt:new Date}:_.$setOnInsert={_id:(0,common_1.objectIdHexString)()}),n=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),o=null,!n||d||this.bypassSession||g&&g.readPreference&&"primary"!==g.readPreference||(g?g.session=n:g={session:n},o={session:n}),t=(n=g||{}).session,n=__rest(n,["session"]),s=monitor_manager_1.MonitorMongo.create("findOneAndUpdate",this.collectionName,JSON.stringify([l,_,n])),e.label=1;case 1:return e.trys.push([1,10,11,13]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(l,_,g)];case 2:if(i=e.sent(),!(i=i.value))return[3,8];if(this.createLogs&&!u){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,l,_,n]))<2e5?JSON.stringify([i,l,_,n],null,2):"Too Big",method:"findOneAndUpdate",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,l,_,n]))<2e5?JSON.stringify([i,l,_,n],null,2):"Too Big",method:"findOneAndUpdate",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((c=(0,common_1.deepCopy)(i))._id={_id:i._id,__v:i.__v},a=null,a=o?{session:t,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:i._id,__v:i.__v}},c,a)]):[3,7];case 6:e.sent(),e.label=7;case 7:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,i];case 8:return[2,null];case 9:return[3,13];case 10:throw c=e.sent(),console.log(new Date,"Error Find One And Update",this.collectionName,l,n,c),c.message="Error in Find One And Update: ".concat(this.collectionName," - ").concat(JSON.stringify(l,null,2)," - ").concat(c.message),c;case 11:return[4,s.finish()];case 12:return e.sent(),[7];case 13:return[2]}})})},MongoManagerCollection.prototype.indexes=function(n){return __awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:(r=n||{}).session,r=__rest(r,["session"]),o=monitor_manager_1.MonitorMongo.create("indexes",this.collectionName,JSON.stringify([r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).indexes(n)];case 2:return[2,e.sent()];case 3:throw t=e.sent(),console.log(new Date,"Error Indexes",this.collectionName,r,t),t.message="Error in Indexes: ".concat(this.collectionName," - ").concat(t.message),t;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.indexExists=function(n,s){return __awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:(r=s||{}).session,r=__rest(r,["session"]),o=monitor_manager_1.MonitorMongo.create("indexExists",this.collectionName,JSON.stringify([n,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).indexExists(n,s)];case 2:return[2,e.sent()];case 3:throw t=e.sent(),console.log(new Date,"Error Index Exists",this.collectionName,n,r,t),t.message="Error in Index Exists: ".concat(this.collectionName," - ").concat(JSON.stringify(n,null,2)," - ").concat(t.message),t;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.insertMany=function(_,g,u,v,d,p){return void 0===u&&(u=!1),void 0===v&&(v=!1),void 0===d&&(d=!1),void 0===p&&(p=!1),__awaiter(this,void 0,void 0,function(){var o,r,t,n,s,i,a,c,l=this;return __generator(this,function(e){switch(e.label){case 0:if(!_.length)return[2,[]];o=[],this.checkSchema&&!v&&_.forEach(function(e){var r=l.simplschema.newContext();r.validate(e)?o.push(!0):(console.log(new Date,l.collectionName,"Schema Errors - insertMany",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertMany - "+l.collectionName,[r.validationErrors(),e]),o.push(!1))}),r=this.checkSchema?_.filter(function(e,r){return o[r]}):_,n=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),t=null,!n||p||this.bypassSession||g&&g.readPreference&&"primary"!==g.readPreference||(g?g.session=n:g={session:n},t={session:n}),(n=g||{}).session,n=__rest(n,["session"]),s=0,e.label=1;case 1:if(!(s<r.length))return[3,5];if((i=r[s])._id||(i._id=(0,common_1.objectIdHexString)()),this.timestamps&&(c=new Date,i.createdAt||(i.createdAt=c),i.updatedAt||(i.updatedAt=c)),this.useVersions&&!i.hasOwnProperty("__v")&&(i.__v=0),this.createLogs&&!u){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,2];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,n]))<2e5?JSON.stringify([i,n],null,2):"Too Big",method:"insertMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,4];case 2:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,n]))<2e5?JSON.stringify([i,n],null,2):"Too Big",method:"insertMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 3:e.sent(),e.label=4;case 4:return s++,[3,1];case 5:if(!r.length)return[3,10];a=null,d||(a=monitor_manager_1.MonitorMongo.create("insertMany",this.collectionName,JSON.stringify([r,n]))),e.label=6;case 6:return e.trys.push([6,8,9,10]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertMany(r,g)];case 7:return e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,r];case 8:throw c=e.sent(),console.log(new Date,"Error Insert Many",this.collectionName,r,n,c),c.message="Error in Insert Many: ".concat(this.collectionName," - ").concat(c.message),c;case 9:return a&&a.finish(),[7];case 10:return[2,[]]}})})},MongoManagerCollection.prototype.insertOne=function(a,c,l,_,g){return void 0===l&&(l=!1),void 0===_&&(_=!1),void 0===g&&(g=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n,s,i;return __generator(this,function(e){switch(e.label){case 0:if(a._id||(a._id=(0,common_1.objectIdHexString)()),this.checkSchema&&!_&&(r=this.simplschema.newContext(),!r.validate(a)))throw console.log(new Date,this.collectionName,"Schema Errors - insertOne",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertOne - "+this.collectionName,[r.validationErrors(),a]),new Error(r.validationErrors());if(this.timestamps&&(o=new Date,a.createdAt||(a.createdAt=o),a.updatedAt||(a.updatedAt=o)),o=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),t=null,!o||g||this.bypassSession||c&&c.readPreference&&"primary"!==c.readPreference||(c?c.session=o:c={session:o},t={session:o}),(n=c||{}).session,n=__rest(n,["session"]),this.createLogs&&!l){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,1];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,n]))<2e5?JSON.stringify([a,n],null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,3];case 1:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,n]))<2e5?JSON.stringify([a,n],null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 2:e.sent(),e.label=3;case 3:this.useVersions&&!a.hasOwnProperty("__v")&&(a.__v=0),s=monitor_manager_1.MonitorMongo.create("insertOne",this.collectionName,JSON.stringify([a,n])),e.label=4;case 4:return e.trys.push([4,6,7,9]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertOne(a,c)];case 5:return e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,a];case 6:throw i=e.sent(),console.log(new Date,"Error Insert One",this.collectionName,a,n,i),i.message="Error in Insert One: ".concat(this.collectionName," - ").concat(i.message),i;case 7:return[4,s.finish()];case 8:return e.sent(),[7];case 9:return[2]}})})},MongoManagerCollection.prototype.listIndexes=function(e,r){var o=this,t=(void 0===r&&(r=!1),resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession()),r=(!t||r||this.bypassSession||e&&e.readPreference&&"primary"!==e.readPreference||(e?e.session=t:e={session:t}),e||{}),t=(r.session,__rest(r,["session"])),n=monitor_manager_1.MonitorMongo.create("listIndexes",this.collectionName,JSON.stringify([t])),r=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).listIndexes(e);return r.on("close",function(r){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,n.finish()];case 1:return e.sent(),[2,r]}})})}),r},MongoManagerCollection.prototype.rename=function(n,s,i){return void 0===i&&(i=!1),__awaiter(this,void 0,void 0,function(){var r,o,t;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||i||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),o=monitor_manager_1.MonitorMongo.create("rename",this.collectionName,JSON.stringify([n,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).rename(n,s)];case 2:return[2,e.sent()];case 3:throw t=e.sent(),console.log(new Date,"Error Rename",this.collectionName,n,r,t),t.message="Error in Rename: ".concat(this.collectionName," - ").concat(n," - ").concat(t.message),t;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.replaceOne=function(m,f,O,S,M,y,I){return void 0===S&&(S=!1),void 0===M&&(M=!1),void 0===y&&(y=null),void 0===I&&(I=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n,s,i,a,c,l,_,g,u,v,d,p,h;return __generator(this,function(e){switch(e.label){case 0:if(!this.checkSchema||M||(r=this.simplschema.newContext(),r.validate(f)))return o=new Date,this.timestamps&&(f.updatedAt=o),s=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),t=null,!s||I||this.bypassSession||O&&O.readPreference&&"primary"!==O.readPreference||(O?O.session=s:O={session:s},t={session:s}),n=(s=O||{}).session,s=__rest(s,["session"]),this.useVersions?y?[3,2]:[4,this.findOne(m,null,!0)]:[3,40];throw console.log(new Date,this.collectionName,"Schema Errors - replaceOne",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on replaceOne - "+this.collectionName,[r.validationErrors(),f]),new Error(r.validationErrors());case 1:y=e.sent(),e.label=2;case 2:return y?(this.timestamps&&!f.createdAt&&y.createdAt&&(f.createdAt=y.createdAt),y.__v!==f.__v?[3,15]:(f.__v+=1,(i=(0,common_1.deepCopy)(y))._id={_id:y._id,__v:y.__v},a=null,a=t?{session:n,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:y._id,__v:y.__v}},i,a)])):[3,28];case 3:return(e.sent(),4<=y.__v)?[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":y._id},{"_id.__v":{$lt:y.__v-4}}]},t)]:[3,5];case 4:e.sent(),e.label=5;case 5:if(this.createLogs&&!S){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,6];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:y._id,payload:(0,common_1.getBinarySize)(JSON.stringify([y,m,f,s]))<2e5?JSON.stringify([y,m,f,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,8];case 6:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:y._id,payload:(0,common_1.getBinarySize)(JSON.stringify([y,m,f,s]))<2e5?JSON.stringify([y,m,f,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 7:e.sent(),e.label=8;case 8:d=monitor_manager_1.MonitorMongo.create("replaceOne",this.collectionName,JSON.stringify([m,f,s])),e.label=9;case 9:return e.trys.push([9,11,12,14]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(m,f,O)];case 10:return p=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,p.acknowledged];case 11:throw i=e.sent(),console.log(new Date,"Error Replace One",this.collectionName,m,f,s,i),i.message="Error in Replace One: ".concat(this.collectionName," - ").concat(i.message),i;case 12:return[4,d.finish()];case 13:return e.sent(),[7];case 14:return[3,27];case 15:return console.log("invalid version - "+this.collectionName,y.__v,f.__v),[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).findOne({_id:{_id:y._id,__v:f.__v}},null,!0)];case 16:if(!(a=e.sent()))return[3,26];if(c=y._id,_=y.__v,(l=(0,common_1.getMongoMergeUpdatedDoc)(f,y,a))._id=c,l.__v=_+1,this.createLogs&&!S){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,17];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:c,payload:(0,common_1.getBinarySize)(JSON.stringify(["invalidVersion - merge",y,m,l,s]))<2e5?JSON.stringify(["invalidVersion - merge",y,m,l,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,19];case 17:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:c,payload:(0,common_1.getBinarySize)(JSON.stringify(["invalidVersion - merge",y,m,l,s]))<2e5?JSON.stringify(["invalidVersion - merge",y,m,l,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 18:e.sent(),e.label=19;case 19:d=monitor_manager_1.MonitorMongo.create("replaceOne",this.collectionName,JSON.stringify([m,l,s])),e.label=20;case 20:return e.trys.push([20,22,23,25]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(m,l,O)];case 21:return p=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,p.acknowledged];case 22:throw _=e.sent(),console.log(new Date,"Error Replace One",this.collectionName,m,l,s,_),_.message="Error in Replace One: ".concat(this.collectionName," - ").concat(_.message),_;case 23:return[4,d.finish()];case 24:return e.sent(),[7];case 25:return[3,27];case 26:throw new Error("Error in Replcae One: Invalid Version And Could Not Find History - DB: "+y.__v+", Trying to update with :"+f.__v);case 27:return[3,39];case 28:if(!O||!O.upsert)return[3,38];if(this.timestamps&&(f.createdAt=o),f._id||(f._id=(0,common_1.objectIdHexString)()),f.__v=0,this.createLogs&&!S){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,29];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",m,f,s]))<2e5?JSON.stringify(["upsert",m,f,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,31];case 29:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",m,f,s]))<2e5?JSON.stringify(["upsert",m,f,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 30:e.sent(),e.label=31;case 31:d=monitor_manager_1.MonitorMongo.create("replaceOne",this.collectionName,JSON.stringify([m,f,s])),e.label=32;case 32:return e.trys.push([32,34,35,37]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(m,f,O)];case 33:return p=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,p.acknowledged];case 34:throw g=e.sent(),console.log(new Date,"Error Replace One",this.collectionName,m,f,s,g),g.message="Error in Replace One: ".concat(this.collectionName," - ").concat(g.message),g;case 35:return[4,d.finish()];case 36:return e.sent(),[7];case 37:return[3,39];case 38:throw new Error("Error in Replace One: No Document");case 39:return[3,60];case 40:if(O&&O.upsert&&(this.timestamps&&!f.createdAt&&(f.createdAt=o),f._id||(f._id=(0,common_1.objectIdHexString)()),f.__v=0),!this.createLogs||S)return[3,54];O?O.returnDocument="before":O={returnDocument:"before"},(g=O||{}).session,u=__rest(g,["session"]),d=monitor_manager_1.MonitorMongo.create("findOneAndReplace",this.collectionName,JSON.stringify([m,f,u])),e.label=41;case 41:return e.trys.push([41,50,51,53]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(m,f,O)];case 42:return(p=e.sent(),v=p.value)?"https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,43]:(resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:v._id,payload:(0,common_1.getBinarySize)(JSON.stringify([v,m,f,u]))<2e5?JSON.stringify([v,m,f,u],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}),[3,45]):[3,46];case 43:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:v._id,payload:(0,common_1.getBinarySize)(JSON.stringify([v,m,f,u]))<2e5?JSON.stringify([v,m,f,u],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 44:e.sent(),e.label=45;case 45:return[3,49];case 46:return"https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,47]:(resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",m,f,u]))<2e5?JSON.stringify(["upsert",m,f,u],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}),[3,49]);case 47:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",m,f,u]))<2e5?JSON.stringify(["upsert",m,f,u],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 48:e.sent(),e.label=49;case 49:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,1];case 50:throw h=e.sent(),console.log(new Date,"Error Replace One (Find One And Replace)",this.collectionName,m,f,u,h),h.message="Error in Replace One (Find One And Replace): ".concat(this.collectionName," - ").concat(h.message),h;case 51:return[4,d.finish()];case 52:return e.sent(),[7];case 53:return[3,60];case 54:d=monitor_manager_1.MonitorMongo.create("replaceOne",this.collectionName,JSON.stringify([m,f,s])),e.label=55;case 55:return e.trys.push([55,57,58,60]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(m,f,O)];case 56:return p=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,p.acknowledged];case 57:throw h=e.sent(),console.log(new Date,"Error Replace One",this.collectionName,m,f,s,h),h.message="Error in Aggregate: ".concat(this.collectionName," - ").concat(h.message),h;case 58:return[4,d.finish()];case 59:return e.sent(),[7];case 60:return[2]}})})},MongoManagerCollection.prototype.updateMany=function(u,v,d,p,h,m,f){return void 0===p&&(p=!1),void 0===h&&(h=!1),void 0===m&&(m=!1),void 0===f&&(f=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n,s,i,a,c,l,_,g;return __generator(this,function(e){switch(e.label){case 0:if(!(v.$inc&&"{}"!==JSON.stringify(v.$inc)||v.$set&&"{}"!==JSON.stringify(v.$set)||v.$setOnInsert&&"{}"!==JSON.stringify(v.$setOnInsert)||v.$unset&&"{}"!==JSON.stringify(v.$unset)))return[2,1];if(this.timestamps&&(o=new Date,v.$set?v.$set.updatedAt=o:v.$set={updatedAt:o}),!this.checkSchema||h||(r=this.simplschema.newContext(),r.validate(v,{modifier:!0})))return o=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),t=null,!o||f||this.bypassSession||d&&d.readPreference&&"primary"!==d.readPreference||(d?d.session=o:d={session:o},t={session:o}),n=(s=d||{}).session,s=__rest(s,["session"]),this.useVersions&&!m||this.createLogs&&!p?[4,this.find(u)]:[3,10];throw console.log(new Date,this.collectionName,"Schema Errors - updateMany",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateMany - "+this.collectionName,[r.validationErrors(),v]),new Error(r.validationErrors());case 1:i=e.sent(),a=0,e.label=2;case 2:if(!(a<i.length))return[3,10];if(c=i[a],this.createLogs&&!p){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:c._id,payload:(0,common_1.getBinarySize)(JSON.stringify([c,u,v,s]))<2e5?JSON.stringify([c,u,v,s],null,2):"Too Big",method:"updateMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:c._id,payload:(0,common_1.getBinarySize)(JSON.stringify([c,u,v,s]))<2e5?JSON.stringify([c,u,v,s],null,2):"Too Big",method:"updateMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((_=(0,common_1.deepCopy)(c))._id={_id:c._id,__v:c.__v},g=null,g=t?{session:n,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:c._id,__v:c.__v}},_,g)]):[3,9];case 6:return(e.sent(),4<=c.__v)?[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":c._id},{"_id.__v":{$lt:c.__v-4}}]},t)]:[3,8];case 7:e.sent(),e.label=8;case 8:objectContainsPropertyDeep(v,"__v")||(v.$inc?v.$inc.__v||(v.$inc.__v=1):v.$inc={__v:1}),e.label=9;case 9:return a++,[3,2];case 10:l=monitor_manager_1.MonitorMongo.create("updateMany",this.collectionName,JSON.stringify([u,v,s])),e.label=11;case 11:return e.trys.push([11,13,14,16]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateMany(u,v,d)];case 12:return _=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,_.acknowledged];case 13:throw g=e.sent(),console.log(new Date,"Error Update Many",this.collectionName,u,v,s,g),g.message="Error in Update Many: ".concat(this.collectionName," - ").concat(g.message),g;case 14:return[4,l.finish()];case 15:return e.sent(),[7];case 16:return[2]}})})},MongoManagerCollection.prototype.updateOne=function(g,u,v,d,p,h){return void 0===d&&(d=!1),void 0===p&&(p=!1),void 0===h&&(h=!1),__awaiter(this,void 0,void 0,function(){var r,o,t,n,s,i,a,c,l,_;return __generator(this,function(e){switch(e.label){case 0:if(!this.checkSchema||p||(r=this.simplschema.newContext(),r.validate(u,{modifier:!0})))return u.$inc&&"{}"!==JSON.stringify(u.$inc)||u.$set&&"{}"!==JSON.stringify(u.$set)||u.$setOnInsert&&"{}"!==JSON.stringify(u.$setOnInsert)||u.$unset&&"{}"!==JSON.stringify(u.$unset)?(n=new Date,this.timestamps&&(u.$set?u.$set.updatedAt=n:u.$set={updatedAt:n}),n=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),o=null,!n||h||this.bypassSession||v&&v.readPreference&&"primary"!==v.readPreference||(v?v.session=n:v={session:n},o={session:n}),t=(n=v||{}).session,n=__rest(n,["session"]),this.useVersions?[4,this.findOne(g,null,!0)]:[3,26]):[2,!0];throw console.log(new Date,this.collectionName,"Schema Errors - updateOne",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateOne - "+this.collectionName,[r.validationErrors(),u]),new Error(r.validationErrors());case 1:if(!(a=e.sent()))return[3,14];if(this.createLogs&&!d){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,2];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,g,u,n]))<2e5?JSON.stringify([a,g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,4];case 2:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,g,u,n]))<2e5?JSON.stringify([a,g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 3:e.sent(),e.label=4;case 4:return(s=(0,common_1.deepCopy)(a))._id={_id:a._id,__v:a.__v},i=null,i=o?{session:t,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:a._id,__v:a.__v}},s,i)];case 5:return(e.sent(),4<=a.__v)?[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":a._id},{"_id.__v":{$lt:a.__v-4}}]},o)]:[3,7];case 6:e.sent(),e.label=7;case 7:objectContainsPropertyDeep(u,"__v")||(u.$inc?u.$inc.__v||(u.$inc.__v=1):u.$inc={__v:1}),c=monitor_manager_1.MonitorMongo.create("updateOne",this.collectionName,JSON.stringify([g,u,n])),e.label=8;case 8:return e.trys.push([8,10,11,13]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(g,u,v)];case 9:return l=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,l.acknowledged];case 10:throw s=e.sent(),console.log(new Date,"Error Update One",this.collectionName,g,u,n,s),s.message="Error in Update One: ".concat(this.collectionName," - ").concat(s.message),s;case 11:return[4,c.finish()];case 12:return e.sent(),[7];case 13:return[3,25];case 14:if(!v||!v.upsert)return[3,24];if(u.$setOnInsert?(u.$setOnInsert._id||(u.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!u.$setOnInsert.createdAt&&(u.$setOnInsert.createdAt=new Date)):this.timestamps?u.$setOnInsert={_id:(0,common_1.objectIdHexString)(),__v:0,createdAt:new Date}:u.$setOnInsert={_id:(0,common_1.objectIdHexString)(),__v:0},this.createLogs&&!d){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,15];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",g,u,n]))<2e5?JSON.stringify(["upsert",g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,17];case 15:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",g,u,n]))<2e5?JSON.stringify(["upsert",g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 16:e.sent(),e.label=17;case 17:c=monitor_manager_1.MonitorMongo.create("updateOne",this.collectionName,JSON.stringify([g,u,n])),e.label=18;case 18:return e.trys.push([18,20,21,23]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(g,u,v)];case 19:return l=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,l.acknowledged];case 20:throw i=e.sent(),console.log(new Date,"Error Update One",this.collectionName,g,u,n,i),i.message="Error in Update One: ".concat(this.collectionName," - ").concat(i.message),i;case 21:return[4,c.finish()];case 22:return e.sent(),[7];case 23:return[3,25];case 24:throw new Error("Error in Update One: No Document");case 25:return[3,48];case 26:if(v&&v.upsert&&(u.$setOnInsert?(u.$setOnInsert._id||(u.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!u.$setOnInsert.createdAt&&(u.$setOnInsert.createdAt=new Date)):this.timestamps?u.$setOnInsert={_id:(0,common_1.objectIdHexString)(),createdAt:new Date}:u.$setOnInsert={_id:(0,common_1.objectIdHexString)()}),!this.createLogs||d)return[3,42];v?v.returnDocument="before":v={returnDocument:"before"},c=monitor_manager_1.MonitorMongo.create("findOneAndUpdate",this.collectionName,JSON.stringify([g,u,n])),e.label=27;case 27:return e.trys.push([27,38,39,41]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(g,u,v)];case 28:return(l=e.sent(),a=l.value)?"https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,29]:(resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,g,u,n]))<2e5?JSON.stringify([a,g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}),[3,31]):[3,32];case 29:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,g,u,n]))<2e5?JSON.stringify([a,g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 30:e.sent(),e.label=31;case 31:return[2,!!l.ok];case 32:return u.$setOnInsert?"https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,33]:(resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",g,u,n]))<2e5?JSON.stringify(["upsert",g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}),[3,35]):[3,36];case 33:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",g,u,n]))<2e5?JSON.stringify(["upsert",g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})];case 34:e.sent(),e.label=35;case 35:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,!!l.ok];case 36:return[2,!1];case 37:return[3,41];case 38:throw _=e.sent(),console.log(new Date,"Error Update One (Find One And Update)",this.collectionName,g,u,n,_),_.message="Error in Update One (Find One And Update): ".concat(this.collectionName," - ").concat(_.message),_;case 39:return[4,c.finish()];case 40:return e.sent(),[7];case 41:return[3,48];case 42:c=monitor_manager_1.MonitorMongo.create("updateOne",this.collectionName,JSON.stringify([g,u,n])),e.label=43;case 43:return e.trys.push([43,45,46,48]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(g,u,v)];case 44:return l=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,l.acknowledged];case 45:throw _=e.sent(),console.log(new Date,"Error Update One",this.collectionName,g,u,n,_),_.message="Error in Aggregate: ".concat(this.collectionName," - ").concat(_.message),_;case 46:return[4,c.finish()];case 47:return e.sent(),[7];case 48:return[2]}})})},MongoManagerCollection.prototype.watchCollection=function(e,r,o){void 0===e&&(e=[]),void 0===o&&(o=!1);var t=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession();return!t||o||this.bypassSession||(r?r.session=t:r={session:t}),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).watch(e,r)},MongoManagerCollection}()),MongoManagerUserCollection=function(e){function MongoManagerUserCollection(){return null!==e&&e.apply(this,arguments)||this}return __extends(MongoManagerUserCollection,e),MongoManagerUserCollection.create=function(e){var r=new MongoManagerUserCollection;return r.initialize(e),r},MongoManagerUserCollection.prototype.authenticate=function(t,n){return __awaiter(this,void 0,void 0,function(){var r,o;return __generator(this,function(e){switch(e.label){case 0:return(r=Math.pow(100,Math.log(t.attempts+1)),r=r<3e5?r:3e5,t.last)?Date.now()-t.last.getTime()<r?(t.last=new Date,[4,user_collection_1.Users.updateOne({_id:t._id},{$set:{last:t.last}})]):[3,2]:[3,3];case 1:return e.sent(),[2,{data:null,error:"Attempt Too Soon"}];case 2:return[3,4];case 3:t.last=new Date,e.label=4;case 4:if(5<=t.attempts)return[2,{data:null,error:"Too Many Attempts"}];if(!t.salt)return[2,{data:null,error:"No Salt Value Stored"}];e.label=5;case 5:return e.trys.push([5,11,,12]),[4,pbkdf2Promisified(n,t.salt,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"})];case 6:return(r=e.sent(),scmp(r,Buffer.from(t.hash,"hex")))?(t.last=new Date,t.attempts=0,[4,user_collection_1.Users.updateOne({_id:t._id},{$set:{last:t.last,attempts:t.attempts}})]):[3,8];case 7:return e.sent(),[2,{data:t,error:""}];case 8:return t.last=new Date,t.attempts=t.attempts+1,[4,user_collection_1.Users.updateOne({_id:t._id},{$set:{last:t.last,attempts:t.attempts}})];case 9:return e.sent(),5<=t.attempts?[2,{data:null,error:"Too Many Attempts"}]:[2,{data:null,error:"Invalid Username And Password"}];case 10:return[3,12];case 11:throw(o=e.sent()).message="Error in User Authenticate: ".concat(JSON.stringify(t,null,2)," - ").concat(o.message),o;case 12:return[2]}})})},MongoManagerUserCollection.prototype.serializeUser=function(){return function(e,r){r(null,e.username)}},MongoManagerUserCollection.prototype.deserializeUser=function(){var e=this;return function(r){return __awaiter(e,void 0,void 0,function(){return __generator(this,function(e){return[2,user_collection_1.Users.findOne({username:r})]})})}},MongoManagerUserCollection.prototype.setPassword=function(t,n){return __awaiter(this,void 0,void 0,function(){var r,o;return __generator(this,function(e){switch(e.label){case 0:if(t)return[3,1];throw new Error("Error In User Set Password: No User");case 1:if(n)return[3,2];throw new Error("Error In User Set Password: No Password");case 2:return[4,randomBytes(32)];case 3:r=e.sent(),r=r.toString("hex"),e.label=4;case 4:return e.trys.push([4,6,,7]),[4,pbkdf2Promisified(n,r,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"})];case 5:return o=e.sent(),o=Buffer.from(o,"binary").toString("hex"),[2,user_collection_1.Users.updateOne({_id:t._id},{$set:{hash:o,salt:r,services:{},attempts:0}})];case 6:throw(o=e.sent()).message="Error in User Set Password: ".concat(JSON.stringify(t,null,2)," - ").concat(o.message),o;case 7:return[2]}})})},MongoManagerUserCollection.prototype.changePassword=function(o,t,n){return __awaiter(this,void 0,void 0,function(){var r;return __generator(this,function(e){switch(e.label){case 0:if(o)return[3,1];throw new Error("Error in User Change Password: Missing User");case 1:if(t&&n)return[3,2];throw new Error("Error in User Change Password: Missing Password");case 2:return[4,this.authenticate(o,t)];case 3:if((r=e.sent()).data)return[2,this.setPassword(o,n)];throw r.error;case 4:return[2]}})})},MongoManagerUserCollection.prototype.register=function(r,o){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:if(r.username)return[3,1];throw new Error("Error in User Register: Missing Username");case 1:return[4,user_collection_1.Users.findOne({username:r.username})];case 2:if(e.sent())throw new Error("Error in User Register: Username Exists");return[3,3];case 3:return[4,user_collection_1.Users.findOne({email:r.email})];case 4:if(e.sent())throw new Error("Error in User Register: Email Exists");return r.setPassword(o),[2,r];case 5:return[2]}})})},MongoManagerUserCollection.prototype.resetAttempts=function(e){return user_collection_1.Users.updateOne({_id:e._id},{$set:{attempts:0}})},MongoManagerUserCollection}(exports.MongoManagerCollection=MongoManagerCollection);function pbkdf2(e,r,o,t){crypto.pbkdf2(e,r,o.iterations,o.keylen,o.digestAlgorithm,t)}function pbkdf2Promisified(e,r,n){return new Promise(function(o,t){return pbkdf2(e,r,n,function(e,r){return e?t(e):o(r)})})}function randomBytes(e){return new Promise(function(o,t){return crypto.randomBytes(e,function(e,r){return e?t(e):o(r)})})}function objectContainsPropertyDeep(e,r){var o=Object.keys(e);if(o.some(function(e){return e===r}))return!0;for(var t=0;t<o.length;t++){var n=o[t];if(e[n]&&"object"==typeof e[n]&&objectContainsPropertyDeep(e[n],r))return!0}return!1}exports.MongoManagerUserCollection=MongoManagerUserCollection;
|
|
1
|
+
"use strict";var __extends=this&&this.__extends||function(){var t=function(e,r){return(t=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(e,r){e.__proto__=r}:function(e,r){for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}))(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function __(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(__.prototype=r.prototype,new __)}}(),__assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var r,t=1,o=arguments.length;t<o;t++)for(var n in r=arguments[t])Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n]);return e}).apply(this,arguments)},__awaiter=this&&this.__awaiter||function(e,o,n,s){return new(n=n||Promise)(function(t,r){function fulfilled(e){try{step(s.next(e))}catch(e){r(e)}}function rejected(e){try{step(s.throw(e))}catch(e){r(e)}}function step(e){var r;e.done?t(e.value):((r=e.value)instanceof n?r:new n(function(e){e(r)})).then(fulfilled,rejected)}step((s=s.apply(e,o||[])).next())})},__generator=this&&this.__generator||function(o,n){var s,i,a,c={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function verb(t){return function(e){var r=[t,e];if(s)throw new TypeError("Generator is already executing.");for(;c=l&&r[l=0]?0:c;)try{if(s=1,i&&(a=2&r[0]?i.return:r[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,r[1])).done)return a;switch(i=0,(r=a?[2&r[0],a.value]:r)[0]){case 0:case 1:a=r;break;case 4:return c.label++,{value:r[1],done:!1};case 5:c.label++,i=r[1],r=[0];continue;case 7:r=c.ops.pop(),c.trys.pop();continue;default:if(!(a=0<(a=c.trys).length&&a[a.length-1])&&(6===r[0]||2===r[0])){c=0;continue}if(3===r[0]&&(!a||r[1]>a[0]&&r[1]<a[3]))c.label=r[1];else if(6===r[0]&&c.label<a[1])c.label=a[1],a=r;else{if(!(a&&c.label<a[2])){a[2]&&c.ops.pop(),c.trys.pop();continue}c.label=a[2],c.ops.push(r)}}r=n.call(o,c)}catch(e){r=[6,e],i=0}finally{s=a=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}}},__rest=this&&this.__rest||function(e,r){var t={};for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);o<n.length;o++)r.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(t[n[o]]=e[n[o]]);return t},__read=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var o,n,s=t.call(e),i=[];try{for(;(void 0===r||0<r--)&&!(o=s.next()).done;)i.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(t=s.return)&&t.call(s)}finally{if(n)throw n.error}}return i},__spreadArray=this&&this.__spreadArray||function(e,r,t){if(t||2===arguments.length)for(var o,n=0,s=r.length;n<s;n++)!o&&n in r||((o=o||Array.prototype.slice.call(r,0,n))[n]=r[n]);return e.concat(o||Array.prototype.slice.call(r))},__values=this&&this.__values||function(e){var r="function"==typeof Symbol&&Symbol.iterator,t=r&&e[r],o=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return{value:(e=e&&o>=e.length?void 0:e)&&e[o++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")},NodeCache=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.MongoManagerUserCollection=exports.MongoManagerCollection=exports.MongoManagerModel=exports.MongoManager=void 0,require("node-cache")),os_1=require("os"),simpl_schema_1=require("simpl-schema"),user_collection_1=require("../collections/user.collection"),resolveio_server_app_1=require("../resolveio-server-app"),common_1=require("../util/common"),monitor_manager_1=require("./monitor.manager"),crypto=require("crypto"),scmp=require("scmp"),numCPUs=(0,os_1.cpus)().length,v8=require("v8"),AsyncLocalStorage=require("async_hooks").AsyncLocalStorage,asyncLocalStorage=new AsyncLocalStorage,MongoManager=function(){function MongoManager(){this._collections=[],this._cacheMap=[],this._operationInProgress=new Map,this._heapSize=v8.getHeapStatistics()/numCPUs,this._serverCollections=[],this._isWorkersEnabled=!1,this._isWorkerInstance=!1}return MongoManager.create=function(){return __awaiter(this,void 0,void 0,function(){var r;return __generator(this,function(e){switch(e.label){case 0:return[4,(r=new MongoManager).initialize()];case 1:return e.sent(),[2,r]}})})},MongoManager.prototype.initialize=function(){return __awaiter(this,void 0,void 0,function(){var r;return __generator(this,function(e){switch(e.label){case 0:return this._nodeCache=new NodeCache({stdTTL:0,checkperiod:0}),this._isWorkersEnabled="true"===process.env.IS_WORKERS_ENABLED,this._isWorkerInstance="true"===process.env.IS_WORKER_INSTANCE,this.setCacheLimit(),this._isWorkersEnabled&&this._isWorkerInstance&&this.setupChangeStream(),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().listCollections().toArray()];case 1:return r=e.sent(),this._serverCollections=r,[2]}})})},MongoManager.prototype.oneTimeTransaction=function(s){var e=this;return asyncLocalStorage.run({},function(){return __awaiter(e,void 0,void 0,function(){var r,t,o,n=this;return __generator(this,function(e){switch(e.label){case 0:r=resolveio_server_app_1.ResolveIOServer.getMongoConnection().startSession(),asyncLocalStorage.getStore().session=r,e.label=1;case 1:return e.trys.push([1,,3,5]),[4,r.withTransaction(function(){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,s()];case 1:return[2,t=e.sent()]}})})})];case 2:return e.sent(),[2,t];case 3:return[4,r.endSession()];case 4:return e.sent(),(o=asyncLocalStorage.getStore())&&delete o.session,[7];case 5:return[2]}})})})},MongoManager.prototype.getSession=function(){var e=asyncLocalStorage.getStore();return e?e.session:null},MongoManager.prototype.setCacheLimit=function(){this._isWorkersEnabled?this._heapLimit=this._isWorkerInstance?.8*this._heapSize:.4*this._heapSize:this._heapLimit=.3*this._heapSize},MongoManager.prototype.getServerCollections=function(){return this._serverCollections},MongoManager.prototype.registerCollection=function(r){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return r.collectionOptions&&r.collectionOptions.timeseries&&r.collectionOptions.timeseries.timeField&&this._serverCollections.some(function(e){return e.name===r.collectionName&&"collection"===e.type})?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().dropCollection(r.collectionName)]:[3,3];case 1:return e.sent(),[4,this.createCollection(r)];case 2:e.sent(),e.label=3;case 3:return this._collections.push(r),[2]}})})},MongoManager.prototype.createCollection=function(r){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().createCollection(r.collectionName,r.collectionOptions)];case 1:return e.sent(),[2]}})})},MongoManager.prototype.collections=function(){return this._collections},MongoManager.prototype.collection=function(r){return this._collections.find(function(e){return e.collectionName===r})},MongoManager.prototype.delay=function(r){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2,new Promise(function(e){return setTimeout(e,r)})]})})},MongoManager.prototype.find=function(s,i,a){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var r,t,o,n=this;return __generator(this,function(e){switch(e.label){case 0:return((t=a||{}).session,t=__rest(t,["session"]),r=this.generateCacheKey([s],"find",[i,t]),void 0!==(t=this.getFromCache(r)))?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Find - Cache",s),[2,t]):this._operationInProgress.has(r)?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Find - Already running",s),[2,this._operationInProgress.get(r).promise]):(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Find - Running",s),o=this.executeFind(s,i,a,r),this._operationInProgress.set(r,{promise:o,invalidatedDuringExecution:!1,collections:[s]}),[4,o.finally(function(){resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Find - Done",s),n._operationInProgress.delete(r)})]);case 1:return e.sent(),[2,o]}})})},MongoManager.prototype.executeFind=function(s,i,a,c){return __awaiter(this,void 0,void 0,function(){var r,t,o,n;return __generator(this,function(e){switch(e.label){case 0:t=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s),(o=a||{}).session,o=__rest(o,["session"]),o=monitor_manager_1.MonitorMongo.create("find",s,JSON.stringify([i,o])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,t.find(i,a).toArray()];case 2:return r=e.sent(),[3,6];case 3:throw(n=e.sent()).message="Error in Execute Find (".concat(s,"): ").concat(n.message),n;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return this._operationInProgress.get(c).invalidatedDuringExecution||this.addToCache([s],c,r),[2,r]}})})},MongoManager.prototype.findOne=function(s,i,a){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var r,t,o,n=this;return __generator(this,function(e){switch(e.label){case 0:return((t=a||{}).session,t=__rest(t,["session"]),r=this.generateCacheKey([s],"findOne",[i,t]),void 0!==(t=this.getFromCache(r)))?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo FindOne - Cache",s),[2,t]):this._operationInProgress.has(r)?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo FindOne - Already running",s),[2,this._operationInProgress.get(r).promise]):(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo FindOne - Running",s),o=this.executeFindOne(s,i,a,r),this._operationInProgress.set(r,{promise:o,invalidatedDuringExecution:!1,collections:[s]}),[4,o.finally(function(){resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo FindOne - Done",s),n._operationInProgress.delete(r)})]);case 1:return e.sent(),[2,o]}})})},MongoManager.prototype.executeFindOne=function(s,i,a,c){return __awaiter(this,void 0,void 0,function(){var r,t,o,n;return __generator(this,function(e){switch(e.label){case 0:t=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s),(o=a||{}).session,o=__rest(o,["session"]),o=monitor_manager_1.MonitorMongo.create("findOne",s,JSON.stringify([i,o])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,t.findOne(i,a)];case 2:return r=e.sent(),[3,6];case 3:throw(n=e.sent()).message="Error in Execute Find One (".concat(s,"): ").concat(n.message),n;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return this._operationInProgress.get(c).invalidatedDuringExecution||this.addToCache([s],c,r),[2,r]}})})},MongoManager.prototype.aggregate=function(i,a,c){return __awaiter(this,void 0,void 0,function(){var r,t,o,n,s=this;return __generator(this,function(e){switch(e.label){case 0:return(r=__spreadArray([i],__read(a.flatMap(function(e){var r;return null!=(r=e.$lookup)&&r.from?[e.$lookup.from]:[]})),!1),(o=c||{}).session,o=__rest(o,["session"]),t=this.generateCacheKey(r,"aggregate",[a,o]),void 0!==(o=this.getFromCache(t)))?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Agg - Cache",r),[2,o]):this._operationInProgress.has(t)?(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Agg - Already running",r),[2,this._operationInProgress.get(t).promise]):(resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Agg - Running",r),n=this.executeAggregate(i,a,c,t,r),this._operationInProgress.set(t,{promise:n,invalidatedDuringExecution:!1,collections:r}),[4,n.finally(function(){resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Agg - Done",r),s._operationInProgress.delete(t)})]);case 1:return e.sent(),[2,n]}})})},MongoManager.prototype.executeAggregate=function(s,i,a,c,l){return __awaiter(this,void 0,void 0,function(){var r,t,o,n;return __generator(this,function(e){switch(e.label){case 0:t=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s),(o=a||{}).session,o=__rest(o,["session"]),o=monitor_manager_1.MonitorMongo.create("aggregate",s,JSON.stringify([i,o])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,t.aggregate(i,a).toArray()];case 2:return r=e.sent(),[3,6];case 3:throw(n=e.sent()).message="Error in Execute Aggregate (".concat(s,"): ").concat(n.message),n;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return this._operationInProgress.get(c).invalidatedDuringExecution||this.addToCache(l,c,r),[2,r]}})})},MongoManager.prototype.countDocuments=function(s,i,a){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var r,t,o,n=this;return __generator(this,function(e){switch(e.label){case 0:return((t=a||{}).session,t=__rest(t,["session"]),r=this.generateCacheKey([s],"countDocuments",[i,t]),void 0!==(t=this.getFromCache(r)))?[2,t]:this._operationInProgress.has(r)?[2,this._operationInProgress.get(r).promise]:(o=this.executeCountDocuments(s,i,a,r),this._operationInProgress.set(r,{promise:o,invalidatedDuringExecution:!1,collections:[s]}),[4,o.finally(function(){return n._operationInProgress.delete(r)})]);case 1:return e.sent(),[2,o]}})})},MongoManager.prototype.executeCountDocuments=function(s,i,a,c){return __awaiter(this,void 0,void 0,function(){var r,t,o,n;return __generator(this,function(e){switch(e.label){case 0:t=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s),(o=a||{}).session,o=__rest(o,["session"]),o=monitor_manager_1.MonitorMongo.create("countDocuments",s,JSON.stringify([i,o])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,t.countDocuments(i,a)];case 2:return r=e.sent(),[3,6];case 3:throw(n=e.sent()).message="Error in Execute Count Documents (".concat(s,"): ").concat(n.message),n;case 4:return[4,o.finish()];case 5:return e.sent(),[7];case 6:return this._operationInProgress.get(c).invalidatedDuringExecution||this.addToCache([s],c,r),[2,r]}})})},MongoManager.prototype.generateCacheKey=function(e,r,t){e=JSON.stringify({collections:e,functionName:r,args:t});return crypto.createHash("sha256").update(e).digest("hex")},MongoManager.prototype.getFromCache=function(r){try{var e=this._nodeCache.get(r);if(e)return JSON.parse(e,common_1.dateReviver)}catch(e){this._nodeCache.del(r)}},MongoManager.prototype.addToCache=function(e,r,t){var o,n;if((0,common_1.getBinarySize)(JSON.stringify(t))<1e6&&!e.includes("logs")&&!e.find(function(e){return e.endsWith(".versions")})&&!e.find(function(e){return e.startsWith("monitor-")})){var s=this._nodeCache.getStats().vsize;if(s>this._heapLimit){var i=0,a=this._nodeCache.keys();try{for(var c=__values(a),l=c.next();!l.done;l=c.next()){var _=l.value;if(this._nodeCache.del(_),i+=1,(s=this._nodeCache.getStats().vsize)<.75*this._heapLimit)break}}catch(e){o={error:e}}finally{try{l&&!l.done&&(n=c.return)&&n.call(c)}finally{if(o)throw o.error}}console.log("Query Cache: Too Big, - Deleted: "+i+" - "+s)}this._nodeCache.set(r,JSON.stringify(t)),this._cacheMap.push({collections:e,key:r})}},MongoManager.prototype.invalidateQueryCache=function(r){var t,e,o,n,s=this._cacheMap.filter(function(e){return e.collections.includes(r)});resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Invalidate Cache",r);try{for(var i=__values(s),a=i.next();!a.done;a=i.next()){var c=a.value;this._nodeCache.del(c.key),this._operationInProgress.has(c.key)&&(this._operationInProgress.get(c.key).invalidatedDuringExecution=!0,resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager())&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Invalidated During Execution",c.collections)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}try{for(var l=__values(this._operationInProgress.entries()),_=l.next();!_.done;_=l.next()){var g=__read(_.value,2),u=(g[0],g[1]);u.collections.includes(r)&&(u.invalidatedDuringExecution=!0,resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager())&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Invalidated During Execution (No cache)",u.collections)}}catch(e){o={error:e}}finally{try{_&&!_.done&&(n=l.return)&&n.call(l)}finally{if(o)throw o.error}}this._cacheMap=this._cacheMap.filter(function(e){return!e.collections.includes(r)})},MongoManager.prototype.setupChangeStream=function(){var r=this,t=resolveio_server_app_1.ResolveIOServer.getMainDB().watch([{$match:{$and:[{"ns.coll":{$nin:["log-method-latencies","log-subscriptions","logs","counters","cron-job-histories","email-histories","qb-soap-request-histories","qb-soap-request-responses","qb-soap-requests","qb-soap-retries"]}},{"ns.coll":{$not:/.*\.versions$/}},{"ns.coll":{$not:/^monitor-/}}]}}],{fullDocument:"updateLookup"});t.on("change",function(e){e.ns&&e.ns.coll&&(e=e.ns.coll,r.collection(e))&&r.invalidateQueryCache(e)}),t.on("error",function(){return __awaiter(r,void 0,void 0,function(){var r=this;return __generator(this,function(e){switch(e.label){case 0:return console.log(new Date,"Mongo change stream error. Restart..."),[4,t.close()];case 1:return e.sent(),setTimeout(function(){return r.setupChangeStream()},5e3),[2]}})})}),t.on("close",function(){console.log(new Date,"Mongo change stream closed. Restarting..."),setTimeout(function(){return r.setupChangeStream()},5e3)})},MongoManager}(),MongoManagerModel=(exports.MongoManager=MongoManager,function(){function MongoManagerModel(){this.collection_main=null,this.collection_version=null}return MongoManagerModel.create=function(e){var r=new MongoManagerModel;return r.initialize(e),r},MongoManagerModel.prototype.initialize=function(e){var r,t=this;"users"===e.collectionName?this.collection_main=MongoManagerUserCollection.create(e):this.collection_main=MongoManagerCollection.create(e),e.useVersionCollection&&(this.collection_main.useVersions=!0,(r=(0,common_1.deepCopy)(e.schema))._id.type="Object",r._id.blackbox=!0,r={collectionName:e.collectionName+".versions",schema:r,useVersionCollection:!1,useReportBuilder:!1,reportBuilderLookupTables:[],timestamps:!0,createLogs:!1,checkSchema:!1,collectionOptions:null,skipCache:!0},"users"===e.collectionName?this.collection_version=MongoManagerUserCollection.create(r):this.collection_version=MongoManagerCollection.create(r),setImmediate(function(){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,this.collection_version.createIndex({"_id._id":1,"_id.__v":1})];case 1:return e.sent(),[2]}})})}),this.collection_main.versionCollection=e.collectionName+".versions")},MongoManagerModel}()),MongoManagerCollection=(exports.MongoManagerModel=MongoManagerModel,function(){function MongoManagerCollection(){this.collectionName="",this.checkSchema=!1,this.simplschema=null,this.rbSchema=null,this.timestamps=!1,this.useVersions=!1,this.versionCollection="",this.createLogs=!0,this.useRB=!1,this.skipCache=!1,this.bypassSession=!1}return MongoManagerCollection.create=function(e){var r=new MongoManagerCollection;return r.initialize(e),r},MongoManagerCollection.prototype.initialize=function(e){var r,t=this,o=(this.collectionName=e.collectionName,this.simplschema=new simpl_schema_1.default(e.schema),this.timestamps=e.timestamps,this.createLogs=e.createLogs,this.checkSchema=e.checkSchema,this.collectionOptions=e.collectionOptions,this.skipCache=e.skipCache||!1,this.bypassSession=e.bypassSession||!1,e.useReportBuilder&&(this.useRB=!0,r=(0,common_1.deepCopy)(e.schema),e=(0,common_1.buildRbLookups)(e.reportBuilderLookupTables,r,[]),this.rbSchema=(0,common_1.buildRbSchema)(e)),setInterval(function(){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return resolveio_server_app_1.ResolveIOServer&&resolveio_server_app_1.ResolveIOServer.getMainServer()&&resolveio_server_app_1.ResolveIOServer.getMongoManager()&&resolveio_server_app_1.ResolveIOServer.getMongoManager().getServerCollections().length?[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().registerCollection(this)]:[3,2];case 1:e.sent(),clearInterval(o),e.label=2;case 2:return[2]}})})},1))},MongoManagerCollection.prototype.extractIndexNameFromError=function(e){var r=e.match(/Index already exists with a different name: (\S+)/);return(r=!r||r.length<=1?e.match(/existing index:.*name: "([^"]+)"/):r)&&1<r.length?r[1]:null},MongoManagerCollection.prototype.aggregate=function(s,i,a,c){return void 0===a&&(a=!1),void 0===c&&(c=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n;return __generator(this,function(e){switch(e.label){case 0:return!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||c||this.bypassSession||i&&i.readPreference&&"primary"!==i.readPreference||(i?i.session=r:i={session:r}),a||this.skipCache?[3,1]:[2,resolveio_server_app_1.ResolveIOServer.getMongoManager().aggregate(this.collectionName,s,i)];case 1:(r=i||{}).session,t=__rest(r,["session"]),o=monitor_manager_1.MonitorMongo.create("aggregate",this.collectionName,JSON.stringify([s,t])),e.label=2;case 2:return e.trys.push([2,4,5,7]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(s,i).toArray()];case 3:return[2,e.sent()];case 4:throw n=e.sent(),console.log(new Date,"Error Aggregate",this.collectionName,JSON.stringify([s,t,n],null,2)),n.message="Error in Aggregate: ".concat(this.collectionName," - ").concat(n.message),n;case 5:return[4,o.finish()];case 6:return e.sent(),[7];case 7:return[2]}})})},MongoManagerCollection.prototype.aggregateCount=function(n,s,i){return void 0===i&&(i=!1),__awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||i||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),t=monitor_manager_1.MonitorMongo.create("aggregateCount",this.collectionName,JSON.stringify([n,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(n,s).toArray()];case 2:return[2,e.sent().length];case 3:throw o=e.sent(),console.log(new Date,"Error Aggregate Count",this.collectionName,JSON.stringify([n,r,o],null,2)),o.message="Error in Aggregate Count: ".concat(this.collectionName," - ").concat(o.message),o;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.aggregateCursor=function(e,r,t){var o=this,n=(void 0===t&&(t=!1),resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession()),t=(!n||t||this.bypassSession||r&&r.readPreference&&"primary"!==r.readPreference||(r?r.session=n:r={session:n}),r||{}),n=(t.session,__rest(t,["session"])),s=monitor_manager_1.MonitorMongo.create("aggregateCursor",this.collectionName,JSON.stringify([e,n])),t=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,r);return t.on("close",function(r){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,s.finish()];case 1:return e.sent(),[2,r]}})})}),t},MongoManagerCollection.prototype.aggregateStream=function(e,r,t,o){var n=this,s=(void 0===o&&(o=!1),resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession()),o=(!s||o||this.bypassSession||r&&r.readPreference&&"primary"!==r.readPreference||(r?r.session=s:r={session:s}),r||{}),s=(o.session,__rest(o,["session"])),i=monitor_manager_1.MonitorMongo.create("aggregateStream",this.collectionName,JSON.stringify([e,s,t]));return resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,r).stream(t).on("close",function(r){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,i.finish()];case 1:return e.sent(),[2,r]}})})})},MongoManagerCollection.prototype.bulkWrite=function(I,w,N,R,b,D){return void 0===N&&(N=!1),void 0===R&&(R=!1),void 0===b&&(b=!1),void 0===D&&(D=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n,s,i,a,c,l,_,g,u,v,d,p,h,m,f,O,S,M,y;return __generator(this,function(e){switch(e.label){case 0:if(!I.length)return[2,null];r=1e3,t=0,o=null,!(n=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||D||this.bypassSession||w&&w.readPreference&&"primary"!==w.readPreference||(w?w.session=n:w={session:n},o={session:n}),e.label=1;case 1:if(!(t<I.length))return[3,19];s=I.slice(t,t+r),i=[],a=[];try{for(M=void 0,c=__values(s),l=c.next();!l.done;l=c.next()){if(_=l.value,g=Object.keys(_)[0],u=_[g],this.checkSchema&&!N){if(v=this.simplschema.newContext(),d=void 0,"insertOne"===g)d=v.validate(u.document);else if("replaceOne"===g)d=v.validate(u.replacement);else if("updateOne"===g||"updateMany"===g)d=v.validate(u.update,{modifier:!0});else{if("deleteOne"!==g&&"deleteMany"!==g)throw new Error("Unsupported operation type: ".concat(g));d=!0}if(!d)throw new Error("Schema validation failed for ".concat(g,": ").concat(JSON.stringify(v.validationErrors())))}if("insertOne"===g)this.timestamps&&(u.document.createdAt||(u.document.createdAt=new Date),u.document.updatedAt||(u.document.updatedAt=new Date)),!R&&this.createLogs&&i.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.document._id||(0,common_1.objectIdHexString)(),payload:(0,common_1.getBinarySize)(JSON.stringify(u.document))<2e5?JSON.stringify(u.document,null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),_[g].document=u.document;else if("updateOne"===g||"updateMany"===g)this.timestamps&&(u.update.$set||(u.update.$set={}),u.update.$set.updatedAt=new Date),!b&&this.useVersions&&(u.update.$inc||(u.update.$inc={}),u.update.$inc.__v=1),!R&&this.createLogs&&i.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(u.update))<2e5?JSON.stringify(u.update,null,2):"Too Big",method:g,id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!b&&this.useVersions&&a.push({filter:u.filter});else if("replaceOne"===g)this.timestamps&&(u.replacement.updatedAt=new Date),!b&&this.useVersions&&(u.replacement.__v=(u.replacement.__v||0)+1),!R&&this.createLogs&&i.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(u.replacement))<2e5?JSON.stringify(u.replacement,null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!b&&this.useVersions&&a.push({filter:u.filter}),_[g].replacement=u.replacement;else{if("deleteOne"!==g&&"deleteMany"!==g)throw new Error("Unsupported operation type: ".concat(g));!R&&this.createLogs&&i.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(u.filter))<2e5?JSON.stringify(u.filter,null,2):"Too Big",method:g,id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!b&&this.useVersions&&a.push({filter:u.filter})}}}catch(e){M={error:e}}finally{try{l&&!l.done&&(y=c.return)&&y.call(c)}finally{if(M)throw M.error}}return(p=[],!b&&this.useVersions&&0<a.length)?(h=a.map(function(e){return e.filter})).length?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName).find({$or:h},o).toArray()]:[3,3]:[3,5];case 2:p=e.sent(),e.label=3;case 3:return 0<(h=p.map(function(e){return{insertOne:{document:__assign(__assign({},e),{_id:{_id:e._id,__v:e.__v}})}}})).length?(f=null,f=o?{session:n,ordered:!1}:{ordered:!1},[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.versionCollection).bulkWrite(h,f)]):[3,5];case 4:e.sent(),e.label=5;case 5:(m=w||{}).session,m=__rest(m,["session"]),m=monitor_manager_1.MonitorMongo.create("bulkWrite",this.collectionName,JSON.stringify([s,m])),e.label=6;case 6:return e.trys.push([6,8,9,11]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName).bulkWrite(s,w)];case 7:return e.sent(),[3,11];case 8:throw(O=e.sent()).message="Error in Bulk Write: ".concat(this.collectionName," - ").concat(O.message),O;case 9:return[4,m.finish()];case 10:return e.sent(),[7];case 11:if(!R&&this.createLogs&&0<i.length){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,12];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLogs(i.map(function(e){return{type:"log",data:e}}))}return[3,14];case 12:return f=null,f=o?{session:n,ordered:!1}:{ordered:!1},[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").bulkWrite(i,f)];case 13:e.sent(),e.label=14;case 14:return b||!this.useVersions?[3,17]:(O=p.map(function(e){return e._id}),S=[{$match:{"_id._id":{$in:O}}},{$sort:{"_id._id":1,"_id.__v":-1}},{$group:{_id:"$_id._id",versions:{$push:"$_id"}}},{$project:{versionsToDelete:{$slice:["$versions",5,{$size:"$versions"}]}}},{$unwind:"$versionsToDelete"},{$replaceRoot:{newRoot:{_id:"$versionsToDelete"}}}],[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.versionCollection).aggregate(S,o).toArray()]);case 15:return 0<(S=e.sent()).length?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.versionCollection).deleteMany({_id:{$in:S.map(function(e){return e._id})}},o)]:[3,17];case 16:e.sent(),e.label=17;case 17:return t+=r,[4,new Promise(function(e){return setImmediate(e)})];case 18:return e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[3,1];case 19:return[2,{ok:1}]}})})},MongoManagerCollection.prototype.countDocuments=function(n,s,i){return void 0===n&&(n={}),void 0===i&&(i=!1),__awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:return((r=s||{}).session,r=__rest(r,["session"]),0===Object.keys(n).length)?[2,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).estimatedDocumentCount(r)]:[3,1];case 1:return i||this.skipCache?[3,2]:[2,resolveio_server_app_1.ResolveIOServer.getMongoManager().countDocuments(this.collectionName,n,r)];case 2:t=monitor_manager_1.MonitorMongo.create("countDocuments",this.collectionName,JSON.stringify([n,r])),e.label=3;case 3:return e.trys.push([3,5,6,8]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).countDocuments(n,r)];case 4:return[2,e.sent()];case 5:throw o=e.sent(),console.log(new Date,"Error Count Documents",this.collectionName,n,r,o),o.message="Error in Count Documents: ".concat(this.collectionName," - ").concat(o.message),o;case 6:return[4,t.finish()];case 7:return e.sent(),[7];case 8:return[2]}})})},MongoManagerCollection.prototype.create=function(e,r){return Array.isArray(e)?1===e.length?this.insertOne(e[0],r):this.insertMany(e,r):this.insertOne(e,r)},MongoManagerCollection.prototype.createIndex=function(o,n){return __awaiter(this,void 0,void 0,function(){var r,t;return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,(r=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions)).indexes()];case 1:return t=e.sent(),t.some(function(e){return JSON.stringify(e.key)===JSON.stringify(o)})?[2,"Index already exists"]:[2,r.createIndex(o,n)];case 2:return e.sent(),[3,3];case 3:return[2,"Index creation queued"]}})})},MongoManagerCollection.prototype.createIndexes=function(o,n){return __awaiter(this,void 0,void 0,function(){var r,t;return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,(r=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions)).indexes()];case 1:return t=e.sent(),0===o.filter(function(r){return!t.some(function(e){return JSON.stringify(e.key)===JSON.stringify(r.key)})}).length?[2,["All indexes already exist"]]:[2,r.createIndexes(o,n)];case 2:return e.sent(),[3,3];case 3:return[2,["Index creation queued"]]}})})},MongoManagerCollection.prototype.deleteMany=function(_,g,u,v){return void 0===_&&(_={}),void 0===u&&(u=!1),void 0===v&&(v=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n,s,i,a,c,l;return __generator(this,function(e){switch(e.label){case 0:return(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),t=null,!r||v||this.bypassSession||g&&g.readPreference&&"primary"!==g.readPreference||(g?g.session=r:g={session:r},t={session:r}),(o=g||{}).session,o=__rest(o,["session"]),this.createLogs&&!u||this.useVersions)?[4,this.find(_)]:[3,9];case 1:n=e.sent(),s=0,e.label=2;case 2:if(!(s<n.length))return[3,9];if(i=n[s],this.createLogs&&!u){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,_,o]))<2e5?JSON.stringify([i,_,o],null,2):"Too Big",method:"deleteMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,_,o]))<2e5?JSON.stringify([i,_,o],null,2):"Too Big",method:"deleteMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((c=(0,common_1.deepCopy)(i))._id={_id:i._id,__v:i.__v},l=null,l=t?{session:r,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:i._id,__v:i.__v}},c,l)]):[3,8];case 6:return e.sent(),[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":i._id},{"_id.__v":{$lt:i.__v-1}}]},t)];case 7:e.sent(),e.label=8;case 8:return s++,[3,2];case 9:a=monitor_manager_1.MonitorMongo.create("deleteMany",this.collectionName,JSON.stringify([_,o])),e.label=10;case 10:return e.trys.push([10,12,13,15]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteMany(_,g)];case 11:return c=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,c.acknowledged];case 12:throw l=e.sent(),console.log(new Date,"Error Delete Many",this.collectionName,_,o,l),l.message="Error in Delete Many: ".concat(this.collectionName," - ").concat(l.message),l;case 13:return[4,a.finish()];case 14:return e.sent(),[7];case 15:return[2]}})})},MongoManagerCollection.prototype.deleteOne=function(l,_,g,u){return void 0===l&&(l={}),void 0===g&&(g=!1),void 0===u&&(u=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n,s,i,a,c;return __generator(this,function(e){switch(e.label){case 0:if(o=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),r=null,!o||u||this.bypassSession||_&&_.readPreference&&"primary"!==_.readPreference||(_?_.session=o:_={session:o},r={session:o}),t=(o=_||{}).session,o=__rest(o,["session"]),!this.createLogs||g)return[3,15];i=monitor_manager_1.MonitorMongo.create("findOneAndDelete",this.collectionName,JSON.stringify([l,o])),e.label=1;case 1:return e.trys.push([1,11,12,14]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(l,_)];case 2:if(n=e.sent(),!(n=n.value))return[3,9];if(this.createLogs&&!g){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:n._id,payload:(0,common_1.getBinarySize)(JSON.stringify([n,l,o]))<2e5?JSON.stringify([n,l,o],null,2):"Too Big",method:"deleteOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:n._id,payload:(0,common_1.getBinarySize)(JSON.stringify([n,l,o]))<2e5?JSON.stringify([n,l,o],null,2):"Too Big",method:"deleteOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},r)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((s=(0,common_1.deepCopy)(n))._id={_id:n._id,__v:n.__v},a=null,a=r?{session:t,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:n._id,__v:n.__v}},s,a)]):[3,8];case 6:return e.sent(),[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":n._id},{"_id.__v":{$lt:n.__v-1}}]},r)];case 7:e.sent(),e.label=8;case 8:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,!0];case 9:return[2,!0];case 10:return[3,14];case 11:throw s=e.sent(),console.log(new Date,"Error Delete One (Find One And Delete)",this.collectionName,l,o,s),s.message="Error in Delete One (Find One And Delete): ".concat(this.collectionName," - ").concat(s.message),s;case 12:return[4,i.finish()];case 13:return e.sent(),[7];case 14:return[3,21];case 15:i=monitor_manager_1.MonitorMongo.create("deleteOne",this.collectionName,JSON.stringify([l,o])),e.label=16;case 16:return e.trys.push([16,18,19,21]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteOne(l,_)];case 17:return a=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,a.acknowledged];case 18:throw c=e.sent(),console.log(new Date,"Error Delete One",this.collectionName,l,o,c),c.message="Error in Delete One: ".concat(this.collectionName," - ").concat(c.message),c;case 19:return[4,i.finish()];case 20:return e.sent(),[7];case 21:return[2]}})})},MongoManagerCollection.prototype.distinct=function(n,s,i,a){return void 0===a&&(a=!1),__awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||a||this.bypassSession||i&&i.readPreference&&"primary"!==i.readPreference||(i?i.session=r:i={session:r}),(r=i||{}).session,r=__rest(r,["session"]),t=monitor_manager_1.MonitorMongo.create("distinct",this.collectionName,JSON.stringify([n,s,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).distinct(n,s,i)];case 2:return[2,e.sent()];case 3:throw o=e.sent(),console.log(new Date,"Error Distinct",this.collectionName,s,r,o),o.message="Error in Distinct: ".concat(this.collectionName," - ").concat(o.message),o;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.drop=function(n,s){return void 0===s&&(s=!1),__awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||s||this.bypassSession||n&&n.readPreference&&"primary"!==n.readPreference||(n?n.session=r:n={session:r}),(r=n||{}).session,r=__rest(r,["session"]),t=monitor_manager_1.MonitorMongo.create("drop",this.collectionName,JSON.stringify([r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).drop(n)];case 2:return[2,e.sent()];case 3:throw o=e.sent(),console.log(new Date,"Error Count Documents",this.collectionName,r,o),o.message="Error in Count Documents: ".concat(this.collectionName," - ").concat(o.message),o;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.dropIndex=function(n,s,i){return void 0===i&&(i=!1),__awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||i||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),t=monitor_manager_1.MonitorMongo.create("dropIndex",this.collectionName,JSON.stringify([n,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).dropIndex(n,s)];case 2:return[2,e.sent()];case 3:throw o=e.sent(),console.log(new Date,"Error Drop Index",this.collectionName,n,r,o),o.message="Error in Drop Index: ".concat(this.collectionName," - ").concat(n," - ").concat(o.message),o;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.dropIndexes=function(n,s){return void 0===s&&(s=!1),__awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||s||this.bypassSession||n&&n.readPreference&&"primary"!==n.readPreference||(n?n.session=r:n={session:r}),(r=n||{}).session,r=__rest(r,["session"]),t=monitor_manager_1.MonitorMongo.create("dropIndexes",this.collectionName,JSON.stringify([r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).dropIndexes(n)];case 2:return[2,e.sent()];case 3:throw o=e.sent(),console.log(new Date,"Error Drop Indexes",this.collectionName,r,o),o.message="Error in Drop Indexes: ".concat(this.collectionName," - ").concat(o.message),o;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.find=function(n,s,i,a){return void 0===n&&(n={}),void 0===i&&(i=!1),void 0===a&&(a=!1),__awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:return!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||a||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),i||this.skipCache?[3,1]:[2,resolveio_server_app_1.ResolveIOServer.getMongoManager().find(this.collectionName,n,s)];case 1:t=monitor_manager_1.MonitorMongo.create("find",this.collectionName,JSON.stringify([n,r])),e.label=2;case 2:return e.trys.push([2,4,5,7]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(n,s).toArray()];case 3:return[2,e.sent()];case 4:throw o=e.sent(),console.log(new Date,"Error Find",this.collectionName,n,r,o),o.message="Error in Find: ".concat(this.collectionName," - ").concat(JSON.stringify(n,null,2)," - ").concat(o.message),o;case 5:return[4,t.finish()];case 6:return e.sent(),[7];case 7:return[2]}})})},MongoManagerCollection.prototype.findById=function(n,s,i,a){return void 0===i&&(i=!1),void 0===a&&(a=!1),__awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:return!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||a||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),i||this.skipCache?[3,1]:[2,resolveio_server_app_1.ResolveIOServer.getMongoManager().findOne(this.collectionName,{_id:n},s)];case 1:t=monitor_manager_1.MonitorMongo.create("findById",this.collectionName,JSON.stringify([{_id:n},r])),e.label=2;case 2:return e.trys.push([2,4,5,7]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOne({_id:n},s)];case 3:return[2,e.sent()];case 4:throw o=e.sent(),console.log(new Date,"Error Find By Id",this.collectionName,{_id:n},r,o),o.message="Error in Find By ID: ".concat(this.collectionName," - ").concat(n," - ").concat(o.message),o;case 5:return[4,t.finish()];case 6:return e.sent(),[7];case 7:return[2]}})})},MongoManagerCollection.prototype.findCount=function(n,s,i){return void 0===n&&(n={}),void 0===i&&(i=!1),__awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||i||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),t=monitor_manager_1.MonitorMongo.create("findCount",this.collectionName,JSON.stringify([n,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(n,s).count()];case 2:return[2,e.sent()];case 3:throw o=e.sent(),console.log(new Date,"Error Find Count",this.collectionName,n,r,o),o.message="Error in Find Count: ".concat(this.collectionName," - ").concat(JSON.stringify(n,null,2)," - ").concat(o.message),o;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.findCursor=function(e,r,t){var o=this,n=(void 0===e&&(e={}),void 0===t&&(t=!1),resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession()),t=(!n||t||this.bypassSession||r&&r.readPreference&&"primary"!==r.readPreference||(r?r.session=n:r={session:n}),r||{}),n=(t.session,__rest(t,["session"])),s=monitor_manager_1.MonitorMongo.create("findCursor",this.collectionName,JSON.stringify([e,n])),i=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,r);return i.on("close",function(r){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,s.finish()];case 1:return e.sent(),i.removeAllListeners(),[2,r]}})})}),i},MongoManagerCollection.prototype.findStream=function(e,r,t,o){var n=this,s=(void 0===e&&(e={}),void 0===o&&(o=!1),resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession()),o=(!s||o||this.bypassSession||r&&r.readPreference&&"primary"!==r.readPreference||(r?r.session=s:r={session:s}),r||{}),s=(o.session,__rest(o,["session"])),i=monitor_manager_1.MonitorMongo.create("findStream",this.collectionName,JSON.stringify([e,s,t]));return resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,r).stream(t).on("close",function(r){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,i.finish()];case 1:return e.sent(),[2,r]}})})})},MongoManagerCollection.prototype.findOne=function(s,i,a,c){return void 0===s&&(s={}),void 0===a&&(a=!1),void 0===c&&(c=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n;return __generator(this,function(e){switch(e.label){case 0:return!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||c||this.bypassSession||i&&i.readPreference&&"primary"!==i.readPreference||(i?i.session=r:i={session:r}),a||this.skipCache?[3,1]:[2,resolveio_server_app_1.ResolveIOServer.getMongoManager().findOne(this.collectionName,s,i)];case 1:(r=i||{}).session,t=__rest(r,["session"]),o=monitor_manager_1.MonitorMongo.create("findOne",this.collectionName,JSON.stringify([s,t])),e.label=2;case 2:return e.trys.push([2,4,5,7]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOne(s,i)];case 3:return[2,e.sent()];case 4:throw n=e.sent(),console.log(new Date,"Error Find One",this.collectionName,s,t,n),n.message="Error in Find One: ".concat(this.collectionName," - ").concat(JSON.stringify(s,null,2)," - ").concat(n.message),n;case 5:return[4,o.finish()];case 6:return e.sent(),[7];case 7:return[2]}})})},MongoManagerCollection.prototype.findOneAndDelete=function(c,l,_,g){return void 0===c&&(c={}),void 0===_&&(_=!1),void 0===g&&(g=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n,s,i,a;return __generator(this,function(e){switch(e.label){case 0:o=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),r=null,!o||g||this.bypassSession||l&&l.readPreference&&"primary"!==l.readPreference||(l?l.session=o:l={session:o},r={session:o}),t=(o=l||{}).session,o=__rest(o,["session"]),n=monitor_manager_1.MonitorMongo.create("findOneAndDelete",this.collectionName,JSON.stringify([c,o])),e.label=1;case 1:return e.trys.push([1,10,11,13]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(c,l)];case 2:if(s=e.sent(),!(s=s.value))return[3,8];if(this.createLogs&&!_){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:s._id,payload:(0,common_1.getBinarySize)(JSON.stringify([s,c,o]))<2e5?JSON.stringify([s,c,o],null,2):"Too Big",method:"findOneAndDelete",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:s._id,payload:(0,common_1.getBinarySize)(JSON.stringify([s,c,o]))<2e5?JSON.stringify([s,c,o],null,2):"Too Big",method:"findOneAndDelete",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},r)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((a=(0,common_1.deepCopy)(s))._id={_id:s._id,__v:s.__v},i=null,i=r?{session:t,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:s._id,__v:s.__v}},a,i)]):[3,7];case 6:e.sent(),e.label=7;case 7:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,s];case 8:return[2,null];case 9:return[3,13];case 10:throw a=e.sent(),console.log(new Date,"Error Find One And Delete",this.collectionName,c,o,a),a.message="Error in Find One And Delete: ".concat(this.collectionName," - ").concat(JSON.stringify(c,null,2)," - ").concat(a.message),a;case 11:return[4,n.finish()];case 12:return e.sent(),[7];case 13:return[2]}})})},MongoManagerCollection.prototype.findOneAndReplace=function(l,_,g,u,v,d){return void 0===l&&(l={}),void 0===u&&(u=!1),void 0===v&&(v=!1),void 0===d&&(d=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n,s,i,a,c;return __generator(this,function(e){switch(e.label){case 0:if(this.checkSchema&&!v&&(r=this.simplschema.newContext(),!r.validate(_)))throw console.log(new Date,this.collectionName,"Schema Errors - findOneAndReplace",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndReplace - "+this.collectionName,[r.validationErrors(),_]),new Error(r.validationErrors());r=new Date,this.timestamps&&(_.updatedAt=r),g&&g.upsert&&(_._id||(_._id=(0,common_1.objectIdHexString)()),this.useVersions&&(_.__v=0),this.timestamps)&&!_.createdAt&&(_.createdAt=r),n=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),t=null,!n||d||this.bypassSession||g&&g.readPreference&&"primary"!==g.readPreference||(g?g.session=n:g={session:n},t={session:n}),o=(n=g||{}).session,n=__rest(n,["session"]),s=monitor_manager_1.MonitorMongo.create("findOneAndReplace",this.collectionName,JSON.stringify([l,_,n])),e.label=1;case 1:return e.trys.push([1,10,11,13]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(l,_,g)];case 2:if(i=e.sent(),!(i=i.value))return[3,8];if(this.createLogs&&!u){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,l,_,n]))<2e5?JSON.stringify([i,l,_,n],null,2):"Too Big",method:"findOneAndReplace",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,l,_,n]))<2e5?JSON.stringify([i,l,_,n],null,2):"Too Big",method:"findOneAndReplace",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((c=(0,common_1.deepCopy)(i))._id={_id:i._id,__v:i.__v},a=null,a=t?{session:o,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:i._id,__v:i.__v}},c,a)]):[3,7];case 6:e.sent(),e.label=7;case 7:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,i];case 8:return[2,null];case 9:return[3,13];case 10:throw c=e.sent(),console.log(new Date,"Error Find One And Replace",this.collectionName,l,n,c),c.message="Error in Find One And Replace: ".concat(this.collectionName," - ").concat(JSON.stringify(l,null,2)," - ").concat(c.message),c;case 11:return[4,s.finish()];case 12:return e.sent(),[7];case 13:return[2]}})})},MongoManagerCollection.prototype.findOneAndUpdate=function(l,_,g,u,v,d){return void 0===l&&(l={}),void 0===u&&(u=!1),void 0===v&&(v=!1),void 0===d&&(d=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n,s,i,a,c;return __generator(this,function(e){switch(e.label){case 0:if(this.checkSchema&&!v&&(r=this.simplschema.newContext(),!r.validate(_,{modifier:!0})))throw console.log(new Date,this.collectionName,"Schema Errors - findOneAndUpdate",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndUpdate - "+this.collectionName,[r.validationErrors(),_]),new Error(r.validationErrors());this.timestamps&&(r=new Date,_.$set?_.$set.updatedAt=r:_.$set={updatedAt:r}),g&&g.upsert&&(_.$setOnInsert?(_.$setOnInsert._id||(_.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!_.$setOnInsert.createdAt&&(_.$setOnInsert.createdAt=new Date)):this.timestamps?_.$setOnInsert={_id:(0,common_1.objectIdHexString)(),createdAt:new Date}:_.$setOnInsert={_id:(0,common_1.objectIdHexString)()}),n=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),t=null,!n||d||this.bypassSession||g&&g.readPreference&&"primary"!==g.readPreference||(g?g.session=n:g={session:n},t={session:n}),o=(n=g||{}).session,n=__rest(n,["session"]),s=monitor_manager_1.MonitorMongo.create("findOneAndUpdate",this.collectionName,JSON.stringify([l,_,n])),e.label=1;case 1:return e.trys.push([1,10,11,13]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(l,_,g)];case 2:if(i=e.sent(),!(i=i.value))return[3,8];if(this.createLogs&&!u){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,l,_,n]))<2e5?JSON.stringify([i,l,_,n],null,2):"Too Big",method:"findOneAndUpdate",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,l,_,n]))<2e5?JSON.stringify([i,l,_,n],null,2):"Too Big",method:"findOneAndUpdate",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((c=(0,common_1.deepCopy)(i))._id={_id:i._id,__v:i.__v},a=null,a=t?{session:o,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:i._id,__v:i.__v}},c,a)]):[3,7];case 6:e.sent(),e.label=7;case 7:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,i];case 8:return[2,null];case 9:return[3,13];case 10:throw c=e.sent(),console.log(new Date,"Error Find One And Update",this.collectionName,l,n,c),c.message="Error in Find One And Update: ".concat(this.collectionName," - ").concat(JSON.stringify(l,null,2)," - ").concat(c.message),c;case 11:return[4,s.finish()];case 12:return e.sent(),[7];case 13:return[2]}})})},MongoManagerCollection.prototype.indexes=function(n){return __awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:(r=n||{}).session,r=__rest(r,["session"]),t=monitor_manager_1.MonitorMongo.create("indexes",this.collectionName,JSON.stringify([r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).indexes(n)];case 2:return[2,e.sent()];case 3:throw o=e.sent(),console.log(new Date,"Error Indexes",this.collectionName,r,o),o.message="Error in Indexes: ".concat(this.collectionName," - ").concat(o.message),o;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.indexExists=function(n,s){return __awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:(r=s||{}).session,r=__rest(r,["session"]),t=monitor_manager_1.MonitorMongo.create("indexExists",this.collectionName,JSON.stringify([n,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).indexExists(n,s)];case 2:return[2,e.sent()];case 3:throw o=e.sent(),console.log(new Date,"Error Index Exists",this.collectionName,n,r,o),o.message="Error in Index Exists: ".concat(this.collectionName," - ").concat(JSON.stringify(n,null,2)," - ").concat(o.message),o;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.insertMany=function(_,g,u,v,d,p){return void 0===u&&(u=!1),void 0===v&&(v=!1),void 0===d&&(d=!1),void 0===p&&(p=!1),__awaiter(this,void 0,void 0,function(){var t,r,o,n,s,i,a,c,l=this;return __generator(this,function(e){switch(e.label){case 0:if(!_.length)return[2,[]];t=[],this.checkSchema&&!v&&_.forEach(function(e){var r=l.simplschema.newContext();r.validate(e)?t.push(!0):(console.log(new Date,l.collectionName,"Schema Errors - insertMany",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertMany - "+l.collectionName,[r.validationErrors(),e]),t.push(!1))}),r=this.checkSchema?_.filter(function(e,r){return t[r]}):_,n=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),o=null,!n||p||this.bypassSession||g&&g.readPreference&&"primary"!==g.readPreference||(g?g.session=n:g={session:n},o={session:n}),(n=g||{}).session,n=__rest(n,["session"]),s=0,e.label=1;case 1:if(!(s<r.length))return[3,5];if((i=r[s])._id||(i._id=(0,common_1.objectIdHexString)()),this.timestamps&&(c=new Date,i.createdAt||(i.createdAt=c),i.updatedAt||(i.updatedAt=c)),this.useVersions&&!i.hasOwnProperty("__v")&&(i.__v=0),this.createLogs&&!u){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,2];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,n]))<2e5?JSON.stringify([i,n],null,2):"Too Big",method:"insertMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,4];case 2:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,n]))<2e5?JSON.stringify([i,n],null,2):"Too Big",method:"insertMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 3:e.sent(),e.label=4;case 4:return s++,[3,1];case 5:if(!r.length)return[3,10];a=null,d||(a=monitor_manager_1.MonitorMongo.create("insertMany",this.collectionName,JSON.stringify([r,n]))),e.label=6;case 6:return e.trys.push([6,8,9,10]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertMany(r,g)];case 7:return e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,r];case 8:throw c=e.sent(),console.log(new Date,"Error Insert Many",this.collectionName,r,n,c),c.message="Error in Insert Many: ".concat(this.collectionName," - ").concat(c.message),c;case 9:return a&&a.finish(),[7];case 10:return[2,[]]}})})},MongoManagerCollection.prototype.insertOne=function(a,c,l,_,g){return void 0===l&&(l=!1),void 0===_&&(_=!1),void 0===g&&(g=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n,s,i;return __generator(this,function(e){switch(e.label){case 0:if(a._id||(a._id=(0,common_1.objectIdHexString)()),this.checkSchema&&!_&&(r=this.simplschema.newContext(),!r.validate(a)))throw console.log(new Date,this.collectionName,"Schema Errors - insertOne",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertOne - "+this.collectionName,[r.validationErrors(),a]),new Error(r.validationErrors());if(this.timestamps&&(t=new Date,a.createdAt||(a.createdAt=t),a.updatedAt||(a.updatedAt=t)),t=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),o=null,!t||g||this.bypassSession||c&&c.readPreference&&"primary"!==c.readPreference||(c?c.session=t:c={session:t},o={session:t}),(n=c||{}).session,n=__rest(n,["session"]),this.createLogs&&!l){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,1];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,n]))<2e5?JSON.stringify([a,n],null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,3];case 1:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,n]))<2e5?JSON.stringify([a,n],null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 2:e.sent(),e.label=3;case 3:this.useVersions&&!a.hasOwnProperty("__v")&&(a.__v=0),s=monitor_manager_1.MonitorMongo.create("insertOne",this.collectionName,JSON.stringify([a,n])),e.label=4;case 4:return e.trys.push([4,6,7,9]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertOne(a,c)];case 5:return e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,a];case 6:throw i=e.sent(),console.log(new Date,"Error Insert One",this.collectionName,a,n,i),i.message="Error in Insert One: ".concat(this.collectionName," - ").concat(i.message),i;case 7:return[4,s.finish()];case 8:return e.sent(),[7];case 9:return[2]}})})},MongoManagerCollection.prototype.listIndexes=function(e,r){var t=this,o=(void 0===r&&(r=!1),resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession()),r=(!o||r||this.bypassSession||e&&e.readPreference&&"primary"!==e.readPreference||(e?e.session=o:e={session:o}),e||{}),o=(r.session,__rest(r,["session"])),n=monitor_manager_1.MonitorMongo.create("listIndexes",this.collectionName,JSON.stringify([o])),r=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).listIndexes(e);return r.on("close",function(r){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,n.finish()];case 1:return e.sent(),[2,r]}})})}),r},MongoManagerCollection.prototype.rename=function(n,s,i){return void 0===i&&(i=!1),__awaiter(this,void 0,void 0,function(){var r,t,o;return __generator(this,function(e){switch(e.label){case 0:!(r=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession())||i||this.bypassSession||s&&s.readPreference&&"primary"!==s.readPreference||(s?s.session=r:s={session:r}),(r=s||{}).session,r=__rest(r,["session"]),t=monitor_manager_1.MonitorMongo.create("rename",this.collectionName,JSON.stringify([n,r])),e.label=1;case 1:return e.trys.push([1,3,4,6]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).rename(n,s)];case 2:return[2,e.sent()];case 3:throw o=e.sent(),console.log(new Date,"Error Rename",this.collectionName,n,r,o),o.message="Error in Rename: ".concat(this.collectionName," - ").concat(n," - ").concat(o.message),o;case 4:return[4,t.finish()];case 5:return e.sent(),[7];case 6:return[2]}})})},MongoManagerCollection.prototype.replaceOne=function(m,f,O,S,M,y,I){return void 0===S&&(S=!1),void 0===M&&(M=!1),void 0===y&&(y=null),void 0===I&&(I=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n,s,i,a,c,l,_,g,u,v,d,p,h;return __generator(this,function(e){switch(e.label){case 0:if(!this.checkSchema||M||(r=this.simplschema.newContext(),r.validate(f)))return t=new Date,this.timestamps&&(f.updatedAt=t),s=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),o=null,!s||I||this.bypassSession||O&&O.readPreference&&"primary"!==O.readPreference||(O?O.session=s:O={session:s},o={session:s}),n=(s=O||{}).session,s=__rest(s,["session"]),this.useVersions?y?[3,2]:[4,this.findOne(m,null,!0)]:[3,40];throw console.log(new Date,this.collectionName,"Schema Errors - replaceOne",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on replaceOne - "+this.collectionName,[r.validationErrors(),f]),new Error(r.validationErrors());case 1:y=e.sent(),e.label=2;case 2:return y?(this.timestamps&&!f.createdAt&&y.createdAt&&(f.createdAt=y.createdAt),y.__v!==f.__v?[3,15]:(f.__v+=1,(i=(0,common_1.deepCopy)(y))._id={_id:y._id,__v:y.__v},a=null,a=o?{session:n,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:y._id,__v:y.__v}},i,a)])):[3,28];case 3:return(e.sent(),4<=y.__v)?[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":y._id},{"_id.__v":{$lt:y.__v-4}}]},o)]:[3,5];case 4:e.sent(),e.label=5;case 5:if(this.createLogs&&!S){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,6];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:y._id,payload:(0,common_1.getBinarySize)(JSON.stringify([y,m,f,s]))<2e5?JSON.stringify([y,m,f,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,8];case 6:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:y._id,payload:(0,common_1.getBinarySize)(JSON.stringify([y,m,f,s]))<2e5?JSON.stringify([y,m,f,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 7:e.sent(),e.label=8;case 8:d=monitor_manager_1.MonitorMongo.create("replaceOne",this.collectionName,JSON.stringify([m,f,s])),e.label=9;case 9:return e.trys.push([9,11,12,14]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(m,f,O)];case 10:return p=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,p.acknowledged];case 11:throw i=e.sent(),console.log(new Date,"Error Replace One",this.collectionName,m,f,s,i),i.message="Error in Replace One: ".concat(this.collectionName," - ").concat(i.message),i;case 12:return[4,d.finish()];case 13:return e.sent(),[7];case 14:return[3,27];case 15:return console.log("invalid version - "+this.collectionName,y.__v,f.__v),[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).findOne({_id:{_id:y._id,__v:f.__v}},null,!0)];case 16:if(!(a=e.sent()))return[3,26];if(c=y._id,_=y.__v,(l=(0,common_1.getMongoMergeUpdatedDoc)(f,y,a))._id=c,l.__v=_+1,this.createLogs&&!S){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,17];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:c,payload:(0,common_1.getBinarySize)(JSON.stringify(["invalidVersion - merge",y,m,l,s]))<2e5?JSON.stringify(["invalidVersion - merge",y,m,l,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,19];case 17:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:c,payload:(0,common_1.getBinarySize)(JSON.stringify(["invalidVersion - merge",y,m,l,s]))<2e5?JSON.stringify(["invalidVersion - merge",y,m,l,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 18:e.sent(),e.label=19;case 19:d=monitor_manager_1.MonitorMongo.create("replaceOne",this.collectionName,JSON.stringify([m,l,s])),e.label=20;case 20:return e.trys.push([20,22,23,25]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(m,l,O)];case 21:return p=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,p.acknowledged];case 22:throw _=e.sent(),console.log(new Date,"Error Replace One",this.collectionName,m,l,s,_),_.message="Error in Replace One: ".concat(this.collectionName," - ").concat(_.message),_;case 23:return[4,d.finish()];case 24:return e.sent(),[7];case 25:return[3,27];case 26:throw new Error("Error in Replcae One: Invalid Version And Could Not Find History - DB: "+y.__v+", Trying to update with :"+f.__v);case 27:return[3,39];case 28:if(!O||!O.upsert)return[3,38];if(this.timestamps&&(f.createdAt=t),f._id||(f._id=(0,common_1.objectIdHexString)()),f.__v=0,this.createLogs&&!S){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,29];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",m,f,s]))<2e5?JSON.stringify(["upsert",m,f,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,31];case 29:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",m,f,s]))<2e5?JSON.stringify(["upsert",m,f,s],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 30:e.sent(),e.label=31;case 31:d=monitor_manager_1.MonitorMongo.create("replaceOne",this.collectionName,JSON.stringify([m,f,s])),e.label=32;case 32:return e.trys.push([32,34,35,37]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(m,f,O)];case 33:return p=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,p.acknowledged];case 34:throw g=e.sent(),console.log(new Date,"Error Replace One",this.collectionName,m,f,s,g),g.message="Error in Replace One: ".concat(this.collectionName," - ").concat(g.message),g;case 35:return[4,d.finish()];case 36:return e.sent(),[7];case 37:return[3,39];case 38:throw new Error("Error in Replace One: No Document");case 39:return[3,60];case 40:if(O&&O.upsert&&(this.timestamps&&!f.createdAt&&(f.createdAt=t),f._id||(f._id=(0,common_1.objectIdHexString)()),f.__v=0),!this.createLogs||S)return[3,54];O?O.returnDocument="before":O={returnDocument:"before"},(g=O||{}).session,u=__rest(g,["session"]),d=monitor_manager_1.MonitorMongo.create("findOneAndReplace",this.collectionName,JSON.stringify([m,f,u])),e.label=41;case 41:return e.trys.push([41,50,51,53]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(m,f,O)];case 42:return(p=e.sent(),v=p.value)?"https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,43]:(resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:v._id,payload:(0,common_1.getBinarySize)(JSON.stringify([v,m,f,u]))<2e5?JSON.stringify([v,m,f,u],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}),[3,45]):[3,46];case 43:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:v._id,payload:(0,common_1.getBinarySize)(JSON.stringify([v,m,f,u]))<2e5?JSON.stringify([v,m,f,u],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 44:e.sent(),e.label=45;case 45:return[3,49];case 46:return"https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,47]:(resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",m,f,u]))<2e5?JSON.stringify(["upsert",m,f,u],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}),[3,49]);case 47:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",m,f,u]))<2e5?JSON.stringify(["upsert",m,f,u],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 48:e.sent(),e.label=49;case 49:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,1];case 50:throw h=e.sent(),console.log(new Date,"Error Replace One (Find One And Replace)",this.collectionName,m,f,u,h),h.message="Error in Replace One (Find One And Replace): ".concat(this.collectionName," - ").concat(h.message),h;case 51:return[4,d.finish()];case 52:return e.sent(),[7];case 53:return[3,60];case 54:d=monitor_manager_1.MonitorMongo.create("replaceOne",this.collectionName,JSON.stringify([m,f,s])),e.label=55;case 55:return e.trys.push([55,57,58,60]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(m,f,O)];case 56:return p=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,p.acknowledged];case 57:throw h=e.sent(),console.log(new Date,"Error Replace One",this.collectionName,m,f,s,h),h.message="Error in Aggregate: ".concat(this.collectionName," - ").concat(h.message),h;case 58:return[4,d.finish()];case 59:return e.sent(),[7];case 60:return[2]}})})},MongoManagerCollection.prototype.updateMany=function(u,v,d,p,h,m,f){return void 0===p&&(p=!1),void 0===h&&(h=!1),void 0===m&&(m=!1),void 0===f&&(f=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n,s,i,a,c,l,_,g;return __generator(this,function(e){switch(e.label){case 0:if(!(v.$inc&&"{}"!==JSON.stringify(v.$inc)||v.$set&&"{}"!==JSON.stringify(v.$set)||v.$setOnInsert&&"{}"!==JSON.stringify(v.$setOnInsert)||v.$unset&&"{}"!==JSON.stringify(v.$unset)))return[2,1];if(this.timestamps&&(t=new Date,v.$set?v.$set.updatedAt=t:v.$set={updatedAt:t}),!this.checkSchema||h||(r=this.simplschema.newContext(),r.validate(v,{modifier:!0})))return t=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),o=null,!t||f||this.bypassSession||d&&d.readPreference&&"primary"!==d.readPreference||(d?d.session=t:d={session:t},o={session:t}),n=(s=d||{}).session,s=__rest(s,["session"]),this.useVersions&&!m||this.createLogs&&!p?[4,this.find(u)]:[3,10];throw console.log(new Date,this.collectionName,"Schema Errors - updateMany",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateMany - "+this.collectionName,[r.validationErrors(),v]),new Error(r.validationErrors());case 1:i=e.sent(),a=0,e.label=2;case 2:if(!(a<i.length))return[3,10];if(c=i[a],this.createLogs&&!p){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,3];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:c._id,payload:(0,common_1.getBinarySize)(JSON.stringify([c,u,v,s]))<2e5?JSON.stringify([c,u,v,s],null,2):"Too Big",method:"updateMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,5];case 3:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:c._id,payload:(0,common_1.getBinarySize)(JSON.stringify([c,u,v,s]))<2e5?JSON.stringify([c,u,v,s],null,2):"Too Big",method:"updateMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},o)];case 4:e.sent(),e.label=5;case 5:return this.useVersions?((_=(0,common_1.deepCopy)(c))._id={_id:c._id,__v:c.__v},g=null,g=o?{session:n,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:c._id,__v:c.__v}},_,g)]):[3,9];case 6:return(e.sent(),4<=c.__v)?[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":c._id},{"_id.__v":{$lt:c.__v-4}}]},o)]:[3,8];case 7:e.sent(),e.label=8;case 8:objectContainsPropertyDeep(v,"__v")||(v.$inc?v.$inc.__v||(v.$inc.__v=1):v.$inc={__v:1}),e.label=9;case 9:return a++,[3,2];case 10:l=monitor_manager_1.MonitorMongo.create("updateMany",this.collectionName,JSON.stringify([u,v,s])),e.label=11;case 11:return e.trys.push([11,13,14,16]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateMany(u,v,d)];case 12:return _=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,_.acknowledged];case 13:throw g=e.sent(),console.log(new Date,"Error Update Many",this.collectionName,u,v,s,g),g.message="Error in Update Many: ".concat(this.collectionName," - ").concat(g.message),g;case 14:return[4,l.finish()];case 15:return e.sent(),[7];case 16:return[2]}})})},MongoManagerCollection.prototype.updateOne=function(g,u,v,d,p,h){return void 0===d&&(d=!1),void 0===p&&(p=!1),void 0===h&&(h=!1),__awaiter(this,void 0,void 0,function(){var r,t,o,n,s,i,a,c,l,_;return __generator(this,function(e){switch(e.label){case 0:if(!this.checkSchema||p||(r=this.simplschema.newContext(),r.validate(u,{modifier:!0})))return u.$inc&&"{}"!==JSON.stringify(u.$inc)||u.$set&&"{}"!==JSON.stringify(u.$set)||u.$setOnInsert&&"{}"!==JSON.stringify(u.$setOnInsert)||u.$unset&&"{}"!==JSON.stringify(u.$unset)?(n=new Date,this.timestamps&&(u.$set?u.$set.updatedAt=n:u.$set={updatedAt:n}),n=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession(),t=null,!n||h||this.bypassSession||v&&v.readPreference&&"primary"!==v.readPreference||(v?v.session=n:v={session:n},t={session:n}),o=(n=v||{}).session,n=__rest(n,["session"]),this.useVersions?[4,this.findOne(g,null,!0)]:[3,26]):[2,!0];throw console.log(new Date,this.collectionName,"Schema Errors - updateOne",r.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateOne - "+this.collectionName,[r.validationErrors(),u]),new Error(r.validationErrors());case 1:if(!(a=e.sent()))return[3,14];if(this.createLogs&&!d){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,2];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,g,u,n]))<2e5?JSON.stringify([a,g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,4];case 2:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,g,u,n]))<2e5?JSON.stringify([a,g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 3:e.sent(),e.label=4;case 4:return(s=(0,common_1.deepCopy)(a))._id={_id:a._id,__v:a.__v},i=null,i=t?{session:o,upsert:!0}:{upsert:!0},[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:a._id,__v:a.__v}},s,i)];case 5:return(e.sent(),4<=a.__v)?[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":a._id},{"_id.__v":{$lt:a.__v-4}}]},t)]:[3,7];case 6:e.sent(),e.label=7;case 7:objectContainsPropertyDeep(u,"__v")||(u.$inc?u.$inc.__v||(u.$inc.__v=1):u.$inc={__v:1}),c=monitor_manager_1.MonitorMongo.create("updateOne",this.collectionName,JSON.stringify([g,u,n])),e.label=8;case 8:return e.trys.push([8,10,11,13]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(g,u,v)];case 9:return l=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,l.acknowledged];case 10:throw s=e.sent(),console.log(new Date,"Error Update One",this.collectionName,g,u,n,s),s.message="Error in Update One: ".concat(this.collectionName," - ").concat(s.message),s;case 11:return[4,c.finish()];case 12:return e.sent(),[7];case 13:return[3,25];case 14:if(!v||!v.upsert)return[3,24];if(u.$setOnInsert?(u.$setOnInsert._id||(u.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!u.$setOnInsert.createdAt&&(u.$setOnInsert.createdAt=new Date)):this.timestamps?u.$setOnInsert={_id:(0,common_1.objectIdHexString)(),__v:0,createdAt:new Date}:u.$setOnInsert={_id:(0,common_1.objectIdHexString)(),__v:0},this.createLogs&&!d){if("https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL)return[3,15];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",g,u,n]))<2e5?JSON.stringify(["upsert",g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}})}return[3,17];case 15:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",g,u,n]))<2e5?JSON.stringify(["upsert",g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 16:e.sent(),e.label=17;case 17:c=monitor_manager_1.MonitorMongo.create("updateOne",this.collectionName,JSON.stringify([g,u,n])),e.label=18;case 18:return e.trys.push([18,20,21,23]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(g,u,v)];case 19:return l=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,l.acknowledged];case 20:throw i=e.sent(),console.log(new Date,"Error Update One",this.collectionName,g,u,n,i),i.message="Error in Update One: ".concat(this.collectionName," - ").concat(i.message),i;case 21:return[4,c.finish()];case 22:return e.sent(),[7];case 23:return[3,25];case 24:throw new Error("Error in Update One: No Document");case 25:return[3,48];case 26:if(v&&v.upsert&&(u.$setOnInsert?(u.$setOnInsert._id||(u.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!u.$setOnInsert.createdAt&&(u.$setOnInsert.createdAt=new Date)):this.timestamps?u.$setOnInsert={_id:(0,common_1.objectIdHexString)(),createdAt:new Date}:u.$setOnInsert={_id:(0,common_1.objectIdHexString)()}),!this.createLogs||d)return[3,42];v?v.returnDocument="before":v={returnDocument:"before"},c=monitor_manager_1.MonitorMongo.create("findOneAndUpdate",this.collectionName,JSON.stringify([g,u,n])),e.label=27;case 27:return e.trys.push([27,38,39,41]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(g,u,v)];case 28:return(l=e.sent(),a=l.value)?"https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,29]:(resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,g,u,n]))<2e5?JSON.stringify([a,g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}),[3,31]):[3,32];case 29:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([a,g,u,n]))<2e5?JSON.stringify([a,g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date},t)];case 30:e.sent(),e.label=31;case 31:return[2,!!l.ok];case 32:return u.$setOnInsert?"https://resolveio.com"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL||"http://localhost:4200"===resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?[3,33]:(resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",g,u,n]))<2e5?JSON.stringify(["upsert",g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}),[3,35]):[3,36];case 33:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",g,u,n]))<2e5?JSON.stringify(["upsert",g,u,n],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})];case 34:e.sent(),e.label=35;case 35:return this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,!!l.ok];case 36:return[2,!1];case 37:return[3,41];case 38:throw _=e.sent(),console.log(new Date,"Error Update One (Find One And Update)",this.collectionName,g,u,n,_),_.message="Error in Update One (Find One And Update): ".concat(this.collectionName," - ").concat(_.message),_;case 39:return[4,c.finish()];case 40:return e.sent(),[7];case 41:return[3,48];case 42:c=monitor_manager_1.MonitorMongo.create("updateOne",this.collectionName,JSON.stringify([g,u,n])),e.label=43;case 43:return e.trys.push([43,45,46,48]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(g,u,v)];case 44:return l=e.sent(),this.skipCache||resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[2,l.acknowledged];case 45:throw _=e.sent(),console.log(new Date,"Error Update One",this.collectionName,g,u,n,_),_.message="Error in Aggregate: ".concat(this.collectionName," - ").concat(_.message),_;case 46:return[4,c.finish()];case 47:return e.sent(),[7];case 48:return[2]}})})},MongoManagerCollection.prototype.watchCollection=function(e,r,t){void 0===e&&(e=[]),void 0===t&&(t=!1);var o=resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession();return!o||t||this.bypassSession||(r?r.session=o:r={session:o}),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).watch(e,r)},MongoManagerCollection}()),MongoManagerUserCollection=function(e){function MongoManagerUserCollection(){return null!==e&&e.apply(this,arguments)||this}return __extends(MongoManagerUserCollection,e),MongoManagerUserCollection.create=function(e){var r=new MongoManagerUserCollection;return r.initialize(e),r},MongoManagerUserCollection.prototype.authenticate=function(o,n){return __awaiter(this,void 0,void 0,function(){var r,t;return __generator(this,function(e){switch(e.label){case 0:return(r=Math.pow(100,Math.log(o.attempts+1)),r=r<3e5?r:3e5,o.last)?Date.now()-o.last.getTime()<r?(o.last=new Date,[4,user_collection_1.Users.updateOne({_id:o._id},{$set:{last:o.last}})]):[3,2]:[3,3];case 1:return e.sent(),[2,{data:null,error:"Attempt Too Soon"}];case 2:return[3,4];case 3:o.last=new Date,e.label=4;case 4:if(5<=o.attempts)return[2,{data:null,error:"Too Many Attempts"}];if(!o.salt)return[2,{data:null,error:"No Salt Value Stored"}];e.label=5;case 5:return e.trys.push([5,11,,12]),[4,pbkdf2Promisified(n,o.salt,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"})];case 6:return(r=e.sent(),scmp(r,Buffer.from(o.hash,"hex")))?(o.last=new Date,o.attempts=0,[4,user_collection_1.Users.updateOne({_id:o._id},{$set:{last:o.last,attempts:o.attempts}})]):[3,8];case 7:return e.sent(),[2,{data:o,error:""}];case 8:return o.last=new Date,o.attempts=o.attempts+1,[4,user_collection_1.Users.updateOne({_id:o._id},{$set:{last:o.last,attempts:o.attempts}})];case 9:return e.sent(),5<=o.attempts?[2,{data:null,error:"Too Many Attempts"}]:[2,{data:null,error:"Invalid Username And Password"}];case 10:return[3,12];case 11:throw(t=e.sent()).message="Error in User Authenticate: ".concat(JSON.stringify(o,null,2)," - ").concat(t.message),t;case 12:return[2]}})})},MongoManagerUserCollection.prototype.serializeUser=function(){return function(e,r){r(null,e.username)}},MongoManagerUserCollection.prototype.deserializeUser=function(){var e=this;return function(r){return __awaiter(e,void 0,void 0,function(){return __generator(this,function(e){return[2,user_collection_1.Users.findOne({username:r})]})})}},MongoManagerUserCollection.prototype.setPassword=function(o,n){return __awaiter(this,void 0,void 0,function(){var r,t;return __generator(this,function(e){switch(e.label){case 0:if(o)return[3,1];throw new Error("Error In User Set Password: No User");case 1:if(n)return[3,2];throw new Error("Error In User Set Password: No Password");case 2:return[4,randomBytes(32)];case 3:r=e.sent(),r=r.toString("hex"),e.label=4;case 4:return e.trys.push([4,6,,7]),[4,pbkdf2Promisified(n,r,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"})];case 5:return t=e.sent(),t=Buffer.from(t,"binary").toString("hex"),[2,user_collection_1.Users.updateOne({_id:o._id},{$set:{hash:t,salt:r,services:{},attempts:0}})];case 6:throw(t=e.sent()).message="Error in User Set Password: ".concat(JSON.stringify(o,null,2)," - ").concat(t.message),t;case 7:return[2]}})})},MongoManagerUserCollection.prototype.changePassword=function(t,o,n){return __awaiter(this,void 0,void 0,function(){var r;return __generator(this,function(e){switch(e.label){case 0:if(t)return[3,1];throw new Error("Error in User Change Password: Missing User");case 1:if(o&&n)return[3,2];throw new Error("Error in User Change Password: Missing Password");case 2:return[4,this.authenticate(t,o)];case 3:if((r=e.sent()).data)return[2,this.setPassword(t,n)];throw r.error;case 4:return[2]}})})},MongoManagerUserCollection.prototype.register=function(r,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:if(r.username)return[3,1];throw new Error("Error in User Register: Missing Username");case 1:return[4,user_collection_1.Users.findOne({username:r.username})];case 2:if(e.sent())throw new Error("Error in User Register: Username Exists");return[3,3];case 3:return[4,user_collection_1.Users.findOne({email:r.email})];case 4:if(e.sent())throw new Error("Error in User Register: Email Exists");return r.setPassword(t),[2,r];case 5:return[2]}})})},MongoManagerUserCollection.prototype.resetAttempts=function(e){return user_collection_1.Users.updateOne({_id:e._id},{$set:{attempts:0}})},MongoManagerUserCollection}(exports.MongoManagerCollection=MongoManagerCollection);function pbkdf2(e,r,t,o){crypto.pbkdf2(e,r,t.iterations,t.keylen,t.digestAlgorithm,o)}function pbkdf2Promisified(e,r,n){return new Promise(function(t,o){return pbkdf2(e,r,n,function(e,r){return e?o(e):t(r)})})}function randomBytes(e){return new Promise(function(t,o){return crypto.randomBytes(e,function(e,r){return e?o(e):t(r)})})}function objectContainsPropertyDeep(e,r){var t=Object.keys(e);if(t.some(function(e){return e===r}))return!0;for(var o=0;o<t.length;o++){var n=t[o];if(e[n]&&"object"==typeof e[n]&&objectContainsPropertyDeep(e[n],r))return!0}return!1}exports.MongoManagerUserCollection=MongoManagerUserCollection;
|
|
2
2
|
//# sourceMappingURL=mongo.manager.js.map
|