@resolveio/server-lib 20.5.14 → 20.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/collections/monitor-function.collection.d.ts +3 -0
  2. package/collections/monitor-function.collection.js +2 -0
  3. package/collections/monitor-function.collection.js.map +1 -0
  4. package/http/auth.js +1 -1
  5. package/http/auth.js.map +1 -1
  6. package/managers/local-log.manager.d.ts +1 -1
  7. package/managers/local-log.manager.js.map +1 -1
  8. package/managers/method.manager.d.ts +2 -4
  9. package/managers/method.manager.js +1 -1
  10. package/managers/method.manager.js.map +1 -1
  11. package/managers/mongo.manager.js +1 -1
  12. package/managers/mongo.manager.js.map +1 -1
  13. package/managers/monitor.manager.d.ts +7 -6
  14. package/managers/monitor.manager.js +1 -1
  15. package/managers/monitor.manager.js.map +1 -1
  16. package/managers/subscription.manager.js +1 -1
  17. package/managers/subscription.manager.js.map +1 -1
  18. package/methods/aws.js +1 -1
  19. package/methods/aws.js.map +1 -1
  20. package/methods/cron-jobs.js +1 -1
  21. package/methods/cron-jobs.js.map +1 -1
  22. package/methods/logs.js +1 -1
  23. package/methods/logs.js.map +1 -1
  24. package/methods/pdf.js +1 -1
  25. package/methods/pdf.js.map +1 -1
  26. package/methods.ts +0 -3
  27. package/models/log.model.d.ts +1 -1
  28. package/models/monitor-function.model.d.ts +14 -0
  29. package/models/{worker-task-request.model.js → monitor-function.model.js} +1 -1
  30. package/models/monitor-function.model.js.map +1 -0
  31. package/package.json +1 -1
  32. package/server-app.d.ts +33 -2
  33. package/server-app.js +1 -1
  34. package/server-app.js.map +1 -1
  35. package/collections/worker-task-request.collection.d.ts +0 -3
  36. package/collections/worker-task-request.collection.js +0 -2
  37. package/collections/worker-task-request.collection.js.map +0 -1
  38. package/collections/worker-task-response.collection.d.ts +0 -3
  39. package/collections/worker-task-response.collection.js +0 -2
  40. package/collections/worker-task-response.collection.js.map +0 -1
  41. package/models/worker-task-request.model.d.ts +0 -10
  42. package/models/worker-task-request.model.js.map +0 -1
  43. package/models/worker-task-response.model.d.ts +0 -9
  44. package/models/worker-task-response.model.js +0 -2
  45. package/models/worker-task-response.model.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";var __extends=this&&this.__extends||function(){var t=function(e,o){return(t=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(e,o){e.__proto__=o}:function(e,o){for(var t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t])}))(e,o)};return function(e,o){if("function"!=typeof o&&null!==o)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function __(){this.constructor=e}t(e,o),e.prototype=null===o?Object.create(o):(__.prototype=o.prototype,new __)}}(),__assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var o,t=1,n=arguments.length;t<n;t++)for(var r in o=arguments[t])Object.prototype.hasOwnProperty.call(o,r)&&(e[r]=o[r]);return e}).apply(this,arguments)},__awaiter=this&&this.__awaiter||function(e,n,r,i){return new(r=r||Promise)(function(t,o){function fulfilled(e){try{step(i.next(e))}catch(e){o(e)}}function rejected(e){try{step(i.throw(e))}catch(e){o(e)}}function step(e){var o;e.done?t(e.value):((o=e.value)instanceof r?o:new r(function(e){e(o)})).then(fulfilled,rejected)}step((i=i.apply(e,n||[])).next())})},__generator=this&&this.__generator||function(n,r){var i,s,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},c={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function verb(t){return function(e){var o=[t,e];if(i)throw new TypeError("Generator is already executing.");for(;l=c&&o[c=0]?0:l;)try{if(i=1,s&&(a=2&o[0]?s.return:o[0]?s.throw||((a=s.return)&&a.call(s),0):s.next)&&!(a=a.call(s,o[1])).done)return a;switch(s=0,(o=a?[2&o[0],a.value]:o)[0]){case 0:case 1:a=o;break;case 4:return l.label++,{value:o[1],done:!1};case 5:l.label++,s=o[1],o=[0];continue;case 7:o=l.ops.pop(),l.trys.pop();continue;default:if(!(a=0<(a=l.trys).length&&a[a.length-1])&&(6===o[0]||2===o[0])){l=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]<a[3]))l.label=o[1];else if(6===o[0]&&l.label<a[1])l.label=a[1],a=o;else{if(!(a&&l.label<a[2])){a[2]&&l.ops.pop(),l.trys.pop();continue}l.label=a[2],l.ops.push(o)}}o=r.call(n,l)}catch(e){o=[6,e],s=0}finally{i=a=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}}},__read=this&&this.__read||function(e,o){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,r,i=t.call(e),s=[];try{for(;(void 0===o||0<o--)&&!(n=i.next()).done;)s.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(t=i.return)&&t.call(i)}finally{if(r)throw r.error}}return s},__spreadArray=this&&this.__spreadArray||function(e,o,t){if(t||2===arguments.length)for(var n,r=0,i=o.length;r<i;r++)!n&&r in o||((n=n||Array.prototype.slice.call(o,0,r))[r]=o[r]);return e.concat(n||Array.prototype.slice.call(o))},__values=this&&this.__values||function(e){var o="function"==typeof Symbol&&Symbol.iterator,t=o&&e[o],n=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return{value:(e=e&&n>=e.length?void 0:e)&&e[n++],done:!e}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},simpl_schema_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.MongoManagerUserCollection=exports.MongoManagerCollection=exports.MongoManagerModel=exports.MongoManager=void 0,require("simpl-schema")),resolveio_server_app_1=require("../resolveio-server-app"),user_collection_1=require("../collections/user.collection"),common_1=require("../util/common"),NodeCache=require("node-cache"),crypto=require("crypto"),scmp=require("scmp"),monitor_manager_1=require("./monitor.manager"),os_1=require("os"),numCPUs=(0,os_1.cpus)().length,v8=require("v8"),async_1=require("async"),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,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()}return MongoManager.prototype.setCacheLimit=function(){this._isWorkersEnabled?this._heapLimit=this._isWorkerInstance?.8*this._heapSize:.4*this._heapSize:this._heapLimit=.3*this._heapSize},MongoManager.prototype.initServerCollections=function(){return __awaiter(this,void 0,void 0,function(){var o;return __generator(this,function(e){switch(e.label){case 0:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().listCollections().toArray()];case 1:return o=e.sent(),this._serverCollections=o,[2]}})})},MongoManager.prototype.getServerCollections=function(){return this._serverCollections},MongoManager.prototype.registerCollection=function(o){var e=this;o.collectionOptions&&o.collectionOptions.timeseries&&o.collectionOptions.timeseries.timeField&&this._serverCollections.some(function(e){return e.name===o.collectionName&&"collection"===e.type})&&resolveio_server_app_1.ResolveIOServer.getMainDB().dropCollection(o.collectionName).then(function(){e.createCollection(o)}),this._collections.push(o)},MongoManager.prototype.createCollection=function(e){resolveio_server_app_1.ResolveIOServer.getMainDB().createCollection(e.collectionName,e.collectionOptions)},MongoManager.prototype.collections=function(){return this._collections},MongoManager.prototype.collection=function(o){return this._collections.find(function(e){return e.collectionName===o})},MongoManager.prototype.delay=function(o){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2,new Promise(function(e){return setTimeout(e,o)})]})})},MongoManager.prototype.find=function(r,i,s){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var o,t,n=this;return __generator(this,function(e){return o=this.generateCacheKey([r],"find",[i,s]),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 Find - 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 Find - 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 Find - Running",r),t=this.executeFind(r,i,s,o),this._operationInProgress.set(o,{promise:t,invalidatedDuringExecution:!1,collections:[r]}),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",r),n._operationInProgress.delete(o)}),[2,t])})})},MongoManager.prototype.executeFind=function(n,r,i,s){return __awaiter(this,void 0,void 0,function(){var o,t;return __generator(this,function(e){switch(e.label){case 0:return o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(n),t=new monitor_manager_1.MonitorMongo("find",n,JSON.stringify([r,i])),[4,o.find(r,i).toArray()];case 1:return o=e.sent(),t.finish(),this._operationInProgress.get(s).invalidatedDuringExecution||this.addToCache([n],s,o),[2,o]}})})},MongoManager.prototype.findOne=function(r,i,s){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var o,t,n=this;return __generator(this,function(e){return o=this.generateCacheKey([r],"findOne",[i,s]),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 FindOne - 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 FindOne - 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 FindOne - Running",r),t=this.executeFindOne(r,i,s,o),this._operationInProgress.set(o,{promise:t,invalidatedDuringExecution:!1,collections:[r]}),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",r),n._operationInProgress.delete(o)}),[2,t])})})},MongoManager.prototype.executeFindOne=function(n,r,i,s){return __awaiter(this,void 0,void 0,function(){var o,t;return __generator(this,function(e){switch(e.label){case 0:return o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(n),t=new monitor_manager_1.MonitorMongo("findOne",n,JSON.stringify([r,i])),[4,o.findOne(r,i)];case 1:return o=e.sent(),t.finish(),this._operationInProgress.get(s).invalidatedDuringExecution||this.addToCache([n],s,o),[2,o]}})})},MongoManager.prototype.aggregate=function(i,s,a){return __awaiter(this,void 0,void 0,function(){var o,t,n,r=this;return __generator(this,function(e){return o=__spreadArray([i],__read(s.flatMap(function(e){var o;return null!=(o=e.$lookup)&&o.from?[e.$lookup.from]:[]})),!1),t=this.generateCacheKey(o,"aggregate",[s,a]),void 0!==(n=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",o),[2,n]):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",o),[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",o),n=this.executeAggregate(i,s,a,t,o),this._operationInProgress.set(t,{promise:n,invalidatedDuringExecution:!1,collections:o}),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",o),r._operationInProgress.delete(t)}),[2,n])})})},MongoManager.prototype.executeAggregate=function(n,r,i,s,a){return __awaiter(this,void 0,void 0,function(){var o,t;return __generator(this,function(e){switch(e.label){case 0:return o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(n),t=new monitor_manager_1.MonitorMongo("aggregate",n,JSON.stringify([r,i])),[4,o.aggregate(r,i).toArray()];case 1:return o=e.sent(),t.finish(),this._operationInProgress.get(s).invalidatedDuringExecution||this.addToCache(a,s,o),[2,o]}})})},MongoManager.prototype.countDocuments=function(r,i,s){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var o,t,n=this;return __generator(this,function(e){return o=this.generateCacheKey([r],"countDocuments",[i,s]),void 0!==(t=this.getFromCache(o))?[2,t]:this._operationInProgress.has(o)?[2,this._operationInProgress.get(o).promise]:(t=this.executeCountDocuments(r,i,s,o),this._operationInProgress.set(o,{promise:t,invalidatedDuringExecution:!1,collections:[r]}),t.finally(function(){return n._operationInProgress.delete(o)}),[2,t])})})},MongoManager.prototype.executeCountDocuments=function(n,r,i,s){return __awaiter(this,void 0,void 0,function(){var o,t;return __generator(this,function(e){switch(e.label){case 0:return o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(n),t=new monitor_manager_1.MonitorMongo("countDocuments",n,JSON.stringify([r,i])),[4,o.countDocuments(r,i)];case 1:return o=e.sent(),t.finish(),this._operationInProgress.get(s).invalidatedDuringExecution||this.addToCache([n],s,o),[2,o]}})})},MongoManager.prototype.generateCacheKey=function(e,o,t){e=JSON.stringify({collections:e,functionName:o,args:t});return crypto.createHash("sha256").update(e).digest("hex")},MongoManager.prototype.getFromCache=function(o){try{var e=this._nodeCache.get(o);if(e)return JSON.parse(e,common_1.dateReviver)}catch(e){this._nodeCache.del(o)}},MongoManager.prototype.addToCache=function(e,o,t){var n,r;if((0,common_1.getBinarySize)(JSON.stringify(t))<1e6&&!e.includes("logs")&&!e.includes("log-method-latencies")&&!e.includes("log-subscriptions")&&!e.find(function(e){return e.endsWith(".versions")})&&!e.find(function(e){return e.startsWith("monitor-")})){var i=this._nodeCache.getStats().vsize;if(i>this._heapLimit){var s=0,a=this._nodeCache.keys();try{for(var l=__values(a),c=l.next();!c.done;c=l.next()){var _=c.value;if(this._nodeCache.del(_),s+=1,(i=this._nodeCache.getStats().vsize)<.75*this._heapLimit)break}}catch(e){n={error:e}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}console.log("Query Cache: Too Big, - Deleted: "+s+" - "+i)}this._nodeCache.set(o,JSON.stringify(t)),this._cacheMap.push({collections:e,key:o})}},MongoManager.prototype.invalidateQueryCache=function(o){var t,e,n,r,i=this._cacheMap.filter(function(e){return e.collections.includes(o)});resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Invalidate Cache",o);try{for(var s=__values(i),a=s.next();!a.done;a=s.next()){var l=a.value;this._nodeCache.del(l.key),this._operationInProgress.has(l.key)&&(this._operationInProgress.get(l.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",l.collections)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=s.return)&&e.call(s)}finally{if(t)throw t.error}}try{for(var c=__values(this._operationInProgress.entries()),_=c.next();!_.done;_=c.next()){var g=__read(_.value,2),v=(g[0],g[1]);v.collections.includes(o)&&(v.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)",v.collections)}}catch(e){n={error:e}}finally{try{_&&!_.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}this._cacheMap=this._cacheMap.filter(function(e){return!e.collections.includes(o)})},MongoManager.prototype.setupChangeStream=function(){var o=this,t=resolveio_server_app_1.ResolveIOServer.getMainDB().watch([{$match:{$and:[{"ns.coll":{$nin:["logs","log-method-latencies","log-subscriptions"]}},{"ns.coll":{$not:/.*\.versions$/}},{"ns.coll":{$not:/^monitor-/}}]}}],{fullDocument:"updateLookup"});t.on("change",function(t){return __awaiter(o,void 0,void 0,function(){var o;return __generator(this,function(e){return t.ns&&t.ns.coll&&(o=t.ns.coll,this.collection(o))&&this.invalidateQueryCache(o),[2]})})}),t.on("error",function(e){console.log(new Date,"Mongo change stream error. Restart..."),t.close(),setTimeout(function(){return o.setupChangeStream()},5e3)}),t.on("close",function(){console.log(new Date,"Mongo change stream closed. Restarting..."),setTimeout(function(){return o.setupChangeStream()},5e3)})},MongoManager}(),MongoManagerModel=(exports.MongoManager=MongoManager,function(e){var o;this.collection_main=null,this.collection_version=null,"users"===e.collectionName?this.collection_main=new MongoManagerUserCollection(e):this.collection_main=new MongoManagerCollection(e),e.useVersionCollection&&(this.collection_main.useVersions=!0,(o=(0,common_1.deepCopy)(e.schema))._id.type="Object",o._id.blackbox=!0,o={collectionName:e.collectionName+".versions",schema:o,useVersionCollection:!1,useReportBuilder:!1,reportBuilderLookupTables:[],timestamps:!0,createLogs:!1,checkSchema:!1,collectionOptions:null},"users"===e.collectionName?this.collection_version=new MongoManagerUserCollection(o):this.collection_version=new MongoManagerCollection(o),this.collection_version.createIndex({"_id._id":1,"_id.__v":1}),this.collection_main.versionCollection=e.collectionName+".versions")}),MongoManagerCollection=(exports.MongoManagerModel=MongoManagerModel,function(){function MongoManagerCollection(e){var o,t=this,n=(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.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,e.useReportBuilder&&(this.useRB=!0,o=(0,common_1.deepCopy)(e.schema),e=(0,common_1.buildRbLookups)(e.reportBuilderLookupTables,o,[]),this.rbSchema=(0,common_1.buildRbSchema)(e)),setInterval(function(){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&&(resolveio_server_app_1.ResolveIOServer.getMongoManager().registerCollection(t),clearInterval(n))},1))}var e;return MongoManagerCollection.prototype.extractIndexNameFromError=function(e){var o=e.match(/Index already exists with a different name: (\S+)/);return(o=!o||o.length<=1?e.match(/existing index:.*name: "([^"]+)"/):o)&&1<o.length?o[1]:null},MongoManagerCollection.prototype.aggregate=function(r,i,e){var s=this;return void 0===e&&(e=!1),new Promise(function(o,t){var n;e?(n=new monitor_manager_1.MonitorMongo("aggregate",s.collectionName,JSON.stringify([r,i])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).aggregate(r,i).toArray().then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Aggregate",s.collectionName,r,i,e),t(e)})):resolveio_server_app_1.ResolveIOServer.getMongoManager().aggregate(s.collectionName,r,i).then(function(e){o(e)},function(e){t(e)})})},MongoManagerCollection.prototype.aggregateCount=function(i,s){return __awaiter(this,void 0,void 0,function(){var r=this;return __generator(this,function(e){return[2,new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("aggregateCount",r.collectionName,JSON.stringify([i,s]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(r.collectionName,r.collectionOptions).aggregate(i,s).toArray().then(function(e){n.finish(),o(e.length)},function(e){n.finish(),console.log(new Date,"Error Aggregate",r.collectionName,i,s,e),t(0)})})]})})},MongoManagerCollection.prototype.aggregateCursor=function(e,o){var t=new monitor_manager_1.MonitorMongo("aggregateCursor",this.collectionName,JSON.stringify([e,o])),e=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,o);return e.on("close",function(e){return t.finish(),e}),e},MongoManagerCollection.prototype.aggregateStream=function(e,o,t){var n=new monitor_manager_1.MonitorMongo("aggregateStream",this.collectionName,JSON.stringify([e,o,t])),e=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,o).stream(t);return e.on("end",function(e){return n.finish(),e}).on("error",function(e){return n.finish(),e}).on("close",function(e){return n.finish(),e}),e},MongoManagerCollection.prototype.bulkWrite=function(y,I,N,w,R){return void 0===N&&(N=!1),void 0===w&&(w=!1),void 0===R&&(R=!1),__awaiter(this,void 0,void 0,function(){var o,t,n,r,i,s,a,l,c,_,g,v,d,u,p,m,h,f,O,M,S;return __generator(this,function(e){switch(e.label){case 0:if(!y.length)return[2,null];o=1e3,t=0,e.label=1;case 1:if(!(t<y.length))return[3,19];n=y.slice(t,t+o),r=[],i=[];try{for(M=void 0,s=__values(n),a=s.next();!a.done;a=s.next()){if(l=a.value,c=Object.keys(l)[0],_=l[c],this.checkSchema&&!N){if(g=this.simplschema.newContext(),v=void 0,"insertOne"===c)v=g.validate(_.document);else if("replaceOne"===c)v=g.validate(_.replacement);else if("updateOne"===c||"updateMany"===c)v=g.validate(_.update,{modifier:!0});else{if("deleteOne"!==c&&"deleteMany"!==c)throw new Error("Unsupported operation type: ".concat(c));v=!0}if(!v)throw new Error("Schema validation failed for ".concat(c,": ").concat(JSON.stringify(g.validationErrors())))}if("insertOne"===c)this.timestamps&&(_.document.createdAt=new Date,_.document.updatedAt=new Date),!w&&this.createLogs&&r.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:_.document._id||(0,common_1.objectIdHexString)(),payload:(0,common_1.getBinarySize)(JSON.stringify(_.document))<2e5?JSON.stringify(_.document,null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!R&&this.useVersions&&(d=__assign(__assign({},_.document),{__v:0,_id:{_id:_.document._id||(0,common_1.objectIdHexString)(),__v:0}}),i.push({insertOne:{document:d}})),l[c].document=_.document;else if("updateOne"===c||"updateMany"===c)this.timestamps&&(_.update.$set||(_.update.$set={}),_.update.$set.updatedAt=new Date),!R&&this.useVersions&&(_.update.$inc||(_.update.$inc={}),_.update.$inc.__v=1),!w&&this.createLogs&&r.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:_.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(_.update))<2e5?JSON.stringify(_.update,null,2):"Too Big",method:c,id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!R&&this.useVersions&&i.push({filter:_.filter});else if("replaceOne"===c)this.timestamps&&(_.replacement.updatedAt=new Date),!R&&this.useVersions&&(_.replacement.__v=(_.replacement.__v||0)+1),!w&&this.createLogs&&r.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:_.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(_.replacement))<2e5?JSON.stringify(_.replacement,null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!R&&this.useVersions&&i.push({filter:_.filter}),l[c].replacement=_.replacement;else{if("deleteOne"!==c&&"deleteMany"!==c)throw new Error("Unsupported operation type: ".concat(c));!w&&this.createLogs&&r.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:_.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(_.filter))<2e5?JSON.stringify(_.filter,null,2):"Too Big",method:c,id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!R&&this.useVersions&&i.push({filter:_.filter})}}}catch(e){M={error:e}}finally{try{a&&!a.done&&(S=s.return)&&S.call(s)}finally{if(M)throw M.error}}if(u=[],!(!R&&this.useVersions&&0<i.length))return[3,7];e.label=2;case 2:return e.trys.push([2,6,,7]),p=i.map(function(e){return e.filter}),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName).find({$or:p}).toArray()];case 3:return(u=e.sent(),0<(p=u.map(function(e){return{insertOne:{document:__assign(__assign({},e),{_id:{_id:e._id,__v:e.__v}})}}})).length)?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.versionCollection).bulkWrite(p,{ordered:!1})]:[3,5];case 4:e.sent(),e.label=5;case 5:return[3,7];case 6:return h=e.sent(),console.error("Error during version creation:",h),[3,7];case 7:return m=new monitor_manager_1.MonitorMongo("bulkWrite",this.collectionName,JSON.stringify([n,I])),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName).bulkWrite(n,I)];case 8:if(e.sent(),m.finish(),!w&&this.createLogs&&0<r.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,9];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLogs(r.map(function(e){return{type:"log",data:e}}))}return[3,11];case 9:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").bulkWrite(r)];case 10:e.sent(),e.label=11;case 11:if(R||!this.useVersions)return[3,17];e.label=12;case 12:return e.trys.push([12,16,,17]),h=u.map(function(e){return e._id}),f=[{$match:{"_id._id":{$in:h}}},{$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(f).toArray()];case 13:return 0<(f=e.sent()).length?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.versionCollection).deleteMany({_id:{$in:f.map(function(e){return e._id})}})]:[3,15];case 14:e.sent(),e.label=15;case 15:return[3,17];case 16:return O=e.sent(),console.error("Error during version cleanup:",O),[3,17];case 17:return t+=o,[4,new Promise(function(e){return setImmediate(e)})];case 18:return e.sent(),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[3,1];case 19:return[2,{ok:1}]}})})},MongoManagerCollection.prototype.countDocuments=function(s,a,l){var e=this;return void 0===s&&(s={}),void 0===l&&(l=!1),new Promise(function(r,i){return __awaiter(e,void 0,void 0,function(){var o,t,n=this;return __generator(this,function(e){switch(e.label){case 0:return(e.trys.push([0,4,,5]),0===Object.keys(s).length)?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).estimatedDocumentCount(a)]:[3,2];case 1:return t=e.sent(),r(t),[3,3];case 2:l?(o=new monitor_manager_1.MonitorMongo("countDocuments",this.collectionName,JSON.stringify([s,a])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).countDocuments(s,a).then(function(e){o.finish(),r(e)},function(e){o.finish(),console.log(new Date,"Error Count Documents",n.collectionName,s,a,e),i(e)})):resolveio_server_app_1.ResolveIOServer.getMongoManager().countDocuments(this.collectionName,s,a).then(function(e){return r(e)},function(e){return i(e)}),e.label=3;case 3:return[3,5];case 4:return t=e.sent(),console.log(new Date,"Error Count Documents (Stats)",this.collectionName,s,a,t),i(t),[3,5];case 5:return[2]}})})})},MongoManagerCollection.prototype.create=function(e,o){return Array.isArray(e)?1===e.length?this.insertOne(e[0],o):this.insertMany(e,o):this.insertOne(e,o)},MongoManagerCollection.prototype.createIndex=function(r,i){var e=this;return new Promise(function(t,n){return __awaiter(e,void 0,void 0,function(){var o;return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).indexes()];case 1:return(o=e.sent(),o.some(function(e){return JSON.stringify(e.key)===JSON.stringify(r)}))?[2,t("Index already exists")]:(MongoManagerCollection.indexQueue.push({action:"createIndex",collection:this,specs:[r],options:i},function(e,o){e?n(e):t(o)}),[3,3]);case 2:return o=e.sent(),n(o),[3,3];case 3:return[2]}})})})},MongoManagerCollection.prototype.createIndexes=function(i,s){var e=this;return new Promise(function(n,r){return __awaiter(e,void 0,void 0,function(){var t,o;return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).indexes()];case 1:return(t=e.sent(),0===(o=i.filter(function(o){return!t.some(function(e){return JSON.stringify(e.key)===JSON.stringify(o.key)})})).length)?[2,n(["All indexes already exist"])]:(MongoManagerCollection.indexQueue.push({action:"createIndexes",collection:this,specs:[o],options:s},function(e,o){e?r(e):n(o)}),[3,3]);case 2:return o=e.sent(),r(o),[3,3];case 3:return[2]}})})})},MongoManagerCollection.prototype.deleteMany=function(c,_,g){var e=this;return void 0===c&&(c={}),void 0===g&&(g=!1),new Promise(function(a,l){return __awaiter(e,void 0,void 0,function(){var o,t,n,r,i,s=this;return __generator(this,function(e){switch(e.label){case 0:return this.createLogs&&!g||this.useVersions?[4,this.find(c)]:[3,2];case 1:for(o=e.sent(),t=0;t<o.length;t++)n=o[t],this.createLogs&&!g&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?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,c,_]))<2e5?JSON.stringify([n,c,_],null,2):"Too Big",method:"deleteMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):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,c,_]))<2e5?JSON.stringify([n,c,_],null,2):"Too Big",method:"deleteMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),this.useVersions&&((r=(0,common_1.deepCopy)(n))._id={_id:n._id,__v:n.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:n._id,__v:n.__v}},r,{upsert:!0}),resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":n._id},{"_id.__v":{$lt:n.__v-1}}]}));e.label=2;case 2:return i=new monitor_manager_1.MonitorMongo("deleteMany",this.collectionName,JSON.stringify([c,_])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteMany(c,_).then(function(e){i.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(s.collectionName),a(e.deletedCount)):l(e.acknowledged)},function(e){i.finish(),console.log(new Date,"Error Delete Many",s.collectionName,c,_,e),l(e)}),[2]}})})})},MongoManagerCollection.prototype.deleteOne=function(s,a,l){var e=this;return void 0===s&&(s={}),void 0===l&&(l=!1),new Promise(function(i,n){return __awaiter(e,void 0,void 0,function(){var r,o,t=this;return __generator(this,function(e){return this.createLogs&&!l?(r=new monitor_manager_1.MonitorMongo("findOneAndDelete",this.collectionName,JSON.stringify([s,a])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(s,a).then(function(n){return __awaiter(t,void 0,void 0,function(){var o,t;return __generator(this,function(e){return r.finish(),(o=n.value)?(this.createLogs&&!l&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,s,a]))<2e5?JSON.stringify([o,s,a],null,2):"Too Big",method:"deleteOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,s,a]))<2e5?JSON.stringify([o,s,a],null,2):"Too Big",method:"deleteOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),this.useVersions&&((t=(0,common_1.deepCopy)(o))._id={_id:o._id,__v:o.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:o._id,__v:o.__v}},t,{upsert:!0}),resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":o._id},{"_id.__v":{$lt:o.__v-1}}]})),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),i(1)):i(0),[2]})})},function(e){r.finish(),console.log(new Date,"Error Find One And Delete",t.collectionName,s,a,e),n(e)})):(o=new monitor_manager_1.MonitorMongo("deleteOne",this.collectionName,JSON.stringify([s,a])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteOne(s,a).then(function(e){o.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(t.collectionName),i(e.deletedCount)):n(e.acknowledged)},function(e){o.finish(),console.log(new Date,"Error Delete One",t.collectionName,s,a,e),n(e)})),[2]})})})},MongoManagerCollection.prototype.distinct=function(e,r,i){var s=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("distinct",s.collectionName,JSON.stringify([e,r,i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).distinct(e,r,i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Distinct",s.collectionName,r,i,e),t(e)})})},MongoManagerCollection.prototype.drop=function(r){var i=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("drop",i.collectionName,JSON.stringify([r]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(i.collectionName,i.collectionOptions).drop(r).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Count Documents",i.collectionName,r,e),t(e)})})},MongoManagerCollection.prototype.dropIndex=function(r,i){var s=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("dropIndex",s.collectionName,JSON.stringify([r,i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).dropIndex(r,i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Drop Index",s.collectionName,r,i,e),t(e)})})},MongoManagerCollection.prototype.dropIndexes=function(r){var i=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("dropIndexes",i.collectionName,JSON.stringify([r]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(i.collectionName,i.collectionOptions).dropIndexes(r).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Drop Indexes",i.collectionName,r,e),t(e)})})},MongoManagerCollection.prototype.find=function(i,s,a){var e=this;return void 0===i&&(i={}),void 0===a&&(a=!1),new Promise(function(n,r){return __awaiter(e,void 0,void 0,function(){var o,t=this;return __generator(this,function(e){return a?(o=new monitor_manager_1.MonitorMongo("find",this.collectionName,JSON.stringify([i,s])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(i,s).toArray().then(function(e){o.finish(),n(e)},function(e){o.finish(),console.log(new Date,"Error Find",t.collectionName,i,s,e),r(e)})):resolveio_server_app_1.ResolveIOServer.getMongoManager().find(this.collectionName,i,s).then(function(e){n(e)},function(e){r(e)}),[2]})})})},MongoManagerCollection.prototype.findById=function(r,i){var s=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("findById",s.collectionName,JSON.stringify([{_id:r},i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).findOne({_id:r},i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Find By Id",s.collectionName,{_id:r},i,e),t(e)})})},MongoManagerCollection.prototype.findCount=function(r,i){var s=this;return void 0===r&&(r={}),new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("findCount",s.collectionName,JSON.stringify([r,i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).find(r,i).count().then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Find Count",s.collectionName,r,i,e),t(e)})})},MongoManagerCollection.prototype.findCursor=function(e,o){void 0===e&&(e={});var t=new monitor_manager_1.MonitorMongo("findCursor",this.collectionName,JSON.stringify([e,o])),n=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,o);return n.on("close",function(e){return t.finish(),n.removeAllListeners(),e}),n},MongoManagerCollection.prototype.findStream=function(e,o,t){void 0===e&&(e={});var n=new monitor_manager_1.MonitorMongo("findStream",this.collectionName,JSON.stringify([e,o,t])),e=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,o).stream(t);return e.on("end",function(e){return n.finish(),e}).on("error",function(e){return n.finish(),e}).on("close",function(e){return n.finish(),e}),e},MongoManagerCollection.prototype.findOne=function(r,i,e){var s=this;return void 0===r&&(r={}),void 0===e&&(e=!1),new Promise(function(o,t){var n;e?(n=new monitor_manager_1.MonitorMongo("findOne",s.collectionName,JSON.stringify([r,i])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).findOne(r,i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Find One",s.collectionName,r,i,e),t(e)})):resolveio_server_app_1.ResolveIOServer.getMongoManager().findOne(s.collectionName,r,i).then(function(e){o(e)},function(e){t(e)})})},MongoManagerCollection.prototype.findOneAndDelete=function(i,s,a){var e=this;return void 0===i&&(i={}),void 0===a&&(a=!1),new Promise(function(r,o){return __awaiter(e,void 0,void 0,function(){var t,n=this;return __generator(this,function(e){return t=new monitor_manager_1.MonitorMongo("findOneAndDelete",this.collectionName,JSON.stringify([i,s])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(i,s).then(function(e){t.finish();var o,e=e.value;e?(n.createLogs&&!a&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:n.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,i,s]))<2e5?JSON.stringify([e,i,s],null,2):"Too Big",method:"findOneAndDelete",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:n.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,i,s]))<2e5?JSON.stringify([e,i,s],null,2):"Too Big",method:"findOneAndDelete",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),n.useVersions&&((o=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(n.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},o,{upsert:!0})),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(n.collectionName),r(e)):r(null)},function(e){t.finish(),console.log(new Date,"Error Find One And Delete",n.collectionName,i,s,e),o(e)}),[2]})})})},MongoManagerCollection.prototype.findOneAndReplace=function(a,l,c,_,g){var e=this;return void 0===a&&(a={}),void 0===_&&(_=!1),void 0===g&&(g=!1),new Promise(function(i,s){return __awaiter(e,void 0,void 0,function(){var o,t,n,r=this;return __generator(this,function(e){return!this.checkSchema||g||(o=this.simplschema.newContext(),o.validate(l))?(t=new Date,this.timestamps&&(l.updatedAt=t),c&&c.upsert&&(l._id||(l._id=(0,common_1.objectIdHexString)()),this.useVersions&&(l.__v=0),this.timestamps)&&!l.createdAt&&(l.createdAt=t),n=new monitor_manager_1.MonitorMongo("findOneAndReplace",this.collectionName,JSON.stringify([a,l,c])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(a,l,c).then(function(e){n.finish();var o,e=e.value;e?(r.createLogs&&!_&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:r.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,a,l,c]))<2e5?JSON.stringify([e,a,l,c],null,2):"Too Big",method:"findOneAndReplace",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:r.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,a,l,c]))<2e5?JSON.stringify([e,a,l,c],null,2):"Too Big",method:"findOneAndReplace",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),r.useVersions&&((o=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(r.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},o,{upsert:!0})),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(r.collectionName),i(e)):i(null)},function(e){n.finish(),console.log(new Date,"Error Find One And Replace",r.collectionName,a,c,e),s(e)})):(console.log(new Date,this.collectionName,"Schema Errors - findOneAndReplace",o.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndReplace - "+this.collectionName,[o.validationErrors(),l]),s(o.validationErrors())),[2]})})})},MongoManagerCollection.prototype.findOneAndUpdate=function(a,l,c,_,g){var e=this;return void 0===a&&(a={}),void 0===_&&(_=!1),void 0===g&&(g=!1),new Promise(function(i,s){return __awaiter(e,void 0,void 0,function(){var o,t,n,r=this;return __generator(this,function(e){return!this.checkSchema||g||(o=this.simplschema.newContext(),o.validate(l,{modifier:!0}))?(this.timestamps&&(t=new Date,l.$set?l.$set.updatedAt=t:l.$set={updatedAt:t}),c&&c.upsert&&(l.$setOnInsert?(l.$setOnInsert._id||(l.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!l.$setOnInsert.createdAt&&(l.$setOnInsert.createdAt=new Date)):this.timestamps?l.$setOnInsert={_id:(0,common_1.objectIdHexString)(),createdAt:new Date}:l.$setOnInsert={_id:(0,common_1.objectIdHexString)()}),n=new monitor_manager_1.MonitorMongo("findOneAndUpdate",this.collectionName,JSON.stringify([a,l,c])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(a,l,c).then(function(e){n.finish();var o,e=e.value;e?(r.createLogs&&!_&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:r.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,a,l,c]))<2e5?JSON.stringify([e,a,l,c],null,2):"Too Big",method:"findOneAndUpdate",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:r.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,a,l,c]))<2e5?JSON.stringify([e,a,l,c],null,2):"Too Big",method:"findOneAndUpdate",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),r.useVersions&&((o=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(r.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},o,{upsert:!0})),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(r.collectionName),i(e)):i(null)},function(e){n.finish(),console.log(new Date,"Error Find One And Update",r.collectionName,a,c,e),s(e)})):(console.log(new Date,this.collectionName,"Schema Errors - findOneAndUpdate",o.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndUpdate - "+this.collectionName,[o.validationErrors(),l]),s(o.validationErrors())),[2]})})})},MongoManagerCollection.prototype.indexes=function(r){var i=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("indexes",i.collectionName,JSON.stringify([r]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(i.collectionName,i.collectionOptions).indexes(r).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Indexes",i.collectionName,r,e),t(e)})})},MongoManagerCollection.prototype.indexExists=function(r,i){var s=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("indexExists",s.collectionName,JSON.stringify([r,i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).indexExists(r,i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Index Exists",s.collectionName,r,i,e),t(e)})})},MongoManagerCollection.prototype.insertMany=function(_,g,v,d,u){var e=this;return void 0===v&&(v=!1),void 0===d&&(d=!1),void 0===u&&(u=!1),new Promise(function(l,c){return __awaiter(e,void 0,void 0,function(){var t,o,n,r,i,s,a=this;return __generator(this,function(e){if(_.length){for(t=[],this.checkSchema&&!d&&_.forEach(function(e){var o=a.simplschema.newContext();o.validate(e)?t.push(!0):(console.log(new Date,a.collectionName,"Schema Errors - insertMany",o.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertMany - "+a.collectionName,[o.validationErrors(),e]),t.push(!1))}),o=this.checkSchema?_.filter(function(e,o){return t[o]}):_,n=0;n<o.length;n++)(r=o[n])._id||(r._id=(0,common_1.objectIdHexString)()),this.timestamps&&(i=new Date,r.createdAt||(r.createdAt=i),r.updatedAt||(r.updatedAt=i)),this.useVersions&&!r.hasOwnProperty("__v")&&(r.__v=0),this.createLogs&&!v&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:r._id,payload:(0,common_1.getBinarySize)(JSON.stringify([r,g]))<2e5?JSON.stringify([r,g],null,2):"Too Big",method:"insertMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:r._id,payload:(0,common_1.getBinarySize)(JSON.stringify([r,g]))<2e5?JSON.stringify([r,g],null,2):"Too Big",method:"insertMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}));o.length&&(s=null,u||(s=new monitor_manager_1.MonitorMongo("insertMany",this.collectionName,JSON.stringify([o,g]))),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertMany(o,g).then(function(e){s&&s.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(o)):c(e.acknowledged)},function(e){s&&s.finish(),console.log(new Date,"Error Insert Many",a.collectionName,o,g,e),c(e)}))}else l([]);return[2]})})})},MongoManagerCollection.prototype.insertOne=function(a,l,c,_){var e=this;return void 0===c&&(c=!1),void 0===_&&(_=!1),new Promise(function(i,s){return __awaiter(e,void 0,void 0,function(){var o,t,n,r=this;return __generator(this,function(e){return a._id||(a._id=(0,common_1.objectIdHexString)()),!this.checkSchema||_||(o=this.simplschema.newContext(),o.validate(a))?(this.timestamps&&(t=new Date,a.createdAt||(a.createdAt=t),a.updatedAt||(a.updatedAt=t)),this.createLogs&&!c&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?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,l]))<2e5?JSON.stringify([a,l],null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):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,l]))<2e5?JSON.stringify([a,l],null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),this.useVersions&&!a.hasOwnProperty("__v")&&(a.__v=0),n=new monitor_manager_1.MonitorMongo("insertOne",this.collectionName,JSON.stringify([a,l])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertOne(a,l).then(function(e){n.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(r.collectionName),i(a)):s(e.acknowledged)},function(e){n.finish(),console.log(new Date,"Error Insert One",r.collectionName,a,l,e),s(e)})):(console.log(new Date,this.collectionName,"Schema Errors - insertOne",o.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertOne - "+this.collectionName,[o.validationErrors(),a]),s(o.validationErrors())),[2]})})})},MongoManagerCollection.prototype.listIndexes=function(e){var o=new monitor_manager_1.MonitorMongo("listIndexes",this.collectionName,JSON.stringify([e])),e=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).listIndexes(e);return e.on("close",function(e){return o.finish(),e}),e},MongoManagerCollection.prototype.rename=function(r,i){var s=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("rename",s.collectionName,JSON.stringify([r,i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).rename(r,i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Rename",s.collectionName,r,i,e),t(e)})})},MongoManagerCollection.prototype.replaceOne=function(p,m,h,f,O,M){var e=this;return void 0===f&&(f=!1),void 0===O&&(O=!1),void 0===M&&(M=null),new Promise(function(d,u){return __awaiter(e,void 0,void 0,function(){var o,t,n,r,i,s,a,l,c,_,g,v=this;return __generator(this,function(e){switch(e.label){case 0:return!this.checkSchema||O||(t=this.simplschema.newContext(),t.validate(m))?(o=new Date,this.timestamps&&(m.updatedAt=o),this.useVersions?M?[3,2]:[4,this.findOne(p,null,!0)]:[3,8]):(console.log(new Date,this.collectionName,"Schema Errors - replaceOne",t.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on replaceOne - "+this.collectionName,[t.validationErrors(),m]),u(t.validationErrors()),[2]);case 1:M=e.sent(),e.label=2;case 2:return M?(this.timestamps&&!m.createdAt&&M.createdAt&&(m.createdAt=M.createdAt),M.__v!==m.__v?[3,3]:(m.__v+=1,(t=(0,common_1.deepCopy)(M))._id={_id:M._id,__v:M.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:M._id,__v:M.__v}},t,{upsert:!0}),4<=M.__v&&resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":M._id},{"_id.__v":{$lt:M.__v-4}}]}),this.createLogs&&!f&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:M._id,payload:(0,common_1.getBinarySize)(JSON.stringify([M,p,m,h]))<2e5?JSON.stringify([M,p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:M._id,payload:(0,common_1.getBinarySize)(JSON.stringify([M,p,m,h]))<2e5?JSON.stringify([M,p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),n=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([p,m,h])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(p,m,h).then(function(e){n.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(v.collectionName),d(e.modifiedCount)):u(e.acknowledged)},function(e){n.finish(),console.log(new Date,"Error Replace One",v.collectionName,p,m,h,e),u(e)}),[3,5])):[3,6];case 3:return console.log("invalid version - "+this.collectionName,M.__v,m.__v),[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).findOne({_id:{_id:M._id,__v:m.__v}},null,!0)];case 4:(r=e.sent())?(i=M._id,s=M.__v,(a=(0,common_1.getMongoMergeUpdatedDoc)(m,M,r))._id=i,a.__v=s+1,this.createLogs&&!f&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i,payload:(0,common_1.getBinarySize)(JSON.stringify(["invalidVersion - merge",M,p,a,h]))<2e5?JSON.stringify(["invalidVersion - merge",M,p,a,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i,payload:(0,common_1.getBinarySize)(JSON.stringify(["invalidVersion - merge",M,p,a,h]))<2e5?JSON.stringify(["invalidVersion - merge",M,p,a,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),l=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([p,a,h])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(p,a,h).then(function(e){l.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(v.collectionName),d(e.modifiedCount)):u(e.acknowledged)},function(e){l.finish(),console.log(new Date,"Error Replace One",v.collectionName,p,a,h,e),u(e)})):u("Invalid Version And Could Not Find History - DB: "+M.__v+", Trying to update with :"+m.__v),e.label=5;case 5:return[3,7];case 6:h&&h.upsert?(this.timestamps&&(m.createdAt=o),m._id||(m._id=(0,common_1.objectIdHexString)()),m.__v=0,this.createLogs&&!f&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:m._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",p,m,h]))<2e5?JSON.stringify(["upsert",p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:m._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",p,m,h]))<2e5?JSON.stringify(["upsert",p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),c=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([p,m,h])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(p,m,h).then(function(e){c.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(v.collectionName),d(e.modifiedCount)):u(e.acknowledged)},function(e){c.finish(),console.log(new Date,"Error Replace One",v.collectionName,p,m,h,e),u(e)})):u("No Document"),e.label=7;case 7:return[3,9];case 8:h&&h.upsert&&(this.timestamps&&!m.createdAt&&(m.createdAt=o),m._id||(m._id=(0,common_1.objectIdHexString)()),m.__v=0),this.createLogs&&!f?(h?h.returnDocument="before":h={returnDocument:"before"},_=new monitor_manager_1.MonitorMongo("findOneAndReplace",this.collectionName,JSON.stringify([p,m,h])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(p,m,h).then(function(e){_.finish();e=e.value;e?"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:v.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,p,m,h]))<2e5?JSON.stringify([e,p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:v.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,p,m,h]))<2e5?JSON.stringify([e,p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}):"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:v.collectionName,id_document:m._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",p,m,h]))<2e5?JSON.stringify(["upsert",p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:v.collectionName,id_document:m._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",p,m,h]))<2e5?JSON.stringify(["upsert",p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(v.collectionName),d(1)},function(e){_.finish(),console.log(new Date,"Error Find One And Replace",v.collectionName,p,m,h,e),u(e)})):(g=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([p,m,h])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(p,m,h).then(function(e){g.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(v.collectionName),d(e.modifiedCount)):u(e.acknowledged)},function(e){g.finish(),console.log(new Date,"Error Replace One",v.collectionName,p,m,h,e),u(e)})),e.label=9;case 9:return[2]}})})})},MongoManagerCollection.prototype.updateMany=function(_,g,v,d,u,p){var e=this;return void 0===d&&(d=!1),void 0===u&&(u=!1),void 0===p&&(p=!1),new Promise(function(l,c){return __awaiter(e,void 0,void 0,function(){var o,t,n,r,i,s,a=this;return __generator(this,function(e){switch(e.label){case 0:return g.$inc&&"{}"!==JSON.stringify(g.$inc)||g.$set&&"{}"!==JSON.stringify(g.$set)||g.$setOnInsert&&"{}"!==JSON.stringify(g.$setOnInsert)||g.$unset&&"{}"!==JSON.stringify(g.$unset)?(this.timestamps&&(o=new Date,g.$set?g.$set.updatedAt=o:g.$set={updatedAt:o}),!this.checkSchema||u||(o=this.simplschema.newContext(),o.validate(g,{modifier:!0}))?this.useVersions&&!p||this.createLogs&&!d?[4,this.find(_)]:[3,2]:(console.log(new Date,this.collectionName,"Schema Errors - updateMany",o.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateMany - "+this.collectionName,[o.validationErrors(),g]),c(o.validationErrors()),[2])):(l(1),[2]);case 1:for(t=e.sent(),n=0;n<t.length;n++)r=t[n],this.createLogs&&!d&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:r._id,payload:(0,common_1.getBinarySize)(JSON.stringify([r,_,g,v]))<2e5?JSON.stringify([r,_,g,v],null,2):"Too Big",method:"updateMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:r._id,payload:(0,common_1.getBinarySize)(JSON.stringify([r,_,g,v]))<2e5?JSON.stringify([r,_,g,v],null,2):"Too Big",method:"updateMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),this.useVersions&&((i=(0,common_1.deepCopy)(r))._id={_id:r._id,__v:r.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:r._id,__v:r.__v}},i,{upsert:!0}),4<=r.__v&&resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":r._id},{"_id.__v":{$lt:r.__v-4}}]}),objectContainsPropertyDeep(g,"__v")||(g.$inc?g.$inc.__v||(g.$inc.__v=1):g.$inc={__v:1}));e.label=2;case 2:return s=new monitor_manager_1.MonitorMongo("updateMany",this.collectionName,JSON.stringify([_,g,v])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateMany(_,g,v).then(function(e){s.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(e.modifiedCount)):c(e.acknowledged)},function(e){s.finish(),console.log(new Date,"Error Update Many",a.collectionName,_,g,v,e),c(e)}),[2]}})})})},MongoManagerCollection.prototype.updateOne=function(_,g,v,d,u){var e=this;return void 0===d&&(d=!1),void 0===u&&(u=!1),new Promise(function(l,c){return __awaiter(e,void 0,void 0,function(){var o,t,n,r,i,s,a=this;return __generator(this,function(e){switch(e.label){case 0:return!this.checkSchema||u||(t=this.simplschema.newContext(),t.validate(g,{modifier:!0}))?g.$inc&&"{}"!==JSON.stringify(g.$inc)||g.$set&&"{}"!==JSON.stringify(g.$set)||g.$setOnInsert&&"{}"!==JSON.stringify(g.$setOnInsert)||g.$unset&&"{}"!==JSON.stringify(g.$unset)?(o=new Date,this.timestamps&&(g.$set?g.$set.updatedAt=o:g.$set={updatedAt:o}),this.useVersions?[4,this.findOne(_,null,!0)]:[3,2]):(l(1),[2]):(console.log(new Date,this.collectionName,"Schema Errors - updateOne",t.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateOne - "+this.collectionName,[t.validationErrors(),g]),c(t.validationErrors()),[2]);case 1:return(o=e.sent())?(this.createLogs&&!d&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,_,g,v]))<2e5?JSON.stringify([o,_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,_,g,v]))<2e5?JSON.stringify([o,_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),(t=(0,common_1.deepCopy)(o))._id={_id:o._id,__v:o.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:o._id,__v:o.__v}},t,{upsert:!0}),4<=o.__v&&resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":o._id},{"_id.__v":{$lt:o.__v-4}}]}),objectContainsPropertyDeep(g,"__v")||(g.$inc?g.$inc.__v||(g.$inc.__v=1):g.$inc={__v:1}),n=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([_,g,v])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(_,g,v).then(function(e){n.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(e.modifiedCount)):c(e.acknowledged)},function(e){n.finish(),console.log(new Date,"Error Update One",a.collectionName,_,g,v,e),c(e)})):v&&v.upsert?(g.$setOnInsert?(g.$setOnInsert._id||(g.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!g.$setOnInsert.createdAt&&(g.$setOnInsert.createdAt=new Date)):this.timestamps?g.$setOnInsert={_id:(0,common_1.objectIdHexString)(),__v:0,createdAt:new Date}:g.$setOnInsert={_id:(0,common_1.objectIdHexString)(),__v:0},this.createLogs&&!d&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:g.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",_,g,v]))<2e5?JSON.stringify(["upsert",_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:g.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",_,g,v]))<2e5?JSON.stringify(["upsert",_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),r=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([_,g,v])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(_,g,v).then(function(e){r.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(e.modifiedCount)):c(e.acknowledged)},function(e){r.finish(),console.log(new Date,"Error Update One",a.collectionName,_,g,v,e),c(e)})):c("No Document"),[3,3];case 2:v&&v.upsert&&(g.$setOnInsert?(g.$setOnInsert._id||(g.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!g.$setOnInsert.createdAt&&(g.$setOnInsert.createdAt=new Date)):this.timestamps?g.$setOnInsert={_id:(0,common_1.objectIdHexString)(),createdAt:new Date}:g.$setOnInsert={_id:(0,common_1.objectIdHexString)()}),this.createLogs&&!d?(v?v.returnDocument="before":v={returnDocument:"before"},i=new monitor_manager_1.MonitorMongo("findOneAndUpdate",this.collectionName,JSON.stringify([_,g,v])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(_,g,v).then(function(e){i.finish();var o=e.value;o?("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:a.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,_,g,v]))<2e5?JSON.stringify([o,_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:a.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,_,g,v]))<2e5?JSON.stringify([o,_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}),l(e.ok)):g.$setOnInsert?("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:a.collectionName,id_document:g.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",_,g,v]))<2e5?JSON.stringify(["upsert",_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:a.collectionName,id_document:g.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",_,g,v]))<2e5?JSON.stringify(["upsert",_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(e.ok)):l(0)},function(e){i.finish(),console.log(new Date,"Error Find One And Update",a.collectionName,_,g,v,e),c(e)})):(s=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([_,g,v])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(_,g,v).then(function(e){s.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(e.modifiedCount)):c(e.acknowledged)},function(e){s.finish(),console.log(new Date,"Error Update One",a.collectionName,_,g,v,e),c(e)})),e.label=3;case 3:return[2]}})})})},MongoManagerCollection.prototype.watchCollection=function(e,o){return void 0===e&&(e=[]),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).watch(e,o)},(e=MongoManagerCollection).indexQueue=async_1.default.queue(function(c,_){return __awaiter(void 0,void 0,void 0,function(){var o,t,n,r,i,s,a,l;return __generator(e,function(e){switch(e.label){case 0:if(o=c.action,t=c.collection,n=c.specs,r=c.options,!(i=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(t.collectionName,t.collectionOptions)))return[2,_(new Error("Collection ".concat(t.collectionName," not found")))];e.label=1;case 1:return e.trys.push([1,3,,10]),[4,i[o].apply(i,__spreadArray(__spreadArray([],__read(n),!1),[r],!1))];case 2:return a=e.sent(),_(null,a),[3,10];case 3:if(85!==(s=e.sent()).code&&!s.message.includes("IndexOptionsConflict"))return[3,9];e.label=4;case 4:return(e.trys.push([4,8,,9]),l=t.extractIndexNameFromError(s.message))?[4,i.dropIndex(l)]:[3,7];case 5:return e.sent(),[4,i[o].apply(i,__spreadArray(__spreadArray([],__read(n),!1),[r],!1))];case 6:return a=e.sent(),_(null,a),[2];case 7:return[3,9];case 8:return l=e.sent(),_(l),[3,9];case 9:return _(s),[3,10];case 10:return[2]}})})},1),MongoManagerCollection}()),MongoManagerUserCollection=function(e){function MongoManagerUserCollection(){return null!==e&&e.apply(this,arguments)||this}return __extends(MongoManagerUserCollection,e),MongoManagerUserCollection.prototype.authenticate=function(s,t){var e=this;return new Promise(function(r,i){return __awaiter(e,void 0,void 0,function(){var o,n=this;return __generator(this,function(e){switch(e.label){case 0:return(o=Math.pow(100,Math.log(s.attempts+1)),o=o<3e5?o:3e5,s.last)?Date.now()-s.last.getTime()<o?(s.last=new Date,[4,user_collection_1.Users.updateOne({_id:s._id},{$set:{last:s.last}})]):[3,2]:[3,3];case 1:return e.sent(),r({data:null,error:"Attempt Too Soon"}),[2];case 2:return[3,4];case 3:s.last=new Date,e.label=4;case 4:return 5<=s.attempts?r({data:null,error:"Too Many Attempts"}):s.salt?pbkdf2(t,s.salt,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"},function(o,t){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return o?[2,i(o)]:scmp(t,Buffer.from(s.hash,"hex"))?(s.last=new Date,s.attempts=0,[4,user_collection_1.Users.updateOne({_id:s._id},{$set:{last:s.last,attempts:s.attempts}})]):[3,2];case 1:return e.sent(),r({data:s,error:""}),[3,4];case 2:return s.last=new Date,s.attempts=s.attempts+1,[4,user_collection_1.Users.updateOne({_id:s._id},{$set:{last:s.last,attempts:s.attempts}})];case 3:e.sent(),5<=s.attempts?r({data:null,error:"Too Many Attempts"}):r({data:null,error:"Invalid Username And Password"}),e.label=4;case 4:return[2]}})})}):r({data:null,error:"No Salt Value Stored"}),[2]}})})})},MongoManagerUserCollection.prototype.serializeUser=function(){return function(e,o){o(null,e.username)}},MongoManagerUserCollection.prototype.deserializeUser=function(){return function(e,o){user_collection_1.Users.findOne({username:e}).then(function(e){o(null,e)},function(e){o(e,null)})}},MongoManagerUserCollection.prototype.setPassword=function(i,s){var e=this;return new Promise(function(n,r){return __awaiter(e,void 0,void 0,function(){var o,t;return __generator(this,function(e){switch(e.label){case 0:return i?[3,1]:(r("No User"),[3,5]);case 1:return s?[3,2]:(r("No Password"),[3,5]);case 2:return[4,randomBytes(32)];case 3:return o=e.sent(),o=o.toString("hex"),[4,pbkdf2Promisified(s,o,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"})];case 4:t=e.sent(),t=Buffer.from(t,"binary").toString("hex"),user_collection_1.Users.updateOne({_id:i._id},{$set:{hash:t,salt:o,services:{},attempts:0}}).then(function(e){return n(e)},function(e){return r(e)}),e.label=5;case 5:return[2]}})})})},MongoManagerUserCollection.prototype.changePassword=function(r,i,s){var e=this;return new Promise(function(t,n){return __awaiter(e,void 0,void 0,function(){var o;return __generator(this,function(e){switch(e.label){case 0:return r?[3,1]:(n("Missing User"),[3,4]);case 1:return i&&s?[3,2]:(n("Missing Password"),[3,4]);case 2:return[4,this.authenticate(r,i)];case 3:(o=e.sent()).data?this.setPassword(r,s).then(function(e){return t(e)},function(e){return n(e)}):n(o.error),e.label=4;case 4:return[2]}})})})},MongoManagerUserCollection.prototype.register=function(n,r){var e=this;return new Promise(function(o,t){return __awaiter(e,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return n.username?[3,1]:(t("Missing Username"),[3,5]);case 1:return[4,user_collection_1.Users.findOne({username:n.username})];case 2:return e.sent()?(t("Username Exists"),[3,5]):[3,3];case 3:return[4,user_collection_1.Users.findOne({email:n.email})];case 4:e.sent()?t("Email Exists"):(n.setPassword(r),o(n)),e.label=5;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,o,t,n){crypto.pbkdf2(e,o,t.iterations,t.keylen,t.digestAlgorithm,n)}function pbkdf2Promisified(e,o,r){return new Promise(function(t,n){return pbkdf2(e,o,r,function(e,o){return e?n(e):t(o)})})}function randomBytes(e){return new Promise(function(t,n){return crypto.randomBytes(e,function(e,o){return e?n(e):t(o)})})}function objectContainsPropertyDeep(e,o){var t=Object.keys(e);if(t.some(function(e){return e===o}))return!0;for(var n=0;n<t.length;n++){var r=t[n];if(e[r]&&"object"==typeof e[r]&&objectContainsPropertyDeep(e[r],o))return!0}return!1}exports.MongoManagerUserCollection=MongoManagerUserCollection;
1
+ "use strict";var __extends=this&&this.__extends||function(){var t=function(e,o){return(t=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(e,o){e.__proto__=o}:function(e,o){for(var t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t])}))(e,o)};return function(e,o){if("function"!=typeof o&&null!==o)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function __(){this.constructor=e}t(e,o),e.prototype=null===o?Object.create(o):(__.prototype=o.prototype,new __)}}(),__assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var o,t=1,n=arguments.length;t<n;t++)for(var r in o=arguments[t])Object.prototype.hasOwnProperty.call(o,r)&&(e[r]=o[r]);return e}).apply(this,arguments)},__awaiter=this&&this.__awaiter||function(e,n,r,i){return new(r=r||Promise)(function(t,o){function fulfilled(e){try{step(i.next(e))}catch(e){o(e)}}function rejected(e){try{step(i.throw(e))}catch(e){o(e)}}function step(e){var o;e.done?t(e.value):((o=e.value)instanceof r?o:new r(function(e){e(o)})).then(fulfilled,rejected)}step((i=i.apply(e,n||[])).next())})},__generator=this&&this.__generator||function(n,r){var i,s,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},c={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function verb(t){return function(e){var o=[t,e];if(i)throw new TypeError("Generator is already executing.");for(;l=c&&o[c=0]?0:l;)try{if(i=1,s&&(a=2&o[0]?s.return:o[0]?s.throw||((a=s.return)&&a.call(s),0):s.next)&&!(a=a.call(s,o[1])).done)return a;switch(s=0,(o=a?[2&o[0],a.value]:o)[0]){case 0:case 1:a=o;break;case 4:return l.label++,{value:o[1],done:!1};case 5:l.label++,s=o[1],o=[0];continue;case 7:o=l.ops.pop(),l.trys.pop();continue;default:if(!(a=0<(a=l.trys).length&&a[a.length-1])&&(6===o[0]||2===o[0])){l=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]<a[3]))l.label=o[1];else if(6===o[0]&&l.label<a[1])l.label=a[1],a=o;else{if(!(a&&l.label<a[2])){a[2]&&l.ops.pop(),l.trys.pop();continue}l.label=a[2],l.ops.push(o)}}o=r.call(n,l)}catch(e){o=[6,e],s=0}finally{i=a=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}}},__read=this&&this.__read||function(e,o){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,r,i=t.call(e),s=[];try{for(;(void 0===o||0<o--)&&!(n=i.next()).done;)s.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(t=i.return)&&t.call(i)}finally{if(r)throw r.error}}return s},__spreadArray=this&&this.__spreadArray||function(e,o,t){if(t||2===arguments.length)for(var n,r=0,i=o.length;r<i;r++)!n&&r in o||((n=n||Array.prototype.slice.call(o,0,r))[r]=o[r]);return e.concat(n||Array.prototype.slice.call(o))},__values=this&&this.__values||function(e){var o="function"==typeof Symbol&&Symbol.iterator,t=o&&e[o],n=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return{value:(e=e&&n>=e.length?void 0:e)&&e[n++],done:!e}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},simpl_schema_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.MongoManagerUserCollection=exports.MongoManagerCollection=exports.MongoManagerModel=exports.MongoManager=void 0,require("simpl-schema")),resolveio_server_app_1=require("../resolveio-server-app"),user_collection_1=require("../collections/user.collection"),common_1=require("../util/common"),NodeCache=require("node-cache"),crypto=require("crypto"),scmp=require("scmp"),monitor_manager_1=require("./monitor.manager"),os_1=require("os"),numCPUs=(0,os_1.cpus)().length,v8=require("v8"),async_1=require("async"),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,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()}return MongoManager.prototype.setCacheLimit=function(){this._isWorkersEnabled?this._heapLimit=this._isWorkerInstance?.8*this._heapSize:.4*this._heapSize:this._heapLimit=.3*this._heapSize},MongoManager.prototype.initServerCollections=function(){return __awaiter(this,void 0,void 0,function(){var o;return __generator(this,function(e){switch(e.label){case 0:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().listCollections().toArray()];case 1:return o=e.sent(),this._serverCollections=o,[2]}})})},MongoManager.prototype.getServerCollections=function(){return this._serverCollections},MongoManager.prototype.registerCollection=function(o){var e=this;o.collectionOptions&&o.collectionOptions.timeseries&&o.collectionOptions.timeseries.timeField&&this._serverCollections.some(function(e){return e.name===o.collectionName&&"collection"===e.type})&&resolveio_server_app_1.ResolveIOServer.getMainDB().dropCollection(o.collectionName).then(function(){e.createCollection(o)}),this._collections.push(o)},MongoManager.prototype.createCollection=function(e){resolveio_server_app_1.ResolveIOServer.getMainDB().createCollection(e.collectionName,e.collectionOptions)},MongoManager.prototype.collections=function(){return this._collections},MongoManager.prototype.collection=function(o){return this._collections.find(function(e){return e.collectionName===o})},MongoManager.prototype.delay=function(o){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2,new Promise(function(e){return setTimeout(e,o)})]})})},MongoManager.prototype.find=function(r,i,s){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var o,t,n=this;return __generator(this,function(e){return o=this.generateCacheKey([r],"find",[i,s]),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 Find - 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 Find - 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 Find - Running",r),t=this.executeFind(r,i,s,o),this._operationInProgress.set(o,{promise:t,invalidatedDuringExecution:!1,collections:[r]}),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",r),n._operationInProgress.delete(o)}),[2,t])})})},MongoManager.prototype.executeFind=function(n,r,i,s){return __awaiter(this,void 0,void 0,function(){var o,t;return __generator(this,function(e){switch(e.label){case 0:return o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(n),t=new monitor_manager_1.MonitorMongo("find",n,JSON.stringify([r,i])),[4,o.find(r,i).toArray()];case 1:return o=e.sent(),t.finish(),this._operationInProgress.get(s).invalidatedDuringExecution||this.addToCache([n],s,o),[2,o]}})})},MongoManager.prototype.findOne=function(r,i,s){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var o,t,n=this;return __generator(this,function(e){return o=this.generateCacheKey([r],"findOne",[i,s]),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 FindOne - 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 FindOne - 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 FindOne - Running",r),t=this.executeFindOne(r,i,s,o),this._operationInProgress.set(o,{promise:t,invalidatedDuringExecution:!1,collections:[r]}),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",r),n._operationInProgress.delete(o)}),[2,t])})})},MongoManager.prototype.executeFindOne=function(n,r,i,s){return __awaiter(this,void 0,void 0,function(){var o,t;return __generator(this,function(e){switch(e.label){case 0:return o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(n),t=new monitor_manager_1.MonitorMongo("findOne",n,JSON.stringify([r,i])),[4,o.findOne(r,i)];case 1:return o=e.sent(),t.finish(),this._operationInProgress.get(s).invalidatedDuringExecution||this.addToCache([n],s,o),[2,o]}})})},MongoManager.prototype.aggregate=function(i,s,a){return __awaiter(this,void 0,void 0,function(){var o,t,n,r=this;return __generator(this,function(e){return o=__spreadArray([i],__read(s.flatMap(function(e){var o;return null!=(o=e.$lookup)&&o.from?[e.$lookup.from]:[]})),!1),t=this.generateCacheKey(o,"aggregate",[s,a]),void 0!==(n=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",o),[2,n]):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",o),[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",o),n=this.executeAggregate(i,s,a,t,o),this._operationInProgress.set(t,{promise:n,invalidatedDuringExecution:!1,collections:o}),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",o),r._operationInProgress.delete(t)}),[2,n])})})},MongoManager.prototype.executeAggregate=function(n,r,i,s,a){return __awaiter(this,void 0,void 0,function(){var o,t;return __generator(this,function(e){switch(e.label){case 0:return o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(n),t=new monitor_manager_1.MonitorMongo("aggregate",n,JSON.stringify([r,i])),[4,o.aggregate(r,i).toArray()];case 1:return o=e.sent(),t.finish(),this._operationInProgress.get(s).invalidatedDuringExecution||this.addToCache(a,s,o),[2,o]}})})},MongoManager.prototype.countDocuments=function(r,i,s){return void 0===i&&(i={}),__awaiter(this,void 0,void 0,function(){var o,t,n=this;return __generator(this,function(e){return o=this.generateCacheKey([r],"countDocuments",[i,s]),void 0!==(t=this.getFromCache(o))?[2,t]:this._operationInProgress.has(o)?[2,this._operationInProgress.get(o).promise]:(t=this.executeCountDocuments(r,i,s,o),this._operationInProgress.set(o,{promise:t,invalidatedDuringExecution:!1,collections:[r]}),t.finally(function(){return n._operationInProgress.delete(o)}),[2,t])})})},MongoManager.prototype.executeCountDocuments=function(n,r,i,s){return __awaiter(this,void 0,void 0,function(){var o,t;return __generator(this,function(e){switch(e.label){case 0:return o=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(n),t=new monitor_manager_1.MonitorMongo("countDocuments",n,JSON.stringify([r,i])),[4,o.countDocuments(r,i)];case 1:return o=e.sent(),t.finish(),this._operationInProgress.get(s).invalidatedDuringExecution||this.addToCache([n],s,o),[2,o]}})})},MongoManager.prototype.generateCacheKey=function(e,o,t){e=JSON.stringify({collections:e,functionName:o,args:t});return crypto.createHash("sha256").update(e).digest("hex")},MongoManager.prototype.getFromCache=function(o){try{var e=this._nodeCache.get(o);if(e)return JSON.parse(e,common_1.dateReviver)}catch(e){this._nodeCache.del(o)}},MongoManager.prototype.addToCache=function(e,o,t){var n,r;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 i=this._nodeCache.getStats().vsize;if(i>this._heapLimit){var s=0,a=this._nodeCache.keys();try{for(var l=__values(a),c=l.next();!c.done;c=l.next()){var _=c.value;if(this._nodeCache.del(_),s+=1,(i=this._nodeCache.getStats().vsize)<.75*this._heapLimit)break}}catch(e){n={error:e}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}console.log("Query Cache: Too Big, - Deleted: "+s+" - "+i)}this._nodeCache.set(o,JSON.stringify(t)),this._cacheMap.push({collections:e,key:o})}},MongoManager.prototype.invalidateQueryCache=function(o){var t,e,n,r,i=this._cacheMap.filter(function(e){return e.collections.includes(o)});resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&resolveio_server_app_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&console.log(new Date,"Mongo Invalidate Cache",o);try{for(var s=__values(i),a=s.next();!a.done;a=s.next()){var l=a.value;this._nodeCache.del(l.key),this._operationInProgress.has(l.key)&&(this._operationInProgress.get(l.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",l.collections)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=s.return)&&e.call(s)}finally{if(t)throw t.error}}try{for(var c=__values(this._operationInProgress.entries()),_=c.next();!_.done;_=c.next()){var g=__read(_.value,2),v=(g[0],g[1]);v.collections.includes(o)&&(v.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)",v.collections)}}catch(e){n={error:e}}finally{try{_&&!_.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}this._cacheMap=this._cacheMap.filter(function(e){return!e.collections.includes(o)})},MongoManager.prototype.setupChangeStream=function(){var o=this,t=resolveio_server_app_1.ResolveIOServer.getMainDB().watch([{$match:{$and:[{"ns.coll":{$nin:["logs"]}},{"ns.coll":{$not:/.*\.versions$/}},{"ns.coll":{$not:/^monitor-/}}]}}],{fullDocument:"updateLookup"});t.on("change",function(t){return __awaiter(o,void 0,void 0,function(){var o;return __generator(this,function(e){return t.ns&&t.ns.coll&&(o=t.ns.coll,this.collection(o))&&this.invalidateQueryCache(o),[2]})})}),t.on("error",function(e){console.log(new Date,"Mongo change stream error. Restart..."),t.close(),setTimeout(function(){return o.setupChangeStream()},5e3)}),t.on("close",function(){console.log(new Date,"Mongo change stream closed. Restarting..."),setTimeout(function(){return o.setupChangeStream()},5e3)})},MongoManager}(),MongoManagerModel=(exports.MongoManager=MongoManager,function(e){var o;this.collection_main=null,this.collection_version=null,"users"===e.collectionName?this.collection_main=new MongoManagerUserCollection(e):this.collection_main=new MongoManagerCollection(e),e.useVersionCollection&&(this.collection_main.useVersions=!0,(o=(0,common_1.deepCopy)(e.schema))._id.type="Object",o._id.blackbox=!0,o={collectionName:e.collectionName+".versions",schema:o,useVersionCollection:!1,useReportBuilder:!1,reportBuilderLookupTables:[],timestamps:!0,createLogs:!1,checkSchema:!1,collectionOptions:null},"users"===e.collectionName?this.collection_version=new MongoManagerUserCollection(o):this.collection_version=new MongoManagerCollection(o),this.collection_version.createIndex({"_id._id":1,"_id.__v":1}),this.collection_main.versionCollection=e.collectionName+".versions")}),MongoManagerCollection=(exports.MongoManagerModel=MongoManagerModel,function(){function MongoManagerCollection(e){var o,t=this,n=(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.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,e.useReportBuilder&&(this.useRB=!0,o=(0,common_1.deepCopy)(e.schema),e=(0,common_1.buildRbLookups)(e.reportBuilderLookupTables,o,[]),this.rbSchema=(0,common_1.buildRbSchema)(e)),setInterval(function(){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&&(resolveio_server_app_1.ResolveIOServer.getMongoManager().registerCollection(t),clearInterval(n))},1))}var e;return MongoManagerCollection.prototype.extractIndexNameFromError=function(e){var o=e.match(/Index already exists with a different name: (\S+)/);return(o=!o||o.length<=1?e.match(/existing index:.*name: "([^"]+)"/):o)&&1<o.length?o[1]:null},MongoManagerCollection.prototype.aggregate=function(r,i,e){var s=this;return void 0===e&&(e=!1),new Promise(function(o,t){var n;e?(n=new monitor_manager_1.MonitorMongo("aggregate",s.collectionName,JSON.stringify([r,i])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).aggregate(r,i).toArray().then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Aggregate",s.collectionName,r,i,e),t(e)})):resolveio_server_app_1.ResolveIOServer.getMongoManager().aggregate(s.collectionName,r,i).then(function(e){o(e)},function(e){t(e)})})},MongoManagerCollection.prototype.aggregateCount=function(i,s){return __awaiter(this,void 0,void 0,function(){var r=this;return __generator(this,function(e){return[2,new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("aggregateCount",r.collectionName,JSON.stringify([i,s]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(r.collectionName,r.collectionOptions).aggregate(i,s).toArray().then(function(e){n.finish(),o(e.length)},function(e){n.finish(),console.log(new Date,"Error Aggregate",r.collectionName,i,s,e),t(0)})})]})})},MongoManagerCollection.prototype.aggregateCursor=function(e,o){var t=new monitor_manager_1.MonitorMongo("aggregateCursor",this.collectionName,JSON.stringify([e,o])),e=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,o);return e.on("close",function(e){return t.finish(),e}),e},MongoManagerCollection.prototype.aggregateStream=function(e,o,t){var n=new monitor_manager_1.MonitorMongo("aggregateStream",this.collectionName,JSON.stringify([e,o,t])),e=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,o).stream(t);return e.on("end",function(e){return n.finish(),e}).on("error",function(e){return n.finish(),e}).on("close",function(e){return n.finish(),e}),e},MongoManagerCollection.prototype.bulkWrite=function(y,I,N,w,R){return void 0===N&&(N=!1),void 0===w&&(w=!1),void 0===R&&(R=!1),__awaiter(this,void 0,void 0,function(){var o,t,n,r,i,s,a,l,c,_,g,v,d,u,p,m,h,f,O,M,S;return __generator(this,function(e){switch(e.label){case 0:if(!y.length)return[2,null];o=1e3,t=0,e.label=1;case 1:if(!(t<y.length))return[3,19];n=y.slice(t,t+o),r=[],i=[];try{for(M=void 0,s=__values(n),a=s.next();!a.done;a=s.next()){if(l=a.value,c=Object.keys(l)[0],_=l[c],this.checkSchema&&!N){if(g=this.simplschema.newContext(),v=void 0,"insertOne"===c)v=g.validate(_.document);else if("replaceOne"===c)v=g.validate(_.replacement);else if("updateOne"===c||"updateMany"===c)v=g.validate(_.update,{modifier:!0});else{if("deleteOne"!==c&&"deleteMany"!==c)throw new Error("Unsupported operation type: ".concat(c));v=!0}if(!v)throw new Error("Schema validation failed for ".concat(c,": ").concat(JSON.stringify(g.validationErrors())))}if("insertOne"===c)this.timestamps&&(_.document.createdAt=new Date,_.document.updatedAt=new Date),!w&&this.createLogs&&r.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:_.document._id||(0,common_1.objectIdHexString)(),payload:(0,common_1.getBinarySize)(JSON.stringify(_.document))<2e5?JSON.stringify(_.document,null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!R&&this.useVersions&&(d=__assign(__assign({},_.document),{__v:0,_id:{_id:_.document._id||(0,common_1.objectIdHexString)(),__v:0}}),i.push({insertOne:{document:d}})),l[c].document=_.document;else if("updateOne"===c||"updateMany"===c)this.timestamps&&(_.update.$set||(_.update.$set={}),_.update.$set.updatedAt=new Date),!R&&this.useVersions&&(_.update.$inc||(_.update.$inc={}),_.update.$inc.__v=1),!w&&this.createLogs&&r.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:_.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(_.update))<2e5?JSON.stringify(_.update,null,2):"Too Big",method:c,id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!R&&this.useVersions&&i.push({filter:_.filter});else if("replaceOne"===c)this.timestamps&&(_.replacement.updatedAt=new Date),!R&&this.useVersions&&(_.replacement.__v=(_.replacement.__v||0)+1),!w&&this.createLogs&&r.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:_.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(_.replacement))<2e5?JSON.stringify(_.replacement,null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!R&&this.useVersions&&i.push({filter:_.filter}),l[c].replacement=_.replacement;else{if("deleteOne"!==c&&"deleteMany"!==c)throw new Error("Unsupported operation type: ".concat(c));!w&&this.createLogs&&r.push({insertOne:{document:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:_.filter._id||null,payload:(0,common_1.getBinarySize)(JSON.stringify(_.filter))<2e5?JSON.stringify(_.filter,null,2):"Too Big",method:c,id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}}),!R&&this.useVersions&&i.push({filter:_.filter})}}}catch(e){M={error:e}}finally{try{a&&!a.done&&(S=s.return)&&S.call(s)}finally{if(M)throw M.error}}if(u=[],!(!R&&this.useVersions&&0<i.length))return[3,7];e.label=2;case 2:return e.trys.push([2,6,,7]),p=i.map(function(e){return e.filter}),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName).find({$or:p}).toArray()];case 3:return(u=e.sent(),0<(p=u.map(function(e){return{insertOne:{document:__assign(__assign({},e),{_id:{_id:e._id,__v:e.__v}})}}})).length)?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.versionCollection).bulkWrite(p,{ordered:!1})]:[3,5];case 4:e.sent(),e.label=5;case 5:return[3,7];case 6:return h=e.sent(),console.error("Error during version creation:",h),[3,7];case 7:return m=new monitor_manager_1.MonitorMongo("bulkWrite",this.collectionName,JSON.stringify([n,I])),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName).bulkWrite(n,I)];case 8:if(e.sent(),m.finish(),!w&&this.createLogs&&0<r.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,9];resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLogs(r.map(function(e){return{type:"log",data:e}}))}return[3,11];case 9:return[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").bulkWrite(r)];case 10:e.sent(),e.label=11;case 11:if(R||!this.useVersions)return[3,17];e.label=12;case 12:return e.trys.push([12,16,,17]),h=u.map(function(e){return e._id}),f=[{$match:{"_id._id":{$in:h}}},{$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(f).toArray()];case 13:return 0<(f=e.sent()).length?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.versionCollection).deleteMany({_id:{$in:f.map(function(e){return e._id})}})]:[3,15];case 14:e.sent(),e.label=15;case 15:return[3,17];case 16:return O=e.sent(),console.error("Error during version cleanup:",O),[3,17];case 17:return t+=o,[4,new Promise(function(e){return setImmediate(e)})];case 18:return e.sent(),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),[3,1];case 19:return[2,{ok:1}]}})})},MongoManagerCollection.prototype.countDocuments=function(s,a,l){var e=this;return void 0===s&&(s={}),void 0===l&&(l=!1),new Promise(function(r,i){return __awaiter(e,void 0,void 0,function(){var o,t,n=this;return __generator(this,function(e){switch(e.label){case 0:return(e.trys.push([0,4,,5]),0===Object.keys(s).length)?[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).estimatedDocumentCount(a)]:[3,2];case 1:return t=e.sent(),r(t),[3,3];case 2:l?(o=new monitor_manager_1.MonitorMongo("countDocuments",this.collectionName,JSON.stringify([s,a])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).countDocuments(s,a).then(function(e){o.finish(),r(e)},function(e){o.finish(),console.log(new Date,"Error Count Documents",n.collectionName,s,a,e),i(e)})):resolveio_server_app_1.ResolveIOServer.getMongoManager().countDocuments(this.collectionName,s,a).then(function(e){return r(e)},function(e){return i(e)}),e.label=3;case 3:return[3,5];case 4:return t=e.sent(),console.log(new Date,"Error Count Documents (Stats)",this.collectionName,s,a,t),i(t),[3,5];case 5:return[2]}})})})},MongoManagerCollection.prototype.create=function(e,o){return Array.isArray(e)?1===e.length?this.insertOne(e[0],o):this.insertMany(e,o):this.insertOne(e,o)},MongoManagerCollection.prototype.createIndex=function(r,i){var e=this;return new Promise(function(t,n){return __awaiter(e,void 0,void 0,function(){var o;return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).indexes()];case 1:return(o=e.sent(),o.some(function(e){return JSON.stringify(e.key)===JSON.stringify(r)}))?[2,t("Index already exists")]:(MongoManagerCollection.indexQueue.push({action:"createIndex",collection:this,specs:[r],options:i},function(e,o){e?n(e):t(o)}),[3,3]);case 2:return o=e.sent(),n(o),[3,3];case 3:return[2]}})})})},MongoManagerCollection.prototype.createIndexes=function(i,s){var e=this;return new Promise(function(n,r){return __awaiter(e,void 0,void 0,function(){var t,o;return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).indexes()];case 1:return(t=e.sent(),0===(o=i.filter(function(o){return!t.some(function(e){return JSON.stringify(e.key)===JSON.stringify(o.key)})})).length)?[2,n(["All indexes already exist"])]:(MongoManagerCollection.indexQueue.push({action:"createIndexes",collection:this,specs:[o],options:s},function(e,o){e?r(e):n(o)}),[3,3]);case 2:return o=e.sent(),r(o),[3,3];case 3:return[2]}})})})},MongoManagerCollection.prototype.deleteMany=function(c,_,g){var e=this;return void 0===c&&(c={}),void 0===g&&(g=!1),new Promise(function(a,l){return __awaiter(e,void 0,void 0,function(){var o,t,n,r,i,s=this;return __generator(this,function(e){switch(e.label){case 0:return this.createLogs&&!g||this.useVersions?[4,this.find(c)]:[3,2];case 1:for(o=e.sent(),t=0;t<o.length;t++)n=o[t],this.createLogs&&!g&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?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,c,_]))<2e5?JSON.stringify([n,c,_],null,2):"Too Big",method:"deleteMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):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,c,_]))<2e5?JSON.stringify([n,c,_],null,2):"Too Big",method:"deleteMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),this.useVersions&&((r=(0,common_1.deepCopy)(n))._id={_id:n._id,__v:n.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:n._id,__v:n.__v}},r,{upsert:!0}),resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":n._id},{"_id.__v":{$lt:n.__v-1}}]}));e.label=2;case 2:return i=new monitor_manager_1.MonitorMongo("deleteMany",this.collectionName,JSON.stringify([c,_])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteMany(c,_).then(function(e){i.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(s.collectionName),a(e.deletedCount)):l(e.acknowledged)},function(e){i.finish(),console.log(new Date,"Error Delete Many",s.collectionName,c,_,e),l(e)}),[2]}})})})},MongoManagerCollection.prototype.deleteOne=function(s,a,l){var e=this;return void 0===s&&(s={}),void 0===l&&(l=!1),new Promise(function(i,n){return __awaiter(e,void 0,void 0,function(){var r,o,t=this;return __generator(this,function(e){return this.createLogs&&!l?(r=new monitor_manager_1.MonitorMongo("findOneAndDelete",this.collectionName,JSON.stringify([s,a])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(s,a).then(function(n){return __awaiter(t,void 0,void 0,function(){var o,t;return __generator(this,function(e){return r.finish(),(o=n.value)?(this.createLogs&&!l&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,s,a]))<2e5?JSON.stringify([o,s,a],null,2):"Too Big",method:"deleteOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,s,a]))<2e5?JSON.stringify([o,s,a],null,2):"Too Big",method:"deleteOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),this.useVersions&&((t=(0,common_1.deepCopy)(o))._id={_id:o._id,__v:o.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:o._id,__v:o.__v}},t,{upsert:!0}),resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":o._id},{"_id.__v":{$lt:o.__v-1}}]})),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),i(1)):i(0),[2]})})},function(e){r.finish(),console.log(new Date,"Error Find One And Delete",t.collectionName,s,a,e),n(e)})):(o=new monitor_manager_1.MonitorMongo("deleteOne",this.collectionName,JSON.stringify([s,a])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteOne(s,a).then(function(e){o.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(t.collectionName),i(e.deletedCount)):n(e.acknowledged)},function(e){o.finish(),console.log(new Date,"Error Delete One",t.collectionName,s,a,e),n(e)})),[2]})})})},MongoManagerCollection.prototype.distinct=function(e,r,i){var s=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("distinct",s.collectionName,JSON.stringify([e,r,i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).distinct(e,r,i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Distinct",s.collectionName,r,i,e),t(e)})})},MongoManagerCollection.prototype.drop=function(r){var i=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("drop",i.collectionName,JSON.stringify([r]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(i.collectionName,i.collectionOptions).drop(r).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Count Documents",i.collectionName,r,e),t(e)})})},MongoManagerCollection.prototype.dropIndex=function(r,i){var s=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("dropIndex",s.collectionName,JSON.stringify([r,i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).dropIndex(r,i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Drop Index",s.collectionName,r,i,e),t(e)})})},MongoManagerCollection.prototype.dropIndexes=function(r){var i=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("dropIndexes",i.collectionName,JSON.stringify([r]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(i.collectionName,i.collectionOptions).dropIndexes(r).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Drop Indexes",i.collectionName,r,e),t(e)})})},MongoManagerCollection.prototype.find=function(i,s,a){var e=this;return void 0===i&&(i={}),void 0===a&&(a=!1),new Promise(function(n,r){return __awaiter(e,void 0,void 0,function(){var o,t=this;return __generator(this,function(e){return a?(o=new monitor_manager_1.MonitorMongo("find",this.collectionName,JSON.stringify([i,s])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(i,s).toArray().then(function(e){o.finish(),n(e)},function(e){o.finish(),console.log(new Date,"Error Find",t.collectionName,i,s,e),r(e)})):resolveio_server_app_1.ResolveIOServer.getMongoManager().find(this.collectionName,i,s).then(function(e){n(e)},function(e){r(e)}),[2]})})})},MongoManagerCollection.prototype.findById=function(r,i){var s=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("findById",s.collectionName,JSON.stringify([{_id:r},i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).findOne({_id:r},i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Find By Id",s.collectionName,{_id:r},i,e),t(e)})})},MongoManagerCollection.prototype.findCount=function(r,i){var s=this;return void 0===r&&(r={}),new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("findCount",s.collectionName,JSON.stringify([r,i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).find(r,i).count().then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Find Count",s.collectionName,r,i,e),t(e)})})},MongoManagerCollection.prototype.findCursor=function(e,o){void 0===e&&(e={});var t=new monitor_manager_1.MonitorMongo("findCursor",this.collectionName,JSON.stringify([e,o])),n=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,o);return n.on("close",function(e){return t.finish(),n.removeAllListeners(),e}),n},MongoManagerCollection.prototype.findStream=function(e,o,t){void 0===e&&(e={});var n=new monitor_manager_1.MonitorMongo("findStream",this.collectionName,JSON.stringify([e,o,t])),e=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,o).stream(t);return e.on("end",function(e){return n.finish(),e}).on("error",function(e){return n.finish(),e}).on("close",function(e){return n.finish(),e}),e},MongoManagerCollection.prototype.findOne=function(r,i,e){var s=this;return void 0===r&&(r={}),void 0===e&&(e=!1),new Promise(function(o,t){var n;e?(n=new monitor_manager_1.MonitorMongo("findOne",s.collectionName,JSON.stringify([r,i])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).findOne(r,i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Find One",s.collectionName,r,i,e),t(e)})):resolveio_server_app_1.ResolveIOServer.getMongoManager().findOne(s.collectionName,r,i).then(function(e){o(e)},function(e){t(e)})})},MongoManagerCollection.prototype.findOneAndDelete=function(i,s,a){var e=this;return void 0===i&&(i={}),void 0===a&&(a=!1),new Promise(function(r,o){return __awaiter(e,void 0,void 0,function(){var t,n=this;return __generator(this,function(e){return t=new monitor_manager_1.MonitorMongo("findOneAndDelete",this.collectionName,JSON.stringify([i,s])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(i,s).then(function(e){t.finish();var o,e=e.value;e?(n.createLogs&&!a&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:n.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,i,s]))<2e5?JSON.stringify([e,i,s],null,2):"Too Big",method:"findOneAndDelete",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:n.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,i,s]))<2e5?JSON.stringify([e,i,s],null,2):"Too Big",method:"findOneAndDelete",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),n.useVersions&&((o=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(n.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},o,{upsert:!0})),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(n.collectionName),r(e)):r(null)},function(e){t.finish(),console.log(new Date,"Error Find One And Delete",n.collectionName,i,s,e),o(e)}),[2]})})})},MongoManagerCollection.prototype.findOneAndReplace=function(a,l,c,_,g){var e=this;return void 0===a&&(a={}),void 0===_&&(_=!1),void 0===g&&(g=!1),new Promise(function(i,s){return __awaiter(e,void 0,void 0,function(){var o,t,n,r=this;return __generator(this,function(e){return!this.checkSchema||g||(o=this.simplschema.newContext(),o.validate(l))?(t=new Date,this.timestamps&&(l.updatedAt=t),c&&c.upsert&&(l._id||(l._id=(0,common_1.objectIdHexString)()),this.useVersions&&(l.__v=0),this.timestamps)&&!l.createdAt&&(l.createdAt=t),n=new monitor_manager_1.MonitorMongo("findOneAndReplace",this.collectionName,JSON.stringify([a,l,c])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(a,l,c).then(function(e){n.finish();var o,e=e.value;e?(r.createLogs&&!_&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:r.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,a,l,c]))<2e5?JSON.stringify([e,a,l,c],null,2):"Too Big",method:"findOneAndReplace",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:r.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,a,l,c]))<2e5?JSON.stringify([e,a,l,c],null,2):"Too Big",method:"findOneAndReplace",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),r.useVersions&&((o=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(r.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},o,{upsert:!0})),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(r.collectionName),i(e)):i(null)},function(e){n.finish(),console.log(new Date,"Error Find One And Replace",r.collectionName,a,c,e),s(e)})):(console.log(new Date,this.collectionName,"Schema Errors - findOneAndReplace",o.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndReplace - "+this.collectionName,[o.validationErrors(),l]),s(o.validationErrors())),[2]})})})},MongoManagerCollection.prototype.findOneAndUpdate=function(a,l,c,_,g){var e=this;return void 0===a&&(a={}),void 0===_&&(_=!1),void 0===g&&(g=!1),new Promise(function(i,s){return __awaiter(e,void 0,void 0,function(){var o,t,n,r=this;return __generator(this,function(e){return!this.checkSchema||g||(o=this.simplschema.newContext(),o.validate(l,{modifier:!0}))?(this.timestamps&&(t=new Date,l.$set?l.$set.updatedAt=t:l.$set={updatedAt:t}),c&&c.upsert&&(l.$setOnInsert?(l.$setOnInsert._id||(l.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!l.$setOnInsert.createdAt&&(l.$setOnInsert.createdAt=new Date)):this.timestamps?l.$setOnInsert={_id:(0,common_1.objectIdHexString)(),createdAt:new Date}:l.$setOnInsert={_id:(0,common_1.objectIdHexString)()}),n=new monitor_manager_1.MonitorMongo("findOneAndUpdate",this.collectionName,JSON.stringify([a,l,c])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(a,l,c).then(function(e){n.finish();var o,e=e.value;e?(r.createLogs&&!_&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:r.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,a,l,c]))<2e5?JSON.stringify([e,a,l,c],null,2):"Too Big",method:"findOneAndUpdate",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:r.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,a,l,c]))<2e5?JSON.stringify([e,a,l,c],null,2):"Too Big",method:"findOneAndUpdate",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),r.useVersions&&((o=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(r.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},o,{upsert:!0})),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(r.collectionName),i(e)):i(null)},function(e){n.finish(),console.log(new Date,"Error Find One And Update",r.collectionName,a,c,e),s(e)})):(console.log(new Date,this.collectionName,"Schema Errors - findOneAndUpdate",o.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndUpdate - "+this.collectionName,[o.validationErrors(),l]),s(o.validationErrors())),[2]})})})},MongoManagerCollection.prototype.indexes=function(r){var i=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("indexes",i.collectionName,JSON.stringify([r]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(i.collectionName,i.collectionOptions).indexes(r).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Indexes",i.collectionName,r,e),t(e)})})},MongoManagerCollection.prototype.indexExists=function(r,i){var s=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("indexExists",s.collectionName,JSON.stringify([r,i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).indexExists(r,i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Index Exists",s.collectionName,r,i,e),t(e)})})},MongoManagerCollection.prototype.insertMany=function(_,g,v,d,u){var e=this;return void 0===v&&(v=!1),void 0===d&&(d=!1),void 0===u&&(u=!1),new Promise(function(l,c){return __awaiter(e,void 0,void 0,function(){var t,o,n,r,i,s,a=this;return __generator(this,function(e){if(_.length){for(t=[],this.checkSchema&&!d&&_.forEach(function(e){var o=a.simplschema.newContext();o.validate(e)?t.push(!0):(console.log(new Date,a.collectionName,"Schema Errors - insertMany",o.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertMany - "+a.collectionName,[o.validationErrors(),e]),t.push(!1))}),o=this.checkSchema?_.filter(function(e,o){return t[o]}):_,n=0;n<o.length;n++)(r=o[n])._id||(r._id=(0,common_1.objectIdHexString)()),this.timestamps&&(i=new Date,r.createdAt||(r.createdAt=i),r.updatedAt||(r.updatedAt=i)),this.useVersions&&!r.hasOwnProperty("__v")&&(r.__v=0),this.createLogs&&!v&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:r._id,payload:(0,common_1.getBinarySize)(JSON.stringify([r,g]))<2e5?JSON.stringify([r,g],null,2):"Too Big",method:"insertMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:r._id,payload:(0,common_1.getBinarySize)(JSON.stringify([r,g]))<2e5?JSON.stringify([r,g],null,2):"Too Big",method:"insertMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}));o.length&&(s=null,u||(s=new monitor_manager_1.MonitorMongo("insertMany",this.collectionName,JSON.stringify([o,g]))),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertMany(o,g).then(function(e){s&&s.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(o)):c(e.acknowledged)},function(e){s&&s.finish(),console.log(new Date,"Error Insert Many",a.collectionName,o,g,e),c(e)}))}else l([]);return[2]})})})},MongoManagerCollection.prototype.insertOne=function(a,l,c,_){var e=this;return void 0===c&&(c=!1),void 0===_&&(_=!1),new Promise(function(i,s){return __awaiter(e,void 0,void 0,function(){var o,t,n,r=this;return __generator(this,function(e){return a._id||(a._id=(0,common_1.objectIdHexString)()),!this.checkSchema||_||(o=this.simplschema.newContext(),o.validate(a))?(this.timestamps&&(t=new Date,a.createdAt||(a.createdAt=t),a.updatedAt||(a.updatedAt=t)),this.createLogs&&!c&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?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,l]))<2e5?JSON.stringify([a,l],null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):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,l]))<2e5?JSON.stringify([a,l],null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),this.useVersions&&!a.hasOwnProperty("__v")&&(a.__v=0),n=new monitor_manager_1.MonitorMongo("insertOne",this.collectionName,JSON.stringify([a,l])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertOne(a,l).then(function(e){n.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(r.collectionName),i(a)):s(e.acknowledged)},function(e){n.finish(),console.log(new Date,"Error Insert One",r.collectionName,a,l,e),s(e)})):(console.log(new Date,this.collectionName,"Schema Errors - insertOne",o.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertOne - "+this.collectionName,[o.validationErrors(),a]),s(o.validationErrors())),[2]})})})},MongoManagerCollection.prototype.listIndexes=function(e){var o=new monitor_manager_1.MonitorMongo("listIndexes",this.collectionName,JSON.stringify([e])),e=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).listIndexes(e);return e.on("close",function(e){return o.finish(),e}),e},MongoManagerCollection.prototype.rename=function(r,i){var s=this;return new Promise(function(o,t){var n=new monitor_manager_1.MonitorMongo("rename",s.collectionName,JSON.stringify([r,i]));resolveio_server_app_1.ResolveIOServer.getMainDB().collection(s.collectionName,s.collectionOptions).rename(r,i).then(function(e){n.finish(),o(e)},function(e){n.finish(),console.log(new Date,"Error Rename",s.collectionName,r,i,e),t(e)})})},MongoManagerCollection.prototype.replaceOne=function(p,m,h,f,O,M){var e=this;return void 0===f&&(f=!1),void 0===O&&(O=!1),void 0===M&&(M=null),new Promise(function(d,u){return __awaiter(e,void 0,void 0,function(){var o,t,n,r,i,s,a,l,c,_,g,v=this;return __generator(this,function(e){switch(e.label){case 0:return!this.checkSchema||O||(t=this.simplschema.newContext(),t.validate(m))?(o=new Date,this.timestamps&&(m.updatedAt=o),this.useVersions?M?[3,2]:[4,this.findOne(p,null,!0)]:[3,8]):(console.log(new Date,this.collectionName,"Schema Errors - replaceOne",t.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on replaceOne - "+this.collectionName,[t.validationErrors(),m]),u(t.validationErrors()),[2]);case 1:M=e.sent(),e.label=2;case 2:return M?(this.timestamps&&!m.createdAt&&M.createdAt&&(m.createdAt=M.createdAt),M.__v!==m.__v?[3,3]:(m.__v+=1,(t=(0,common_1.deepCopy)(M))._id={_id:M._id,__v:M.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:M._id,__v:M.__v}},t,{upsert:!0}),4<=M.__v&&resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":M._id},{"_id.__v":{$lt:M.__v-4}}]}),this.createLogs&&!f&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:M._id,payload:(0,common_1.getBinarySize)(JSON.stringify([M,p,m,h]))<2e5?JSON.stringify([M,p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:M._id,payload:(0,common_1.getBinarySize)(JSON.stringify([M,p,m,h]))<2e5?JSON.stringify([M,p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),n=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([p,m,h])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(p,m,h).then(function(e){n.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(v.collectionName),d(e.modifiedCount)):u(e.acknowledged)},function(e){n.finish(),console.log(new Date,"Error Replace One",v.collectionName,p,m,h,e),u(e)}),[3,5])):[3,6];case 3:return console.log("invalid version - "+this.collectionName,M.__v,m.__v),[4,resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).findOne({_id:{_id:M._id,__v:m.__v}},null,!0)];case 4:(r=e.sent())?(i=M._id,s=M.__v,(a=(0,common_1.getMongoMergeUpdatedDoc)(m,M,r))._id=i,a.__v=s+1,this.createLogs&&!f&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i,payload:(0,common_1.getBinarySize)(JSON.stringify(["invalidVersion - merge",M,p,a,h]))<2e5?JSON.stringify(["invalidVersion - merge",M,p,a,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:i,payload:(0,common_1.getBinarySize)(JSON.stringify(["invalidVersion - merge",M,p,a,h]))<2e5?JSON.stringify(["invalidVersion - merge",M,p,a,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),l=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([p,a,h])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(p,a,h).then(function(e){l.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(v.collectionName),d(e.modifiedCount)):u(e.acknowledged)},function(e){l.finish(),console.log(new Date,"Error Replace One",v.collectionName,p,a,h,e),u(e)})):u("Invalid Version And Could Not Find History - DB: "+M.__v+", Trying to update with :"+m.__v),e.label=5;case 5:return[3,7];case 6:h&&h.upsert?(this.timestamps&&(m.createdAt=o),m._id||(m._id=(0,common_1.objectIdHexString)()),m.__v=0,this.createLogs&&!f&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:m._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",p,m,h]))<2e5?JSON.stringify(["upsert",p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:m._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",p,m,h]))<2e5?JSON.stringify(["upsert",p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),c=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([p,m,h])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(p,m,h).then(function(e){c.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(v.collectionName),d(e.modifiedCount)):u(e.acknowledged)},function(e){c.finish(),console.log(new Date,"Error Replace One",v.collectionName,p,m,h,e),u(e)})):u("No Document"),e.label=7;case 7:return[3,9];case 8:h&&h.upsert&&(this.timestamps&&!m.createdAt&&(m.createdAt=o),m._id||(m._id=(0,common_1.objectIdHexString)()),m.__v=0),this.createLogs&&!f?(h?h.returnDocument="before":h={returnDocument:"before"},_=new monitor_manager_1.MonitorMongo("findOneAndReplace",this.collectionName,JSON.stringify([p,m,h])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(p,m,h).then(function(e){_.finish();e=e.value;e?"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:v.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,p,m,h]))<2e5?JSON.stringify([e,p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:v.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,p,m,h]))<2e5?JSON.stringify([e,p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}):"https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:v.collectionName,id_document:m._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",p,m,h]))<2e5?JSON.stringify(["upsert",p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:v.collectionName,id_document:m._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",p,m,h]))<2e5?JSON.stringify(["upsert",p,m,h],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(v.collectionName),d(1)},function(e){_.finish(),console.log(new Date,"Error Find One And Replace",v.collectionName,p,m,h,e),u(e)})):(g=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([p,m,h])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(p,m,h).then(function(e){g.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(v.collectionName),d(e.modifiedCount)):u(e.acknowledged)},function(e){g.finish(),console.log(new Date,"Error Replace One",v.collectionName,p,m,h,e),u(e)})),e.label=9;case 9:return[2]}})})})},MongoManagerCollection.prototype.updateMany=function(_,g,v,d,u,p){var e=this;return void 0===d&&(d=!1),void 0===u&&(u=!1),void 0===p&&(p=!1),new Promise(function(l,c){return __awaiter(e,void 0,void 0,function(){var o,t,n,r,i,s,a=this;return __generator(this,function(e){switch(e.label){case 0:return g.$inc&&"{}"!==JSON.stringify(g.$inc)||g.$set&&"{}"!==JSON.stringify(g.$set)||g.$setOnInsert&&"{}"!==JSON.stringify(g.$setOnInsert)||g.$unset&&"{}"!==JSON.stringify(g.$unset)?(this.timestamps&&(o=new Date,g.$set?g.$set.updatedAt=o:g.$set={updatedAt:o}),!this.checkSchema||u||(o=this.simplschema.newContext(),o.validate(g,{modifier:!0}))?this.useVersions&&!p||this.createLogs&&!d?[4,this.find(_)]:[3,2]:(console.log(new Date,this.collectionName,"Schema Errors - updateMany",o.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateMany - "+this.collectionName,[o.validationErrors(),g]),c(o.validationErrors()),[2])):(l(1),[2]);case 1:for(t=e.sent(),n=0;n<t.length;n++)r=t[n],this.createLogs&&!d&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:r._id,payload:(0,common_1.getBinarySize)(JSON.stringify([r,_,g,v]))<2e5?JSON.stringify([r,_,g,v],null,2):"Too Big",method:"updateMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:r._id,payload:(0,common_1.getBinarySize)(JSON.stringify([r,_,g,v]))<2e5?JSON.stringify([r,_,g,v],null,2):"Too Big",method:"updateMany",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),this.useVersions&&((i=(0,common_1.deepCopy)(r))._id={_id:r._id,__v:r.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:r._id,__v:r.__v}},i,{upsert:!0}),4<=r.__v&&resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":r._id},{"_id.__v":{$lt:r.__v-4}}]}),objectContainsPropertyDeep(g,"__v")||(g.$inc?g.$inc.__v||(g.$inc.__v=1):g.$inc={__v:1}));e.label=2;case 2:return s=new monitor_manager_1.MonitorMongo("updateMany",this.collectionName,JSON.stringify([_,g,v])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateMany(_,g,v).then(function(e){s.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(e.modifiedCount)):c(e.acknowledged)},function(e){s.finish(),console.log(new Date,"Error Update Many",a.collectionName,_,g,v,e),c(e)}),[2]}})})})},MongoManagerCollection.prototype.updateOne=function(_,g,v,d,u){var e=this;return void 0===d&&(d=!1),void 0===u&&(u=!1),new Promise(function(l,c){return __awaiter(e,void 0,void 0,function(){var o,t,n,r,i,s,a=this;return __generator(this,function(e){switch(e.label){case 0:return!this.checkSchema||u||(t=this.simplschema.newContext(),t.validate(g,{modifier:!0}))?g.$inc&&"{}"!==JSON.stringify(g.$inc)||g.$set&&"{}"!==JSON.stringify(g.$set)||g.$setOnInsert&&"{}"!==JSON.stringify(g.$setOnInsert)||g.$unset&&"{}"!==JSON.stringify(g.$unset)?(o=new Date,this.timestamps&&(g.$set?g.$set.updatedAt=o:g.$set={updatedAt:o}),this.useVersions?[4,this.findOne(_,null,!0)]:[3,2]):(l(1),[2]):(console.log(new Date,this.collectionName,"Schema Errors - updateOne",t.validationErrors()),resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager().callMethod.call(resolveio_server_app_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateOne - "+this.collectionName,[t.validationErrors(),g]),c(t.validationErrors()),[2]);case 1:return(o=e.sent())?(this.createLogs&&!d&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,_,g,v]))<2e5?JSON.stringify([o,_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,_,g,v]))<2e5?JSON.stringify([o,_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),(t=(0,common_1.deepCopy)(o))._id={_id:o._id,__v:o.__v},resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:o._id,__v:o.__v}},t,{upsert:!0}),4<=o.__v&&resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":o._id},{"_id.__v":{$lt:o.__v-4}}]}),objectContainsPropertyDeep(g,"__v")||(g.$inc?g.$inc.__v||(g.$inc.__v=1):g.$inc={__v:1}),n=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([_,g,v])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(_,g,v).then(function(e){n.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(e.modifiedCount)):c(e.acknowledged)},function(e){n.finish(),console.log(new Date,"Error Update One",a.collectionName,_,g,v,e),c(e)})):v&&v.upsert?(g.$setOnInsert?(g.$setOnInsert._id||(g.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!g.$setOnInsert.createdAt&&(g.$setOnInsert.createdAt=new Date)):this.timestamps?g.$setOnInsert={_id:(0,common_1.objectIdHexString)(),__v:0,createdAt:new Date}:g.$setOnInsert={_id:(0,common_1.objectIdHexString)(),__v:0},this.createLogs&&!d&&("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:g.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",_,g,v]))<2e5?JSON.stringify(["upsert",_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:this.collectionName,id_document:g.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",_,g,v]))<2e5?JSON.stringify(["upsert",_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date})),r=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([_,g,v])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(_,g,v).then(function(e){r.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(e.modifiedCount)):c(e.acknowledged)},function(e){r.finish(),console.log(new Date,"Error Update One",a.collectionName,_,g,v,e),c(e)})):c("No Document"),[3,3];case 2:v&&v.upsert&&(g.$setOnInsert?(g.$setOnInsert._id||(g.$setOnInsert._id=(0,common_1.objectIdHexString)()),this.timestamps&&!g.$setOnInsert.createdAt&&(g.$setOnInsert.createdAt=new Date)):this.timestamps?g.$setOnInsert={_id:(0,common_1.objectIdHexString)(),createdAt:new Date}:g.$setOnInsert={_id:(0,common_1.objectIdHexString)()}),this.createLogs&&!d?(v?v.returnDocument="before":v={returnDocument:"before"},i=new monitor_manager_1.MonitorMongo("findOneAndUpdate",this.collectionName,JSON.stringify([_,g,v])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(_,g,v).then(function(e){i.finish();var o=e.value;o?("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:a.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,_,g,v]))<2e5?JSON.stringify([o,_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:a.collectionName,id_document:o._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,_,g,v]))<2e5?JSON.stringify([o,_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}),l(e.ok)):g.$setOnInsert?("https://resolveio.com"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL&&"http://localhost:4200"!==resolveio_server_app_1.ResolveIOServer.getServerConfig().ROOT_URL?resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({type:"log",data:{_id:(0,common_1.objectIdHexString)(),type:"document",collection:a.collectionName,id_document:g.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",_,g,v]))<2e5?JSON.stringify(["upsert",_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}}):resolveio_server_app_1.ResolveIOServer.getMainDB().collection("logs").insertOne({_id:(0,common_1.objectIdHexString)(),type:"document",collection:a.collectionName,id_document:g.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",_,g,v]))<2e5?JSON.stringify(["upsert",_,g,v],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:"",createdAt:new Date}),resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(e.ok)):l(0)},function(e){i.finish(),console.log(new Date,"Error Find One And Update",a.collectionName,_,g,v,e),c(e)})):(s=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([_,g,v])),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(_,g,v).then(function(e){s.finish(),e.acknowledged?(resolveio_server_app_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),l(e.modifiedCount)):c(e.acknowledged)},function(e){s.finish(),console.log(new Date,"Error Update One",a.collectionName,_,g,v,e),c(e)})),e.label=3;case 3:return[2]}})})})},MongoManagerCollection.prototype.watchCollection=function(e,o){return void 0===e&&(e=[]),resolveio_server_app_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).watch(e,o)},(e=MongoManagerCollection).indexQueue=async_1.default.queue(function(c,_){return __awaiter(void 0,void 0,void 0,function(){var o,t,n,r,i,s,a,l;return __generator(e,function(e){switch(e.label){case 0:if(o=c.action,t=c.collection,n=c.specs,r=c.options,!(i=resolveio_server_app_1.ResolveIOServer.getMainDB().collection(t.collectionName,t.collectionOptions)))return[2,_(new Error("Collection ".concat(t.collectionName," not found")))];e.label=1;case 1:return e.trys.push([1,3,,10]),[4,i[o].apply(i,__spreadArray(__spreadArray([],__read(n),!1),[r],!1))];case 2:return a=e.sent(),_(null,a),[3,10];case 3:if(85!==(s=e.sent()).code&&!s.message.includes("IndexOptionsConflict"))return[3,9];e.label=4;case 4:return(e.trys.push([4,8,,9]),l=t.extractIndexNameFromError(s.message))?[4,i.dropIndex(l)]:[3,7];case 5:return e.sent(),[4,i[o].apply(i,__spreadArray(__spreadArray([],__read(n),!1),[r],!1))];case 6:return a=e.sent(),_(null,a),[2];case 7:return[3,9];case 8:return l=e.sent(),_(l),[3,9];case 9:return _(s),[3,10];case 10:return[2]}})})},1),MongoManagerCollection}()),MongoManagerUserCollection=function(e){function MongoManagerUserCollection(){return null!==e&&e.apply(this,arguments)||this}return __extends(MongoManagerUserCollection,e),MongoManagerUserCollection.prototype.authenticate=function(s,t){var e=this;return new Promise(function(r,i){return __awaiter(e,void 0,void 0,function(){var o,n=this;return __generator(this,function(e){switch(e.label){case 0:return(o=Math.pow(100,Math.log(s.attempts+1)),o=o<3e5?o:3e5,s.last)?Date.now()-s.last.getTime()<o?(s.last=new Date,[4,user_collection_1.Users.updateOne({_id:s._id},{$set:{last:s.last}})]):[3,2]:[3,3];case 1:return e.sent(),r({data:null,error:"Attempt Too Soon"}),[2];case 2:return[3,4];case 3:s.last=new Date,e.label=4;case 4:return 5<=s.attempts?r({data:null,error:"Too Many Attempts"}):s.salt?pbkdf2(t,s.salt,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"},function(o,t){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return o?[2,i(o)]:scmp(t,Buffer.from(s.hash,"hex"))?(s.last=new Date,s.attempts=0,[4,user_collection_1.Users.updateOne({_id:s._id},{$set:{last:s.last,attempts:s.attempts}})]):[3,2];case 1:return e.sent(),r({data:s,error:""}),[3,4];case 2:return s.last=new Date,s.attempts=s.attempts+1,[4,user_collection_1.Users.updateOne({_id:s._id},{$set:{last:s.last,attempts:s.attempts}})];case 3:e.sent(),5<=s.attempts?r({data:null,error:"Too Many Attempts"}):r({data:null,error:"Invalid Username And Password"}),e.label=4;case 4:return[2]}})})}):r({data:null,error:"No Salt Value Stored"}),[2]}})})})},MongoManagerUserCollection.prototype.serializeUser=function(){return function(e,o){o(null,e.username)}},MongoManagerUserCollection.prototype.deserializeUser=function(){return function(e,o){user_collection_1.Users.findOne({username:e}).then(function(e){o(null,e)},function(e){o(e,null)})}},MongoManagerUserCollection.prototype.setPassword=function(i,s){var e=this;return new Promise(function(n,r){return __awaiter(e,void 0,void 0,function(){var o,t;return __generator(this,function(e){switch(e.label){case 0:return i?[3,1]:(r("No User"),[3,5]);case 1:return s?[3,2]:(r("No Password"),[3,5]);case 2:return[4,randomBytes(32)];case 3:return o=e.sent(),o=o.toString("hex"),[4,pbkdf2Promisified(s,o,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"})];case 4:t=e.sent(),t=Buffer.from(t,"binary").toString("hex"),user_collection_1.Users.updateOne({_id:i._id},{$set:{hash:t,salt:o,services:{},attempts:0}}).then(function(e){return n(e)},function(e){return r(e)}),e.label=5;case 5:return[2]}})})})},MongoManagerUserCollection.prototype.changePassword=function(r,i,s){var e=this;return new Promise(function(t,n){return __awaiter(e,void 0,void 0,function(){var o;return __generator(this,function(e){switch(e.label){case 0:return r?[3,1]:(n("Missing User"),[3,4]);case 1:return i&&s?[3,2]:(n("Missing Password"),[3,4]);case 2:return[4,this.authenticate(r,i)];case 3:(o=e.sent()).data?this.setPassword(r,s).then(function(e){return t(e)},function(e){return n(e)}):n(o.error),e.label=4;case 4:return[2]}})})})},MongoManagerUserCollection.prototype.register=function(n,r){var e=this;return new Promise(function(o,t){return __awaiter(e,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return n.username?[3,1]:(t("Missing Username"),[3,5]);case 1:return[4,user_collection_1.Users.findOne({username:n.username})];case 2:return e.sent()?(t("Username Exists"),[3,5]):[3,3];case 3:return[4,user_collection_1.Users.findOne({email:n.email})];case 4:e.sent()?t("Email Exists"):(n.setPassword(r),o(n)),e.label=5;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,o,t,n){crypto.pbkdf2(e,o,t.iterations,t.keylen,t.digestAlgorithm,n)}function pbkdf2Promisified(e,o,r){return new Promise(function(t,n){return pbkdf2(e,o,r,function(e,o){return e?n(e):t(o)})})}function randomBytes(e){return new Promise(function(t,n){return crypto.randomBytes(e,function(e,o){return e?n(e):t(o)})})}function objectContainsPropertyDeep(e,o){var t=Object.keys(e);if(t.some(function(e){return e===o}))return!0;for(var n=0;n<t.length;n++){var r=t[n];if(e[r]&&"object"==typeof e[r]&&objectContainsPropertyDeep(e[r],o))return!0}return!1}exports.MongoManagerUserCollection=MongoManagerUserCollection;
2
2
  //# sourceMappingURL=mongo.manager.js.map